From 1bcc9f898b1cb745bda50ac3b177de86f7b661bc Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期一, 26 八月 2024 16:51:51 +0800 Subject: [PATCH] 包装行为增加称重按预设范围来判断称重是否成功 增加专门验证用的行为 --- Tiger.Business.MES/WorkAction/PackingAction.cs | 180 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 134 insertions(+), 46 deletions(-) diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs index 88f623c..7a1566f 100644 --- a/Tiger.Business.MES/WorkAction/PackingAction.cs +++ b/Tiger.Business.MES/WorkAction/PackingAction.cs @@ -25,6 +25,7 @@ public MES_WO_ACTION Setting { get; set; } #endregion public BAS_PKG_RULE PkgRule { get; set; } + public BAS_PKG_PROD PkgProd { get; set; } public WipPkg CurPkg { get; set; } public WipPkgItem CurPkgItem { get; set; } public PackingActionOutput CurCmd { get; set; } @@ -68,6 +69,8 @@ LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); //鑾峰彇鏄惁鍖呰瀹屽悗闇�瑕佺О閲� NeedWeighing = Setting.OPTION_2 == "Y"; + //鑾峰彇鍖呰瑙勫垯鐨勭О閲嶈寖鍥� + PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).First(); //濡傛灉宸ュ簭涓婁笅鏂囦腑娌℃湁鍖呰璁板綍鍒欐柊寤轰竴涓紝鏈夊垯鑾峰彇褰撳墠鐨勫寘瑁呰褰� if (CurPosition.Context.ContainsKey("CurPackage") && !CurPosition.Context["CurPackage"].IsNullOrEmpty()) { @@ -274,12 +277,89 @@ } } break; + // Weighing锛氱О閲嶏紝瀹屾垚鍖呰鍚庡鏁翠釜鍖呰鎴愮О閲� + case "Weighing": + if (CurCmd.ExecCode == "Weighing") + { + if (!pInput.WeightInfo.IsNullOrEmpty() && pInput.WeightInfo.Weight > 0) + { + //楠岃瘉閲嶉噺鏁版嵁鏄惁绗﹀悎璁剧疆濂界殑閲嶉噺鑼冨洿 + if (!PkgProd.IsNullOrEmpty() && (pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT || PkgProd.MIN_WEIGHT < pInput.WeightInfo.Weight)) + { + action.IsSuccessed = false; + action.Data.Data = CurCmd; + action.Data.ShortMsg = new("閲嶉噺瓒呴檺", ShortMessage.Types.Failed); + //action.LocaleMsg = new($"澶栧寘瑁呴噸閲廩{0}]瓒呭嚭浜у搧[{1}]鍦ㄥ寘瑁呰鍒橻{2}]涓殑棰勮鑼冨洿[{3} - {4}]锛岃澶勭悊鍚庨噸鏂颁笂绉扮О閲�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PackageOverWeight", pInput.WeightInfo.Weight + pInput.WeightInfo.Unit.IsNullOrEmpty("", " " + pInput.WeightInfo.Unit), CurPosition.WorkBatch.WO.ITEM_CODE, PkgRule.RULE_NAME, PkgProd.MIN_WEIGHT + PkgProd.MIN_UNIT.IsNullOrEmpty("", " " + PkgProd.MIN_UNIT), PkgProd.MAX_WEIGHT + PkgProd.MAX_UNIT.IsNullOrEmpty("", " " + PkgProd.MAX_UNIT)); + return action; + } + + CurCmd = null; + PrintTimes = 0; + CurPkg.WeightInfo.Weight = pInput.WeightInfo.Weight; + CurPkg.WeightInfo.Unit = pInput.WeightInfo.Unit; + NeedWeighing = false; + + //绉伴噸鎴愬姛锛岀户缁涓� + var dtl = PkgRule.Details.FirstOrDefault(q => q.PKG_LEVEL == FinishLevel + 1); + //鏈�澶栧眰鍖呰宸插鐞嗗畬鎴愬垯鐩存帴缁撴潫琛屼负 + if (CurPkg.Item.PKG_LEVEL == FinishLevel) + { + action = End(); + } + //鏈�澶栧眰鍖呰鏈墦鍗版壂鎻忓垯缁х画 + else + { + //濡傛灉涓虹┖鍒欎笉闇�瑕佹墦鍗� + if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty()) + { + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Scan"; + data.PkgLevel = dtl.PKG_LEVEL; + CurCmd = data; + action.Data.Data = data; + action.Data.ShortMsg = new("鎵弿鏍囩", ShortMessage.Types.Normal); + //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME); + } + else + { + //璁剧疆鎵撳嵃鍙橀噺鍊� + LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]); + + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Print"; + data.PkgLevel = dtl.PKG_LEVEL; + data.PrintLable = LabelDic[dtl.PKG_LEVEL]; + CurCmd = data; + PrintTimes++; + action.Data.Data = data; + action.Data.ShortMsg = new("鎵撳嵃鏍囩", ShortMessage.Types.Normal); + //action.LocaleMsg = new Locale($"寮�濮嬬{PrintTimes}娆℃墦鍗扮{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE}: {LabelDic[dtl.PKG_LEVEL].LABEL_NAME}]"); + action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME); + } + } + + + } + else + { + action.IsSuccessed = false; + action.Data.Data = CurCmd; + action.Data.ShortMsg = new("绉伴噸澶辫触", ShortMessage.Types.Failed); + //action.LocaleMsg = new($"澶栧寘瑁呯О閲嶆暟鎹紓甯革紝璇烽噸鏂颁笂绉扮О閲�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighingAgain"); + return action; + } + } + break; // Complete锛氬畬鎴愶紝瀹屾垚鍏ㄩ儴鍖呰鍚庣粨鏉熻涓� case "Complete": if (CurCmd.ExecCode == "Complete") { CurCmd = null; PrintTimes = 0; + //鎵撳嵃鍚庣О閲� if (NeedWeighing) { var data = new PackingActionOutput() { PkgInfo = CurPkg }; @@ -294,28 +374,6 @@ else { action = End(); - } - } - break; - // Complete锛氬畬鎴愶紝瀹屾垚鍏ㄩ儴鍖呰鍚庣粨鏉熻涓� - case "Weighing": - if (CurCmd.ExecCode == "Weighing") - { - if (!pInput.WeightInfo.IsNullOrEmpty() && pInput.WeightInfo.Weight > 0) - { - CurCmd = null; - PrintTimes = 0; - CurPkgItem.Package.WEIGHT = pInput.WeightInfo.Weight; - CurPkgItem.Package.WEIGHT_UNIT = pInput.WeightInfo.Unit; - action = End(); - } - else - { - action.IsSuccessed = false; - action.Data.ShortMsg = new("绉伴噸澶辫触", ShortMessage.Types.Failed); - //action.LocaleMsg = new($"鍖呰[{CurPkgItem.Package.SN}]绉伴噸鏁版嵁寮傚父锛岃閲嶆柊涓婄О绉伴噸"); - action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighingAgain", CurPkgItem.Package.SN); - return action; } } break; @@ -500,31 +558,48 @@ //娣诲姞鏄庣粏鍚庡垽鏂綋鍓嶅寘瑁呭眰绾х殑鏄庣粏鏁伴噺鏄惁绛変簬鍖呰鏁伴噺锛岃嫢鐩哥瓑鍒欐爣璁板綋鍓嶅寘瑁呭眰绾т负瀹屾垚骞跺皾璇曟墦鍗版爣绛� if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || CurStep.IsNullOrEmpty()) { - //琛屼负璁惧畾鐨凮PTION_1-9鏄寘瑁呬笉鍚屽眰绾х殑鏍囩妯℃澘浠g爜锛屽鏋滀负绌哄垯涓嶉渶瑕佹墦鍗� - if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty()) + //鎵撳嵃鍓嶇О閲嶏細濡傛灉褰撳墠鐨勫寘瑁呮槑缁嗙殑涓婁竴灞傚寘瑁呭璞℃槸鏈�澶栧眰鍖呰涓旈渶瑕佺О閲嶆椂锛屽厛绉伴噸锛屽悎鏍煎悗鍦ㄥ彂鍗版垨鑰呮壂鎻忔渶澶栧眰鍖呰鏍囩 + if (CurPkgItem.PKG_LEVEL == CurPkg.Item.PKG_LEVEL && NeedWeighing) { var data = new PackingActionOutput() { PkgInfo = CurPkg }; - data.ExecCode = "Scan"; - data.PkgLevel = dtl.PKG_LEVEL; + data.ExecCode = "Weighing"; + data.PkgLevel = CurPkgItem.PKG_LEVEL; CurCmd = data; action.Data.Data = data; - //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�"); - action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME); - } + action.Data.ShortMsg = new("涓婄О绉伴噸", ShortMessage.Types.Success); + //action.LocaleMsg = new($"璇锋妸澶栧寘瑁呬笂绉扮О閲�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighing"); + } else { - //璁剧疆鎵撳嵃鍙橀噺鍊� - LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]); - - var data = new PackingActionOutput() { PkgInfo = CurPkg }; - data.ExecCode = "Print"; - data.PkgLevel = dtl.PKG_LEVEL; - data.PrintLable = LabelDic[dtl.PKG_LEVEL]; - CurCmd = data; - PrintTimes++; - action.Data.Data = data; - //action.LocaleMsg = new Locale($"寮�濮嬬{PrintTimes}娆℃墦鍗扮{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE}: {LabelDic[dtl.PKG_LEVEL].LABEL_NAME}]"); - action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME); + //濡傛灉涓虹┖鍒欎笉闇�瑕佹墦鍗� + if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty()) + { + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Scan"; + data.PkgLevel = dtl.PKG_LEVEL; + CurCmd = data; + action.Data.Data = data; + action.Data.ShortMsg = new("鎵弿鏍囩", ShortMessage.Types.Normal); + //action.LocaleMsg = new($"璇锋壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseScanLabel", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME); + } + else + { + //璁剧疆鎵撳嵃鍙橀噺鍊� + LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]); + + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Print"; + data.PkgLevel = dtl.PKG_LEVEL; + data.PrintLable = LabelDic[dtl.PKG_LEVEL]; + CurCmd = data; + PrintTimes++; + action.Data.Data = data; + action.Data.ShortMsg = new("鎵撳嵃鏍囩", ShortMessage.Types.Normal); + //action.LocaleMsg = new Locale($"寮�濮嬬{PrintTimes}娆℃墦鍗扮{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE}: {LabelDic[dtl.PKG_LEVEL].LABEL_NAME}]"); + action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME); + } } } //褰撳墠鍖呰灞傜骇鐨勬槑缁嗘暟閲忔湭杈惧埌鍖呰鏁伴噺锛屽垯瀹屾垚鏈鎵弿锛岀瓑寰呬笅涓骇鍝佽繘绔� @@ -560,10 +635,14 @@ private List<MES_WIP_PKG> GetPackageList(WipPkgItem parent) { - List<MES_WIP_PKG> list = new() { parent.Package }; + List<MES_WIP_PKG> list = new(); + if (!parent.Package.IsNullOrEmpty()) + { + list.Add(parent.Package); + } foreach (var item in parent.Items) { - item.Package.PARENT_SN = parent.Package.SN; + item.Package.PARENT_SN = parent.Package?.SN; list.AddRange(GetPackageList(item)); } return list; @@ -645,6 +724,12 @@ wipActs.Add(wipAct); } } + //璁板綍澶栧寘瑁呯殑绉伴噸鏁版嵁 + if (CurPkg.IsFinished) + { + CurPkg.Item.Package.WEIGHT = CurPkg.WeightInfo.Weight; + CurPkg.Item.Package.WEIGHT_UNIT = CurPkg.WeightInfo.Unit; + } //鍒涘缓鍙橀噺鍏嬮殕瀵硅薄鐢ㄤ簬浼犲叆DBSubmitAction涓繚瀛樺綋鍓嶉渶瑕佹殏瀛樼殑鏁版嵁鍊� var _wipActs = wipActs.Clone(); @@ -659,7 +744,7 @@ } if (_pkgList.Any()) { - db.Insertable(_pkgList, CurPosition.UserCode).ExecuteCommand(); + db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand(); foreach (var pkg in _pkgList) { //鍖呰淇℃伅淇濆瓨鍒板湪鍒跺搧淇℃伅琛� @@ -685,6 +770,8 @@ CurPosition.NeedTemporaryStoreDBCommitAction = false; //鍒犻櫎宸ュ簭涓婁笅鏂囦腑鐨勫寘瑁呰褰� CurPosition.Context.Remove("CurPackage"); + //action.LocaleMsg = new($"鏉$爜[{CurPkg.Item.Package?.SN}]鍖呰瀹屾垚"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPkg.Item.Package.SN); } else { @@ -699,12 +786,13 @@ { CurPosition.Context.Add("CurPackage", CurPkg); } + //action.LocaleMsg = new($"鏉$爜[{CurPosition.CurSN}]鍖呰瀹屾垚"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPosition.CurSN); } IsFinished = true; action.Data.ShortMsg = new("鍖呰瀹屾垚", ShortMessage.Types.Success); - action.LocaleMsg = new($"鏉$爜[{CurPkg.Item.Package.SN}]鍖呰瀹屾垚"); - action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPkg.Item.Package.SN); + return action; } -- Gitblit v1.9.3