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> Tiger.Api/Language.dbBinary files differ
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); } 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); } 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); } Tiger.Business.MES/WorkAction/PackingAction.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,536 @@ using 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(); //è¡ä¸ºè®¾å®çOPTION_1æ¯ç¬¬ä¸å±å è£ çæ ç¾æ¨¡æ¿ä»£ç ï¼å¦æä¸ºç©ºåä¸éè¦æå° 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(); //è¡ä¸ºè®¾å®çOPTION_1-9æ¯å è£ ä¸åå±çº§çæ ç¾æ¨¡æ¿ä»£ç ï¼å¦æä¸ºç©ºåä¸éè¦æå° 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 { //æ£å¨å¤ççå è£ å±çº§æç» 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) { //è¡ä¸ºè®¾å®çOPTION_1-9æ¯å è£ ä¸åå±çº§çæ ç¾æ¨¡æ¿ä»£ç ï¼å¦æä¸ºç©ºåä¸éè¦æå° 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})æ°æ®ä¸æ¯æ£å¨å¤ççå è£ å±çº§[{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 } } Tiger.IBusiness/MES/WorkAction/IPackingAction.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ using Newtonsoft.Json; using Rhea.Common; using System; using Tiger.Model; namespace Tiger.IBusiness { public interface IPackingAction : IWorkAction { } } 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æ¯BAS_PKG_DTLç±»éé¢çå¤é®IDåæ®µ public ClassA ClassA { get; set; } //注æç¦æ¢æå¨èµå¼ï¼åªè½æ¯null @@ -67,10 +67,12 @@ [Navigate(typeof(MappingClass), nameof(MappingClass.BAS_PKG_DTLId), nameof(MappingClass.ClassAId))]//注æé¡ºåº public List<ClassA> ClassAList { get; set; } //注æç¦æ¢æå¨èµå¼ï¼åªè½æ¯null */ #endregion [Navigate(NavigateType.OneToOne, nameof(PKG_CODE), nameof(BAS_PKG_TYPE.PKG_CODE), "GHOST_ROW = 0")]//ä¸å¯¹ä¸ ClassAIdæ¯BIZ_MES_WOç±»éé¢çå¤é®IDåæ®µ public BAS_PKG_TYPE PkgType { get; set; } //注æç¦æ¢æå¨èµå¼ï¼åªè½æ¯null #endregion #region æä¸¾åé /*ä¾å #region æä¸¾åé /*ä¾å public enum FieldNames { [Description("æä¸¾æè¿°0")] @@ -79,11 +81,11 @@ Enum1, } */ #endregion #endregion #region å ¬å ±æ¹æ³ #region å ¬å ±æ¹æ³ #endregion #endregion }//endClass }//endClass } 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æ¯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 */ #endregion [Navigate(NavigateType.OneToMany, nameof(BAS_PKG_DTL.PKG_RULE_ID), nameof(ID), "GHOST_ROW = 0")]//ClassA表ä¸çBAS_LABEL_TEMPId public List<BAS_PKG_DTL> Details { get; set; }//注æç¦æ¢æå¨èµå¼ï¼åªè½æ¯null #endregion #region æä¸¾åé /*ä¾å #region æä¸¾åé /*ä¾å public enum FieldNames { [Description("æä¸¾æè¿°0")] [Description("æä¸¾æè¿°0")] Enum0, [Description("æä¸¾æè¿°1")] [Description("æä¸¾æè¿°1")] Enum1, } */ #endregion #endregion #region å ¬å ±æ¹æ³ #region å ¬å ±æ¹æ³ #endregion #endregion }//endClass }//endClass } 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 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 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> /// å·¥åæ¹æ¬¡å· 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> /// å·¥åæ¹æ¬¡å· 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æ¯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 */ #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 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æ¯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 */ #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 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("夿³¨")] 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>(); } }