服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-09-13 1f72396c6294b9f78723d786a9b0965414d0601a
Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -31,6 +31,7 @@
        public Dictionary<int, BAS_LABEL_TEMP> LabelDic { get; set; }    = new();
        public List<BAS_LABEL_PV> LabelPV { get; set; } = new();
        public int FinishLevel = 0;
        private bool IsManually => CurStep.IsNullOrEmpty();
        #endregion Propertys & Variables
        #region Functions
@@ -181,8 +182,20 @@
            action.LocaleMsg = GetBeginMsg();
            var min = PkgRule.Details.OrderBy(q => q.PKG_LEVEL).First();
            if (min.PKG_LEVEL == CurPkg.Item.PKG_LEVEL && CurPkg.NeedWeighing)
            {
                var data = new PackingActionOutput() { PkgInfo = CurPkg };
                data.ExecCode = "Weighing";
                data.PkgLevel = min.PKG_LEVEL;
                CurCmd = data;
                CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("上称称重"));
                action.Data.Data = data;
                action.Data.ShortMsg = new("上称称重", ShortMessage.Types.Success);
                //action.LocaleMsg = new($"请把外包装上称称重");
                action.LocaleMsg = new("MES.WorkAction.PackingAction.PleaseWeighing");
            }
            //根据包装不同层级的标签模板代码,如果为空则不需要打印
            if (LabelDic[min.PKG_LEVEL].IsNullOrEmpty())
            else if (LabelDic[min.PKG_LEVEL].IsNullOrEmpty())
            {
                input.Data = new PackingActionInput()
                {
@@ -196,7 +209,7 @@
            else
            {
                //设置打印变量值
                LabelDic[min.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[min.PKG_LEVEL]);
                LabelDic[min.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[min.PKG_LEVEL], this);
                var data = new PackingActionOutput() { PkgInfo = CurPkg };
                data.ExecCode = "Print";
@@ -318,7 +331,7 @@
                        if (!pInput.WeightInfo.IsNullOrEmpty() && pInput.WeightInfo.Weight > 0)
                        {
                            //验证重量数据是否符合设置好的重量范围
                            if (!PkgProd.IsNullOrEmpty() && (pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT || PkgProd.MIN_WEIGHT < pInput.WeightInfo.Weight))
                            if (!PkgProd.IsNullOrEmpty() && ((pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT && !IsManually) || PkgProd.MAX_WEIGHT < pInput.WeightInfo.Weight))
                            {
                                action.IsSuccessed = false;
                                CurStep?.SetStatusMessage(StepStatus.Error, Biz.L("重量超限"));
@@ -361,7 +374,7 @@
                               else
                               {
                                   //设置打印变量值
                                   LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]);
                                   LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
   
                                   var data = new PackingActionOutput() { PkgInfo = CurPkg };
                                   data.ExecCode = "Print";
@@ -376,8 +389,6 @@
                                   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
                        {
@@ -448,7 +459,7 @@
                        else
                        {
                            //设置打印变量值
                            LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]);
                            LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
                            var data = new PackingActionOutput() { PkgInfo = CurPkg };
                            data.ExecCode = "Print";
@@ -522,7 +533,17 @@
                    CurPkgItem.Package.OPER_CODE = CurPosition.CurWipSNs.First().OPER_CODE;
                    CurPkgItem.Package.SEGMENT = CurPosition.CurWipSNs.First().SEGMENT;
                    FinishLevel++;
                    action = SavePkgData(input, action);
                    //完成包装的层级小于最外层包装层级
                    if (FinishLevel < PkgRule.Details.Max(q => q.PKG_LEVEL))
                    {
                        //当前处理的包装层级已经处理完,继续往上保存
                        action = SavePkgData(input, action);
                    }
                    //最外层包装已经完成包装,保存包装数据到数据库
                    else
                    {
                        action = CompletePkg();
                    }
                }
                //处理其他包装层级数据
                else 
@@ -597,7 +618,7 @@
                        CurPkgItem = curItem;
                        //添加明细后判断当前包装层级的明细数量是否等于包装数量,若相等则标记当前包装层级为完成并尝试打印标签
                        if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || CurStep.IsNullOrEmpty())
                        if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || IsManually)
                        {
                            //打印前称重:如果当前的包装明细的上一层包装对象是最外层包装且需要称重时,先称重,合格后在发印或者扫描最外层包装标签
                            if (CurPkgItem.PKG_LEVEL == CurPkg.Item.PKG_LEVEL && CurPkg.NeedWeighing)
@@ -630,7 +651,7 @@
                               else
                               {
                                   //设置打印变量值
                                   LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL]);
                                   LabelDic[dtl.PKG_LEVEL] = CurPosition.SetLabelVariables(LabelPV, LabelDic[dtl.PKG_LEVEL], this);
   
                                   var data = new PackingActionOutput() { PkgInfo = CurPkg };
                                   data.ExecCode = "Print";
@@ -709,7 +730,7 @@
            action.LocaleMsg = new("MES.WorkAction.PackingAction.PackageComplete", CurPkg.Item.PKG_LEVEL, CurPkg.Item.PKG_NAME);
            //手动结束包装则标记行为完成
            //if (CurStep.IsNullOrEmpty())
            //if (IsManually)
            //{
            //    IsFinished = true;
            //}
@@ -733,7 +754,7 @@
            }
            
            //不是手动结束包装则保存行为操作记录
            if (!CurStep.IsNullOrEmpty())
            if (!IsManually)
            {
                //记录行为操作记录
                var wipActs = new List<MES_WIP_ACT>();