服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-08-14 5b0cab677e7d899c6ab6629ee6645b297b6b8c9f
Tiger.Business.MES/Transaction/PackingNode.cs
@@ -212,7 +212,8 @@
                   var wipSN = new MES_WIP_DATA()
                   {
                       SN = input.SN,
                       STATUS = MES_WIP_DATA.STATUSs.Init.GetValue(),
                        FLOW_SN = input.SN,
                        STATUS = MES_WIP_DATA.STATUSs.Init.GetValue(),
                       ITEM_CODE = CurBatch.WO.ITEM_CODE,
                       WORK_ORDER = CurBatch.Batch.ORDER_NO,
                       BATCH_NO = CurBatch.Batch.BATCH_NO,
@@ -242,6 +243,7 @@
                            CurBatch.WoSNs.Add(new()
                            {
                                WORK_ORDER = CurBatch.Batch.ORDER_NO,
                                WIP_ID = wipSN.ID,
                                SN = wipSN.SN,
                                TRAY_SN = wipSN.TRAY_SN,
                                STATUS = BIZ_MES_WO_SN.STATUSs.NotInput.GetValue(),
@@ -326,8 +328,10 @@
                                DFT_CODE = dft.DFT_CODE,
                                DFT_NAME = dft.DFT_NAME,
                                DFT_LEVEL = dft.DFT_LEVEL,
                                FLOW_SN = wipSN.FLOW_SN,
                                TRAY_SN = wipSN.TRAY_SN,
                                CONTAINER_SN = wipSN.CONTAINER_SN,
                                INNER_SN = wipSN.INNER_SN,
                                CARTON_SN = wipSN.CARTON_SN,
                                PALLET_SN = wipSN.PALLET_SN,
                                INV_FLAG = wipSN.INV_FLAG,
                                OPERATION_TIME = DateTime.Now,
@@ -352,6 +356,14 @@
                        CurWipSNHiss.Add(new MES_WIP_HIS(wipSN, $"工单[{wipSN.WORK_ORDER}]条码[{wipSN.SN}]在岗位[{wipSN.POST_CODE}]过站工序[{wipSN.NODE_NAME}]成功"));
                    }
                    //创建变量克隆对象用于传入DBSubmitAction中保存当前需要暂存的数据值
                    var _woSns = woSNs.Clone();
                    var _wipSns = wipSNs.Clone();
                    var _wipHiss = CurWipSNHiss.Clone();
                    var _defect = CurDefects.Clone();
                    var _curNode = curNode.Clone();
                    var _Batch = CurBatch.Batch.Clone();
                    //初始化工步列表
                    Steps.Clear();
                   var curStep = new Biz.WorkStep(IWorkStep.Types.Node, this) 
@@ -360,26 +372,28 @@
                       Node = curNode,
                       DBSubmitAction = () =>
                       {
                           var db = GetCommitDB();
                           db.Storageable(woSNs, UserCode).ExecuteCommand();
                           db.Storageable(wipSNs, UserCode).ExecuteCommand();
                           db.Storageable(CurWipSNHiss, UserCode).ExecuteCommand();
                            //使用统一的事务DB对象
                            var db = GetCommitDB();
                            //数据保存逻辑
                           db.Storageable(_woSns, UserCode).ExecuteCommand();
                           db.Storageable(_wipSns, UserCode).ExecuteCommand();
                           db.Storageable(_wipHiss, UserCode).ExecuteCommand();
                            //如果有不良则保存
                            if (CurDefects.Any())
                            if (_defect.Any())
                            {
                                db.Storageable(CurDefects, UserCode).ExecuteCommand();
                                db.Storageable(_defect, UserCode).ExecuteCommand();
                            }
                            //如果是投入站
                            if (curNode.IS_INPUT == "Y")
                            if (_curNode.IS_INPUT == "Y")
                            {
                                db.Updateable<BIZ_MES_WO>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + wipSNs.Count).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand();
                                db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + wipSNs.Count).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand();
                                db.Updateable<BIZ_MES_WO>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + _woSns.Count).Where(q => q.ORDER_NO == _Batch.ORDER_NO).ExecuteCommand();
                                db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.INPUT_QTY == q.INPUT_QTY + _woSns.Count).Where(q => q.BATCH_NO == _Batch.BATCH_NO).ExecuteCommand();
                            }
                            //如果是产出站
                            if (curNode.IS_OUTPUT == "Y")
                            if (_curNode.IS_OUTPUT == "Y")
                            {
                                db.Updateable<BIZ_MES_WO>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + wipSNs.Count).Where(q => q.ORDER_NO == CurBatch.WO.ORDER_NO).ExecuteCommand();
                                db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + wipSNs.Count).Where(q => q.BATCH_NO == CurBatch.Batch.BATCH_NO).ExecuteCommand();
                                db.Updateable<BIZ_MES_WO>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + _woSns.Count).Where(q => q.ORDER_NO == _Batch.ORDER_NO).ExecuteCommand();
                                db.Updateable<BIZ_MES_WO_BATCH>().SetColumns(q => q.OUTPUT_QTY == q.OUTPUT_QTY + _woSns.Count).Where(q => q.BATCH_NO == _Batch.BATCH_NO).ExecuteCommand();
                            }
                        }
                   };
@@ -415,7 +429,6 @@
                //未完成所有工步
                if (!IsFinishAllSteps)
                {
                    var result = new ApiAction<SubmitOutput>(new SubmitOutput());
                    //未完成所有工序节点工步
                    if (!IsFinishNodeSteps)
                    {
@@ -424,14 +437,14 @@
                        NextSteps.Clear();
                        NextSteps.Add(next);
                        //根据后续工步返回ApiAction
                        result.Data.SetValue(CurBatch, CurStep, next.ID, IsFinishAllSteps);
                        action.Data.SetValue(CurBatch, CurStep, next.ID, IsFinishAllSteps);
                        //根据工序节点工步的序号返回相应的操作提示
                        switch (next.Sequence)
                        {
                            case 2:
                                //action.LocaleMsg = new($"请执行第二步");
                                result.LocaleMsg = new("MES.Transaction.CollectNode.第二步操作提示");
                                action.LocaleMsg = new("MES.Transaction.CollectNode.第二步操作提示");
                                break;
                            default:
                                break;
@@ -440,9 +453,8 @@
                    //已完成所有工序节点工步,开始执行行为工步
                    else
                    {
                        result = BeginNextActionStep(input);
                        action = BeginNextActionStep(input);
                    }
                    return result;
                }
                //已完成所有工步
                if (IsFinishAllSteps)
@@ -474,7 +486,11 @@
            //action.LocaleMsg = new($"工单[{CurWipSN.WORK_ORDER}]的条码[{CurWipSN.SN}]在岗位[{CurWipSN.POST_CODE}]工序[{CurWipSN.NODE_NAME}]过站成功,状态[{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]");
            action.LocaleMsg = new("MES.Transaction.CollectNode.ScanSn.PassSuccess", CurWipSNs.First().WORK_ORDER, CurSN, CurWipSNs.First().POST_CODE, CurWipSNs.First().NODE_NAME,CurWipSNs.First().STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>());
            //重置工序
            ResetNode();
            //if (!isClone)
            {
                ResetNode();
            }
            return action;
        }