服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-09-25 0fdb04b7c451d7c59b226c25425722afd3364916
优化工序和行为逻辑
已修改18个文件
109 ■■■■■ 文件已修改
Tiger.Business.MES/Common/WorkStep.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/CollectNode.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/PackingNode.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/Position.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/TestNode.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/Assembly.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/IPQC.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/PackageInputCheck.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/PackingAction.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/PrintLabel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/ThreeInOne.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/VerifyCustomSN.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/Weighing.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/WipExtInfo.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/YadaAssembly.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness/Common/IStep.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/MES_WIP_ACT.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Common/WorkStep.cs
@@ -28,6 +28,9 @@
        #region Propertys & Variables
        public string ID { get; set; } = Guid.NewGuid().ToString("N");
        public string Name { get; set; }
        private DateTime BeginAt;
        private DateTime EndAt;
        public TimeSpan ElapsedTime => EndAt - BeginAt;
        public IWorkStep.NodeTypes NodeType { get; set; }
        public MES_WO_NODE Node { get; set; }
        public MES_WO_OPER OperSetting { get; set; }
@@ -75,6 +78,7 @@
        /// <returns></returns>
        public ApiAction<SubmitOutput> TryBegin(SubmitInput input)
        {
            BeginAt = DateTime.Now;
            return CurAction.TryBegin(input);
        }
@@ -103,7 +107,18 @@
        /// <returns></returns>
        public ApiAction<SubmitOutput> End(SubmitInput input)
        {
            return CurAction.End(input);
            var result = CurAction.End(input);
            EndAt = DateTime.Now;
            return result;
        }
        /// <summary>
        /// 获取工步当前耗时
        /// </summary>
        /// <returns></returns>
        public TimeSpan GetElapsedTime()
        {
            return DateTime.Now - BeginAt;
        }
        /// <summary>
