From 050fdd3ef7d0e17143093ee355941bd6437b5486 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期三, 13 十一月 2024 12:00:43 +0800 Subject: [PATCH] 优化生产记录状态,使用完工标记作为产品完工的判断,不使用状态 从工单中解绑正在生产的条码时,同步更新工单池中同一工单的工单条码状态 --- Tiger.Model.Net/Entitys/MES/MES_WIP_ACT.cs | 6 +- Tiger.Business.MES/Transaction/YadaPacking.cs | 6 +- Tiger.Business.MES/Transaction/CollectNode.cs | 6 +- Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs | 6 +- Tiger.Business.MES/Transaction/PackingNode.cs | 6 +- Tiger.Business.MES/Common/WorkBatch.cs | 19 +++++++-- Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs | 34 +++++++++------- Tiger.Business.MES/Transaction/TestNode.cs | 6 +- 8 files changed, 52 insertions(+), 37 deletions(-) diff --git a/Tiger.Business.MES/Common/WorkBatch.cs b/Tiger.Business.MES/Common/WorkBatch.cs index d230d1c..6e24526 100644 --- a/Tiger.Business.MES/Common/WorkBatch.cs +++ b/Tiger.Business.MES/Common/WorkBatch.cs @@ -601,14 +601,14 @@ var batchs = wipList.Where(q => !q.BATCH_NO.IsNullOrEmpty()).GroupBy(q => new { q.BATCH_NO }).Select(g => new { g.Key.BATCH_NO, Qty = g.Count(), - FinishQty = g.Count(q => q.STATUS == MES_WIP_DATA.STATUSs.Finished.GetValue()), + OutQty = g.Count(q => MES_WIP_DATA.STATUSs.Output.GetValue() <= q.STATUS && q.STATUS < MES_WIP_DATA.STATUSs.InStorage.GetValue()), }); var db = Biz.Db; var dbTran = db.UseTran(() => { //BIZ_MES_WO wo.INPUT_QTY -= wipList.Count; - wo.OUTPUT_QTY -= wipList.Count(q => q.STATUS == MES_WIP_DATA.STATUSs.Finished.GetValue()); + wo.OUTPUT_QTY -= wipList.Count(q => MES_WIP_DATA.STATUSs.Output.GetValue() <= q.STATUS && q.STATUS < MES_WIP_DATA.STATUSs.InStorage.GetValue()); wo.SCRAP_QTY += wipList.Count; wo.STATUS = wo.STATUS.GetEnum<BIZ_MES_WO.STATUSs>() == BIZ_MES_WO.STATUSs.Closed ? BIZ_MES_WO.STATUSs.Working.GetValue() : wo.STATUS; db.Updateable(wo, user).UpdateColumns(q => new { q.INPUT_QTY, q.OUTPUT_QTY, q.SCRAP_QTY, q.UPDATE_USER, q.UPDATE_TIME, q.STATUS }).ExecuteCommand(); @@ -617,7 +617,7 @@ foreach (var batch in wobatchs) { batch.INPUT_QTY -= batchs.Where(q=>q.BATCH_NO == batch.BATCH_NO).First().Qty; - batch.OUTPUT_QTY -= batchs.Where(q => q.BATCH_NO == batch.BATCH_NO).First().FinishQty; + batch.OUTPUT_QTY -= batchs.Where(q => q.BATCH_NO == batch.BATCH_NO).First().OutQty; batch.SCRAP_QTY += batchs.Where(q => q.BATCH_NO == batch.BATCH_NO).First().Qty; batch.STATUS = batch.STATUS.GetEnum<BIZ_MES_WO_BATCH.STATUSs>() == BIZ_MES_WO_BATCH.STATUSs.Closed ? BIZ_MES_WO_BATCH.STATUSs.Working.GetValue() : batch.STATUS; } @@ -672,7 +672,18 @@ //鎶涘嚭寮傚父 throw dbTran.ErrorException; } - + //鏇存柊宸ュ崟姹犱腑鐨勫伐鍗曟潯鐮佽〃鏁版嵁鐨勭姸鎬� + foreach (var item in WoContext.WoBatchDic) + { + if (item.Value.WO.ORDER_NO == wo.ORDER_NO) + { + foreach (var woSn in item.Value.WoSNs.Where(q => wipIDs.Contains(q.WIP_ID))) + { + woSn.STATUS = BIZ_MES_WO_SN.STATUSs.Offline.GetValue(); + } + item.Value.Update(); + } + } return action; } #endregion diff --git a/Tiger.Business.MES/Transaction/CollectNode.cs b/Tiger.Business.MES/Transaction/CollectNode.cs index 8f0a3fa..02fddf1 100644 --- a/Tiger.Business.MES/Transaction/CollectNode.cs +++ b/Tiger.Business.MES/Transaction/CollectNode.cs @@ -262,7 +262,7 @@ return woStatus; } - var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.STATUS < MES_WIP_DATA.STATUSs.Finished.GetValue()).ToList(); + var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); if (wipSNs.IsNullOrEmpty()) { var wipSN = new MES_WIP_DATA() @@ -379,7 +379,7 @@ { var woSN = woSNs.First(q => q.WIP_ID == wipSN.ID); woSN.STATUS = BIZ_MES_WO_SN.STATUSs.Finished.GetValue(); - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.STATUS = MES_WIP_DATA.STATUSs.Output.GetValue(); wipSN.OUTLINE_DATE = DateTime.Now; } //濡傛灉鏈夋彁浜や笉鑹� @@ -607,7 +607,7 @@ //鏉$爜瀹屽伐 foreach (var wipSN in CurWipSNs) { - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.FINISHED_FLAG = "Y"; wipSN.NODE_ID = curNode.ID; wipSN.NODE_NAME = curNode.NODE_NAME; wipSN.OPER_CODE = curNode.OPER_CODE; diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs index c6dde95..7a85ee8 100644 --- a/Tiger.Business.MES/Transaction/PackingNode.cs +++ b/Tiger.Business.MES/Transaction/PackingNode.cs @@ -304,7 +304,7 @@ return woStatus; } - var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.STATUS < MES_WIP_DATA.STATUSs.Finished.GetValue()).ToList(); + var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); if (wipSNs.IsNullOrEmpty()) { var wipSN = new MES_WIP_DATA() @@ -424,7 +424,7 @@ { var woSN = woSNs.First(q => q.WIP_ID == wipSN.ID); woSN.STATUS = BIZ_MES_WO_SN.STATUSs.Finished.GetValue(); - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.STATUS = MES_WIP_DATA.STATUSs.Output.GetValue(); wipSN.OUTLINE_DATE = DateTime.Now; } //濡傛灉鏈夋彁浜や笉鑹� @@ -658,7 +658,7 @@ //鏉$爜瀹屽伐 foreach (var wipSN in CurWipSNs) { - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.FINISHED_FLAG = "Y"; wipSN.NODE_ID = curNode.ID; wipSN.NODE_NAME = curNode.NODE_NAME; wipSN.OPER_CODE = curNode.OPER_CODE; diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs index bf0fe21..d14cf3e 100644 --- a/Tiger.Business.MES/Transaction/TestNode.cs +++ b/Tiger.Business.MES/Transaction/TestNode.cs @@ -257,7 +257,7 @@ return woStatus; } - var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.STATUS < MES_WIP_DATA.STATUSs.Finished.GetValue()).ToList(); + var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); if (wipSNs.IsNullOrEmpty()) { var wipSN = new MES_WIP_DATA() @@ -374,7 +374,7 @@ { var woSN = woSNs.First(q => q.WIP_ID == wipSN.ID); woSN.STATUS = BIZ_MES_WO_SN.STATUSs.Finished.GetValue(); - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.STATUS = MES_WIP_DATA.STATUSs.Output.GetValue(); wipSN.OUTLINE_DATE = DateTime.Now; } //濡傛灉鏈夋彁浜や笉鑹� @@ -602,7 +602,7 @@ //鏉$爜瀹屽伐 foreach (var wipSN in CurWipSNs) { - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.FINISHED_FLAG = "Y"; wipSN.NODE_ID = curNode.ID; wipSN.NODE_NAME = curNode.NODE_NAME; wipSN.OPER_CODE = curNode.OPER_CODE; diff --git a/Tiger.Business.MES/Transaction/YadaPacking.cs b/Tiger.Business.MES/Transaction/YadaPacking.cs index dc47684..202a36b 100644 --- a/Tiger.Business.MES/Transaction/YadaPacking.cs +++ b/Tiger.Business.MES/Transaction/YadaPacking.cs @@ -318,7 +318,7 @@ return woStatus; } - var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.STATUS < MES_WIP_DATA.STATUSs.Finished.GetValue()).ToList(); + var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); if (wipSNs.IsNullOrEmpty()) { var wipSN = new MES_WIP_DATA() @@ -438,7 +438,7 @@ { var woSN = woSNs.First(q => q.WIP_ID == wipSN.ID); woSN.STATUS = BIZ_MES_WO_SN.STATUSs.Finished.GetValue(); - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.STATUS = MES_WIP_DATA.STATUSs.Output.GetValue(); wipSN.OUTLINE_DATE = DateTime.Now; } //濡傛灉鏈夋彁浜や笉鑹� @@ -672,7 +672,7 @@ //鏉$爜瀹屽伐 foreach (var wipSN in CurWipSNs) { - wipSN.STATUS = MES_WIP_DATA.STATUSs.Finished.GetValue(); + wipSN.FINISHED_FLAG = "Y"; wipSN.NODE_ID = curNode.ID; wipSN.NODE_NAME = curNode.NODE_NAME; wipSN.OPER_CODE = curNode.OPER_CODE; diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_ACT.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_ACT.cs index 59e596b..a5be763 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WIP_ACT.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_ACT.cs @@ -39,9 +39,9 @@ [DisplayName("杩囩珯鏉$爜")] public string SN { get; set; } /// <summary> - /// 鐘舵��(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�) + /// 鐘舵��(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎) /// </summary> - [DisplayName("鐘舵��(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�)")] + [DisplayName("鐘舵��(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎)")] public int STATUS { get; set; } /// <summary> /// 鐗╂枡缂栫爜 @@ -248,7 +248,7 @@ */ /// <summary> - /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�) + /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎) /// </summary> public enum STATUSs { diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs index 1a8fb1e..ff829f4 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs @@ -29,9 +29,9 @@ [DisplayName("杩囩珯鏉$爜")] public string SN { get; set; } /// <summary> - /// 鐘舵��(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�) + /// 鐘舵��(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎) /// </summary> - [DisplayName("鐘舵��(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�))")] + [DisplayName("鐘舵��(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎))")] public int STATUS { get; set; } /// <summary> /// 鐗╂枡缂栫爜 @@ -282,32 +282,36 @@ */ /// <summary> - /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�) + /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎) /// </summary> public enum STATUSs { [Description("鍒濆鍖�")] Init = 0, [Description("宸叉姇鍏�")] - Input = 1, + Input = 10, [Description("鑹搧杩囩珯")] - OK = 2, + OK = 20, [Description("涓嶈壇杩囩珯")] - NG = 3, + NG = 30, [Description("缁翠慨涓�")] - Repair = 4, - [Description("宸插畬宸�")] - Finished = 5, + Repair = 40, + [Description("宸蹭骇鍑�")] + Output = 50, + [Description("寰呭叆搴�")] + WaitStorage = 51, + [Description("寰呭嚭璐�")] + WaitShipment = 52, [Description("宸插叆搴�")] - InStorage = 6, + InStorage = 60, [Description("宸叉嫆鏀�")] - Reject = 7, + Reject = 61, [Description("宸插嚭璐�")] - Shipped = 8, - [Description("寮傚父涓嬬嚎")] - Offline = 9, + Shipped = 80, [Description("宸叉姤搴�")] - Scrap = 10, + Scrap = 90, + [Description("寮傚父涓嬬嚎")] + Offline = 91, } /// <summary> diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs index 9dff33c..7bf3d19 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs @@ -93,9 +93,9 @@ [DisplayName("杩囩珯鏉$爜")] public string SN { get; set; } /// <summary> - /// 鐘舵��(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�) + /// 鐘舵��(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎) /// </summary> - [DisplayName("鐘舵��(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�)")] + [DisplayName("鐘舵��(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎)")] public int STATUS { get; set; } /// <summary> /// 鐗╂枡缂栫爜 @@ -347,7 +347,7 @@ */ /// <summary> - /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東1Input宸叉姇鍏2OK鑹搧杩囩珯|3NG涓嶈壇杩囩珯|4Repair缁翠慨涓瓅5Finished宸插畬宸6InStorage宸插叆搴搢7Reject宸叉嫆鏀秥8Shipped宸插嚭璐9Offline寮傚父涓嬬嚎|10Scrap宸叉姤搴�) + /// 鏋氫妇锛氱姸鎬�(0Init鍒濆鍖東10Input宸叉姇鍏20OK鑹搧杩囩珯|30NG涓嶈壇杩囩珯|40Repair缁翠慨涓瓅50Output宸蹭骇鍑簗51WaitStorage寰呭叆搴搢52WaitShipment寰呭嚭璐60InStorage宸插叆搴搢61Reject宸叉嫆鏀秥80Shipped宸插嚭璐90Scrap宸叉姤搴焲91Offline寮傚父涓嬬嚎) /// </summary> public enum STATUSs { -- Gitblit v1.9.3