From e8710d52e1b63dd6f640054aa92a496247edbb08 Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期三, 20 十一月 2024 21:31:09 +0800 Subject: [PATCH] 优化包装行为数量计算 --- Tiger.Business.MES/WorkAction/PackingAction.cs | 81 +++++++++++++++++++--------------------- 1 files changed, 39 insertions(+), 42 deletions(-) diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs index 885702d..f04c510 100644 --- a/Tiger.Business.MES/WorkAction/PackingAction.cs +++ b/Tiger.Business.MES/WorkAction/PackingAction.cs @@ -377,6 +377,7 @@ //鏈�澶栧眰鍖呰宸插鐞嗗畬鎴愬垯鐩存帴缁撴潫琛屼负 if (CurPkg.Item.PKG_LEVEL == FinishLevel) { + CurPkg.Item.WipSNs = CurPosition.CurWipSNs.ToDictionary(k => k.ID, v => v.SN); action = End(input); } //鏈�澶栧眰鍖呰鏈墦鍗版壂鎻忓垯缁х画 @@ -570,7 +571,7 @@ CurPkgItem.Package.WIP_ID = CurPosition.CurWipSNs.Count == 1 ? CurPosition.CurWipSNs.First().ID : null; CurPkgItem.Package.PKG_TYPE = dtl.PkgType.PKG_NAME; CurPkgItem.Package.ITEM_CODE = CurPosition.CurWipSNs.First().ITEM_CODE; - CurPkgItem.Package.QTY = CurPosition.CurWipSNs.First().QTY; + CurPkgItem.Package.QTY = CurPosition.CurWipSNs.Sum(q => q.QTY); CurPkgItem.Package.UNIT = dtl.PkgType.PKG_NAME; CurPkgItem.Package.WORK_ORDER = CurPosition.CurWipSNs.First().WORK_ORDER; CurPkgItem.Package.BATCH_NO = CurPosition.CurWipSNs.First().BATCH_NO; @@ -584,7 +585,11 @@ CurPkgItem.Package.OPER_CODE = CurPosition.CurWipSNs.First().OPER_CODE; CurPkgItem.Package.SEGMENT = CurPosition.CurWipSNs.First().SEGMENT; CurPkgItem.Package.ACT_ID = NodeAct.ID; + CurPkgItem.Package.ACT_NAME = NodeAct.ACT_NAME; CurPkgItem.Package.FLOW_SN = CurPosition.CurWipSNs.First().FLOW_SN; + + CurPkgItem.WipSNs = CurPosition.CurWipSNs.ToDictionary(k => k.ID, v => v.SN); + FinishLevel++; //瀹屾垚鍖呰鐨勫眰绾у皬浜庢渶澶栧眰鍖呰灞傜骇 if (FinishLevel < PkgRule.Details.Max(q => q.PKG_LEVEL)) @@ -647,6 +652,7 @@ OPER_CODE = CurPosition.CurWipSNs.First().OPER_CODE, SEGMENT = CurPosition.CurWipSNs.First().SEGMENT, ACT_ID = NodeAct.ID, + ACT_NAME = NodeAct.ACT_NAME, FLOW_SN = CurPosition.CurWipSNs.First().FLOW_SN, }; FinishLevel++; @@ -784,27 +790,6 @@ return action; } - public List<MES_WIP_PKG> GetMinPackageList(WipPkgItem parent) - { - List<MES_WIP_PKG> list = new(); - if (parent.Items.Any()) - { - foreach (var item in parent.Items) - { - item.Package.PARENT_SN = parent.Package?.SN; - list.AddRange(GetMinPackageList(item)); - } - } - else - { - if (!parent.Package.IsNullOrEmpty()) - { - list.Add(parent.Package); - } - } - return list; - } - public ApiAction<SubmitOutput> CompletePkg() { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); @@ -888,6 +873,7 @@ ACT_VALUE_1 = CurPkg.IsFinished ? "Y" : "N", ACT_VALUE_2 = CurPkg.ToJson(), ACT_VALUE_3 = CurPkg.IsFinished ? LabelDic[CurPkg.Item.PKG_LEVEL].ToJson() : "", + ACT_VALUE_4 = "Customer", ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(), TRACE_INFO = $"浜у搧鏉$爜[{string.Join("锛�", CurPosition.CurSN)}]鍖呰瀹屾垚", }; @@ -896,7 +882,8 @@ //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊� var _wipActs = wipActs.Clone(); - var _pkgList = CurPkg.IsFinished ? CurPosition.GetPackageList(CurPkg.Item) : new(); + var _pkgList = CurPkg.IsFinished ? CurPosition.GetPackageList(CurPkg.Item).Clone() : new(); + var _wipIDs = CurPkg.IsFinished ? CurPkg.Item.GetWipSnList().Select(q => q.Key).ToList().Clone() : new(); //淇濆瓨鏁版嵁 CurStep.DBSubmitAction = () => { @@ -908,36 +895,36 @@ if (_pkgList.Any()) { db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand(); - var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList(); + //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>() + db.Updateable<MES_WIP_DATA>(CurPosition.UserCode) .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)) + .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.ID)) .ExecuteCommand(); //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰� - db.Updateable<MES_WIP_HIS>() + db.Updateable<MES_WIP_HIS>(CurPosition.UserCode) .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)) + .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && _wipIDs.Contains(q.WIP_ID)) .ExecuteCommand(); //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц涓鸿褰� - db.Updateable<MES_WIP_ACT>() + db.Updateable<MES_WIP_ACT>(CurPosition.UserCode) .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)) + .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>() + db.Updateable<BIZ_MES_WO_SN>(CurPosition.UserCode) .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)) + .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.WIP_ID)) .ExecuteCommand(); } }; @@ -947,6 +934,7 @@ if (CurPkg.IsFinished) { var _pkgList = CurPosition.GetPackageList(CurPkg.Item).Clone(); + var _wipIDs = CurPkg.Item.GetWipSnList().Select(q => q.Key).ToList().Clone(); var _lastWipID = CurPosition.LastWipSNs?.FirstOrDefault()?.ID; //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屽垯鎶婂伐搴忎腑鏆傚瓨鏍囪璁句负false锛岀粺涓�鎻愪氦鍖呰鍐呬骇鍝佺殑杩囩珯璁板綍 @@ -958,43 +946,52 @@ if (_pkgList.Any()) { db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand(); - var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList(); + //var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList(); var nodeID = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).NODE_ID; var actID = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).ACT_ID; var wo = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).WORK_ORDER; //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛� - db.Updateable<MES_WIP_DATA>() + db.Updateable<MES_WIP_DATA>(CurPosition.UserCode) .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)) + .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.ID)) .ExecuteCommand(); //鍖呰淇℃伅淇濆瓨鍒扮敓浜ц繃绋嬭褰� var endOperCode = CurPkg.IsReachedEndNode ? "EndNode" : "NotReachedEndNode"; - db.Updateable<MES_WIP_HIS>() + db.Updateable<MES_WIP_HIS>(CurPosition.UserCode) .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)) + .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>() + db.Updateable<MES_WIP_ACT>(CurPosition.UserCode) .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)) + .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && _wipIDs.Contains(q.WIP_ID)) .ExecuteCommand(); - db.Updateable<MES_WIP_ACT>() + db.Updateable<MES_WIP_ACT>(CurPosition.UserCode) .SetColumns(q => q.ACT_VALUE_1 == (CurPkg.IsFinished ? "Y" : "N")) .SetColumns(q => q.ACT_VALUE_2 == CurPkg.ToJson()) .SetColumns(q => q.ACT_VALUE_3 == (CurPkg.IsFinished ? LabelDic[CurPkg.Item.PKG_LEVEL].ToJson() : "")) + .SetColumns(q => q.ACT_VALUE_4 == "Customer") .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == actID && q.WIP_ID == _lastWipID) .ExecuteCommand(); + var InStoreLabel = CurPkg.IsFinished ? CurPkg.InStoreLabel?.ToJson() : ""; + db.Updateable<MES_WIP_ACT>(CurPosition.UserCode) + .SetColumns(q => q.ACT_VALUE_1 == (CurPkg.IsFinished ? "Y" : "N")) + .SetColumns(q => q.ACT_VALUE_2 == CurPkg.ToJson()) + .SetColumns(q => q.ACT_VALUE_3 == InStoreLabel) + .SetColumns(q => q.ACT_VALUE_4 == "InStore") + .Where(q => q.WORK_ORDER == wo && q.NODE_ID == nodeID && q.ACT_ID == CurPkg.InStoreActID && q.WIP_ID == _lastWipID) + .ExecuteCommand(); //鍖呰淇℃伅淇濆瓨鍒板伐鍗曟潯鐮佹槑缁嗚〃 - db.Updateable<BIZ_MES_WO_SN>() + db.Updateable<BIZ_MES_WO_SN>(CurPosition.UserCode) .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)) + .Where(q => q.WORK_ORDER == wo && _wipIDs.Contains(q.WIP_ID)) .ExecuteCommand(); } }); -- Gitblit v1.9.3