Pengxy 3 місяців тому
батько
коміт
fc18858e60

+ 14 - 8
MicroServices/Business/Business.Application/ResourceExamineManagement/ResourceExamineAppService.cs

@@ -2017,11 +2017,11 @@ namespace Business.ResourceExamineManagement
 
             List<mo_ic_item_stockoccupy> item_stockoccupy = await _ic_item_stockoccupy.GetListAsync(s => seIds.Contains(s.orderentry_id.Value) && bangidList.Contains(s.bang_id));
 
-            using (var unitOfWork = _unitOfWorkManager.Begin(false, true))
+            using (var unitOfWork = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
             {
                 try
                 {
-                    _businessDbContext.UpdateRange(sentrys);
+                    
                     //批量保存 后期考虑子工单
                     if (moderlist.Any())
                     {
@@ -2037,7 +2037,7 @@ namespace Business.ResourceExamineManagement
                             {
                                 c.WorkOrdMasterRecID = DBworkOrdList.Where(a => a.WorkOrd == c.WorkOrd).First().RecID;
                             });
-                            _workOrdRouting.Insert(workOrdRoutings);
+                            _workOrdRouting.AddRange(workOrdRoutings);
                         }
                         if (workOrdDetails.Any())
                         {
@@ -2045,7 +2045,7 @@ namespace Business.ResourceExamineManagement
                             {
                                 c.WorkOrdMasterRecID = DBworkOrdList.Where(a => a.WorkOrd == c.WorkOrd).First().RecID;
                             });
-                            _workOrdDetail.Insert(workOrdDetails);
+                            _workOrdDetail.AddRange(workOrdDetails);
                         }
                         if (WriteMoentry.Any())
                         {
@@ -2065,7 +2065,6 @@ namespace Business.ResourceExamineManagement
                         var ooders = ObjectMapper.Map<List<mo_mes_oorder>, List<mes_oorder>>(oorderList);
                         await _businessDbContext.AddRangeAsync(ooders);
                     }
-
                     if (item_stockoccupy.Any())
                     {
                         var sklist = ObjectMapper.Map<List<mo_ic_item_stockoccupy>, List<ic_item_stockoccupy>>(item_stockoccupy);
@@ -2083,14 +2082,21 @@ namespace Business.ResourceExamineManagement
                         var pr_mainlist = ObjectMapper.Map<List<mo_srm_pr_main>, List<srm_pr_main>>(prmainlist);
                         await _businessDbContext.AddRangeAsync(pr_mainlist);
                     }
+                    _businessDbContext.UpdateRange(sentrys);
+                    
+                    // 保存所有更改到数据库
+                    await _businessDbContext.SaveChangesAsync();
+                    
+                    // 提交事务
                     await unitOfWork.CompleteAsync();
                 }
                 catch (Exception e)
                 {
-                    unitOfWork.Dispose();
+                    // 回滚事务
+                    await unitOfWork.RollbackAsync();
                     new NLogHelper("ResourceExamineAppService").WriteLog("ReviewExamineResult", "资源检查评审数据更新失败:" + e.Message, _currentTenant.Id.ToString());
                     return e.Message;
-                };
+                }
             }
 
             return "ok";
@@ -5828,7 +5834,7 @@ namespace Business.ResourceExamineManagement
                 var curcrmo = me == null ? null: crmoList.Where(c => me.fbill_no==c.bill_no).ToList();
                 var curcust = curcrmo.Any() ? cust.Where(c => curcrmo[0].custom_no == c.Cust).ToList() : null;
                 workOrd.CustNo = curcust != null ? (curcust.Any() ? curcust[0].Cust : "") : "";
-                workOrd.Class = curcust != null ? (curcust.Any() ? decimal.Parse(curcust[0].Class == "" ? "0" : curcust[0].Class) : 9999) : 9999;
+                workOrd.Class = curcust != null ? (curcust.Any() ? decimal.Parse(string.IsNullOrEmpty(curcust[0].Class)? "0" : curcust[0].Class) : 9999) : 9999;
                 workOrds.Add(workOrd);
 
                 //添加工单工艺路线数据

+ 21 - 0
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/ISqlRepository.cs

