服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-08-02 8bfaf7141c88f41d3dbd1995cfb9cb015ca0d1d6
整理了工序传入传出参数
已修改9个文件
已重命名1个文件
已添加1个文件
160 ■■■■■ 文件已修改
Tiger.Business.MES/Tiger.Business.MES.csproj 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/CollectNode.cs 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/PackingNode.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/Position.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/TestNode.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.WMS/Extensions/JsonExtension.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/MES/Biz.WorkBatch.cs 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business/MES/Biz.WorkStep.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness/Extensions/ModelExtension.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness/MES/IWorkStep.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Tiger.Business.MES.csproj
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
@@ -11,6 +11,10 @@
    <ProjectReference Include="..\Tiger.IBusiness\Tiger.IBusiness.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Extensions\" />
  </ItemGroup>
  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="xcopy /r/y/i $(ProjectDir)$(OutDir)$(AssemblyName).dll $(SolutionDir)Tiger.Api\$(OutDir)&#xD;&#xA;xcopy /r/y/i $(ProjectDir)$(OutDir)$(AssemblyName).pdb $(SolutionDir)Tiger.Api\$(OutDir)&#xD;&#xA;xcopy /r/y/i $(ProjectDir)$(OutDir)BizSettings.json $(SolutionDir)Tiger.Api\$(OutDir)" />
  </Target>
Tiger.Business.MES/Transaction/CollectNode.cs
@@ -10,6 +10,7 @@
using System.Threading.Tasks;
using Tiger.Model;
using Tiger.Model.Entitys.MES.Position;
using static System.Net.Mime.MediaTypeNames;
namespace Tiger.Business.MES.Transaction
{
@@ -123,12 +124,7 @@
                            }
                            else
                            {
                                result.Data.IsFinished = IsFinishAllSteps;
                                result.Data.CurWO = CurBatch.WO.ORDER_NO;
                                result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                                result.Data.CurNode = CurStep?.NodeAct.ACT_NAME;
                                result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE;
                                result.Data.NextStepID = CurStep?.ID;
                                result.Data.SetValue(CurBatch, CurStep, CurStep?.ID, IsFinishAllSteps);
                            }
                        }
                        //如果所有工步都完成
@@ -260,7 +256,6 @@
                    Steps.Clear();
                    var curStep = new Biz.WorkStep(IWorkStep.Types.Node, this)
                    {
                        NodeID = curNode.ID,
                        Sequence = Steps.Count + 1,
                        Node = curNode,
                        DBSubmitAction = () =>
@@ -303,11 +298,7 @@
                        NextSteps.Clear();
                        NextSteps.Add(next);
                        //根据后续工步返回ApiAction
                        result.Data.IsFinished = IsFinishAllSteps;
                        result.Data.CurWO = CurBatch.WO.ORDER_NO;
                        result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                        result.Data.CurNode = CurStep?.Node.NODE_NAME;
                        result.Data.NextStepID = next.ID;
                        result.Data.SetValue(CurBatch, CurStep, next.ID, IsFinishAllSteps);
                        //根据工序节点工步的序号返回相应的操作提示
                        switch (next.Sequence)
@@ -330,11 +321,7 @@
                //已完成所有工步
                else
                {
                    action.Data.IsFinished = IsFinishAllSteps;
                    action.Data.CurWO = CurBatch.WO.ORDER_NO;
                    action.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                    action.Data.CurNode = CurStep?.Node.NODE_NAME;
                    action.Data.NextStepID = "";
                    action.Data.SetValue(CurBatch, CurStep, "", IsFinishAllSteps);
                    action = DoIfFinishAllSteps(action);
                }
            }
