From caed1e3200578fae1e2ee6c8bf24826707d7596a Mon Sep 17 00:00:00 2001 From: 如洲 陈 <1278080563@qq.com> Date: 星期二, 30 九月 2025 11:10:52 +0800 Subject: [PATCH] 首检巡检和平板自动更新优化 --- MES.Service/service/QC/XJService.cs | 156 +++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 130 insertions(+), 26 deletions(-) diff --git a/MES.Service/service/QC/XJService.cs b/MES.Service/service/QC/XJService.cs index e2fa544..590856b 100644 --- a/MES.Service/service/QC/XJService.cs +++ b/MES.Service/service/QC/XJService.cs @@ -3,6 +3,8 @@ using MES.Service.Modes; using MES.Service.util; using SqlSugar; +using System.Data; +using System.Data.Common; namespace MES.Service.service.QC; @@ -140,7 +142,7 @@ } - public List<QsQaItemXj01> setJYItem(string itemNo) + public List<QsQaItemXj01> setJYItem(string itemNo, decimal? workQty = null) { var db = SqlSugarHelper.GetInstance(); @@ -149,32 +151,70 @@ if (count <= 0) return new List<QsQaItemXj01>(); - return db + // 濡傛灉娌℃湁浼犻�掑伐鍗曟暟閲忥紝灏濊瘯浠庡伐鍗曡〃涓幏鍙� + if (workQty == null || workQty <= 0) + { + // 閫氳繃鐗╂枡缂栫爜锛圖aa002锛夊尮閰嶅伐鍗� + var workOrder = db.Queryable<Womdaa>() + .Where(w => w.Daa002 == itemNo) + .OrderByDescending(w => w.Id) + .First(); + + if (workOrder != null) + { + workQty = workOrder.Daa008; // 宸ュ崟鏁伴噺 + } + } + + // 鍏堣幏鍙栧熀纭�鏁版嵁 + var qualityStandards = db .Queryable<MesQualityStandard>() - .Where(b => b.QsType == "2" - && b.ItemNo == itemNo).Select( - b => new QsQaItemXj01 - { - ProjName = b.ProjName, - ItemMod = b.ItemMod, - InspectionMethod = b.InspectionMethod, - UsingInstruments = b.UsingInstruments, - LevelNum = SqlFunc.IsNull( - SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1), - b.InspectionLevel), - MaxValue = b.MaxValue, - StandardValue = b.StandardValue, - MinValue = b.MinValue, - Notes = b.Notes, - FcheckLevel = b.FcheckLevel, - FacLevel = b.FacLevel, - QsCode = b.QsCode, - QsName = b.QsName, - result = "鏈娴�", - isCheck = 0, - Picture = b.Picture, - Picturename = b.Picturename - }).ToList(); + .Where(b => b.QsType == "2" && b.ItemNo == itemNo) + .ToList(); + + // 鍦ㄥ唴瀛樹腑璁$畻妫�楠屾暟閲� + return qualityStandards.Select(b => { + var calculatedLevelNum = CalculateInspectionQuantity(b.InspectionLevel, workQty); + + return new QsQaItemXj01 + { + ProjName = b.ProjName, + ItemMod = b.ItemMod, + InspectionMethod = b.InspectionMethod, + UsingInstruments = b.UsingInstruments, + LevelNum = calculatedLevelNum, + MaxValue = b.MaxValue, + StandardValue = b.StandardValue, + MinValue = b.MinValue, + Notes = b.Notes, + FcheckLevel = b.FcheckLevel, + FacLevel = b.FacLevel, + QsCode = b.QsCode, + QsName = b.QsName, + result = "鏈娴�", + isCheck = 0, + Picture = b.Picture, + Picturename = b.Picturename + }; + }).ToList(); + } + + /// <summary> + /// 璁$畻妫�楠屾暟閲忥細濡傛灉鎶芥鏁伴噺澶т簬宸ュ崟鏁伴噺锛屽垯妫�楠屾暟閲忎负宸ュ崟鏁伴噺锛屽惁鍒欎负鎶芥鏁伴噺 + /// </summary> + /// <param name="samplingQuantity">鎶芥鏁伴噺</param> + /// <param name="workQty">宸ュ崟鏁伴噺</param> + /// <returns>妫�楠屾暟閲�</returns> + private decimal? CalculateInspectionQuantity(decimal? samplingQuantity, decimal? workQty) + { + // 濡傛灉娌℃湁宸ュ崟鏁伴噺锛屼娇鐢ㄦ娊妫�鏁伴噺 + if (workQty == null || workQty <= 0) + { + return samplingQuantity; + } + + // 濡傛灉鎶芥鏁伴噺澶т簬宸ュ崟鏁伴噺锛屽垯妫�楠屾暟閲忎负宸ュ崟鏁伴噺锛屽惁鍒欎负鎶芥鏁伴噺 + return samplingQuantity > workQty ? workQty : samplingQuantity; } public List<QsQaItemXj01> getJYItem(decimal? pid, decimal? id) @@ -496,11 +536,75 @@ .Where(s => s.Id == detail.Gid) .ExecuteCommand(); }); + + // 鏂板锛氬鏋滃垽瀹氱粨鏋滀负涓嶅悎鏍硷紝璋冪敤瀛樺偍杩囩▼鐢熸垚寮傚父澶勭疆鍗� + if (FcheckResu.Equals("涓嶅悎鏍�")) + { + CallXJUnqualifiedStoredProcedure(detail.Gid, detail.CreateBy); + } } return useTransactionWithOracle; } + /// <summary> + /// 璋冪敤宸℃涓嶅悎鏍煎鐞嗗瓨鍌ㄨ繃绋嬬敓鎴愬紓甯稿缃崟 + /// </summary> + /// <param name="gid">宸℃涓昏〃ID</param> + /// <param name="createBy">鎿嶄綔浜�</param> + private void CallXJUnqualifiedStoredProcedure(decimal? gid, string createBy) + { + try + { + var db = SqlSugarHelper.GetInstance(); + + // 鑾峰彇宸℃鍗曚俊鎭� + var xjInfo = db.Queryable<QsQaItemXj>() + .Where(s => s.Id == gid) + .First(); + + if (xjInfo == 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_Bill_No", xjInfo.BillNo, System.Data.DbType.String, ParameterDirection.Input), + new("p_User", createBy, System.Data.DbType.String, ParameterDirection.Input), + outputResult, + outputMessage + }; + + // 鎵ц瀛樺偍杩囩▼鐢熸垚寮傚父澶勭疆鍗� + db.Ado.ExecuteCommand( + "BEGIN PRC_XJ_EXCEPTION_ORDER(:p_Gid, :p_Bill_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 UpdateQSItemDetail(QsQaItemXj02 detail) { var withOracle = SqlSugarHelper.UseTransactionWithOracle(db => -- Gitblit v1.9.3