From e035b0f527488a05d92e8f1ff41882fb76413398 Mon Sep 17 00:00:00 2001 From: 啊鑫 <t2856754968@163.com> Date: 星期二, 31 十二月 2024 15:39:19 +0800 Subject: [PATCH] 委外退料 --- service/Warehouse/MesItemTblManager.cs | 400 ++++++++++++++++++++++++++++++++++++++++++++++++- Dto/service/WarehouseQuery.cs | 2 Controllers/Warehouse/MesItemTblController.cs | 29 +++ 3 files changed, 414 insertions(+), 17 deletions(-) diff --git a/Controllers/Warehouse/MesItemTblController.cs b/Controllers/Warehouse/MesItemTblController.cs index 347c52b..825027e 100644 --- a/Controllers/Warehouse/MesItemTblController.cs +++ b/Controllers/Warehouse/MesItemTblController.cs @@ -169,12 +169,12 @@ /// </summary> /// <returns>閫�鏂欏崟鍙峰垪琛�</returns> [HttpPost("GetSCTLBillNo")] - public ResponseResult GetSCTLBillNo() + public ResponseResult GetSCTLBillNo(WarehouseQuery query) { try { dynamic resultInfos = new ExpandoObject(); - resultInfos.tbBillList = m.GetSCTLBillNo(); + resultInfos.tbBillList = m.GetSCTLBillNo(query); return new ResponseResult { status = 0, @@ -263,4 +263,29 @@ return ResponseResult.ResponseError(ex); } } + + /// <summary> + /// 濮斿閫�鏂欐壂鎻忔潯鐮� + /// </summary> + /// <param name="query">鏌ヨ鍙傛暟</param> + /// <returns>鎵弿缁撴灉</returns> + [HttpPost("WwtlScanBarcode")] + public ResponseResult WwtlScanBarcode([FromBody] WarehouseQuery query) + { + try + { + dynamic resultInfos = new ExpandoObject(); + resultInfos.tbBillList = m.SctlScanBarcode(query); + return new ResponseResult + { + status = 0, + message = "OK", + data = resultInfos + }; + } + catch (Exception ex) + { + return ResponseResult.ResponseError(ex); + } + } } \ No newline at end of file diff --git a/Dto/service/WarehouseQuery.cs b/Dto/service/WarehouseQuery.cs index 2245af7..99f36cd 100644 --- a/Dto/service/WarehouseQuery.cs +++ b/Dto/service/WarehouseQuery.cs @@ -29,4 +29,6 @@ public decimal? Fum { get; set; } public string? itemNo { get; set; } + + public string? type { get; set; } } \ No newline at end of file diff --git a/service/Warehouse/MesItemTblManager.cs b/service/Warehouse/MesItemTblManager.cs index 5bbbd4d..dc65dd3 100644 --- a/service/Warehouse/MesItemTblManager.cs +++ b/service/Warehouse/MesItemTblManager.cs @@ -16,11 +16,12 @@ /// 鑾峰彇鐢熶骇閫�鏂欏崟鍙峰垪琛� /// </summary> /// <returns>閫�鏂欏崟鍙峰垪琛�</returns> - public List<string> GetSCTLBillNo() + public List<string> GetSCTLBillNo(WarehouseQuery query) { var list = Db.Queryable<MesItemTbl>() - .Where(s => (s.Tbl013 ?? 0) == 1 // 瀹℃牳閫氳繃 - && (s.Tbl020 ?? 0) == 0) // 鏈畬鎴� + .Where(s => (s.Tbl013 ?? 0) == 1 // 瀹℃牳閫氳繃 + && (s.Tbl020 ?? 0) == 0 + && s.Tbl008 == query.type) .Select(s => s.BillNo).ToList(); return list; @@ -48,12 +49,12 @@ BillNo = a.BillNo, Tlid = b.Tlid, Tlmid = b.Tlmid, - Tld005 = b.Tld005 ?? 0, // 寰呴��鏁伴噺 - Tld006 = b.Tld006 ?? 0, // 宸查��鏁伴噺 + Tld005 = b.Tld005 ?? 0, // 寰呴��鏁伴噺 + Tld006 = b.Tld006 ?? 0, // 宸查��鏁伴噺 Tld009 = b.Tld009, - ItemNo = c.ItemNo, // 鐗╂枡缂栧彿 - ItemName = c.ItemName, // 鐗╂枡鍚嶇О - ItemModel = c.ItemModel // 鐗╂枡鍨嬪彿 + ItemNo = c.ItemNo, // 鐗╂枡缂栧彿 + ItemName = c.ItemName, // 鐗╂枡鍚嶇О + ItemModel = c.ItemModel // 鐗╂枡鍨嬪彿 }).ToList(); // 绛涢�夊嚭寰呴��鏁伴噺澶т簬宸查��鏁伴噺鐨勮褰� @@ -97,13 +98,13 @@ /// <returns>澶勭悊缁撴灉</returns> public WarehouseQuery SctlScanBarcode(WarehouseQuery query) { - var p_item_barcode = query.barcode; // 鐗╂枡鏉$爜 - var p_bill_no = query.billNo; // 鍗曟嵁鍙� - var p_section_code = query.DepotCode; // 搴撲綅缂栫爜 - var c_user = query.userName; // 鐢ㄦ埛鍚� + var p_item_barcode = query.barcode; // 鐗╂枡鏉$爜 + var p_bill_no = query.billNo; // 鍗曟嵁鍙� + var p_section_code = query.DepotCode; // 搴撲綅缂栫爜 + var c_user = query.userName; // 鐢ㄦ埛鍚� - var p_bill_type_id = 100; // 鍗曟嵁绫诲瀷ID - var p_transction_no = 104; // 浜ゆ槗缂栧彿 + var p_bill_type_id = 100; // 鍗曟嵁绫诲瀷ID + var p_transction_no = 104; // 浜ゆ槗缂栧彿 // 楠岃瘉搴撲綅鏉$爜 if (p_section_code.IsNullOrEmpty()) throw new Exception("璇锋壂搴撲綅鏉$爜锛�"); @@ -442,7 +443,376 @@ .Where(it => it.BillNo == p_bill_no) .ExecuteCommand(); - if (totalResult < 3) throw new Exception("鎻掑叆澶辫触"); + // 妫�鏌ュ繀瑕佺殑鎻掑叆鎿嶄綔鏄惁閮芥垚鍔熸墽琛� + var minimumExpectedOperations = 3; // 鑷冲皯闇�瑕佹墽琛岀殑鎻掑叆鎿嶄綔鏁� + if (totalResult < minimumExpectedOperations) + throw new Exception($"鍏抽敭鏁版嵁鎻掑叆澶辫触锛岄鏈熻嚦灏憑minimumExpectedOperations}涓搷浣滐紝瀹為檯鎵ц{totalResult}涓搷浣�"); + + return totalResult; + }); + + query.itemNo = c_mes_inv_item_barcodes.ItemNo; + query.Num = c_quantity.Value; + return query; + } + + + /// <summary> + /// 濮斿閫�鏂欐壂鎻忔潯鐮�(鐢熶骇閫�鏂欑殑閫昏緫锛屽彧鏄皟鏁翠簡鍑犱釜瀛楁) + /// </summary> + /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param> + /// <returns>澶勭悊缁撴灉</returns> + public WarehouseQuery WwtlScanBarcode(WarehouseQuery query) + { + var p_item_barcode = query.barcode; // 鐗╂枡鏉$爜 + var p_bill_no = query.billNo; // 鍗曟嵁鍙� + var p_section_code = query.DepotCode; // 搴撲綅缂栫爜 + var c_user = query.userName; // 鐢ㄦ埛鍚� + + var p_bill_type_id = 100; // 鍗曟嵁绫诲瀷ID + var p_transction_no = 104; // 浜ゆ槗缂栧彿 + + // 楠岃瘉搴撲綅鏉$爜 + if (p_section_code.IsNullOrEmpty()) throw new Exception("璇锋壂搴撲綅鏉$爜锛�"); + + // 鑾峰彇搴撲綅淇℃伅 + var c_depot_code = Db.Queryable<MesDepotSections, MesDepots>((a, b) => + new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid)) + .Where((a, b) => a.DepotSectionCode == p_section_code) + .Select((a, b) => b.DepotId).First(); + + if (!c_depot_code.HasValue) + throw new Exception("搴撲綅缂栫爜" + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒"); + + // 鑾峰彇搴撲綅鍒嗗尯淇℃伅 + var mesDepotSections = Db.Queryable<MesDepotSections>() + .Where(a => a.DepotSectionCode == p_section_code).First(); + + if (mesDepotSections == null) + throw new Exception("搴撲綅缂栫爜" + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒"); + + // 鑾峰彇搴撲綅鍩虹淇℃伅 + var c_mes_depots = Db.Queryable<MesDepots>() + .Where(b => b.Guid == mesDepotSections.DepotGuid).First(); + + if (c_mes_depots == null) + throw new Exception("搴撲綅缂栫爜" + p_section_code + " 涓嶅瓨鍦紝璇风‘璁わ紒"); + + // 妫�鏌ユ潯鐮佹槸鍚﹀凡鍏ュ簱 + var c_num = Db.Queryable<MesInvItemIns, MesInvItemInCDetails>((a, b) => + new JoinQueryInfos(JoinType.Inner, a.Guid == b.ItemInId)) + .Where((a, b) => b.ItemBarcode == p_item_barcode + && a.BillTypeId == p_bill_type_id && + a.TransctionNo == p_transction_no.ToString()) + .Count(); + + if (c_num > 0) throw new Exception("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒"); + + c_num = Db.Queryable<MesInvItemStocks>() + .Where(t => t.ItemBarcode == p_item_barcode).Count(); + + if (c_num > 0) throw new Exception("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒"); + + // 鑾峰彇鏉$爜淇℃伅 + var c_mes_inv_item_barcodes = Db.Queryable<MesInvItemBarcodes>() + .Where(t => t.ItemBarcode == p_item_barcode).First(); + + if (c_mes_inv_item_barcodes == null) + throw new Exception("姝ゆ潯鐮佷笉灞炰簬璇ラ��鏂欏崟锛岃鏍稿锛�"); + + // if (c_mes_inv_item_barcodes.Memo != "鐢熶骇閫�鏂�") + // throw new Exception("姝ゆ潯鐮佷笉鏄敓浜ч��鏂欐潯鐮侊紝涓嶅彲浣跨敤鐢熶骇閫�鏂欐ā鍧楋紒"); + + // 鑾峰彇閫�鏂欏崟淇℃伅 + var C_MES_ITEM_TBL = Db.Queryable<MesItemTbl>() + .Where(a => a.BillNo == c_mes_inv_item_barcodes.BillNo + && (a.Tbl013 ?? 0) == 1).First(); + + if (C_MES_ITEM_TBL == null) throw new Exception("鐢宠鍗曞凡鎾ゅ洖,鏃犳硶鎵爜!"); + + if (C_MES_ITEM_TBL.Tbl020 == 1) throw new Exception("鎵爜瀹屾垚,鐢宠鍗曞凡瀹岀粨!"); + + // 鑾峰彇閫�鏂欏崟鏄庣粏 + var C_MES_ITEM_TBL_DETAIL = Db.Queryable<MesItemTblDetail>() + .Where(a => a.Tlmid == C_MES_ITEM_TBL.Id + && a.Tld010 == c_mes_inv_item_barcodes.WorkLine) + .First(); + + if (C_MES_ITEM_TBL_DETAIL == null) + throw new Exception("鏉$爜涓嶅睘浜庤鐢宠鍗曟槑缁�,鏃犳硶鎵爜!"); + + var c_quantity = c_mes_inv_item_barcodes.Quantity; + + var c_bill_no = ""; + var c_id = Guid.Empty; + + // 浣跨敤浜嬪姟澶勭悊鏁版嵁鏇存柊 + UseTransaction(db => + { + // 鏌ヨ鍏ュ簱鍗� + var mesInvItemIns = db.Queryable<MesInvItemIns>() + .Where(d => + d.Status == 0 && d.TransctionNo == + p_transction_no.ToString() + && d.CbillNo == c_mes_inv_item_barcodes.BillNo + && d.DepotsId == c_depot_code + && d.InsDate.Value.ToString("yyyyMMdd") == + DateTime.Now.ToString("yyyyMMdd")).First(); + + var totalResult = 0; + + // 濡傛灉鍏ュ簱鍗曚笉瀛樺湪鍒欏垱寤烘柊鐨勫叆搴撳崟 + if (mesInvItemIns == null) + { + c_bill_no = BillNo.GetBillNo("IN(鍏ュ簱鍗�)"); + + c_id = Guid.NewGuid(); + + totalResult += db.Insertable(new MesInvItemIns + { + Guid = c_id, + BillNo = c_bill_no, + BillTypeId = p_bill_type_id, + UserNoBack = c_user, + Reason = C_MES_ITEM_TBL.Tbl005, + Remark = C_MES_ITEM_TBL.Tbl006, + InsDate = DateTime.Now, + // DepotsCode = c_depot_code, + DepotsId = c_depot_code, + TransctionNo = p_transction_no.ToString(), + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + CbillNo = C_MES_ITEM_TBL.BillNo, + RbillNo = C_MES_ITEM_TBL.Tbl002 + }).IgnoreColumns(true).ExecuteCommand(); + } + else + { + c_id = mesInvItemIns.Guid; + c_bill_no = mesInvItemIns.BillNo; + } + + // 妫�鏌ユ槸鍚︿负鍚堝苟鎵撳嵃鏉$爜 + var hbdy = c_mes_inv_item_barcodes.Hbdy ?? 0; + if (hbdy == 1) throw new Exception("涓嶆敮鎸佸悎骞舵墦鍗扮殑鏉$爜:" + p_item_barcode); + + // 鎻掑叆鍏ュ簱鍗曟槑缁� + totalResult += db.Insertable(new MesInvItemInCDetails + { + Guid = Guid.NewGuid(), + ItemInId = c_id, + BillNo = c_bill_no, + ItemBarcode = p_item_barcode, + Quantity = c_quantity, + BarcodeFlag = true, + EpFlag = true, + WorkType = 1, + ItemId = c_mes_inv_item_barcodes.ItemId, + ItemNo = c_mes_inv_item_barcodes.ItemNo, + LotNo = c_mes_inv_item_barcodes.LotNo, + SuppId = c_mes_inv_item_barcodes.SuppId, + SuppNo = c_mes_inv_item_barcodes.SuppNo, + DepotId = c_mes_depots.DepotId, + DepotCode = c_mes_depots.DepotCode, + DepotSectionCode = p_section_code, + ItemSname = c_mes_inv_item_barcodes.ItemSname, + Unit = c_mes_inv_item_barcodes.Unit, + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + Remark = c_mes_inv_item_barcodes.Memo, + Ebeln = c_mes_inv_item_barcodes.Mblnr, + EbelnLineNo = c_mes_inv_item_barcodes.Zeile, + WorkNo = c_mes_inv_item_barcodes.WorkNo, + WorkLine = c_mes_inv_item_barcodes.WorkLine, + CbillNo = c_mes_inv_item_barcodes.BillNo, + UrgentFlag = c_mes_inv_item_barcodes.UrgentFlag, + BoardStyle = c_mes_inv_item_barcodes.BoardStyle, + TaskNo = c_mes_inv_item_barcodes.TaskNo, + RbillNo = C_MES_ITEM_TBL.Tbl002 + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆涓氬姟璁板綍 + totalResult += db.Insertable(new MesInvBusiness2 + { + Guid = Guid.NewGuid(), + Status = 1, + BillTypeId = p_bill_type_id, + TransactionCode = p_transction_no.ToString(), + BusinessType = 1, + ItemBarcode = p_item_barcode, + ItemNo = c_mes_inv_item_barcodes.ItemNo, + LotNo = c_mes_inv_item_barcodes.LotNo, + EpFlag = true, + Quantity = c_mes_inv_item_barcodes.Quantity, + ToInvDepotsCode = c_mes_depots.DepotCode, + InvDepotId = c_depot_code, + ToInvDepotSectionsCode = p_section_code, + Description = "濮斿閫�鏂�", + CreateBy = c_user, + CreateDate = DateTime.Now, + LastupdateBy = c_user, + LastupdateDate = DateTime.Now, + TaskNo = c_mes_inv_item_barcodes.TaskNo, + BillNo = c_bill_no, + WorkNo = c_mes_inv_item_barcodes.WorkNo, + WorkLine = c_mes_inv_item_barcodes.WorkLine, + SuppId = c_mes_inv_item_barcodes.SuppId, + SuppNo = c_mes_inv_item_barcodes.SuppNo, + ItemId = c_mes_inv_item_barcodes.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鎻掑叆搴撳瓨璁板綍 + totalResult += db.Insertable(new MesInvItemStocks + { + Guid = Guid.NewGuid(), + TaskNo = c_mes_inv_item_barcodes.TaskNo, + ItemBarcode = p_item_barcode, + ItemNo = c_mes_inv_item_barcodes.ItemNo, + LotNo = c_mes_inv_item_barcodes.LotNo, + Quantity = c_mes_inv_item_barcodes.Quantity, + EpFlag = c_mes_inv_item_barcodes.EpFlag.Value + ? (byte)1 + : (byte)0, + DepotId = c_mes_depots.DepotId, + DepotsCode = c_mes_depots.DepotCode, + DepotSectionsCode = p_section_code, + CheckDate = c_mes_inv_item_barcodes.CreateDate, + IndepDate = DateTime.Now, + BoardStyle = c_mes_inv_item_barcodes.BoardStyle, + WorkNo = c_mes_inv_item_barcodes.WorkNo, + WorkLine = c_mes_inv_item_barcodes.WorkLine, + SuppNo = c_mes_inv_item_barcodes.SuppNo, + ItemId = c_mes_inv_item_barcodes.ItemId + }).IgnoreColumns(true).ExecuteCommand(); + + // 鏍规嵁閫�鏂欑被鍨�(鑹搧閫�鏂欍�佹潵鏂欎笉鑹��鏂欍�佷綔涓氫笉鑹��鏂�)鏇存柊鐩稿叧鏁版嵁 + if (C_MES_ITEM_TBL.Tbl005 is "鑹搧閫�鏂�" or "鏉ユ枡涓嶈壇閫�鏂�") + { + // 鑹搧閫�鏂� - 鏇存柊宸ュ崟琛�(WOMDAB)鐩稿叧鏁伴噺 + if (C_MES_ITEM_TBL.Tbl005 == "鑹搧閫�鏂�") + totalResult += Db.Updateable<Womdab>() + .SetColumns(it => new Womdab + { + Dab007 = it.Dab007 - + c_mes_inv_item_barcodes.Quantity, // 鍑忓皯宸ュ崟鏁伴噺 + Dab022 = (it.Dab022 ?? 0) + + c_mes_inv_item_barcodes.Quantity, // 澧炲姞閫�鏂欐暟閲� + LpTl = (it.LpTl ?? 0) + + (int)c_mes_inv_item_barcodes + .Quantity, // 澧炲姞鑹搧閫�鏂欐暟閲� + Dab020 = (it.Dab020 ?? 0) - + c_mes_inv_item_barcodes.Quantity // 鍑忓皯宸插彂鏂欐暟閲� + }) + .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo + && it.Dab002 == c_mes_inv_item_barcodes + .WorkLine + && it.Dab003 == c_mes_inv_item_barcodes + .ItemId.ToString()) + .ExecuteCommand(); + // 鏉ユ枡涓嶈壇閫�鏂� - 鏇存柊宸ュ崟琛�(WOMDAB)鐩稿叧鏁伴噺 + else if (C_MES_ITEM_TBL.Tbl005 == "鏉ユ枡涓嶈壇閫�鏂�") + totalResult += Db.Updateable<Womdab>() + .SetColumns(it => new Womdab + { + Dab007 = it.Dab007 - + c_mes_inv_item_barcodes.Quantity, // 鍑忓皯宸ュ崟鏁伴噺 + Dab022 = (it.Dab022 ?? 0) + + c_mes_inv_item_barcodes.Quantity, // 澧炲姞閫�鏂欐暟閲� + LlBl = (it.LlBl ?? 0) + + (int)c_mes_inv_item_barcodes + .Quantity, // 澧炲姞鏉ユ枡涓嶈壇鏁伴噺 + Dab020 = (it.Dab020 ?? 0) - + c_mes_inv_item_barcodes.Quantity // 鍑忓皯宸插彂鏂欐暟閲� + }) + .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo + && it.Dab002 == c_mes_inv_item_barcodes + .WorkLine + && it.Dab003 == c_mes_inv_item_barcodes + .ItemId.ToString()) + .ExecuteCommand(); + + // 鏇存柊閫�鏂欏崟鏄庣粏琛ㄥ凡閫�鏁伴噺 + totalResult += Db.Updateable<MesItemTblDetail>() + .SetColumns(it => new MesItemTblDetail + { + Tld006 = (it.Tld006 ?? 0) + + (int)c_mes_inv_item_barcodes.Quantity // 澧炲姞宸查��鏁伴噺 + }) + .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id + && it.Tld009 == c_mes_inv_item_barcodes.ItemId + && it.Tld010 == + c_mes_inv_item_barcodes.WorkLine) + .ExecuteCommand(); + } + // 浣滀笟涓嶈壇閫�鏂� - 鏇存柊宸ュ崟琛ㄥ拰閫�鏂欏崟鏄庣粏琛� + else if (C_MES_ITEM_TBL.Tbl005 == "浣滀笟涓嶈壇閫�鏂�") + { + totalResult += Db.Updateable<Womdab>() + .SetColumns(it => new Womdab + { + Dab022 = (it.Dab022 ?? 0) + + c_mes_inv_item_barcodes.Quantity, // 澧炲姞閫�鏂欐暟閲� + ZyBl = (it.ZyBl ?? 0) + + (int)c_mes_inv_item_barcodes + .Quantity, // 澧炲姞浣滀笟涓嶈壇鏁伴噺 + Dab020 = (it.Dab020 ?? 0) - + c_mes_inv_item_barcodes.Quantity // 鍑忓皯宸插彂鏂欐暟閲� + }) + .Where(it => it.Dab001 == c_mes_inv_item_barcodes.WorkNo + && it.Dab002 == + c_mes_inv_item_barcodes.WorkLine + && it.Dab003 == c_mes_inv_item_barcodes.ItemId + .ToString()) + .ExecuteCommand(); + + // 鏇存柊閫�鏂欏崟鏄庣粏琛ㄥ凡閫�鏁伴噺 + totalResult += Db.Updateable<MesItemTblDetail>() + .SetColumns(it => new MesItemTblDetail + { + Tld006 = (it.Tld006 ?? 0) + + (int)c_mes_inv_item_barcodes.Quantity // 澧炲姞宸查��鏁伴噺 + }) + .Where(it => it.Tlmid == C_MES_ITEM_TBL.Id + && it.Tld009 == c_mes_inv_item_barcodes.ItemId + && it.Tld010 == + c_mes_inv_item_barcodes.WorkLine) + .ExecuteCommand(); + } + + // 濡傛灉寰呴��鏁伴噺绛変簬鏈閫�鏂欐暟閲忥紝鍒欐洿鏂版槑缁嗗畬鎴愮姸鎬� + if ((C_MES_ITEM_TBL_DETAIL.Tld005 ?? 0) - + (C_MES_ITEM_TBL_DETAIL.Tld006 ?? 0) == + c_mes_inv_item_barcodes.Quantity) + totalResult += Db.Updateable<MesItemTblDetail>() + .SetColumns(it => new MesItemTblDetail + { Tld008 = 1 }) // 璁剧疆瀹屾垚鏍囧織 + .Where(it => it.Tlid == C_MES_ITEM_TBL_DETAIL.Tlid) + .ExecuteCommand(); + + // 妫�鏌ラ��鏂欏崟鏄惁鎵�鏈夋槑缁嗛兘宸插畬鎴� + var remainingCount = Db.Queryable<MesItemTbl, MesItemTblDetail>( + (a, b) => + new JoinQueryInfos(JoinType.Left, a.Id == b.Tlmid)) + .Where((a, b) => + a.BillNo == p_bill_no && + (b.Tld005 ?? 0) - (b.Tld006 ?? 0) > 0) + .Count(); + + // 濡傛灉鎵�鏈夋槑缁嗛兘宸插畬鎴愶紝鍒欐洿鏂伴��鏂欏崟鐘舵�佷负宸插畬鎴� + if (remainingCount < 1) + totalResult += Db.Updateable<MesItemTbl>() + .SetColumns(it => it.Tbl020 == 1) // 璁剧疆瀹屾垚鏍囧織 + .Where(it => it.BillNo == p_bill_no) + .ExecuteCommand(); + + // 妫�鏌ュ繀瑕佺殑鎻掑叆鎿嶄綔鏄惁閮芥垚鍔熸墽琛� + var minimumExpectedOperations = 3; // 鑷冲皯闇�瑕佹墽琛岀殑鎻掑叆鎿嶄綔鏁� + if (totalResult < minimumExpectedOperations) + throw new Exception($"鍏抽敭鏁版嵁鎻掑叆澶辫触锛岄鏈熻嚦灏憑minimumExpectedOperations}涓搷浣滐紝瀹為檯鎵ц{totalResult}涓搷浣�"); return totalResult; }); -- Gitblit v1.9.3