服务端的TigerApi 框架,基于.NET6 2024 版本
保存工步的数据库提交操作到数据库,增加可以保存完工步数据后,保存附加的内容
已修改3个文件
75 ■■■■ 文件已修改
Tiger.Business.MES/Transaction/Position.cs 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/WorkAction/PackingAction.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.IBusiness.MES/Transaction/IPosition.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Tiger.Business.MES/Transaction/Position.cs
@@ -395,15 +395,45 @@
        /// <summary>
        /// 保存工步的数据库提交操作到数据库
        /// </summary>
        protected void SaveStepsCommitActionToDB()
        /// <param name="appendToSave">提交完工步数据后,提交附加的保存内容</param>
        public void SaveStepsCommitActionToDB(Action appendToSave = null)
        {
            //保存工步的数据库提交操作到提交操作列表
            var commitList = new List<Action>();
            foreach (var step in Steps.OrderBy(q => q.Sequence))
            if (!Steps.IsNullOrEmpty())
            {
                commitList.Add(step.DBSubmitAction);
                var commitList = new List<Action>();
                foreach (var step in Steps.OrderBy(q => q.Sequence))
                {
                    commitList.Add(step.DBSubmitAction);
                }
                //记录工序耗时
                commitList.Add(() =>
                {
                    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 (!appendToSave.IsNullOrEmpty())
                {
                    commitList.Add(appendToSave);
                }
                DBCommitList.Add(CurSN, commitList);
            }
            DBCommitList.Add(CurSN, commitList);
            else
            {
                //增加附加的保存内容
                if (!appendToSave.IsNullOrEmpty())
                {
                    if (!DBCommitList.ContainsKey("AppendSaveAction"))
                    {
                        DBCommitList.Add("AppendSaveAction", new List<Action>());
                    }
                    var commitList = DBCommitList["AppendSaveAction"];
                    commitList.Add(appendToSave);
                }
            }
            //如果不需要临时存储数据库提交操作,则把提交操作列表提交到数据库
            if (!NeedTemporaryStoreDBCommitAction)
            {
@@ -413,17 +443,21 @@
                var dbTran = GetCommitDB().UseTran(() =>
                {
                    //在同一个事务中保存所有工步的数据
                    foreach (var wipSn in DBCommitList.Keys)
                    foreach (var wipSn in DBCommitList.Keys.Where(q => q != "AppendSaveAction"))
                    {
                        foreach (var action in DBCommitList[wipSn])
                        {
                            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 (DBCommitList.ContainsKey("AppendSaveAction"))
                    {
                        foreach (var action in DBCommitList["AppendSaveAction"])
                        {
                            action.Invoke();
                        }
                    }
                });
                if (dbTran.IsSuccess)
                {
@@ -715,5 +749,6 @@
            this.IsFinished = true;
            return IsFinished ? base.Close(needSaveHistoryLog) : IsFinished;
        }
    }//endClass
}
Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -1,4 +1,5 @@
using Rhea.Common;
using Microsoft.CodeAnalysis.Differencing;
using Rhea.Common;
using SqlSugar;
using System;
using System.Collections.Generic;
@@ -890,10 +891,13 @@
            else
            {
                var _pkgList = CurPkg.IsFinished ? GetPackageList(CurPkg.Item) : new();
                //最外层包装已经完成包装,则把工序中暂存标记设为false,统一提交包装内产品的过站记录
                CurPosition.NeedTemporaryStoreDBCommitAction = false;
                //保存数据
                var db = Biz.Db;
                var dbTran = db.UseTran(() =>
                CurPosition.SaveStepsCommitActionToDB(() =>
                {
                    var db = CurPosition.GetCommitDB();
                    if (_pkgList.Any())
                    {
                        db.Storageable(_pkgList, CurPosition.UserCode).ExecuteCommand();
@@ -915,11 +919,6 @@
                        }
                    }
                });
                if (!dbTran.IsSuccess)
                {
                    //抛出异常
                    throw dbTran.ErrorException;
                }
            }
            if (CurPkg.IsFinished)
Tiger.IBusiness.MES/Transaction/IPosition.cs
@@ -53,6 +53,11 @@
        /// <returns></returns>
        public DbClient GetCommitDB();
        /// <summary>
        /// 保存工步的数据库提交操作到数据库
        /// </summary>
        /// <param name="appendAction">保存完工步数据后,附加的保存内容</param>
        public void SaveStepsCommitActionToDB(Action appendAction = null);
        /// <summary>
        /// 获取打印标签模板过程变量值
        /// </summary>
        /// <param name="labelPVs">过程变量列表</param>