服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-07-29 201b456883c4d4799561fd17acec3f8c2111445f
Tiger.Business.MES/Transaction/Position.cs
@@ -57,6 +57,7 @@
        public IWorkBatch WorkBatch => CurBatch;
        public MES_WIP_DATA CurWipSN { get; set; }
        public MES_WIP_HIS CurWipSNHis { get; set; }
        public Dictionary<string, object> Context { get; set; } = new();
        public List<WorkStep> Steps { get; set; } = new();
        public WorkStep CurStep { get; set; }
        public List<WorkStep> NextSteps { get; set; } = new();
@@ -268,12 +269,16 @@
            //尝试有没有可以直接开始的后续工步
            foreach (var step in NextSteps)
            {
                //尝试执行后续工步
                var canBegin = step.TryBegin(input);
                //如果后续工步可以直接开始则直接执行
                if (canBegin.IsSuccessed)
                {
                    //更新当前执行工步为已开始工步
                    CurStep = step;
                    //更新后续可执行的工步列表
                    NextSteps = GetNextSteps(CurStep);
                    //返回结果到客户端
                    result = canBegin;
                    result.Data.IsFinished = IsFinishAllSteps;
                    result.Data.CurWO = CurBatch.WO.ORDER_NO;
@@ -286,7 +291,7 @@
                }
            }
            //根据后续工步返回ApiAction
            //没有可以直接开始的后续工步,根据后续工步返回ApiAction
            result.Data.IsFinished = IsFinishAllSteps;
            result.Data.CurWO = CurBatch.WO.ORDER_NO;
            result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
@@ -294,7 +299,7 @@
            result.Data.StepActCode = CurStep.NodeAct.ACT_CODE;
            result.Data.NextStepID = "";
            //根据后续可执行工步列表返回相应的操作提示
            //没有可以直接开始的后续工步,根据后续可执行工步列表返回相应的操作提示
            if (NextSteps.Count == 1)
            {
                result.LocaleMsg = NextSteps.First().GetBeginMsg();
@@ -307,6 +312,44 @@
            return result;
        }
        
        /// <summary>
        /// 获取打印标签模板过程变量值
        /// </summary>
        /// <param name="labelPVs">过程变量列表</param>
        /// <param name="lv">标签模板变量</param>
        /// <returns></returns>
        public string GetPrintProcessValue(List<BAS_LABEL_PV> labelPVs, BAS_LABEL_VAR lv)
        {
            var pv = labelPVs.FirstOrDefault(q => q.VAR_CODE == lv.VAR_VALUE);
            if (!pv.IsNullOrEmpty())
            {
                switch (pv.VAR_TYPE.GetEnum<BAS_LABEL_PV.VAR_TYPEs>())
                {
                    case BAS_LABEL_PV.VAR_TYPEs.ServerMethod:
                        {
                            switch (pv.VAR_METHOD)
                            {
                                case "GetSN":
                                    return CurWipSN.SN;
                                case "GetBAS_ITEM":
                                    return WorkBatch.Product.ToJson();
                                case "GetCustomer":
                                    return WorkBatch.Batch.ToJson();
                                default:
                                    return "";
                            }
                        }
                    case BAS_LABEL_PV.VAR_TYPEs.WebApiWebApi:
                        break;
                    case BAS_LABEL_PV.VAR_TYPEs.StoredProcedure:
                        break;
                    default:
                        break;
                }
            }
            return "";
        }
        #endregion Functions
        public override bool Close(bool needSaveHistoryLog = false)