Tiger.Business.MES/Transaction/CollectNode.cs
@@ -212,6 +212,10 @@
            var curNode = CurBatch.GetNode(PostCode);
            try
            {
                //当工步列表为空,则执行当前工序的必要逻辑当作第一个工序节点,完成后按需求创建后续的工步列表
                if (Steps.IsNullOrEmpty())
                {
                    BeginAt = DateTime.Now;
                //判断工单实时状态判断是否可以生产
                var woStatus = CurBatch.CheckCanProduce(curNode);
                if (!woStatus.IsSuccessed)
@@ -274,9 +278,6 @@
                    return canGotoNext;
                }
                //当工步列表为空,则执行当前工序的必要逻辑当作第一个工序节点,完成后按需求创建后续的工步列表
                if (Steps.IsNullOrEmpty())
                {
                    //绑定条码到工单
                    foreach (var wipSN in wipSNs)
                    {
@@ -470,11 +471,24 @@
                {
                    var curStep = Steps.Where(q => q.NodeType == IWorkStep.NodeTypes.Node && !q.IsFinished).OrderBy(q => q.Sequence).First();
                    //根据工序节点工步的序号处理相应工步的处理逻辑
                    switch (curStep.Sequence)
                    {
                        case 2:
                            {
                                //第二工步的处理逻辑
                    //完成当前工序节点工步
                    curStep.IsFinished = true;
                    curStep.Status = StepStatus.Finished;
                    CurStep = curStep;
                }
                            break;
                        default:
                            break;
                    }
                }
                //未完成所有工步
                if (!IsFinishAllSteps)
Tiger.Business.MES/Transaction/PackingNode.cs
@@ -253,6 +253,10 @@
            var curNode = CurBatch.GetNode(PostCode);
            try
            {
                //当工步列表为空,则执行当前工序的必要逻辑当作第一个工序节点,完成后按需求创建后续的工步列表
                if (Steps.IsNullOrEmpty())
                {
                    BeginAt = DateTime.Now;
                //判断工单实时状态判断是否可以生产
                var woStatus = CurBatch.CheckCanProduce(curNode);
                if (!woStatus.IsSuccessed)
@@ -315,9 +319,6 @@
                    return canGotoNext;
                }
                //当工步列表为空,则执行当前工序的必要逻辑当作第一个工序节点,完成后按需求创建后续的工步列表
                if (Steps.IsNullOrEmpty())
                {
                    //绑定条码到工单
                    foreach (var wipSN in wipSNs)
                    {
@@ -511,11 +512,24 @@
                {
                    var curStep = Steps.Where(q => q.NodeType == IWorkStep.NodeTypes.Node && !q.IsFinished).OrderBy(q => q.Sequence).First();
                    //根据工序节点工步的序号处理相应工步的处理逻辑
                    switch (curStep.Sequence)
                    {
                        case 2:
                            {
                                //第二工步的处理逻辑
                    //完成当前工序节点工步
                    curStep.IsFinished = true;
                    curStep.Status = StepStatus.Finished;
                    CurStep = curStep;
                }
                            break;
                        default:
                            break;
                    }
                }
                //未完成所有工步
                if (!IsFinishAllSteps)
Tiger.Business.MES/Transaction/Position.cs
@@ -48,6 +48,9 @@
        #region Propertys & Variables
        public string UserCode { get; set; }
        public string PostCode { get; set; }
        protected DateTime BeginAt;
        protected DateTime EndAt;
        public TimeSpan ElapsedTime => EndAt - BeginAt;
        public MES_FACTORY CurFactory { get; set; }
        public MES_WORKSHOP CurWorkshop { get; set; }
        public MES_LINE CurLine { get; set; }
@@ -415,6 +418,10 @@
                            action.Invoke();
                        }
                    }
                    //记录工序耗时
                    EndAt = DateTime.Now;
                    var ids = CurWipSNHiss.Select(q => q.ID).ToList();
                    GetCommitDB().Updateable<MES_WIP_HIS>().SetColumns(q => q.ELAPSED_TIME == ElapsedTime.TotalMilliseconds.ToInt64()).Where(q => ids.Contains(q.ID)).ExecuteCommand();
                });
                if (dbTran.IsSuccess)
                {
Tiger.Business.MES/Transaction/TestNode.cs
@@ -212,6 +212,10 @@
            var curNode = CurBatch.GetNode(PostCode);
            try
            {
                //当工步列表为空,则执行当前工序的必要逻辑当作第一个工序节点,完成后按需求创建后续的工步列表
                if (Steps.IsNullOrEmpty())
                {
                    BeginAt = DateTime.Now;
                //判断工单实时状态判断是否可以生产
                var woStatus = CurBatch.CheckCanProduce(curNode);
                if (!woStatus.IsSuccessed)
@@ -274,9 +278,6 @@
                    return canGotoNext;
                }
                //当工步列表为空,则执行当前工序的必要逻辑当作第一个工序节点,完成后按需求创建后续的工步列表
                if (Steps.IsNullOrEmpty())
                {
                    //绑定条码到工单
                    foreach (var wipSN in wipSNs)
                    {
@@ -470,11 +471,24 @@
                {
                    var curStep = Steps.Where(q => q.NodeType == IWorkStep.NodeTypes.Node && !q.IsFinished).OrderBy(q => q.Sequence).First();
                    //根据工序节点工步的序号处理相应工步的处理逻辑
                    switch (curStep.Sequence)
                    {
                        case 2:
                            {
                                //第二工步的处理逻辑
                    //完成当前工序节点工步
                    curStep.IsFinished = true;
                    curStep.Status = StepStatus.Finished;
                    CurStep = curStep;
                }
                            break;
                        default:
                            break;
                    }
                }
                //未完成所有工步
                if (!IsFinishAllSteps)
Tiger.Business.MES/WorkAction/Assembly.cs
@@ -352,6 +352,7 @@
                    ACT_SN = wipSn.SN,
                    ACT_VALUE_1 = CurAssembly.ToJson(),
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"以下物料上料完成:{string.Join(",", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/IPQC.cs
@@ -161,6 +161,7 @@
                    ACT_VALUE_4 = "",
                    ACT_VALUE_5 = "",
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"执行成功",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/PackageInputCheck.cs
@@ -246,6 +246,7 @@
                    ACT_TYPE = NodeAct.ACT_TYPE,
                    ACT_SN = wipSn.SN,
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"条码[{wipSn.SN}]可以在工单[{wipSn.WORK_ORDER}]投料生产,其中U9检查耗时{U9Cost:0.0000}秒",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -827,6 +827,7 @@
                        ACT_TYPE = NodeAct.ACT_TYPE,
                        ACT_SN = wipSn.SN,
                        ACT_RESULT = "Y",
                        ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                        TRACE_INFO = $"产品条码[{string.Join(",", CurPosition.CurSN)}]包装完成",
                    };
                    wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/PrintLabel.cs
@@ -155,6 +155,7 @@
                    ACT_VALUE_1 = Label.LABEL_CODE,
                    ACT_VALUE_2 = Label.Variables.ToJson(),
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"标签{Label.LABEL_NAME}[{Label.LABEL_CODE}]打印成功",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/ThreeInOne.cs
@@ -381,6 +381,7 @@
                    ACT_VALUE_1 = Label.LABEL_CODE,
                    ACT_VALUE_2 = Label.Variables.ToJson(),
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"厂内条码[{FlowCSN.FLOW_SN}]绑定客户条码[{FlowCSN.CUST_SN}]成功",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/VerifyCustomSN.cs
@@ -180,6 +180,7 @@
                    ACT_TYPE = NodeAct.ACT_TYPE,
                    ACT_SN = wipSn.SN,
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"产品[{CurPosition.CurSN}]验证通过",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/Weighing.cs
@@ -184,6 +184,7 @@
                    ACT_TYPE = NodeAct.ACT_TYPE,
                    ACT_SN = wipSn.SN,
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"条码[{CurPosition.CurSN}]称重数据[{CurPkg.WEIGHT} {CurPkg.WEIGHT_UNIT}]保存成功",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/WipExtInfo.cs
@@ -208,6 +208,7 @@
                    ACT_SN = wipSn.SN,
                    ACT_VALUE_1 = CurWipExt.ToJson(),
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"产品[{CurPosition.CurSN}]绑定[{ExtInfo.FIELD_NAME}]标签条码[{CurWipExt.GetType().GetProperty($"FIELD_{ExtInfo.SEQ.ToString("00")}")?.GetValue(CurWipExt)?.ToString()}]保存成功",
                };
                wipActs.Add(wipAct);
Tiger.Business.MES/WorkAction/YadaAssembly.cs
@@ -367,6 +367,7 @@
                    ACT_SN = wipSn.SN,
                    ACT_VALUE_1 = CurAssembly.ToJson(),
                    ACT_RESULT = "Y",
                    ELAPSED_TIME = CurStep.GetElapsedTime().TotalMilliseconds.ToInt64(),
                    TRACE_INFO = $"以下物料上料完成:{string.Join(",", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}",
                };
                wipActs.Add(wipAct);
Tiger.IBusiness/Common/IStep.cs
@@ -56,6 +56,11 @@
        /// </summary>
        /// <returns></returns>
        public abstract ApiAction<OutputT> End(InputT input);
        /// <summary>
        /// 获取工步当前耗时
        /// </summary>
        /// <returns></returns>
        public TimeSpan GetElapsedTime();
        #endregion Functions
    }
Tiger.Model.Net/Entitys/MES/MES_WIP_ACT.cs
@@ -204,6 +204,11 @@
        [DisplayName("备注")]
        public string REMARK { get; set; }
        /// <summary>
        /// 操作耗时(s)
        /// </summary>
        [DisplayName("操作耗时(ms)")]
        public long ELAPSED_TIME { get; set; } = 0;
        /// <summary>
        /// 追溯信息
        /// </summary>
        [DisplayName("追溯信息")]
Tiger.Model.Net/Entitys/MES/MES_WIP_HIS.cs
@@ -292,6 +292,11 @@
        [DisplayName("备注")]
        public string REMARK { get; set; }
        /// <summary>
        /// 操作耗时(s)
        /// </summary>
        [DisplayName("操作耗时(ms)")]
        public long ELAPSED_TIME { get; set; } = 0;
        /// <summary>
        /// 追溯信息
        /// </summary>
        [DisplayName("追溯信息")]