Tiger.Business.MES/Transaction/PackingNode.cs
@@ -146,12 +146,7 @@
                                }
                                else
                                {
                                    result.Data.IsFinished = IsFinishAllSteps;
                                    result.Data.CurWO = CurBatch.WO.ORDER_NO;
                                    result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                                    result.Data.CurNode = CurStep?.NodeAct.ACT_NAME;
                                    result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE;
                                    result.Data.NextStepID = CurStep?.ID;
                                    result.Data.SetValue(CurBatch, CurStep, CurStep?.ID, IsFinishAllSteps);
                                }
                            }
                            //如果所有工步都完成
@@ -284,7 +279,6 @@
                    Steps.Clear();
                    var curStep = new Biz.WorkStep(IWorkStep.Types.Node, this) 
                    {
                        NodeID = curNode.ID,
                        Sequence = Steps.Count + 1,
                        Node = curNode,
                        DBSubmitAction = () =>
@@ -327,11 +321,7 @@
                        NextSteps.Clear();
                        NextSteps.Add(next);
                        //根据后续工步返回ApiAction
                        result.Data.IsFinished = IsFinishAllSteps;
                        result.Data.CurWO = CurBatch.WO.ORDER_NO;
                        result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                        result.Data.CurNode = CurStep?.Node.NODE_NAME;
                        result.Data.NextStepID = next.ID;
                        result.Data.SetValue(CurBatch, CurStep, next.ID, IsFinishAllSteps);
                        //根据工序节点工步的序号返回相应的操作提示
                        switch (next.Sequence)
@@ -354,11 +344,7 @@
                //已完成所有工步
                else
                {
                    action.Data.IsFinished = IsFinishAllSteps;
                    action.Data.CurWO = CurBatch.WO.ORDER_NO;
                    action.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                    action.Data.CurNode = CurStep?.Node.NODE_NAME;
                    action.Data.NextStepID = "";
                    action.Data.SetValue(CurBatch, CurStep, "", IsFinishAllSteps);
                    action = DoIfFinishAllSteps(action);
                }
            }
Tiger.Business.MES/Transaction/Position.cs
@@ -217,7 +217,6 @@
                {
                    var next = new WorkStep(IWorkStep.Types.Action, this)
                    {
                        NodeID = act.ID,
                        Sequence = parent.Sequence + 1,
                        Node = parent.Node,
                        NodeAct = act,
@@ -298,24 +297,14 @@
                    NextSteps = GetNextSteps(CurStep);
                    //返回结果到客户端
                    result = canBegin;
                    result.Data.IsFinished = IsFinishAllSteps;
                    result.Data.CurWO = CurBatch.WO.ORDER_NO;
                    result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                    result.Data.CurNode = CurStep?.NodeAct.ACT_NAME;
                    result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE;
                    result.Data.NextStepID = CurStep?.ID;
                    result.Data.SetValue(CurBatch, CurStep, CurStep?.ID, IsFinishAllSteps);
                    
                    return result;
                }
            }
            //没有可以直接开始的后续工步,根据后续工步返回ApiAction
            result.Data.IsFinished = IsFinishAllSteps;
            result.Data.CurWO = CurBatch.WO.ORDER_NO;
            result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
            result.Data.CurNode = CurStep?.Node.NODE_NAME;
            result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE;
            result.Data.NextStepID = "";
            result.Data.SetValue(CurBatch, CurStep, "", IsFinishAllSteps);
            //没有可以直接开始的后续工步,根据后续可执行工步列表返回相应的操作提示
            if (NextSteps.Count == 1)
Tiger.Business.MES/Transaction/TestNode.cs
@@ -124,12 +124,7 @@
                            }
                            else
                            {
                                result.Data.IsFinished = IsFinishAllSteps;
                                result.Data.CurWO = CurBatch.WO.ORDER_NO;
                                result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                                result.Data.CurNode = CurStep?.NodeAct.ACT_NAME;
                                result.Data.StepActCode = CurStep?.NodeAct.ACT_CODE;
                                result.Data.NextStepID = CurStep?.ID;
                                result.Data.SetValue(CurBatch, CurStep, CurStep?.ID, IsFinishAllSteps);
                            }
                        }
                        //如果所有工步都完成
