From 38ec8ce86f5a647732fd8ceb5b71704212c1f4e7 Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-5BIMHQ3> Date: 星期日, 04 二月 2024 11:45:36 +0800 Subject: [PATCH] 优化打印标签页面 --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 726 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 468 insertions(+), 258 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index 38278f0..3b76924 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs @@ -15,6 +15,8 @@ using WMS.Entity.BllSoEntity; using Model.ModelVm.PdaVm; using Model.ModelDto.PdaDto; +using Dm; +using Model.InterFaceModel; namespace WMS.BLL.BllPdaServer { @@ -29,7 +31,7 @@ try { // 鏈叧鍗曠殑鍗曟嵁 - sqlString = $"select * from BllArrivalNotice where Type in ({model.Type}) and Status != '3' and IsDel='0' order by CreateTime;"; + sqlString = $"select * from BllArrivalNotice where Type in ({model.Type}) and Status != '3' and Status != '4' and IsDel='0' order by CreateTime;"; var modelList = Db.Ado.SqlQuery<ArrivalNoticeDto>(sqlString); return modelList; @@ -132,7 +134,7 @@ public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model) { try - { + { string sqlString = string.Empty; if (model.IsHuiKu == 0) { @@ -166,249 +168,27 @@ } } - // 缁戝畾鐗╂枡鎵樼洏 - public void BindPallet(PdaPalletBindVm model, int userId,string origin) + // 鏍规嵁鎵樼洏鍙锋垨绠辩爜鑾峰彇鎵樼洏淇℃伅 liudl + public List<PalletBindDto> GetPalletBindInfo(BllPalletBind model) { try { - #region 鍒ゆ柇 - - if (string.IsNullOrEmpty(model.AsnNo)) + string sqlString = string.Empty; + sqlString = "select b.SkuNo,b.SkuName,a.LotNo,a.Qty,a.PalletNo,a.Id from BllPalletBind a left join BllArrivalNoticeDetail b on a.ASNDetailNo = b.Id where a.IsDel = '0' and b.IsDel = '0' "; + if (!string.IsNullOrEmpty(model.PalletNo)) { - throw new Exception("-1:鍗曟嵁鍙蜂笉鍙负绌�!"); - } - if (model.AsnDetailId == null || model.AsnDetailId == 0) - { - throw new Exception("-1:鐗╂枡涓嶅彲涓虹┖!"); - } - if (string.IsNullOrEmpty(model.PalletNo)) - { - throw new Exception("-1:鎵樼洏鍙蜂笉鍙负绌�!"); - } - if (string.IsNullOrEmpty(model.BoxNo)) - { - throw new Exception("-1:绠辩爜淇℃伅涓嶅彲涓虹┖!"); - } - - if (model.IsContinue == "1") - { - if (string.IsNullOrWhiteSpace(model.TailBoxNo)) - { - throw new Exception("-1:寮�鍚繛缁粍鎵樻椂锛屽熬绠辩爜淇℃伅涓嶅彲涓虹┖!"); - } - - } - #endregion - - Db.BeginTran(); - - //鎵樼洏鏄惁瀛樺湪 - var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); - if (pallet == null) - { - throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�"); - } - // 楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦� - var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo); - if (detail == null) - { - throw new Exception("-1:褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); - } - #region 鍖呰 - var package = Db.Queryable<SysPackag>().Where(m => m.IsDel == "0"); - var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); - var pack = package.First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); - if (pack == null) - { - throw new Exception("-1:鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!"); - } - var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 - var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 - if (pack.L5Num.HasValue) - { - pNum = (int)pack.L5Num; - bNum = (int)pack.L4Num; - } - else if (pack.L4Num.HasValue) - { - pNum = (int)pack.L4Num; - bNum = (int)pack.L3Num; - } - else if (pack.L3Num.HasValue) - { - pNum = (int)pack.L3Num; - bNum = (int)pack.L2Num; - } - else if (pack.L2Num.HasValue) - { - pNum = (int)pack.L2Num; - bNum = (int)pack.L1Num; - } - else if (pack.L1Num.HasValue) - { - pNum = (int)pack.L1Num; - bNum = (int)pack.L1Num; - } - if (pNum == 0 || bNum == 0) - { - throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒"); - } - #region 楠岃瘉鏄惁鍏佽绔嬪簱鍚屾墭鐩樹笉鍚岀墿鏂欏叆搴撴垨鍚屾墭鐩樺悓鐗╂枡涓嶅悓鎵规鍏ュ簱 - var palletBind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNNo == model.AsnNo && m.PalletNo == model.PalletNo && m.ASNDetailNo != model.AsnDetailId); - if (palletBind != null) - { - var box = Db.Queryable<BllBoxInfo>().First(m => m.IsDel == "0" && m.BindNo == palletBind.Id && m.BitBoxMark == "0"); - if (box != null && (box.SkuNo != detail.SkuNo || box.LotNo != detail.LotNo)) - { - var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun045"); - if (funSetting == null || funSetting.IsEnable == "OFF") - { - throw new Exception($"涓嶅厑璁哥珛搴撳悓鎵樼洏涓嶅悓鐗╂枡鍏ュ簱鎴栧悓鎵樼洏涓嶅悓鎵规鍏ュ簱锛�"); - } - } - } - #endregion - var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailId && m.PalletNo == model.PalletNo); - var bindId = 0; - if (bind == null) - { - bind = new BllPalletBind - { - ASNNo = model.AsnNo, - ASNDetailNo = (int)model.AsnDetailId, - PalletNo = model.PalletNo, - PalletNo2 = "", - PalletNo3 = "", - Qty = 0, - FullQty = pNum, - Status = "0", - Type = "0", - LotNo = detail.LotNo, - LotText = detail.LotText, - SupplierLot = "", - InspectMark = "0", - BitPalletMark = "1", - IsBale = "0", - IsBelt = "0", - CreateUser = userId - }; - // 鎻掑叆鎵樼洏缁戝畾琛� - bindId = Db.Insertable(bind).ExecuteReturnIdentity(); + sqlString += $"and PalletNo = '{model.PalletNo}' and a.Status = '0' "; } else { - if (bind.Status != "0") - { - throw new Exception("-1:褰撳墠鎵樼洏姝e湪鎵ц涓紝缁戝畾澶辫触锛岃鏍稿疄!"); - } - bindId = bind.Id; + throw new Exception("鎵樼洏鍙峰紓甯革紒"); } + var models = Db.Ado.SqlQuery<PalletBindDto>(sqlString); - #region 绠辩爜淇℃伅 - - var msgStr = $"绠卞彿涓簕model.BoxNo}"; - var boxInfoList = new List<BllBoxInfo>(); - //棣栫 - var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo && m.Status == "0").ToList(); - if (boxInfo.Count == 0) - { - throw new Exception("-1:绠辩爜淇℃伅涓嶅瓨鍦�!"); - } - boxInfoList.AddRange(boxInfo); - //鏄惁杩炵画缁勬墭 - if (model.IsContinue == "1") - { - //灏剧 - var boxInfo2 = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo && m.Status == "0").ToList(); - if (boxInfo2.Count == 0) - { - throw new Exception("-1:灏剧鐮佷俊鎭笉瀛樺湪!"); - } - boxInfoList.AddRange(boxInfo2); - var sql = $"select * from BllBoxInfo where IsDel = '0' and Status = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}'; "; - var list = Db.Ado.SqlQuery<BllBoxInfo>(sql); - boxInfoList.AddRange(list); - msgStr += $"灏剧鍙蜂负{model.TailBoxNo}"; - } - #endregion - #endregion - // 鏇存敼绠辨敮鍏崇郴琛� - var factQty = 0;//鎵樼洏鎬绘暟閲� - var boxGroup = boxInfoList.GroupBy(m => m.BoxNo).ToList(); - foreach (var g in boxGroup) - { - var boxFullQty = 0;//绠卞唴鎬绘暟閲� - foreach (var box in g) - { - if (box.BindNo != null && box.BindNo != 0) - { - continue; - } - //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎 - if (box.SkuNo != detail.SkuNo || box.LotNo != detail.LotNo) - { - throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); - } - - box.ASNNo = model.AsnNo; - box.ASNDetailNo = model.AsnDetailId; - box.BindNo = bindId; - box.PalletNo = model.PalletNo; - box.Status = "1"; - box.CompleteTime = DateTime.Now; - box.UpdateTime = DateTime.Now; - box.UpdateUser = userId; - - factQty += box.Qty; - boxFullQty += box.Qty; - } - if (boxFullQty > bNum) - { - throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒"); - } - } - Db.Updateable(boxInfoList).ExecuteCommand(); - - // 鏇存柊鎵樼洏缁戝畾琛� - bind.Qty += factQty; - if (bind.FullQty < bind.Qty) - { - throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); - } - - if (bind.FullQty == bind.Qty) - { - bind.BitPalletMark = "0"; - } - Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); - - // 鏇存敼鍏ュ簱鍗曟槑缁嗗凡缁勬暟閲� - var sqlString = string.Empty; - sqlString += $"update BllArrivalNoticeDetail set FactQty = FactQty + '{factQty}' where id = '{model.AsnDetailId}';"; - Db.Ado.ExecuteCommand(sqlString); - - // 鏇存敼鍏ュ簱鍗曞強鍏ュ簱鏄庣粏鐘舵�� - if (detail.Status == "0") - { - var sqlString2 = string.Empty; - sqlString2 += $"update BllArrivalNotice set Status = '1',CompleteTime= getDate() where ASNNo = '{model.AsnNo}' and Status ='0';"; - sqlString2 += $"update BllArrivalNoticeDetail set Status = '1',CompleteTime= getDate() where id = '{model.AsnDetailId}' and Status ='0';"; - Db.Ado.ExecuteCommand(sqlString2); - } - - // 鏇存敼鎵樼洏浣跨敤鐘舵�� - var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{model.PalletNo}';"; - //娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹� - sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);"; - Db.Ado.ExecuteCommand(sqlStr); - new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "浜у搧缁勬墭", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}銆亄msgStr}鐨勭粍鐩樹俊鎭�", userId); - - Db.CommitTran(); - + return models; } catch (Exception ex) { - Db.Ado.RollbackTran(); throw ex; } } @@ -732,12 +512,124 @@ } } + // 鍒犻櫎宸茬粍淇℃伅 + public string DelPalletBind(BllPalletBind model) + { + string strMsg = ""; + string sqlString = string.Empty; + try + { + if (model.Id == 0) + { + throw new Exception("-1:鎵樼洏ID涓嶅彲涓�0锛�"); + } + + //鑾峰彇鎵樼洏缁戝畾淇℃伅 + var bind = Db.Queryable<BllPalletBind>().First(a => a.IsDel == "0" && a.Status == "0" && a.Id == model.Id); + //楠岃瘉鎵樼洏缁戝畾淇℃伅鏄惁涓虹┖ + if (bind == null) + { + throw new Exception("-1:鏈幏鍙栧埌瀵瑰簲鎵樼洏淇℃伅锛岃鏍稿疄锛�"); + } + //鍒ゆ柇鎵樼洏缁戝畾淇℃伅鏄惁涓嶆槸绛夊緟鎵ц + if (bind.Status != "0") + { + throw new Exception("-1:璇ユ墭鐩樺凡姝e湪鍏ュ簱锛岃鏍稿疄锛�"); + } + //鑾峰彇鏄惁鏈夋寚瀹氬簱浣� + SysStorageLocat locat = new SysStorageLocat(); + int isNullLocat = 0; + //鍒ゆ柇鍌ㄤ綅鏄惁涓虹┖ + if (!string.IsNullOrWhiteSpace(bind.LocatNo)) + { + isNullLocat = 1; + locat = Db.Queryable<SysStorageLocat>().First(a=>a.IsDel == "0" && a.WareHouseNo == bind.WareHouseNo && a.RoadwayNo == bind.RoadwayNo && a.LocatNo == bind.LocatNo); + //鍒ゆ柇鍌ㄤ綅鍦板潃鏄惁涓烘鍦ㄥ叆搴� + if (locat.Status != "2") + { + throw new Exception("-1:褰撳墠鎵樼洏缁戝畾鐨勫偍浣嶅湴鍧�涓嶆槸姝e湪鍏ュ簱锛岃鏍稿疄锛�"); + } + } + //鑾峰彇鎵樼洏淇℃伅 + var pallet = Db.Queryable<SysPallets>().First(a => a.IsDel == "0" && a.PalletNo == model.PalletNo); + //鍒ゆ柇鎵樼洏淇℃伅鏄惁涓虹┖ + if (pallet == null) + { + throw new Exception("-1:鏈幏鍙栧埌瀵瑰簲鎵樼洏淇℃伅锛岃鏍稿疄锛�"); + } + //鑾峰彇瀵瑰簲鍏ュ簱鍗曟嵁鎬诲崟 + var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == bind.ASNNo); + //楠岃瘉鍏ュ簱鍗曟�诲崟淇℃伅 + if (notice == null) + { + throw new Exception("-1:鏈幏鍙栧埌瀵瑰簲鍏ュ簱鍗曟�诲崟淇℃伅锛岃鏍稿疄锛�"); + } + //鑾峰彇瀵瑰簲鍏ュ簱鍗曟嵁鏄庣粏 + var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(a => a.IsDel == "0" && a.Id == bind.ASNDetailNo); + //楠岃瘉鍏ュ簱鍗曞崟鎹槑缁� + if (noticeDetail == null) + { + throw new Exception("-1:鏈幏鍙栧埌瀵瑰簲鍏ュ簱鍗曞崟鎹槑缁嗕俊鎭紝璇锋牳瀹烇紒"); + } + + + Db.BeginTran(); + //鍑忓皯鍏ュ簱鍗曟槑缁嗘暟閲� 鍒ゆ柇宸茬粍鏁伴噺鏄惁涓�0 鍐嶅垽鏂畬鎴愭暟閲忔槸鍚︿负0 + noticeDetail.FactQty -= bind.Qty; + //鍒ゆ柇宸茬粍鏁伴噺鏄惁涓�0 + if (noticeDetail.FactQty == 0) + { + //鍒ゆ柇鏄惁鏈夊畬鎴愭暟閲� + if (noticeDetail.CompleteQty == 0) + { + noticeDetail.Status = "0"; //鍏ュ簱鍗曟槑缁嗙姸鎬� + notice.Status = "0"; //鍏ュ簱鍗曟�诲崟鐘舵�� + } + } + Db.Updateable(noticeDetail).ExecuteCommand(); + Db.Updateable(notice).ExecuteCommand(); + + + // 娓呴櫎鎵樼洏缁戝畾涓婁俊鎭� + //ASNNo,ASNDetailNo,Qty,FullQty,LotNo,LotText,SupplierLot,IsDel,UpdateTime,UpdateUser + bind.ASNNo = ""; //鍏ュ簱鍗曞彿 + bind.ASNDetailNo = 0; //鍏ュ簱鍗曟槑缁唅d + bind.Qty = 0; //鏁伴噺 + bind.FullQty = 0; //鏁存墭鏁伴噺 + bind.LotNo = ""; //鎵规 + bind.LotText = ""; //鎵规鎻忚堪 + bind.SupplierLot = ""; //渚涜揣鎵规 + bind.IsDel = "1"; //鏄惁鍒犻櫎 + bind.UpdateTime = Db.GetDate(); //淇敼鏃堕棿 + bind.UpdateUser = model.CreateUser; //淇敼浜� + if (isNullLocat == 1) + { + bind.LocatNo = ""; //鍌ㄤ綅鍦板潃 + bind.RoadwayNo = ""; //鎵�灞炲贩閬� + bind.WareHouseNo = ""; //鎵�灞炰粨搴� + //淇敼鍌ㄤ綅淇℃伅鐘舵�� + locat.Status = "0"; //鍌ㄤ綅鐘舵�� 0锛氱┖鍌ㄤ綅 + Db.Updateable(locat).ExecuteCommand(); + } + Db.Updateable(bind).ExecuteCommand(); + + //淇敼鎵樼洏淇℃伅鐘舵�� + pallet.Status = "0"; //0锛氭湭浣跨敤 + Db.Updateable(pallet).ExecuteCommand(); + + Db.CommitTran(); + return strMsg; + } + catch (Exception ex) + { + Db.RollbackTran(); + throw ex; + } + } + // 骞冲簱瀹屾垚鍏ュ簱鎿嶄綔 public string CompleteInStock(PalletBindVm model) { - //string sttr = "select * from BllArrivalNoticeDetail where id in (select ASNDetailNo from BllBoxInfo where ASNNo = 'ASN2023042400002' and PalletNo = 'T2300004' and Status = '1');"; - //var noticeDetaila = Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sttr); - string strMsg = ""; string sqlString = string.Empty; try @@ -767,7 +659,7 @@ #region 鏄惁鍥炴祦鍏ュ簱 int iscount = 0; //搴撳瓨鏄庣粏淇℃伅 - var stockDetail = Db.Queryable<DataStockDetail>().Where(a => a.IsDel == "0" && a.PalletNo == model.PalletNo).ToList(); + var stockDetail = Db.Queryable<DataStockDetail>().Where(a => a.IsDel == "0" && a.PalletNo == model.PalletNo).ToList(); //楠岃瘉搴撳瓨鏄惁鎷ユ湁璇ユ墭淇℃伅 if (stockDetail != null && stockDetail.Count > 0) { @@ -780,6 +672,15 @@ } } iscount = 1; //鍥炴祦鍏ュ簱 + } + #endregion + + #region 鍦扮爜淇℃伅(鍌ㄤ綅淇℃伅) + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0" && w.WareHouseNo == "W02"); + if (storageLocat == null) + { + strMsg = "-1:鍌ㄤ綅淇℃伅涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!"; + return strMsg; } #endregion @@ -849,17 +750,6 @@ } #endregion - #region 浠诲姟 - //var task = Db.Queryable<LogTask>().First(t => t.IsDel == "0" && t.TaskNo == palletbind.TaskNo && t.Status == "0" || t.Status == "1"); - ////楠岃瘉浠诲姟淇℃伅鏄惁瀛樺湪 - //if (task == null) - //{ - // strMsg = "-1:浠诲姟淇℃伅涓嶅瓨鍦紝璇锋牳鏌�!"; - // return strMsg; - //} - - #endregion - #endregion Db.BeginTran();//寮�鍚簨鍔� @@ -887,7 +777,7 @@ strMsg = "-1:绠辩爜淇℃伅涓嶅瓨鍦紝璇锋牳鏌�!"; return strMsg; } - else + else { // 鏀瑰彉绠辨敮鍏崇郴琛ㄧ姸鎬侊細宸插叆搴� sqlString = $"Update BllBoxInfo set Status = '2' where PalletNo = '{model.PalletNo}' and ASNNo = '{model.ASNNo}' and Status = '1'"; @@ -896,7 +786,7 @@ pallQty = boxinfo2.Sum(w => w.Qty); //鍏ュ簱鍗曟槑缁嗗畬鎴愭暟閲忓鍔� noticeItem.CompleteQty += pallQty; - } + } //鍒ゆ柇鍏ュ簱鏁伴噺澧炲姞鍚庢槸鍚﹀ぇ浜庣瓑浜庡崟鎹暟閲� if (noticeItem.CompleteQty >= noticeItem.Qty) { @@ -955,7 +845,7 @@ sqlString = "select sum(qty) from BllBoxInfo where isdel = 0 and "; sqlString += $"BindNo = '{palletbindInfo.Id}'"; int inspectQty = Db.Ado.GetInt(sqlString); - + // 娣诲姞搴撳瓨鏄庣粏琛� detailModel = new DataStockDetail() { @@ -1032,6 +922,8 @@ //淇敼缁勬墭鐘舵�� palletbindInfo.Status = "2"; //2 鍏ュ簱瀹屾垚 + palletbindInfo.WareHouseNo = "W02";//鎵�灞炰粨搴� + palletbindInfo.LocatNo = model.LocatNo;//鍌ㄤ綅鍦板潃 palletbindInfo.UpdateTime = serverTime; palletbindInfo.UpdateUser = model.CreateUser; palletbindInfo.CompleteTime = serverTime; //瀹屾垚鏃堕棿 @@ -1197,7 +1089,12 @@ #endregion #endregion - } + } + storageLocat.Status = "1"; + storageLocat.UpdateTime= serverTime; //淇敼鏃堕棿 + storageLocat.UpdateUser = model.CreateUser; //淇敼浜� + //淇敼鍌ㄤ綅鐘舵�� + Db.Updateable(storageLocat).ExecuteCommand(); new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "骞冲簱鍏ュ簱", model.PalletNo, "瀹屾垚", $"鍦≒DA涓婂畬鎴愬崟鎹彿涓猴細{model.ASNNo}鐨勬墭鐩樼爜涓猴細{model.PalletNo}鐨勫钩搴撳叆搴撴搷浣�", (int)model.CreateUser); @@ -1361,7 +1258,7 @@ try { //鍏ュ簱涓� - var aSNNoList= Db.Ado.SqlQuery<string>($"SELECT DISTINCT ASNNo from BllPalletBind where IsDel=0 and Status=0 and PalletNo='{palletNo}' ").ToList(); + var aSNNoList = Db.Ado.SqlQuery<string>($"SELECT DISTINCT ASNNo from BllPalletBind where IsDel=0 and Status=0 and PalletNo='{palletNo}' ").ToList(); if (aSNNoList.Count <= 0) { //搴撳鎵樼洏鎴栧钩搴撴墭鐩� @@ -1418,7 +1315,7 @@ //鎷兼墭鍏ュ簱 public void CompleteInStockLing(PdaLingAsnVm model, int userId) { - try + try { if (string.IsNullOrWhiteSpace(model.AsnNo)) { @@ -1455,10 +1352,10 @@ foreach (var item in boxinfo) { if (!string.IsNullOrEmpty(item.PalletNo)) - { + { throw new Exception("-1:璇ョ鐮佸凡缁戝畾鍏朵粬鎵樼洏锛岃鍏堣В缁戞墭鐩�!"); } - bNum += item.Qty; + bNum += item.Qty; } if (bNum == boxinfo[0].FullQty) { @@ -1519,7 +1416,7 @@ //淇敼鍏ュ簱鍗曟�诲崟淇℃伅 arrival.Status = "2"; arrival.CompleteTime = serverTime; - arrival.UpdateUser =userId; + arrival.UpdateUser = userId; arrival.UpdateTime = serverTime; Db.Updateable(arrival).ExecuteCommand(); } @@ -1625,7 +1522,7 @@ #region 搴撳瓨鏄庣粏琛� var boxinfoItem = boxinfo.First(); - var detailModel = Db.Queryable<DataStockDetail>() .First(it => it.PalletNo == model.PalletNo && it.LotNo == arrivalnotice.LotNo + var detailModel = Db.Queryable<DataStockDetail>().First(it => it.PalletNo == model.PalletNo && it.LotNo == arrivalnotice.LotNo && it.SkuNo == arrivalnotice.SkuNo && it.Standard == arrivalnotice.Standard && it.IsDel == "0"); var stId = 0; if (detailModel == null || detailModel.Id == 0) @@ -1731,5 +1628,318 @@ throw ex; } } + + #region 浜у搧缁勬墭 + /// <summary> + /// 鏍规嵁绠辩爜鑾峰彇鏍囩绠辩爜淇℃伅 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model) + { + try + { + if (string.IsNullOrEmpty(model.BoxNo)) + { + throw new Exception("璇锋壂鎻忓绠辨潯鐮�!"); + } + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + if (models == null) + { + throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + } + return models; + } + catch (Exception ex) + { + throw ex; + } + } + + + public void BindPallet(PdaPalletBindVm model, int userId, string origin) + { + try + { + #region 鍒ゆ柇 + + if (string.IsNullOrEmpty(model.AsnNo)) + { + throw new Exception("-1:鍗曟嵁鍙蜂笉鍙负绌�!"); + } + if (model.AsnDetailId == null || model.AsnDetailId == 0) + { + throw new Exception("-1:鐗╂枡涓嶅彲涓虹┖!"); + } + if (string.IsNullOrEmpty(model.PalletNo)) + { + throw new Exception("-1:鎵樼洏鍙蜂笉鍙负绌�!"); + } + //鍒ゆ柇鐗╂枡鏁伴噺鏄惁涓�0 涓�0鍒ゆ柇绠辩爜淇℃伅 涓嶄负0缁х画 + if (model.SkuQty == 0) + { + if (string.IsNullOrEmpty(model.BoxNo)) + { + throw new Exception("-1:绠辩爜淇℃伅涓嶅彲涓虹┖!"); + } + + if (model.IsContinue == "1") + { + if (string.IsNullOrWhiteSpace(model.TailBoxNo)) + { + throw new Exception("-1:寮�鍚繛缁粍鎵樻椂锛屽熬绠辩爜淇℃伅涓嶅彲涓虹┖!"); + } + + } + } + #endregion + + Db.BeginTran(); + + //鎵樼洏鏄惁瀛樺湪 + var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); + if (pallet == null) + { + throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�"); + } + // 楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦� + var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo); + if (detail == null) + { + throw new Exception("-1:褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); + } + #region 鍖呰 + var package = Db.Queryable<SysPackag>().Where(m => m.IsDel == "0"); + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); + var pack = package.First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); + if (pack == null) + { + throw new Exception("-1:鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!"); + } + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + if (pack.L5Num.HasValue) + { + pNum = (int)pack.L5Num; + bNum = (int)pack.L4Num; + } + else if (pack.L4Num.HasValue) + { + pNum = (int)pack.L4Num; + bNum = (int)pack.L3Num; + } + else if (pack.L3Num.HasValue) + { + pNum = (int)pack.L3Num; + bNum = (int)pack.L2Num; + } + else if (pack.L2Num.HasValue) + { + pNum = (int)pack.L2Num; + bNum = (int)pack.L1Num; + } + else if (pack.L1Num.HasValue) + { + pNum = (int)pack.L1Num; + bNum = (int)pack.L1Num; + } + if (pNum == 0 || bNum == 0) + { + throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒"); + } + #endregion + + #region 楠岃瘉鏄惁鍏佽绔嬪簱鍚屾墭鐩樹笉鍚岀墿鏂欏叆搴撴垨鍚屾墭鐩樺悓鐗╂枡涓嶅悓鎵规鍏ュ簱 + var palletBind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNNo == model.AsnNo && m.PalletNo == model.PalletNo && m.ASNDetailNo != model.AsnDetailId); + if (palletBind != null) + { + var box = Db.Queryable<BllBoxInfo>().First(m => m.IsDel == "0" && m.BindNo == palletBind.Id && m.BitBoxMark == "0"); + if (box != null && (box.SkuNo != detail.SkuNo || box.LotNo != detail.LotNo)) + { + var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun045"); + if (funSetting == null || funSetting.IsEnable == "OFF") + { + throw new Exception($"涓嶅厑璁哥珛搴撳悓鎵樼洏涓嶅悓鐗╂枡鍏ュ簱鎴栧悓鎵樼洏涓嶅悓鎵规鍏ュ簱锛�"); + } + } + } + #endregion + var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailId && m.PalletNo == model.PalletNo); + var bindId = 0; + if (bind == null) + { + bind = new BllPalletBind + { + ASNNo = model.AsnNo, + ASNDetailNo = (int)model.AsnDetailId, + PalletNo = model.PalletNo, + PalletNo2 = "", + PalletNo3 = "", + Qty = model.SkuQty, + FullQty = pNum, + Status = "0", + Type = "0", + LotNo = detail.LotNo, + LotText = detail.LotText, + SupplierLot = "", + InspectMark = "0", + BitPalletMark = "1", + IsBale = "0", + IsBelt = "0", + CreateUser = userId + }; + if (model.SkuQty > pNum) + { + throw new Exception($"缁戝畾澶辫触锛寋model.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); + } + // 鎻掑叆鎵樼洏缁戝畾琛� + bindId = Db.Insertable(bind).ExecuteReturnIdentity(); + } + else + { + if (bind.Status != "0") + { + throw new Exception("-1:褰撳墠鎵樼洏姝e湪鎵ц涓紝缁戝畾澶辫触锛岃鏍稿疄!"); + } + bindId = bind.Id; + } + + #region 绠辩爜淇℃伅 + var msgStr = $"绠卞彿涓簕model.BoxNo}"; + var boxInfoList = new List<BllBoxInfo>(); + if (model.SkuQty == 0) + { + //棣栫 + var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo && m.Status == "0").ToList(); + if (boxInfo.Count == 0) + { + throw new Exception("-1:绠辩爜淇℃伅涓嶅瓨鍦�!"); + } + boxInfoList.AddRange(boxInfo); + //鏄惁杩炵画缁勬墭 + if (model.IsContinue == "1") + { + //灏剧 + var boxInfo2 = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo && m.Status == "0").ToList(); + if (boxInfo2.Count == 0) + { + throw new Exception("-1:灏剧鐮佷俊鎭笉瀛樺湪!"); + } + boxInfoList.AddRange(boxInfo2); + var sql = $"select * from BllBoxInfo where IsDel = '0' and Status = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}'; "; + var list = Db.Ado.SqlQuery<BllBoxInfo>(sql); + boxInfoList.AddRange(list); + msgStr += $"灏剧鍙蜂负{model.TailBoxNo}"; + } + } + #endregion + + // 鏇存敼绠辨敮鍏崇郴琛� + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + if (model.SkuQty == 0) + { + var boxGroup = boxInfoList.GroupBy(m => m.BoxNo).ToList(); + foreach (var g in boxGroup) + { + var boxFullQty = 0;//绠卞唴鎬绘暟閲� + foreach (var box in g) + { + if (box.BindNo != null && box.BindNo != 0) + { + continue; + } + //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎 + if (box.SkuNo != detail.SkuNo || box.LotNo != detail.LotNo) + { + throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); + } + + box.ASNNo = model.AsnNo; + box.ASNDetailNo = model.AsnDetailId; + box.BindNo = bindId; + box.PalletNo = model.PalletNo; + box.Status = "1"; + box.CompleteTime = DateTime.Now; + box.UpdateTime = DateTime.Now; + box.UpdateUser = userId; + + factQty += box.Qty; + boxFullQty += box.Qty; + } + if (boxFullQty > bNum) + { + throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒"); + } + } + Db.Updateable(boxInfoList).ExecuteCommand(); + + // 鏇存柊鎵樼洏缁戝畾琛� + bind.Qty += factQty; + } + if (bind.FullQty < bind.Qty) + { + throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); + } + + if (bind.FullQty == bind.Qty) + { + bind.BitPalletMark = "0"; + } + if (bind.Qty > pNum) + { + throw new Exception($"缁戝畾澶辫触锛寋bind.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); + } + Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); + + // 鏇存敼鍏ュ簱鍗曟槑缁嗗凡缁勬暟閲� + var sqlString = string.Empty; + if (factQty == 0) + { + sqlString += $"update BllArrivalNoticeDetail set FactQty = FactQty + '{bind.Qty}' where id = '{model.AsnDetailId}';"; + } + else + { + sqlString += $"update BllArrivalNoticeDetail set FactQty = FactQty + '{factQty}' where id = '{model.AsnDetailId}';"; + } + + Db.Ado.ExecuteCommand(sqlString); + + // 鏇存敼鍏ュ簱鍗曞強鍏ュ簱鏄庣粏鐘舵�� + if (detail.Status == "0") + { + var sqlString2 = string.Empty; + sqlString2 += $"update BllArrivalNotice set Status = '1',CompleteTime= getDate() where ASNNo = '{model.AsnNo}' and Status ='0';"; + sqlString2 += $"update BllArrivalNoticeDetail set Status = '1',CompleteTime= getDate() where id = '{model.AsnDetailId}' and Status ='0';"; + Db.Ado.ExecuteCommand(sqlString2); + } + + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{model.PalletNo}';"; + //娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹� + sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);"; + Db.Ado.ExecuteCommand(sqlStr); + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}銆亄msgStr}鐨勭粍鐩樹俊鎭�", userId); + + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw ex; + } + } + #endregion } } -- Gitblit v1.8.0