From 2d7c60af5abaae8da7001e9b2db5588bd5429a09 Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期一, 10 三月 2025 12:56:25 +0800 Subject: [PATCH] 1.受托退料 --- service/Warehouse/MesXsckManager.cs | 827 ----------------------------------------------------------- 1 files changed, 0 insertions(+), 827 deletions(-) diff --git a/service/Warehouse/MesXsckManager.cs b/service/Warehouse/MesXsckManager.cs index e097e57..446cbb7 100644 --- a/service/Warehouse/MesXsckManager.cs +++ b/service/Warehouse/MesXsckManager.cs @@ -659,831 +659,4 @@ #endregion - #region 鐢熶骇瓒呴 - - public List<string> GetSccList(WarehouseQuery query) - { - var list = Db.Queryable<MesItemBl>() - .Where(s => (s.Bl018 ?? false) == true - && (s.Bl019 ?? false) == false - && s.Bl008 == query.Type) - .Select(s => s.BlNo) - .ToList(); - return list; - } - - /// <summary> - /// 鑾峰彇鐢熶骇瓒呴鍗曟槑缁� - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟</param> - /// <returns>鐢熶骇瓒呴鍗曟槑缁嗗垪琛�</returns> - public (string bl001, List<MesItemBlDetail> item) - GetMesItemBlDetailBySccBillNo( - WarehouseQuery query) - { - if (string.IsNullOrEmpty(query.billNo)) - throw new Exception("璇烽�夊崟鎹彿锛�"); - - // 妫�鏌ヨ秴棰嗗崟鏄惁瀛樺湪涓斾负鐢熶骇瓒呴/濮斿瓒呴绫诲瀷 - var mesItemBl = Db.Queryable<MesItemBl>() - .Where(a => a.BlNo == query.billNo && a.Bl008 == query.Type) - .First(); - - if (mesItemBl == null) - throw new Exception("鍗曟嵁鍙蜂笉姝g‘锛�"); - - // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬� - var blDetails = Db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id) - .ToList(); - - foreach (var womdab in blDetails.Select(detail => Db.Queryable<Womdab>() - .Where(it => it.Erpid == detail.Bld014) - .First())) - { - if (womdab == null) - throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒"); - - if ((womdab.Dab006 ?? 0) != (womdab.Dab007 ?? 0) || - (womdab.Dab021 ?? 0) != (womdab.Dab022 ?? 0)) - throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒"); - } - - // 鑾峰彇鏈畬鎴愮殑瓒呴鍗曟槑缁� - var pendingDetails = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.billNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .OrderBy((a, b) => b.Bld002) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, - Bld002 = b.Bld002, - Bld003 = b.Bld003, - Bld004 = b.Bld004, - Bld007 = b.Bld007, - Bld008 = b.Bld008 - }) - .ToList(); - - return (mesItemBl.Bl001, pendingDetails); - } - - /// <summary> - /// 鐢熶骇瓒呴鎵弿鏉$爜 prc_rf_pda_scan_zout_barcodeCL - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟</param> - /// <returns>鎵弿缁撴灉</returns> - /// <remarks> - /// 鍙傛暟璇存槑: - /// - billNo: 宸ュ崟鍙�(蹇呭~) - /// - barcode: 鏉$爜(蹇呭~) - /// - userName: 鐢ㄦ埛鍚�(蹇呭~) - /// - blNo: 瓒呴鍗曞彿(蹇呭~) - /// </remarks> - public (WarehouseQuery item, List<MesItemBlDetail> pendingList) - ScanBarcodeForOverPicking( - WarehouseQuery query) - { - #region 鍙傛暟鏍¢獙 - - if (string.IsNullOrEmpty(query.billNo)) - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - - if (string.IsNullOrEmpty(query.barcode)) - throw new Exception("璇锋壂鎻忔潯鐮侊紒"); - - if (string.IsNullOrEmpty(query.userName)) - throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); - - if (string.IsNullOrEmpty(query.blNo)) - throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�"); - - #endregion - - // 妫�楠屾槸鍚﹂噸澶嶆壂鎻� - var exists = Db.Queryable<MesInvItemOutCDetails>() - .Where(b => b.ItemBarcode == query.barcode) - .Any(); - - if (exists) - throw new Exception("姝ゆ潯鐮佸凡鎵弿,鍕块噸澶嶆壂鐮侊紒"); - - // 鏌ヨ鏉$爜搴撳瓨淇℃伅 - var stockBarcode = Db.Queryable<MesInvItemStocks>() - .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0) - .First(); - - if (stockBarcode == null) - throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮�,璇锋牳瀵癸紒{query.barcode}"); - - // 妫�鏌ヨ秴棰嗗崟鐘舵�� - var mesItemBl = Db.Queryable<MesItemBl>() - .Where(a => a.BlNo == query.blNo && (a.Bl018 ?? false) == false) - .First(); - - if (mesItemBl == null) - throw new Exception($"鐢宠鍗� {query.blNo} 宸叉挙鍥烇紒"); - - if (mesItemBl.Bl018 != true) - throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒"); - - if (mesItemBl.Bl019 == true) - throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒"); - - // 妫�鏌ュ伐鍗曟槑缁嗙姸鎬� - var blDetails = Db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id) - .ToList(); - - foreach (var womdab1 in blDetails.Select(detail => Db - .Queryable<Womdab>() - .Where(it => it.Erpid == detail.Bld014) - .First())) - { - if (womdab1 == null) - throw new Exception("鏈壘鍒板伐鍗曟槑缁嗭紒"); - - if ((womdab1.Dab006 ?? 0) != (womdab1.Dab007 ?? 0) || - (womdab1.Dab021 ?? 0) != (womdab1.Dab022 ?? 0)) - throw new Exception("鐗╂枡鏈瀹屾枡鎴栧瓨鍦ㄥ緟琛ョ墿鏂欙紒"); - } - - // 鑾峰彇瓒呴鍗曟槑缁嗗苟鏍¢獙 - var blDetail = Db.Queryable<MesItemBlDetail>() - .Where(b => - b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId) - .First(); - - if (blDetail == null) - throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - // 妫�鏌ュ緟瓒呴鏁伴噺 - var quantity = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0); - if (quantity == 0) - throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒"); - - // 妫�鏌ュ伐鍗曚俊鎭� - var womdaa = Db.Queryable<Womdaa>() - .Where(a => a.Daa001 == query.billNo) - .First(); - - if (womdaa == null) - throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒"); - - var womdab = Db.Queryable<Womdab>() - .Where(b => b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014) - .First(); - - if (womdab == null) - throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - // 濡傛灉鏉$爜鏁伴噺澶т簬寰呰秴棰嗘暟閲�,杩斿洖寰呭鐞嗗垪琛ㄤ緵纭 - if (stockBarcode.Quantity > quantity) - { - var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.blNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, - Bld002 = b.Bld002, - Bld003 = b.Bld003, - Bld004 = b.Bld004, - Bld007 = b.Bld007, - Bld008 = b.Bld008 - }) - .ToList(); - - query.Num = stockBarcode.Quantity; - query.Fum = quantity; - - return (query, pendingList); - } - - // 鎵ц鏁版嵁搴撲簨鍔� - UseTransaction(db => - { - // 鐢熸垚鎴栬幏鍙栧嚭搴撳崟 - var outId = Guid.Empty; - var outNo = ""; - var outRecord = db.Queryable<MesInvItemOuts>() - .Where(a => a.TaskNo == query.blNo - && a.DepotId == stockBarcode.DepotId - && a.OutDate.Value.Date == DateTime.Now.Date - && a.BillTypeId == 200 - && a.TransactionNo == 210 - && a.Status == 0) - .First(); - - if (outRecord == null) - { - outId = Guid.NewGuid(); - outNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"); // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 - - // 鎻掑叆鍑哄簱鍗曚富琛� - db.Insertable(new MesInvItemOuts - { - Guid = outId, - ItemOutNo = outNo, - TaskNo = query.blNo, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - BillTypeId = 200, - TransactionNo = 210, - Remark = mesItemBl.Bl007, - DepotCode = womdab.Dab017, - OutPart = womdaa.Daa013, - FType = 0, - WorkNo = womdaa.Daa021, - OutType = query.Type, - BoardItem = womdaa.Daa002, - PbillNo = womdaa.Daa001, - OutDate = DateTime.Now, - Status = 0, - BbillNo = query.blNo - }).IgnoreColumns(true).ExecuteCommand(); - } - else - { - outId = outRecord.Guid; - outNo = outRecord.ItemOutNo; - } - - // 鏇存柊鎴栨彃鍏ュ嚭搴撳崟鏄庣粏 - var outItem = db.Queryable<MesInvItemOutItems>() - .Where(it => - it.ItemOutId == outId && it.ItemId == stockBarcode.ItemId) - .First(); - - if (outItem == null) - // 鎻掑叆鍑哄簱鍗曟槑缁� - db.Insertable(new MesInvItemOutItems - { - Guid = Guid.NewGuid(), - ItemOutId = outId, - ItemNo = blDetail.Bld002, - Quantity = stockBarcode.Quantity, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - DepotCode = womdab.Dab017, - TaskNo = query.blNo, - WorkNo = womdaa.Daa021, - WorkLine = blDetail.Bld013, - ErpItemNo = womdab.Dab003, - ErpId = womdab.Eid, - ErpAutoid = womdab.Erpid, - PbillNo = query.billNo, - ItemId = blDetail.Bld012, - DepotId = stockBarcode.DepotId.ToString(), - // Unit = blDetail.Bld009, - // DepotId = stockBarcode.DepotsId - }).IgnoreColumns(true).ExecuteCommand(); - else - // 鏇存柊鍑哄簱鍗曟槑缁嗘暟閲� - db.Updateable<MesInvItemOutItems>() - .SetColumns(it => new MesInvItemOutItems - { - Quantity = it.Quantity + stockBarcode.Quantity - }) - .Where(it => - it.ItemOutId == outId && - it.ItemId == stockBarcode.ItemId) - .ExecuteCommand(); - - // 鎻掑叆鍑哄簱鏉$爜鏄庣粏 - db.Insertable(new MesInvItemOutCDetails - { - Guid = Guid.NewGuid(), - ItemOutId = outId, - ItemBarcode = stockBarcode.ItemBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = stockBarcode.Quantity, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - DepotCode = stockBarcode.DepotsCode, - DepotSectionCode = stockBarcode.DepotSectionsCode, - Remark = blDetail.Bld010, - TaskNo = query.blNo, - WorkNo = blDetail.Bld001, - WorkLine = blDetail.Bld013, - SuppNo = stockBarcode.SuppNo, - PbillNo = query.billNo, - ItemId = blDetail.Bld012, - Unit = blDetail.Bld009, - DepotId = (int)stockBarcode.DepotsId, - Dabid = womdab.Guid, - }).IgnoreColumns(true).ExecuteCommand(); - - // 鎻掑叆涓氬姟娴佹按 - db.Insertable(new MesInvBusiness2 - { - Guid = Guid.NewGuid(), - Status = 1, - BillTypeId = 200, - TransactionCode = "210", - BusinessType = -1, - ItemBarcode = query.barcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - EpFlag = true, - Quantity = stockBarcode.Quantity, - FromInvDepotsCode = stockBarcode.DepotsCode, - FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - TaskNo = mesItemBl.Bl012, - BillNo = query.blNo, - WorkNo = blDetail.Bld001, - WorkLine = blDetail.Bld013, - SuppNo = stockBarcode.SuppNo, - SuppId = stockBarcode.SuppId, - ItemId = stockBarcode.ItemId - // CkDepot = stockBarcode.DepotsId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鏇存柊宸ュ崟澶囨枡鏄庣粏 - db.Updateable<Womdab>() - .SetColumns(it => new Womdab - { - Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity, - Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity - }) - .Where(it => it.Id == womdab.Id) - .ExecuteCommand(); - - // 鏇存柊瓒呴鍗曟槑缁� - db.Updateable<MesItemBlDetail>() - .SetColumns(it => new MesItemBlDetail - { - Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity, - Bld011 = (it.Bld007 ?? 0) <= - (it.Bld008 ?? 0) + stockBarcode.Quantity - ? 1 - : 0 - }) - .Where(it => it.Id == blDetail.Id) - .ExecuteCommand(); - - // 鏇存柊搴撳瓨鏁伴噺涓�0 - db.Updateable<MesInvItemStocks>() - .SetColumns(it => it.Quantity == 0) - .Where(it => it.Guid == stockBarcode.Guid) - .ExecuteCommand(); - - // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� - var hasUnfinished = db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0) - .Any(); - - // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊瓒呴鍗曠姸鎬佷负宸插畬鎴� - if (!hasUnfinished) - db.Updateable<MesItemBl>() - .SetColumns(it => it.Bl019 == true) - .Where(it => it.Id == mesItemBl.Id) - .ExecuteCommand(); - - return 1; - }); - - // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛� - var finalPendingList = Db.Queryable<MesItemBl, MesItemBlDetail>( - (a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.blNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, - Bld002 = b.Bld002, - Bld003 = b.Bld003, - Bld004 = b.Bld004, - Bld007 = b.Bld007, - Bld008 = b.Bld008 - }) - .ToList(); - - return (query, finalPendingList); - } - - /// <summary> - /// 鐢熶骇瓒呴鎵撳嵃鏉$爜 - /// </summary> - /// <param name="query">鏌ヨ鍙傛暟</param> - /// <returns>澶勭悊缁撴灉</returns> - public (bool success, List<MesItemBlDetail> pendingList) - PrintBarcodeForOverPicking(WarehouseQuery query) - { - UseTransaction(db => - { - #region 鍙傛暟鏍¢獙 - - if (string.IsNullOrEmpty(query.billNo)) - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - - if (string.IsNullOrEmpty(query.barcode)) - throw new Exception("璇锋壂鎻忔潯鐮侊紒"); - - if (string.IsNullOrEmpty(query.userName)) - throw new Exception("鐢ㄦ埛鍚嶄笉鑳戒负绌猴紒"); - - if (string.IsNullOrEmpty(query.blNo)) - throw new Exception("瓒呴鍗曞彿涓嶈兘涓虹┖锛�"); - - if (query.Num <= 0) - throw new Exception("璇疯緭鍏ユ纭殑鍙戞枡鏁伴噺锛�"); - - #endregion - - // 鏌ヨ搴撳瓨鏉$爜淇℃伅 - var stockBarcode = db.Queryable<MesInvItemStocks>() - .Where(t => t.ItemBarcode == query.barcode && t.Quantity > 0) - .First(); - - if (stockBarcode == null) - throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{query.barcode}"); - - var totalQty = stockBarcode.Quantity; - string newBarcode = null; - - // 鎷嗗垎鏉$爜 - if (totalQty > query.Num) - { - var mesItems = db.Queryable<MesItems>() - .Where(s => s.Id == stockBarcode.ItemId).First(); - // 鐢熸垚鏂版潯鐮佸彿 - newBarcode = BillNo.GetBillNo("TMBH(鏉$爜缂栧彿)", mesItems.ItemNo); - - // 鍐欏叆鏂版潯鐮佽褰� - db.Insertable(new MesInvItemBarcodes - { - Guid = Guid.NewGuid(), - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = query.Num, - EpFlag = true, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - OldItemBarcode = query.barcode, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - WorkNo = stockBarcode.WorkNo, - WorkLine = stockBarcode.WorkLine, - SuppId = stockBarcode.SuppId, - SuppNo = stockBarcode.SuppNo, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鏇存柊鍘熸潯鐮佹暟閲� - db.Updateable<MesInvItemBarcodes>() - .SetColumns(it => new MesInvItemBarcodes - { Quantity = totalQty - query.Num }) - .Where(it => it.ItemBarcode == query.barcode) - .ExecuteCommand(); - - // 鍒犻櫎鍘熸潯鐮佸簱瀛樿褰� - db.Deleteable<MesInvItemStocks>() - .Where(it => it.ItemBarcode == query.barcode) - .ExecuteCommand(); - - // 鎻掑叆鍓╀綑鏉$爜鏁伴噺鐨勬柊搴撳瓨璁板綍 - db.Insertable(new MesInvItemStocks - { - Guid = Guid.NewGuid(), - ItemBarcode = stockBarcode.ItemBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = totalQty - query.Num, - EpFlag = stockBarcode.EpFlag, - CustomerNo = stockBarcode.CustomerNo, - DepotsCode = stockBarcode.DepotsCode, - DepotsId = stockBarcode.DepotsId, - DepotSectionsCode = stockBarcode.DepotSectionsCode, - CheckDate = stockBarcode.CheckDate, - ItemType = stockBarcode.ItemType, - IndepDate = stockBarcode.IndepDate, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - IqcStatus = stockBarcode.IqcStatus, - BoardStyle = stockBarcode.BoardStyle, - WorkNo = stockBarcode.WorkNo, - WorkLine = stockBarcode.WorkLine, - SuppNo = stockBarcode.SuppNo, - SuppId = stockBarcode.SuppId, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鍐欐柊鏉$爜鐨勪氦鏄撹〃锛屾柊鏉$爜涓嶅叆搴撶洿鎺ュ嚭 - db.Insertable(new MesInvBusiness2 - { - Guid = Guid.NewGuid(), - Status = 1, - BillTypeId = 200, - TransactionCode = "210", - BusinessType = -1, - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - EpFlag = true, - Quantity = query.Num, - ToInvDepotsCode = stockBarcode.DepotsCode, - ToInvDepotSectionsCode = stockBarcode.DepotSectionsCode, - Description = "鐢熶骇瓒呴", - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - TaskNo = stockBarcode.TaskNo, - WorkNo = stockBarcode.WorkNo, - WorkLine = stockBarcode.WorkLine, - SuppNo = stockBarcode.SuppNo, - SuppId = stockBarcode.SuppId, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - } - else if (totalQty < query.Num) - { - throw new Exception("鍙戞枡鏁伴噺澶т簬鏉$爜鏁�,璇锋牳瀵癸紒"); - } - - if (string.IsNullOrEmpty(newBarcode)) - newBarcode = query.barcode; - - // 妫�鏌ヨ秴棰嗗崟鐘舵�� - var mesItemBl = db.Queryable<MesItemBl>() - .Where(a => a.BlNo == query.blNo && a.Bl008 == "鐢熶骇瓒呴") - .First(); - - if (mesItemBl == null) - throw new Exception("鐢宠鍗曚笉瀛樺湪锛�"); - - if (!(mesItemBl.Bl018 ?? false)) - throw new Exception($"鐢宠鍗� {query.blNo} 鏈鏍革紒"); - - if (mesItemBl.Bl019 ?? false) - throw new Exception($"鐢宠鍗� {query.blNo} 宸插畬缁擄紒"); - - // 妫�鏌ヨ秴棰嗗崟鏄庣粏 - var blDetail = db.Queryable<MesItemBlDetail>() - .Where(b => - b.Mid == mesItemBl.Id && b.Bld012 == stockBarcode.ItemId) - .First(); - - if (blDetail == null) - throw new Exception($"鐢宠鍗曚笉瀛樺湪姝ょ墿鏂� {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - var pendingQty = (blDetail.Bld007 ?? 0) - (blDetail.Bld008 ?? 0); - if (pendingQty == 0) - throw new Exception("鐗╂枡宸叉壂鐮佸畬鎴愶紝璇锋牳瀵癸紒"); - - // 妫�鏌ュ伐鍗� - var workOrder = db.Queryable<Womdaa>() - .Where(a => a.Daa001 == query.billNo) - .First(); - - if (workOrder == null) - throw new Exception($"宸ュ崟 {query.billNo} 涓嶅瓨鍦紝璇风‘璁わ紒"); - - var workOrderDetail = db.Queryable<Womdab>() - .Where(b => - b.Dab001 == query.billNo && b.Erpid == blDetail.Bld014) - .First(); - - if (workOrderDetail == null) - throw new Exception($"澶囨枡鏄庣粏涓嶅瓨鍦ㄦ鐗╂枡 {stockBarcode.ItemNo} 璇风‘璁わ紒"); - - if (query.Num > pendingQty) - throw new Exception( - $"鎷嗗垎鏁伴噺锛歿query.Num} 澶т簬寰呭彂鏂欐暟閲忥細{pendingQty}锛岃鏍稿锛�"); - - // 鑾峰彇鎴栧垱寤哄嚭搴撳崟 - var itemOut = db.Queryable<MesInvItemOuts>() - .Where(a => a.BbillNo == query.blNo - && a.DepotCode == workOrderDetail.Dab017 - && a.OutDate.Value.Date.ToString("yyyy-MM-dd") == - DateTime.Now.Date.ToString("yyyy-MM-dd") - && a.BillTypeId == 200 - && a.TransactionNo == 210 - && a.Status == 0) - .First(); - - if (itemOut == null) - { - // 鍒涘缓鏂扮殑鍑哄簱鍗� - itemOut = new MesInvItemOuts - { - Guid = Guid.NewGuid(), - ItemOutNo = BillNo.GetBillNo("BL(宸ュ崟琛ユ枡)"), // 闇�瑕佸疄鐜扮敓鎴愬崟鍙风殑鏂规硶 - TaskNo = query.blNo, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - BillTypeId = 200, - TransactionNo = 210, - Remark = mesItemBl.Bl007, - DepotCode = workOrderDetail.Dab017, - OutPart = workOrder.Daa013, - FType = 0, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - WorkNo = workOrder.Daa021, - OutType = "鐢熶骇瓒呴鍗�", - BoardItem = workOrder.Daa002, - PbillNo = workOrder.Daa001, - OutDate = DateTime.Now, - Status = 0, - BbillNo = query.blNo - }; - - db.Insertable(itemOut).IgnoreColumns(true).ExecuteCommand(); - } - - // 妫�鏌ユ槸鍚﹀凡瀛樺湪鍑哄簱鍗曟槑缁� - var itemOutItemCount = db.Queryable<MesInvItemOutItems>() - .Where(it => - it.ItemOutId == itemOut.Guid && - it.ItemId == stockBarcode.ItemId) - .Count(); - - if (itemOutItemCount == 0) - // 鎻掑叆鏂扮殑鍑哄簱鍗曟槑缁� - db.Insertable(new MesInvItemOutItems - { - Guid = Guid.NewGuid(), - ItemOutId = itemOut.Guid, - ItemNo = blDetail.Bld002, - Quantity = query.Num, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - DepotCode = workOrderDetail.Dab017, - TaskNo = query.blNo, - WorkNo = workOrder.Daa021, - WorkLine = blDetail.Bld013, - ErpItemNo = workOrderDetail.Dab003, - ErpId = workOrderDetail.Eid, - ErpAutoid = workOrderDetail.Erpid, - PbillNo = query.billNo, - ItemId = blDetail.Bld012 - // Unit = blDetail.Bld009, - // DepotId = stockBarcode.DepotsId - }).IgnoreColumns(true).ExecuteCommand(); - else - // 鏇存柊宸叉湁鍑哄簱鍗曟槑缁嗘暟閲� - db.Updateable<MesInvItemOutItems>() - .SetColumns(it => it.Quantity == it.Quantity + query.Num) - .Where(it => - it.ItemOutId == itemOut.Guid && - it.ItemId == stockBarcode.ItemId) - .ExecuteCommand(); - - // 鎻掑叆鍑哄簱鏄庣粏璁板綍 - db.Insertable(new MesInvItemOutCDetails - { - Guid = Guid.NewGuid(), - ItemOutId = itemOut.Guid, - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - Quantity = query.Num, - ForceOutFlag = 0, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - DepotCode = stockBarcode.DepotsCode, - DepotSectionCode = stockBarcode.DepotSectionsCode, - Remark = blDetail.Bld010, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - TaskNoy = mesItemBl.Bl013, - BoardStyle = mesItemBl.Bl002, - TaskNo = query.blNo, - WorkNo = blDetail.Bld001, - WorkLine = blDetail.Bld013, - SuppNo = stockBarcode.SuppNo, - PbillNo = query.billNo, - ItemId = blDetail.Bld012, - Unit = blDetail.Bld009, - DepotId = (int)stockBarcode.DepotsId, - LineK3id = workOrderDetail.Erpid, - EbelnK3id = workOrderDetail.Eid - }).IgnoreColumns(true).ExecuteCommand(); - - // 鎻掑叆涓氬姟浜ゆ槗璁板綍 - db.Insertable(new MesInvBusiness2 - { - Guid = Guid.NewGuid(), - Status = 1, - BillTypeId = 200, // p_bill_type_id - TransactionCode = "210", // p_transaction_no - BusinessType = 1, - ItemBarcode = newBarcode, - ItemNo = stockBarcode.ItemNo, - LotNo = stockBarcode.LotNo, - EpFlag = true, - Quantity = query.Num, - FromInvDepotsCode = stockBarcode.DepotsCode, - FromInvDepotSectionsCode = stockBarcode.DepotSectionsCode, - CreateBy = query.userName, - CreateDate = DateTime.Now, - LastupdateBy = query.userName, - LastupdateDate = DateTime.Now, - Factory = stockBarcode.Factory, - Company = stockBarcode.Company, - TaskNo = mesItemBl.Bl012, // Matches C_QTCK.Bl012 - BillNo = query.blNo, - WorkNo = blDetail.Bld001, // Matches C_QTCK_D.Bld001 - WorkLine = blDetail.Bld013, // Matches C_QTCK_D.Bld013 - SuppNo = stockBarcode.SuppNo, - ItemId = stockBarcode.ItemId - }).IgnoreColumns(true).ExecuteCommand(); - - // 鏇存柊宸ュ崟琛ㄦ暟閲� - db.Updateable<Womdab>() - .SetColumns(it => new Womdab - { - Dab020 = (it.Dab020 ?? 0) + stockBarcode.Quantity, - Dab023 = (it.Dab023 ?? 0) + stockBarcode.Quantity - }) - .Where(it => it.Id == workOrderDetail.Id) - .ExecuteCommand(); - - // 鏇存柊鍙戣揣閫氱煡鍗曟槑缁嗗凡琛ユ暟閲� - db.Updateable<MesItemBlDetail>() - .SetColumns(it => new MesItemBlDetail - { - Bld008 = (it.Bld008 ?? 0) + (int)stockBarcode.Quantity - }) - .Where(it => it.Id == blDetail.Id) - .ExecuteCommand(); - - // 妫�鏌ュ彂璐ч�氱煡鍗曟槑缁嗘槸鍚﹀畬鎴� - var blDetail1 = db.Queryable<MesItemBlDetail>() - .Where(it => it.Id == blDetail.Id) - .First(); - - if ((blDetail1.Bld007 ?? 0) <= (blDetail1.Bld008 ?? 0)) - // 鏇存柊鏄庣粏瀹屾垚鐘舵�� - db.Updateable<MesItemBlDetail>() - .SetColumns(it => it.Bld011 == 1) - .Where(it => it.Id == blDetail1.Id) - .ExecuteCommand(); - - // 妫�鏌ユ槸鍚︽墍鏈夋槑缁嗛兘宸插畬鎴� - var hasUnfinished = db.Queryable<MesItemBlDetail>() - .Where(it => it.Mid == mesItemBl.Id && (it.Bld011 ?? 0) == 0) - .Any(); - - // 濡傛灉鎵�鏈夋槑缁嗗畬鎴�,鏇存柊鍙戣揣閫氱煡鍗曠姸鎬佷负宸插畬鎴� - if (!hasUnfinished) - db.Updateable<MesItemBl>() - .SetColumns(it => it.Bl019 == true) - .Where(it => it.Id == mesItemBl.Id) - .ExecuteCommand(); - - return 1; - }); - - - // 鑾峰彇鏈�缁堢殑寰呭鐞嗗垪琛� - // 鑾峰彇鍙戣揣閫氱煡鍗曟槑缁嗕腑鏈畬鎴愮殑璁板綍 - // 閫氳繃宸﹁繛鎺ユ煡璇㈠彂璐ч�氱煡鍗�(MesItemBl)鍜屽彂璐ч�氱煡鍗曟槑缁�(MesItemBlDetail)琛� - // 鏉′欢: 1.鍙戣揣閫氱煡鍗曞彿鍖归厤 2.璁″垝鏁伴噺(Bld007)鍑忓幓宸茶ˉ鏁伴噺(Bld008)澶т簬0(鍗虫湭瀹屾垚鐨�) - var pendingList = Db.Queryable<MesItemBl, MesItemBlDetail>((a, b) => - new JoinQueryInfos(JoinType.Left, a.Id == b.Mid)) - .Where((a, b) => a.BlNo == query.blNo - && (b.Bld007 ?? 0) - (b.Bld008 ?? 0) > 0) - .Select((a, b) => new MesItemBlDetail - { - Bld012 = b.Bld012, // 鐗╂枡ID - Bld002 = b.Bld002, // 鐗╂枡缂栧彿 - Bld003 = b.Bld003, // 鐗╂枡鍚嶇О - Bld004 = b.Bld004, // 鐗╂枡瑙勬牸 - Bld007 = b.Bld007, // 璁″垝鏁伴噺 - Bld008 = b.Bld008 // 宸茶ˉ鏁伴噺 - }) - .ToList(); - - return (true, pendingList); - } - - #endregion } \ No newline at end of file -- Gitblit v1.9.3