服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-10-26 0295f0d93a3dd54bb6104f5e9a488f94596e756b
Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -6,6 +6,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tiger.Business.MES.Transaction;
using Tiger.IBusiness;
using Tiger.IBusiness.MES.WorkAction;
using Tiger.Model;
@@ -84,6 +85,7 @@
                        PKG_LEVEL = max.PKG_LEVEL,
                        PKG_QTY = max.PKG_QTY,
                        LABEL_CODE = LabelDic.Count > max.PKG_LEVEL ? LabelDic[max.PKG_LEVEL]?.LABEL_CODE : null,
                        SN = CurPosition.GenerateSN(max.SN_RULE, this),
                    }
                };
                WipPkgItem child = null;
@@ -99,6 +101,7 @@
                            PKG_LEVEL = dtl.PKG_LEVEL,
                            PKG_QTY = dtl.PKG_QTY,
                            LABEL_CODE = LabelDic.Count > dtl.PKG_LEVEL ? LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE : null,
                            SN = CurPosition.GenerateSN(dtl.SN_RULE, this),
                        };
                        if (!child.IsNullOrEmpty())
                        {
@@ -226,6 +229,7 @@
                data.ExecCode = "Print";
                data.PkgLevel = min.PKG_LEVEL;
                data.PrintLable = LabelDic[min.PKG_LEVEL];
                data.RealPrint = data.PkgLevel != CurPkg.Item.PKG_LEVEL || CurPosition is not YadaPacking || (CurPosition as YadaPacking).IsPrintCustomerLabel;
                CurCmd = data;
                PrintTimes++;
                CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("打印标签"));
@@ -394,6 +398,7 @@
                                    data.ExecCode = "Print";
                                    data.PkgLevel = dtl.PKG_LEVEL;
                                    data.PrintLable = LabelDic[dtl.PKG_LEVEL];
                                    data.RealPrint = data.PkgLevel != CurPkg.Item.PKG_LEVEL || CurPosition is not YadaPacking || (CurPosition as YadaPacking).IsPrintCustomerLabel;
                                    CurCmd = data;
                                    PrintTimes++;
                                    CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("打印标签"));
@@ -491,6 +496,7 @@
                            data.ExecCode = "Print";
                            data.PkgLevel = dtl.PKG_LEVEL;
                            data.PrintLable = LabelDic[dtl.PKG_LEVEL];
                            data.RealPrint = data.PkgLevel != CurPkg.Item.PKG_LEVEL || CurPosition is not YadaPacking || (CurPosition as YadaPacking).IsPrintCustomerLabel;
                            CurCmd = data;
                            PrintTimes++;
                            CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("打印标签"));
@@ -533,14 +539,15 @@
                        PKG_LEVEL = dtl.PKG_LEVEL,
                        PKG_QTY = dtl.PKG_QTY,
                        LABEL_CODE = LabelDic[dtl.PKG_LEVEL]?.LABEL_CODE,
                        SN = CurPosition.GenerateSN(dtl.SN_RULE, this).IsNullOrEmpty(pInput.PkgSN),
                        IsFinished = true,
                    };
                    CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == pInput.PkgSN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new()
                    CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPkgItem.SN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new()
                    {
                        AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG,
                        AUTH_PROD = CurPosition.CurLine.LINE_CODE,
                        SN = pInput.PkgSN,
                        SN = CurPkgItem.SN,
                    };
                    CurPkgItem.Package.WIP_ID = CurPosition.CurWipSNs.Count == 1 ? CurPosition.CurWipSNs.First().ID : null;
                    CurPkgItem.Package.PKG_TYPE = dtl.PkgType.PKG_NAME;
@@ -585,7 +592,7 @@
                        {
                            AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG,
                            AUTH_PROD = CurPosition.CurLine.LINE_CODE,
                            SN = pInput.PkgSN,
                            SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN),
                            PKG_TYPE = dtl.PkgType.PKG_NAME,
                            ITEM_CODE = CurPkgItem.Items.First().Package.ITEM_CODE,
                            QTY = CurPkgItem.Items.Sum(q => q.Package.QTY),
@@ -605,7 +612,7 @@
                        {
                            AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG,
                            AUTH_PROD = CurPosition.CurLine.LINE_CODE,
                            SN = pInput.PkgSN,
                            SN = CurPkgItem.SN.IsNullOrEmpty(pInput.PkgSN),
                            PKG_TYPE = dtl.PkgType.PKG_NAME,
                            ITEM_CODE = CurPosition.CurWipSNs.First().ITEM_CODE,
                            QTY = CurPkgItem.Items.Sum(q => q.Package.QTY),
@@ -656,6 +663,7 @@
                                    PKG_LEVEL = nextDtl.PKG_LEVEL,
                                    PKG_QTY = nextDtl.PKG_QTY,
                                    LABEL_CODE = LabelDic[nextDtl.PKG_LEVEL]?.LABEL_CODE,
                                    SN = CurPosition.GenerateSN(nextDtl.SN_RULE, this),
                                };
                                curItem.Items.Add(next);
                            }
@@ -708,6 +716,7 @@
                                    data.ExecCode = "Print";
                                    data.PkgLevel = dtl.PKG_LEVEL;
                                    data.PrintLable = LabelDic[dtl.PKG_LEVEL];
                                    data.RealPrint = data.PkgLevel != CurPkg.Item.PKG_LEVEL || CurPosition is not YadaPacking || (CurPosition as YadaPacking).IsPrintCustomerLabel;
                                    CurCmd = data;
                                    PrintTimes++;
                                    CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("打印标签"));
@@ -852,6 +861,9 @@
                        ACT_TYPE = NodeAct.ACT_TYPE,
                        ACT_SN = wipSn.SN,
                        ACT_RESULT = "Y",
                        ACT_VALUE_1 = CurPkg.IsFinished ? "Y" : "N",
                        ACT_VALUE_2 = CurPkg.ToJson(),
                        ACT_VALUE_3 = CurPkg.IsFinished ? LabelDic[CurPkg.Item.PKG_LEVEL].ToJson() : "",
                        ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                        TRACE_INFO = $"产品条码[{string.Join(",", CurPosition.CurSN)}]包装完成",
                    };
@@ -910,7 +922,7 @@
            {
                if (CurPkg.IsFinished)
                {
                    var _pkgList = CurPosition.GetPackageList(CurPkg.Item);
                    var _pkgList = CurPosition.GetPackageList(CurPkg.Item).Clone();
                    //最外层包装已经完成包装,则把工序中暂存标记设为false,统一提交包装内产品的过站记录
                    CurPosition.NeedTemporaryStoreDBCommitAction = false;
@@ -922,9 +934,9 @@
                        {
                            db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
                            var wipIDs = _pkgList.Where(q => !q.WIP_ID.IsNullOrEmpty()).Select(q => q.WIP_ID).ToList();
                            var nodeID = _pkgList.First().NODE_ID;
                            var actID = _pkgList.First().ACT_ID;
                            var wo = _pkgList.First().WORK_ORDER;
                            var nodeID = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).NODE_ID;
                            var actID = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).ACT_ID;
                            var wo = _pkgList.First(q => !q.WIP_ID.IsNullOrEmpty()).WORK_ORDER;
                            //包装信息保存到在制品信息表
                            db.Updateable<MES_WIP_DATA>()
                                .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN)