From fba48d2d676cd9b6d493163aef9d87f6e5090aee Mon Sep 17 00:00:00 2001 From: 如洲 陈 <1278080563@qq.com> Date: 星期五, 12 九月 2025 19:02:00 +0800 Subject: [PATCH] 出库检和退货检验 --- MES.Service/service/QC/RKJService.cs | 232 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 213 insertions(+), 19 deletions(-) diff --git a/MES.Service/service/QC/RKJService.cs b/MES.Service/service/QC/RKJService.cs index ca300f8..70d4478 100644 --- a/MES.Service/service/QC/RKJService.cs +++ b/MES.Service/service/QC/RKJService.cs @@ -3,6 +3,7 @@ using MES.Service.Modes; using MES.Service.util; using SqlSugar; +using System.Data; namespace MES.Service.service.QC; @@ -367,46 +368,239 @@ return commit; }); + // 娉ㄩ噴鎺夎嚜鍔ㄦ彁浜ら�昏緫锛屾敼涓烘墜鍔ㄦ彁浜� + // var isNull = db.Queryable<QsItemOqcItem>() + // .Where(s => s.Pid == detail.Gid && s.IsPass == null).Count(); + // + // if (isNull > 0) return 1; + // + // + // //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟 + // var sum = db.Queryable<QsItemOqcItem>() + // .Where(s => s.Pid == detail.Gid).Count(); + // + // if (sum == 0) return 1; + // + // //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁� + // var icount = db.Queryable<QsItemOqcItem>() + // .Where(s => s.Pid == detail.Gid && s.IsPass == 1).Count(); + // + // var FcheckResu = "涓嶅悎鏍�"; + // + // //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 + // if (sum == icount) + // //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 + // FcheckResu = "鍚堟牸"; + // + // SqlSugarHelper.UseTransactionWithOracle(db => + // { + // return db.Updateable<QsItemOqcReq>() + // .SetColumns(s => s.FcheckResu == FcheckResu) + // .SetColumns(s => s.FcheckDate == DateTime.Now) + // .SetColumns(s => s.FcheckBy == detail.CreateBy) + // .SetColumns(s => s.LastupdateBy == detail.CreateBy) + // .SetColumns(s => s.LastupdateDate == DateTime.Now) + // .Where(s => s.Id == detail.Gid) + // .ExecuteCommand(); + // }); + // + // if (FcheckResu.Equals("涓嶅悎鏍�")) + // //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥 + // saveDetect02(detail.Gid, detail.CreateBy); + + return useTransactionWithOracle; + } + + /// <summary> + /// 鎵嬪姩鎻愪氦鍏ュ簱妫�缁撴灉 + /// </summary> + /// <param name="gid">鍏ュ簱妫�涓昏〃ID</param> + /// <param name="userNo">鎿嶄綔浜�</param> + /// <returns>鎻愪氦缁撴灉</returns> + public int SubmitRKJResult(decimal? gid, string userNo) + { + var db = SqlSugarHelper.GetInstance(); + + // 妫�鏌ユ槸鍚︽墍鏈夋楠岄」鐩兘宸插畬鎴� var isNull = db.Queryable<QsItemOqcItem>() - .Where(s => s.Pid == detail.Gid && s.IsPass == null).Count(); + .Where(s => s.Pid == gid && s.IsPass == null).Count(); - if (isNull > 0) return 1; + if (isNull > 0) + { + throw new Exception("杩樻湁妫�楠岄」鐩湭瀹屾垚锛屾棤娉曟彁浜�"); + } - - //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟 + // 鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟 var sum = db.Queryable<QsItemOqcItem>() - .Where(s => s.Pid == detail.Gid).Count(); + .Where(s => s.Pid == gid).Count(); - if (sum == 0) return 1; + if (sum == 0) + { + throw new Exception("娌℃湁妫�楠岄」鐩紝鏃犳硶鎻愪氦"); + } - //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁� + // 鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁� var icount = db.Queryable<QsItemOqcItem>() - .Where(s => s.Pid == detail.Gid && s.IsPass == 1).Count(); + .Where(s => s.Pid == gid && s.IsPass == 1).Count(); var FcheckResu = "涓嶅悎鏍�"; - //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 + // 瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾 if (sum == icount) - //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 + // 鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸 FcheckResu = "鍚堟牸"; - SqlSugarHelper.UseTransactionWithOracle(db => + Console.WriteLine($"妫�楠岀粨鏋滃垽瀹�: 鎬婚」鐩暟={sum}, 鍚堟牸椤圭洰鏁�={icount}, 鍒ゅ畾缁撴灉={FcheckResu}"); + + var result = SqlSugarHelper.UseTransactionWithOracle(db => { - return db.Updateable<QsItemOqcReq>() + var updateResult = db.Updateable<QsItemOqcReq>() .SetColumns(s => s.FcheckResu == FcheckResu) .SetColumns(s => s.FcheckDate == DateTime.Now) - .SetColumns(s => s.FcheckBy == detail.CreateBy) - .SetColumns(s => s.LastupdateBy == detail.CreateBy) + .SetColumns(s => s.FcheckBy == userNo) + .SetColumns(s => s.LastupdateBy == userNo) .SetColumns(s => s.LastupdateDate == DateTime.Now) - .Where(s => s.Id == detail.Gid) + .Where(s => s.Id == gid) .ExecuteCommand(); + + // 濡傛灉涓嶅悎鏍硷紝鍦ㄤ簨鍔″唴璋冪敤瀛樺偍杩囩▼鐢熸垚寮傚父澶勭疆鍗� + if (FcheckResu.Equals("涓嶅悎鏍�")) + { + CallRKJUnqualifiedStoredProcedureInTransaction(db, gid, userNo); + } + + return updateResult; }); - if (FcheckResu.Equals("涓嶅悎鏍�")) - //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥 - saveDetect02(detail.Gid, detail.CreateBy); + return result; + } - return useTransactionWithOracle; + /// <summary> + /// 璋冪敤鍏ュ簱妫�涓嶅悎鏍煎瓨鍌ㄨ繃绋嬶紙浜嬪姟鍐呰皟鐢級 + /// </summary> + /// <param name="db">鏁版嵁搴撹繛鎺�</param> + /// <param name="gid">鍏ュ簱妫�涓昏〃ID</param> + /// <param name="userNo">鎿嶄綔浜�</param> + private void CallRKJUnqualifiedStoredProcedureInTransaction(ISqlSugarClient db, decimal? gid, string userNo) + { + try + { + Console.WriteLine($"寮�濮嬭皟鐢ㄥ叆搴撴涓嶅悎鏍煎瓨鍌ㄨ繃绋嬶紝gid: {gid}, userNo: {userNo}"); + + // 鑾峰彇鍏ュ簱妫�鍗曚俊鎭� + var rkjInfo = db.Queryable<QsItemOqcReq>() + .Where(s => s.Id == gid) + .First(); + + if (rkjInfo == null) + { + Console.WriteLine($"鏈壘鍒板叆搴撴鍗曚俊鎭紝gid: {gid}"); + return; + } + + Console.WriteLine($"鎵惧埌鍏ュ簱妫�鍗曚俊鎭紝ReleaseNo: {rkjInfo.ReleaseNo}"); + + // 瀹氫箟杈撳嚭鍙傛暟 + var outputResult = new SugarParameter("o_Result", null, + System.Data.DbType.Int32, ParameterDirection.Output, 4000); + + var outputMessage = new SugarParameter("o_Msg", null, + System.Data.DbType.String, ParameterDirection.Output, 4000); + + // 瀹氫箟杈撳叆鍙傛暟 + var parameters = new List<SugarParameter> + { + new("p_Gid", gid, System.Data.DbType.Decimal, ParameterDirection.Input), + new("p_Release_No", rkjInfo.ReleaseNo, System.Data.DbType.String, ParameterDirection.Input), + new("p_User", userNo, System.Data.DbType.String, ParameterDirection.Input), + outputResult, + outputMessage + }; + + Console.WriteLine($"鍑嗗鎵ц瀛樺偍杩囩▼锛屽弬鏁�: gid={gid}, releaseNo={rkjInfo.ReleaseNo}, userNo={userNo}"); + + // 鎵ц瀛樺偍杩囩▼ + db.Ado.ExecuteCommand( + "BEGIN PRC_MES_RKJ_UNQUALIFIED(:p_Gid, :p_Release_No, :p_User, :o_Result, :o_Msg); END;", + parameters.ToArray()); + + // 鑾峰彇杈撳嚭鍙傛暟鐨勫�� + var resultValue = outputResult.Value?.ToString(); + var messageValue = outputMessage.Value?.ToString(); + + Console.WriteLine($"瀛樺偍杩囩▼鎵ц瀹屾垚锛岀粨鏋�: {resultValue}, 娑堟伅: {messageValue}"); + + if ("1".Equals(resultValue)) + { + throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {messageValue}"); + } + + Console.WriteLine("鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愭垚鍔�"); + } + catch (Exception ex) + { + Console.WriteLine($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}"); + // 鍦ㄤ簨鍔″唴锛屽鏋滃瓨鍌ㄨ繃绋嬭皟鐢ㄥけ璐ワ紝搴旇鎶涘嚭寮傚父浠ュ洖婊氫簨鍔� + throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}"); + } + } + + /// <summary> + /// 璋冪敤鍏ュ簱妫�涓嶅悎鏍煎瓨鍌ㄨ繃绋嬶紙浜嬪姟澶栬皟鐢紝鐢ㄤ簬鍏煎锛� + /// </summary> + /// <param name="gid">鍏ュ簱妫�涓昏〃ID</param> + /// <param name="userNo">鎿嶄綔浜�</param> + private void CallRKJUnqualifiedStoredProcedure(decimal? gid, string userNo) + { + try + { + var db = SqlSugarHelper.GetInstance(); + + // 鑾峰彇鍏ュ簱妫�鍗曚俊鎭� + var rkjInfo = db.Queryable<QsItemOqcReq>() + .Where(s => s.Id == gid) + .First(); + + if (rkjInfo == null) return; + + // 瀹氫箟杈撳嚭鍙傛暟 + var outputResult = new SugarParameter("o_Result", null, + System.Data.DbType.Int32, ParameterDirection.Output, 4000); + + var outputMessage = new SugarParameter("o_Msg", null, + System.Data.DbType.String, ParameterDirection.Output, 4000); + + // 瀹氫箟杈撳叆鍙傛暟 + var parameters = new List<SugarParameter> + { + new("p_Gid", gid, System.Data.DbType.Decimal, ParameterDirection.Input), + new("p_Release_No", rkjInfo.ReleaseNo, System.Data.DbType.String, ParameterDirection.Input), + new("p_User", userNo, System.Data.DbType.String, ParameterDirection.Input), + outputResult, + outputMessage + }; + + // 鎵ц瀛樺偍杩囩▼ + db.Ado.ExecuteCommand( + "BEGIN PRC_MES_RKJ_UNQUALIFIED(:p_Gid, :p_Release_No, :p_User, :o_Result, :o_Msg); END;", + parameters.ToArray()); + + // 鑾峰彇杈撳嚭鍙傛暟鐨勫�� + var resultValue = outputResult.Value?.ToString(); + var messageValue = outputMessage.Value?.ToString(); + + if ("1".Equals(resultValue)) + { + throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {messageValue}"); + } + } + catch (Exception ex) + { + // 璁板綍鏃ュ織浣嗕笉褰卞搷涓绘祦绋� + Console.WriteLine($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}"); + // 鍙互鏍规嵁闇�瑕佸喅瀹氭槸鍚︽姏鍑哄紓甯� + // throw new Exception($"鍏ュ簱妫�寮傚父澶勭疆鍗曠敓鎴愬け璐�: {ex.Message}"); + } } public int saveDetect02(decimal? gid, string? createBy) -- Gitblit v1.9.3