From 666a8c8ed399c6e74b2f307bf6649b32a0fdb3e1 Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期三, 23 十月 2024 21:32:31 +0800 Subject: [PATCH] 添加工单工艺路线优化 --- Tiger.Business.MES/WorkAction/PackingAction.cs | 144 +++++++++++++++++++++++++---------------------- 1 files changed, 77 insertions(+), 67 deletions(-) diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs index ab7c1f1..b16ca05 100644 --- a/Tiger.Business.MES/WorkAction/PackingAction.cs +++ b/Tiger.Business.MES/WorkAction/PackingAction.cs @@ -74,7 +74,8 @@ WorkBatch = CurPosition.WorkBatch.Batch.BATCH_NO, RULE_CODE = PkgRule.RULE_CODE, RULE_NAME = PkgRule.RULE_NAME, - ITEM_CODE = CurPosition.WorkBatch.WO.ITEM_CODE, + PROD_CODE = CurPosition.WorkBatch.WO.ITEM_CODE, + CustSN = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == CurPosition.CurWipSNs.First().FLOW_SN).First(), Item = new WipPkgItem() { PKG_CODE = max.PKG_CODE, @@ -83,6 +84,7 @@ PKG_LEVEL = max.PKG_LEVEL, PKG_QTY = max.PKG_QTY, LABEL_CODE = LabelDic.Count > max.PKG_LEVEL ? LabelDic[max.PKG_LEVEL]?.LABEL_CODE : null, + SN = CurPosition.GenerateSN(max.SN_RULE, this), } }; WipPkgItem child = null; @@ -98,6 +100,7 @@ PKG_LEVEL = dtl.PKG_LEVEL, PKG_QTY = dtl.PKG_QTY, LABEL_CODE = LabelDic.Count > dtl.PKG_LEVEL ? LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE : null, + SN = CurPosition.GenerateSN(dtl.SN_RULE, this), }; if (!child.IsNullOrEmpty()) { @@ -154,7 +157,8 @@ LabelDic = CurPosition.Context["CurLabelDic"] as Dictionary<int, BAS_LABEL_TEMP>; LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); //鑾峰彇鍖呰瑙勫垯鐨勭О閲嶈寖鍥� - PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.ITEM_CODE).First(); + PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.PROD_CODE).First(); + //鎶� CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("璁板綍鍖呰鏁版嵁")); } @@ -531,14 +535,15 @@ PKG_LEVEL = dtl.PKG_LEVEL, PKG_QTY = dtl.PKG_QTY, LABEL_CODE = LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, + SN = CurPosition.GenerateSN(dtl.SN_RULE, this).IsNullOrEmpty(pInput.PkgSN), IsFinished = true, }; - CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == pInput.PkgSN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() + CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPkgItem.SN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, - SN = pInput.PkgSN, + SN = CurPkgItem.SN, }; CurPkgItem.Package.WIP_ID = CurPosition.CurWipSNs.Count == 1 ? CurPosition.CurWipSNs.First().ID : null; CurPkgItem.Package.PKG_TYPE = dtl.PkgType.PKG_NAME; @@ -557,6 +562,7 @@ CurPkgItem.Package.OPER_CODE = CurPosition.CurWipSNs.First().OPER_CODE; CurPkgItem.Package.SEGMENT = CurPosition.CurWipSNs.First().SEGMENT; CurPkgItem.Package.ACT_ID = NodeAct.ID; + CurPkgItem.Package.FLOW_SN = CurPosition.CurWipSNs.First().FLOW_SN; FinishLevel++; //瀹屾垚鍖呰鐨勫眰绾у皬浜庢渶澶栧眰鍖呰灞傜骇 if (FinishLevel < PkgRule.Details.Max(q => q.PKG_LEVEL)) @@ -582,7 +588,7 @@ { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, - SN = pInput.PkgSN, + SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN), PKG_TYPE = dtl.PkgType.PKG_NAME, ITEM_CODE = CurPkgItem.Items.First().Package.ITEM_CODE, QTY = CurPkgItem.Items.Sum(q => q.Package.QTY), @@ -602,7 +608,7 @@ { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, - SN = pInput.PkgSN, + SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN), PKG_TYPE = dtl.PkgType.PKG_NAME, ITEM_CODE = CurPosition.CurWipSNs.First().ITEM_CODE, QTY = CurPkgItem.Items.Sum(q => q.Package.QTY), @@ -619,6 +625,7 @@ OPER_CODE = CurPosition.CurWipSNs.First().OPER_CODE, SEGMENT = CurPosition.CurWipSNs.First().SEGMENT, ACT_ID = NodeAct.ID, + FLOW_SN = CurPosition.CurWipSNs.First().FLOW_SN, }; FinishLevel++; //瀹屾垚鍖呰鐨勫眰绾у皬浜庢渶澶栧眰鍖呰灞傜骇 @@ -652,6 +659,7 @@ PKG_LEVEL = nextDtl.PKG_LEVEL, PKG_QTY = nextDtl.PKG_QTY, LABEL_CODE = LabelDic[nextDtl.PKG_LEVEL]?.LABEL_CODE, + SN = CurPosition.GenerateSN(nextDtl.SN_RULE, this), }; curItem.Items.Add(next); } @@ -868,36 +876,37 @@ if (_pkgList.Any()) { db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand(); - foreach (var pkg in _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty())) - { - //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛� - db.Updateable<MES_WIP_DATA>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.INNER_SN == q.CARTON_SN) - .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.ID == pkg.WIP_ID) - .ExecuteCommand(); - //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰� - db.Updateable<MES_WIP_HIS>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.INNER_SN == q.CARTON_SN) - .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID) - .ExecuteCommand(); - //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰� - db.Updateable<MES_WIP_ACT>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.INNER_SN == q.CARTON_SN) - .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == pkg.ACT_ID) - .ExecuteCommand(); - //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃 - db.Updateable<BIZ_MES_WO_SN>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID) - .ExecuteCommand(); - } + var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList(); + var nodeID = _pkgList.First().NODE_ID; + var actID = _pkgList.First().ACT_ID; + var wo = _pkgList.First().WORK_ORDER; + //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛� + db.Updateable<MES_WIP_DATA>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.INNER_SN == q.CARTON_SN) + .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.ID)) + .ExecuteCommand(); + //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰� + db.Updateable<MES_WIP_HIS>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.INNER_SN == q.CARTON_SN) + .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && wipIDs.Contains(q.WIP_ID)) + .ExecuteCommand(); + //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰� + db.Updateable<MES_WIP_ACT>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.INNER_SN == q.CARTON_SN) + .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && wipIDs.Contains(q.WIP_ID)) + .ExecuteCommand(); + //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃 + db.Updateable<BIZ_MES_WO_SN>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.WIP_ID)) + .ExecuteCommand(); } }; } @@ -916,37 +925,38 @@ if (_pkgList.Any()) { db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand(); - foreach (var pkg in _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty())) - { - //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛� - db.Updateable<MES_WIP_DATA>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.INNER_SN == q.CARTON_SN) - .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.ID == pkg.WIP_ID) - .ExecuteCommand(); - //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰� - var endOperCode = CurPkg.IsReachedEndNode ? "EndNode" : "NotReachedEndNode"; - db.Updateable<MES_WIP_HIS>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.INNER_SN == q.CARTON_SN) - .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && (q.NODE_ID == pkg.NODE_ID || q.OPER_CODE == endOperCode)) - .ExecuteCommand(); - //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰� - db.Updateable<MES_WIP_ACT>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.INNER_SN == q.CARTON_SN) - .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == pkg.ACT_ID) - .ExecuteCommand(); - //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃 - db.Updateable<BIZ_MES_WO_SN>() - .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) - .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN) - .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID) - .ExecuteCommand(); - } + var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList(); + var nodeID = _pkgList.First().NODE_ID; + var actID = _pkgList.First().ACT_ID; + var wo = _pkgList.First().WORK_ORDER; + //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛� + db.Updateable<MES_WIP_DATA>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.INNER_SN == q.CARTON_SN) + .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.ID)) + .ExecuteCommand(); + //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰� + var endOperCode = CurPkg.IsReachedEndNode ? "EndNode" : "NotReachedEndNode"; + db.Updateable<MES_WIP_HIS>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.INNER_SN == q.CARTON_SN) + .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && (q.NODE_ID == nodeID || q.OPER_CODE == endOperCode) && wipIDs.Contains(q.WIP_ID)) + .ExecuteCommand(); + //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰� + db.Updateable<MES_WIP_ACT>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.INNER_SN == q.CARTON_SN) + .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && wipIDs.Contains(q.WIP_ID)) + .ExecuteCommand(); + //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃 + db.Updateable<BIZ_MES_WO_SN>() + .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) + .SetColumns(q => q.OUTER_SN == CurPkg.Item.Package.SN) + .Where(q => q.WORK_ORDER == wo && wipIDs.Contains(q.WIP_ID)) + .ExecuteCommand(); } }); //濡傛灉褰撳墠鏉$爜宸茬粡瀹屽伐锛屾鏌ュ綋鍓嶅伐鍗曟壒娆″拰宸ュ崟鏄惁瀹屽伐 -- Gitblit v1.9.3