@@ -12,8 +12,29 @@ namespace Business.EntityFrameworkCore.SqlRepositories
     {
         int Insert(T entity);
         int Insert(List<T> entitylist);
+        
+        /// <summary>
+        /// 添加实体但不立即保存(用于事务场景)
+        /// </summary>
+        void Add(T entity);
+        
+        /// <summary>
+        /// 批量添加实体但不立即保存(用于事务场景)
+        /// </summary>
+        void AddRange(List<T> entitylist);
+        
         int Update(T entity);
         int Update(List<T> entitylist);
+        
+        /// <summary>
+        /// 更新实体但不立即保存(用于事务场景)
+        /// </summary>
+        void UpdateNoSave(T entity);
+        
+        /// <summary>
+        /// 批量更新实体但不立即保存(用于事务场景)
+        /// </summary>
+        void UpdateRangeNoSave(List<T> entitylist);
 
         int Update(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> entity);
 

+ 32 - 0
MicroServices/Business/Business.EntityFrameworkCore/Repository/SqlRepositories/SqlRepository.cs

@@ -35,6 +35,22 @@ namespace Business.EntityFrameworkCore.SqlRepositories
             return  _dbContext.SaveChanges();
         }
 
+        /// <summary>
+        /// 添加实体但不立即保存(用于事务场景)
+        /// </summary>
+        public void Add(T entity)
+        {
+            _dbContext.Set<T>().Add(entity);
+        }
+
+        /// <summary>
+        /// 批量添加实体但不立即保存(用于事务场景)
+        /// </summary>
+        public void AddRange(List<T> entitylist)
+        {
+            _dbContext.Set<T>().AddRange(entitylist);
+        }
+
         public  int Update(T entity)
         {
             _dbContext.Set<T>().Update(entity);
@@ -46,6 +62,22 @@ namespace Business.EntityFrameworkCore.SqlRepositories
            return  _dbContext.SaveChanges();
         }
 
+        /// <summary>
+        /// 更新实体但不立即保存(用于事务场景)
+        /// </summary>
+        public void UpdateNoSave(T entity)
+        {
+            _dbContext.Set<T>().Update(entity);
+        }
+
+        /// <summary>
+        /// 批量更新实体但不立即保存(用于事务场景)
+        /// </summary>
+        public void UpdateRangeNoSave(List<T> entitylist)
+        {
+            _dbContext.Set<T>().UpdateRange(entitylist);
+        }
+
         public int Update(Expression<Func<T, bool>> whereLambda, Expression<Func<T, T>> entity)
         {
             var items = _dbContext.Set<T>().Where(whereLambda).ToList();

+ 36 - 0
MicroServices/Business/QuartzSettings/logs/logs.txt

@@ -4774,3 +4774,39 @@
 {"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:04:35.6330064+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:04:35.6373596+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
 {"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T15:04:35.6392842+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:33:22.6464993+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:33:22.680027+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:33:22.684009+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:33:22.6858974+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:33:22.6909076+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T15:33:22.6927615+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:37:16.125825+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:37:16.1652864+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:37:16.1714227+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:37:16.1742662+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:37:16.1764193+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T15:37:16.1778141+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:41:10.7384375+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:41:10.7761345+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:41:10.7802585+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:41:10.7824606+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:41:10.7864746+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T15:41:10.7886285+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:43:10.3489214+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:43:10.4004825+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:43:10.4064862+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:43:10.4084765+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T15:43:10.4131809+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T15:43:10.4156993+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:00:19.7982766+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:00:19.8413501+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:00:19.844534+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:00:19.8460899+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:00:19.8514935+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T16:00:19.8529745+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步WMS物料订单等基础数据到MySQL","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:10:01.6242417+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时创建NLog日志按月分表","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:10:01.666588+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"定时同步MySQL基础数据到MongoDB","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:10:01.6694406+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"长周期物料PR","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:10:01.6710969+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"TestTimeOut","GroupName":"systemquartzjob","BeginDate":"2025-12-30T16:10:01.6760978+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}
+{"TaskName":"BOM预处理自动任务","GroupName":"BOM预处理自动任务","BeginDate":"2025-12-30T16:10:01.6783075+08:00","EndDate":null,"Msg":"任务初始化启动成功:6","id":0,"timeflag":null,"changetime":null}