From fa7bc52240a52b1d0ab1b8a1746243fe56fdd043 Mon Sep 17 00:00:00 2001 From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU> Date: 星期四, 11 九月 2025 15:06:58 +0800 Subject: [PATCH] 委外领料:1.显示当前组织2.添加工单查询列表3.添加库位列表4.(待发物料)和(物料总清单)更改为(待扫物料)和(已扫物料)5.查询列表与带出明细改为存储过程 --- service/Warehouse/MesItemTblManager.cs | 890 +++++++++------------------------------------------------- 1 files changed, 143 insertions(+), 747 deletions(-) diff --git a/service/Warehouse/MesItemTblManager.cs b/service/Warehouse/MesItemTblManager.cs index 0df7b9a..f3c05df 100644 --- a/service/Warehouse/MesItemTblManager.cs +++ b/service/Warehouse/MesItemTblManager.cs @@ -2,8 +2,12 @@ using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; +using NewPdaSqlServer.entity.Base; using NewPdaSqlServer.util; using SqlSugar; +using System.Data; +using System.Data.SqlClient; +using System.Security.Cryptography; namespace NewPdaSqlServer.service.Warehouse; @@ -16,15 +20,34 @@ /// 鑾峰彇鐢熶骇閫�鏂欏崟鍙峰垪琛� /// </summary> /// <returns>閫�鏂欏崟鍙峰垪琛�</returns> - public List<string> GetSCTLBillNo(WarehouseQuery query) + public dynamic GetSCTLBillNo(WarehouseQuery query, dynamic RequestInfo) { - var list = Db.Queryable<MesItemTbl>() - .Where(s => (s.Tbl013 ?? 0) == 1 // 瀹℃牳閫氳繃 - && (s.Tbl020 ?? 0) == 0 - && s.Tbl008 == query.Type) - .Select(s => s.BillNo).ToList(); + var orgId = RequestInfo.OrgId; - return list; + if (orgId == null) + throw new Exception("缁勭粐涓嶅瓨鍦紒"); + + // 鑾峰彇鏈畬鎴愮殑閫�鏂欏崟鍙峰垪琛� + var parameters = new[] + { + new SugarParameter("@pi_orgId", orgId), + new SugarParameter("@type", query.Type), + new SugarParameter("@inP1", null), + new SugarParameter("@inP2", null), + new SugarParameter("@inP3", null), + new SugarParameter("@inP4", null) + }; + try + { + // 杩斿洖鍗曞彿瀛楃涓插垪琛� + var blDetails = Db.Ado.SqlQuery<string>( + "EXEC prc_pda_sctl_list @pi_orgId,@type,@inP1,@inP2,@inP3,@inP4", parameters); + return blDetails; + } + catch (Exception ex) + { + throw new Exception($"{ex.Message}"); + } } /// <summary> @@ -32,36 +55,50 @@ /// </summary> /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param> /// <returns>鐗╂枡鏄庣粏鍒楄〃</returns> - public List<MesItemTblDetail> GetMesItemTblDetailByBillNo( - WarehouseQuery query) + public dynamic GetMesItemTblDetailByBillNo(dynamic query, dynamic RequestInfo) { - // 鍏宠仈鏌ヨ鐗╂枡琛ㄣ�佺墿鏂欐槑缁嗚〃鍜岀墿鏂欏熀纭�淇℃伅琛� - var mesItemTblDetails = Db - .Queryable<MesItemTbl, MesItemTblDetail, MesItems>( - (a, b, c) => new JoinQueryInfos( - JoinType.Left, - a.Id == b.Tlmid, - JoinType.Left, - b.Tld009 == c.Id) - ).Where((a, b, c) => a.BillNo == query.billNo) - .Select<MesItemTblDetail>((a, b, c) => new MesItemTblDetail + if (string.IsNullOrEmpty(query.billNo)) + throw new Exception("璇烽�夊崟鎹彿锛�"); + + if (query == null) + throw new ArgumentNullException(nameof(query), "鍙傛暟瀵硅薄涓嶈兘涓簄ull"); + + if (string.IsNullOrEmpty(query.billNo?.ToString())) + throw new ArgumentException("鍗曟嵁鍙蜂笉鑳戒负绌�", nameof(query.billNo)); + + var orgId = RequestInfo.OrgId; + + if (orgId == null) + throw new Exception("缁勭粐涓嶅瓨鍦紒"); + + // 鑾峰彇鏈畬鎴愮殑閿�鍞��璐ф槑缁� + var parameters = new[] +{ + new SugarParameter("@billNo", query.billNo), + new SugarParameter("@pi_orgId",orgId), + new SugarParameter("@inP1", null), + new SugarParameter("@inP2", null), + new SugarParameter("@inP3", null), + new SugarParameter("@inP4", null) + }; + try + { + List<dynamic>? blDetails = Db.Ado.SqlQuery<dynamic>( + "EXEC prc_pda_sctl_detailList @billNo,@pi_orgId,@inP1,@inP2,@inP3,@inP4", parameters); + var items = blDetails.Where(x => x.DSQty > 0).ToList(); // 寰呮壂鐗╂枡 + var ysitems = blDetails.Where(x => x.SQty > 0).ToList(); // 宸叉壂鐗╂枡 + return new { - BillNo = a.BillNo, - Tlid = b.Tlid, - Tlmid = b.Tlmid, - Tld005 = b.Tld005 ?? 0, // 寰呴��鏁伴噺 - Tld006 = b.Tld006 ?? 0, // 宸查��鏁伴噺 - Tld009 = b.Tld009, - 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; + items = items, + ysitems = ysitems, + Count = items.Count + ysitems.Count + }; + } + catch (Exception ex) + { + // 淇濆紓甯稿鐞嗛�昏緫 + throw new Exception($"{ex.Message}"); + } } /// <summary> @@ -96,731 +133,90 @@ /// </summary> /// <param name="query">浠撳簱鏌ヨ鍙傛暟</param> /// <returns>澶勭悊缁撴灉</returns> - public WarehouseQuery SctlScanBarcode(WarehouseQuery query) + public dynamic SctlScanBarcode(WarehouseQuery query,dynamic RequestInfo) { - 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) + // 楠岃瘉鏉$爜淇℃伅 + var barcode = Db.Queryable<MesInvItemBarcodes>() + .Where(x => x.ItemBarcode == query.barcode) .First(); + if (barcode == null) + throw new Exception($"鏃犳鏉$爜锛岃鏍稿锛亄query.barcode}"); - 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; - }); - - 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) + // 楠岃瘉鐗╂枡淇℃伅 + var item = Db.Queryable<MesItems>() + .Where(x => x.Id == barcode.ItemId) .First(); + if (item == null) + throw new Exception($"鏃犳鐗╂枡锛岃鏍稿锛亄query.barcode}"); - if (C_MES_ITEM_TBL_DETAIL == null) - throw new Exception("鏉$爜涓嶅睘浜庤鐢宠鍗曟槑缁�,鏃犳硶鎵爜!"); + // 楠岃瘉閫�鏂欏崟淇℃伅 + var returnOrder = Db.Queryable<MesItemTbl>() + .Where(x => x.BillNo == query.billNo && (x.Tbl013 ?? 0) == 1) + .First(); + if (returnOrder == null) + throw new Exception("鐢宠鍗曞凡鎾ゅ洖,鏃犳硶鎵爜!"); - var c_quantity = c_mes_inv_item_barcodes.Quantity; + if (returnOrder.Tbl020 == 1) + throw new Exception("鎵爜瀹屾垚,鐢宠鍗曞凡瀹岀粨!"); - var c_bill_no = ""; - var c_id = Guid.Empty; + // 楠岃瘉缁勭粐鏄惁瀛樺湪 + var orgId = RequestInfo.OrgId; - // 浣跨敤浜嬪姟澶勭悊鏁版嵁鏇存柊 - UseTransaction(db => + if (orgId == null) + throw new Exception("缁勭粐涓嶅瓨鍦紒"); + + // 鐢熶骇閫�鏂� + using (var conn = new SqlConnection(DbHelperSQL.strConn)) + using (var cmd = new SqlCommand("PRC_PDA_SCTL", conn)) { - // 鏌ヨ鍏ュ簱鍗� - 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) + try { - c_bill_no = BillNo.GetBillNo("IN(鍏ュ簱鍗�)"); + conn.Open(); + cmd.CommandType = CommandType.StoredProcedure; - c_id = Guid.NewGuid(); - - totalResult += db.Insertable(new MesInvItemIns + var parameters = new[] { - 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 + new SqlParameter("@PI_USER", query.userName), + new SqlParameter("@PI_BARCODE", query.barcode), + new SqlParameter("@PI_BILL_NO", query.billNo), + new SqlParameter("@PI_SECTION_CODE", query.DepotCode), + new SqlParameter("@pi_orgId", orgId), + new SqlParameter("@PI_INP1", DBNull.Value), + new SqlParameter("@PI_INP2", DBNull.Value), + new SqlParameter("@PO_OUT_MSG", SqlDbType.NVarChar) { Direction = ParameterDirection.Output, Size = 2000 }, + new SqlParameter("@PO_OUT_SUM", SqlDbType.Int) { Direction = ParameterDirection.Output }, + new SqlParameter("@PO_ITEM_NO", SqlDbType.NVarChar) { Direction = ParameterDirection.Output, Size = 100 }, + new SqlParameter("@PO_QUANTITY", SqlDbType.Decimal) { - 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(); + Direction = ParameterDirection.Output, + Precision = 18, // 鏍规嵁瀹為檯鏁版嵁搴撶簿搴﹁皟鏁� + Scale = 10 // 鏍规嵁瀹為檯鏁版嵁搴撳皬鏁颁綅璋冩暣 + } + }; + + cmd.Parameters.AddRange(parameters); + cmd.ExecuteNonQuery(); + + var outMsg = parameters[7].Value?.ToString() ?? string.Empty; + var outSum = parameters[8].Value != DBNull.Value ? Convert.ToInt32(parameters[8].Value) : -1; + var itemNo = parameters[9].Value?.ToString() ?? string.Empty; + var quantity = parameters[10].Value != DBNull.Value ? Convert.ToDecimal(parameters[10].Value) : 0m; + + if (outSum == -1) throw new Exception(outMsg); + + query.itemNo = itemNo; + query.Num = quantity; + query.message = outMsg; + return query; } - // 浣滀笟涓嶈壇閫�鏂� - 鏇存柊宸ュ崟琛ㄥ拰閫�鏂欏崟鏄庣粏琛� - 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; - }); - - query.itemNo = c_mes_inv_item_barcodes.ItemNo; - query.Num = c_quantity.Value; - return query; + catch (Exception ex) + { + throw new Exception(ex.Message); + } + finally + { + conn.Close(); + } + } } } \ No newline at end of file -- Gitblit v1.9.3