From 32cfcc52c647b5dab8db7c5ca7b54ab3041e9d36 Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期三, 04 六月 2025 14:54:33 +0800 Subject: [PATCH] 修改车间出入库 --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 870 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 832 insertions(+), 38 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index b0f88b6..d2c75d7 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs @@ -22,6 +22,9 @@ using System.Xml.Schema; using ZXing.OneD; using System.Threading.Tasks; +using System.Security.Policy; +using Newtonsoft.Json; +using Utility.Tools; namespace WMS.BLL.BllPdaServer { @@ -1720,7 +1723,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model) + public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model,string url) { try { @@ -1728,27 +1731,307 @@ { throw new Exception("璇锋壂鎻忓绠辨潯鐮�!"); } - string sqlString = $@"SELECT - ASNNo, - BoxNo, - SkuNo, - SkuName, - LotNo, - BitBoxMark, - SUM(Qty) as Qty - FROM BllBoxInfo - WHERE IsDel = '0' - AND Status='0' - AND BoxNo = '{model.BoxNo}' - GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; - var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); - - if (models.Count == 0) + if (string.IsNullOrWhiteSpace(model.ASNNo)) { - throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + throw new Exception("璇烽�夋嫨鍏ュ簱鍗曞彿!"); } + var noticeList = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && m.ASNNo == model.ASNNo).ToList(); + if (noticeList.Count != 1) + { + throw new Exception("鍏ュ簱鍗曞彿閲嶅!"); + } + var notice = noticeList.First(); + if (notice.Type == "0") //鎴愬搧鍏ュ簱 + { + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); - return models; + if (models.Count != 0) + { + return models; + } + else + { + var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).ToList(); + + if (boxInfo.Count == 0) + { + models = GetFMBindBoxInfos(model.BoxNo, url); + return models; + } + else + { + if (boxInfo.Count(m => m.Status != "0") > 0) + { + throw new Exception("绠辩爜淇℃伅鐘舵�佷笉鏄瓑寰呮墽琛�"); + } + return models; + } + + + + } + } + else if (notice.Type == "1" || notice.Type == "4") //閲囪喘鍏ュ簱 + { + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + + if (models.Count != 0) + { + return models; + } + else + { + throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�"); + } + } + else if (notice.Type == "3") //閫�璐у叆搴� + { + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + + if (models.Count != 0) + { + return models; + } + else + { + sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo2 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + if (models.Count != 0) + { + return models; + } + else + { + sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo3 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + if (models.Count != 0) + { + return models; + } + } + } + + #region 鑾峰彇鏈�鍚庝竴娆″嚭搴撴嫞璐т腑鐨勭鐮佷俊鎭� + + var comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); + if (comBox.Count == 0) + { + comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo2 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); + if (comBox.Count == 0) + { + comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo3 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); + } + } + var i = 0;//寰幆娆℃暟 + DateTime time = DateTime.Now; + var allotId = 0; + foreach (var item in comBox) + { + var comBoxList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == item).OrderByDescending(m => m.CreateTime).First(); + if (i == 0) + { + time = comBoxList.CreateTime; + allotId = comBoxList.ExportAllotId; + } + else if (comBoxList.CreateTime > time) + { + time = comBoxList.CreateTime; + allotId = comBoxList.ExportAllotId; + } + i++; + } + if (allotId != 0) + { + var addComBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotId).ToList(); + var addComList = addComBox.GroupBy(m => m.BoxNo).ToList(); + var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == addComBox.First().SkuNo); + var pNum = 0; + var bNum = 0; + new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); + var boxList = new List<BllBoxInfo>(); + foreach (var com in addComList) + { + //绠卞唴鎬绘暟鍜� + var qtySum = addComBox.Where(m => m.BoxNo == com.Key).Sum(m => m.CompleteQty); + var bitBox = "1"; + if (qtySum == bNum) + { + bitBox = "0"; + } + foreach (var item in com) + { + if (item.BoxNo != model.BoxNo) + { + if (item.BoxNo2 != model.BoxNo) + { + if (item.BoxNo3 != model.BoxNo) + { + continue; + } + } + } + var boxInfo = new BllBoxInfo() + { + BoxNo = item.BoxNo, + BoxNo2 = item.BoxNo2, + BoxNo3 = item.BoxNo3, + SkuNo = item.SkuNo, + SkuName = item.SkuName, + LotNo = item.LotNo, + LotText = item.LotText, + Qty = (decimal)item.CompleteQty, + FullQty = bNum, + //ProductionTime = , + //ExpirationTime = , + InspectMark = "0", + InspectStatus = "0", + BitBoxMark = bitBox, + Origin = "WMS", + Status = "0", + CreateUser = 0 + }; + boxList.Add(boxInfo); + } + + } + Db.Insertable(boxList).ExecuteCommand(); + + string sqlString2 = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); + + if (models2.Count != 0) + { + return models2; + } + else + { + sqlString2 = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo2 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); + if (models2.Count != 0) + { + return models2; + } + else + { + sqlString2 = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo3 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); + if (models2.Count != 0) + { + return models2; + } + } + } + + + } + + throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + #endregion + + } + else + { + throw new Exception("鍗曟嵁绫诲瀷閿欒"); + } } catch (Exception ex) { @@ -1761,21 +2044,83 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public List<BoxInfoDto> GetFMBindBoxInfos(string boxno) + public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url) { try { #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮� - /*var jsonData = JsonConvert.SerializeObject(boxno); + var data = new + { + BoxCode = boxno + }; + var jsonData = JsonConvert.SerializeObject(data); var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM"); - var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁 - if (obj.Success != 0) + var obj = JsonConvert.DeserializeObject<FumaGetBoxModel>(response);//瑙f瀽杩斿洖鏁版嵁 + if (obj.Success != "0") { throw new Exception("璇锋眰澶辫触" + obj.Message); - }*/ + } #endregion + var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Product.SkuNo); + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + if (sku == null) + { + throw new Exception($"鏈煡璇㈠埌鐗╂枡{obj.Product.SkuNo}淇℃伅"); + } + new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); + if (pNum == 0 || bNum == 0) + { + throw new Exception($"{sku.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒"); + } + + var boxList = new List<BllBoxInfo>(); + var comTime = DateTime.Now; + //娣诲姞绠辩爜淇℃伅 + foreach (var box in obj.Product.BoxInfoList) + { + foreach (var box2 in box.BoxInfo2List) + { + foreach (var box3 in box2.BoxInfo3List) + { + var boxInfo = new BllBoxInfo() + { + BoxNo = box.BoxNo, + BoxNo2 = box2.BoxNo2, + BoxNo3 = box3.BoxNo3, + Qty = box3.Qty, + BitBoxMark = box.BitBoxMark, + + ASNNo = "", + //ASNDetailNo = noticeDetail.Id, + OrderCode = "",//notice.OrderCode + //BindNo = bindId, + //PalletNo = model.PallNo, + FullQty = bNum, + Status = "2", + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + LotNo = obj.Product.LotNo, + LotText = obj.Product.LotText, + ProductionTime = DateTime.Parse(obj.Product.ProductionTime), + ExpirationTime = DateTime.Parse(obj.Product.ExpirationTime), + //CompleteTime = "", + InspectMark = "0", + InspectStatus = "0", + Origin = "璧嬬爜", + CreateTime = comTime, + CreateUser = 0 + }; + boxList.Add(boxInfo); + } + + } + } + Db.Fastest<BllBoxInfo>().BulkCopy(boxList); + + string sqlString = $@"SELECT ASNNo, BoxNo, @@ -2062,6 +2407,464 @@ { throw new Exception(e.Message); } + } + + /// <summary> + /// 鏍规嵁绠辩爜鑾峰彇鏍囩绠辩爜淇℃伅锛堣溅闂村叆搴�-鑾峰彇WMS鐢熸垚鐨勭淇℃伅锛� + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public List<BoxInfoDto> GetWmsBoxInfos(string boxNo) + { + try + { + if (string.IsNullOrEmpty(boxNo)) + { + throw new Exception("璇锋壂鎻忓绠辨潯鐮�!"); + } + + string sqlString = $@"SELECT BoxNo, SkuNo, SkuName, LotNo, BitBoxMark, SUM(Qty) as Qty FROM BllBoxInfo + WHERE IsDel = '0' and Status='0' and BoxNo = '{boxNo}' + GROUP BY BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + + if (models.Count != 0) + { + return models; + } + else + { + throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�"); + } + + } + catch (Exception ex) + { + throw ex; + } + } + + + public void ChejianIn(string palletNo,string boxNo,decimal qty,string areaNo,int userId) + { + try + { + #region MyRegion + + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + if (string.IsNullOrWhiteSpace(boxNo)) + { + throw new Exception("绠卞彿涓嶈兘涓虹┖"); + } + if (qty<=0) + { + throw new Exception("鏁伴噺涓嶈兘灏忕瓑0"); + } + var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo).ToList(); + if (boxInfo.Count == 0) + { + throw new Exception("鏈煡璇㈠埌褰撳墠绠卞彿淇℃伅"); + } + var boxInfoOne = boxInfo.First(); + var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); + if (pall == null) + { + throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅"); + } + #endregion + + //寮�鍚簨鍔� + Db.BeginTran(); + //褰撳墠鏃堕棿 + var comTime = DateTime.Now; + + #region 鍖呰 + + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == boxInfoOne.SkuNo); + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + + //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 + new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum); + + #endregion + + var msgStr = $"绠卞彿涓簕boxNo}"; + var boxInfoList = new List<BllBoxInfo>(); + + + boxInfoList.AddRange(boxInfo); + + #region 搴撳瓨鏄庣粏 + + var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo); + if (area == null) + { + throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖"); + } + + var tags = "0"; + + // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� + var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo== boxInfoOne.SkuNo && m.LotNo == boxInfoOne.LotNo && m.PalletNo == palletNo); + var sdId1 = 0; + if (sd1 != null) + { + if (sd1.AreaNo!= areaNo) + { + throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓"); + } + sdId1 = sd1.Id; + // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 + sd1.Qty += qty; + sd1.CompleteTime = comTime; + sd1.UpdateUser = userId; + sd1.UpdateTime = comTime; + + Db.Updateable(sd1).ExecuteCommand(); + } + else + { + var sd2 = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo && m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.AreaNo)); + if (sd2.Count(m=>m.AreaNo!= areaNo) > 0) + { + throw new Exception("褰撳墠鎵樼洏浣嶇疆涓庨�夋嫨鐨勪笉鍚岋紝璇锋牳瀹�"); + } + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + ASNNo = "", + LotNo = boxInfoOne.LotNo, + LotText = boxInfoOne.LotText, + SupplierLot = boxInfoOne.SupplierLot, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + Qty = qty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = area.AreaNo,//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = palletNo, + PalletTags = tags, + CompleteTime = comTime, + ProductionTime = boxInfoOne.ProductionTime, + ExpirationTime = boxInfoOne.ExpirationTime, + Status = "0", + InspectMark = boxInfoOne.InspectMark, + InspectStatus = sku.IsInspect, + BitPalletMark = "1", + PackagNo = sku.PackagNo, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + + //娣诲姞搴撳瓨鏄庣粏 + sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + } + #endregion + + // 鏇存敼绠辨敮鍏崇郴琛� + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + + + //鏍囩缁勬墭 + var boxGroup = boxInfo.GroupBy(m => m.BoxNo).ToList(); + foreach (var g in boxGroup) + { + decimal boxFullQty = 0;//绠卞唴鎬绘暟閲� + foreach (var box in g) + { + if (box.BindNo != null && box.BindNo != 0) + { + continue; + } + + + box.PalletNo = palletNo; + box.Status = "2"; + + box.CompleteTime = comTime; + box.UpdateTime = comTime; + box.UpdateUser = userId; + + //box.Qty = box.Qty; + //box.BitBoxMark = box.Qty == box.FullQty ? "0" : "1"; + + factQty += box.Qty; + boxFullQty += box.Qty; + + #region 搴撳瓨绠辩爜鏄庣粏 + var box2 = new DataBoxInfo() + { + StockDetailId = sdId1, + BoxNo = box.BoxNo, + BoxNo2 = box.BoxNo2, + BoxNo3 = box.BoxNo3, + PalletNo = box.PalletNo, + PalletNo2 = box.PalletNo2, + PalletNo3 = box.PalletNo3, + Qty = box.Qty, + FullQty = box.FullQty, + Status = "2",//0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣 + LotNo = box.LotNo, + LotText = box.LotText, + SkuNo = box.SkuNo, + SkuName = box.SkuName, + Standard = sku.Standard, + ProductionTime = box.ProductionTime, + SupplierLot = box.SupplierLot, + InspectStatus = sku.IsInspect, + InspectMark = box.InspectMark, + BitBoxMark = box.BitBoxMark, + ExpirationTime = box.ExpirationTime, + + CreateUser = 0, + CreateTime = comTime + }; + //娣诲姞搴撳瓨绠辩爜鏄庣粏 + Db.Insertable(box2).ExecuteCommand(); + #endregion + } + if (boxFullQty > bNum) + { + throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒"); + } + } + //鏇存敼绠辨敮鍏崇郴琛ㄤ俊鎭� + Db.Updateable(boxInfoList).ExecuteCommand(); + + + #region 搴撳瓨 + var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == boxInfoOne.LotNo); + if (dataStock != null) + { + dataStock.Qty += factQty; + Db.Updateable(dataStock).ExecuteCommand(); + } + else + { + var stock = new DataStock() + { + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = boxInfoOne.LotNo, + LotText = boxInfoOne.LotText, + Qty = qty, + LockQty = 0, + FrozenQty = 0, + IsSampling = "0", + IsDel = "0", + CreateUser = userId, + CreateTime = comTime + }; + Db.Insertable(stock).ExecuteCommand(); + } + #endregion + + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';"; + ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹� + //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);"; + //Db.Ado.ExecuteCommand(sqlStr); + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", boxNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}銆亄msgStr}鐨勫叆搴撲俊鎭�", userId); + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + /// <summary> + /// 杞﹂棿缁戝畾鎵樼洏 涓嶈创鏍囩墿鏂� + /// </summary> + /// <param name="model"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void ChejianQtyIn(string palletNo, string skuNo, string lotNo, decimal qty, string areaNo, int userId) + { + try + { + #region MyRegion + + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + if (string.IsNullOrWhiteSpace(skuNo)) + { + throw new Exception("鐗╂枡涓嶈兘涓虹┖"); + } + if (qty <= 0) + { + throw new Exception("鏁伴噺涓嶈兘灏忕瓑0"); + } + var skuInfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == skuNo); + if (skuInfo == null) + { + throw new Exception("鏈煡璇㈠埌鐗╂枡淇℃伅"); + } + var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); + if (pall == null) + { + throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅"); + } + #endregion + + //寮�鍚簨鍔� + Db.BeginTran(); + //褰撳墠鏃堕棿 + var comTime = DateTime.Now; + + #region 鍖呰 + + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuInfo.PackagNo); + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + + //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 + new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum); + + #endregion + + + + #region 搴撳瓨鏄庣粏 + + var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo); + if (area == null) + { + throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖"); + } + + var tags = "0"; + + // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� + var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo == skuNo && m.LotNo == lotNo && m.PalletNo == palletNo); + var sdId1 = 0; + if (sd1 != null) + { + if (sd1.AreaNo != areaNo) + { + throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓"); + } + sdId1 = sd1.Id; + // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 + sd1.Qty += qty; + sd1.CompleteTime = comTime; + sd1.UpdateUser = userId; + sd1.UpdateTime = comTime; + if (sd1.Qty >= pNum) + { + sd1.BitPalletMark = "0"; + } + Db.Updateable(sd1).ExecuteCommand(); + } + else + { + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + LotNo = lotNo, + SupplierLot = "", + SkuNo = skuInfo.SkuNo, + SkuName = skuInfo.SkuName, + Standard = skuInfo.Standard, + Qty = qty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = area.AreaNo,//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = palletNo, + PalletTags = tags, + CompleteTime = comTime, + //ProductionTime = boxInfoOne.ProductionTime, + //ExpirationTime = boxInfoOne.ExpirationTime, + Status = "0", + InspectMark = "0", + InspectStatus = "1", + BitPalletMark = qty >= pNum ?"0" :"1", + PackagNo = skuInfo.PackagNo, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + + //娣诲姞搴撳瓨鏄庣粏 + sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + } + #endregion + + // 鏇存敼绠辨敮鍏崇郴琛� + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + + + #region 搴撳瓨 + var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == skuInfo.SkuNo && m.LotNo == lotNo); + if (dataStock != null) + { + dataStock.Qty += factQty; + Db.Updateable(dataStock).ExecuteCommand(); + } + else + { + var stock = new DataStock() + { + SkuNo = skuInfo.SkuNo, + SkuName = skuInfo.SkuName, + Standard = skuInfo.Standard, + LotNo = lotNo, + LotText = "", + Qty = qty, + LockQty = 0, + FrozenQty = 0, + IsSampling = "0", + IsDel = "0", + CreateUser = userId, + CreateTime = comTime + }; + Db.Insertable(stock).ExecuteCommand(); + } + #endregion + + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';"; + ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹� + //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);"; + Db.Ado.ExecuteCommand(sqlStr); + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", skuNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}鐨勫叆搴撲俊鎭�", userId); + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } #endregion @@ -5606,16 +6409,7 @@ //淇敼搴撳瓨鏄庣粏淇℃伅 Db.Updateable(item).ExecuteCommand(); } - //鑾峰彇鎷h揣淇℃伅 - var alotr = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.PalletNo == model.PalletNo && a.Status == "4"); - if (alotr != null) - { - alotr.Status = "5"; //5 宸插畬鎴� - alotr.UpdateUser = model.CreateUser; //淇敼浜� - alotr.UpdateTime = serverTime; //淇敼鏃堕棿 - //淇敼鎷h揣淇℃伅 - Db.Updateable(alotr).ExecuteCommand(); - } + #region 浠诲姟鍙婄粍鎵樹俊鎭� //鍒涘缓浠诲姟淇℃伅 var taskNo = new Common().GetMaxNo("TK"); @@ -5660,15 +6454,15 @@ var upShelf = new BllPalletUpShelf() { TaskNo = exTask.TaskNo, - TraceNo = bindInfo.ASNNo, - PalletNo = bindInfo.PalletNo, + TraceNo = bindInfo== null? "": bindInfo.ASNNo, + PalletNo = model.PalletNo, SkuNo = palletupinfo.SkuNo, SkuName = palletupinfo.SkuName, LotNo = palletupinfo.LotNo, Status = "2", LocatNo = model.LocatNo, - WareHouseNo = bindInfo.WareHouseNo, - RoadwayNo = bindInfo.RoadwayNo, + WareHouseNo = storageLocat.WareHouseNo, + RoadwayNo = storageLocat.RoadwayNo, AreaNo = storageLocat.AreaNo, CreateUser = 0, -- Gitblit v1.8.0