@@ -261,7 +256,6 @@
                    Steps.Clear();
                    var curStep = new Biz.WorkStep(IWorkStep.Types.Node, this)
                    {
                        NodeID = curNode.ID,
                        Sequence = Steps.Count + 1,
                        Node = curNode,
                        DBSubmitAction = () =>
@@ -304,11 +298,7 @@
                        NextSteps.Clear();
                        NextSteps.Add(next);
                        //根据后续工步返回ApiAction
                        result.Data.IsFinished = IsFinishAllSteps;
                        result.Data.CurWO = CurBatch.WO.ORDER_NO;
                        result.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                        result.Data.CurNode = CurStep?.Node.NODE_NAME;
                        result.Data.NextStepID = next.ID;
                        result.Data.SetValue(CurBatch, CurStep, next.ID, IsFinishAllSteps);
                        //根据工序节点工步的序号返回相应的操作提示
                        switch (next.Sequence)
@@ -331,11 +321,7 @@
                //已完成所有工步
                else
                {
                    action.Data.IsFinished = IsFinishAllSteps;
                    action.Data.CurWO = CurBatch.WO.ORDER_NO;
                    action.Data.CurBatch = CurBatch.Batch.BATCH_NO;
                    action.Data.CurNode = CurStep?.Node.NODE_NAME;
                    action.Data.NextStepID = "";
                    action.Data.SetValue(CurBatch, CurStep, "", IsFinishAllSteps);
                    action = DoIfFinishAllSteps(action);
                }
            }
