From eda0c8f74ce453b6e43f88fc92b1e651ce5b6095 Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期四, 13 二月 2025 13:46:33 +0800 Subject: [PATCH] 1.条码表实体类型调整 2.条码库存表实体新增基础字段 3.期初入库新增入库人 --- service/Warehouse/MesItemTblManager.cs | 249 +++++++++++++++++++++++++++---------------------- 1 files changed, 139 insertions(+), 110 deletions(-) diff --git a/service/Warehouse/MesItemTblManager.cs b/service/Warehouse/MesItemTblManager.cs index f5c63c2..10fbaac 100644 --- a/service/Warehouse/MesItemTblManager.cs +++ b/service/Warehouse/MesItemTblManager.cs @@ -7,21 +7,35 @@ namespace NewPdaSqlServer.service.Warehouse; +/// <summary> +/// MES鐗╂枡琛ㄧ鐞嗙被 +/// </summary> public class MesItemTblManager : Repository<MesItemTbl> { - public List<string> GetSCTLBillNo() + /// <summary> + /// 鑾峰彇鐢熶骇閫�鏂欏崟鍙峰垪琛� + /// </summary> + /// <returns>閫�鏂欏崟鍙峰垪琛�</returns> + 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; } + /// <summary> + /// 鏍规嵁鍗曞彿鑾峰彇MES鐗╂枡琛ㄦ槑缁� + /// </summary> + /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param> + /// <returns>鐗╂枡鏄庣粏鍒楄〃</returns> public List<MesItemTblDetail> GetMesItemTblDetailByBillNo( WarehouseQuery query) { + // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛� var mesItemTblDetails = Db .Queryable<MesItemTbl, MesItemTblDetail, MesItems>( (a, b, c) => new JoinQueryInfos( @@ -35,27 +49,32 @@ BillNo = a.BillNo, Tlid = b.Tlid, Tlmid = b.Tlmid, - Tld005 = b.Tld005, - Tld006 = b.Tld006, + 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(); + // 绛涢�夊嚭寰呴��鏁伴噺澶т簬宸查��鏁伴噺鐨勮褰� var itemTblDetails = mesItemTblDetails .Where(s => (s.Tld005 ?? 0) - (s.Tld006 ?? 0) > 0).ToList(); return itemTblDetails; } + /// <summary> + /// 鐢熶骇閫�鏂欐壂鎻忓簱浣� + /// </summary> + /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param> + /// <returns>搴撲綅淇℃伅</returns> public WarehouseQuery SctlScanDepots(WarehouseQuery query) { if (query.DepotCode.IsNullOrEmpty()) - { throw new NullReferenceException("璇锋壂搴撲綅鏉$爜"); - } + // 鍏宠仈鏌ヨ搴撲綅鍒嗗尯鍜屽簱浣嶄俊鎭� var warehouseQuery = Db.Queryable<MesDepotSections, MesDepots>((a, b) => new JoinQueryInfos(JoinType.Inner, a.DepotGuid == b.Guid)) .Where((a, b) => a.DepotSectionCode == query.DepotCode) @@ -63,58 +82,57 @@ { DepotSectionName = a.DepotSectionName, DepotName = b.DepotName, - DepotCode = b.DepotCode, + DepotCode = b.DepotCode }).First(); if (warehouseQuery == null) - { throw new Exception("搴撲綅缂栫爜" + query.DepotCode + " 涓嶅瓨鍦紝璇风‘璁わ紒"); - } return warehouseQuery; } - public bool SctlScanBarcode(WarehouseQuery query) + /// <summary> + /// 鐢熶骇閫�鏂欐壂鎻忔潯鐮� + /// </summary> + /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param> + /// <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; - 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("璇锋壂搴撲綅鏉$爜锛�"); - } + // 楠岃瘉搴撲綅鏉$爜 + 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 @@ -122,63 +140,50 @@ a.TransctionNo == p_transction_no.ToString()) .Count(); - if (c_num > 0) - { - throw new Exception("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒"); - } + 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("姝ゆ潯鐮佸凡鎵叆搴擄紝鍕块噸澶嶆壂鎻忥紒"); - } + 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 == null) throw new Exception("鐢宠鍗曞凡鎾ゅ洖,鏃犳硶鎵爜!"); - if (C_MES_ITEM_TBL.Tbl020 == 1) - { - 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 == @@ -190,6 +195,7 @@ var totalResult = 0; + // 濡傛灉鍏ュ簱鍗曚笉瀛樺湪鍒欏垱寤烘柊鐨勫叆搴撳崟 if (mesInvItemIns == null) { c_bill_no = BillNo.GetBillNo("IN(鍏ュ簱鍗�)"); @@ -222,12 +228,11 @@ c_bill_no = mesInvItemIns.BillNo; } + // 妫�鏌ユ槸鍚︿负鍚堝苟鎵撳嵃鏉$爜 var hbdy = c_mes_inv_item_barcodes.Hbdy ?? 0; - if (hbdy == 1) - { - throw new Exception("涓嶆敮鎸佸悎骞舵墦鍗扮殑鏉$爜:" + p_item_barcode); - } + if (hbdy == 1) throw new Exception("涓嶆敮鎸佸悎骞舵墦鍗扮殑鏉$爜:" + p_item_barcode); + // 鎻掑叆鍏ュ簱鍗曟槑缁� totalResult += db.Insertable(new MesInvItemInCDetails { Guid = Guid.NewGuid(), @@ -264,6 +269,7 @@ RbillNo = C_MES_ITEM_TBL.Tbl002 }).IgnoreColumns(true).ExecuteCommand(); + // 鎻掑叆涓氬姟璁板綍 totalResult += db.Insertable(new MesInvBusiness2 { Guid = Guid.NewGuid(), @@ -293,6 +299,7 @@ ItemId = c_mes_inv_item_barcodes.ItemId }).IgnoreColumns(true).ExecuteCommand(); + // 鎻掑叆搴撳瓨璁板綍 totalResult += db.Insertable(new MesInvItemStocks { Guid = Guid.NewGuid(), @@ -321,46 +328,58 @@ { // 鑹搧閫�鏂� - 鏇存柊宸ュ崟琛�(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 // 鍑忓皯宸插彂鏂欐暟閲� + 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()) + && 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 // 澧炲姞宸查��鏁伴噺 + 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) + && it.Tld009 == c_mes_inv_item_barcodes.ItemId + && it.Tld010 == + c_mes_inv_item_barcodes.WorkLine) .ExecuteCommand(); } // 浣滀笟涓嶈壇閫�鏂� - 鏇存柊宸ュ崟琛ㄥ拰閫�鏂欏崟鏄庣粏琛� @@ -369,62 +388,72 @@ 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 // 鍑忓皯宸插彂鏂欐暟閲� + 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()) + && 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 // 澧炲姞宸查��鏁伴噺 + 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) + && 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) - { + 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 }) // 璁剧疆瀹屾垚鏍囧織 + .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) + 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 ) // 璁剧疆瀹屾垚鏍囧織 + .SetColumns(it => it.Tbl020 == 1) // 璁剧疆瀹屾垚鏍囧織 .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; }); - - // 璁剧疆杩斿洖缁撴灉 - // c_result = $"001[,{c_mes_inv_item_barcodes.ItemNo},{c_quantity},鎵爜鎴愬姛锛�,鍙傝�冨簱浣岪鐗╂枡@寰呴��鏁伴噺{c_in_field_valT}"; - return true; + query.itemNo = c_mes_inv_item_barcodes.ItemNo; + query.Num = c_quantity.Value; + return query; } } \ No newline at end of file -- Gitblit v1.9.3