服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-07-25 3678120ac63c176b5f261ef12e67c4ce7f1b320f
Tiger.Business.MES/Transaction/PackingNode.cs
@@ -161,39 +161,55 @@
        {
            try
            {
                var curNode = CurBatch.GetNode(PostCode);
                //判断工单实时状态判断
                var woStatus = CurBatch.CheckStatus();
                if (!woStatus.IsSuccessed)
                {
                    return woStatus;
                }
                //非法过站防呆:进入工序时要增加判断条码是否按流程过站
                var wipSN = Biz.Db.Queryable<MES_WIP_DATA>().Where(q => q.SN == input.SN && q.WORK_ORDER == CurBatch.WO.ORDER_NO).IncludesAllFirstLayer().First() ?? new MES_WIP_DATA()
                {
                    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,
                    HOLD_FLAG = "N",
                    REWORK_FLAG = CurBatch.WO.ORDER_TYPE == BIZ_MES_WO.ORDER_TYPEs.Rework.GetValue() ? "Y" : "N",
                    FINISHED_FLAG = "N",
                    INV_FLAG = "N",
                    DFT_FLAG = "N",
                    DFT_COUNT = 0,
                };
                var canGotoNext = CurBatch.CanGotoNext(input, wipSN, curNode);
                if (!canGotoNext.IsSuccessed)
                {
                    return canGotoNext;
                }
                //当工步列表为空,则执行当前工序的必要逻辑当作第一个工序节点,完成后按需求创建后续的工步列表
                if (Steps.IsNullOrEmpty())
                {
                   //绑定条码到工单
                   if (!CurBatch.WoSNs.Any(q => q.SN == input.SN))
                    //绑定条码到工单
                    if (!CurBatch.WoSNs.Any(q => q.SN == input.SN))
                   {
                       CurBatch.WoSNs.Add(new()
                       {
                           WORK_ORDER = CurBatch.Batch.ORDER_NO,
                            WORK_ORDER = CurBatch.Batch.ORDER_NO,
                           SN = input.SN,
                           STATUS = BIZ_MES_WO_SN.STATUSs.NotInput.GetValue(),
                           BATCH_NO = CurBatch.Batch.BATCH_NO,
                       });
                   }
                   var woSN = CurBatch.WoSNs.FirstOrDefault(q => q.SN == input.SN);
                   var curNode = CurBatch.GetNode(PostCode);
                   var woSN = CurBatch.WoSNs.First(q => q.SN == input.SN);
                    woSN.AUTH_ORG = CurBatch.WO.AUTH_ORG;
                    woSN.AUTH_PROD = CurLine.LINE_CODE;
                    woSN.BATCH_NO = CurBatch.Batch.BATCH_NO;
                   //条码过站
                   var wipSN = Biz.Db.Queryable<MES_WIP_DATA>().First(q => q.SN == input.SN && q.BATCH_NO == CurBatch.Batch.BATCH_NO) ?? new MES_WIP_DATA()
                   {
                       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,
                       HOLD_FLAG = "N",
                       REWORK_FLAG = CurBatch.WO.ORDER_TYPE == BIZ_MES_WO.ORDER_TYPEs.Rework.GetValue() ? "Y" : "N",
                       FINISHED_FLAG = "N",
                       INV_FLAG = "N",
                       DFT_FLAG = "N",
                       DFT_COUNT = 0,
                   };
                   wipSN.AUTH_PROD = CurLine.LINE_CODE;
                    wipSN.AUTH_ORG = CurBatch.WO.AUTH_ORG;
                    wipSN.AUTH_PROD = CurLine.LINE_CODE;
                   wipSN.STATUS = wipSN.STATUS > 0 ? MES_WIP_DATA.STATUSs.OK.GetValue() : wipSN.STATUS;
                   wipSN.ROT_CODE = CurBatch.WO.ROUTE_CODE;
                   wipSN.NODE_ID = curNode.ID;
@@ -205,9 +221,13 @@
                   wipSN.OPER_CODE = curNode.OPER_CODE;
                   wipSN.SEGMENT = curNode.SEGMENT;
                   wipSN.OPERATION_TIME = DateTime.Now;
                   wipSN.SFTS_CODE = CurLine.SFTS_CODE;
                   //wipSN.SFT_CODE = CurBatch.WO.ROUTE_CODE;
                   //wipSN.PRD_CODE = CurBatch.WO.ROUTE_CODE;
                    var curShiftPeriod = GetShiftPeriodForNow();
                    if (!curShiftPeriod.IsNullOrEmpty())
                    {
                       wipSN.SFTS_CODE = curShiftPeriod.ShiftSys.SFTS_CODE;
                      wipSN.SFT_CODE = curShiftPeriod.Shift.SFT_CODE;
                      wipSN.PRD_CODE = curShiftPeriod.Period.PRD_CODE;
                    }
                   CurBatch.StartWorking(UserCode);
   
                   //如果是投入站