From 4ad0c3cfa27e9562217e517d62173bf97759f68e Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期五, 02 八月 2024 21:12:52 +0800 Subject: [PATCH] 增加工单生产判断 --- Tiger.Api/Language.db | 0 Tiger.Business.MES/Transaction/CollectNode.cs | 56 +++++++++---- Tiger.Business.MES/Transaction/PackingNode.cs | 57 +++++++++---- Tiger.Business/MES/Biz.WorkBatch.cs | 13 ++ Tiger.Business.MES/Transaction/TestNode.cs | 55 +++++++++---- 5 files changed, 126 insertions(+), 55 deletions(-) diff --git a/Tiger.Api/Language.db b/Tiger.Api/Language.db index 0f55f2c..2f60691 100644 --- a/Tiger.Api/Language.db +++ b/Tiger.Api/Language.db Binary files differ diff --git a/Tiger.Business.MES/Transaction/CollectNode.cs b/Tiger.Business.MES/Transaction/CollectNode.cs index b374b1b..070f91b 100644 --- a/Tiger.Business.MES/Transaction/CollectNode.cs +++ b/Tiger.Business.MES/Transaction/CollectNode.cs @@ -10,7 +10,6 @@ using System.Threading.Tasks; using Tiger.Model; using Tiger.Model.Entitys.MES.Position; -using static System.Net.Mime.MediaTypeNames; namespace Tiger.Business.MES.Transaction { @@ -54,26 +53,35 @@ else { var wosn = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER)) - .ByAuth(input.AuthOption) - .Where((q, s) => s.SN == input.SN && q.ACT_LINE == CurLine.LINE_CODE && (q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue())) - .Select((q, s) => new { Batch = q, SN = s }).First(); + .ByAuth(input.AuthOption).Where((q, s) => s.SN == input.SN).Select((q, s) => new { Batch = q, SN = s }).First(); + //鏌ユ壘鍒版潯鐮佸凡缁戝畾鐨勫伐鍗� if (!wosn.IsNullOrEmpty()) { - if (CurBatch?.Batch?.ORDER_NO != wosn.Batch.ORDER_NO) + if (wosn.Batch.ACT_LINE != CurLine.LINE_CODE) { - //鏉$爜宸茬粦瀹氱殑宸ュ崟涓嶇瓑浜庡綋鍓嶅伐鍗曞垯閲嶆柊閫夋嫨宸ュ崟 - var result = await SelectOrder(new() { AuthOption = input.AuthOption, OrderNo = wosn.Batch.ORDER_NO }); - if (!result.IsSuccessed) - { - action.IsSuccessed = result.IsSuccessed; - action.LocaleMsg = result.LocaleMsg; - return action; - } + action.IsSuccessed = false; + //action.LocaleMsg = new($"鏉$爜[{0}]宸插湪浜х嚎[{1}]鎶曞叆鐢熶骇锛岃鍦ㄦ纭矖浣嶆壂鎻�"); + action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.NotCorrectLine", input.SN, wosn.Batch.ACT_LINE); + return action; } - //鏉$爜杩囩珯 - action = NodeSubmit(action, input); - return action; + else + { + if (CurBatch?.Batch?.ORDER_NO != wosn.Batch.ORDER_NO) + { + //鏉$爜宸茬粦瀹氱殑宸ュ崟涓嶇瓑浜庡綋鍓嶅伐鍗曞垯閲嶆柊閫夋嫨宸ュ崟 + var result = await SelectOrder(new() { AuthOption = input.AuthOption, OrderNo = wosn.Batch.ORDER_NO }); + if (!result.IsSuccessed) + { + action.IsSuccessed = result.IsSuccessed; + action.LocaleMsg = result.LocaleMsg; + return action; + } + } + //鏉$爜杩囩珯 + action = NodeSubmit(action, input); + return action; + } } //鏌ユ壘涓嶅埌鏉$爜宸茬粦瀹氱殑宸ュ崟 else @@ -159,8 +167,8 @@ try { var curNode = CurBatch.GetNode(PostCode); - //鍒ゆ柇宸ュ崟瀹炴椂鐘舵�佸垽鏂� - var woStatus = CurBatch.CheckStatus(); + //鍒ゆ柇宸ュ崟瀹炴椂鐘舵�佸垽鏂槸鍚﹀彲浠ョ敓浜� + var woStatus = CurBatch.CheckCanProduce(curNode); if (!woStatus.IsSuccessed) { return woStatus; @@ -264,6 +272,18 @@ db.Storageable(woSN, UserCode).ExecuteCommand(); db.Storageable(wipSN, UserCode).ExecuteCommand(); db.Storageable(CurWipSNHis, UserCode).ExecuteCommand(); + //濡傛灉鏄姇鍏ョ珯 + if (curNode.IS_INPUT == "Y") + { + db.Updateable<BIZ_MES_WO>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + 1).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand(); + db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + 1).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand(); + } + //濡傛灉鏄骇鍑虹珯 + if (curNode.IS_OUTPUT == "Y") + { + db.Updateable<BIZ_MES_WO>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + 1).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand(); + db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + 1).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand(); + } } }; Steps.Add(curStep); diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs index 404ff34..5a3b770 100644 --- a/Tiger.Business.MES/Transaction/PackingNode.cs +++ b/Tiger.Business.MES/Transaction/PackingNode.cs @@ -76,26 +76,35 @@ else { var wosn = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER)) - .ByAuth(input.AuthOption) - .Where((q, s) => s.SN == input.SN && q.ACT_LINE == CurLine.LINE_CODE && (q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue())) - .Select((q, s) => new { Batch = q, SN = s }).First(); + .ByAuth(input.AuthOption).Where((q, s) => s.SN == input.SN).Select((q, s) => new { Batch = q, SN = s }).First(); + //鏌ユ壘鍒版潯鐮佸凡缁戝畾鐨勫伐鍗� if (!wosn.IsNullOrEmpty()) { - if (CurBatch?.Batch?.ORDER_NO != wosn.Batch.ORDER_NO) + if (wosn.Batch.ACT_LINE != CurLine.LINE_CODE) { - //鏉$爜宸茬粦瀹氱殑宸ュ崟涓嶇瓑浜庡綋鍓嶅伐鍗曞垯閲嶆柊閫夋嫨宸ュ崟 - var result = await SelectOrder(new() { AuthOption = input.AuthOption, OrderNo = wosn.Batch.ORDER_NO }); - if (!result.IsSuccessed) - { - action.IsSuccessed = result.IsSuccessed; - action.LocaleMsg = result.LocaleMsg; - return action; - } + action.IsSuccessed = false; + //action.LocaleMsg = new($"鏉$爜[{0}]宸插湪浜х嚎[{1}]鎶曞叆鐢熶骇锛岃鍦ㄦ纭矖浣嶆壂鎻�"); + action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.NotCorrectLine", input.SN, wosn.Batch.ACT_LINE); + return action; + } + else + { + if (CurBatch?.Batch?.ORDER_NO != wosn.Batch.ORDER_NO) + { + //鏉$爜宸茬粦瀹氱殑宸ュ崟涓嶇瓑浜庡綋鍓嶅伐鍗曞垯閲嶆柊閫夋嫨宸ュ崟 + var result = await SelectOrder(new() { AuthOption = input.AuthOption, OrderNo = wosn.Batch.ORDER_NO }); + if (!result.IsSuccessed) + { + action.IsSuccessed = result.IsSuccessed; + action.LocaleMsg = result.LocaleMsg; + return action; + } + } + //鏉$爜杩囩珯 + action = NodeSubmit(action, input); + return action; } - //鏉$爜杩囩珯 - action = NodeSubmit(action, input); - return action; } //鏌ユ壘涓嶅埌鏉$爜宸茬粦瀹氱殑宸ュ崟 else @@ -182,8 +191,8 @@ try { var curNode = CurBatch.GetNode(PostCode); - //鍒ゆ柇宸ュ崟瀹炴椂鐘舵�佸垽鏂� - var woStatus = CurBatch.CheckStatus(); + //鍒ゆ柇宸ュ崟瀹炴椂鐘舵�佸垽鏂槸鍚﹀彲浠ョ敓浜� + var woStatus = CurBatch.CheckCanProduce(curNode); if (!woStatus.IsSuccessed) { return woStatus; @@ -287,7 +296,19 @@ db.Storageable(woSN, UserCode).ExecuteCommand(); db.Storageable(wipSN, UserCode).ExecuteCommand(); db.Storageable(CurWipSNHis, UserCode).ExecuteCommand(); - } + //濡傛灉鏄姇鍏ョ珯 + if (curNode.IS_INPUT == "Y") + { + db.Updateable<BIZ_MES_WO>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + 1).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand(); + db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + 1).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand(); + } + //濡傛灉鏄骇鍑虹珯 + if (curNode.IS_OUTPUT == "Y") + { + db.Updateable<BIZ_MES_WO>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + 1).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand(); + db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + 1).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand(); + } + } }; Steps.Add(curStep); diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs index f63c4d9..1b72e3d 100644 --- a/Tiger.Business.MES/Transaction/TestNode.cs +++ b/Tiger.Business.MES/Transaction/TestNode.cs @@ -53,26 +53,35 @@ else { var wosn = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER)) - .ByAuth(input.AuthOption) - .Where((q, s) => s.SN == input.SN && q.ACT_LINE == CurLine.LINE_CODE && (q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue())) - .Select((q, s) => new { Batch = q, SN = s }).First(); + .ByAuth(input.AuthOption).Where((q, s) => s.SN == input.SN).Select((q, s) => new { Batch = q, SN = s }).First(); + //鏌ユ壘鍒版潯鐮佸凡缁戝畾鐨勫伐鍗� if (!wosn.IsNullOrEmpty()) { - if (CurBatch?.Batch?.ORDER_NO != wosn.Batch.ORDER_NO) + if (wosn.Batch.ACT_LINE != CurLine.LINE_CODE) { - //鏉$爜宸茬粦瀹氱殑宸ュ崟涓嶇瓑浜庡綋鍓嶅伐鍗曞垯閲嶆柊閫夋嫨宸ュ崟 - var result = await SelectOrder(new() { AuthOption = input.AuthOption, OrderNo = wosn.Batch.ORDER_NO }); - if (!result.IsSuccessed) - { - action.IsSuccessed = result.IsSuccessed; - action.LocaleMsg = result.LocaleMsg; - return action; - } + action.IsSuccessed = false; + //action.LocaleMsg = new($"鏉$爜[{0}]宸插湪浜х嚎[{1}]鎶曞叆鐢熶骇锛岃鍦ㄦ纭矖浣嶆壂鎻�"); + action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.NotCorrectLine", input.SN, wosn.Batch.ACT_LINE); + return action; } - //鏉$爜杩囩珯 - action = NodeSubmit(action, input); - return action; + else + { + if (CurBatch?.Batch?.ORDER_NO != wosn.Batch.ORDER_NO) + { + //鏉$爜宸茬粦瀹氱殑宸ュ崟涓嶇瓑浜庡綋鍓嶅伐鍗曞垯閲嶆柊閫夋嫨宸ュ崟 + var result = await SelectOrder(new() { AuthOption = input.AuthOption, OrderNo = wosn.Batch.ORDER_NO }); + if (!result.IsSuccessed) + { + action.IsSuccessed = result.IsSuccessed; + action.LocaleMsg = result.LocaleMsg; + return action; + } + } + //鏉$爜杩囩珯 + action = NodeSubmit(action, input); + return action; + } } //鏌ユ壘涓嶅埌鏉$爜宸茬粦瀹氱殑宸ュ崟 else @@ -159,8 +168,8 @@ try { var curNode = CurBatch.GetNode(PostCode); - //鍒ゆ柇宸ュ崟瀹炴椂鐘舵�佸垽鏂� - var woStatus = CurBatch.CheckStatus(); + //鍒ゆ柇宸ュ崟瀹炴椂鐘舵�佸垽鏂槸鍚﹀彲浠ョ敓浜� + var woStatus = CurBatch.CheckCanProduce(curNode); if (!woStatus.IsSuccessed) { return woStatus; @@ -264,6 +273,18 @@ db.Storageable(woSN, UserCode).ExecuteCommand(); db.Storageable(wipSN, UserCode).ExecuteCommand(); db.Storageable(CurWipSNHis, UserCode).ExecuteCommand(); + //濡傛灉鏄姇鍏ョ珯 + if (curNode.IS_INPUT == "Y") + { + db.Updateable<BIZ_MES_WO>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + 1).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand(); + db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + 1).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand(); + } + //濡傛灉鏄骇鍑虹珯 + if (curNode.IS_OUTPUT == "Y") + { + db.Updateable<BIZ_MES_WO>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + 1).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand(); + db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + 1).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand(); + } } }; Steps.Add(curStep); diff --git a/Tiger.Business/MES/Biz.WorkBatch.cs b/Tiger.Business/MES/Biz.WorkBatch.cs index 7b2ce63..a34b4a8 100644 --- a/Tiger.Business/MES/Biz.WorkBatch.cs +++ b/Tiger.Business/MES/Biz.WorkBatch.cs @@ -106,10 +106,11 @@ } /// <summary> - /// 妫�鏌ュ伐鍗曞疄鏃剁姸鎬侊紝鍒ゆ柇鍙互鐢熶骇锛氬伐鍗曡窡鎵规鐘舵�佷笉鏄凡涓嬪彂鎴栬�呯敓浜т腑锛屽垯涓嶅厑璁哥敓浜� + /// 妫�鏌ュ伐鍗曞湪褰撳墠宸ュ簭鑺傜偣鏄惁鍙互鐢熶骇 /// </summary> + /// <param name="curNode"></param> /// <returns></returns> - public ApiAction<SubmitOutput> CheckStatus() + public ApiAction<SubmitOutput> CheckCanProduce(MES_WO_NODE curNode) { var action = new ApiAction<SubmitOutput>(new SubmitOutput(), true); @@ -131,6 +132,14 @@ //action.LocaleMsg = new($"宸ュ崟[{WO.ORDER_NO}]鐘舵�乕{Batch.STATUS.GetEnum<BIZ_MES_WO.STATUSs>().GetName()}]涓嶆槸鍏佽鐢熶骇鐨勭姸鎬侊紝璇锋壂鎻忓厑璁哥敓浜х殑浜у搧鏉$爜"); action.LocaleMsg = new("MES.WorkBatch.WoStatusCanNotWork", WO.ORDER_NO, Batch.STATUS.GetEnum<BIZ_MES_WO.STATUSs>().GetName()); } + //宸ュ崟鎵规鎶曞叆鏁伴噺鍑忓幓鎶ュ簾鏁伴噺濡傛灉澶т簬绛変簬璁″垝鏁伴噺锛屽垯涓嶅厑璁哥敓浜� + if (curNode.IS_INPUT == "Y" && Batch.INPUT_QTY - Batch.SCRAP_QTY >= Batch.PLAN_QTY) + { + action.IsSuccessed = false; + action.Data.SetValue(this, null); + action.LocaleMsg = new($"宸ュ崟鎵规[{0}]宸叉姇鍏� {1}锛屽叾涓姤搴� {2}锛屼互婊¤冻璁″垝鏁伴噺[{3}]锛屾棤闇�缁х画鎶曞叆"); + action.LocaleMsg = new("MES.WorkBatch.WoInputEnough", Batch.BATCH_NO, Batch.INPUT_QTY, Batch.SCRAP_QTY, Batch.PLAN_QTY); + } return action; } -- Gitblit v1.9.3