From 6b3c4d87c500442f9774904c6a1117fe7cee5b5f Mon Sep 17 00:00:00 2001 From: 如洲 陈 <1278080563@qq.com> Date: 星期三, 24 九月 2025 17:50:40 +0800 Subject: [PATCH] 退货检验平板优化、任务单加序列号 --- MES.Service/service/WomcaaManager.cs | 80 +++++++++++++++++++++++++++++++++------ 1 files changed, 67 insertions(+), 13 deletions(-) diff --git a/MES.Service/service/WomcaaManager.cs b/MES.Service/service/WomcaaManager.cs index cc348ef..36a9a6a 100644 --- a/MES.Service/service/WomcaaManager.cs +++ b/MES.Service/service/WomcaaManager.cs @@ -17,6 +17,31 @@ private readonly WomcabManager _womcabManager = new(); + /// <summary> + /// 楠岃瘉BOM鏄惁涓虹┖ + /// </summary> + /// <param name="erpCabs">BOM鏄庣粏鍒楄〃</param> + /// <param name="billNo">鐢熶骇浠诲姟鍗曞彿</param> + /// <exception cref="Exception">褰揃OM涓虹┖鏃舵姏鍑哄紓甯�</exception> + private void ValidateBomNotEmpty(List<ErpCAB> erpCabs, string billNo) + { + if (erpCabs == null || erpCabs.Count == 0) + { + throw new Exception($"鐢熶骇浠诲姟鍗� {billNo} 鐨凚OM涓虹┖锛屼笉鍏佽鎺ㄩ�佸埌MES绯荤粺"); + } + + // 妫�鏌ユ槸鍚︽湁鏈夋晥鐨凚OM鏄庣粏锛堢墿鏂欑紪鐮佷笉涓虹┖涓旈渶棰嗙敤閲忓ぇ浜�0锛� + var validBomItems = erpCabs.Where(cab => + !string.IsNullOrWhiteSpace(cab.FMaterialID2) && + !string.IsNullOrWhiteSpace(cab.FNeedQty2) && + decimal.TryParse(cab.FNeedQty2, out decimal qty) && qty > 0).ToList(); + + if (validBomItems.Count == 0) + { + throw new Exception($"鐢熶骇浠诲姟鍗� {billNo} 鐨凚OM鏄庣粏鏃犳晥锛堢墿鏂欑紪鐮佷负绌烘垨闇�棰嗙敤閲忎负0锛夛紝涓嶅厑璁告帹閫佸埌MES绯荤粺"); + } + } + public bool SaveList(List<ErpWOM> rohIns) { var result = rohIns.Select(Save).ToList(); @@ -25,9 +50,12 @@ public bool Save(ErpWOM wom) { - var womErpCaa = wom.ErpCaa; + var womErpCaa = wom. ErpCaa; var mesWomcaa = MapErpCAAtoWomcaa(womErpCaa); var mesWomcabs = MapErpCABtoWomcab(wom.ErpCabs); + + // 楠岃瘉BOM鏄惁涓虹┖ + ValidateBomNotEmpty(wom.ErpCabs, womErpCaa.FBillNo); return UseTransaction(db => { @@ -241,27 +269,53 @@ public bool Delete(YFDelete data) { + if (data == null) + throw new ArgumentNullException(nameof(data)); + if (string.IsNullOrWhiteSpace(data.FBillNo)) + throw new ArgumentException("FBillNo 涓嶈兘涓虹┖", nameof(data.FBillNo)); + + if (string.IsNullOrWhiteSpace(data.FBillTypeID)) + throw new ArgumentException("FBillTypeID 涓嶈兘涓虹┖", nameof(data.FBillTypeID)); return UseTransaction(db => { - var update = db.Deleteable<Womcaa>() - .Where(it => it.Caa001 == data.FBillNo && - it.SrcBillType == data.FBillTypeID) - .ExecuteCommand() > 0; + // 鍒犻櫎涓昏〃鏁版嵁 + var deleteMain = db.Deleteable<Womcaa>() + .Where(it => it.Caa001 == data.FBillNo && it.SrcBillType == data.FBillTypeID) + .ExecuteCommand() > 0; - var insertOrUpdate = db.Deleteable<Womcab>() - .Where(it => it.Cab001 == data.FBillNo && - it.Cab002 == data.FBillTypeID) - .ExecuteCommand() > 0; + // 鍒犻櫎瀛愯〃鏁版嵁 + var deleteDetail = db.Deleteable<Womcab>() + .Where(it => it.Cab001 == data.FBillNo && it.Cab002 == data.FBillTypeID) + .ExecuteCommand() > 0; + if (!deleteMain || !deleteDetail) + throw new Exception("鍒犻櫎澶辫触锛氫富琛ㄦ垨瀛愯〃璁板綍涓嶅瓨鍦�"); + // 璋冪敤瀛樺偍杩囩▼杩涜鍚庣画澶勭悊 + var inputParam1 = new SugarParameter("P_WORK_NO", data.FBillNo); + var inputParam2 = new SugarParameter("P_WORK_TYPE", data.FBillTypeID); + var outParam1 = new SugarParameter("C_RESULT", null, true); // 杈撳嚭鍙傛暟 + var outParam2 = new SugarParameter("C_MSG", null, true); // 杈撳嚭鍙傛暟 - if (update && insertOrUpdate) return 1; - throw new NotImplementedException("鍒犻櫎澶辫触"); + db.Ado.ExecuteCommand( + "BEGIN PRC_DELETE_DAA(:P_WORK_NO, :P_WORK_TYPE, :C_RESULT, :C_MSG); END;", + inputParam1, inputParam2, outParam1, outParam2); + + int result = int.Parse((string)outParam1.Value); + string message = outParam2.Value == DBNull.Value ? string.Empty : (string)outParam2.Value; + + if (result == 1) + { + //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊� + db.Ado.RollbackTran(); + throw new Exception(message); + + } + + return 1; }) > 0; - - } -- Gitblit v1.9.3