From ff636d822e327602f0c9a609d5f6d01cc22e5e86 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期一, 05 八月 2024 15:02:22 +0800 Subject: [PATCH] 增加可以临时存储数据库提交操作,待需要的时候再提交 --- Tiger.Business.MES/Transaction/CollectNode.cs | 16 +------ Tiger.Business.MES/Transaction/PackingNode.cs | 18 ++------- Tiger.Business.MES/Transaction/Position.cs | 43 +++++++++++++++++++++ Tiger.Business.MES/WorkAction/PackingAction.cs | 6 --- Tiger.IBusiness/MES/Transaction/IPosition.cs | 4 ++ Tiger.Business.MES/Transaction/TestNode.cs | 16 +------ 6 files changed, 57 insertions(+), 46 deletions(-) diff --git a/Tiger.Business.MES/Transaction/CollectNode.cs b/Tiger.Business.MES/Transaction/CollectNode.cs index 3088aa4..09d71f1 100644 --- a/Tiger.Business.MES/Transaction/CollectNode.cs +++ b/Tiger.Business.MES/Transaction/CollectNode.cs @@ -216,7 +216,7 @@ //鏉$爜杩囩珯 wipSN.AUTH_ORG = CurBatch.WO.AUTH_ORG; wipSN.AUTH_PROD = CurLine.LINE_CODE; - wipSN.STATUS = wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS; + wipSN.STATUS = MES_WIP_DATA.STATUSs.OK.GetValue();//wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS; wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE; wipSN.NODE_ID = curNode.ID; wipSN.NODE_NAME = curNode.NODE_NAME; @@ -373,18 +373,8 @@ public ApiAction<SubmitOutput> DoIfFinishAllSteps(ApiAction<SubmitOutput> action) { //淇濆瓨鏁版嵁搴� - var dbTran = GetCommitDB().UseTran(() => - { - //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁 - foreach (var step in Steps.OrderBy(q => q.Sequence)) - { - step.DBSubmitAction.Invoke(); - } - }); - if (!dbTran.IsSuccess) - { - throw dbTran.ErrorException; - } + SaveStepsCommitActionToDB(); + //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭� //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()); action.LocaleMsg = new("MES.Transaction.CollectNode.ScanSn.PassSuccess", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME,CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()); diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs index 6a65b6c..b6b5ba4 100644 --- a/Tiger.Business.MES/Transaction/PackingNode.cs +++ b/Tiger.Business.MES/Transaction/PackingNode.cs @@ -240,8 +240,8 @@ //鏉$爜杩囩珯 wipSN.AUTH_ORG = CurBatch.WO.AUTH_ORG; wipSN.AUTH_PROD = CurLine.LINE_CODE; - wipSN.STATUS = wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS; - wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE; + wipSN.STATUS = MES_WIP_DATA.STATUSs.OK.GetValue();//wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS; + wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE; wipSN.NODE_ID = curNode.ID; wipSN.NODE_NAME = curNode.NODE_NAME; wipSN.FTY_CODE = CurFactory.FTY_CODE; @@ -396,18 +396,8 @@ public ApiAction<SubmitOutput> DoIfFinishAllSteps(ApiAction<SubmitOutput> action) { //淇濆瓨鏁版嵁搴� - var dbTran = GetCommitDB().UseTran(() => - { - //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁 - foreach (var step in Steps.OrderBy(q => q.Sequence)) - { - step.DBSubmitAction.Invoke(); - } - }); - if (!dbTran.IsSuccess) - { - throw dbTran.ErrorException; - } + SaveStepsCommitActionToDB(); + //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭� //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()); action.LocaleMsg = new("MES.Transaction.PackingNode.ScanSn.PassSuccess", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()); diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs index 95596c4..ccd93fd 100644 --- a/Tiger.Business.MES/Transaction/Position.cs +++ b/Tiger.Business.MES/Transaction/Position.cs @@ -65,6 +65,12 @@ public bool IsFinishAllSteps => !Steps.Any() || !Steps.Any(q => !q.IsFinished); //public int CurStep => Steps.Where(q => !q.IsFinished).OrderBy(q => q.Sequence).FirstOrDefault()?.Sequence ?? 0; private DbClient CommitDB; + /// <summary> + /// 鏄惁闇�瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽緟闇�瑕佺殑鏃跺�欏啀鎻愪氦 + /// </summary> + public bool NeedTemporaryStoreDBCommitAction { get; set; } = false; + protected List<Action> DBCommitList { get; set; } = new(); + #endregion Propertys & Variables #region Functions @@ -321,6 +327,43 @@ } /// <summary> + /// 淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版暟鎹簱 + /// </summary> + protected void SaveStepsCommitActionToDB() + { + //淇濆瓨宸ユ鐨勬暟鎹簱鎻愪氦鎿嶄綔鍒版彁浜ゆ搷浣滃垪琛� + foreach (var step in Steps.OrderBy(q => q.Sequence)) + { + DBCommitList.Add(step.DBSubmitAction); + } + //濡傛灉涓嶉渶瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽垯鎶婃彁浜ゆ搷浣滃垪琛ㄦ彁浜ゅ埌鏁版嵁搴� + if (!NeedTemporaryStoreDBCommitAction) + { + //鎭㈠涓存椂瀛樺偍鏍囪涓篺alse + NeedTemporaryStoreDBCommitAction = false; + + var dbTran = GetCommitDB().UseTran(() => + { + //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁 + foreach (var action in DBCommitList) + { + action.Invoke(); + } + }); + if (dbTran.IsSuccess) + { + //淇濆瓨鎴愬姛鍒欐竻绌烘彁浜ゆ搷浣滃垪琛� + DBCommitList.Clear(); + } + else + { + //鎶涘嚭寮傚父 + throw dbTran.ErrorException; + } + } + } + + /// <summary> /// 鑾峰彇鎵撳嵃鏍囩妯℃澘杩囩▼鍙橀噺鍊� /// </summary> /// <param name="labelPVs">杩囩▼鍙橀噺鍒楄〃</param> diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs index 6d34732..fee2960 100644 --- a/Tiger.Business.MES/Transaction/TestNode.cs +++ b/Tiger.Business.MES/Transaction/TestNode.cs @@ -217,7 +217,7 @@ //鏉$爜杩囩珯 wipSN.AUTH_ORG = CurBatch.WO.AUTH_ORG; wipSN.AUTH_PROD = CurLine.LINE_CODE; - wipSN.STATUS = wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS; + wipSN.STATUS = MES_WIP_DATA.STATUSs.OK.GetValue();//wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS; wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE; wipSN.NODE_ID = curNode.ID; wipSN.NODE_NAME = curNode.NODE_NAME; @@ -373,18 +373,8 @@ public ApiAction<SubmitOutput> DoIfFinishAllSteps(ApiAction<SubmitOutput> action) { //淇濆瓨鏁版嵁搴� - var dbTran = GetCommitDB().UseTran(() => - { - //鍦ㄥ悓涓�涓簨鍔′腑淇濆瓨鎵�鏈夊伐姝ョ殑鏁版嵁 - foreach (var step in Steps.OrderBy(q => q.Sequence)) - { - step.DBSubmitAction.Invoke(); - } - }); - if (!dbTran.IsSuccess) - { - throw dbTran.ErrorException; - } + SaveStepsCommitActionToDB(); + //淇濆瓨鎴愬姛锛岃繑鍥炶繃绔欐秷鎭� //action.LocaleMsg = new($"宸ュ崟[{CurWipSN.WORK_ORDER}]鐨勬潯鐮乕{CurWipSN.SN}]鍦ㄥ矖浣峓{CurWipSN.POST_CODE}]宸ュ簭[{CurWipSN.NODE_NAME}]杩囩珯鎴愬姛锛岀姸鎬乕{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()); action.LocaleMsg = new("MES.Transaction.TestNode.ScanSn.PassSuccess", CurWipSN.WORK_ORDER, CurWipSN.SN, CurWipSN.POST_CODE, CurWipSN.NODE_NAME, CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()); diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs index 094982a..51a1f90 100644 --- a/Tiger.Business.MES/WorkAction/PackingAction.cs +++ b/Tiger.Business.MES/WorkAction/PackingAction.cs @@ -56,12 +56,6 @@ PkgRule = Biz.Db.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == setting.PKG_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First(); } //鏍规嵁琛屼负璁剧疆鑾峰彇澶氬眰鍖呰鐨勬爣绛炬墦鍗版ā鏉垮瓧鍏� - //for (int i = 1; i < 10; i++) - //{ - // var code = Setting.GetType().GetProperty($"OPTION_{i}")?.GetValue(Setting)?.ToString() ?? ""; - // var label = code.IsNullOrEmpty() ? null : Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == code).IncludesAllFirstLayer().First(); - // LabelDic.Add(i, label); - //} var codes = (Setting.OPTION_1?? "").JsonToObject<List<WipPkgItem>>(); foreach (var code in codes) { diff --git a/Tiger.IBusiness/MES/Transaction/IPosition.cs b/Tiger.IBusiness/MES/Transaction/IPosition.cs index 5ceb050..1d2e6bc 100644 --- a/Tiger.IBusiness/MES/Transaction/IPosition.cs +++ b/Tiger.IBusiness/MES/Transaction/IPosition.cs @@ -21,6 +21,10 @@ public MES_WIP_DATA CurWipSN { get; set; } public MES_WIP_HIS CurWipSNHis { get; set; } public Dictionary<string, object> Context { get; set; } + /// <summary> + /// 鏄惁闇�瑕佷复鏃跺瓨鍌ㄦ暟鎹簱鎻愪氦鎿嶄綔锛屽緟闇�瑕佺殑鏃跺�欏啀鎻愪氦 + /// </summary> + public bool NeedTemporaryStoreDBCommitAction { get; set; } #endregion Propertys & Variables #region Functions -- Gitblit v1.9.3