From 2056ae6f3d8243b0555f437ec6d214666d5bde53 Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期一, 02 六月 2025 09:43:19 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 4623 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 2,832 insertions(+), 1,791 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index 152ebb3..d69c86e 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs @@ -21,6 +21,10 @@ using Model.ModelDto.DataDto; 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 { @@ -28,17 +32,1610 @@ { private static readonly SqlSugarScope Db = DataContext.Db; - // 鑾峰彇鍗曟嵁鍒楄〃 - public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model) + #region JC34 + + /// <summary> + /// 缁戝畾鎵樼洏 璐存爣鐗╂枡 + /// </summary> + /// <param name="model"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void BindPalletPasteCode(PdaPalletBindVm model, int userId) + { + try + { + #region 鍒ゆ柇 + //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 8锛氱敓浜ч��鏂欏叆搴� + + + if (string.IsNullOrEmpty(model.AsnNo)) + { + throw new Exception("鍗曟嵁鍙蜂笉鍙负绌�!"); + } + if (model.AsnDetailId == null || model.AsnDetailId == 0) + { + throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!"); + } + if (string.IsNullOrEmpty(model.PalletNo)) + { + throw new Exception("鎵樼洏鍙蜂笉鍙负绌�!"); + } + //鏍规嵁鍗曟嵁鍙疯幏鍙栧叆搴撳崟鎬诲崟 + var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo); + if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2") + { + throw new Exception("璇ュ崟鎹凡鍏冲崟!"); + } + if (string.IsNullOrEmpty(model.LotNo)) + { + throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!"); + } + else + { + //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆� + int indexOfDash = model.LotNo.IndexOf("-"); + if (indexOfDash != -1) + { + model.LotNo = model.LotNo.Substring(indexOfDash + 1); + } + else + { + throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!"); + } + } + + //鍒ゆ柇绠辩爜淇℃伅 + if (string.IsNullOrEmpty(model.BoxNo)) + { + throw new Exception("绠辩爜淇℃伅涓嶅彲涓虹┖!"); + } + //鏄惁杩炵画缁勬墭 0锛氬惁 1锛氭槸 + if (model.IsContinue == "1") + { + if (string.IsNullOrWhiteSpace(model.TailBoxNo)) + { + throw new Exception("寮�鍚繛缁粍鎵樻椂锛屽熬绠辩爜淇℃伅涓嶅彲涓虹┖!"); + } + } + + //鎵樼洏淇℃伅鏄惁瀛樺湪 + 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 && m.LotNo.Contains(model.LotNo)); + if (detail == null) + { + throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); + } + //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶� + var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); + if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo)) + { + throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝涓嶅彲缁勬墭锛岃鏍稿疄锛�"); + } + + #endregion + + //寮�鍚簨鍔� + Db.BeginTran(); + //褰撳墠鏃堕棿 + var comTime = DateTime.Now; + + #region 鍖呰 + + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + + //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 + new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum); + + #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 || !detail.LotNo.Contains(box.LotNo))) + { + var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun045"); + if (funSetting == null || funSetting.IsEnable == "OFF") + { + throw new Exception($"涓嶅厑璁哥珛搴撳悓鎵樼洏涓嶅悓鐗╂枡鍏ュ簱鎴栧悓鎵樼洏涓嶅悓鎵规鍏ュ簱锛�"); + } + } + } + #endregion + + #region 绠辩爜淇℃伅 + var msgStr = $"绠卞彿涓簕model.BoxNo}"; + var boxInfoList = new List<BllBoxInfo>(); + + //棣栫 + var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).ToList(); + if (boxInfo.Count == 0) + { + throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + } + boxInfoList.AddRange(boxInfo); + //鏄惁杩炵画缁勬墭 + if (model.IsContinue == "1") + { + //灏剧 + var boxInfo2 = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo).ToList(); + if (boxInfo2.Count == 0) + { + throw new Exception("灏剧鐮佷俊鎭笉瀛樺湪!"); + } + boxInfoList.AddRange(boxInfo2); + var sql = $"select * from BllBoxInfo where IsDel = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}'; "; + var list = Db.Ado.SqlQuery<BllBoxInfo>(sql); + boxInfoList.AddRange(list); + msgStr += $"灏剧鍙蜂负{model.TailBoxNo}"; + } + //缁戝畾绠辨�绘暟閲� + //model.SkuQty = boxInfoList.Sum(s => s.Qty); + //鍜岄�夋嫨鐨勬壒娆″悓鎵规鐨勭鐮佷俊鎭� + var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList(); + //鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜淇℃伅锛堟嫾绠辨壒娆★級 + var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList(); + #endregion + + if (sameBoxInfoList.Count <= 0) + { + throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + } + else + { + #region 鎵樼洏缁戝畾淇℃伅 + var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailId && m.PalletNo == model.PalletNo && m.LotNo == model.LotNo); + 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 = "2",//鍏ュ簱瀹屾垚 + Type = "0", + LotNo = model.LotNo, + LotText = detail.LotText, + SupplierLot = detail.SupplierLot, + //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + BitPalletMark = "1", + IsBale = "0", + IsBelt = "0", + CreateUser = userId, + Demo = model.Demo, + }; + // 鎻掑叆鎵樼洏缁戝畾琛� + bindId = Db.Insertable(bind).ExecuteReturnIdentity(); + } + else + { + bindId = bind.Id; + bind.Qty += model.SkuQty; + } + + #endregion + + #region 搴撳瓨鏄庣粏鍜岃川妫�淇℃伅 + //鑾峰彇璇ユ壒娆℃渶缁堣川妫�缁撴灉 + BllQualityInspect quality = new BllQualityInspect(); + //鍒ゆ柇鏄惁涓洪��璐у叆搴撳崟 + if (notice.Type == "3") + { + quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.ASNNo == detail.ASNNo && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); + } + else + { + quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); + } + var tags = "0"; + if (notice.Type == "3" || notice.Type == "4") + { + tags = "1"; + } + + // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� + var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo); + var sdId1 = 0; + if (sd1 != null) + { + sdId1 = sd1.Id; + // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 + sd1.Qty = bind.Qty; + sd1.CompleteTime = comTime; + sd1.UpdateUser = userId; + sd1.UpdateTime = comTime; + + Db.Updateable(sd1).ExecuteCommand(); + } + else + { + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + LotNo = bind.LotNo, + LotText = bind.LotText, + SupplierLot = bind.SupplierLot, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + Qty = bind.Qty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + ASNNo = bind.ASNNo, + ASNDetailNo = bind.ASNDetailNo, + WareHouseNo = "",//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = "",//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = bind.PalletNo, + PalletNo2 = bind.PalletNo2, + PalletNo3 = bind.PalletNo3, + PalletTags = tags, + CompleteTime = comTime, + ProductionTime = bind.ProductionTime, + ExpirationTime = bind.ExpirationTime, + Status = "0", + InspectMark = bind.InspectMark, + InspectStatus = sku.IsInspect, + BitPalletMark = bind.BitPalletMark, + PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� + IsBale = bind.IsBale, + IsBelt = bind.IsBelt, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + + //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� //0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 + if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7") + { + sd1.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 + sd1.OwnerName = notice.CustomerName;//璐т富鍚嶇О + } + else if (notice.Type == "1" || notice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 + { + sd1.SupplierNo = notice.CustomerNo;//渚涘簲鍟嗙紪鐮� + sd1.SupplierName = notice.CustomerName;//渚涘簲鍟嗗悕绉� + } + if (quality != null) + { + //淇敼鍚堟牸涓嶅悎鏍兼暟閲� + if (quality.IsQualified == "1") //鍚堟牸 + { + //澧炲姞鍚堟牸鏁伴噺 + quality.PassQty += bind.Qty; + sd1.InspectStatus = "1"; + } + else if (quality.IsQualified == "0") //涓嶅悎鏍� + { + //澧炲姞涓嶅悎鏍兼暟閲� + quality.FailQty += bind.Qty; + sd1.InspectStatus = "2"; + } + Db.Updateable(quality).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 + } + //娣诲姞搴撳瓨鏄庣粏 + sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + } + #endregion + + // 鏇存敼绠辨敮鍏崇郴琛� + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + var isSample = "0";//鏄惁鍙栨牱 + var sampleQty = 0m;//鍙栨牱鏁伴噺 + + //鏍囩缁勬墭 + var boxGroup = sameBoxInfoList.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; + } + //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎 + if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo) + { + throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); + } + + box.ASNNo = model.AsnNo; + box.ASNDetailNo = model.AsnDetailId; + box.BindNo = bindId; + box.PalletNo = model.PalletNo; + box.Status = "2"; + //box.InspectMark = model.IsSample; //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + //box.SamplingQty = 0; //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + 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; + if (box.InspectMark == "1") //鍒ゆ柇鏄惁鍙栨牱 + { + isSample = "1"; + sampleQty += (decimal)box.SamplingQty; + } + + #region 搴撳瓨绠辩爜鏄庣粏 + var box2 = new DataBoxInfo() + { + StockDetailId = sdId1, + BindNo = bind.Id, + 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(); + + // 鏇存柊鎵樼洏缁戝畾琛� + bind.Qty += factQty; + + if (bind.FullQty < bind.Qty) + { + throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); + } + + if (bind.FullQty == bind.Qty) + { + bind.BitPalletMark = "0"; + sd1.BitPalletMark = "0"; + } + if (bind.Qty > pNum) + { + throw new Exception($"缁戝畾澶辫触锛寋bind.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); + } + + if (isSample == "1") + { + bind.InspectMark = "1"; + bind.SamplingQty = bind.SamplingQty == null ? sampleQty : bind.SamplingQty + sampleQty; + } + Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); + + #region 鍏ュ簱鍗曞強鏄庣粏 + detail.FactQty += factQty;//宸茬粍鏁伴噺 + detail.CompleteQty += factQty;//瀹屾垚鏁伴噺 + if (isSample == "1") //鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�兼敼涓哄垽鏂槸鍚﹀彇鏍� + { + detail.IsSampling = "1"; + } + detail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴� + if (detail.CompleteQty >= detail.Qty) + { + detail.Status = "2"; + detail.CompleteTime = comTime; + } + detail.UpdateUser = userId; + detail.UpdateTime = comTime; + //鏇存柊鍏ュ簱鍗曟槑缁� + Db.Updateable(detail).ExecuteCommand(); + + notice.UpdateUser = userId; + notice.UpdateTime = comTime; + if (notice.Status == "0") + { + notice.Status = "1"; + } + var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo && m.Status != "2"); + if (asnDetailNum == 0) + { + notice.Status = "2";//鎵ц瀹屾垚 + notice.CompleteTime = comTime;//瀹屾垚鏃堕棿 + } + //鏇存柊鍏ュ簱鍗� + Db.Updateable(notice).ExecuteCommand(); + #endregion + + #region 搴撳瓨鏄庣粏 + sd1.Qty = bind.Qty; + //鏇存敼搴撳瓨鏄庣粏鏁伴噺 + Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); + #endregion + + #region 搴撳瓨 + var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo); + if (dataStock != null) + { + dataStock.Qty += factQty; + + if (bind.InspectMark == "1") + { + dataStock.IsSampling = bind.InspectMark; + } + Db.Updateable(dataStock).ExecuteCommand(); + } + else + { + var stock = new DataStock() + { + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = bind.LotNo, + LotText = bind.LotText, + Qty = bind.Qty, + LockQty = 0, + FrozenQty = 0, + IsSampling = bind.InspectMark, + IsDel = "0", + CreateUser = userId, + CreateTime = comTime + }; + //缁存姢搴撳瓨璐т富淇℃伅 + if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 + { + stock.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 + stock.OwnerName = notice.CustomerName;//璐т富鍚嶇О + } + Db.Insertable(stock).ExecuteCommand(); + } + #endregion + + #region 璐ㄦ璇烽獙 + if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1") + { + var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); + if (qualityRequest == null) + { + string qcNo = new Common().GetMaxNo("QC"); + qualityRequest = new BllQualityInspectionRequest(); + qualityRequest.QcNo = qcNo; + qualityRequest.Status = "0"; + qualityRequest.SkuNo = sku.SkuNo; + qualityRequest.SkuName = sku.SkuName; + qualityRequest.LotNo = bind.LotNo; + qualityRequest.SupplierLot = bind.SupplierLot; + qualityRequest.Qty = detail.Qty; + qualityRequest.SamplingQty = 0; + qualityRequest.ASNNo = detail.ASNNo; + qualityRequest.CreateUser = userId; + qualityRequest.CreateTime = comTime; + //娣诲姞璐ㄦ璇烽獙鍗� + Db.Insertable(qualityRequest).ExecuteCommand(); + } + } + #endregion + } + + //鎷肩 + if (notBoxInfoList.Count > 0) + { + var gbox = notBoxInfoList.GroupBy(g => g.BoxNo).ToList(); + if (gbox.Count > 1) + { + throw new Exception("涓�涓墭鐩樹笂鍙兘鏈�1涓嫾绠�!"); + } + gbox = notBoxInfoList.GroupBy(g => g.LotNo).ToList(); + if (gbox.Count > 1) + { + throw new Exception("涓�涓鍐呮渶澶氳兘鏈�2涓笉鍚屾壒娆$墿鏂�!"); + } + var pinBoxNo = notBoxInfoList[0].BoxNo;//鎷肩绠辩爜 + var pinBoxLotNo = notBoxInfoList[0].LotNo;//鎷肩鎵规鍙� + //鎷肩鏁伴噺(鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜鏁伴噺) + decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty); + + var dataBoxList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == pinBoxNo && w.LotNo == pinBoxLotNo).ToList(); + if (dataBoxList.Count > 0)//宸叉湁搴撳瓨 + { + //鍘熸墭鐩樼粦瀹氫俊鎭� + var oldPalletBind = Db.Queryable<BllPalletBind>().First(w => w.Id == notBoxInfoList[0].BindNo); + //鍘熷叆搴撳崟鏄庣粏 + var oldAsnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.Id == oldPalletBind.ASNDetailNo); + //鍘熷叆搴撳崟 + var oldAsnNotice = Db.Queryable<BllArrivalNotice>().First(w => w.ASNNo == oldAsnDetail.ASNNo); + #region 鎵樼洏缁戝畾淇℃伅 + var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == oldAsnDetail.Id && m.PalletNo == model.PalletNo); + var bindId = 0; + if (bind == null) + { + bind = new BllPalletBind + { + ASNNo = oldAsnDetail.ASNNo, + ASNDetailNo = oldAsnDetail.Id, + PalletNo = model.PalletNo, + PalletNo2 = "", + PalletNo3 = "", + Qty = 0, + FullQty = pNum, + Status = "2",//鍏ュ簱瀹屾垚 + Type = "0", + LotNo = pinBoxLotNo, + LotText = oldAsnDetail.LotText, + SupplierLot = oldAsnDetail.SupplierLot, + //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + BitPalletMark = "1", + IsBale = "0", + IsBelt = "0", + CreateUser = userId, + Demo = model.Demo, + }; + // 鎻掑叆鎵樼洏缁戝畾琛� + bindId = Db.Insertable(bind).ExecuteReturnIdentity(); + } + else + { + bindId = bind.Id; + bind.Qty += pinBoxQty; + + Db.Updateable(bind).ExecuteCommand(); + } + #endregion + + // 鎻掑叆搴撳瓨鏄庣粏鏁版嵁 + var sd1 = new DataStockDetail() + { + LotNo = pinBoxLotNo, + LotText = notBoxInfoList[0].LotText, + SupplierLot = notBoxInfoList[0].SupplierLot, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + Qty = pinBoxQty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + ASNNo = oldPalletBind.ASNNo, + ASNDetailNo = oldPalletBind.ASNDetailNo, + WareHouseNo = "",//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = "",//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = bind.PalletNo, + PalletNo2 = bind.PalletNo2, + PalletNo3 = bind.PalletNo3, + PalletTags = "0", + CompleteTime = comTime, + ProductionTime = oldPalletBind.ProductionTime, + ExpirationTime = oldPalletBind.ExpirationTime, + Status = "0", + InspectMark = oldPalletBind.InspectMark, + InspectStatus = sku.IsInspect, + BitPalletMark = oldPalletBind.BitPalletMark, + PackagNo = oldAsnDetail.PackagNo, + IsBale = oldPalletBind.IsBale, + IsBelt = oldPalletBind.IsBelt, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� + if (oldAsnNotice.Type == "0" || oldAsnNotice.Type == "2" || oldAsnNotice.Type == "4" || oldAsnNotice.Type == "6" || oldAsnNotice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 + { + sd1.OwnerNo = oldAsnNotice.CustomerNo;//璐т富缂栫爜 + sd1.OwnerName = oldAsnNotice.CustomerName;//璐т富鍚嶇О + } + else if (oldAsnNotice.Type == "1" || oldAsnNotice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 + { + sd1.SupplierNo = oldAsnNotice.CustomerNo;//渚涘簲鍟嗙紪鐮� + sd1.SupplierName = oldAsnNotice.CustomerName;//渚涘簲鍟嗗悕绉� + } + //娣诲姞搴撳瓨鏄庣粏 + var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + foreach (var item in dataBoxList) + { + item.StockDetailId = sdId1;//搴撳瓨鏄庣粏id + item.BindNo = bind.Id;//鎵樼洏缁戝畾id + } + //鏇存柊搴撳瓨绠辨敮鏄庣粏琛� + Db.Updateable(dataBoxList).ExecuteCommand(); + + //鎵樼洏瑙g粦淇℃伅 + var palletUnbind = Db.Queryable<BllPalletUnbind>().First(w => w.IsDel == "0" && w.UpbindPalletNo == oldPalletBind.PalletNo && w.BoxNo == pinBoxNo); + if (palletUnbind == null) + { + throw new Exception("鎷肩鐨勬墭鐩樿В缁戜俊鎭笉瀛樺湪!"); + } + palletUnbind.BindPalletNo = model.PalletNo;//缁戝畾鎵樼洏鍙� + palletUnbind.UpdateTime = comTime; + palletUnbind.UpdateUser = userId; + //鏇存柊鎵樼洏瑙g粦缁戝畾琛ㄤ俊鎭� + Db.Updateable(palletUnbind).ExecuteCommand(); + } + else + { + string sql = $@"SELECT detail.* FROM BllArrivalNoticeDetail as detail + JOIN BllArrivalNotice as notice ON detail.ASNNo=notice.ASNNo + WHERE notice.IsDel='0' + AND ( notice.Status=0 or notice.Status=1 ) + AND detail.IsDel='0' + AND detail.LotNo='{pinBoxLotNo}' + AND detail.SkuNo='{sku.SkuNo}' + ORDER BY detail.CreateTime "; + //鎵惧埌鎷肩鍐呭叾浠栨壒娆℃墍灞炲叆搴撳崟鏄庣粏 + var arrDetail = Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sql).FirstOrDefault(); + if (arrDetail == null) + { + throw new Exception("鎷肩鍐呯墿鏂欐墍灞炲叆搴撳崟鏄庣粏涓嶅瓨鍦�!"); + } + //鎵惧埌鎷肩鍐呭叾浠栨壒娆℃墍灞炲叆搴撳崟 + var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo); + if (arrNotice == null) + { + throw new Exception("鎷肩鍐呯墿鏂欐墍灞炲叆搴撳崟涓嶅瓨鍦�!"); + } + #region 鎵樼洏缁戝畾淇℃伅 + var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == arrDetail.Id && m.PalletNo == model.PalletNo); + var bindId = 0; + if (bind == null) + { + bind = new BllPalletBind + { + ASNNo = arrDetail.ASNNo, + ASNDetailNo = arrDetail.Id, + PalletNo = model.PalletNo, + PalletNo2 = "", + PalletNo3 = "", + Qty = 0, + FullQty = pNum, + Status = "2",//鍏ュ簱瀹屾垚 + Type = "0", + LotNo = pinBoxLotNo, + LotText = arrDetail.LotText, + SupplierLot = arrDetail.SupplierLot, + //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + BitPalletMark = "1", + IsBale = "0", + IsBelt = "0", + CreateUser = userId, + Demo = model.Demo, + }; + // 鎻掑叆鎵樼洏缁戝畾琛� + bindId = Db.Insertable(bind).ExecuteReturnIdentity(); + } + else + { + bindId = bind.Id; + } + #endregion + + #region 搴撳瓨鏄庣粏鍜岃川妫�淇℃伅 + //鑾峰彇璇ユ壒娆℃渶缁堣川妫�缁撴灉 + BllQualityInspect quality = new BllQualityInspect(); + //鍒ゆ柇鏄惁涓洪��璐у叆搴撳崟 + if (arrNotice.Type == "3") + { + quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.ASNNo == arrDetail.ASNNo && a.SkuNo == arrDetail.SkuNo && a.LotNo == arrDetail.LotNo).OrderByDescending(a => a.CreateTime).First(); + } + else + { + quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.SkuNo == arrDetail.SkuNo && a.LotNo == arrDetail.LotNo).OrderByDescending(a => a.CreateTime).First(); + } + var tags = "0"; + if (arrNotice.Type == "3" || arrNotice.Type == "4") + { + tags = "1"; + } + + // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� + var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNDetailNo == arrDetail.Id && m.PalletNo == model.PalletNo); + var sdId1 = 0; + if (sd1 != null) + { + sdId1 = sd1.Id; + // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 + sd1.Qty = bind.Qty; + sd1.CompleteTime = comTime; + sd1.UpdateUser = userId; + sd1.UpdateTime = comTime; + + Db.Updateable(sd1).ExecuteCommand(); + } + else + { + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + LotNo = pinBoxLotNo, + LotText = notBoxInfoList[0].LotText, + SupplierLot = bind.SupplierLot, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + Qty = bind.Qty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + ASNNo = arrDetail.ASNNo, + ASNDetailNo = arrDetail.Id, + WareHouseNo = "",//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = "",//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = bind.PalletNo, + PalletNo2 = bind.PalletNo2, + PalletNo3 = bind.PalletNo3, + PalletTags = tags, + CompleteTime = comTime, + ProductionTime = bind.ProductionTime, + ExpirationTime = bind.ExpirationTime, + Status = "0", + InspectMark = bind.InspectMark, + InspectStatus = sku.IsInspect, + BitPalletMark = bind.BitPalletMark, + PackagNo = arrDetail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� + IsBale = bind.IsBale, + IsBelt = bind.IsBelt, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + + //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� + if (arrNotice.Type == "0" || arrNotice.Type == "2" || arrNotice.Type == "4" || arrNotice.Type == "6" || arrNotice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 + { + sd1.OwnerNo = arrNotice.CustomerNo;//璐т富缂栫爜 + sd1.OwnerName = arrNotice.CustomerName;//璐т富鍚嶇О + } + else if (arrNotice.Type == "1" || arrNotice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 + { + sd1.SupplierNo = arrNotice.CustomerNo;//渚涘簲鍟嗙紪鐮� + sd1.SupplierName = arrNotice.CustomerName;//渚涘簲鍟嗗悕绉� + } + if (quality != null) + { + //淇敼鍚堟牸涓嶅悎鏍兼暟閲� + if (quality.IsQualified == "1") //鍚堟牸 + { + //澧炲姞鍚堟牸鏁伴噺 + quality.PassQty += bind.Qty; + sd1.InspectStatus = "1"; + } + else if (quality.IsQualified == "0") //涓嶅悎鏍� + { + //澧炲姞涓嶅悎鏍兼暟閲� + quality.FailQty += bind.Qty; + sd1.InspectStatus = "2"; + } + Db.Updateable(quality).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 + } + //娣诲姞搴撳瓨鏄庣粏 + sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + } + #endregion + + // 鏇存敼绠辨敮鍏崇郴琛� + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + var isSample = "0";//鏄惁鍙栨牱 + var sampleQty = 0m;//鍙栨牱鏁伴噺 + + //鏍囩缁勬墭 + var boxGroup = notBoxInfoList.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; + } + //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎 + if (box.SkuNo != arrDetail.SkuNo || box.LotNo != arrDetail.LotNo) + { + throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); + } + + box.ASNNo = arrDetail.ASNNo; + box.ASNDetailNo = arrDetail.Id; + box.BindNo = bindId; + box.PalletNo = model.PalletNo; + box.Status = "2"; + //box.InspectMark = model.IsSample; //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + //box.SamplingQty = 0; //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + 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; + if (box.InspectMark == "1") //鍒ゆ柇鏄惁鍙栨牱 + { + isSample = "1"; + sampleQty += (decimal)box.SamplingQty; + } + + #region 搴撳瓨绠辩爜鏄庣粏 + var box2 = new DataBoxInfo() + { + StockDetailId = sdId1, + BindNo = bind.Id, + 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(); + + // 鏇存柊鎵樼洏缁戝畾琛� + bind.Qty += factQty; + + if (bind.FullQty < bind.Qty) + { + throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); + } + + if (bind.FullQty == bind.Qty) + { + bind.BitPalletMark = "0"; + sd1.BitPalletMark = "0"; + } + if (bind.Qty > pNum) + { + throw new Exception($"缁戝畾澶辫触锛寋bind.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); + } + + if (isSample == "1") + { + bind.InspectMark = "1"; + bind.SamplingQty = bind.SamplingQty == null ? sampleQty : bind.SamplingQty + sampleQty; + } + Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); + + #region 鍏ュ簱鍗曞強鏄庣粏 + arrDetail.FactQty += factQty;//宸茬粍鏁伴噺 + arrDetail.CompleteQty += factQty;//瀹屾垚鏁伴噺 + if (isSample == "1") //鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�兼敼涓哄垽鏂槸鍚﹀彇鏍� + { + arrDetail.IsSampling = "1"; + } + arrDetail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴� + if (arrDetail.CompleteQty >= arrDetail.Qty) + { + arrDetail.Status = "2"; + arrDetail.CompleteTime = comTime; + } + arrDetail.UpdateUser = userId; + arrDetail.UpdateTime = comTime; + //鏇存柊鍏ュ簱鍗曟槑缁� + Db.Updateable(arrDetail).ExecuteCommand(); + + arrNotice.UpdateUser = userId; + arrNotice.UpdateTime = comTime; + if (arrNotice.Status == "0") + { + arrNotice.Status = "1"; + } + var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == arrDetail.ASNNo && m.Status != "2"); + if (asnDetailNum == 0) + { + arrNotice.Status = "2";//鎵ц瀹屾垚 + arrNotice.CompleteTime = comTime;//瀹屾垚鏃堕棿 + } + //鏇存柊鍏ュ簱鍗� + Db.Updateable(arrNotice).ExecuteCommand(); + #endregion + + #region 搴撳瓨鏄庣粏 + sd1.Qty = bind.Qty; + //鏇存敼搴撳瓨鏄庣粏鏁伴噺 + Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); + #endregion + + #region 搴撳瓨 + var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo); + if (dataStock != null) + { + dataStock.Qty += factQty; + + if (bind.InspectMark == "1") + { + dataStock.IsSampling = bind.InspectMark; + } + Db.Updateable(dataStock).ExecuteCommand(); + } + else + { + var stock = new DataStock() + { + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = bind.LotNo, + LotText = bind.LotText, + Qty = bind.Qty, + LockQty = 0, + FrozenQty = 0, + IsSampling = bind.InspectMark, + IsDel = "0", + CreateUser = userId, + CreateTime = comTime + }; + //缁存姢搴撳瓨璐т富淇℃伅 + if (arrNotice.Type == "0" || arrNotice.Type == "2" || arrNotice.Type == "4" || arrNotice.Type == "6" || arrNotice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 + { + stock.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 + stock.OwnerName = notice.CustomerName;//璐т富鍚嶇О + } + Db.Insertable(stock).ExecuteCommand(); + } + #endregion + + #region 璐ㄦ璇烽獙 + if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1") + { + var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); + if (qualityRequest == null) + { + string qcNo = new Common().GetMaxNo("QC"); + qualityRequest = new BllQualityInspectionRequest(); + qualityRequest.QcNo = qcNo; + qualityRequest.Status = "0"; + qualityRequest.SkuNo = sku.SkuNo; + qualityRequest.SkuName = sku.SkuName; + qualityRequest.LotNo = bind.LotNo; + qualityRequest.SupplierLot = bind.SupplierLot; + qualityRequest.Qty = arrDetail.Qty; + qualityRequest.SamplingQty = 0; + qualityRequest.ASNNo = arrDetail.ASNNo; + qualityRequest.CreateUser = userId; + qualityRequest.CreateTime = comTime; + //娣诲姞璐ㄦ璇烽獙鍗� + Db.Insertable(qualityRequest).ExecuteCommand(); + } + } + #endregion + } + } + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + 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 e) + { + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + /// <summary> + /// 缁戝畾鎵樼洏 涓嶈创鏍囩墿鏂� + /// </summary> + /// <param name="model"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void BindPalletNoPasteCode(PdaPalletBindVm model, int userId) + { + try + { + Db.BeginTran(); + #region 鍒ゆ柇 + + //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 8锛氱敓浜ч��鏂欏叆搴� + + + if (string.IsNullOrEmpty(model.AsnNo)) + { + throw new Exception("鍗曟嵁鍙蜂笉鍙负绌�!"); + } + if (model.AsnDetailId == null || model.AsnDetailId == 0) + { + throw new Exception("鐗╂枡涓嶅彲涓虹┖!"); + } + if (string.IsNullOrEmpty(model.PalletNo)) + { + throw new Exception("鎵樼洏鍙蜂笉鍙负绌�!"); + } + if (model.SkuQty < 0) + { + throw new Exception("鐗╂枡鏁伴噺涓嶈兘灏忎簬0!"); + } + //鏍规嵁鍗曟嵁鍙疯幏鍙栧叆搴撳崟鎬诲崟 + var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo); + if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2") + { + throw new Exception("璇ュ崟鎹凡鍏冲崟!"); + } + + if (string.IsNullOrEmpty(model.LotNo)) + { + throw new Exception("鐗╂枡鎵规涓嶄负绌�!"); + } + else + { + //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆� + int indexOfDash = model.LotNo.IndexOf("-"); + if (indexOfDash != -1) + { + model.LotNo = model.LotNo.Substring(indexOfDash + 1); + } + else + { + throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!"); + } + } + + //鎵樼洏鏄惁瀛樺湪 + 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 && m.LotNo.Contains(model.LotNo)); + if (detail == null) + { + throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); + } + //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶� + var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); + if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo)) + { + throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝璇锋牳瀹烇紒"); + } + //if (stockDetail != null && (stockDetail.SkuNo != detail.SkuNo || stockDetail.LotNo != model.LotNo)) + //{ + // throw new Exception("璇ユ墭鐩樺湪搴撳瓨宸叉湁鍏跺畠鐗╂枡鎵规淇℃伅锛岃鏍稿疄锛�"); + //} + + #endregion + + #region 鍖呰 + + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); + //var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿 + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 + new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum); + + + #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 || !detail.LotNo.Contains(box.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 comTime = DateTime.Now; + + #region 缁勬墭淇℃伅 + + var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailId && m.PalletNo == model.PalletNo); + var bindId = 0; + if (bind == null) + { + DateTime? pTime = null;//鐢熶骇鏃ユ湡 + DateTime? eTime = null;//澶辨晥鏃ユ湡 + if (!string.IsNullOrWhiteSpace(detail.Lot1)) + { + pTime = DateTime.Parse(detail.Lot1); + } + if (!string.IsNullOrWhiteSpace(detail.Lot2)) + { + eTime = DateTime.Parse(detail.Lot2); + } + + + bind = new BllPalletBind + { + ASNNo = model.AsnNo, + ASNDetailNo = (int)model.AsnDetailId, + PalletNo = model.PalletNo, + + Qty = model.SkuQty, + FullQty = pNum, + Status = "2",//鍏ュ簱瀹屾垚 + Type = "0", + LotNo = model.LotNo, + LotText = detail.LotText, + SupplierLot = detail.SupplierLot, + //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + ProductionTime = pTime, + ExpirationTime = eTime, + BitPalletMark = "1", + IsBale = "0", + IsBelt = "0", + CreateUser = userId, + Demo = model.Demo, + + }; + // 鎻掑叆鎵樼洏缁戝畾琛� + bindId = Db.Insertable(bind).ExecuteReturnIdentity(); + } + else + { + bindId = bind.Id; + bind.Qty += model.SkuQty; + } + if (bind.Qty < 0) + { + throw new Exception("缁勬墭鏁伴噺涓嶈兘灏忎簬0"); + } + + #endregion + + #region 搴撳瓨鏄庣粏 + //鑾峰彇璇ユ壒娆℃渶缁堣川妫�缁撴灉 + BllQualityInspect quality = new BllQualityInspect(); + //鍒ゆ柇鏄惁涓洪��璐у叆搴撳崟 + if (notice.Type == "3") + { + quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.ASNNo == detail.ASNNo && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); + } + else + { + quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); + } + var tags = "0"; + if (notice.Type == "3" || notice.Type == "4") + { + tags = "1"; + } + //楠岃瘉搴撳瓨鎵樼洏鏄惁鏈夎创鏍囩墿鏂� + var skuStr = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && m.IsPasteCode == "1").Select(m => m.SkuNo).ToList(); + var sdHave = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && skuStr.Contains(m.SkuNo)); + if (sdHave>0) + { + throw new Exception("褰撳墠鎵樼洏鍚湁璐存爣鐗╂枡淇℃伅锛屼笉鑳界粍鎵�"); + } + // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� + var sd1 = Db.Queryable<DataStockDetail>() + .First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo && m.SkuNo == detail.SkuNo && m.LotNo == bind.LotNo); + var sdId1 = 0; + if (sd1 != null) + { + sdId1 = sd1.Id; + // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 + sd1.Qty = bind.Qty; + sd1.CompleteTime = comTime; + sd1.UpdateUser = userId; + sd1.UpdateTime = comTime; + + Db.Updateable(sd1).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 + } + else + { + string inspectStatusStr = "0"; + if (sku.IsInspect == "1") + { + inspectStatusStr = "1"; + } + + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + LotNo = bind.LotNo, + LotText = bind.LotText, + SupplierLot = bind.SupplierLot, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + Qty = bind.Qty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + ASNNo = bind.ASNNo, + ASNDetailNo = bind.ASNDetailNo, + WareHouseNo = "",//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = "",//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = bind.PalletNo, + PalletNo2 = bind.PalletNo2, + PalletNo3 = bind.PalletNo3, + PalletTags = tags, + CompleteTime = comTime, + ProductionTime = bind.ProductionTime, + ExpirationTime = bind.ExpirationTime, + Status = "0", + InspectMark = bind.InspectMark, + InspectStatus = inspectStatusStr, + BitPalletMark = bind.BitPalletMark, + PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� + IsBale = bind.IsBale, + IsBelt = bind.IsBelt, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + + //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� //0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 + if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7") + { + sd1.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 + sd1.OwnerName = notice.CustomerName;//璐т富鍚嶇О + } + else if (notice.Type == "1" || notice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 + { + sd1.SupplierNo = notice.CustomerNo;//渚涘簲鍟嗙紪鐮� + sd1.SupplierName = notice.CustomerName;//渚涘簲鍟嗗悕绉� + } + if (quality != null) + { + //淇敼鍚堟牸涓嶅悎鏍兼暟閲� + if (quality.IsQualified == "1") //鍚堟牸 + { + //澧炲姞鍚堟牸鏁伴噺 + quality.PassQty += bind.Qty; + sd1.InspectStatus = "1"; + } + else if (quality.IsQualified == "0") //涓嶅悎鏍� + { + //澧炲姞涓嶅悎鏍兼暟閲� + quality.FailQty += bind.Qty; + sd1.InspectStatus = "2"; + } + Db.Updateable(quality).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 + } + //娣诲姞搴撳瓨鏄庣粏 + sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + } + #endregion + + #region 鏇存敼缁勬墭淇℃伅 + + var isSample = "0";//鏄惁鍙栨牱 + var sampleQty = 0m;//鍙栨牱鏁伴噺 + + + //if (bind.FullQty < bind.Qty && isTextTable == 0) + if (bind.FullQty < bind.Qty) + { + throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); + } + + if (bind.FullQty == bind.Qty) + { + bind.BitPalletMark = "0"; + sd1.BitPalletMark = "0"; + } + //if (bind.Qty > pNum && isTextTable == 0) + if (bind.Qty > pNum) + { + throw new Exception($"缁戝畾澶辫触锛寋bind.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); + } + + if (isSample == "1") + { + bind.InspectMark = "1"; + bind.SamplingQty = bind.SamplingQty == null ? sampleQty : bind.SamplingQty + sampleQty; + } + Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); + + #endregion + + #region 鍏ュ簱鍗曞強鏄庣粏 + decimal addQty = model.SkuQty; + + detail.FactQty += addQty;//宸茬粍鏁伴噺 + detail.CompleteQty += addQty;//瀹屾垚鏁伴噺 + if (isSample == "1") //鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�兼敼涓哄垽鏂槸鍚﹀彇鏍� + { + detail.IsSampling = "1"; + } + detail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴� + if (detail.CompleteQty >= detail.Qty) + { + detail.Status = "2"; + detail.CompleteTime = comTime; + } + detail.UpdateUser = userId; + detail.UpdateTime = comTime; + //鏇存柊鍏ュ簱鍗曟槑缁� + Db.Updateable(detail).ExecuteCommand(); + + notice.UpdateUser = userId; + notice.UpdateTime = comTime; + if (notice.Status == "0") + { + notice.Status = "1"; + } + var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>() + .Count(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo && m.Status != "2"); + if (asnDetailNum == 0) + { + notice.Status = "2"; + notice.CompleteTime = comTime;//瀹屾垚鏃堕棿 + } + //鏇存柊鍏ュ簱鍗� + Db.Updateable(notice).ExecuteCommand(); + #endregion + + #region 鏇存敼搴撳瓨鏄庣粏鏁伴噺 + + sd1.Qty = bind.Qty; + //鏇存敼搴撳瓨鏄庣粏鏁伴噺 + Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); + + #endregion + + #region 搴撳瓨 + var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo); + if (dataStock != null) + { + dataStock.Qty += model.SkuQty; + + + if (bind.InspectMark == "1") + { + dataStock.IsSampling = bind.InspectMark; + } + Db.Updateable(dataStock).ExecuteCommand(); + } + else + { + var stock = new DataStock() + { + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = bind.LotNo, + LotText = bind.LotText, + Qty = bind.Qty, + LockQty = 0, + FrozenQty = 0, + IsSampling = bind.InspectMark, + IsDel = "0", + CreateUser = userId, + CreateTime = comTime + }; + //缁存姢搴撳瓨璐т富淇℃伅 + if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 + { + stock.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 + stock.OwnerName = notice.CustomerName;//璐т富鍚嶇О + } + Db.Insertable(stock).ExecuteCommand(); + } + #endregion + + #region 璐ㄦ璇烽獙 + if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1") + { + var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); + if (qualityRequest == null) + { + string qcNo = new Common().GetMaxNo("QC"); + qualityRequest = new BllQualityInspectionRequest(); + qualityRequest.QcNo = qcNo; + qualityRequest.Status = "0"; + qualityRequest.SkuNo = sku.SkuNo; + qualityRequest.SkuName = sku.SkuName; + qualityRequest.LotNo = bind.LotNo; + qualityRequest.SupplierLot = bind.SupplierLot; + qualityRequest.Qty = detail.Qty; + qualityRequest.SamplingQty = 0; + qualityRequest.ASNNo = detail.ASNNo; + qualityRequest.CreateUser = userId; + qualityRequest.CreateTime = comTime; + //娣诲姞璐ㄦ璇烽獙鍗� + Db.Insertable(qualityRequest).ExecuteCommand(); + } + } + #endregion + + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + 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}鐨勭粍鐩樹俊鎭�", userId); + + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鑾峰彇闇�瑕佽创鏍囩鐨勫叆搴撳崟 鍗曟嵁鍙烽泦鍚� + /// </summary> + /// <returns></returns> + public List<string> GetPasteAsnNoStrList() + { + try + { + + var modelList = Db.Queryable<BllArrivalNoticeDetail>() + .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo ) + .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo ) + .Where((tb1, tb2, tb3) => tb1.IsDel == "0" && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1") && tb3.IsDel == "0" && tb3.IsPasteCode == "1") + .Select((tb1, tb2, tb3) => tb1.ASNNo).Distinct().ToList(); + + return modelList; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + /// <summary> + /// 鑾峰彇涓嶉渶瑕佽创鏍囩鐨勫叆搴撳崟 鍗曟嵁鍙烽泦鍚� + /// </summary> + /// <returns></returns> + public List<string> GetNoPasteAsnNoStrList() + { + try + { + + var modelList = Db.Queryable<BllArrivalNoticeDetail>() + .LeftJoin<BllArrivalNotice>((tb1, tb2) => tb1.ASNNo == tb2.ASNNo ) + .LeftJoin<SysMaterials>((tb1, tb2, tb3) => tb1.SkuNo == tb3.SkuNo ) + .Where((tb1, tb2, tb3) => tb1.IsDel == "0" && tb2.IsDel == "0" && (tb2.Status == "0" || tb2.Status == "1") && tb3.IsDel == "0" && tb3.IsPasteCode == "0") + .Select((tb1, tb2, tb3) => tb1.ASNNo).Distinct().ToList(); + + return modelList; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧崟鎹槑缁嗗垪琛� + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public List<ArrivalNoticeDetailDto> GetBindArrivalNoticeDetails(ArrivalNoticeVm model) { string sqlString = string.Empty; try { - // 鏈叧鍗曠殑鍗曟嵁 - 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); + sqlString = $"select * from BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' and isdel='0' order by CreateTime;"; + var modelList = Db.Ado.SqlQuery<ArrivalNoticeDetailDto>(sqlString); + List<ArrivalNoticeDetailDto> noticeList = new List<ArrivalNoticeDetailDto>(); + foreach (var item in modelList) + { + if (string.IsNullOrEmpty(item.LotNo)) + { + noticeList.Add(item); + } + else + { + string[] LotNoList = item.LotNo.Split(';'); + foreach (var item2 in LotNoList) + { + ArrivalNoticeDetailDto entry = new ArrivalNoticeDetailDto() + { + Id = item.Id, + ASNNo = item.ASNNo, + CompleteQty = item.CompleteQty, + CompleteTime = item.CompleteTime, + CreateTime = item.CreateTime, + Qty = item.Qty, + FactQty = item.FactQty, + LotNo = item2, + Money = item.Money, + PackagNo = item.PackagNo, + PackagName = item.PackagName, + Status = item.Status, + SkuNo = item.SkuNo, + SkuName = item.SkuName, + }; - return modelList; + + noticeList.Add(entry); + } + } + } + List<ArrivalNoticeDetailDto> list = new List<ArrivalNoticeDetailDto>(); + foreach (var item in noticeList) + { + string str = BySkuNoGetPackInfo(item.SkuNo); + if (str == "璐存爣") + { + list.Add(item); + } + } + + return list; } catch (Exception ex) { @@ -46,24 +1643,11 @@ } } - //鏍规嵁鍏ュ簱鍗曞彿鑾峰彇鍏ュ簱鎬诲崟淇℃伅 - public List<BllArrivalNotice> GetArrivalNotice(ArrivalNoticeVm model) - { - string sqlString = string.Empty; - try - { - sqlString = $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isdel='0' "; - var modelList = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString); - - return modelList; - } - catch (Exception ex) - { - throw ex; - } - } - - // 鏍规嵁鍗曟嵁鍙疯幏鍙栧崟鎹槑缁嗗垪琛� + /// <summary> + /// 鏍规嵁鍗曟嵁鍙疯幏鍙栧崟鎹槑缁嗗垪琛� + /// </summary> + /// <param name="model"></param> + /// <returns></returns> public List<ArrivalNoticeDetailDto> GetArrivalNoticeDetails(ArrivalNoticeVm model) { string sqlString = string.Empty; @@ -90,7 +1674,11 @@ } } - // 鏍规嵁鍗曟嵁鏄庣粏ID鑾峰彇鏄庣粏璇︽儏 + /// <summary> + /// 鏍规嵁鍗曟嵁鏄庣粏ID鑾峰彇鏄庣粏璇︽儏 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> public ArrivalNoticeDetailDto GetArrivalNoticeDetail(ArrivalNoticeDetailVm model) { string sqlString = string.Empty; @@ -131,6 +1719,437 @@ } /// <summary> + /// 鏍规嵁绠辩爜鑾峰彇鏍囩绠辩爜淇℃伅 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model,string url) + { + try + { + if (string.IsNullOrEmpty(model.BoxNo)) + { + throw new Exception("璇锋壂鎻忓绠辨潯鐮�!"); + } + if (string.IsNullOrWhiteSpace(model.ASNNo)) + { + 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); + + 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) + { + throw ex; + } + } + + /// <summary> + /// 鏍规嵁绠辩爜鍚戣拷婧郴缁熻姹傛爣绛剧鐮佷俊鎭� + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url) + { + try + { + #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮� + var data = new + { + BoxCode = boxno + }; + var jsonData = JsonConvert.SerializeObject(data); + + var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM"); + + 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, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{boxno}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); // response + + if (models.Count == 0) + { + throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + } + + return models; + } + catch (Exception ex) + { + throw ex; + } + } + + /// <summary> /// 楠岃瘉鎵樼洏鏄惁瀛樺湪 /// </summary> /// <param name="palletNo">鎵樼洏鍙�</param> @@ -153,11 +2172,16 @@ { if (models[0].Status == "1") { - sqlString = $"select count(id) from DataStockDetail where PalletNo = '{palletNo}' and isnull(LocatNo,'') != '' and isdel = '0';"; - int rowNum = Db.Ado.GetInt(sqlString); - if (rowNum > 0) + var detail = Db.Queryable<DataStockDetail>().First(m=>m.PalletNo == palletNo ); + + if (detail!= null && !string.IsNullOrWhiteSpace(detail.LocatNo)) { - sqlMsg = "-1:鎵樼洏浣跨敤涓紝姝ゆ墭鐩樺簲鍦ㄥ簱鍐呰鏍稿疄!"; + var pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.AreaNo != "B06" && m.AreaNo != "B07").Select(m => m.AreaNo).ToList(); + var pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == detail.LocatNo && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0"); + if (pingLocateInfo == null) + { + sqlMsg = "-1:鎵樼洏浣跨敤涓紝姝ゆ墭鐩樺簲鍦ㄥ簱鍐呰鏍稿疄!"; + } } } } @@ -173,6 +2197,717 @@ throw ex; } } + + /// <summary> + /// 鏍规嵁鍗曟嵁鑾峰彇鏍囩鏁伴噺 + /// </summary> + /// <param name="asnNo">鍏ュ簱鍗�</param> + /// <param name="asnDetailId">鍏ュ簱鍗曟槑缁嗗彿</param> + /// <returns></returns> + public BoxListInfoDto GetBoxCountByAsn(string asnNo,int? asnDetailId) + { + try + { + + var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == asnDetailId); + if (detail == null) + { + throw new Exception("娌℃湁鏌ヨ鍒板崟鎹槑缁嗕俊鎭�"); + } + var data = new BoxListInfoDto() + { + SkuNo = detail.SkuNo, + SkuName = detail.SkuName, + LotNo = detail.LotNo, + + }; + //鑾峰彇鐘舵�佹槸鏈粍鎵樼殑鏍囩淇℃伅 + var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId ).GroupBy(m=> new { m.ProductionTime,m.ExpirationTime }).Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0" + foreach (var item in models) + { + var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList(); + if (boxNoList.Count > 0) + { + data.BoxNoList = boxNoList; + data.Date1 = item.ProductionTime.ToString(); + data.Date2 = item.ExpirationTime.ToString(); + + break; + } + } + return data; + } + catch (Exception ex) + { + throw ex; + } + } + + /// <summary> + /// 淇濆瓨鎸囧畾鐨勫偍浣� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="locateNo"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void SaveAppointLocate(string palletNo, string locateNo, int userId) + { + try + { + //鎵樼洏搴撳瓨淇℃伅 + var stockDetailList = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList(); + if (stockDetailList.Count(m=> string.IsNullOrWhiteSpace(m.LocatNo)) > 0) + { + throw new Exception("鎵樼洏娌℃湁鍦ㄥ钩搴撳偍浣嶄笂"); + } + //鍒ゆ柇鎵樼洏鐨勫偍浣嶆槸鍚︽槸骞冲簱 + var stockDetail = stockDetailList.First(); + var oldLocate = stockDetail.LocatNo; + var pingAreaStr = Db.Queryable<SysStorageArea>().Where(m => m.IsDel == "0" && m.WareHouseNo == "W04" && m.AreaNo != "B06" && m.AreaNo != "B07").Select(m => m.AreaNo).ToList(); + var pingLocateInfo = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == oldLocate && pingAreaStr.Contains(m.AreaNo) && m.IsDel == "0"); + if (pingLocateInfo == null) + { + throw new Exception("褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅娌℃湁鍦ㄧ郴缁熶腑鎵惧埌淇℃伅"); + } + + var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); + //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝� + foreach (var item in stockDetailList) + { + var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); + if (skuItem.Type == "2") + { + throw new Exception("鎴愬搧鐗╂枡璇峰叆鎴愬搧搴�"); + } + } + //鍌ㄤ綅 + var locate = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == locateNo); + if (locate == null) + { + throw new Exception("鏈煡璇㈠埌鍌ㄤ綅鐨勪俊鎭�"); + } + if (locate.WareHouseNo != "W02") + { + throw new Exception("鍙兘鎸囧畾绔嬪簱鐨勫偍浣�"); + } + if (locate.Status != "0" || locate.Flag != "0") + { + throw new Exception("璇ュ偍浣嶇姸鎬佷笉鏄┖鍌ㄤ綅鎴栨爣蹇椾笉鏄甯哥殑"); + } + + + Db.BeginTran(); + try + { + var time = DateTime.Now; + //鍒ゆ柇褰撳墠鎵樼洏鏄惁瀛樺湪缁戝畾淇℃伅 + var task = Db.Queryable<LogTask>().First(m=> m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1") && m.OrderType == "0" && m.Type == "0"); + + var upShelf = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); + if (task != null) + { + if (task.Status == "1") + { + throw new Exception("鎵樼洏姝e湪鎵ц浠诲姟锛屼笉鍙寚瀹氬偍浣�"); + } + if (task.Status == "0") + { + if (upShelf != null) + { + if (upShelf.Status == "1") + { + throw new Exception("鎵樼洏姝e湪鎵ц涓婃灦浠诲姟锛屼笉鍙寚瀹氬偍浣�"); + } + if (upShelf.Status == "0") + { + if (locate.LocatNo == task.EndLocat) + { + throw new Exception("宸叉寚瀹氬偍浣嶏紝鏃犻渶閲嶅鎸囧畾"); + } + //閲嶆柊鎸囧畾鍌ㄤ綅 + task.EndLocat = locate.LocatNo; + task.EndRoadway = locate.RoadwayNo; + upShelf.LocatNo = locate.LocatNo; + upShelf.RoadwayNo = locate.RoadwayNo; + Db.Updateable(task).ExecuteCommand(); + Db.Updateable(upShelf).ExecuteCommand(); + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎸囧畾鍌ㄤ綅", palletNo, "缂栬緫", $"鎸囧畾浜嗗偍浣嶏細{locate.LocatNo}銆佹墭鐩樼爜锛歿palletNo}鐨勪俊鎭�", userId); + Db.CommitTran(); + return; + } + } + else + { + throw new Exception("鏌ヨ鍑轰换鍔′絾娌℃湁涓婃灦璁板綍锛屼俊鎭敊璇�"); + } + } + } + + // 娣诲姞鍏ュ簱鏃ュ織璁板綍 + var taskNo = new Common().GetMaxNo("TK"); + var addTask = new LogTask //鍏ュ簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + //BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartRoadway = "", // 璧峰宸烽亾 + StartLocat = oldLocate,//璧峰浣嶇疆 + EndLocat = locate.LocatNo,//鐩爣浣嶇疆 + EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾 + PalletNo = palletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = $"{oldLocate}鍒�=>>{locate.LocatNo}鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅 + + }; + Db.Insertable(addTask).ExecuteCommand(); + + //娣诲姞鎵樼洏涓婃灦璁板綍 + var upShelfAdd = new BllPalletUpShelf() + { + TaskNo = addTask.TaskNo, + TraceNo = "", + PalletNo = palletNo, + SkuNo = stockDetail.SkuNo, + SkuName = stockDetail.SkuName, + LotNo = stockDetail.LotNo, + Status = "0", + + WareHouseNo = locate.WareHouseNo, + RoadwayNo = locate.RoadwayNo, + AreaNo = locate.AreaNo, + LocatNo = locate.LocatNo, + + CreateUser = 0, + }; + Db.Insertable(upShelfAdd).ExecuteCommand(); + + locate.Status = "2"; + + Db.Updateable(locate).ExecuteCommand(); + + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎸囧畾鍌ㄤ綅", palletNo, "缂栬緫", $"鎸囧畾浜嗗偍浣嶏細{locate.LocatNo}銆佹墭鐩樼爜锛歿palletNo}鐨勪俊鎭�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + + } + catch (Exception e) + { + 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 + { + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + 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 + + + + + + + + // 鑾峰彇鍗曟嵁鍒楄〃 + public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model) + { + string sqlString = string.Empty; + try + { + // 鏈叧鍗曠殑鍗曟嵁 + 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; + } + catch (Exception ex) + { + throw ex; + } + } + + //鏍规嵁鍏ュ簱鍗曞彿鑾峰彇鍏ュ簱鎬诲崟淇℃伅 + public List<BllArrivalNotice> GetArrivalNotice(ArrivalNoticeVm model) + { + string sqlString = string.Empty; + try + { + sqlString = $"select * from BllArrivalNotice where ASNNo = '{model.ASNNo}' and isdel='0' "; + var modelList = Db.Ado.SqlQuery<BllArrivalNotice>(sqlString); + + return modelList; + } + catch (Exception ex) + { + throw ex; + } + } + + + + + // 鏍规嵁绠辩爜鎴栨墭鐩樺彿鑾峰彇绠辨敮淇℃伅 liudl public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model) @@ -375,35 +3110,35 @@ }; var id = Db.Insertable(modelpb).ExecuteReturnIdentity(); - var modelbb = new BllBoxInfo - { - ASNNo = "", - ASNDetailNo = null, - BindNo = id, - PalletNo = model.PalletNo, - PalletNo2 = model.PalletNo2, - PalletNo3 = model.PalletNo3, - Status = "2", - CompleteTime = DateTime.Now, - Qty = (int)model.Qty, - FullQty = pNum, - SkuNo = sku.SkuNo, - SkuName = sku.PackagNo, - LotNo = "", - LotText = "", - SupplierLot = "", - InspectStatus = sku.IsInspect, - Origin = "PDA", - BoxNo = "", - BoxNo2 = "", - BoxNo3 = "", - InspectMark = "", - BitBoxMark = "0", + //var modelbb = new BllBoxInfo + //{ + // ASNNo = "", + // ASNDetailNo = null, + // BindNo = id, + // PalletNo = model.PalletNo, + // PalletNo2 = model.PalletNo2, + // PalletNo3 = model.PalletNo3, + // Status = "2", + // CompleteTime = DateTime.Now, + // Qty = (int)model.Qty, + // FullQty = pNum, + // SkuNo = sku.SkuNo, + // SkuName = sku.SkuName, + // LotNo = "", + // LotText = "", + // SupplierLot = "", + // InspectStatus = sku.IsInspect, + // Origin = "PDA", + // BoxNo = "", + // BoxNo2 = "", + // BoxNo3 = "", + // InspectMark = "", + // BitBoxMark = "0", - CreateUser = (int)model.CreateUser, - CreateTime = datetime - }; - Db.Insertable(modelbb).ExecuteCommand(); + // CreateUser = (int)model.CreateUser, + // CreateTime = datetime + //}; + //Db.Insertable(modelbb).ExecuteCommand(); //娣诲姞搴撳瓨 @@ -451,35 +3186,35 @@ #region 搴撳瓨绠辩爜鏄庣粏 - var box2 = new DataBoxInfo() - { - StockDetailId = sdId1, - BindNo = modelpb.Id, - BoxNo = modelbb.BoxNo, - BoxNo2 = modelbb.BoxNo2, - BoxNo3 = modelbb.BoxNo3, - PalletNo = modelbb.PalletNo, - PalletNo2 = modelbb.PalletNo2, - PalletNo3 = modelbb.PalletNo3, - Qty = modelbb.Qty, - FullQty = modelbb.FullQty, - Status = "2", - LotNo = modelbb.LotNo, - LotText = modelbb.LotText, - SkuNo = modelbb.SkuNo, - SkuName = modelbb.SkuName, - Standard = sku.Standard, - ProductionTime = modelbb.ProductionTime, - SupplierLot = modelbb.SupplierLot, - InspectStatus = sku.IsInspect, - InspectMark = modelbb.InspectMark, - BitBoxMark = modelbb.BitBoxMark, - ExpirationTime = modelbb.ExpirationTime, + //var box2 = new DataBoxInfo() + //{ + // StockDetailId = sdId1, + // BindNo = modelpb.Id, + // BoxNo = modelbb.BoxNo, + // BoxNo2 = modelbb.BoxNo2, + // BoxNo3 = modelbb.BoxNo3, + // PalletNo = modelbb.PalletNo, + // PalletNo2 = modelbb.PalletNo2, + // PalletNo3 = modelbb.PalletNo3, + // Qty = modelbb.Qty, + // FullQty = modelbb.FullQty, + // Status = "2", + // LotNo = modelbb.LotNo, + // LotText = modelbb.LotText, + // SkuNo = modelbb.SkuNo, + // SkuName = modelbb.SkuName, + // Standard = sku.Standard, + // ProductionTime = modelbb.ProductionTime, + // SupplierLot = modelbb.SupplierLot, + // InspectStatus = sku.IsInspect, + // InspectMark = modelbb.InspectMark, + // BitBoxMark = modelbb.BitBoxMark, + // ExpirationTime = modelbb.ExpirationTime, - CreateUser = 0, - CreateTime = datetime - }; - Db.Insertable(box2).ExecuteCommand(); + // CreateUser = 0, + // CreateTime = datetime + //}; + //Db.Insertable(box2).ExecuteCommand(); #endregion #region 搴撳瓨 @@ -1521,7 +4256,7 @@ try { string strMsg = ""; - var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.Status == "0" && w.WareHouseNo == "W02"); + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.Status == "0" && w.WareHouseNo == "W04"); if (storageLocat == null) { throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!"); @@ -1884,156 +4619,9 @@ } #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, - 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 ) - { - throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); - } - - return models; - } - catch (Exception ex) - { - throw ex; - } - } - - /// <summary> - /// 鏍规嵁绠辩爜鍚戣拷婧郴缁熻姹傛爣绛剧鐮佷俊鎭� - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public List<BoxInfoDto> GetFMBindBoxInfos(string boxno) - { - try - { - #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮� - /*var jsonData = JsonConvert.SerializeObject(boxno); - - var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM"); - - var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁 - if (obj.Success != 0) - { - throw new Exception("璇锋眰澶辫触" + obj.Message); - }*/ - #endregion - string sqlString = $@"SELECT - ASNNo, - BoxNo, - SkuNo, - SkuName, - LotNo, - BitBoxMark, - SUM(Qty) as Qty - FROM BllBoxInfo - WHERE IsDel = '0' - AND Status='0' - AND BoxNo = '{boxno}' - GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; - var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); // response - - if (models.Count == 0) - { - throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); - } - - return models; - } - catch (Exception ex) - { - throw ex; - } - } - - // 鏍规嵁鍗曟嵁鍙疯幏鍙栧崟鎹槑缁嗗垪琛� - public List<ArrivalNoticeDetailDto> GetBindArrivalNoticeDetails(ArrivalNoticeVm model) - { - string sqlString = string.Empty; - try - { - sqlString = $"select * from BllArrivalNoticeDetail where ASNNo = '{model.ASNNo}' and isdel='0' order by CreateTime;"; - var modelList = Db.Ado.SqlQuery<ArrivalNoticeDetailDto>(sqlString); - List<ArrivalNoticeDetailDto> noticeList = new List<ArrivalNoticeDetailDto>(); - foreach (var item in modelList) - { - if (string.IsNullOrEmpty(item.LotNo)) - { - noticeList.Add(item); - } - else - { - string[] LotNoList = item.LotNo.Split(';'); - foreach (var item2 in LotNoList) - { - ArrivalNoticeDetailDto entry = new ArrivalNoticeDetailDto() - { - Id = item.Id, - ASNNo = item.ASNNo, - CompleteQty = item.CompleteQty, - CompleteTime = item.CompleteTime, - CreateTime = item.CreateTime, - Qty = item.Qty, - FactQty = item.FactQty, - LotNo = item2, - Money = item.Money, - PackagNo = item.PackagNo, - PackagName = item.PackagName, - Status = item.Status, - SkuNo = item.SkuNo, - SkuName = item.SkuName, - }; - - - noticeList.Add(entry); - } - } - } - List<ArrivalNoticeDetailDto> list = new List<ArrivalNoticeDetailDto>(); - foreach (var item in noticeList) - { - string str = BySkuNoGetPackInfo(item.SkuNo); - if (str == "璐存爣") - { - list.Add(item); - } - } - - return list; - } - catch (Exception ex) - { - throw ex; - } - } - + //鏍规嵁鐗╂枡鑾峰彇鏄惁瀛樺湪鍖呰淇℃伅 public string BySkuNoGetPackInfo(string skuNo) { @@ -3416,1545 +6004,7 @@ } } - //JC26缁戝畾鎵樼洏 璐存爣鐗╂枡 - public void BindPalletPasteCode(PdaPalletBindVm model, int userId) - { - try - { - #region 鍒ゆ柇 - //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� - var TypeLot = "5, 6"; - - if (string.IsNullOrEmpty(model.AsnNo)) - { - throw new Exception("鍗曟嵁鍙蜂笉鍙负绌�!"); - } - if (model.AsnDetailId == null || model.AsnDetailId == 0) - { - throw new Exception("鐗╂枡涓嶅彲涓虹┖!"); - } - if (string.IsNullOrEmpty(model.PalletNo)) - { - throw new Exception("鎵樼洏鍙蜂笉鍙负绌�!"); - } - //鏍规嵁鍗曟嵁鍙疯幏鍙栧叆搴撳崟鎬诲崟 - var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo); - if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2") - { - throw new Exception("璇ュ崟鎹凡鍏冲崟!"); - } - - if (string.IsNullOrEmpty(model.LotNo)) - { - throw new Exception("鐗╂枡涓嶄负绌�!"); - } - else - { - //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆� - int indexOfDash = model.LotNo.IndexOf("-"); - if (indexOfDash != -1) - { - model.LotNo = model.LotNo.Substring(indexOfDash + 1); - } - else - { - throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!"); - } - } - - //鍒ゆ柇绠辩爜淇℃伅 - if (string.IsNullOrEmpty(model.BoxNo)) - { - throw new Exception("绠辩爜淇℃伅涓嶅彲涓虹┖!"); - } - //鏄惁杩炵画缁勬墭 0锛氬惁 1锛氭槸 - if (model.IsContinue == "1") - { - if (string.IsNullOrWhiteSpace(model.TailBoxNo)) - { - throw new Exception("寮�鍚繛缁粍鎵樻椂锛屽熬绠辩爜淇℃伅涓嶅彲涓虹┖!"); - } - } - - //鎵樼洏淇℃伅鏄惁瀛樺湪 - 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 && m.LotNo.Contains(model.LotNo)); - if (detail == null) - { - throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); - } - //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶� - var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); - if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo)) - { - throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝璇锋牳瀹烇紒"); - } - /*if (stockDetail != null && stockDetail.SkuNo != detail.SkuNo) - { - throw new Exception("璇ユ墭鐩樺湪搴撳瓨宸叉湁鍏跺畠鐗╂枡淇℃伅锛岃鏍稿疄锛�"); - }*/ - #endregion - - //寮�鍚簨鍔� - Db.BeginTran(); - //褰撳墠鏃堕棿 - var comTime = DateTime.Now; - - #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 == detail.PackagNo); // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿 - - var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 - var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 - - if (pack == null) - { - throw new Exception("鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!"); - } - 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 || !detail.LotNo.Contains(box.LotNo))) - { - var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun045"); - if (funSetting == null || funSetting.IsEnable == "OFF") - { - throw new Exception($"涓嶅厑璁哥珛搴撳悓鎵樼洏涓嶅悓鐗╂枡鍏ュ簱鎴栧悓鎵樼洏涓嶅悓鎵规鍏ュ簱锛�"); - } - } - } - #endregion - - #region 绠辩爜淇℃伅 - var msgStr = $"绠卞彿涓簕model.BoxNo}"; - var boxInfoList = new List<BllBoxInfo>(); - - //棣栫 - var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).ToList(); - if (boxInfo.Count == 0) - { - throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); - } - boxInfoList.AddRange(boxInfo); - //鏄惁杩炵画缁勬墭 - if (model.IsContinue == "1") - { - //灏剧 - var boxInfo2 = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo).ToList(); - if (boxInfo2.Count == 0) - { - throw new Exception("灏剧鐮佷俊鎭笉瀛樺湪!"); - } - boxInfoList.AddRange(boxInfo2); - var sql = $"select * from BllBoxInfo where IsDel = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}'; "; - var list = Db.Ado.SqlQuery<BllBoxInfo>(sql); - boxInfoList.AddRange(list); - msgStr += $"灏剧鍙蜂负{model.TailBoxNo}"; - } - //缁戝畾绠辨�绘暟閲� - //model.SkuQty = boxInfoList.Sum(s => s.Qty); - //鍜岄�夋嫨鐨勬壒娆″悓鎵规鐨勭鐮佷俊鎭� - var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList(); - //鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜淇℃伅锛堟嫾绠辨壒娆★級 - var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList(); - #endregion - - if (sameBoxInfoList.Count <= 0) - { - throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); - } - else - { - #region 鎵樼洏缁戝畾淇℃伅 - 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 = "2",//鍏ュ簱瀹屾垚 - Type = "0", - LotNo = model.LotNo, - LotText = detail.LotText, - SupplierLot = detail.SupplierLot, - //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - BitPalletMark = "1", - IsBale = "0", - IsBelt = "0", - CreateUser = userId, - Demo = model.Demo, - }; - // 鎻掑叆鎵樼洏缁戝畾琛� - bindId = Db.Insertable(bind).ExecuteReturnIdentity(); - } - else - { - bindId = bind.Id; - bind.Qty += model.SkuQty; - } - /*if (bind.Qty < 0) - { - throw new Exception("缁勭洏鏁伴噺涓嶈兘灏忎簬0"); - }*/ - #endregion - - #region 搴撳瓨鏄庣粏鍜岃川妫�淇℃伅 - //鑾峰彇璇ユ壒娆℃渶缁堣川妫�缁撴灉 - BllQualityInspect quality = new BllQualityInspect(); - //鍒ゆ柇鏄惁涓洪��璐у叆搴撳崟 - if (notice.Type == "3") - { - quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.ASNNo == detail.ASNNo && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); - } - else - { - quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); - } - var tags = "0"; - if (notice.Type == "3" || notice.Type == "4") - { - tags = "1"; - } - - // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� - var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo); - var sdId1 = 0; - if (sd1 != null) - { - sdId1 = sd1.Id; - // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 - sd1.Qty = bind.Qty; - sd1.CompleteTime = comTime; - sd1.UpdateUser = userId; - sd1.UpdateTime = comTime; - - Db.Updateable(sd1).ExecuteCommand(); - } - else - { - // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 - sd1 = new DataStockDetail() - { - LotNo = bind.LotNo, - LotText = bind.LotText, - SupplierLot = bind.SupplierLot, - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - Qty = bind.Qty, - LockQty = 0, - FrozenQty = 0, - InspectQty = 0, - ASNNo = bind.ASNNo, - ASNDetailNo = bind.ASNDetailNo, - WareHouseNo = "",//鎵�灞炰粨搴� - RoadwayNo = "",//鎵�灞炲贩閬� - AreaNo = "",//鎵�灞炲尯鍩� - LocatNo = "",//鍌ㄤ綅鍦板潃 - PalletNo = bind.PalletNo, - PalletNo2 = bind.PalletNo2, - PalletNo3 = bind.PalletNo3, - PalletTags = tags, - CompleteTime = comTime, - ProductionTime = bind.ProductionTime, - ExpirationTime = bind.ExpirationTime, - Status = "0", - InspectMark = bind.InspectMark, - InspectStatus = sku.IsInspect, - BitPalletMark = bind.BitPalletMark, - PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� - IsBale = bind.IsBale, - IsBelt = bind.IsBelt, - - IsDel = "0", - CreateUser = 0, - CreateTime = comTime - }; - - //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� - if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 - { - sd1.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 - sd1.OwnerName = notice.CustomerName;//璐т富鍚嶇О - } - else if (notice.Type == "1" || notice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 - { - sd1.SupplierNo = notice.CustomerNo;//渚涘簲鍟嗙紪鐮� - sd1.SupplierName = notice.CustomerName;//渚涘簲鍟嗗悕绉� - } - if (quality != null) - { - //淇敼鍚堟牸涓嶅悎鏍兼暟閲� - if (quality.IsQualified == "1") //鍚堟牸 - { - //澧炲姞鍚堟牸鏁伴噺 - quality.PassQty += bind.Qty; - sd1.InspectStatus = "1"; - } - else if (quality.IsQualified == "0") //涓嶅悎鏍� - { - //澧炲姞涓嶅悎鏍兼暟閲� - quality.FailQty += bind.Qty; - sd1.InspectStatus = "2"; - } - Db.Updateable(quality).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 - } - //娣诲姞搴撳瓨鏄庣粏 - sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); - } - #endregion - - // 鏇存敼绠辨敮鍏崇郴琛� - decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� - var isSample = "0";//鏄惁鍙栨牱 - var sampleQty = 0m;//鍙栨牱鏁伴噺 - - //鏍囩缁勬墭 - var boxGroup = sameBoxInfoList.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; - } - //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎 - if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo) - { - throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); - } - - box.ASNNo = model.AsnNo; - box.ASNDetailNo = model.AsnDetailId; - box.BindNo = bindId; - box.PalletNo = model.PalletNo; - box.Status = "2"; - //box.InspectMark = model.IsSample; //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - //box.SamplingQty = 0; //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - 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; - if (box.InspectMark == "1") //鍒ゆ柇鏄惁鍙栨牱 - { - isSample = "1"; - sampleQty += (decimal)box.SamplingQty; - } - - #region 搴撳瓨绠辩爜鏄庣粏 - var box2 = new DataBoxInfo() - { - StockDetailId = sdId1, - BindNo = bind.Id, - 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(); - - // 鏇存柊鎵樼洏缁戝畾琛� - bind.Qty += factQty; - - if (bind.FullQty < bind.Qty) - { - throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); - } - - if (bind.FullQty == bind.Qty) - { - bind.BitPalletMark = "0"; - sd1.BitPalletMark = "0"; - } - if (bind.Qty > pNum) - { - throw new Exception($"缁戝畾澶辫触锛寋bind.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); - } - - if (isSample == "1") - { - bind.InspectMark = "1"; - bind.SamplingQty = bind.SamplingQty == null ? sampleQty : bind.SamplingQty + sampleQty; - } - Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); - - #region 鍏ュ簱鍗曞強鏄庣粏 - detail.FactQty += factQty;//宸茬粍鏁伴噺 - detail.CompleteQty += factQty;//瀹屾垚鏁伴噺 - if (isSample == "1") //鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�兼敼涓哄垽鏂槸鍚﹀彇鏍� - { - detail.IsSampling = "1"; - } - detail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴� - if (detail.CompleteQty >= detail.Qty) - { - detail.Status = "2"; - detail.CompleteTime = comTime; - } - detail.UpdateUser = userId; - detail.UpdateTime = comTime; - //鏇存柊鍏ュ簱鍗曟槑缁� - Db.Updateable(detail).ExecuteCommand(); - - notice.UpdateUser = userId; - notice.UpdateTime = comTime; - if (notice.Status == "0") - { - notice.Status = "1"; - } - var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo && m.Status != "2"); - if (asnDetailNum == 0) - { - notice.Status = "2";//鎵ц瀹屾垚 - notice.CompleteTime = comTime;//瀹屾垚鏃堕棿 - } - //鏇存柊鍏ュ簱鍗� - Db.Updateable(notice).ExecuteCommand(); - #endregion - - #region 搴撳瓨鏄庣粏 - sd1.Qty = bind.Qty; - //鏇存敼搴撳瓨鏄庣粏鏁伴噺 - Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); - #endregion - - #region 搴撳瓨 - var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo); - if (dataStock != null) - { - dataStock.Qty += factQty; - - if (bind.InspectMark == "1") - { - dataStock.IsSampling = bind.InspectMark; - } - Db.Updateable(dataStock).ExecuteCommand(); - } - else - { - var stock = new DataStock() - { - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - LotNo = bind.LotNo, - LotText = bind.LotText, - Qty = bind.Qty, - LockQty = 0, - FrozenQty = 0, - IsSampling = bind.InspectMark, - IsDel = "0", - CreateUser = userId, - CreateTime = comTime - }; - //缁存姢搴撳瓨璐т富淇℃伅 - if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 - { - stock.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 - stock.OwnerName = notice.CustomerName;//璐т富鍚嶇О - } - Db.Insertable(stock).ExecuteCommand(); - } - #endregion - - #region 璐ㄦ璇烽獙 - if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1") - { - var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); - if (qualityRequest == null) - { - string qcNo = new Common().GetMaxNo("QC"); - qualityRequest = new BllQualityInspectionRequest(); - qualityRequest.QcNo = qcNo; - qualityRequest.Status = "0"; - qualityRequest.SkuNo = sku.SkuNo; - qualityRequest.SkuName = sku.SkuName; - qualityRequest.LotNo = bind.LotNo; - qualityRequest.SupplierLot = bind.SupplierLot; - qualityRequest.Qty = detail.Qty; - qualityRequest.SamplingQty = 0; - qualityRequest.ASNNo = detail.ASNNo; - qualityRequest.CreateUser = userId; - qualityRequest.CreateTime = comTime; - //娣诲姞璐ㄦ璇烽獙鍗� - Db.Insertable(qualityRequest).ExecuteCommand(); - } - } - #endregion - } - //鎷肩 - if (notBoxInfoList.Count > 0) - { - var gbox = notBoxInfoList.GroupBy(g => g.BoxNo).ToList(); - if (gbox.Count > 1) - { - throw new Exception("涓�涓墭鐩樹笂鍙兘鏈�1涓嫾绠�!"); - } - gbox = notBoxInfoList.GroupBy(g => g.LotNo).ToList(); - if (gbox.Count > 1) - { - throw new Exception("涓�涓鍐呮渶澶氳兘鏈�2涓笉鍚屾壒娆$墿鏂�!"); - } - var pinBoxNo = notBoxInfoList[0].BoxNo;//鎷肩绠辩爜 - var pinBoxLotNo = notBoxInfoList[0].LotNo;//鎷肩鎵规鍙� - //鎷肩鏁伴噺(鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜鏁伴噺) - decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty); - - var dataBoxList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == pinBoxNo && w.LotNo == pinBoxLotNo).ToList(); - if (dataBoxList.Count > 0)//宸叉湁搴撳瓨 - { - //鍘熸墭鐩樼粦瀹氫俊鎭� - var oldPalletBind = Db.Queryable<BllPalletBind>().First(w => w.Id == notBoxInfoList[0].BindNo); - //鍘熷叆搴撳崟鏄庣粏 - var oldAsnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.Id == oldPalletBind.ASNDetailNo); - //鍘熷叆搴撳崟 - var oldAsnNotice = Db.Queryable<BllArrivalNotice>().First(w => w.ASNNo == oldAsnDetail.ASNNo); - #region 鎵樼洏缁戝畾淇℃伅 - var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == oldAsnDetail.Id && m.PalletNo == model.PalletNo); - var bindId = 0; - if (bind == null) - { - bind = new BllPalletBind - { - ASNNo = oldAsnDetail.ASNNo, - ASNDetailNo = oldAsnDetail.Id, - PalletNo = model.PalletNo, - PalletNo2 = "", - PalletNo3 = "", - Qty = 0, - FullQty = pNum, - Status = "2",//鍏ュ簱瀹屾垚 - Type = "0", - LotNo = pinBoxLotNo, - LotText = oldAsnDetail.LotText, - SupplierLot = oldAsnDetail.SupplierLot, - //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - BitPalletMark = "1", - IsBale = "0", - IsBelt = "0", - CreateUser = userId, - Demo = model.Demo, - }; - // 鎻掑叆鎵樼洏缁戝畾琛� - bindId = Db.Insertable(bind).ExecuteReturnIdentity(); - } - else - { - bindId = bind.Id; - bind.Qty += pinBoxQty; - - Db.Updateable(bind).ExecuteCommand(); - } - #endregion - - // 鎻掑叆搴撳瓨鏄庣粏鏁版嵁 - var sd1 = new DataStockDetail() - { - LotNo = pinBoxLotNo, - LotText = notBoxInfoList[0].LotText, - SupplierLot = notBoxInfoList[0].SupplierLot, - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - Qty = pinBoxQty, - LockQty = 0, - FrozenQty = 0, - InspectQty = 0, - ASNNo = oldPalletBind.ASNNo, - ASNDetailNo = oldPalletBind.ASNDetailNo, - WareHouseNo = "",//鎵�灞炰粨搴� - RoadwayNo = "",//鎵�灞炲贩閬� - AreaNo = "",//鎵�灞炲尯鍩� - LocatNo = "",//鍌ㄤ綅鍦板潃 - PalletNo = bind.PalletNo, - PalletNo2 = bind.PalletNo2, - PalletNo3 = bind.PalletNo3, - PalletTags = "0", - CompleteTime = comTime, - ProductionTime = oldPalletBind.ProductionTime, - ExpirationTime = oldPalletBind.ExpirationTime, - Status = "0", - InspectMark = oldPalletBind.InspectMark, - InspectStatus = sku.IsInspect, - BitPalletMark = oldPalletBind.BitPalletMark, - PackagNo = oldAsnDetail.PackagNo, - IsBale = oldPalletBind.IsBale, - IsBelt = oldPalletBind.IsBelt, - - IsDel = "0", - CreateUser = 0, - CreateTime = comTime - }; - //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� - if (oldAsnNotice.Type == "0" || oldAsnNotice.Type == "2" || oldAsnNotice.Type == "4" || oldAsnNotice.Type == "6" || oldAsnNotice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 - { - sd1.OwnerNo = oldAsnNotice.CustomerNo;//璐т富缂栫爜 - sd1.OwnerName = oldAsnNotice.CustomerName;//璐т富鍚嶇О - } - else if (oldAsnNotice.Type == "1" || oldAsnNotice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 - { - sd1.SupplierNo = oldAsnNotice.CustomerNo;//渚涘簲鍟嗙紪鐮� - sd1.SupplierName = oldAsnNotice.CustomerName;//渚涘簲鍟嗗悕绉� - } - //娣诲姞搴撳瓨鏄庣粏 - var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); - foreach (var item in dataBoxList) - { - item.StockDetailId = sdId1;//搴撳瓨鏄庣粏id - item.BindNo = bind.Id;//鎵樼洏缁戝畾id - } - //鏇存柊搴撳瓨绠辨敮鏄庣粏琛� - Db.Updateable(dataBoxList).ExecuteCommand(); - - //鎵樼洏瑙g粦淇℃伅 - var palletUnbind = Db.Queryable<BllPalletUnbind>().First(w => w.IsDel == "0" && w.UpbindPalletNo == oldPalletBind.PalletNo && w.BoxNo == pinBoxNo); - if (palletUnbind == null) - { - throw new Exception("鎷肩鐨勬墭鐩樿В缁戜俊鎭笉瀛樺湪!"); - } - palletUnbind.BindPalletNo = model.PalletNo;//缁戝畾鎵樼洏鍙� - palletUnbind.UpdateTime = comTime; - palletUnbind.UpdateUser = userId; - //鏇存柊鎵樼洏瑙g粦缁戝畾琛ㄤ俊鎭� - Db.Updateable(palletUnbind).ExecuteCommand(); - } - else - { - string sql = $@"SELECT detail.* FROM BllArrivalNoticeDetail as detail - JOIN BllArrivalNotice as notice ON detail.ASNNo=notice.ASNNo - WHERE notice.IsDel='0' - AND ( notice.Status=0 or notice.Status=1 ) - AND detail.IsDel='0' - AND detail.LotNo='{pinBoxLotNo}' - AND detail.SkuNo='{sku.SkuNo}' - ORDER BY detail.CreateTime "; - //鎵惧埌鎷肩鍐呭叾浠栨壒娆℃墍灞炲叆搴撳崟鏄庣粏 - var arrDetail = Db.Ado.SqlQuery<BllArrivalNoticeDetail>(sql).FirstOrDefault(); - if (arrDetail == null) - { - throw new Exception("鎷肩鍐呯墿鏂欐墍灞炲叆搴撳崟鏄庣粏涓嶅瓨鍦�!"); - } - //鎵惧埌鎷肩鍐呭叾浠栨壒娆℃墍灞炲叆搴撳崟 - var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo); - if (arrNotice == null) - { - throw new Exception("鎷肩鍐呯墿鏂欐墍灞炲叆搴撳崟涓嶅瓨鍦�!"); - } - #region 鎵樼洏缁戝畾淇℃伅 - var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == arrDetail.Id && m.PalletNo == model.PalletNo); - var bindId = 0; - if (bind == null) - { - bind = new BllPalletBind - { - ASNNo = arrDetail.ASNNo, - ASNDetailNo = arrDetail.Id, - PalletNo = model.PalletNo, - PalletNo2 = "", - PalletNo3 = "", - Qty = 0, - FullQty = pNum, - Status = "2",//鍏ュ簱瀹屾垚 - Type = "0", - LotNo = pinBoxLotNo, - LotText = arrDetail.LotText, - SupplierLot = arrDetail.SupplierLot, - //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - BitPalletMark = "1", - IsBale = "0", - IsBelt = "0", - CreateUser = userId, - Demo = model.Demo, - }; - // 鎻掑叆鎵樼洏缁戝畾琛� - bindId = Db.Insertable(bind).ExecuteReturnIdentity(); - } - else - { - bindId = bind.Id; - } - #endregion - - #region 搴撳瓨鏄庣粏鍜岃川妫�淇℃伅 - //鑾峰彇璇ユ壒娆℃渶缁堣川妫�缁撴灉 - BllQualityInspect quality = new BllQualityInspect(); - //鍒ゆ柇鏄惁涓洪��璐у叆搴撳崟 - if (arrNotice.Type == "3") - { - quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.ASNNo == arrDetail.ASNNo && a.SkuNo == arrDetail.SkuNo && a.LotNo == arrDetail.LotNo).OrderByDescending(a => a.CreateTime).First(); - } - else - { - quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.SkuNo == arrDetail.SkuNo && a.LotNo == arrDetail.LotNo).OrderByDescending(a => a.CreateTime).First(); - } - var tags = "0"; - if (arrNotice.Type == "3" || arrNotice.Type == "4") - { - tags = "1"; - } - - // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� - var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNDetailNo == arrDetail.Id && m.PalletNo == model.PalletNo); - var sdId1 = 0; - if (sd1 != null) - { - sdId1 = sd1.Id; - // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 - sd1.Qty = bind.Qty; - sd1.CompleteTime = comTime; - sd1.UpdateUser = userId; - sd1.UpdateTime = comTime; - - Db.Updateable(sd1).ExecuteCommand(); - } - else - { - // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 - sd1 = new DataStockDetail() - { - LotNo = pinBoxLotNo, - LotText = notBoxInfoList[0].LotText, - SupplierLot = bind.SupplierLot, - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - Qty = bind.Qty, - LockQty = 0, - FrozenQty = 0, - InspectQty = 0, - ASNNo = arrDetail.ASNNo, - ASNDetailNo = arrDetail.Id, - WareHouseNo = "",//鎵�灞炰粨搴� - RoadwayNo = "",//鎵�灞炲贩閬� - AreaNo = "",//鎵�灞炲尯鍩� - LocatNo = "",//鍌ㄤ綅鍦板潃 - PalletNo = bind.PalletNo, - PalletNo2 = bind.PalletNo2, - PalletNo3 = bind.PalletNo3, - PalletTags = tags, - CompleteTime = comTime, - ProductionTime = bind.ProductionTime, - ExpirationTime = bind.ExpirationTime, - Status = "0", - InspectMark = bind.InspectMark, - InspectStatus = sku.IsInspect, - BitPalletMark = bind.BitPalletMark, - PackagNo = arrDetail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� - IsBale = bind.IsBale, - IsBelt = bind.IsBelt, - - IsDel = "0", - CreateUser = 0, - CreateTime = comTime - }; - - //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� - if (arrNotice.Type == "0" || arrNotice.Type == "2" || arrNotice.Type == "4" || arrNotice.Type == "6" || arrNotice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 - { - sd1.OwnerNo = arrNotice.CustomerNo;//璐т富缂栫爜 - sd1.OwnerName = arrNotice.CustomerName;//璐т富鍚嶇О - } - else if (arrNotice.Type == "1" || arrNotice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 - { - sd1.SupplierNo = arrNotice.CustomerNo;//渚涘簲鍟嗙紪鐮� - sd1.SupplierName = arrNotice.CustomerName;//渚涘簲鍟嗗悕绉� - } - if (quality != null) - { - //淇敼鍚堟牸涓嶅悎鏍兼暟閲� - if (quality.IsQualified == "1") //鍚堟牸 - { - //澧炲姞鍚堟牸鏁伴噺 - quality.PassQty += bind.Qty; - sd1.InspectStatus = "1"; - } - else if (quality.IsQualified == "0") //涓嶅悎鏍� - { - //澧炲姞涓嶅悎鏍兼暟閲� - quality.FailQty += bind.Qty; - sd1.InspectStatus = "2"; - } - Db.Updateable(quality).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 - } - //娣诲姞搴撳瓨鏄庣粏 - sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); - } - #endregion - - // 鏇存敼绠辨敮鍏崇郴琛� - decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� - var isSample = "0";//鏄惁鍙栨牱 - var sampleQty = 0m;//鍙栨牱鏁伴噺 - - //鏍囩缁勬墭 - var boxGroup = notBoxInfoList.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; - } - //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎 - if (box.SkuNo != arrDetail.SkuNo || box.LotNo != arrDetail.LotNo) - { - throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); - } - - box.ASNNo = arrDetail.ASNNo; - box.ASNDetailNo = arrDetail.Id; - box.BindNo = bindId; - box.PalletNo = model.PalletNo; - box.Status = "2"; - //box.InspectMark = model.IsSample; //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - //box.SamplingQty = 0; //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - 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; - if (box.InspectMark == "1") //鍒ゆ柇鏄惁鍙栨牱 - { - isSample = "1"; - sampleQty += (decimal)box.SamplingQty; - } - - #region 搴撳瓨绠辩爜鏄庣粏 - var box2 = new DataBoxInfo() - { - StockDetailId = sdId1, - BindNo = bind.Id, - 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(); - - // 鏇存柊鎵樼洏缁戝畾琛� - bind.Qty += factQty; - - if (bind.FullQty < bind.Qty) - { - throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); - } - - if (bind.FullQty == bind.Qty) - { - bind.BitPalletMark = "0"; - sd1.BitPalletMark = "0"; - } - if (bind.Qty > pNum) - { - throw new Exception($"缁戝畾澶辫触锛寋bind.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); - } - - if (isSample == "1") - { - bind.InspectMark = "1"; - bind.SamplingQty = bind.SamplingQty == null ? sampleQty : bind.SamplingQty + sampleQty; - } - Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); - - #region 鍏ュ簱鍗曞強鏄庣粏 - arrDetail.FactQty += factQty;//宸茬粍鏁伴噺 - arrDetail.CompleteQty += factQty;//瀹屾垚鏁伴噺 - if (isSample == "1") //鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�兼敼涓哄垽鏂槸鍚﹀彇鏍� - { - arrDetail.IsSampling = "1"; - } - arrDetail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴� - if (arrDetail.CompleteQty >= arrDetail.Qty) - { - arrDetail.Status = "2"; - arrDetail.CompleteTime = comTime; - } - arrDetail.UpdateUser = userId; - arrDetail.UpdateTime = comTime; - //鏇存柊鍏ュ簱鍗曟槑缁� - Db.Updateable(arrDetail).ExecuteCommand(); - - arrNotice.UpdateUser = userId; - arrNotice.UpdateTime = comTime; - if (arrNotice.Status == "0") - { - arrNotice.Status = "1"; - } - var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == arrDetail.ASNNo && m.Status != "2"); - if (asnDetailNum == 0) - { - arrNotice.Status = "2";//鎵ц瀹屾垚 - arrNotice.CompleteTime = comTime;//瀹屾垚鏃堕棿 - } - //鏇存柊鍏ュ簱鍗� - Db.Updateable(arrNotice).ExecuteCommand(); - #endregion - - #region 搴撳瓨鏄庣粏 - sd1.Qty = bind.Qty; - //鏇存敼搴撳瓨鏄庣粏鏁伴噺 - Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); - #endregion - - #region 搴撳瓨 - var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo); - if (dataStock != null) - { - dataStock.Qty += factQty; - - if (bind.InspectMark == "1") - { - dataStock.IsSampling = bind.InspectMark; - } - Db.Updateable(dataStock).ExecuteCommand(); - } - else - { - var stock = new DataStock() - { - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - LotNo = bind.LotNo, - LotText = bind.LotText, - Qty = bind.Qty, - LockQty = 0, - FrozenQty = 0, - IsSampling = bind.InspectMark, - IsDel = "0", - CreateUser = userId, - CreateTime = comTime - }; - //缁存姢搴撳瓨璐т富淇℃伅 - if (arrNotice.Type == "0" || arrNotice.Type == "2" || arrNotice.Type == "4" || arrNotice.Type == "6" || arrNotice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 - { - stock.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 - stock.OwnerName = notice.CustomerName;//璐т富鍚嶇О - } - Db.Insertable(stock).ExecuteCommand(); - } - #endregion - - #region 璐ㄦ璇烽獙 - if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1") - { - var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); - if (qualityRequest == null) - { - string qcNo = new Common().GetMaxNo("QC"); - qualityRequest = new BllQualityInspectionRequest(); - qualityRequest.QcNo = qcNo; - qualityRequest.Status = "0"; - qualityRequest.SkuNo = sku.SkuNo; - qualityRequest.SkuName = sku.SkuName; - qualityRequest.LotNo = bind.LotNo; - qualityRequest.SupplierLot = bind.SupplierLot; - qualityRequest.Qty = arrDetail.Qty; - qualityRequest.SamplingQty = 0; - qualityRequest.ASNNo = arrDetail.ASNNo; - qualityRequest.CreateUser = userId; - qualityRequest.CreateTime = comTime; - //娣诲姞璐ㄦ璇烽獙鍗� - Db.Insertable(qualityRequest).ExecuteCommand(); - } - } - #endregion - } - } - // 鏇存敼鎵樼洏浣跨敤鐘舵�� - 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 e) - { - //鍥炴粴浜嬪姟 - Db.RollbackTran(); - throw new Exception(e.Message); - } - } - - //JC26缁戝畾鎵樼洏 涓嶈创鏍囩墿鏂� - public void BindPalletNoPasteCode(PdaPalletBindVm model, int userId) - { - - #region 鍒ゆ柇 - - //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� - var TypeLot = "5, 6"; - - if (string.IsNullOrEmpty(model.AsnNo)) - { - throw new Exception("鍗曟嵁鍙蜂笉鍙负绌�!"); - } - if (model.AsnDetailId == null || model.AsnDetailId == 0) - { - throw new Exception("鐗╂枡涓嶅彲涓虹┖!"); - } - if (string.IsNullOrEmpty(model.PalletNo)) - { - throw new Exception("鎵樼洏鍙蜂笉鍙负绌�!"); - } - if (model.SkuQty < 0) - { - throw new Exception("鐗╂枡鏁伴噺涓嶈兘灏忎簬0!"); - } - //鏍规嵁鍗曟嵁鍙疯幏鍙栧叆搴撳崟鎬诲崟 - var notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo); - if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2") - { - throw new Exception("璇ュ崟鎹凡鍏冲崟!"); - } - - if (string.IsNullOrEmpty(model.LotNo)) - { - throw new Exception("鐗╂枡鎵规涓嶄负绌�!"); - } - else - { - //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆� - int indexOfDash = model.LotNo.IndexOf("-"); - if (indexOfDash != -1) - { - model.LotNo = model.LotNo.Substring(indexOfDash + 1); - } - else - { - if (!TypeLot.Contains(notice.Type)) - { - throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!"); - } - - model.LotNo = ""; - } - } - - //int isTextTable = model.TableType; - #endregion - - var comTime = DateTime.Now; - - //鎵樼洏鏄惁瀛樺湪 - 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 && m.LotNo.Contains(model.LotNo)); - if (detail == null) - { - throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); - } - //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶� - var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); - if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo)) - { - throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝璇锋牳瀹烇紒"); - } - if (stockDetail != null && (stockDetail.SkuNo != detail.SkuNo || stockDetail.LotNo != model.LotNo)) - { - throw new Exception("璇ユ墭鐩樺湪搴撳瓨宸叉湁鍏跺畠鐗╂枡鎵规淇℃伅锛岃鏍稿疄锛�"); - } - - #region 鍖呰 - var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); - var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿 - - var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 - var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 - - if (pack == null) - { - throw new Exception("鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!"); - } - 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 || !detail.LotNo.Contains(box.LotNo))) - { - var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun045"); - if (funSetting == null || funSetting.IsEnable == "OFF") - { - throw new Exception($"涓嶅厑璁哥珛搴撳悓鎵樼洏涓嶅悓鐗╂枡鍏ュ簱鎴栧悓鎵樼洏涓嶅悓鎵规鍏ュ簱锛�"); - } - } - } - #endregion - //liudl && m.Status != "2" 缁勭洏鏃㈠叆搴撳畬鎴愭棤闇�鏍规嵁鎵樼洏鐘舵�佸垽鏂� - var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailId && m.PalletNo == model.PalletNo); - var bindId = 0; - if (bind == null) - { - DateTime? pTime = null; - DateTime? eTime = null; - if (!string.IsNullOrWhiteSpace(detail.Lot1)) - { - pTime = DateTime.Parse(detail.Lot1); - } - if (!string.IsNullOrWhiteSpace(detail.Lot2)) - { - eTime = DateTime.Parse(detail.Lot2); - } - - - bind = new BllPalletBind - { - ASNNo = model.AsnNo, - ASNDetailNo = (int)model.AsnDetailId, - PalletNo = model.PalletNo, - - Qty = model.SkuQty, - FullQty = pNum, - Status = "2",//鍏ュ簱瀹屾垚 - Type = "0", - LotNo = model.LotNo, - LotText = detail.LotText, - SupplierLot = detail.SupplierLot, - //InspectMark = model.IsSample, //鏄惁鍙栨牱鎵樼洏 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 - ProductionTime = pTime, - ExpirationTime = eTime, - BitPalletMark = "1", - IsBale = "0", - IsBelt = "0", - CreateUser = userId, - Demo = model.Demo, - - }; - // 鎻掑叆鎵樼洏缁戝畾琛� - bindId = Db.Insertable(bind).ExecuteReturnIdentity(); - } - else - { - bindId = bind.Id; - bind.Qty += model.SkuQty; - } - if (bind.Qty < 0) - { - throw new Exception("缁勭洏鏁伴噺涓嶈兘灏忎簬0"); - } - - #region 搴撳瓨鏄庣粏 - //鑾峰彇璇ユ壒娆℃渶缁堣川妫�缁撴灉 - BllQualityInspect quality = new BllQualityInspect(); - //鍒ゆ柇鏄惁涓洪��璐у叆搴撳崟 - if (notice.Type == "3") - { - quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.ASNNo == detail.ASNNo && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); - } - else - { - quality = Db.Queryable<BllQualityInspect>().Where(a => a.IsDel == "0" && a.SkuNo == detail.SkuNo && a.LotNo == detail.LotNo).OrderByDescending(a => a.CreateTime).First(); - } - var tags = "0"; - if (notice.Type == "3" || notice.Type == "4") - { - tags = "1"; - } - - // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� - var sd1 = Db.Queryable<DataStockDetail>() - .First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo && m.LotNo == bind.LotNo); - var sdId1 = 0; - if (sd1 != null) - { - sdId1 = sd1.Id; - // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 - sd1.Qty = bind.Qty; - sd1.CompleteTime = comTime; - sd1.UpdateUser = userId; - sd1.UpdateTime = comTime; - - Db.Updateable(sd1).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 - } - else - { - string inspectStatusStr = "0"; - if (sku.IsInspect == "1") - { - inspectStatusStr = "1"; - } - - // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 - sd1 = new DataStockDetail() - { - LotNo = bind.LotNo, - LotText = bind.LotText, - SupplierLot = bind.SupplierLot, - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - Qty = bind.Qty, - LockQty = 0, - FrozenQty = 0, - InspectQty = 0, - ASNNo = bind.ASNNo, - ASNDetailNo = bind.ASNDetailNo, - WareHouseNo = "",//鎵�灞炰粨搴� - RoadwayNo = "",//鎵�灞炲贩閬� - AreaNo = "",//鎵�灞炲尯鍩� - LocatNo = "",//鍌ㄤ綅鍦板潃 - PalletNo = bind.PalletNo, - PalletNo2 = bind.PalletNo2, - PalletNo3 = bind.PalletNo3, - PalletTags = tags, - CompleteTime = comTime, - ProductionTime = bind.ProductionTime, - ExpirationTime = bind.ExpirationTime, - Status = "0", - InspectMark = bind.InspectMark, - InspectStatus = inspectStatusStr, - BitPalletMark = bind.BitPalletMark, - PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� - IsBale = bind.IsBale, - IsBelt = bind.IsBelt, - - IsDel = "0", - CreateUser = 0, - CreateTime = comTime - }; - - //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� - if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 - { - sd1.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 - sd1.OwnerName = notice.CustomerName;//璐т富鍚嶇О - } - else if (notice.Type == "1" || notice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱 - { - sd1.SupplierNo = notice.CustomerNo;//渚涘簲鍟嗙紪鐮� - sd1.SupplierName = notice.CustomerName;//渚涘簲鍟嗗悕绉� - } - if (quality != null) - { - //淇敼鍚堟牸涓嶅悎鏍兼暟閲� - if (quality.IsQualified == "1") //鍚堟牸 - { - //澧炲姞鍚堟牸鏁伴噺 - quality.PassQty += bind.Qty; - sd1.InspectStatus = "1"; - } - else if (quality.IsQualified == "0") //涓嶅悎鏍� - { - //澧炲姞涓嶅悎鏍兼暟閲� - quality.FailQty += bind.Qty; - sd1.InspectStatus = "2"; - } - Db.Updateable(quality).ExecuteCommand(); //淇敼璐ㄦ淇℃伅 - } - //娣诲姞搴撳瓨鏄庣粏 - sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); - } - #endregion - - - - // 鏇存敼绠辨敮鍏崇郴琛� - - var isSample = "0";//鏄惁鍙栨牱 - var sampleQty = 0m;//鍙栨牱鏁伴噺 - - - //if (bind.FullQty < bind.Qty && isTextTable == 0) - if (bind.FullQty < bind.Qty) - { - throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); - } - - if (bind.FullQty == bind.Qty) - { - bind.BitPalletMark = "0"; - sd1.BitPalletMark = "0"; - } - //if (bind.Qty > pNum && isTextTable == 0) - if (bind.Qty > pNum) - { - throw new Exception($"缁戝畾澶辫触锛寋bind.PalletNo}鎵樼洏缁戝畾鏁伴噺澶т簬璇ョ墿鍝佹墭鐩樺寘瑁呮暟閲忥紒"); - } - - if (isSample == "1") - { - bind.InspectMark = "1"; - bind.SamplingQty = bind.SamplingQty == null ? sampleQty : bind.SamplingQty + sampleQty; - } - Db.Updateable(bind).Where(m => m.Id == bindId).ExecuteCommand(); - - #region 鍏ュ簱鍗曞強鏄庣粏 - decimal addQty = model.SkuQty; - - detail.FactQty += addQty;//宸茬粍鏁伴噺 - detail.CompleteQty += addQty;//瀹屾垚鏁伴噺 - if (isSample == "1") //鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�兼敼涓哄垽鏂槸鍚﹀彇鏍� - { - detail.IsSampling = "1"; - } - detail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴� - if (detail.CompleteQty >= detail.Qty) - { - detail.Status = "2"; - detail.CompleteTime = comTime; - } - detail.UpdateUser = userId; - detail.UpdateTime = comTime; - //鏇存柊鍏ュ簱鍗曟槑缁� - Db.Updateable(detail).ExecuteCommand(); - - notice.UpdateUser = userId; - notice.UpdateTime = comTime; - if (notice.Status == "0") - { - notice.Status = "1"; - } - var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>() - .Count(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo && m.Status != "2"); - if (asnDetailNum == 0) - { - notice.Status = "2"; - notice.CompleteTime = comTime;//瀹屾垚鏃堕棿 - } - //鏇存柊鍏ュ簱鍗� - Db.Updateable(notice).ExecuteCommand(); - #endregion - - #region 搴撳瓨鏄庣粏 - sd1.Qty = bind.Qty; - //鏇存敼搴撳瓨鏄庣粏鏁伴噺 - Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); - #endregion - - #region 搴撳瓨 - var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo); - if (dataStock != null) - { - dataStock.Qty += model.SkuQty; - - - if (bind.InspectMark == "1") - { - dataStock.IsSampling = bind.InspectMark; - } - Db.Updateable(dataStock).ExecuteCommand(); - } - else - { - var stock = new DataStock() - { - SkuNo = sku.SkuNo, - SkuName = sku.SkuName, - Standard = sku.Standard, - LotNo = bind.LotNo, - LotText = bind.LotText, - Qty = bind.Qty, - LockQty = 0, - FrozenQty = 0, - IsSampling = bind.InspectMark, - IsDel = "0", - CreateUser = userId, - CreateTime = comTime - }; - //缁存姢搴撳瓨璐т富淇℃伅 - if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 - { - stock.OwnerNo = notice.CustomerNo;//璐т富缂栫爜 - stock.OwnerName = notice.CustomerName;//璐т富鍚嶇О - } - Db.Insertable(stock).ExecuteCommand(); - } - #endregion - - #region 璐ㄦ璇烽獙 - if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1") - { - var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); - if (qualityRequest == null) - { - string qcNo = new Common().GetMaxNo("QC"); - qualityRequest = new BllQualityInspectionRequest(); - qualityRequest.QcNo = qcNo; - qualityRequest.Status = "0"; - qualityRequest.SkuNo = sku.SkuNo; - qualityRequest.SkuName = sku.SkuName; - qualityRequest.LotNo = bind.LotNo; - qualityRequest.SupplierLot = bind.SupplierLot; - qualityRequest.Qty = detail.Qty; - qualityRequest.SamplingQty = 0; - qualityRequest.ASNNo = detail.ASNNo; - qualityRequest.CreateUser = userId; - qualityRequest.CreateTime = comTime; - //娣诲姞璐ㄦ璇烽獙鍗� - Db.Insertable(qualityRequest).ExecuteCommand(); - } - } - #endregion - - // 鏇存敼鎵樼洏浣跨敤鐘舵�� - 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}鐨勭粍鐩樹俊鎭�", userId); - } + #endregion @@ -5343,7 +6393,7 @@ //淇敼搴撳瓨鏄庣粏淇℃伅 foreach (var item in stockDetail) { - item.Status = "0"; // 鐘舵�佹洿鏀逛负寰呭垎閰� + //item.Status = "0"; // 鐘舵�佹洿鏀逛负寰呭垎閰� item.WareHouseNo = storageLocat.WareHouseNo; // 鎵�灞炰粨搴� item.RoadwayNo = storageLocat.RoadwayNo; // 鎵�灞炲贩閬� item.AreaNo = storageLocat.AreaNo; // 鎵�灞炲尯鍩� @@ -5353,16 +6403,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"); @@ -5375,14 +6416,14 @@ SendDate = DateTime.Now, //鍙戦�佹椂闂� BackDate = DateTime.Now, //杩斿洖鏃堕棿 StartLocat = "",//璧峰浣嶇疆 - EndLocat = "骞冲簱",//鐩爣浣嶇疆 + EndLocat = model.LocatNo,//鐩爣浣嶇疆 PalletNo = model.PalletNo,//鎵樼洏鐮� IsSend = 0,//鏄惁鍙啀娆′笅鍙� IsCancel = 0,//鏄惁鍙彇娑� IsFinish = 0,//鏄惁鍙畬鎴� Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 Status = "2",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 - OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� Msg = "骞冲簱鐨勫叆搴撲换鍔�", }; Db.Insertable(exTask).ExecuteCommand(); @@ -5407,15 +6448,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