Tiger.Business.WMS/Extensions/JsonExtension.cs
ÎļþÃû´Ó Tiger.Business.WMS/Extensions/JsonExtention.cs ÐÞ¸Ä
@@ -8,7 +8,7 @@
    /// <summary>
    ///
    /// </summary>
    public static class JsonExtention
    public static class JsonExtension
    {
        /// <summary>
        ///
Tiger.Business/MES/Biz.WorkBatch.cs
@@ -8,13 +8,9 @@
using Rhea.Common;
using System.Net;
using System.Linq;
using Newtonsoft.Json;
using Tiger.IBusiness;
using Microsoft.AspNetCore.Http;
using Tiger.Business.MES;
using Org.BouncyCastle.Ocsp;
using Tiger.Model.Entitys.MES.Position;
using static System.Net.Mime.MediaTypeNames;
namespace Tiger.Business
{
@@ -115,7 +111,7 @@
            /// <returns></returns>
            public ApiAction<SubmitOutput> CheckStatus()
            {
                var action = new ApiAction<SubmitOutput>(new SubmitOutput(),true);
                var action = new ApiAction<SubmitOutput>(new SubmitOutput(), true);
                WO = Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == OrderNo).First();
                Batch = Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(q => q.ORDER_NO == OrderNo && q.ACT_LINE == LineCode).First();
@@ -123,8 +119,7 @@
                if (Batch.STATUS != BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() && Batch.STATUS != BIZ_MES_WO_BATCH.STATUSs.Working.GetValue())
                {
                    action.IsSuccessed = false;
                    action.Data.CurWO = WO.ORDER_NO;
                    action.Data.CurBatch = Batch.BATCH_NO;
                    action.Data.SetValue(this, null);
                    //action.LocaleMsg = new($"工单批次[{Batch.BATCH_NO}]状态[{Batch.STATUS.GetEnum<BIZ_MES_WO_BATCH.STATUSs>().GetName()}]不是允许生产的状态,请扫描允许生产的产品条码");
                    action.LocaleMsg = new("MES.WorkBatch.WoBatchStatusCanNotWork", Batch.BATCH_NO, Batch.STATUS.GetEnum<BIZ_MES_WO_BATCH.STATUSs>().GetName());
                }
@@ -132,8 +127,7 @@
                if (WO.STATUS != BIZ_MES_WO.STATUSs.Release.GetValue() && WO.STATUS != BIZ_MES_WO.STATUSs.Working.GetValue())
                {
                    action.IsSuccessed = false;
                    action.Data.CurWO = WO.ORDER_NO;
                    action.Data.CurBatch = Batch.BATCH_NO;
                    action.Data.SetValue(this, null);
                    //action.LocaleMsg = new($"工单[{WO.ORDER_NO}]状态[{Batch.STATUS.GetEnum<BIZ_MES_WO.STATUSs>().GetName()}]不是允许生产的状态,请扫描允许生产的产品条码");
                    action.LocaleMsg = new("MES.WorkBatch.WoStatusCanNotWork", WO.ORDER_NO, Batch.STATUS.GetEnum<BIZ_MES_WO.STATUSs>().GetName());
                }
@@ -239,8 +233,7 @@
                    else
                    {
                        action.IsSuccessed = false;
                        action.Data.CurWO = WO.ORDER_NO;
                        action.Data.CurBatch = Batch.BATCH_NO;
                        action.Data.SetValue(this, null);
                        var nextList = Nodes.Where(q => q.IS_FIRST_NODE == "Y");
                        action.LocaleMsg = new("MES.WorkBatch.GotoNextNodeException", wipSN.SN, nextNode.NODE_NAME, string.Join(", ", nextList.Select(q => q.NODE_NAME + (q.CAN_SKIP == "Y" ? $"({T(L("MES.WorkBatch.Optional"), input.Locale)})" : ""))));
                        return action;
@@ -275,8 +268,7 @@
                        else
                        {
                            action.IsSuccessed = false;
                            action.Data.CurWO = WO.ORDER_NO;
                            action.Data.CurBatch = Batch.BATCH_NO;
                            action.Data.SetValue(this, null);
                            var nextList = reflowNodes.Where(q => wipSN.REFLOW_NODE.IsNullOrEmpty() || wipSN.REFLOW_NODE == q.NODE_NAME);
                            action.LocaleMsg = new("MES.WorkBatch.ReflowToNodeException", nextNode.NODE_NAME, wipSN.SN, curNode.NODE_NAME, string.Join(", ", nextList.Select(q => q.NODE_NAME + (q.CAN_SKIP == "Y" ? $"({T(L("MES.WorkBatch.Optional"), input.Locale)})" : ""))));
                            return action;
@@ -287,8 +279,7 @@
                         && curSetting.ALLOW_DFT_IN != "Y" && nextNode.Operation.OPER_TYPE != MES_OPERATION.OPER_TYPEs.Repair.GetValue())
                    {
                        action.IsSuccessed = false;
                        action.Data.CurWO = WO.ORDER_NO;
                        action.Data.CurBatch = Batch.BATCH_NO;
                        action.Data.SetValue(this, null);
                        action.LocaleMsg = new("MES.WorkBatch.PleaseGotoRepair", curNode.NODE_NAME, wipSN.SN);
                        return action;
                    }
@@ -308,8 +299,7 @@
                        if (nextNodes.Any(q => NodeSets.Any(s => s.NODE_ID == q.ID && s.IS_ACTIVE == "Y" && s.CAN_SKIP != "Y")))
                        {
                            action.IsSuccessed = false;
                            action.Data.CurWO = WO.ORDER_NO;
                            action.Data.CurBatch = Batch.BATCH_NO;
                            action.Data.SetValue(this, null);
                            var nextList = nextNodes.Where(q => NodeSets.Any(s => s.NODE_ID == q.ID && s.IS_ACTIVE == "Y" && s.CAN_SKIP != "Y"));
                            action.LocaleMsg = new("MES.WorkBatch.GotoNextNodeException", wipSN.SN, nextNode.NODE_NAME, string.Join(", ", nextList.Select(q => q.NODE_NAME + (q.CAN_SKIP == "Y" ? $"({T(L("MES.WorkBatch.Optional"), input.Locale)})" : ""))));
                            return action;
@@ -338,8 +328,7 @@
                            else
                            {
                                action.IsSuccessed = false;
                                action.Data.CurWO = WO.ORDER_NO;
                                action.Data.CurBatch = Batch.BATCH_NO;
                                action.Data.SetValue(this, null);
                                var nextList = nextNodes.Where(q => NodeSets.Any(s => s.NODE_ID == q.ID && s.IS_ACTIVE == "Y"));
                                action.LocaleMsg = new("MES.WorkBatch.GotoNextNodeException", wipSN.SN, nextNode.NODE_NAME, string.Join(", ", nextList.Select(q => q.NODE_NAME + (q.CAN_SKIP == "Y" ? $"({T(L("MES.WorkBatch.Optional"), input.Locale)})" : ""))));
                                return action;
Tiger.Business/MES/Biz.WorkStep.cs
@@ -30,7 +30,7 @@
            #region Propertys & Variables
            public string ID { get; set; } = Guid.NewGuid().ToString("N");
            public string NodeID { get; set; }
            public IWorkStep.Types Type { get; set; }
            public MES_WO_NODE Node { get; set; }
            public MES_WO_NODE_ACT NodeAct { get; set; }
@@ -39,6 +39,8 @@
            public IWorkAction CurAction { get; set; }
            public int Sequence { get; set; }
            public List<string> PrepNodeIDs { get; set; } = new();
            public string NodeID => Type == IWorkStep.Types.Action ? NodeAct.ID : Node.ID;
            public string NodeName => Type == IWorkStep.Types.Action ? NodeAct.ACT_NAME : Node.NODE_NAME;
            private bool _IsFinished = false;
            public bool IsFinished
            {
Tiger.IBusiness/Extensions/ModelExtension.cs
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
using Rhea.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tiger.Model.Entitys.MES.Position;
namespace Tiger.IBusiness
{
    public static class ModelExtension
    {
        public static void SetValue(this SubmitOutput value, IWorkBatch CurBatch, IWorkStep CurStep, string NextStepID = "", bool IsNodeFinished = false)
        {
            value.IsFinished = IsNodeFinished;
            value.CurWO = CurBatch?.WO;
            value.CurBatch = CurBatch?.Batch;
            value.CurNode = CurStep?.NodeName;
            value.StepActCode = CurStep?.NodeAct?.ACT_CODE;
            value.NextStepID = NextStepID;
        }
        public static void SetData(this SubmitOutput value, object Data)
        {
            value.Data = Data;
        }
        public static void SetData<T>(this SubmitOutput value, T Data)
        {
            value.Data = Data;
        }
    }
}
Tiger.IBusiness/MES/IWorkStep.cs
@@ -13,7 +13,6 @@
    {
        #region Propertys & Variables
        public string ID { get; set; }
        public Types Type { get; set; }
        public int Sequence { get; set; }
        public MES_WO_NODE Node { get; set; }
@@ -22,6 +21,8 @@
        public IPosition CurPosition { get; set; }
        public IWorkAction CurAction { get; set; }
        public List<string> PrepNodeIDs { get; set; }
        public string NodeID { get; }
        public string NodeName { get; }
        public bool IsFinished { get; set; }
        public Action DBSubmitAction { get; set; }
        #endregion Propertys & Variables
Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs
@@ -54,13 +54,13 @@
        /// </summary>
        public bool IsFinished { get; set; } = false;
        /// <summary>
        /// å½“前操作的工单
        /// å½“前操作的工单对象
        /// </summary>
        public string CurWO { get; set; }
        public BIZ_MES_WO CurWO { get; set; }
        /// <summary>
        /// å½“前操作的工单批次
        /// å½“前操作的工单批次对象
        /// </summary>
        public string CurBatch { get; set; }
        public BIZ_MES_WO_BATCH CurBatch { get; set; }
        /// <summary>
        /// å½“前操作的节点名称
        /// </summary>
@@ -77,6 +77,7 @@
        /// å½“前操作返回的数据
        /// </summary>
        public object Data { get; set; }
    }
    public class DefectOutput