服务端的TigerApi 框架,基于.NET6 2024 版本
Rodney Chen
2024-08-07 8ccb8c4d10bff43b884005426110b5ec234a1cbb
Tiger.Business.MES/Transaction/Position.cs
@@ -17,7 +17,7 @@
    /// <summary>
    /// MES岗位事务
    /// </summary>
    public class Position : MESTransactionBase, IPosition
    public class Position : MESTransactionBase, IPosition, ICloneable
    {
        public IPosition Init(string id, string apiHost, string userCode, string postCode)
        {
@@ -330,56 +330,69 @@
            return result;
        }
        public object Clone()
        {
            var newObject = this.MemberwiseClone() as Position;
            newObject.Steps = Steps.Clone();
            newObject.CurWipSNs = CurWipSNs.Clone();
            return newObject;
        }
        /// <summary>
        /// 保存工步的数据库提交操作到数据库
        /// </summary>
        protected void SaveStepsCommitActionToDB()
        {
            ////保存工步的数据库提交操作到提交操作列表
            //foreach (var step in Steps.OrderBy(q => q.Sequence))
            //{
            //    DBCommitList.Add(step.DBSubmitAction);
            //}
            ////如果不需要临时存储数据库提交操作,则把提交操作列表提交到数据库
            //if (!NeedTemporaryStoreDBCommitAction)
            //{
            //    //恢复临时存储标记为false
            //    NeedTemporaryStoreDBCommitAction = false;
            //保存工步的数据库提交操作到提交操作列表
            foreach (var step in Steps.OrderBy(q => q.Sequence))
            {
                DBCommitList.Add(step.DBSubmitAction);
            }
            //如果不需要临时存储数据库提交操作,则把提交操作列表提交到数据库
            if (!NeedTemporaryStoreDBCommitAction)
            {
                //恢复临时存储标记为false
                NeedTemporaryStoreDBCommitAction = false;
            //    var dbTran = GetCommitDB().UseTran(() =>
            //    {
            //        //在同一个事务中保存所有工步的数据
            //        foreach (var action in DBCommitList)
            //        {
            //            action.Invoke();
            //        }
            //    });
            //    if (dbTran.IsSuccess)
            //    {
            //        //保存成功则清空提交操作列表
            //        DBCommitList.Clear();
            //    }
            //    else
            //    {
            //        //抛出异常
            //        throw dbTran.ErrorException;
            //    }
            //}
            if (NeedTemporaryStoreDBCommitAction)
            {
                NodeCommitList.Add(this.MemberwiseClone() as Position);
            }
            else
            {
                //保存成功则清空提交操作列表
                foreach (var item in NodeCommitList)
                var dbTran = GetCommitDB().UseTran(() =>
                {
                    item?.DoSaveToDB();
                    item?.Dispose();
                    //在同一个事务中保存所有工步的数据
                    foreach (var action in DBCommitList)
                    {
                        action.Invoke();
                    }
                });
                if (dbTran.IsSuccess)
                {
                    //保存成功则清空提交操作列表
                    DBCommitList.Clear();
                }
                DoSaveToDB();
                NodeCommitList.Clear();
                else
                {
                    //抛出异常
                    throw dbTran.ErrorException;
                }
            }
            //if (NeedTemporaryStoreDBCommitAction)
            //{
            //    NodeCommitList.Add(this.Clone() as Position);
            //}
            //else
            //{
            //    //保存成功则清空提交操作列表
            //    foreach (var item in NodeCommitList)
            //    {
            //        item?.DoSaveToDB();
            //        item?.Dispose();
            //    }
            //    DoSaveToDB();
            //    NodeCommitList.Clear();
            //}
        }
        protected void DoSaveToDB()