From 0c2a5ba3e7e2334f1cd69a66cc60cc0be0e4129c Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期二, 30 七月 2024 22:34:39 +0800 Subject: [PATCH] 包装工序功能以及一些一直问题的优化 --- Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs | 28 Tiger.Api/Controllers/Test/TestController.R.cs | 11 Tiger.Api/Language.db | 0 Tiger.Business.MES/Transaction/CollectNode.cs | 12 Tiger.Model.Net/Entitys/BAS/BAS_PKG_RULE.cs | 66 +- Tiger.Business.MES/Transaction/PackingNode.cs | 16 Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs | 71 +++ Tiger.Business.MES/Transaction/TestNode.cs | 12 Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs | 138 ++--- Tiger.Model.Net/Entitys/MES/MES_WO_OPER.cs | 20 Tiger.Model.Net/Entitys/MES/MES_PROD_ACTION.cs | 46 + Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs | 14 Tiger.IBusiness/MES/WorkAction/IPackingAction.cs | 12 Tiger.Model.Net/Entitys/MES/MES_WO_ACTION.cs | 184 ++++--- Tiger.Business.MES/WorkAction/PackingAction.cs | 536 +++++++++++++++++++++++++ Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs | 13 Tiger.Model.Net/Entitys/MES/MES_PROD_OPER.cs | 28 + 17 files changed, 959 insertions(+), 248 deletions(-) diff --git a/Tiger.Api/Controllers/Test/TestController.R.cs b/Tiger.Api/Controllers/Test/TestController.R.cs index bb1017a..7a4eedf 100644 --- a/Tiger.Api/Controllers/Test/TestController.R.cs +++ b/Tiger.Api/Controllers/Test/TestController.R.cs @@ -319,6 +319,17 @@ Logger.Default.Info($"{begin:mmssfff} completed"); return Ok($"{begin:mmssfff} completed"); } + + [HttpPost] + public async Task<IActionResult> MESSubmitAsync([FromBody] ApiAction<SubmitInput> action) + { + var data = action.Data.Data; + + data?.ToString().JsonToObject<PackingActionInput>(); + var result = JsonConvert.DeserializeObject<PackingActionInput>(data?.ToString() ?? ""); + + return Ok(result?.ToJson()); + } } /// <summary> diff --git a/Tiger.Api/Language.db b/Tiger.Api/Language.db index d84d21c..407e464 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 1376324..f0e0bf1 100644 --- a/Tiger.Business.MES/Transaction/CollectNode.cs +++ b/Tiger.Business.MES/Transaction/CollectNode.cs @@ -126,9 +126,9 @@ result.Data.IsFinished = IsFinishAllSteps; result.Data.CurWO = CurBatch.WO.ORDER_NO; result.Data.CurBatch = CurBatch.Batch.BATCH_NO; - result.Data.CurNode = CurStep.NodeAct.ACT_NAME; - result.Data.StepActCode = CurStep.NodeAct.ACT_CODE; - result.Data.NextStepID = CurStep.ID; + result.Data.CurNode = CurStep?.NodeAct.ACT_NAME; + result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE; + result.Data.NextStepID = CurStep?.ID; } } //濡傛灉鎵�鏈夊伐姝ラ兘瀹屾垚 @@ -273,7 +273,7 @@ }; Steps.Add(curStep); - //鏈夐渶瑕佸垯娣诲姞宸ュ簭鑺傜偣鐨勫叾浠栧伐姝� + //鏈夐渶瑕佺敤鎴锋彁浜や俊鎭垯娣诲姞宸ュ簭鑺傜偣鐨勫叾浠栧伐姝� //鏈�鍚庢坊鍔犲綋鍓嶅伐搴忕殑琛屼负宸ユ GenerateSteps(curStep); @@ -306,7 +306,7 @@ result.Data.IsFinished = IsFinishAllSteps; result.Data.CurWO = CurBatch.WO.ORDER_NO; result.Data.CurBatch = CurBatch.Batch.BATCH_NO; - result.Data.CurNode = CurStep.Node.NODE_NAME; + result.Data.CurNode = CurStep?.Node.NODE_NAME; result.Data.NextStepID = next.ID; //鏍规嵁宸ュ簭鑺傜偣宸ユ鐨勫簭鍙疯繑鍥炵浉搴旂殑鎿嶄綔鎻愮ず @@ -333,7 +333,7 @@ action.Data.IsFinished = IsFinishAllSteps; action.Data.CurWO = CurBatch.WO.ORDER_NO; action.Data.CurBatch = CurBatch.Batch.BATCH_NO; - action.Data.CurNode = CurStep.Node.NODE_NAME; + action.Data.CurNode = CurStep?.Node.NODE_NAME; action.Data.NextStepID = ""; action = DoIfFinishAllSteps(action); } diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs index a736c08..7d64f06 100644 --- a/Tiger.Business.MES/Transaction/PackingNode.cs +++ b/Tiger.Business.MES/Transaction/PackingNode.cs @@ -126,9 +126,9 @@ result.Data.IsFinished = IsFinishAllSteps; result.Data.CurWO = CurBatch.WO.ORDER_NO; result.Data.CurBatch = CurBatch.Batch.BATCH_NO; - result.Data.CurNode = CurStep.NodeAct.ACT_NAME; - result.Data.StepActCode = CurStep.NodeAct.ACT_CODE; - result.Data.NextStepID = CurStep.ID; + result.Data.CurNode = CurStep?.NodeAct.ACT_NAME; + result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE; + result.Data.NextStepID = CurStep?.ID; } } //濡傛灉鎵�鏈夊伐姝ラ兘瀹屾垚 @@ -273,7 +273,7 @@ }; Steps.Add(curStep); - //鏈夐渶瑕佸垯娣诲姞宸ュ簭鑺傜偣鐨勫叾浠栧伐姝� + //鏈夐渶瑕佺敤鎴锋彁浜や俊鎭垯娣诲姞宸ュ簭鑺傜偣鐨勫叾浠栧伐姝� //鏈�鍚庢坊鍔犲綋鍓嶅伐搴忕殑琛屼负宸ユ GenerateSteps(curStep); @@ -306,15 +306,15 @@ result.Data.IsFinished = IsFinishAllSteps; result.Data.CurWO = CurBatch.WO.ORDER_NO; result.Data.CurBatch = CurBatch.Batch.BATCH_NO; - result.Data.CurNode = CurStep.Node.NODE_NAME; + result.Data.CurNode = CurStep?.Node.NODE_NAME; result.Data.NextStepID = next.ID; - + //鏍规嵁宸ュ簭鑺傜偣宸ユ鐨勫簭鍙疯繑鍥炵浉搴旂殑鎿嶄綔鎻愮ず switch (next.Sequence) { case 2: //action.LocaleMsg = new($"璇锋墽琛岀浜屾"); - result.LocaleMsg = new("MES.Transaction.PackingNode.绗簩姝ユ搷浣滄彁绀�"); + result.LocaleMsg = new("MES.Transaction.CollectNode.绗簩姝ユ搷浣滄彁绀�"); break; default: break; @@ -333,7 +333,7 @@ action.Data.IsFinished = IsFinishAllSteps; action.Data.CurWO = CurBatch.WO.ORDER_NO; action.Data.CurBatch = CurBatch.Batch.BATCH_NO; - action.Data.CurNode = CurStep.Node.NODE_NAME; + action.Data.CurNode = CurStep?.Node.NODE_NAME; action.Data.NextStepID = ""; action = DoIfFinishAllSteps(action); } diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs index 17ef458..80ca242 100644 --- a/Tiger.Business.MES/Transaction/TestNode.cs +++ b/Tiger.Business.MES/Transaction/TestNode.cs @@ -127,9 +127,9 @@ result.Data.IsFinished = IsFinishAllSteps; result.Data.CurWO = CurBatch.WO.ORDER_NO; result.Data.CurBatch = CurBatch.Batch.BATCH_NO; - result.Data.CurNode = CurStep.NodeAct.ACT_NAME; - result.Data.StepActCode = CurStep.NodeAct.ACT_CODE; - result.Data.NextStepID = CurStep.ID; + result.Data.CurNode = CurStep?.NodeAct.ACT_NAME; + result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE; + result.Data.NextStepID = CurStep?.ID; } } //濡傛灉鎵�鏈夊伐姝ラ兘瀹屾垚 @@ -274,7 +274,7 @@ }; Steps.Add(curStep); - //鏈夐渶瑕佸垯娣诲姞宸ュ簭鑺傜偣鐨勫叾浠栧伐姝� + //鏈夐渶瑕佺敤鎴锋彁浜や俊鎭垯娣诲姞宸ュ簭鑺傜偣鐨勫叾浠栧伐姝� //鏈�鍚庢坊鍔犲綋鍓嶅伐搴忕殑琛屼负宸ユ GenerateSteps(curStep); @@ -307,7 +307,7 @@ result.Data.IsFinished = IsFinishAllSteps; result.Data.CurWO = CurBatch.WO.ORDER_NO; result.Data.CurBatch = CurBatch.Batch.BATCH_NO; - result.Data.CurNode = CurStep.Node.NODE_NAME; + result.Data.CurNode = CurStep?.Node.NODE_NAME; result.Data.NextStepID = next.ID; //鏍规嵁宸ュ簭鑺傜偣宸ユ鐨勫簭鍙疯繑鍥炵浉搴旂殑鎿嶄綔鎻愮ず @@ -334,7 +334,7 @@ action.Data.IsFinished = IsFinishAllSteps; action.Data.CurWO = CurBatch.WO.ORDER_NO; action.Data.CurBatch = CurBatch.Batch.BATCH_NO; - action.Data.CurNode = CurStep.Node.NODE_NAME; + action.Data.CurNode = CurStep?.Node.NODE_NAME; action.Data.NextStepID = ""; action = DoIfFinishAllSteps(action); } diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs new file mode 100644 index 0000000..312c526 --- /dev/null +++ b/Tiger.Business.MES/WorkAction/PackingAction.cs @@ -0,0 +1,536 @@ +锘縰sing Rhea.Common; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tiger.IBusiness; +using Tiger.Model; +using Tiger.Model.Entitys.MES.Position; + +namespace Tiger.Business.MES.WorkAction +{ + public class PackingAction : IPackingAction + { + #region Propertys & Variables + #region 鍥哄畾鍐欐硶锛屽伐搴忎腑鐨勫繀瑕佷俊鎭� + public bool IsFinished { get; set; } = false; + public IWorkStep CurStep { get; set; } + public IPosition CurPosition { get; set; } + public MES_WO_NODE_ACT NodeAct { get; set; } + public MES_WO_ACTION Setting { get; set; } + #endregion + public BAS_PKG_RULE PkgRule { get; set; } + public WipPkg CurPkg { get; set; } + public WipPkgItem CurPkgItem { get; set; } + public PackingActionOutput CurPrint { get; set; } + public int PrintTimes = 0; + public Dictionary<int, BAS_LABEL_TEMP> LabelDic { get; set; } + public List<BAS_LABEL_PV> LabelPV { get; set; } + public int FinishLevel = 0; + #endregion Propertys & Variables + + #region Functions + /// <summary> + /// 鍒濆鍖栧伐搴忚涓� + /// </summary> + /// <returns></returns> + public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) + { + #region 鍥哄畾鍐欐硶锛岀粰榛樿鍙橀噺璧嬪�� + CurStep = curStep; + CurPosition = position; + NodeAct = nodeAct; + Setting = setting; + #endregion + + PkgRule = Biz.Db.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == setting.PKG_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First(); + //鏍规嵁琛屼负璁剧疆鑾峰彇澶氬眰鍖呰鐨勬爣绛炬墦鍗版ā鏉垮瓧鍏� + for (int i = 1; i < 10; i++) + { + var code = Setting.GetType().GetProperty($"OPTION_{i}")?.GetValue(Setting).ToString() ?? ""; + var label = code.IsNullOrEmpty() ? null : Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == code).IncludesAllFirstLayer().First(); + LabelDic.Add(i, label); + } + //濡傛灉宸ュ簭涓婁笅鏂囦腑娌℃湁鍖呰璁板綍鍒欐柊寤轰竴涓紝鏈夊垯鑾峰彇褰撳墠鐨勫寘瑁呰褰� + if (CurPosition.Context.ContainsKey("CurPackage") && !CurPosition.Context["CurPackage"].IsNullOrEmpty()) + { + CurPkg = (CurPosition.Context["CurPackage"] as WipPkg).Clone(); + } + else + { + var max = PkgRule.Details.OrderByDescending(q => q.PKG_LEVEL).First(); + CurPkg = new WipPkg() + { + RULE_CODE = PkgRule.RULE_CODE, + RULE_NAME = PkgRule.RULE_NAME, + Item = new WipPkgItem() + { + PKG_CODE = max.PKG_CODE, + PKG_NAME = max.PkgType.PKG_NAME, + IS_MIN_PKG = max.PkgType.IS_MIN_PKG, + PKG_LEVEL = max.PKG_LEVEL, + PKG_QTY = max.PKG_QTY, + LABEL_CODE = LabelDic[max.PKG_LEVEL].LABEL_CODE, + } + }; + WipPkgItem child = null; + foreach (var dtl in PkgRule.Details.OrderBy(q => q.PKG_LEVEL)) + { + if (1 < dtl.PKG_LEVEL && dtl.PKG_LEVEL < max.PKG_LEVEL) + { + var item = new WipPkgItem() + { + PKG_CODE = dtl.PKG_CODE, + PKG_NAME = dtl.PkgType.PKG_NAME, + IS_MIN_PKG = dtl.PkgType.IS_MIN_PKG, + PKG_LEVEL = dtl.PKG_LEVEL, + PKG_QTY = dtl.PKG_QTY, + LABEL_CODE = LabelDic[dtl.PKG_LEVEL].LABEL_CODE, + }; + if (!child.IsNullOrEmpty()) + { + item.Items.Add(child); + } + child = item; + } + } + CurPkg.Item.Items.Add(child); + } + } + + /// <summary> + /// 鑾峰彇琛屼负寮�濮嬬殑鎻愮ず淇℃伅 + /// </summary> + /// <returns></returns> + public Locale GetBeginMsg() + { + var min = PkgRule.Details.OrderBy(q => q.PKG_LEVEL).First(); + //琛屼负璁惧畾鐨凮PTION_1鏄涓�灞傚寘瑁呯殑鏍囩妯℃澘浠g爜锛屽鏋滀负绌哄垯涓嶉渶瑕佹墦鍗� + if (LabelDic[min.PKG_LEVEL].IsNullOrEmpty()) + { + var msg = new Locale("MES.WorkAction.PackingAction.BeginMsg", min.PKG_LEVEL, min.PkgType.PKG_NAME, CurPosition.CurWipSN.SN); + //var msg = new Locale($"宸叉壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮乕{CurPosition.CurWipSN.SN}]"); + return msg; + } + else + { + var msg = new Locale("MES.WorkAction.PackingAction.BeginPrint", min.PKG_LEVEL, min.PkgType.PKG_NAME, LabelDic[min.PKG_LEVEL].LABEL_CODE, LabelDic[min.PKG_LEVEL].LABEL_NAME); + //var msg = new Locale($"寮�濮嬫墦鍗扮{min.PKG_LEVEL}灞傚寘瑁匸{min.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[min.PKG_LEVEL].LABEL_CODE}: {LabelDic[min.PKG_LEVEL].LABEL_NAME}]"); + return msg; + } + } + + /// <summary> + /// 灏濊瘯寮�濮嬫墽琛屽伐搴忚涓� + /// </summary> + /// <returns></returns> + public ApiAction<SubmitOutput> TryBegin(SubmitInput input) + { + var action = new ApiAction<SubmitOutput>(new SubmitOutput()); + action.LocaleMsg = GetBeginMsg(); + + var min = PkgRule.Details.OrderBy(q => q.PKG_LEVEL).First(); + //琛屼负璁惧畾鐨凮PTION_1-9鏄寘瑁呬笉鍚屽眰绾х殑鏍囩妯℃澘浠g爜锛屽鏋滀负绌哄垯涓嶉渶瑕佹墦鍗� + if (LabelDic[min.PKG_LEVEL].IsNullOrEmpty()) + { + input.Data = new PackingActionInput() + { + ExecCode = "Scan", + IsFinish = true, + PkgLevel = min.PKG_LEVEL, + PkgSN = CurPosition.CurWipSN.SN, + }.ToJson(); + action = Submit(input); + } + else + { + //璁剧疆鎵撳嵃鍙橀噺鍊� + LabelDic[min.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[min.PKG_LEVEL]); + + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Print"; + data.PkgLevel = min.PKG_LEVEL; + data.PrintLable = LabelDic[min.PKG_LEVEL]; + CurPrint = data; + PrintTimes++; + action.Data.Data = data; + //action.LocaleMsg = new Locale($"寮�濮嬬{PrintTimes}娆℃墦鍗扮{min.PKG_LEVEL}灞傚寘瑁匸{min.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[min.PKG_LEVEL].LABEL_CODE}: {LabelDic[min.PKG_LEVEL].LABEL_NAME}]"); + action.LocaleMsg = new Locale("MES.WorkAction.PackingAction.BeginPrint", PrintTimes, min.PKG_LEVEL, min.PkgType.PKG_NAME, LabelDic[min.PKG_LEVEL].LABEL_CODE, LabelDic[min.PKG_LEVEL].LABEL_NAME); + } + + //濡傛灉杩斿洖鎴愬姛鍒欒涓哄綋鍓嶈涓哄彲浠ュ紑濮嬫墽琛岋紝鍚﹀垯杩斿洖澶辫触 + action.IsSuccessed = true; + return action; + } + + /// <summary> + /// 宸ュ簭琛屼负鎻愪氦鏁版嵁 + /// </summary> + /// <returns></returns> + public ApiAction<SubmitOutput> Submit(SubmitInput input) + { + var action = new ApiAction<SubmitOutput>(new SubmitOutput()); + + var pInput = input.Data?.JsonToObject<PackingActionInput>(); + switch (pInput.ExecCode) + { + //Scan锛氭壂鐮侊紝鎵弿褰撳墠鍖呰灞傜骇鐨勬潯鐮� + case "Scan": + { + //瀹㈡埛绔壂鎻忔垚鍔� + if (pInput.IsFinish) + { + action = SavePkgData(input, action); + } + //瀹㈡埛绔壂鎻忓け璐� + else + { + var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == pInput.PkgLevel); + action.IsSuccessed = false; + //action.LocaleMsg = new($"鏉$爜鎵弿澶辫触锛岃閲嶆柊鎵弿绗瑊dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.ScanFail", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME); + return action; + } + } + break; + //Print锛氭墦鍗帮紝鎵撳嵃褰撳墠鍖呰灞傜骇鐨勬爣绛� + case "Print": + { + var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == pInput.PkgLevel); + //瀹㈡埛绔畬鎴愭墦鍗� + if (pInput.IsFinish) + { + CurPrint = null; + PrintTimes = 0; + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Scan"; + data.PkgLevel = dtl.PKG_LEVEL; + 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); + } + //瀹㈡埛绔墦鍗板け璐� + else + { + //濡傛灉鎵撳嵃澶辫触鍒欏皾璇曚笁娆¢噸鏂版墦鍗帮紝濡傛灉閮藉け璐ュ垯閲嶇疆宸ュ簭 + if (PrintTimes < 3 && !CurPrint.IsNullOrEmpty()) + { + PrintTimes++; + action.Data.Data = CurPrint; + //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 + { + CurPrint = null; + PrintTimes = 0; + action.IsSuccessed = false; + //action.LocaleMsg = new($"灏濊瘯绗瑊PrintTimes}娆℃墦鍗扮{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛綶{LabelDic[dtl.PKG_LEVEL].LABEL_CODE}: {LabelDic[dtl.PKG_LEVEL].LABEL_NAME}]澶辫触锛屽伐搴忓凡閲嶇疆锛岃閲嶆柊鎵弿杩涚珯浜у搧鏉$爜"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PrintFail3Times", PrintTimes, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, LabelDic[dtl.PKG_LEVEL].LABEL_CODE, LabelDic[dtl.PKG_LEVEL].LABEL_NAME); + CurPosition.ResetSteps(); + } + } + } + break; + // Complete锛氬畬鎴愶紝瀹屾垚鍏ㄩ儴鍖呰鍚庣粨鏉熻涓� + case "Complete": + { + action = End(); + } + break; + default: + break; + } + + //濡傛灉琛屼负璁剧疆涓哄嚭閿欓渶瑕侀噸缃伐搴忔搷浣� + if (!action.IsSuccessed && NodeAct.NEED_RESET == "Y") + { + CurPosition.ResetSteps(); + } + return action; + } + + //淇濆瓨鍖呰淇℃伅 + public ApiAction<SubmitOutput> SavePkgData(SubmitInput input, ApiAction<SubmitOutput> action) + { + var pInput = input.Data?.JsonToObject<PackingActionInput>(); + try + { + //姝e湪澶勭悊鐨勫寘瑁呭眰绾ф槑缁� + var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == FinishLevel + 1); + + //娌℃湁淇濆瓨杩囦换浣曞寘瑁呭眰绾х殑鏁版嵁锛屽垯鍏堝鐞嗘渶灏忓寘瑁呮暟鎹� + if (FinishLevel == 0) + { + CurPkgItem = new WipPkgItem() + { + PKG_CODE = dtl.PKG_CODE, + PKG_NAME = dtl.PkgType.PKG_NAME, + IS_MIN_PKG = dtl.PkgType.IS_MIN_PKG, + PKG_LEVEL = dtl.PKG_LEVEL, + PKG_QTY = dtl.PKG_QTY, + LABEL_CODE = LabelDic[dtl.PKG_LEVEL].LABEL_CODE, + IsFinished = true, + Package = new() + { + AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, + AUTH_PROD = CurPosition.CurLine.LINE_CODE, + SN = pInput.PkgSN, + PKG_TYPE = dtl.PkgType.PKG_NAME, + ITEM_CODE = CurPosition.CurWipSN.ITEM_CODE, + QTY = CurPosition.CurWipSN.QTY, + UNIT = dtl.PkgType.PKG_NAME, + WORK_ORDER = CurPosition.CurWipSN.WORK_ORDER, + BATCH_NO = CurPosition.CurWipSN.BATCH_NO, + ROT_CODE = CurPosition.CurWipSN.ROT_CODE, + NODE_ID = CurPosition.CurWipSN.NODE_ID, + NODE_NAME = CurPosition.CurWipSN.NODE_NAME, + FTY_CODE = CurPosition.CurWipSN.FTY_CODE, + WS_CODE = CurPosition.CurWipSN.WS_CODE, + LINE_CODE = CurPosition.CurWipSN.LINE_CODE, + POST_CODE = CurPosition.CurWipSN.POST_CODE, + OPER_CODE = CurPosition.CurWipSN.OPER_CODE, + SEGMENT = CurPosition.CurWipSN.SEGMENT, + } + }; + FinishLevel++; + action = SavePkgData(input, action); + } + //澶勭悊鍏朵粬鍖呰灞傜骇鏁版嵁 + else + { + //瀹㈡埛绔彁浜ょ殑鍖呰灞傜骇绛変簬褰撳墠澶勭悊鐨勫寘瑁呭眰绾� + if (pInput.PkgLevel == dtl.PKG_LEVEL) + { + CurPkgItem.IsFinished = true; + CurPkgItem.Package = new() + { + AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, + AUTH_PROD = CurPosition.CurLine.LINE_CODE, + SN = pInput.PkgSN, + PKG_TYPE = dtl.PkgType.PKG_NAME, + ITEM_CODE = CurPosition.CurWipSN.ITEM_CODE, + QTY = CurPkgItem.Items.Sum(q => q.Package.QTY), + UNIT = dtl.PkgType.PKG_NAME, + WORK_ORDER = CurPosition.CurWipSN.WORK_ORDER, + BATCH_NO = CurPosition.CurWipSN.BATCH_NO, + ROT_CODE = CurPosition.CurWipSN.ROT_CODE, + NODE_ID = CurPosition.CurWipSN.NODE_ID, + NODE_NAME = CurPosition.CurWipSN.NODE_NAME, + FTY_CODE = CurPosition.CurWipSN.FTY_CODE, + WS_CODE = CurPosition.CurWipSN.WS_CODE, + LINE_CODE = CurPosition.CurWipSN.LINE_CODE, + POST_CODE = CurPosition.CurWipSN.POST_CODE, + OPER_CODE = CurPosition.CurWipSN.OPER_CODE, + SEGMENT = CurPosition.CurWipSN.SEGMENT, + }; + FinishLevel++; + //瀹屾垚鍖呰鐨勫眰绾у皬浜庢渶澶栧眰鍖呰灞傜骇 + if (FinishLevel < PkgRule.Details.Max(q => q.PKG_LEVEL)) + { + //褰撳墠澶勭悊鐨勫寘瑁呭眰绾у凡缁忓鐞嗗畬锛岀户缁線涓婁繚瀛� + action = SavePkgData(input, action); + } + //鏈�澶栧眰鍖呰宸茬粡瀹屾垚鍖呰锛屼繚瀛樺寘瑁呮暟鎹埌鏁版嵁搴� + else + { + action = SaveToDB(); + } + } + //褰撳墠澶勭悊鐨勫寘瑁呭眰绾у凡缁忓鐞嗗畬锛岀户缁線涓婁繚瀛� + else if (pInput.PkgLevel == FinishLevel) + { + //鑾峰彇褰撳墠鐨勫寘瑁呮槑缁嗙殑涓婁竴灞傚寘瑁呭璞� + WipPkgItem curItem = CurPkg.Item; + while (curItem.PKG_LEVEL > dtl.PKG_LEVEL) + { + var next = curItem.Items.FirstOrDefault(q => !q.IsFinished); + if (next.IsNullOrEmpty()) + { + var nextDtl = PkgRule.Details.First(q => q.PKG_LEVEL == curItem.PKG_LEVEL - 1); + next = new WipPkgItem() + { + PKG_CODE = nextDtl.PKG_CODE, + PKG_NAME = nextDtl.PkgType.PKG_NAME, + IS_MIN_PKG = nextDtl.PkgType.IS_MIN_PKG, + PKG_LEVEL = nextDtl.PKG_LEVEL, + PKG_QTY = nextDtl.PKG_QTY, + LABEL_CODE = LabelDic[nextDtl.PKG_LEVEL].LABEL_CODE, + }; + curItem.Items.Add(next); + } + curItem = next; + } + //娣诲姞褰撳墠鐨勫寘瑁呮槑缁嗗埌涓婁竴灞傚寘瑁呯殑鏄庣粏鍒楄〃 + curItem.Items.Add(CurPkgItem); + CurPkgItem = curItem; + + //娣诲姞鏄庣粏鍚庡垽鏂綋鍓嶅寘瑁呭眰绾х殑鏄庣粏鏁伴噺鏄惁绛変簬鍖呰鏁伴噺锛岃嫢鐩哥瓑鍒欐爣璁板綋鍓嶅寘瑁呭眰绾т负瀹屾垚骞跺皾璇曟墦鍗版爣绛� + if (CurPkgItem.Items.Count == CurPkgItem.PKG_QTY) + { + //琛屼负璁惧畾鐨凮PTION_1-9鏄寘瑁呬笉鍚屽眰绾х殑鏍囩妯℃澘浠g爜锛屽鏋滀负绌哄垯涓嶉渶瑕佹墦鍗� + if (LabelDic[dtl.PKG_LEVEL].IsNullOrEmpty()) + { + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Scan"; + data.PkgLevel = dtl.PKG_LEVEL; + 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); + } + 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]; + CurPrint = 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); + } + } + //褰撳墠鍖呰灞傜骇鐨勬槑缁嗘暟閲忔湭杈惧埌鍖呰鏁伴噺锛屽垯瀹屾垚鏈鎵弿锛岀瓑寰呬笅涓骇鍝佽繘绔� + else + { + action = End(); + } + } + //鏁版嵁寮傚父 + else + { + var pdtl = PkgRule.Details.First(q => q.PKG_LEVEL == pInput.PkgLevel); + action.IsSuccessed = false; + //action.LocaleMsg = new($"瀹㈡埛绔彁浜ょ殑鍖呰灞傜骇[{pdtl.PKG_LEVEL}]({pdtl.PkgType.PKG_NAME})鏁版嵁涓嶆槸姝e湪澶勭悊鐨勫寘瑁呭眰绾{dtl.PKG_LEVEL}]({dtl.PkgType.PKG_NAME})锛屽伐搴忓凡閲嶇疆锛岃閲嶆柊鎵弿杩涚珯浜у搧鏉$爜"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.SaveLevelNotMatchException", pdtl.PKG_LEVEL, pdtl.PkgType.PKG_NAME, dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME); + CurPosition.ResetSteps(); + } + } + } + catch (System.Exception ex) + { + var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == pInput.PkgLevel); + action.CatchExceptionWithLog(ex, $"鍖呰琛屼负锛氭壂鎻忕{dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮乕{input.SN}]鍚庝繚瀛樻暟鎹け璐�"); + action.IsSuccessed = false; + //action.LocaleMsg = new($"鎵弿绗瑊dtl.PKG_LEVEL}灞傚寘瑁匸{dtl.PkgType.PKG_NAME}]鐨勬爣绛炬潯鐮乕{input.SN}]鍚庝繚瀛樻暟鎹け璐ワ紝宸ュ簭宸查噸缃紝璇烽噸鏂版壂鎻忚繘绔欎骇鍝佹潯鐮�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.SavePkgDataException", dtl.PKG_LEVEL, dtl.PkgType.PKG_NAME, input.SN); + CurPosition.ResetSteps(); + } + return action; + } + + private List<MES_WIP_PKG> GetPackageList(WipPkgItem parent) + { + List<MES_WIP_PKG> list = new() { parent.Package }; + foreach (var item in parent.Items) + { + item.Package.PARENT_SN = parent.Package.SN; + list.AddRange(GetPackageList(item)); + } + return list; + } + + public ApiAction<SubmitOutput> SaveToDB() + { + var action = new ApiAction<SubmitOutput>(new SubmitOutput()); + + var pkgList = GetPackageList(CurPkg.Item); + + //淇濆瓨鏁版嵁搴� + var db = Biz.Db; + var dbTran = db.UseTran(() => + { + db.Insertable(pkgList, CurPosition.UserCode).ExecuteCommand(); + }); + if (!dbTran.IsSuccess) + { + throw dbTran.ErrorException; + } + + //鍒犻櫎宸ュ簭涓婁笅鏂囦腑鐨勫寘瑁呰褰� + CurPosition.Context.Remove("CurPackage"); + + var data = new PackingActionOutput() { PkgInfo = CurPkg }; + data.ExecCode = "Complete"; + data.PkgLevel = CurPkg.Item.PKG_LEVEL; + action.Data.Data = data; + //action.LocaleMsg = new($"绗瑊CurPkg.Item.PKG_LEVEL}灞傚寘瑁匸{CurPkg.Item.PKG_NAME}]宸茬粡鍏ㄩ儴瀹屾垚锛屼繚瀛樺寘瑁呮暟鎹�"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PackageComplete", CurPkg.Item.PKG_LEVEL, CurPkg.Item.PKG_NAME); + + return action; + } + + /// <summary> + /// 缁撴潫鎵ц宸ュ簭琛屼负 + /// </summary> + /// <returns></returns> + public ApiAction<SubmitOutput> End() + { + var action = new ApiAction<SubmitOutput>(new SubmitOutput()); + + //璁板綍琛屼负鎿嶄綔璁板綍 + var wipAct = new MES_WIP_ACT() + { + AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, + AUTH_PROD = CurPosition.CurLine.LINE_CODE, + HIS_ID = CurPosition.CurWipSNHis.ID, + SN = CurPosition.CurWipSN.SN, + STATUS = CurPosition.CurWipSN.STATUS, + ITEM_CODE = CurPosition.CurWipSN.ITEM_CODE, + WORK_ORDER = CurPosition.CurWipSN.WORK_ORDER, + BATCH_NO = CurPosition.CurWipSN.BATCH_NO, + ROT_CODE = CurPosition.CurWipSN.ROT_CODE, + NODE_ID = CurPosition.CurWipSN.NODE_ID, + NODE_NAME = CurPosition.CurWipSN.NODE_NAME, + ACT_ID = NodeAct.ID, + ACT_NAME = NodeAct.ACT_NAME, + FTY_CODE = CurPosition.CurWipSN.FTY_CODE, + WS_CODE = CurPosition.CurWipSN.WS_CODE, + LINE_CODE = CurPosition.CurWipSN.LINE_CODE, + POST_CODE = CurPosition.CurWipSN.POST_CODE, + OPER_CODE = CurPosition.CurWipSN.OPER_CODE, + SEGMENT = CurPosition.CurWipSN.SEGMENT, + TRAY_SN = CurPosition.CurWipSN.TRAY_SN, + OPERATION_TIME = DateTime.Now, + SFTS_CODE = CurPosition.CurWipSN.SFTS_CODE, + SFT_CODE = CurPosition.CurWipSN.SFT_CODE, + PRD_CODE = CurPosition.CurWipSN.PRD_CODE, + ACT_TYPE = NodeAct.ACT_TYPE, + ACT_SN = CurPosition.CurWipSN.SN, + ACT_RESULT = "Y", + TRACE_INFO = $"浜у搧鏉$爜[{CurPosition.CurWipSN.SN}]鍖呰瀹屾垚", + }; + + //淇濆瓨鏁版嵁 + CurStep.DBSubmitAction = () => + { + var db = CurPosition.GetCommitDB(); + db.Storageable(wipAct, CurPosition.UserCode).ExecuteCommand(); + }; + + //濡傛灉宸ュ簭涓婁笅鏂囦腑娌℃湁鍖呰璁板綍鍒欐柊寤轰竴涓� + if (CurPosition.Context.ContainsKey("CurPackage")) + { + CurPosition.Context["CurPackage"] = CurPkg; + } + else + { + CurPosition.Context.Add("CurPackage", CurPkg); + } + + IsFinished = true; + action.LocaleMsg = new($"浜у搧鏉$爜[{CurPosition.CurWipSN.SN}]鍖呰瀹屾垚"); + action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPosition.CurWipSN.SN); + return action; + } + + + #endregion Functions + } +} diff --git a/Tiger.IBusiness/MES/WorkAction/IPackingAction.cs b/Tiger.IBusiness/MES/WorkAction/IPackingAction.cs new file mode 100644 index 0000000..00a07cc --- /dev/null +++ b/Tiger.IBusiness/MES/WorkAction/IPackingAction.cs @@ -0,0 +1,12 @@ +锘縰sing Newtonsoft.Json; +using Rhea.Common; +using System; +using Tiger.Model; + +namespace Tiger.IBusiness +{ + public interface IPackingAction : IWorkAction + { + + } +} diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs b/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs index d5295c7..1e1ad2f 100644 --- a/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs +++ b/Tiger.Model.Net/Entitys/BAS/BAS_PKG_DTL.cs @@ -46,17 +46,17 @@ /// 澶囨敞 /// </summary> public string REMARK { get; set; } - #endregion + #endregion - #region 铏氭嫙灞炴�� - /*渚嬪瓙 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 澶栭敭灞炴�� - /*渚嬪瓙 + #region 澶栭敭灞炴�� + /*渚嬪瓙 //涓�瀵逛竴澶栭敭瀵艰埅 [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊AS_PKG_DTL绫婚噷闈㈢殑澶栭敭ID瀛楁 public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull @@ -67,10 +67,12 @@ [Navigate(typeof(MappingClass), nameof(MappingClass.BAS_PKG_DTLId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - #endregion + [Navigate(NavigateType.OneToOne, nameof(PKG_CODE), nameof(BAS_PKG_TYPE.PKG_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疊IZ_MES_WO绫婚噷闈㈢殑澶栭敭ID瀛楁 + public BAS_PKG_TYPE PkgType { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + #endregion - #region 鏋氫妇鍙橀噺 - /*渚嬪瓙 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { [Description("鏋氫妇鎻忚堪0")] @@ -79,11 +81,11 @@ Enum1, } */ - #endregion + #endregion - #region 鍏叡鏂规硶 + #region 鍏叡鏂规硶 - #endregion + #endregion - }//endClass + }//endClass } \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_PKG_RULE.cs b/Tiger.Model.Net/Entitys/BAS/BAS_PKG_RULE.cs index 97958f5..64916a1 100644 --- a/Tiger.Model.Net/Entitys/BAS/BAS_PKG_RULE.cs +++ b/Tiger.Model.Net/Entitys/BAS/BAS_PKG_RULE.cs @@ -7,75 +7,77 @@ namespace Tiger.Model { /// <summary> - /// 实体:包装规则定义 + /// 瀹炰綋锛氬寘瑁呰鍒欏畾涔� /// </summary> [Description("Primary:ID")] [Serializable] [SugarTable("BAS_PKG_RULE")] public class BAS_PKG_RULE : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:包装规则定义 + /// 瀹炰綋锛氬寘瑁呰鍒欏畾涔� /// </summary> public BAS_PKG_RULE() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 包装规则编码 + /// 鍖呰瑙勫垯缂栫爜 /// </summary> public string RULE_CODE { get; set; } /// <summary> - /// 包装规则名称 + /// 鍖呰瑙勫垯鍚嶇О /// </summary> public string RULE_NAME { get; set; } /// <summary> - /// 是否启用(Y/N) + /// 鏄惁鍚敤(Y/N) /// </summary> public string IS_ACTIVE { get; set; } /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> public string REMARK { get; set; } - #endregion + #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_PKG_RULE类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_PKG_RULEId))]//ClassA表中的BAS_PKG_RULEId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.BAS_PKG_RULEId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊AS_PKG_RULE绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_PKG_RULEId))]//ClassA琛ㄤ腑鐨凚AS_PKG_RULEId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.BAS_PKG_RULEId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - #endregion + [Navigate(NavigateType.OneToMany, nameof(BAS_PKG_DTL.PKG_RULE_ID), nameof(ID), "GHOST_ROW = 0")]//ClassA琛ㄤ腑鐨凚AS_LABEL_TEMPId + public List<BAS_PKG_DTL> Details { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ - #endregion + #endregion - #region 公共方法 + #region 鍏叡鏂规硶 - #endregion + #endregion - }//endClass + }//endClass } \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/MES_PROD_ACTION.cs b/Tiger.Model.Net/Entitys/MES/MES_PROD_ACTION.cs index a2afbf0..bb6ee8c 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_PROD_ACTION.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_PROD_ACTION.cs @@ -93,10 +93,15 @@ /// </summary> [DisplayName("鏄惁鍚敤(Y/N)")] public string IS_ACTIVE { get; set; } - /// <summary> - /// 璁剧疆鍊�1 - /// </summary> - [DisplayName("璁剧疆鍊�1")] + /// <summary> + /// 鏄惁璁剧疆瀹屾垚(Y/N) + /// </summary> + [DisplayName("鏄惁璁剧疆瀹屾垚(Y/N)")] + public string SETUP_FINISH { get; set; } + /// <summary> + /// 璁剧疆鍊�1 + /// </summary> + [DisplayName("璁剧疆鍊�1")] public string OPTION_1 { get; set; } /// <summary> /// 璁剧疆鍊�2 @@ -118,15 +123,30 @@ /// </summary> [DisplayName("璁剧疆鍊�5")] public string OPTION_5 { get; set; } - /// <summary> - /// 鏄惁璁剧疆瀹屾垚(Y/N) - /// </summary> - [DisplayName("鏄惁璁剧疆瀹屾垚(Y/N)")] - public string SETUP_FINISH { get; set; } - /// <summary> - /// 澶囨敞 - /// </summary> - [DisplayName("澶囨敞")] + /// <summary> + /// 璁剧疆鍊�6 + /// </summary> + [DisplayName("璁剧疆鍊�6")] + public string OPTION_6 { get; set; } + /// <summary> + /// 璁剧疆鍊�7 + /// </summary> + [DisplayName("璁剧疆鍊�7")] + public string OPTION_7 { get; set; } + /// <summary> + /// 璁剧疆鍊�8 + /// </summary> + [DisplayName("璁剧疆鍊�8")] + public string OPTION_8 { get; set; } + /// <summary> + /// 璁剧疆鍊�9 + /// </summary> + [DisplayName("璁剧疆鍊�9")] + public string OPTION_9 { get; set; } + /// <summary> + /// 澶囨敞 + /// </summary> + [DisplayName("澶囨敞")] public string REMARK { get; set; } #endregion diff --git a/Tiger.Model.Net/Entitys/MES/MES_PROD_OPER.cs b/Tiger.Model.Net/Entitys/MES/MES_PROD_OPER.cs index d047a37..32c33ed 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_PROD_OPER.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_PROD_OPER.cs @@ -108,10 +108,30 @@ /// </summary> [DisplayName("璁剧疆鍊�5")] public string OPTION_5 { get; set; } - /// <summary> - /// 澶囨敞 - /// </summary> - [DisplayName("澶囨敞")] + /// <summary> + /// 璁剧疆鍊�6 + /// </summary> + [DisplayName("璁剧疆鍊�6")] + public string OPTION_6 { get; set; } + /// <summary> + /// 璁剧疆鍊�7 + /// </summary> + [DisplayName("璁剧疆鍊�7")] + public string OPTION_7 { get; set; } + /// <summary> + /// 璁剧疆鍊�8 + /// </summary> + [DisplayName("璁剧疆鍊�8")] + public string OPTION_8 { get; set; } + /// <summary> + /// 璁剧疆鍊�9 + /// </summary> + [DisplayName("璁剧疆鍊�9")] + public string OPTION_9 { get; set; } + /// <summary> + /// 澶囨敞 + /// </summary> + [DisplayName("澶囨敞")] public string REMARK { get; set; } #endregion diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs index d2a4e8e..7100b39 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_DATA.cs @@ -38,10 +38,15 @@ /// </summary> [DisplayName("鐗╂枡缂栫爜")] public string ITEM_CODE { get; set; } - /// <summary> - /// 宸ュ崟鍙� - /// </summary> - [DisplayName("宸ュ崟鍙�")] + /// <summary> + /// 鏁伴噺 + /// </summary> + [DisplayName("鏁伴噺")] + public double QTY { get; set; } = 1; + /// <summary> + /// 宸ュ崟鍙� + /// </summary> + [DisplayName("宸ュ崟鍙�")] public string WORK_ORDER { get; set; } /// <summary> /// 宸ュ崟鎵规鍙� diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs index beb4332..4f525c3 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs @@ -37,6 +37,7 @@ SN = data.SN; STATUS = data.STATUS; ITEM_CODE = data.ITEM_CODE; + QTY = data.QTY; WORK_ORDER = data.WORK_ORDER; BATCH_NO = data.BATCH_NO; ROT_CODE = data.ROT_CODE; @@ -93,10 +94,15 @@ /// </summary> [DisplayName("鐗╂枡缂栫爜")] public string ITEM_CODE { get; set; } - /// <summary> - /// 宸ュ崟鍙� - /// </summary> - [DisplayName("宸ュ崟鍙�")] + /// <summary> + /// 鏁伴噺 + /// </summary> + [DisplayName("鏁伴噺")] + public double QTY { get; set; } = 1; + /// <summary> + /// 宸ュ崟鍙� + /// </summary> + [DisplayName("宸ュ崟鍙�")] public string WORK_ORDER { get; set; } /// <summary> /// 宸ュ崟鎵规鍙� diff --git a/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs b/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs index 697192f..59f83d3 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WIP_PKG.cs @@ -7,168 +7,154 @@ namespace Tiger.Model { /// <summary> - /// 实体:生产包装记录 + /// 瀹炰綋锛氱敓浜у寘瑁呰褰� /// </summary> [Description("Primary:ID")] - [DisplayName("生产包装记录")] + [DisplayName("鐢熶骇鍖呰璁板綍")] [Serializable] [SugarTable("MES_WIP_PKG")] public class MES_WIP_PKG : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:生产包装记录 + /// 瀹炰綋锛氱敓浜у寘瑁呰褰� /// </summary> public MES_WIP_PKG() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 条码 + /// 鏉$爜 /// </summary> - [DisplayName("条码")] + [DisplayName("鏉$爜")] public string SN { get; set; } /// <summary> - /// 父包装条码 + /// 鐖跺寘瑁呮潯鐮� /// </summary> - [DisplayName("父包装条码")] + [DisplayName("鐖跺寘瑁呮潯鐮�")] public string PARENT_SN { get; set; } /// <summary> - /// 包装类型(0OnePiece单件|1Container载具|2Carton箱|3Pallet栈板) + /// 鍖呰绫诲瀷 /// </summary> - [DisplayName("包装类型(0OnePiece单件|1Container载具|2Carton箱|3Pallet栈板)")] - public int PKG_TYPE { get; set; } + [DisplayName("鍖呰绫诲瀷")] + public string PKG_TYPE { get; set; } /// <summary> - /// 物料编码 + /// 鐗╂枡缂栫爜 /// </summary> - [DisplayName("物料编码")] + [DisplayName("鐗╂枡缂栫爜")] public string ITEM_CODE { get; set; } /// <summary> - /// 数量 + /// 鏁伴噺 /// </summary> - [DisplayName("数量")] + [DisplayName("鏁伴噺")] public double QTY { get; set; } /// <summary> - /// 单位 + /// 鍗曚綅 /// </summary> - [DisplayName("单位")] + [DisplayName("鍗曚綅")] public string UNIT { get; set; } /// <summary> - /// 工单号 + /// 宸ュ崟鍙� /// </summary> - [DisplayName("工单号")] + [DisplayName("宸ュ崟鍙�")] public string WORK_ORDER { get; set; } /// <summary> - /// 工单批次号 + /// 宸ュ崟鎵规鍙� /// </summary> - [DisplayName("工单批次号")] + [DisplayName("宸ュ崟鎵规鍙�")] public string BATCH_NO { get; set; } /// <summary> - /// 工艺路线编码 + /// 宸ヨ壓璺嚎缂栫爜 /// </summary> - [DisplayName("工艺路线编码")] + [DisplayName("宸ヨ壓璺嚎缂栫爜")] public string ROT_CODE { get; set; } /// <summary> - /// 工艺路线节点ID + /// 宸ヨ壓璺嚎鑺傜偣ID /// </summary> - [DisplayName("工艺路线节点ID")] + [DisplayName("宸ヨ壓璺嚎鑺傜偣ID")] public string NODE_ID { get; set; } /// <summary> - /// 工艺路线节点名称 + /// 宸ヨ壓璺嚎鑺傜偣鍚嶇О /// </summary> - [DisplayName("工艺路线节点名称")] + [DisplayName("宸ヨ壓璺嚎鑺傜偣鍚嶇О")] public string NODE_NAME { get; set; } /// <summary> - /// 工厂编码 + /// 宸ュ巶缂栫爜 /// </summary> - [DisplayName("工厂编码")] + [DisplayName("宸ュ巶缂栫爜")] public string FTY_CODE { get; set; } /// <summary> - /// 车间编码 + /// 杞﹂棿缂栫爜 /// </summary> - [DisplayName("车间编码")] + [DisplayName("杞﹂棿缂栫爜")] public string WS_CODE { get; set; } /// <summary> - /// 产线编码 + /// 浜х嚎缂栫爜 /// </summary> - [DisplayName("产线编码")] + [DisplayName("浜х嚎缂栫爜")] public string LINE_CODE { get; set; } /// <summary> - /// 岗位编码 + /// 宀椾綅缂栫爜 /// </summary> - [DisplayName("岗位编码")] + [DisplayName("宀椾綅缂栫爜")] public string POST_CODE { get; set; } /// <summary> - /// 工序编码 + /// 宸ュ簭缂栫爜 /// </summary> - [DisplayName("工序编码")] + [DisplayName("宸ュ簭缂栫爜")] public string OPER_CODE { get; set; } /// <summary> - /// 加工段 + /// 鍔犲伐娈� /// </summary> - [DisplayName("加工段")] + [DisplayName("鍔犲伐娈�")] public string SEGMENT { get; set; } /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> - [DisplayName("备注")] + [DisplayName("澶囨敞")] public string REMARK { get; set; } /// <summary> - /// 追溯信息 + /// 杩芥函淇℃伅 /// </summary> - [DisplayName("追溯信息")] + [DisplayName("杩芥函淇℃伅")] public string TRACE_INFO { get; set; } #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是MES_WIP_PKG类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_WIP_PKGId))]//ClassA表中的MES_WIP_PKGId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WIP_PKGId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疢ES_WIP_PKG绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_WIP_PKGId))]//ClassA琛ㄤ腑鐨凪ES_WIP_PKGId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WIP_PKGId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ - /// <summary> - /// 枚举:包装类型(0OnePiece单件|1Container载具|2Carton箱|3Pallet栈板) - /// </summary> - public enum PKG_TYPEs - { - [Description("单件")] - OnePiece = 0, - [Description("载具")] - Container = 1, - [Description("箱")] - Carton = 2, - [Description("栈板")] - Pallet = 3, - } #endregion - #region 公共方法 + #region 鍏叡鏂规硶 #endregion diff --git a/Tiger.Model.Net/Entitys/MES/MES_WO_ACTION.cs b/Tiger.Model.Net/Entitys/MES/MES_WO_ACTION.cs index 2395741..099dded 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WO_ACTION.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WO_ACTION.cs @@ -7,189 +7,209 @@ namespace Tiger.Model { /// <summary> - /// 实体:工单工序行为 + /// 瀹炰綋锛氬伐鍗曞伐搴忚涓� /// </summary> [Description("Primary:ID")] - [DisplayName("工单工序行为")] + [DisplayName("宸ュ崟宸ュ簭琛屼负")] [Serializable] [SugarTable("MES_WO_ACTION")] public class MES_WO_ACTION : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:工单工序行为 + /// 瀹炰綋锛氬伐鍗曞伐搴忚涓� /// </summary> public MES_WO_ACTION() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 关联工单号 + /// 鍏宠仈宸ュ崟鍙� /// </summary> - [DisplayName("关联工单号")] + [DisplayName("鍏宠仈宸ュ崟鍙�")] public string WORK_ORDER { get; set; } /// <summary> - /// 产品编码 + /// 浜у搧缂栫爜 /// </summary> - [DisplayName("产品编码")] + [DisplayName("浜у搧缂栫爜")] public string PROD_CODE { get; set; } /// <summary> - /// 客户编码(留空则不区分客户) + /// 瀹㈡埛缂栫爜(鐣欑┖鍒欎笉鍖哄垎瀹㈡埛) /// </summary> - [DisplayName("客户编码(留空则不区分客户)")] + [DisplayName("瀹㈡埛缂栫爜(鐣欑┖鍒欎笉鍖哄垎瀹㈡埛)")] public string CUST_CODE { get; set; } /// <summary> - /// 工艺路线ID + /// 宸ヨ壓璺嚎ID /// </summary> - [DisplayName("工艺路线ID")] + [DisplayName("宸ヨ壓璺嚎ID")] public string ROT_ID { get; set; } /// <summary> - /// 工单路线节点ID + /// 宸ュ崟璺嚎鑺傜偣ID /// </summary> - [DisplayName("工单路线节点ID")] + [DisplayName("宸ュ崟璺嚎鑺傜偣ID")] public string NODE_ID { get; set; } /// <summary> - /// 工单行为节点ID + /// 宸ュ崟琛屼负鑺傜偣ID /// </summary> - [DisplayName("工单行为节点ID")] + [DisplayName("宸ュ崟琛屼负鑺傜偣ID")] public string ACT_ID { get; set; } /// <summary> - /// 行为类型(0Normal默认行为|1Scan扫码验证|2Assy组装上料|3Test产品测试|4Audit产品抽检|5Print标签打印|6Package包装规则) + /// 琛屼负绫诲瀷(0Normal榛樿琛屼负|1Scan鎵爜楠岃瘉|2Assy缁勮涓婃枡|3Test浜у搧娴嬭瘯|4Audit浜у搧鎶芥|5Print鏍囩鎵撳嵃|6Package鍖呰瑙勫垯) /// </summary> - [DisplayName("行为类型(0Normal默认行为|1Scan扫码验证|2Assy组装上料|3Test产品测试|4Audit产品抽检|5Print标签打印|6Package包装规则)")] + [DisplayName("琛屼负绫诲瀷(0Normal榛樿琛屼负|1Scan鎵爜楠岃瘉|2Assy缁勮涓婃枡|3Test浜у搧娴嬭瘯|4Audit浜у搧鎶芥|5Print鏍囩鎵撳嵃|6Package鍖呰瑙勫垯)")] public int ACT_TYPE { get; set; } /// <summary> - /// 行为定义编码 + /// 琛屼负瀹氫箟缂栫爜 /// </summary> - [DisplayName("行为定义编码")] + [DisplayName("琛屼负瀹氫箟缂栫爜")] public string ACT_CODE { get; set; } /// <summary> - /// 扫码验证:条码规则 + /// 鎵爜楠岃瘉锛氭潯鐮佽鍒� /// </summary> - [DisplayName("扫码验证:条码规则")] + [DisplayName("鎵爜楠岃瘉锛氭潯鐮佽鍒�")] public string RULE_CODE { get; set; } /// <summary> - /// 组装上料:物料料号 + /// 缁勮涓婃枡锛氱墿鏂欐枡鍙� /// </summary> - [DisplayName("组装上料:物料料号")] + [DisplayName("缁勮涓婃枡锛氱墿鏂欐枡鍙�")] public string ITEM_CODE { get; set; } /// <summary> - /// 产品测试:检验项目编码 + /// 浜у搧娴嬭瘯锛氭楠岄」鐩紪鐮� /// </summary> - [DisplayName("产品测试:检验项目编码")] + [DisplayName("浜у搧娴嬭瘯锛氭楠岄」鐩紪鐮�")] public string TEST_CODE { get; set; } /// <summary> - /// 产品抽检:抽样规则编码 + /// 浜у搧鎶芥锛氭娊鏍疯鍒欑紪鐮� /// </summary> - [DisplayName("产品抽检:抽样规则编码")] + [DisplayName("浜у搧鎶芥锛氭娊鏍疯鍒欑紪鐮�")] public string SAPL_CODE { get; set; } /// <summary> - /// 标签打印:标签模板编码 + /// 鏍囩鎵撳嵃锛氭爣绛炬ā鏉跨紪鐮� /// </summary> - [DisplayName("标签打印:标签模板编码")] + [DisplayName("鏍囩鎵撳嵃锛氭爣绛炬ā鏉跨紪鐮�")] public string LABEL_CODE { get; set; } /// <summary> - /// 包装规则:包装规则编码 + /// 鍖呰瑙勫垯锛氬寘瑁呰鍒欑紪鐮� /// </summary> - [DisplayName("包装规则:包装规则编码")] + [DisplayName("鍖呰瑙勫垯锛氬寘瑁呰鍒欑紪鐮�")] public string PKG_CODE { get; set; } /// <summary> - /// 是否启用(Y/N) + /// 鏄惁鍚敤(Y/N) /// </summary> - [DisplayName("是否启用(Y/N)")] + [DisplayName("鏄惁鍚敤(Y/N)")] public string IS_ACTIVE { get; set; } - /// <summary> - /// 设置值1 - /// </summary> - [DisplayName("设置值1")] + /// <summary> + /// 鏄惁璁剧疆瀹屾垚(Y/N) + /// </summary> + [DisplayName("鏄惁璁剧疆瀹屾垚(Y/N)")] + public string SETUP_FINISH { get; set; } + /// <summary> + /// 璁剧疆鍊�1 + /// </summary> + [DisplayName("璁剧疆鍊�1")] public string OPTION_1 { get; set; } /// <summary> - /// 设置值2 + /// 璁剧疆鍊�2 /// </summary> - [DisplayName("设置值2")] + [DisplayName("璁剧疆鍊�2")] public string OPTION_2 { get; set; } /// <summary> - /// 设置值3 + /// 璁剧疆鍊�3 /// </summary> - [DisplayName("设置值3")] + [DisplayName("璁剧疆鍊�3")] public string OPTION_3 { get; set; } /// <summary> - /// 设置值4 + /// 璁剧疆鍊�4 /// </summary> - [DisplayName("设置值4")] + [DisplayName("璁剧疆鍊�4")] public string OPTION_4 { get; set; } /// <summary> - /// 设置值5 + /// 璁剧疆鍊�5 /// </summary> - [DisplayName("设置值5")] + [DisplayName("璁剧疆鍊�5")] public string OPTION_5 { get; set; } - /// <summary> - /// 是否设置完成(Y/N) - /// </summary> - [DisplayName("是否设置完成(Y/N)")] - public string SETUP_FINISH { get; set; } - /// <summary> - /// 备注 - /// </summary> - [DisplayName("备注")] + /// <summary> + /// 璁剧疆鍊�6 + /// </summary> + [DisplayName("璁剧疆鍊�6")] + public string OPTION_6 { get; set; } + /// <summary> + /// 璁剧疆鍊�7 + /// </summary> + [DisplayName("璁剧疆鍊�7")] + public string OPTION_7 { get; set; } + /// <summary> + /// 璁剧疆鍊�8 + /// </summary> + [DisplayName("璁剧疆鍊�8")] + public string OPTION_8 { get; set; } + /// <summary> + /// 璁剧疆鍊�9 + /// </summary> + [DisplayName("璁剧疆鍊�9")] + public string OPTION_9 { get; set; } + /// <summary> + /// 澶囨敞 + /// </summary> + [DisplayName("澶囨敞")] public string REMARK { get; set; } #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是MES_WO_ACTION类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_WO_ACTIONId))]//ClassA表中的MES_WO_ACTIONId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WO_ACTIONId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疢ES_WO_ACTION绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_WO_ACTIONId))]//ClassA琛ㄤ腑鐨凪ES_WO_ACTIONId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WO_ACTIONId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ /// <summary> - /// 枚举:行为类型(0Normal默认行为|1Scan扫码验证|2Assy组装上料|3Test产品测试|4Audit产品抽检|5Print标签打印|6Package包装规则) + /// 鏋氫妇锛氳涓虹被鍨�(0Normal榛樿琛屼负|1Scan鎵爜楠岃瘉|2Assy缁勮涓婃枡|3Test浜у搧娴嬭瘯|4Audit浜у搧鎶芥|5Print鏍囩鎵撳嵃|6Package鍖呰瑙勫垯) /// </summary> public enum ACT_TYPEs { - [Description("默认行为")] + [Description("榛樿琛屼负")] Normal = 0, - [Description("扫码验证")] + [Description("鎵爜楠岃瘉")] Scan = 1, - [Description("组装上料")] + [Description("缁勮涓婃枡")] Assy = 2, - [Description("产品测试")] + [Description("浜у搧娴嬭瘯")] Test = 3, - [Description("产品抽检")] + [Description("浜у搧鎶芥")] Audit = 4, - [Description("标签打印")] + [Description("鏍囩鎵撳嵃")] Print = 5, - [Description("包装规则")] + [Description("鍖呰瑙勫垯")] Package = 6, } #endregion - #region 公共方法 + #region 鍏叡鏂规硶 #endregion diff --git a/Tiger.Model.Net/Entitys/MES/MES_WO_OPER.cs b/Tiger.Model.Net/Entitys/MES/MES_WO_OPER.cs index fc395d5..e4aa40c 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WO_OPER.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WO_OPER.cs @@ -114,6 +114,26 @@ [DisplayName("璁剧疆鍊�5")] public string OPTION_5 { get; set; } /// <summary> + /// 璁剧疆鍊�6 + /// </summary> + [DisplayName("璁剧疆鍊�6")] + public string OPTION_6 { get; set; } + /// <summary> + /// 璁剧疆鍊�7 + /// </summary> + [DisplayName("璁剧疆鍊�7")] + public string OPTION_7 { get; set; } + /// <summary> + /// 璁剧疆鍊�8 + /// </summary> + [DisplayName("璁剧疆鍊�8")] + public string OPTION_8 { get; set; } + /// <summary> + /// 璁剧疆鍊�9 + /// </summary> + [DisplayName("璁剧疆鍊�9")] + public string OPTION_9 { get; set; } + /// <summary> /// 澶囨敞 /// </summary> [DisplayName("澶囨敞")] diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs index e778eeb..ecd55cd 100644 --- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs +++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs @@ -87,4 +87,75 @@ public string DFT_NAME { get; set; } public int DFT_LEVEL { get; set; } } + + public class PackingActionInput + { + /// <summary> + /// 鍖呰琛屼负褰撳墠鎵ц鐨勬搷浣滀唬鐮侊紝鍖呮嫭锛�<br/> + /// Scan锛氭壂鐮侊紝鎵弿褰撳墠鍖呰灞傜骇鐨勬潯鐮�<br/> + /// Print锛氭墦鍗帮紝鎵撳嵃褰撳墠鍖呰灞傜骇鐨勬爣绛�<br/> + /// Complete锛氬畬鎴愶紝瀹屾垚鍏ㄩ儴鍖呰鍚庣粨鏉熻涓�<br/> + /// </summary> + public string ExecCode { get; set; } + /// <summary> + /// 瀹㈡埛绔槸鍚﹀畬鎴愬綋鍓嶆搷浣� + /// </summary> + public bool IsFinish { get; set; } + /// <summary> + /// 褰撳墠鎿嶄綔鐨勫寘瑁呭眰绾� + /// </summary> + public int PkgLevel { get; set; } + /// <summary> + /// 褰撳墠鎿嶄綔鐨勫寘瑁呭眰绾х殑鏍囩鏉$爜 + /// </summary> + public string PkgSN { get; set; } + } + + public class PackingActionOutput + { + public WipPkg PkgInfo { get; set; } + /// <summary> + /// 鍖呰琛屼负褰撳墠鎵ц鐨勬搷浣滀唬鐮侊紝鍖呮嫭锛�<br/> + /// Scan锛氭壂鐮侊紝鎵弿褰撳墠鍖呰灞傜骇鐨勬潯鐮�<br/> + /// Print锛氭墦鍗帮紝鎵撳嵃褰撳墠鍖呰灞傜骇鐨勬爣绛�<br/> + /// Complete锛氬畬鎴愶紝宸蹭繚瀛樺寘瑁呮暟鎹�<br/> + /// </summary> + public string ExecCode { get; set; } + /// <summary> + /// 褰撳墠鎿嶄綔鐨勫寘瑁呭眰绾� + /// </summary> + public int PkgLevel { get; set; } + /// <summary> + /// 褰撳墠闇�瑕佹墦鍗扮殑鍖呰灞傜骇鐨勬爣绛句俊鎭� + /// </summary> + public BAS_LABEL_TEMP PrintLable { get; set; } + } + + /// <summary> + /// 鍦ㄧ嚎鍖呰 + /// </summary> + public class WipPkg + { + public string RULE_CODE { get; set; } + public string RULE_NAME { get; set; } + public WipPkgItem Item { get; set; } + public bool IsFinished { get; set; } = false; + } + + /// <summary> + /// 鍦ㄧ嚎鍖呰鏄庣粏 + /// </summary> + public class WipPkgItem + { + public string PKG_CODE { get; set; } + public string PKG_NAME { get; set; } + public string IS_MIN_PKG { get; set; } + public int PKG_LEVEL { get; set; } + public int PKG_QTY { get; set; } + public string LABEL_CODE { get; set; } + public MES_WIP_PKG Package { get; set; } + public bool IsFinished { get; set; } = false; + public List<WipPkgItem> Items { get; set; } = new List<WipPkgItem>(); + + } } -- Gitblit v1.9.3