From b2d25faa69ee7e9f24b6ac98d3b4dcbddada70bc Mon Sep 17 00:00:00 2001
From: yuyou_x <2336760928@qq.com>
Date: 星期四, 14 三月 2024 13:37:15 +0800
Subject: [PATCH] 修改pda托盘绑定同一物料多批次 无法具体选中批次问题。
---
Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 315 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 239 insertions(+), 76 deletions(-)
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index 59a7019..0229a82 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -141,6 +141,7 @@
SupplierLot = stocks.First().SupplierLot,
IsWave = "0",
WaveNo = "",
+ IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo)? "0":"1",
CreateUser = 0,
};
@@ -330,42 +331,60 @@
}
}
- public List<ExStockInfoDto> GetStockGroupList(string type, string msg)
+ public List<ExStockInfoDto> GetStockGroupList(string type, string ownerNo, string msg)
{
try
{
+ if (string.IsNullOrEmpty(type))
+ {
+ throw new Exception("璇烽�夋嫨鍑哄簱鍗曠被鍨�");
+ }
+ if (type == "6" && string.IsNullOrEmpty(ownerNo))
+ {
+ throw new Exception("浠e偍鍗曟嵁璇烽�夋嫨璐т富");
+ }
var plnList = new List<string>() { "100099" };
var skuList = new List<string>();
var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎
string skuType = string.Empty;
+ string inspectStatus = string.Empty;
switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧
{
- case "0"://鎴愬搧鍏ュ簱
+ case "0"://鎴愬搧鍑哄簱
skuType = "(2)";
+ inspectStatus = "1";
break;
case "1"://棰嗘枡鍑哄簱
skuType = "(0,1,3)";
+ inspectStatus = "1";
break;
case "2"://鎶芥鍑哄簱
- skuType = "(2)";
+ skuType = "(0,1,2,3)";
+ inspectStatus = "0,1,2";
break;
case "3"://鐗╂枡鍙栨牱鍑哄簱
- skuType = "(0)";
+ skuType = "(0,1,2,3)";
+ inspectStatus = "0";
break;
case "4"://涓嶅悎鏍煎搧鍑哄簱
- skuType = "(2)";
+ skuType = "(0,1,2,3)";
+ inspectStatus = "2";
break;
case "5"://涓棿鍝佸嚭搴�
skuType = "(4)";
+ inspectStatus = "0,1";
break;
case "6"://浠e偍鍑哄簱
- skuType = "(2)";
+ skuType = "(0,1,2,3)";
+ inspectStatus = "0,1";
break;
case "8"://瀵勫瓨鍑哄簱
- skuType = "(3)";
+ skuType = "(0,1,2,3)";
+ inspectStatus = "0,1";
break;
default: //鍏跺畠鍑哄簱
skuType = "(0,1,2,3,4)";
+ inspectStatus = "0,1";
break;
}
skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList();
@@ -378,8 +397,9 @@
var stockDetailRst = new StockDetailServer();
Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
//.And(it => it.WareHouseNo == wareHouseNo)
- .And(it => it.InspectStatus == "1")
+ .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus))
.And(m => skuList.Contains(m.SkuNo))
+ .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓�
.AndIF(!string.IsNullOrWhiteSpace(msg), it => (it.SkuNo.Contains(msg) || it.SkuName.Contains(msg) || it.LotNo.Contains(msg)))
.And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0)
.And(it => (it.Status == "0" || it.Status == "1"))
@@ -1426,43 +1446,52 @@
string toLocation = string.Empty;//鐩爣浣嶇疆
string unstackingMode2 = unstackingMode;//鎷嗗灈鏂瑰紡锛�0:鏈哄櫒浜烘媶鍨� 1:PDA鎷嗗灈
#region 鍒ゆ柇鏄惁闇�瑕佹媶绠�
- string isChai = "0";//鏄惁闇�瑕佹媶绠憋紝0:鍚� 1:鏄�
- var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
- if (skuInfo == null)
+ if (notice.Type == "0")//鎴愬搧鍑哄簱
{
- throw new Exception("鐗╂枡淇℃伅涓嶅瓨鍦紒");
- }
- var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
- if (packagInfo == null)
- {
- throw new Exception("鍖呰淇℃伅涓嶅瓨鍦紒");
- }
- if (packagInfo.L2Name == "绠�")
- {
- if (item.Qty % (decimal)packagInfo.L2Num != 0)//鑳芥暣闄よ鏄庝笉鐢ㄦ媶绠憋紝涓嶈兘鏁撮櫎璇存槑闇�瑕佹媶绠�
+ string isChai = "0";//鏄惁闇�瑕佹媶绠憋紝0:鍚� 1:鏄�
+ var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo);
+ if (skuInfo == null)
{
- isChai = "1";
- unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
+ throw new Exception("鐗╂枡淇℃伅涓嶅瓨鍦紒");
+ }
+ var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo);
+ if (packagInfo == null)
+ {
+ throw new Exception("鍖呰淇℃伅涓嶅瓨鍦紒");
+ }
+ if (packagInfo.L2Name == "绠�")
+ {
+ if (item.Qty % (decimal)packagInfo.L2Num != 0)//鑳芥暣闄よ鏄庝笉鐢ㄦ媶绠憋紝涓嶈兘鏁撮櫎璇存槑闇�瑕佹媶绠�
+ {
+ isChai = "1";
+ unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
+ }
+ }
+ if (isChai == "0")
+ {
+ var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
+ if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
+ {
+ isChai = "1";
+ unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
+ }
+ }
+
+ if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨�
+ {
+ toLocation = loadingAddre;//瑁呰溅鍙�
+ }
+ else //PDA鎷嗗灈
+ {
+ toLocation = outMode;//鍑哄簱鍙�
}
}
- if (isChai == "0")
+ else
{
- var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList();
- if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠�
- {
- isChai = "1";
- unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈
- }
- }
- #endregion
- if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨�
- {
- toLocation = loadingAddre;//瑁呰溅鍙�
- }
- else //PDA鎷嗗灈
- {
+ unstackingMode2 = "1";//闈炴垚鍝佸嚭搴撹蛋PDA鎷嗗灈
toLocation = outMode;//鍑哄簱鍙�
}
+ #endregion
// 鍌ㄤ綅鍙�
var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
@@ -1876,23 +1905,23 @@
try
{
- var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
- response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
- var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+ //var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+ //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+ //var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
- ////瑙f瀽杩斿洖鏁版嵁
- var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
- if (wcsModel.StatusCode == 0)
- {
- //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
- new TaskServer().EditTaskIssueOk(list2, time1, time2);
- str += "涓嬪彂鎴愬姛";
- }
- if (wcsModel.StatusCode == -1)
- {
- new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
- throw new Exception(wcsModel.Msg);
- }
+ //////瑙f瀽杩斿洖鏁版嵁
+ //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+ //if (wcsModel.StatusCode == 0)
+ //{
+ // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+ // new TaskServer().EditTaskIssueOk(list2, time1, time2);
+ // str += "涓嬪彂鎴愬姛";
+ //}
+ //if (wcsModel.StatusCode == -1)
+ //{
+ // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
+ // throw new Exception(wcsModel.Msg);
+ //}
}
catch (Exception ex)
{
@@ -2078,6 +2107,86 @@
}
}
+ /// <summary>
+ /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛�
+ /// </summary>
+ /// <param name="taskNo">浠诲姟鍙�</param>
+ /// <param name="userId">鎿嶄綔浜�</param>
+ /// <exception cref="Exception"></exception>
+ public void RelocationSuccess(string taskNo, int userId)
+ {
+ try
+ {
+ //褰撳墠浠诲姟淇℃伅
+ var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+ if (task == null)
+ {
+ throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+ }
+ if (task.Status == "2")
+ {
+ throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
+ }
+ Db.BeginTran();
+ //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
+ var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
+ //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅
+ //褰撳墠浠诲姟涓殑鍘熷偍浣�
+ var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
+ if (locate == null)
+ {
+ throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+ }
+ var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
+ if (locate2 == null)
+ {
+ throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+ }
+
+ try
+ {
+ task.Status = "2";//浠诲姟鐘舵��
+ task.IsSend = 0;
+ task.IsCancel = 0;
+ task.IsFinish = 0;
+ task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
+ Db.Updateable(task).ExecuteCommand();
+
+ #region 淇敼鍌ㄤ綅鐘舵��
+
+ //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0
+ locate.Status = "0";
+ Db.Updateable(locate).ExecuteCommand();
+
+ //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1
+ locate2.Status = "1";
+ Db.Updateable(locate2).ExecuteCommand();
+ foreach (var item in stockDetail)
+ {
+ item.WareHouseNo = locate2.WareHouseNo;
+ item.AreaNo = locate2.AreaNo;
+ item.RoadwayNo = locate2.RoadwayNo;
+ item.LocatNo = locate2.LocatNo;
+ }
+ Db.Updateable(stockDetail).ExecuteCommand();
+
+ #endregion
+
+ Db.CommitTran();
+ }
+ catch (Exception ex)
+ {
+ Db.RollbackTran();
+ throw new Exception(ex.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
+ }
+ }
+
+
//閲嶆柊涓嬪彂鍑哄簱浠诲姟
public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url)
{
@@ -2199,7 +2308,16 @@
//鑾峰彇鍌ㄤ綅淇℃伅
var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat);
-
+ //鑾峰彇绉诲簱浠诲姟瀵瑰簲鐩爣鍌ㄤ綅淇℃伅
+ SysStorageLocat endlocat = new SysStorageLocat();
+ if (task.Type == "2")
+ {
+ endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W03" && a.LocatNo == task.EndLocat);
+ if (endlocat == null)
+ {
+ throw new Exception("鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅");
+ }
+ }
if (locat == null)
{
Db.RollbackTran();
@@ -2207,6 +2325,11 @@
}
locat.Status = "1"; //鏈夌墿鍝�
Db.Updateable(locat).ExecuteCommand();
+ if (endlocat != null)
+ {
+ endlocat.Status = "0"; //绌哄偍浣� 0
+ Db.Updateable(endlocat).ExecuteCommand();
+ }
if (noticeDetail.FactQty == 0)
{
@@ -2395,7 +2518,7 @@
}
if (notice.Status != "0" && notice.Status != "1")
{
- throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰嶆垨鏉ユ簮鏄惁鏄疻MS");
+ throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰�;");
}
//鍑哄簱鍗曟槑缁�
var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.AllotQty - m.Qty) <= 0).ToList();
@@ -2430,32 +2553,50 @@
//鍒ゆ柇鍗曞彿鏄惁鎸囧畾鎵规
if (!string.IsNullOrWhiteSpace(detail.LotNo))
{
- stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
+ if (detail.LotNo.Contains(";"))
+ {
+ var lotNoList = detail.LotNo.Split(";");
+ var lotNoList2 = new List<string>();
+
+ foreach (var lotNoItem in lotNoList)
+ {
+ lotNoList2.Add(lotNoItem);
+ }
+ stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && lotNoList2.Contains(m.LotNo) && m.IsDel == "0").ToList();
+ }
+ else
+ {
+ stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList();
+ }
+
}
else
{
- stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && string.IsNullOrWhiteSpace(m.LotNo) && m.IsDel == "0").ToList();
+ stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0").ToList(); //&& string.IsNullOrWhiteSpace(m.LotNo)
}
if (stockDetail.Count < 1)
{
throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨");
}
+ //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆�8:瀵勫瓨鍑哄簱
+ if (notice.Type == "0" || notice.Type == "1" )//鎴愬搧銆佸師杈呮枡鍑哄簱
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
+ }
+ else if (notice.Type == "3" )//鍙栨牱鍑哄簱
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
+ }
+ else if (notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList();
+ }
+ else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴�
+ {
+ stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
+ }
- //if (notice.Type == "0" || notice.Type == "1")//鎴愬搧銆佸師杈呮枡鍑哄簱
- //{
- stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList();
- //}
- //else if (notice.Type == "2" || notice.Type == "3")//鎴愬搧銆佸師杈呮枡鍑哄簱(涓嶅悎鏍�)
- //{
- // stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList();
- //}
- //else if (notice.Type == "4")//鍙栨牱鍑哄簱
- //{
- // stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList();
- //}
- //灏嗗簱瀛樻槑缁嗘寜娣卞害杩涜鎺掑簭 娣卞害1鍦ㄥ墠 娣卞害2鍦ㄥ悗
- //stockDetail = stockDetail.OrderBy(d => int.Parse(d.LocatNo.Substring(6, 2))).ToList();
#region 鍖呰淇℃伅
var pack = packList.FirstOrDefault(p => p.PackagNo == detail.PackagNo);
@@ -2547,6 +2688,22 @@
}
var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand();
+ if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
+ {
+ if (string.IsNullOrWhiteSpace(detail.LotNo))
+ {
+ detail.LotNo = s.LotNo;
+
+ }
+ else
+ {
+ if (!detail.LotNo.Contains(s.LotNo))
+ {
+ detail.LotNo += ";" + s.LotNo;
+ }
+ }
+ }
+
}
detail.AllotQty += qty;
detail.UpdateUser = userId;
@@ -2685,6 +2842,15 @@
d.Status = "0";
d.UpdateUser = userId;
d.UpdateTime = DateTime.Now;
+
+ if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱��
+ {
+ if (d.IsIssueLotNo != "1")
+ {
+ d.LotNo = "";
+ }
+
+ }
}
notice.Status = "0";
notice.UpdateUser = userId;
@@ -3032,10 +3198,7 @@
var lie = int.Parse(oldAddress.Substring(2, 2));
var ceng = int.Parse(oldAddress.Substring(4, 2));
- var sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum
- from SysStorageLocat
- where Flag = '0' and Status = '0' and Depth = '02' and RoadwayNo = '{roadWay}' and AreaNo in '{category}'
- order by distNum;";
+ var sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum from SysStorageLocat where Flag = '0' and Status = '0' and Depth = '02' and RoadwayNo = '{roadWay}' and AreaNo in ('{category.AreaNo}') order by distNum;";
var addressModels = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList();
if (addressModels.Count > 0) // 鍒ゆ柇鍚屽贩閬撳唴鎺掔┖搴撲綅
--
Gitblit v1.8.0