From 194b309bb1f82a98f6b10037d6112093f6da3d71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Fri, 13 Jun 2025 14:51:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A1=AE=E8=AE=A4=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ryRecurringJobInputPageExtendController.cs | 149 ++++++++---------- .../CherySupplierConDateService.cs | 11 +- .../CherySupplierConMmrpService.cs | 8 +- .../Controllers/CherySupplierConPoService.cs | 7 +- 4 files changed, 73 insertions(+), 102 deletions(-) diff --git a/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs b/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs index 69ae836..b2d0f2d 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs @@ -7,6 +7,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; using Microsoft.Extensions.DependencyInjection; using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup; @@ -150,10 +151,12 @@ namespace TaskManager.Controllers private async Task SyncTaskSubTable(string taskName, string client) { - - var task= _jobDbContext.TaskConifgure.FirstOrDefault(p => p.TaskName == taskName); - + if (task == null) + { + await _logger.AddError("任务配置不存在,任务设置表(TaskConfigure)是否存在任务对应的表!", taskName, Guid.NewGuid(), DateTime.Now.ToString("yyyyMMdd")); + return; + } var tableName = task.TableName; var total =await _jobDbContext.Database.ExecuteSqlAsync($"select count(1) from {tableName} where writeState=0 and readState=1 "); var pageSize = CPageSize; @@ -162,93 +165,73 @@ namespace TaskManager.Controllers for (int i= 1; i <= totalPages; i++) { - _jobDbContext.Database.SqlQuery($"Select TOP 1000 * from {tableName} where writeState=0 and readerstate=1 order by uid"); - - - + var records = _jobDbContext.Database.SqlQuery($"Select TOP {pageSize} * from {tableName} where writeState=0 and readerstate=1 order by uid"); + var taskId = Guid.NewGuid(); + List dtos = new List(); + foreach (var itm in records) + { + TDTO dto = new TDTO(); + dto.InjectFrom(itm); + dtos.Add(dto); + } + PagedRequest pagedRequest = new PagedRequest() + { + batchNo = GenerateRandomStringWith8EG(), + total = pageSize, + pageSize = pageSize, + list = dtos, + pageNum = i + }; + foreach (var itm in records) + { + itm.WriteState = true; + } + var result = await PostPageAsync(pagedRequest,taskId, DateTime.Now.ToString("yyyyMMdd")); + if (result.code == 200) + { + + using (var transaction = await _jobDbContext.Database.BeginTransactionAsync()) + { + var tran = transaction.GetDbTransaction(); + await _jobDbContext.BulkUpdateAsync(records, options => { options.UseTableLock = false; }); + try + { + var createtask = new TaskSub(); + createtask.TaskId = taskId; + createtask.TaskName =TaskName; + createtask.Subscriber = Client; + createtask.TableName = tableName; + createtask.DataCount = pageSize; + createtask.Domain = "1"; + createtask.Site = "1"; + createtask.FailedCount = 0; + createtask.CreateTime = DateTime.Now; + createtask.CreateUser = "admin"; + createtask.CreationTime = DateTime.Now; + createtask.SyncedPageCount = pageSize; + await _jobDbContext.AddAsync(task); + // 提交事务 + await transaction.CommitAsync(); + } + catch (Exception ex) + { + await transaction.RollbackAsync(); + + } + } + } + else + { + await _logger.AddError($"第 {i} 页数据保存失败,请检查数据。", TaskName,taskId, DateTime.Now.ToString("yyyyMMdd")); + } + await Task.Delay(200); } - - - - - //if (string.IsNullOrEmpty(taskName) || string.IsNullOrEmpty(client)) - //{ - // await _logger.AddError("任务名称或客户端不能为空",taskName,Guid.NewGuid(),DateTime.Now.ToString("yyyyMMdd")); - // return; - //} - //var sublist = _jobDbContext.TaskSub.Where(p => taskName.Contains(p.TaskName) && p.WriteState == false && p.Subscriber == client ).ToList(); - //int pageSize = CPageSize; - //if (sublist.Any()) - //{ - // foreach (var sub in sublist) - // { - - // string querystr = $"select * from {sub.TableName} where TaskId='{sub.TaskId}' and WriteState=0 and ReadState=1 order by uid";//任务表 - - // var entites = _jobDbContext.Database.GetDbConnection().Query(querystr);//明细表 - // if (entites.Any()) - // { - // var total = entites.Count(); - // sub.DataCount = total; - // int totalPages = (int)Math.Ceiling((double)total / pageSize); - - // for (int i = sub.SyncedPageCount; i <= totalPages; i++) - // { - - // var records = entites.Skip((i - 1) * pageSize) - // .Take(pageSize).ToList(); - // #region dto转换作为参数发给客户API 因为实体比DTO字段多 - // List dtos = new List(); - // foreach (var itm in records) - // { - // TDTO dto = new TDTO(); - // dto.InjectFrom(itm); - // dtos.Add(dto); - // } - // PagedRequest pagedRequest = new PagedRequest() - // { - // batchNo = GenerateRandomStringWith8EG(), - // total = entites.Count(), - // pageSize = pageSize, - // list = dtos, - // pageNum = i - // }; - // #endregion - // foreach (var itm in records) - // { - // itm.WriteState = true; - // } - // var result = await PostPageAsync(pagedRequest,sub.TaskId, DateTime.Now.ToString("yyyyMMdd")); - // if(result.code == 200) - // { - // _jobDbContext.BulkUpdate(records); - // sub.SyncedPageCount = i; - // if (i == totalPages) - // { - // sub.WriteState = true; - // _jobDbContext.Set().Update(sub); - // _jobDbContext.SaveChanges(); - // } - // } - // else - // { - // sub.FailedCount = i*pageSize; - // sub.FailedInfo = $"第 {i} 页奇瑞数据保存失败 {result.message}。"; - - // await _logger.AddError($"第 {i} 页奇瑞数据保存失败 {result.message}。", TaskName,sub.TaskId, DateTime.Now.ToString("yyyyMMdd")); - // } - // } - - // } - - // } - //} } diff --git a/API/Wood.Service/Controllers/CherySupplierConDateService.cs b/API/Wood.Service/Controllers/CherySupplierConDateService.cs index 89c3e23..e826eec 100644 --- a/API/Wood.Service/Controllers/CherySupplierConDateService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConDateService.cs @@ -44,7 +44,7 @@ namespace TaskManager.Controllers var taskId = Guid.NewGuid(); var task = new TaskSub(); task.TaskId = taskId; - task.TaskName = "采购订单风险确认"; + task.TaskName = "日物料需求计划风险确认"; task.Subscriber = Client; task.TableName = "SUPPLIER_CON_DATE"; task.DataCount = entites.Count; @@ -54,15 +54,11 @@ namespace TaskManager.Controllers task.CreateTime = DateTime.Now; task.CreateUser = "admin"; task.CreationTime = DateTime.Now; - task.SyncedPageCount = 0; - entites.ForEach(p => { p.ReadState = true; p.TaskId = taskId; - - }); using (var transaction = await _jobDbContext.Database.BeginTransactionAsync()) @@ -96,10 +92,7 @@ namespace TaskManager.Controllers [HttpPost] public async Task BatchUpdate([FromBody] List entites) { - foreach (var item in entites) - { - await Update(item); - } + await _jobDbContext.BulkUpdateAsync(entites, options => { options.ColumnPrimaryKeyExpression = p => p.UId; options.UseTableLock = false; }); return new JsonResult(new { Code = 200, Message = "批量修改成功!" }); diff --git a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs index 3fdd697..ad930a6 100644 --- a/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConMmrpService.cs @@ -46,7 +46,7 @@ namespace TaskManager.Controllers var taskId = Guid.NewGuid(); var task = new TaskSub(); task.TaskId = taskId; - task.TaskName = ""; + task.TaskName = "M+6月物料需求计划风险确认"; task.Subscriber = Client; task.TableName = "SUPPLIER_CON_MMRP"; task.DataCount = entites.Count; @@ -98,10 +98,8 @@ namespace TaskManager.Controllers [HttpPost] public async Task BatchUpdate([FromBody] List entites) { - foreach (var item in entites) - { - await Update(item); - } + + await _jobDbContext.BulkUpdateAsync(entites, options => { options.ColumnPrimaryKeyExpression = p => p.UId; options.UseTableLock = false; }); return new JsonResult(new { Code = 200, Message = "批量修改成功!" }); diff --git a/API/Wood.Service/Controllers/CherySupplierConPoService.cs b/API/Wood.Service/Controllers/CherySupplierConPoService.cs index 9633ec3..9689afd 100644 --- a/API/Wood.Service/Controllers/CherySupplierConPoService.cs +++ b/API/Wood.Service/Controllers/CherySupplierConPoService.cs @@ -45,7 +45,7 @@ namespace TaskManager.Controllers var taskId = Guid.NewGuid(); var task = new TaskSub(); task.TaskId = taskId; - task.TaskName = TaskName; + task.TaskName = "采购订单风险确认"; task.Subscriber = Client; task.TableName = "SUPPLIER_CON_PO"; task.DataCount = entites.Count; @@ -92,10 +92,7 @@ namespace TaskManager.Controllers [HttpPost] public async Task BatchUpdate([FromBody] List entites) { - foreach (var item in entites) - { - await Update(item); - } + await _jobDbContext.BulkUpdateAsync(entites, options => { options.ColumnPrimaryKeyExpression = p => p.UId; options.UseTableLock = false; }); return new JsonResult(new { Code = 200, Message = "批量修改成功!" });