From a7496b3785a33c14079b859c88b91a537c454cd5 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期二, 06 八月 2024 20:03:49 +0800 Subject: [PATCH] 增加不良记录的保存 --- Tiger.Business/DbCache/CodeRuleCache.cs | 14 ++++ Tiger.Api/Language.db | 0 Tiger.Business.MES/Transaction/CollectNode.cs | 39 +++++++++++++ Tiger.Business.MES/Transaction/PackingNode.cs | 39 +++++++++++++ Tiger.Business.MES/Transaction/Position.cs | 6 + Tiger.Business/MES/Biz.WorkBatch.cs | 1 Tiger.IBusiness/MES/IWorkBatch.cs | 1 Tiger.Business.MES/Transaction/TestNode.cs | 39 +++++++++++++ 8 files changed, 136 insertions(+), 3 deletions(-) diff --git a/Tiger.Api/Language.db b/Tiger.Api/Language.db index 64f8461..cc2a817 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 9954d76..0172f0e 100644 --- a/Tiger.Business.MES/Transaction/CollectNode.cs +++ b/Tiger.Business.MES/Transaction/CollectNode.cs @@ -273,6 +273,40 @@ wipSN.DFT_FLAG = "Y"; wipSN.DFT_COUNT++; wipSN.DFT_CODE = input.DFT_CODE; + var dft = CurBatch.Defects.FirstOrDefault(q => q.DFT_CODE == wipSN.DFT_CODE); + var defect = new MES_WIP_DFT() + { + AUTH_ORG = wipSN.AUTH_ORG, + AUTH_PROD = wipSN.LINE_CODE, + SN = wipSN.SN, + STATUS = MES_WIP_DFT.STATUSs.WaitHandle.GetValue(), + ITEM_CODE = wipSN.ITEM_CODE, + WORK_ORDER = wipSN.WORK_ORDER, + BATCH_NO = wipSN.BATCH_NO, + ROT_CODE = wipSN.ROT_CODE, + NODE_ID = wipSN.NODE_ID, + NODE_NAME = wipSN.NODE_NAME, + FTY_CODE = wipSN.FTY_CODE, + WS_CODE = wipSN.WS_CODE, + LINE_CODE = wipSN.LINE_CODE, + POST_CODE = wipSN.POST_CODE, + OPER_CODE = wipSN.OPER_CODE, + SEGMENT = wipSN.SEGMENT, + DFT_CODE = dft.DFT_CODE, + DFT_NAME = dft.DFT_NAME, + DFT_LEVEL = dft.DFT_LEVEL, + TRAY_SN = wipSN.TRAY_SN, + CONTAINER_SN = wipSN.CONTAINER_SN, + PALLET_SN = wipSN.PALLET_SN, + INV_FLAG = wipSN.INV_FLAG, + OPERATION_TIME = DateTime.Now, + SFTS_CODE = wipSN.SFTS_CODE, + SFT_CODE = wipSN.SFT_CODE, + PRD_CODE = wipSN.PRD_CODE, + OBA_BATCH = wipSN.OBA_BATCH, + LOCK_BATCH = wipSN.LOCK_BATCH, + }; + CurDefects.Add(defect); } } @@ -299,6 +333,11 @@ db.Storageable(woSNs, UserCode).ExecuteCommand(); db.Storageable(wipSNs, UserCode).ExecuteCommand(); db.Storageable(CurWipSNHiss, UserCode).ExecuteCommand(); + //濡傛灉鏈変笉鑹垯淇濆瓨 + if (CurDefects.Any()) + { + db.Storageable(CurDefects, UserCode).ExecuteCommand(); + } //濡傛灉鏄姇鍏ョ珯 if (curNode.IS_INPUT == "Y") { diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs index 1d3f193..1ba8aed 100644 --- a/Tiger.Business.MES/Transaction/PackingNode.cs +++ b/Tiger.Business.MES/Transaction/PackingNode.cs @@ -304,6 +304,40 @@ wipSN.DFT_FLAG = "Y"; wipSN.DFT_COUNT++; wipSN.DFT_CODE = input.DFT_CODE; + var dft = CurBatch.Defects.FirstOrDefault(q => q.DFT_CODE == wipSN.DFT_CODE); + var defect = new MES_WIP_DFT() + { + AUTH_ORG = wipSN.AUTH_ORG, + AUTH_PROD = wipSN.LINE_CODE, + SN = wipSN.SN, + STATUS = MES_WIP_DFT.STATUSs.WaitHandle.GetValue(), + ITEM_CODE = wipSN.ITEM_CODE, + WORK_ORDER = wipSN.WORK_ORDER, + BATCH_NO = wipSN.BATCH_NO, + ROT_CODE = wipSN.ROT_CODE, + NODE_ID = wipSN.NODE_ID, + NODE_NAME = wipSN.NODE_NAME, + FTY_CODE = wipSN.FTY_CODE, + WS_CODE = wipSN.WS_CODE, + LINE_CODE = wipSN.LINE_CODE, + POST_CODE = wipSN.POST_CODE, + OPER_CODE = wipSN.OPER_CODE, + SEGMENT = wipSN.SEGMENT, + DFT_CODE = dft.DFT_CODE, + DFT_NAME = dft.DFT_NAME, + DFT_LEVEL = dft.DFT_LEVEL, + TRAY_SN = wipSN.TRAY_SN, + CONTAINER_SN = wipSN.CONTAINER_SN, + PALLET_SN = wipSN.PALLET_SN, + INV_FLAG = wipSN.INV_FLAG, + OPERATION_TIME = DateTime.Now, + SFTS_CODE = wipSN.SFTS_CODE, + SFT_CODE = wipSN.SFT_CODE, + PRD_CODE = wipSN.PRD_CODE, + OBA_BATCH = wipSN.OBA_BATCH, + LOCK_BATCH = wipSN.LOCK_BATCH, + }; + CurDefects.Add(defect); } } @@ -330,6 +364,11 @@ db.Storageable(woSNs, UserCode).ExecuteCommand(); db.Storageable(wipSNs, UserCode).ExecuteCommand(); db.Storageable(CurWipSNHiss, UserCode).ExecuteCommand(); + //濡傛灉鏈変笉鑹垯淇濆瓨 + if (CurDefects.Any()) + { + db.Storageable(CurDefects, UserCode).ExecuteCommand(); + } //濡傛灉鏄姇鍏ョ珯 if (curNode.IS_INPUT == "Y") { diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs index d875020..483e3c8 100644 --- a/Tiger.Business.MES/Transaction/Position.cs +++ b/Tiger.Business.MES/Transaction/Position.cs @@ -58,6 +58,7 @@ public List<MES_WIP_DATA> CurWipSNs { get; set; } = new(); public string CurSN => CurWipSNs.Any() ? (CurWipSNs.First().TRAY_SN.IsNullOrEmpty() ? CurWipSNs.First().SN : CurWipSNs.First().TRAY_SN) : ""; public List<MES_WIP_HIS> CurWipSNHiss { get; set; } = new(); + public List<MES_WIP_DFT> CurDefects { get; set; } = new(); public Dictionary<string, object> Context { get; set; } = new(); public List<WorkStep> Steps { get; set; } = new(); public WorkStep CurStep { get; set; } @@ -175,9 +176,10 @@ public virtual void ResetNode() { Steps.Clear(); - CurWipSNs = new(); - CurWipSNHiss = new(); + CurWipSNs.Clear(); + CurWipSNHiss.Clear(); CurStep = null; + CurDefects.Clear(); } /// <summary> diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs index e44b3a3..b7a3c03 100644 --- a/Tiger.Business.MES/Transaction/TestNode.cs +++ b/Tiger.Business.MES/Transaction/TestNode.cs @@ -274,6 +274,40 @@ wipSN.DFT_FLAG = "Y"; wipSN.DFT_COUNT++; wipSN.DFT_CODE = input.DFT_CODE; + var dft = CurBatch.Defects.FirstOrDefault(q => q.DFT_CODE == wipSN.DFT_CODE); + var defect = new MES_WIP_DFT() + { + AUTH_ORG = wipSN.AUTH_ORG, + AUTH_PROD = wipSN.LINE_CODE, + SN = wipSN.SN, + STATUS = MES_WIP_DFT.STATUSs.WaitHandle.GetValue(), + ITEM_CODE = wipSN.ITEM_CODE, + WORK_ORDER = wipSN.WORK_ORDER, + BATCH_NO = wipSN.BATCH_NO, + ROT_CODE = wipSN.ROT_CODE, + NODE_ID = wipSN.NODE_ID, + NODE_NAME = wipSN.NODE_NAME, + FTY_CODE = wipSN.FTY_CODE, + WS_CODE = wipSN.WS_CODE, + LINE_CODE = wipSN.LINE_CODE, + POST_CODE = wipSN.POST_CODE, + OPER_CODE = wipSN.OPER_CODE, + SEGMENT = wipSN.SEGMENT, + DFT_CODE = dft.DFT_CODE, + DFT_NAME = dft.DFT_NAME, + DFT_LEVEL = dft.DFT_LEVEL, + TRAY_SN = wipSN.TRAY_SN, + CONTAINER_SN = wipSN.CONTAINER_SN, + PALLET_SN = wipSN.PALLET_SN, + INV_FLAG = wipSN.INV_FLAG, + OPERATION_TIME = DateTime.Now, + SFTS_CODE = wipSN.SFTS_CODE, + SFT_CODE = wipSN.SFT_CODE, + PRD_CODE = wipSN.PRD_CODE, + OBA_BATCH = wipSN.OBA_BATCH, + LOCK_BATCH = wipSN.LOCK_BATCH, + }; + CurDefects.Add(defect); } } @@ -300,6 +334,11 @@ db.Storageable(woSNs, UserCode).ExecuteCommand(); db.Storageable(wipSNs, UserCode).ExecuteCommand(); db.Storageable(CurWipSNHiss, UserCode).ExecuteCommand(); + //濡傛灉鏈変笉鑹垯淇濆瓨 + if (CurDefects.Any()) + { + db.Storageable(CurDefects, UserCode).ExecuteCommand(); + } //濡傛灉鏄姇鍏ョ珯 if (curNode.IS_INPUT == "Y") { diff --git a/Tiger.Business/DbCache/CodeRuleCache.cs b/Tiger.Business/DbCache/CodeRuleCache.cs index 4ee42d4..ca64461 100644 --- a/Tiger.Business/DbCache/CodeRuleCache.cs +++ b/Tiger.Business/DbCache/CodeRuleCache.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using System.Data; using System.Data.Entity; using System.Linq; using System.Text; @@ -374,10 +375,21 @@ his.RULE_ID = rule.ID; his.GEN_CODE = string.Concat(rule.Details.OrderBy(q => q.RULE_SEQ).Select(q => q.CodeValue)); his.GEN_DATE = DateTime.Now; - Biz.Db.Insertable(his).ExecuteCommand(); + try + { + Biz.Db.Insertable(his).ExecuteCommand(); + } + catch (System.Exception ex) + { + throw new DataException(his.GEN_CODE, ex); + } result.Data = his.GEN_CODE; } } + catch (DataException ex) + { + result.CatchExceptionWithLog(ex.InnerException, Biz.L("BAS.CodeRule.GenerateSnHisException", ruleCode, ex.Message)); + } catch (System.Exception ex) { result.CatchExceptionWithLog(ex, Biz.L("BAS.CodeRule.GenerateException", ruleCode, string.Join(", ", args))); diff --git a/Tiger.Business/MES/Biz.WorkBatch.cs b/Tiger.Business/MES/Biz.WorkBatch.cs index c4445af..77a846b 100644 --- a/Tiger.Business/MES/Biz.WorkBatch.cs +++ b/Tiger.Business/MES/Biz.WorkBatch.cs @@ -41,6 +41,7 @@ public List<MES_WO_NODE_POST> NodePosts { get; set; } public List<MES_WO_NODE_DFTG> NodeDftgs { get; set; } public List<BAS_DEFECT_GRP> DefectGroups { get; set; } + public List<BAS_DEFECT> Defects => DefectGroups.SelectMany(q => q.Defects).ToList(); /// <summary> /// 浜嬪姟閿� /// </summary> diff --git a/Tiger.IBusiness/MES/IWorkBatch.cs b/Tiger.IBusiness/MES/IWorkBatch.cs index bd0d05f..7db63f6 100644 --- a/Tiger.IBusiness/MES/IWorkBatch.cs +++ b/Tiger.IBusiness/MES/IWorkBatch.cs @@ -25,6 +25,7 @@ public List<MES_WO_NODE_POST> NodePosts { get; set; } public List<MES_WO_NODE_DFTG> NodeDftgs { get; set; } public List<BAS_DEFECT_GRP> DefectGroups { get; set; } + public List<BAS_DEFECT> Defects { get; } /// <summary> /// 宸ュ崟寮�宸� -- Gitblit v1.9.3