From c0da7e1f379e2e64f35949d125643cce778e715c Mon Sep 17 00:00:00 2001
From: DESKTOP-9BNTV8O <DESKTOP-9BNTV8O@163.com>
Date: 星期一, 10 三月 2025 09:56:58 +0800
Subject: [PATCH] 修改问题
---
Wms/WMS.BLL/BllTransServer/RcsServer.cs | 416 +++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 347 insertions(+), 69 deletions(-)
diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
index 5048367..4eda808 100644
--- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs
+++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs
@@ -45,7 +45,7 @@
throw new Exception("璁惧缂栫爜涓嶅彲涓虹┖");
}
//閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛�
- var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode == model.Location);
+ var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(model.Location));
if (deviceInfo == null)
{
throw new Exception("璁惧淇℃伅涓嶅瓨鍦�");
@@ -65,13 +65,18 @@
//寮�濮嬩簨鍔�
Db.BeginTran();
-
+ //鍒ゆ柇鍙枡璁惧鏄惁鏄疉鍖虹殑娣锋枡璁惧03锛岃璁惧鏄帴鏂欐贩鏂欎竴浣撴満锛孉GV鍙《搴旇鍙噣妗舵帴鏂�
+ if (houseNo=="M03" && model.Location == "125" && model.Type=="1")
+ {
+ model.Type = "0";
+ }
+ string agvMsg = string.Empty;
switch (model.Type)
{
case "0"://鎺ユ枡璁惧鍙噣妗�
{
//鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅
- endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
+ endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);
if (endLoction == null)
{
throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
@@ -79,12 +84,28 @@
//鏌ユ壘鍒拌杞﹂棿鍑�妗跺尯
List<string> areaNoList = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "0" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList();
//鏌ユ壘鍑�妗�
- pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0"
- && areaNoList.Contains(w.AreaNo)).OrderByDescending(o => o.CreateTime).First();
+ if (houseNo == "M03")//澶у崟浣撹溅闂村噣妗舵槸缁戝畾鎺ユ枡璁惧鐨�
+ {
+ pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0"
+ && areaNoList.Contains(w.AreaNo) && w.UDF1 == deviceInfo.DeviceCode).OrderBy(o => o.UpdateTime).First();
+ }
+ else
+ {
+ pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "0" && w.Status == "0"
+ && areaNoList.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).First();
+ }
+
if (pallet == null)
{
throw new Exception("鏆傛棤鍑�妗跺彲鍒嗛厤");
}
+ //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴�
+ bool yikuResult = YikuTask(pallet.PalletNo, url);
+ if (!yikuResult)
+ {
+ throw new Exception("绉诲簱澶辫触");
+ }
+
pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
//鏇存柊妗跺簱瀛樻槑缁�
Db.Updateable(pallet).ExecuteCommand();
@@ -95,7 +116,7 @@
case "1"://娣锋枡璁惧鍙枡妗讹紙娣锋枡锛�
{
//鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅
- endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
+ endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);
if (endLoction == null)
{
throw new Exception("鍙《璁惧鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦�");
@@ -109,11 +130,18 @@
List<string> areaNoList2 = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "1" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList();
//鏌ユ壘搴撳瓨涓槸鍚︽湁鍙敤鐨勬鎵规鐨勬贩鏂欐《
pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "1" && w.Status == "0" && w.LotNo == model.LotNo
- && areaNoList2.Contains(w.AreaNo)).OrderByDescending(o => o.CompleteTime).First();
+ && areaNoList2.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).First();
if (pallet == null)
{
throw new Exception("鏆傛棤娣锋枡妗跺彲鍒嗛厤");
}
+ //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴�
+ bool yikuResult = YikuTask(pallet.PalletNo, url);
+ if (!yikuResult)
+ {
+ throw new Exception("绉诲簱澶辫触");
+ }
+
pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
//鏇存柊妗跺簱瀛樻槑缁�
Db.Updateable(pallet).ExecuteCommand();
@@ -126,7 +154,7 @@
if (houseNo == "M04")//闄や簡鍠峰共杞﹂棿涓嬫枡鍙i兘鏄�2涓偍浣嶏紙鎶曟枡鍌ㄤ綅銆佹姇瀹屾枡鍌ㄤ綅锛�
{
//鍙《鐩爣鍌ㄤ綅鍦板潃淇℃伅
- endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
+ endLoction = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);
}
else
{
@@ -143,7 +171,7 @@
throw new Exception("鎵规鍙蜂负绌猴紒");
}
//鏌ユ壘鏄惁鏈夋鎵规鍑哄簱鍗曟槑缁�
- var soNoticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.LotNo == model.LotNo).OrderBy(o => o.CreateTime).First();
+ /*var soNoticeDetail = Db.Queryable<BllExportNoticeDetail>().Where(w => w.IsDel == "0" && w.LotNo == model.LotNo).OrderBy(o => o.CreateTime).First();
if (soNoticeDetail == null)
{
throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍑哄簱鍗曟槑缁�");
@@ -158,17 +186,24 @@
soNotice.Status = "3";//姝e湪鎵ц
soNotice.UpdateTime = DateTime.Now;
//鏇存柊鍑哄簱鍗�
- Db.Updateable(soNotice).ExecuteCommand();
+ Db.Updateable(soNotice).ExecuteCommand();*/
//鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯
List<string> areaNoList3 = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "2" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList();
//鏌ユ壘搴撳瓨涓槸鍚︽湁姝ゆ壒娆$殑鍚堟牸涓嬫枡妗�
pallet = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "2" && w.Status == "0" && w.LotNo == model.LotNo && w.InspectStatus == "1"
- && areaNoList3.Contains(w.AreaNo)).OrderByDescending(o => o.CompleteTime).First();
+ && areaNoList3.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).First();
if (pallet == null)
{
throw new Exception("鏆傛棤涓嬫枡妗跺彲鍒嗛厤");
}
+ //鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴�
+ bool yikuResult = YikuTask(pallet.PalletNo, url);
+ if (!yikuResult)
+ {
+ throw new Exception("绉诲簱澶辫触");
+ }
+
pallet.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
//鏇存柊妗跺簱瀛樻槑缁�
Db.Updateable(pallet).ExecuteCommand();
@@ -186,8 +221,23 @@
}
//鏌ユ壘鍒拌杞﹂棿鑴忔《鍖�
List<string> areaNoList4 = Db.Queryable<SysStorageArea>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Type == "3" && w.WareHouseNo == houseNo).Select(s => s.AreaNo).ToList();
- List<DataStockDetail> palletList = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "3" && w.Status == "0"
- && areaNoList4.Contains(w.AreaNo)).OrderByDescending(o => o.CompleteTime).ToList();
+
+ List<DataStockDetail> palletList = new List<DataStockDetail>();
+ if (houseNo == "M01")
+ {
+ palletList = Db.Queryable<DataStockDetail>()
+ .LeftJoin<SysStorageLocat>((d, l) => d.LocatNo == l.LocatNo)
+ .Where(d => d.WareHouseNo == houseNo && d.PalletStatus == "3" && d.Status == "0" && areaNoList4.Contains(d.AreaNo))
+ .OrderBy((d, l) => l.Row)
+ .OrderBy((d, l) => l.Column)
+ .ToList();
+ }
+ else
+ {
+ palletList = stockDetail.Where(w => w.WareHouseNo == houseNo && w.PalletStatus == "3" && w.Status == "0"
+ && areaNoList4.Contains(w.AreaNo)).OrderBy(o => o.UpdateTime).ToList();
+ }
+
if (palletList.Count <= 0)
{
throw new Exception("鏆傛棤鑴忔《鍙垎閰�");
@@ -230,7 +280,7 @@
#endregion
item.Status = "2";//鍒嗛厤鐘舵�� 0:寰呭垎閰嶏紝1锛氶儴鍒嗗垎閰� 锛� 2:宸插垎閰�
- //鏇存柊妗跺簱瀛樻槑缁�
+ //鏇存柊妗跺簱瀛樻槑缁�
Db.Updateable(item).ExecuteCommand();
//璧峰鍌ㄤ綅鍦板潃淇℃伅
var startLoction2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == item.LocatNo);
@@ -239,7 +289,7 @@
throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿item.LocatNo}");
}
- taskNo = new Common().GetMaxNo("TK");//浠诲姟鍙�
+ taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
var logTaskEntry2 = new LogTask
{
TaskNo = taskNo,
@@ -247,9 +297,9 @@
Receiver = "RCS",
//IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
SendDate = DateTime.Now, //鍙戦�佹椂闂�
- //BackDate = DateTime.Now, //杩斿洖鏃堕棿
+ //BackDate = DateTime.Now, //杩斿洖鏃堕棿
StartLocat = item.LocatNo,//璧峰浣嶇疆
- EndLocat = model.Location,//鐩爣浣嶇疆
+ EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆
PalletNo = item.PalletNo,//鎵樼洏鐮�
IsSend = 1,//鏄惁鍙啀娆′笅鍙�
IsCancel = 1,//鏄惁鍙彇娑�
@@ -259,20 +309,21 @@
Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
NoticeDetailNo = int.Parse(noticeNo),
Msg = taskMsg, //鍏抽敭淇℃伅
+ LotNo = item.LotNo//鎵规鍙�
};
//缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
var task2 = new TaskDetial
{
Taskno = taskNo,//浠诲姟鍙�
Startport = item.LocatNo,
- Endport = model.Location,
+ Endport = model.Location,//endLoction.LocatNo,
Pallno = item.PalletNo,
Crtype = "1",//鍙《
WareHouseNo = houseNo
};
//缁欎笅杞︿笅鍙戜换鍔�
logTaskEntry2.SendDate = DateTime.Now;//鍙戦�佹椂闂�
- var agvResult2 = CreateTaskForAgv(task2, url);
+ var agvResult2 = CreateTaskForAgv(task2, url, out agvMsg);
if (agvResult2)//鎴愬姛
{
//璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
@@ -292,6 +343,7 @@
else//澶辫触
{
logTaskEntry2.IsSuccess = 0;
+ logTaskEntry2.Information = agvMsg;
Db.Insertable(logTaskEntry2).ExecuteCommand();
}
@@ -311,7 +363,7 @@
throw new Exception($"璧峰鐩爣鍌ㄤ綅淇℃伅涓嶅瓨鍦紝妗跺彿锛歿pallet.LocatNo}");
}
- taskNo = new Common().GetMaxNo("TK");//浠诲姟鍙�
+ taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
//浠诲姟淇℃伅
var logTaskEntry = new LogTask
{
@@ -322,7 +374,7 @@
SendDate = DateTime.Now, //鍙戦�佹椂闂�
//BackDate = DateTime.Now, //杩斿洖鏃堕棿
StartLocat = pallet.LocatNo,//璧峰浣嶇疆
- EndLocat = model.Location,//鐩爣浣嶇疆
+ EndLocat = endLoction.LocatNo,//鐩爣浣嶇疆
PalletNo = pallet.PalletNo,//鎵樼洏鐮�
IsSend = 1,//鏄惁鍙啀娆′笅鍙�
IsCancel = 1,//鏄惁鍙彇娑�
@@ -332,6 +384,7 @@
Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
NoticeDetailNo = int.Parse(noticeNo),
Msg = taskMsg, //鍏抽敭淇℃伅
+ LotNo = pallet.LotNo//鎵规鍙�
};
//缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
@@ -339,14 +392,14 @@
{
Taskno = taskNo,//浠诲姟鍙�
Startport = pallet.LocatNo,//璧峰浣嶇疆
- Endport = model.Location,//鐩爣浣嶇疆
+ Endport = model.Location,//endLoction.LocatNo,//鐩爣浣嶇疆
Pallno = pallet.PalletNo,//妗跺彿
Crtype = "1",//鍙《
WareHouseNo = houseNo//杞﹂棿缂栫爜
};
//缁欎笅杞︿笅鍙戜换鍔�
logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
- var agvResult = CreateTaskForAgv(task, url);
+ var agvResult = CreateTaskForAgv(task, url, out agvMsg);
if (agvResult)//鎴愬姛
{
//璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
@@ -366,6 +419,7 @@
else//澶辫触
{
logTaskEntry.IsSuccess = 0;
+ logTaskEntry.Information = agvMsg;
Db.Insertable(logTaskEntry).ExecuteCommand();
}
@@ -392,43 +446,49 @@
try
{
string taskMsg = "";
- //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟
- var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == model.PalletNo);
- if (tasking != null)
- {
- throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{model.PalletNo}");
- }
+
//閫氳繃璁惧鍙锋煡鎵惧埌鎵�灞炶澶囷紙鍖哄煙锛�
- var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode == model.Location);
+ var deviceInfo = Db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(model.Location));
if (deviceInfo == null)
{
throw new Exception("璁惧淇℃伅涓嶅瓨鍦�");
}
- var houseNo = deviceInfo.WareHouseNo;//鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙�
+ //鐢宠鍌ㄤ綅璁惧鎵�鍦ㄨ溅闂寸紪鍙�
+ var houseNo = deviceInfo.WareHouseNo;
//璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛�
- var deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
- if (deviceLocatInfo == null)
- {
- throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}");
- }
-
- var noticeno = "0";//鍑哄叆搴撳崟鎹槑缁咺D
+ var deviceLocatInfo = new SysStorageLocat();
+ //鍑哄叆搴撳崟鎹槑缁咺D
+ var noticeno = "0";
+ //鐩爣鍌ㄤ綅淇℃伅
+ var loction = new SysStorageLocat();
//妗跺簱瀛樹俊鎭�
- var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == model.PalletNo);
- if (palletInfo == null)
- {
- throw new Exception($"鏈煡璇㈠埌璇ユ《鐨勫簱瀛樹俊鎭紝PalletNo:{model.PalletNo}");
- }
+ var palletInfo = new DataStockDetail();
- var storageLocat = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0");
//寮�鍚簨鍔�
Db.BeginTran();
-
- SysStorageLocat loction = new SysStorageLocat();//鐩爣鍌ㄤ綅淇℃伅
switch (model.Type)
{
case "3"://娓呮礂璁惧鐢宠鍌ㄤ綅锛堝噣妗剁敵璇峰偍浣嶏級
{
+ //璁惧鏀炬《鍌ㄤ綅淇℃伅锛堝師濮嬪彨妗剁洰鏍囧偍浣嶏級
+ var deviceLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅
+ if (deviceLocatInfo2 == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}");
+ }
+ //鏌ユ壘妗跺簱瀛樹俊鎭�
+ palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo2.WareHouseNo && w.AreaNo == deviceLocatInfo2.AreaNo && w.LocatNo == deviceLocatInfo2.LocatNo).OrderBy(o => o.UpdateTime).First();
+ if (palletInfo == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅");
+ }
+ //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟
+ var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo);
+ if (tasking != null)
+ {
+ throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}");
+ }
+
//璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛�
deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 2);// Column=1 娓呮礂鍌ㄤ綅锛孋olumn=2 娓呮礂瀹屾枡鍌ㄤ綅
if (deviceLocatInfo == null)
@@ -453,6 +513,23 @@
{
throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}");
}
+ //鏌ユ壘妗跺簱瀛樹俊鎭�
+ palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo.WareHouseNo && w.AreaNo == deviceLocatInfo.AreaNo && w.LocatNo == deviceLocatInfo.LocatNo).OrderBy(o => o.UpdateTime).First();
+ if (palletInfo == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅");
+ }
+ palletInfo.LotNo = model.LotNo;//鎵规鍙�
+ //鏇存柊妗跺簱瀛樹俊鎭�
+ Db.Updateable(palletInfo).ExecuteCommand();
+
+ //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟
+ var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo);
+ if (tasking != null)
+ {
+ throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}");
+ }
+
//鍒ゆ柇鏄惁鏈夋壒娆″彿
if (string.IsNullOrWhiteSpace(model.LotNo))
{
@@ -464,9 +541,7 @@
{
throw new Exception("璇ヨ溅闂撮娣峰尯鏆傛棤绌轰綑鍌ㄤ綅");
}
- palletInfo.LotNo = model.LotNo;//鎵规鍙�
- //鏇存柊妗跺簱瀛樹俊鎭�
- Db.Updateable(palletInfo).ExecuteCommand();
+
taskMsg = "鎺ユ枡璁惧锛堥娣锋枡妗讹級鐢宠鍌ㄤ綅浠诲姟";
}
@@ -479,13 +554,26 @@
{
throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}");
}
+ //鏌ユ壘妗跺簱瀛樹俊鎭�
+ palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo.WareHouseNo && w.AreaNo == deviceLocatInfo.AreaNo && w.LocatNo == deviceLocatInfo.LocatNo).OrderBy(o => o.UpdateTime).First();
+ if (palletInfo == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅");
+ }
+ //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟
+ var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo);
+ if (tasking != null)
+ {
+ throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}");
+ }
+
//鍒ゆ柇鏄惁鏈夋壒娆″彿
if (string.IsNullOrWhiteSpace(model.LotNo))
{
throw new Exception("鎵规鍙蜂负绌猴紒");
}
//鏍¢獙姝ゆ壒娆℃槸鍚︽湁鍏ュ簱鍗�
- var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().Where(w => w.IsDel == "0" && w.Status == "0" && w.LotNo == model.LotNo).OrderByDescending(o => o.CreateTime).First();
+ /*var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().Where(w => w.IsDel == "0" && w.Status == "0" && w.LotNo == model.LotNo).OrderByDescending(o => o.CreateTime).First();
if (noticeDetail == null)
{
throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗曟槑缁�");
@@ -498,8 +586,8 @@
throw new Exception("璇ユ壒娆℃病鏈夊搴旂殑鍏ュ簱鍗�");
}
notice.Status = "1";//姝e湪鎵ц
- //鏇存柊鍏ュ簱鍗曠姸鎬�
- Db.Updateable(notice).ExecuteCommand();
+ //鏇存柊鍏ュ簱鍗曠姸鎬�
+ Db.Updateable(notice).ExecuteCommand();*/
//鏌ユ壘鍒拌杞﹂棿鍗婃垚鍝佸尯
loction = GetLocatModel(houseNo, "2");
@@ -513,10 +601,28 @@
break;
case "2"://涓嬫枡璁惧鐢宠鍌ㄤ綅锛堣剰妗剁敵璇峰偍浣嶏級
{
+ //璁惧鏀炬《鍌ㄤ綅淇℃伅锛堝師濮嬪彨妗剁洰鏍囧偍浣嶏級
+ var deviceLocatInfo2 = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);// Column=1 鎶曟枡鍌ㄤ綅锛孋olumn=2 鎶曞畬鏂欏偍浣�
+ if (deviceLocatInfo2 == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌璇ヨ澶囨墍鍦ㄥ偍浣嶄俊鎭紝Location:{model.Location}");
+ }
+ //鏌ユ壘妗跺簱瀛樹俊鎭�
+ palletInfo = Db.Queryable<DataStockDetail>().Where(w => w.IsDel == "0" && w.WareHouseNo == deviceLocatInfo2.WareHouseNo && w.AreaNo == deviceLocatInfo2.AreaNo && w.LocatNo == deviceLocatInfo2.LocatNo).OrderBy(o => o.UpdateTime).First();
+ if (palletInfo == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌璇ヨ澶囦笂妗剁殑搴撳瓨淇℃伅");
+ }
+ //鏌ユ壘璇ユ《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟
+ var tasking = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.Status == "1" && w.PalletNo == palletInfo.PalletNo);
+ if (tasking != null)
+ {
+ throw new Exception($"璇ユ《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛孭alletNo:{palletInfo.PalletNo}");
+ }
if (houseNo == "M04")//闄や簡鍠峰共杞﹂棿涓嬫枡鍙i兘鏄�2涓偍浣嶏紙鎶曟枡鍌ㄤ綅銆佹姇瀹屾枡鍌ㄤ綅锛�
{
//璁惧鎵�鍦ㄥ偍浣嶄俊鎭紙璧峰鍌ㄤ綅锛�
- deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo);
+ deviceLocatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.WareHouseNo == houseNo && w.AreaNo == deviceInfo.AreaNo && w.Column == 1);
}
else
{
@@ -539,7 +645,7 @@
break;
}
- taskNo = new Common().GetMaxNo("TK");//浠诲姟鍙�
+ taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
//浠诲姟淇℃伅
var logTaskEntry = new LogTask
{
@@ -549,9 +655,9 @@
//IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
SendDate = DateTime.Now, //鍙戦�佹椂闂�
//BackDate = DateTime.Now, //杩斿洖鏃堕棿
- StartLocat = model.Location,//璧峰浣嶇疆
+ StartLocat = deviceLocatInfo.LocatNo,//璧峰浣嶇疆
EndLocat = loction.LocatNo,//鐩爣浣嶇疆
- PalletNo = model.PalletNo,//妗跺彿
+ PalletNo = palletInfo.PalletNo,//妗跺彿
IsSend = 1,//鏄惁鍙啀娆′笅鍙�
IsCancel = 1,//鏄惁鍙彇娑�
IsFinish = 1,//鏄惁鍙畬鎴�
@@ -560,19 +666,21 @@
Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
NoticeDetailNo = int.Parse(noticeno),
Msg = taskMsg, //鍏抽敭淇℃伅
+ LotNo = palletInfo.LotNo//鎵规鍙�
};
var task = new TaskDetial
{
Taskno = taskNo,//浠诲姟鍙�
- Startport = model.Location,
- Endport = loction.LocatNo,
- Pallno = model.PalletNo,
+ Startport = model.Location,//deviceLocatInfo.LocatNo,//璧峰浣嶇疆
+ Endport = loction.LocatNo,//鐩爣浣嶇疆
+ Pallno = palletInfo.PalletNo,
Crtype = "0",//鍏ュ簱
WareHouseNo = houseNo
};
+ string agvMsg = string.Empty;
//缁欎笅杞︿笅鍙戜换鍔�
logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
- var agvResult = CreateTaskForAgv(task, url);
+ var agvResult = CreateTaskForAgv(task, url, out agvMsg);
if (agvResult)//鎴愬姛
{
//璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
@@ -592,6 +700,7 @@
else//澶辫触
{
logTaskEntry.IsSuccess = 0;
+ logTaskEntry.Information = agvMsg;
Db.Insertable(logTaskEntry).ExecuteCommand();
}
//鎻愪氦浜嬪姟
@@ -620,10 +729,10 @@
//鏌ユ壘鍌ㄤ綅
var loctionModel = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && w.Flag == "0" && w.WareHouseNo == houseNo && areaNoList.Contains(w.AreaNo))
.OrderBy(o => o.Row).OrderByDescending(o => o.Column).First();
- if (loctionModel == null)
- {
- throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅");
- }
+ //if (loctionModel == null)
+ //{
+ // throw new Exception("璇ヨ溅闂村噣妗跺尯鏆傛棤绌轰綑鍌ㄤ綅");
+ //}
return loctionModel;
}
catch (Exception ex)
@@ -676,7 +785,8 @@
Crtype = "2",
};
string taskNo = "";
- CreateTaskForAgv(ztask, url);
+ string agvMsg = string.Empty;
+ CreateTaskForAgv(ztask, url, out agvMsg);
statrtLocat.Status = "3";//鍑哄簱涓�
//淇敼璧峰鍌ㄤ綅鐘舵��
@@ -718,7 +828,8 @@
Crtype = "1",
};
string taskNo = "";
- CreateTaskForAgv(task,url);
+ string agvMsg = string.Empty;
+ CreateTaskForAgv(task, url, out agvMsg);
}
catch (Exception ex)
{
@@ -807,7 +918,8 @@
stockDetail.WareHouseNo = endLocatInfo.WareHouseNo;//鎵�灞炰粨搴�
stockDetail.RoadwayNo = endLocatInfo.RoadwayNo;//鎵�灞炲贩閬�
stockDetail.AreaNo = endLocatInfo.AreaNo;//鎵�灞炲尯鍩�
- stockDetail.LocatNo = endLocatInfo.LocatNo;//鍌ㄤ綅鍦板潃
+ stockDetail.LocatNo = endLocatInfo.LocatNo;//鍌ㄤ綅鍦板潃
+ stockDetail.UpdateTime = DateTime.Now;//鏇存柊鏃堕棿
if (endAreaInfo.Type == "0")//娲佸噣鍖�
{
stockDetail.PalletStatus = "0";
@@ -1048,9 +1160,10 @@
Pallno = logTaskEntry.PalletNo,
Crtype = logTaskEntry.Type,
};
+ string agvMsg = string.Empty;
//缁欎笅杞︿笅鍙戜换鍔�
logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
- var agvResult = CreateTaskForAgv(task, url);
+ var agvResult = CreateTaskForAgv(task, url, out agvMsg);
if (agvResult)//鎴愬姛
{
//璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
@@ -1070,6 +1183,7 @@
else//澶辫触
{
logTaskEntry.IsSuccess = 0;
+ logTaskEntry.Information = agvMsg;
Db.Insertable(logTaskEntry).ExecuteCommand();
}
@@ -1089,7 +1203,7 @@
/// </summary>
/// <param name="req"></param>
/// <returns></returns>
- public bool CreateTaskForAgv(TaskDetial taskDetial, string url)
+ public bool CreateTaskForAgv(TaskDetial taskDetial, string url, out string agvMsg, string priority=null)
{
bool result = false;
@@ -1139,6 +1253,7 @@
agvTask.positionCodePath = pahtList;//灏忚溅璺緞
agvTask.podCode = "";
agvTask.userCallCode = "";//taskDetial.Endport;//鐩爣浣嶇疆
+ agvTask.priority = priority;//浼樺厛绾�
//鍒ゆ柇瀹瑰櫒绫诲瀷
if (taskDetial.WareHouseNo == "M04")//鍠峰共杞﹂棿
{
@@ -1170,6 +1285,8 @@
if (agvModel.Code == "0")
{
result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔�
+
+ agvMsg = "";
}
else
{
@@ -1184,9 +1301,170 @@
}
var logStr = $@".\log\AGV\AGV{logMsg}" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
LogFile.SaveLogToFile($"AGV{logMsg}寮傚父锛�( {agvModel.Message} ),", logStr);
+
+ agvMsg = agvModel.Message;
}
return result;
#endregion
}
+
+ /// <summary>
+ /// 鍒嗛厤妗跺悗鍒ゆ柇璇ユ《澶栦晶鍌ㄤ綅鏄惁闇�瑕佺Щ搴�
+ /// </summary>
+ /// <param name="palletNo"></param>
+ /// <param name="url"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ private bool YikuTask(string palletNo,string url)
+ {
+ try
+ {
+ //鍒嗛厤妗剁殑搴撳瓨淇℃伅
+ var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
+ if (palletInfo == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鍒嗛厤妗剁殑搴撳瓨淇℃伅");
+ }
+ //鍒ゆ柇鍒嗛厤鐨勬《鏈夋病鏈夋鍦ㄦ墽琛岀殑浠诲姟锛堢Щ搴撲腑锛�
+ var taskIng= Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "0" || w.Status == "1") && w.PalletNo == palletNo);
+ if (taskIng != null)
+ {
+ throw new Exception("鍒嗛厤鐨勬《鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岃绋嶅悗鍐嶈瘯");
+ }
+ //鍒嗛厤妗剁殑鍌ㄤ綅淇℃伅
+ var locatInfo = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletInfo.LocatNo);
+ if (locatInfo == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鍒嗛厤妗舵墍鍦ㄧ殑鍌ㄤ綅淇℃伅");
+ }
+
+ //鍒ゆ柇璇ュ偍浣嶆槸鍚︽槸鍐呬晶鍌ㄤ綅
+ if (!string.IsNullOrEmpty(locatInfo.AisleOne))
+ {
+ //鍒ゆ柇澶栦晶鍌ㄤ綅鏄惁鏈夋《
+ var palletInfoYi = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == locatInfo.AisleOne);
+ if (palletInfoYi != null)
+ {
+ //鍒ゆ柇瑕佺Щ搴撶殑妗舵槸鍚﹁鍒嗛厤
+ if (palletInfoYi.Status != "0")
+ {
+ throw new Exception("瑕佺Щ搴撶殑妗跺凡琚垎閰嶏紝璇风◢鍚庡啀璇�");
+ }
+ //鍒ゆ柇瑕佺Щ搴撶殑妗舵槸鍚︽湁姝e湪鎵ц鐨勪换鍔�
+ var taskInfo = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && (w.Status == "0" || w.Status == "1") && w.PalletNo == palletInfoYi.PalletNo);
+ if (taskInfo != null)
+ {
+ throw new Exception("瑕佺Щ搴撶殑妗舵湁姝e湪鎵ц鐨勪换鍔★紝璇风◢鍚庡啀璇�");
+ }
+ #region#缁欒绉诲簱鐨勬《鍒嗛厤鏂板偍浣�
+ var locatInfoNew = new SysStorageLocat();
+ //浼樺厛鍒嗛厤鍐呬晶鍌ㄤ綅
+ var locatListNei = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && !string.IsNullOrEmpty(w.AisleOne) && w.WareHouseNo == palletInfoYi.WareHouseNo && w.AreaNo == palletInfoYi.AreaNo).ToList();
+ foreach (var item in locatListNei)
+ {
+ //鍒ゆ柇璇ュ唴渚у偍浣嶇殑澶栦晶鍌ㄤ綅鏄惁鏈夋《
+ var detailWai = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == item.AisleOne);
+ if (detailWai != null)
+ {
+ continue;
+ }
+ locatInfoNew = item;
+ break;
+ }
+ if (locatInfoNew == null)
+ {
+ //娌℃湁鍐呬晶鍌ㄤ綅锛屽啀鏌ユ壘澶栦晶鍌ㄤ綅
+ var locatListWai = Db.Queryable<SysStorageLocat>().Where(w => w.IsDel == "0" && w.Status == "0" && string.IsNullOrEmpty(w.AisleOne) && w.WareHouseNo == palletInfoYi.WareHouseNo && w.AreaNo == palletInfoYi.AreaNo).OrderBy(o => o.Row).ToList();
+ foreach (var item in locatListWai)
+ {
+ //鍒ゆ柇璇ュ偍浣嶇殑鍐呬晶鍌ㄤ綅鏄惁鏈夋鍦ㄦ墽琛岀殑浠诲姟
+ var locatItemNei = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.AisleOne == item.LocatNo);
+ if (locatItemNei != null && locatItemNei.Status != "0")
+ {
+ continue;
+ }
+ locatInfoNew = item;
+ break;
+ }
+ }
+ if (locatInfoNew == null)
+ {
+ throw new Exception("娌℃湁绌轰綑鐨勭┖鍌ㄤ綅杩涜绉诲簱");
+ }
+ #endregion
+
+ //缁欎笅杞︿笅鍙戠Щ搴撲换鍔�
+ var taskNo = new Common().GetMaxNo("TN");//浠诲姟鍙�
+ //浠诲姟淇℃伅
+ var logTaskEntry = new LogTask
+ {
+ TaskNo = taskNo,
+ Sender = "WMS",
+ Receiver = "RCS",
+ //IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+ SendDate = DateTime.Now, //鍙戦�佹椂闂�
+ //BackDate = DateTime.Now, //杩斿洖鏃堕棿
+ StartLocat = palletInfoYi.LocatNo,//璧峰浣嶇疆
+ EndLocat = locatInfoNew.LocatNo,//鐩爣浣嶇疆
+ PalletNo = palletInfoYi.PalletNo,//鎵樼洏鐮�
+ IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+ IsCancel = 1,//鏄惁鍙彇娑�
+ IsFinish = 1,//鏄惁鍙畬鎴�
+ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟
+ OrderType = "3",//鍗曟嵁绫诲瀷 0 鍏ュ簱 1 鍑哄簱 3绉诲簱
+ Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+ NoticeDetailNo = 0,
+ Msg = $"灏嗘《{palletInfoYi.PalletNo}浠巤palletInfoYi.LocatNo}绉诲埌{locatInfoNew.LocatNo}", //鍏抽敭淇℃伅
+ LotNo = ""//鎵规鍙�
+ };
+
+ //缁勭粐涓嬪彂灏忚溅浠诲姟淇℃伅
+ var task = new TaskDetial
+ {
+ Taskno = taskNo,//浠诲姟鍙�
+ Startport = palletInfoYi.LocatNo,//璧峰浣嶇疆
+ Endport = locatInfoNew.LocatNo,//endLoction.LocatNo,//鐩爣浣嶇疆
+ Pallno = palletInfoYi.PalletNo,//妗跺彿
+ Crtype = "1",//鍙《
+ WareHouseNo = palletInfoYi.WareHouseNo//杞﹂棿缂栫爜
+ };
+ string agvMsg = string.Empty;
+ //缁欎笅杞︿笅鍙戜换鍔�
+ logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂�
+ var agvResult = CreateTaskForAgv(task, url, out agvMsg, "70");
+ if (agvResult)//鎴愬姛
+ {
+ //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬�
+ logTaskEntry.IsSuccess = 1;
+ logTaskEntry.IsSend = 0;
+ //logTaskEntry.IsCancel = 0;
+ logTaskEntry.BackDate = DateTime.Now;
+ logTaskEntry.Status = "1";//姝e湪鎵ц
+ Db.Insertable(logTaskEntry).ExecuteCommand();
+
+
+ locatInfo.Status = "5";//绉诲嚭涓�
+ Db.Updateable(locatInfo).ExecuteCommand();
+
+ locatInfoNew.Status = "4";//绉诲叆涓�
+ Db.Updateable(locatInfoNew).ExecuteCommand();
+ }
+ else//澶辫触
+ {
+ logTaskEntry.IsSuccess = 0;
+ logTaskEntry.Information = agvMsg;
+ Db.Insertable(logTaskEntry).ExecuteCommand();
+
+ throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿palletInfoYi.PalletNo}");
+ }
+ }
+ }
+ return true;
+ }
+ catch (Exception e)
+ {
+ throw new Exception(e.Message);
+ }
+ }
}
}
--
Gitblit v1.8.0