From 7b84eb64d11b12b6fb41ae7f7085452512ad5d3f Mon Sep 17 00:00:00 2001 From: 南骏 池 <chiffly@163.com> Date: 星期五, 20 六月 2025 08:18:08 +0800 Subject: [PATCH] 1.采购入库优化 --- service/Warehouse/MesInvItemOutsManager.cs | 157 ++++++++++++++++++++++++++++++++-------------------- 1 files changed, 97 insertions(+), 60 deletions(-) diff --git a/service/Warehouse/MesInvItemOutsManager.cs b/service/Warehouse/MesInvItemOutsManager.cs index 14a12de..413e251 100644 --- a/service/Warehouse/MesInvItemOutsManager.cs +++ b/service/Warehouse/MesInvItemOutsManager.cs @@ -2,6 +2,7 @@ using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using NewPdaSqlServer.util; +using Newtonsoft.Json; using SqlSugar; namespace NewPdaSqlServer.service.Warehouse; @@ -339,9 +340,7 @@ } if (!UtilityHelper.CheckGuid(parsedGuid)) - { throw new ApplicationException("鏇存柊閿欒锛屾暟鎹槸涓嶅悎娉曠殑"); - } var userName = entity.userName ?? "system"; return Db.Updateable<MesInvItemOuts>() @@ -376,14 +375,12 @@ { var message = MesToErpParam(query); - // var executeReturnIdentity = - // Db.Insertable(message).ExecuteReturnIdentity(); - // if (executeReturnIdentity > 0) - // { - // message.Id = executeReturnIdentity; - // message.Pid = executeReturnIdentity; - // return message; - // } + var newGuid = Guid.NewGuid(); + message.Guid = newGuid; + message.Pid = newGuid; + var executeReturnIdentity = + Db.Insertable(message).IgnoreColumns(true).ExecuteCommand(); + if (executeReturnIdentity > 0) return message; throw new Exception("鑾峰彇鏁版嵁澶辫触"); } @@ -408,14 +405,17 @@ var dto = new OutItemDto(); - dto.SumItem = GetItems(query); + //dto.SumItem = GetItems(query); var mesInvItemStocks = Db.Queryable<MesInvItemStocks>() .Where(a => a.ItemBarcode == query.barcode).Single(); if (mesInvItemStocks == null) return dto; - dto.ItemNo = mesInvItemStocks.ItemNo; + var mesItems = Db.Queryable<MesItems>() + .Where(s => s.Id == mesInvItemStocks.ItemId).Single(); + + dto.ItemNo = mesItems.ItemNo; dto.Quantity = mesInvItemStocks.Quantity; return dto; @@ -443,6 +443,7 @@ .Where((b, bar, c, d) => b.ItemOutId == parsedGuid) .Select((b, bar, c, d) => new MesInvItemOutCDetails { + Guid = b.Guid, Quantity = b.Quantity, DepotSectionCode = b.DepotSectionCode, DepotCode = b.DepotCode, @@ -464,12 +465,12 @@ var tableName = "MES_INV_ITEM_OUTS_" + query.Type; if ("A".Equals(query.Type)) { - //erpParameters = GetErpParameters(query.billNo); + erpParameters = GetErpParameters(query.id); title = "閲囪喘閫�璐у崟" + query.billNo + "瀹℃牳"; } else if ("B".Equals(query.Type)) { - //erpParameters = GetDeApprovePam(query.id); + erpParameters = GetDeApprovePam(query.id); title = "閲囪喘閫�璐у崟" + query.billNo + "鍙嶅鏍�"; } @@ -492,6 +493,72 @@ ContentType = "application/x-www-form-urlencoded" }; return message; + } + + private string GetErpParameters(string? id) + { + var guid = Guid.Empty; + if (string.IsNullOrEmpty(id)) return ""; + + var isValid = Guid.TryParse(id, out guid); + if (!isValid) + throw new ApplicationException("GUID杞崲閿欒"); + + var materials = Db + .Queryable<MesInvItemOuts, MesInvItemOutItems, + MesItems, MesUnit, MesInvItemArnDetail, MesDepots>( + (a, b, c, d, e, f) => new JoinQueryInfos( + JoinType.Left, a.Guid == b.ItemOutId, + JoinType.Left, b.ItemId == c.Id, + JoinType.Left, d.Id.ToString() == c.ItemUnit, + JoinType.Left, + e.CbillNo == b.WorkNo && e.ItemId == b.ItemId, + JoinType.Left, f.DepotId == a.DepotId + )).Where((a, b, c, d, e, f) => b.Guid == guid) + .Select<Material>((a, b, c, d, e, f) => new Material + { + FMaterialId = c.ItemNo, + FRMREALQTY = b.Quantity.ToString(), + FStockId = f.DepotCode, + FUnitID = d.Fnumber, + FLot = b.WorkNo, + F_MES_ENTRYID = b.Guid, + FsrcEntryId = e.Guid.ToString() + }).ToList(); + + + var mm = Db.Queryable<MesInvItemOuts>() + .Where(a => a.Guid == guid).First(); + + var jsonEntries = materials.Select(d => new + { + d.FMaterialId, + d.FRMREALQTY, + d.FStockId, + d.FUnitID, + d.FLot, + F_MES_ENTRYID = d.F_MES_ENTRYID.ToString(), + d.FsrcEntryId + }).ToList(); + var fdate = DateTime.Now.ToString("yyyy-MM-dd"); + var jsonString = JsonConvert.SerializeObject(jsonEntries); + var encodedUrl = "taskname=CGTL&mesid=" + guid + + "&optype=create&datajson={\"F_MES_ID\":\"" + guid + + "\",\"FDate\":\"" + fdate + + "\",\"FSRCBillTypeId\":\"" + "閲囪喘鍏ュ簱鍗�" + + "\",\"FDESCRIPTION\":\"" + mm.Remark + + "\",\"FMRMODE\":\"" + mm.Fmrmode + + "\",\"cgtlentry\":" + jsonString + + "}"; + return encodedUrl; + } + + private string GetDeApprovePam(string? id) + { + var encodedUrl = "taskname=CGTL&mesid=" + id + + "&optype=delete&datajson={}"; + + return encodedUrl; } public bool ScanCode(WarehouseQuery query) @@ -570,10 +637,7 @@ //璋冪敤瀛樺偍杩囩▼ var prcRfPdaBarcodeCgth = PrcRfPdaBarcodeCgth(query); - if (!prcRfPdaBarcodeCgth) - { - throw new Exception("鎵ц澶辫触"); - } + if (!prcRfPdaBarcodeCgth) throw new Exception("鎵ц澶辫触"); // 鍙橀噺鐢ㄤ簬淇濆瓨鏌ヨ缁撴灉 decimal? C_SQ_QTY = 0; @@ -582,17 +646,15 @@ sql = string.Format(@" SELECT SUM(C.QUANTITY) AS SQ_QTY, SUM(D.QUANTITY_OK) AS OK_QTY - FROM MES_INV_ITEM_OUT_ITEMS C - LEFT JOIN ( - SELECT ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO, SUM(QUANTITY) AS QUANTITY_OK + FROM MES_INV_ITEM_OUT_ITEMS C + LEFT JOIN (SELECT ITEM_OUT_ID, ITEM_ID, PBILL_NO, RK_NO, SUM(QUANTITY) AS QUANTITY_OK FROM MES_INV_ITEM_OUT_C_DETAILS - GROUP BY ITEM_OUT_ID, ITEM_NO, PBILL_NO, RK_NO - ) D - ON D.ITEM_OUT_ID = C.ITEM_OUT_ID - AND D.ITEM_NO = C.ITEM_NO - AND D.RK_NO = C.RK_NO - AND isnull(C.PBILL_NO, '0') = isnull(D.PBILL_NO, '0') - WHERE C.ITEM_OUT_ID = '{0}'", mesInvItemOuts.Guid); + GROUP BY ITEM_OUT_ID, ITEM_ID, PBILL_NO, RK_NO) D + ON D.ITEM_OUT_ID = C.ITEM_OUT_ID + AND D.ITEM_ID = C.ITEM_ID + AND isnull(C.PBILL_NO, '0') = isnull(D.PBILL_NO, '0') + WHERE C.ITEM_OUT_ID = '{0}'", + mesInvItemOuts.Guid); var queryResult = Db.Ado.SqlQuerySingle<dynamic>(sql); @@ -617,10 +679,7 @@ var commit = UseTransaction(db => { - if (string.IsNullOrEmpty(p_bill_no)) - { - throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); - } + if (string.IsNullOrEmpty(p_bill_no)) throw new Exception("璇烽�夊彇鍗曟嵁鍙凤紒"); // Retrieve mes_inv_item_outs var c_mes_inv_item_outs = db.Queryable<MesInvItemOuts>() @@ -628,19 +687,13 @@ .First(); if (c_mes_inv_item_outs == null) - { throw new Exception("璇烽�夋嫨鎴栨壂鎻忔纭殑閲囪喘閫�璐у崟锛�"); - } if (c_mes_inv_item_outs.Status == 0) - { throw new Exception("閲囪喘閫�璐х敵璇峰崟鏈鏍革紒"); - } if (c_mes_inv_item_outs.Nflag == 1) - { throw new Exception("閲囪喘閫�璐у崟宸插畬缁撴帹閫丒RP,涓嶈兘鎿嶄綔锛�"); - } // Check for duplicate barcode scan c_num = db.Queryable<MesInvItemOutCDetails>() @@ -649,10 +702,7 @@ b.ItemOutId == c_mes_inv_item_outs.Guid) .Count(); - if (c_num > 0) - { - throw new Exception("姝ゆ潯鐮佸凡閲囪喘閫�璐ф壂鐮佸畬鎴愶紒"); - } + if (c_num > 0) throw new Exception("姝ゆ潯鐮佸凡閲囪喘閫�璐ф壂鐮佸畬鎴愶紒"); // Query item stock info var c_mes_inv_item_stocks = db.Queryable<MesInvItemStocks>() @@ -660,17 +710,13 @@ .First(); if (c_mes_inv_item_stocks == null) - { throw new Exception($"搴撳瓨涓棤姝ゆ潯鐮侊紝璇锋牳瀵癸紒{p_item_barcode}"); - } // Validate depot codes if (c_mes_inv_item_outs.DepotCode != c_mes_inv_item_stocks.DepotsCode) - { throw new Exception( $"姝ゆ潯鐮佸睘浜庝粨搴� {c_mes_inv_item_stocks.DepotsCode} 涓庨噰璐��璐х敵璇蜂粨搴� {c_mes_inv_item_outs.DepotCode} 涓嶄竴鑷达紝璇锋牳瀵癸紒"); - } C_STOCKNUM = c_mes_inv_item_stocks.Quantity.Value; @@ -678,7 +724,7 @@ var quantities = db.Queryable<MesInvItemOutItems, MesInvItemOuts>( (s, d) => new object[] { - JoinType.Left, s.ItemOutId == d.Guid, + JoinType.Left, s.ItemOutId == d.Guid }) .Where((s, d) => d.ItemOutNo == p_bill_no && @@ -693,9 +739,7 @@ .First(); if (quantities == null) - { throw new Exception("閲囪喘閫�鏂欏崟 '" + p_bill_no + "'鏈鏍�"); - } C_SQTY = quantities.TotalQuantity ?? 0; C_OKQTY = quantities.CompletedQuantity ?? 0; @@ -704,7 +748,7 @@ if (C_CQTY < C_STOCKNUM) return 1; // Handle barcode reduction - decimal p_number2 = C_STOCKNUM; + var p_number2 = C_STOCKNUM; var itemOutItems = db.Queryable<MesInvItemOutItems>() .Where(s => s.ItemOutId == c_mes_inv_item_outs.Guid && @@ -729,9 +773,7 @@ .First(); if (c_mes_inv_item_arn_detail == null) - { throw new Exception("鏈壘鍒伴噰璐��鏂欐潵婧愬崟鎹�"); - } if (CMI.Quantity - CMI.TlQty <= p_number2) { @@ -792,15 +834,13 @@ TaskNo = CMI.WorkNo, ItemId = c_mes_inv_item_stocks.ItemId, EbelnK3id = c_mes_inv_item_stocks.EbelnK3id, - LineK3id = c_mes_inv_item_stocks.LineK3id, + LineK3id = c_mes_inv_item_stocks.LineK3id }).IgnoreColumns(true).ExecuteCommand(); if (p_number2 == 0) - { db.Deleteable<MesInvItemStocks>() .Where(s => s.Guid == c_mes_inv_item_outs.Guid) .ExecuteCommand(); - } } else { @@ -865,16 +905,13 @@ SuppId = c_mes_inv_item_outs.SuppId.ToString(), ItemId = c_mes_inv_item_stocks.ItemId, EbelnK3id = c_mes_inv_item_stocks.EbelnK3id, - LineK3id = c_mes_inv_item_stocks.LineK3id, + LineK3id = c_mes_inv_item_stocks.LineK3id }).IgnoreColumns(true).ExecuteCommand(); p_number2 = 0; } } - if (p_number2 > 0) - { - throw new Exception("鐗╂枡鏁伴噺灏嗚秴閲囪喘閫�鏂欑敵璇峰崟鏁伴噺,鏃犳硶鍑哄簱"); - } + if (p_number2 > 0) throw new Exception("鐗╂枡鏁伴噺灏嗚秴閲囪喘閫�鏂欑敵璇峰崟鏁伴噺,鏃犳硶鍑哄簱"); return 1; }); -- Gitblit v1.9.3