using Tiger.Model; using SqlSugar; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Rhea.Common; using System.Net; using System.Linq; using Newtonsoft.Json; using Tiger.IBusiness; using Tiger.Business.MES; using Tiger.Model.Entitys.MES.Position; namespace Tiger.Business { public partial class Biz { /// /// 工步 /// public partial class WorkStep : IWorkStep { public WorkStep(IWorkStep.NodeTypes type, IPosition position) { NodeType = type; CurPosition = position; } #region Propertys & Variables public string ID { get; set; } = Guid.NewGuid().ToString("N"); public IWorkStep.NodeTypes NodeType { get; set; } public MES_WO_NODE Node { get; set; } public MES_WO_OPER OperSetting { get; set; } public MES_WO_NODE_ACT NodeAct { get; set; } public MES_WO_ACTION ActSetting { get; set; } public IPosition CurPosition { get; set; } public IWorkAction CurAction { get; set; } public int Sequence { get; set; } public List PrepNodeIDs { get; set; } = new(); public string NodeID => NodeType == IWorkStep.NodeTypes.Action ? NodeAct.ID : Node.ID; private bool _IsFinished = false; public bool IsFinished { get => NodeType == IWorkStep.NodeTypes.Action ? CurAction.IsFinished : _IsFinished; set { _IsFinished = value; } } public Action DBSubmitAction { get; set; } = () => { }; #endregion #region Functions /// /// 初始化工步 /// /// public void Init() { CurAction = DI.Resolve(NodeAct.Definition.SERVICE_TYPE) as IWorkAction; //CurAction = DI.Resolve("Tiger.IBusiness.IPrintLabel,Tiger.IBusiness") as IWorkAction; CurAction.Init(this, CurPosition, NodeAct, ActSetting); } /// /// 尝试开始执行工步 /// /// public ApiAction TryBegin(SubmitInput input) { return CurAction.TryBegin(input); } /// /// 获取行为开始的提示信息 /// /// public Locale GetBeginMsg() { return CurAction.GetBeginMsg(); } /// /// 工步提交数据 /// /// /// public ApiAction Submit(SubmitInput input) { return CurAction.Submit(input); } /// /// 结束工步执行 /// /// public ApiAction End() { return CurAction.End(); } /// /// 获取当前工步的信息 /// /// public WorkStepInfo GetInfo() { return new WorkStepInfo() { ID = ID, Sequence = Sequence, NodeID = NodeID, NodeType = NodeType.ToString(), Node = Node, OperSetting = OperSetting, NodeAct = NodeAct, ActSetting = ActSetting, IsFinished = IsFinished, }; } #endregion } } }