Browse Source

更新版本

master
赵新宇 2 weeks ago
parent
commit
ddfd6b5674
  1. 86
      API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs
  2. 19
      API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs

86
API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs

@ -1,8 +1,4 @@
using System.Data; using Magicodes.ExporterAndImporter.Core.Extension;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using Magicodes.ExporterAndImporter.Core.Extension;
using Magicodes.ExporterAndImporter.Excel; using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
@ -11,11 +7,17 @@ using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Omu.ValueInjecter; using Omu.ValueInjecter;
using System.Data;
using System.Data.Common;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using TaskManager.Contracts.Dtos; using TaskManager.Contracts.Dtos;
using TaskManager.Controllers; using TaskManager.Controllers;
using TaskManager.Entity; using TaskManager.Entity;
using TaskManager.EntityFramework; using TaskManager.EntityFramework;
using TaskManager.EntityFramework.Repository; using TaskManager.EntityFramework.Repository;
@ -31,10 +33,34 @@ namespace TaskManager.Controllers
{ {
_repository = repository; _repository = repository;
} }
protected virtual async Task CreateTaskAsync(List<T> plist,JobDbContext dbContext) protected virtual async Task ConfirmDataInsertAsync(List<T> plist,JobDbContext dbContext, DbTransaction dbTransaction)
{ {
}
private async Task InsertDataAsync(List<T> list)
{
if (list.Any())
{
using (var transaction = await _jobDbContext.Database.BeginTransactionAsync())
{
var tran = transaction.GetDbTransaction();
try
{
_jobDbContext.BulkInsert(list);
await ConfirmDataInsertAsync(list, _jobDbContext, tran);
// 提交事务
await transaction.CommitAsync();
}
catch (Exception ex)
{
await transaction.RollbackAsync();
new JsonResult(new { Code = 400, Message = ex.Message });
}
}
}
} }
[NonAction] [NonAction]
public async Task<List<ToutputDetial>> FetchAllDataAsync(string inputdate) public async Task<List<ToutputDetial>> FetchAllDataAsync(string inputdate)
@ -57,11 +83,11 @@ namespace TaskManager.Controllers
} }
if (firstResponse.Data.Total == "0") if (firstResponse.Data.Total == "0")
{ {
await _logger.AddError("首次请求失败,Total为0是否已经全部读取过。", TaskName); await _logger.AddInfo("首次请求失败,Total为0是否已经全部读取过。", TaskName);
return allData; return allData;
} }
if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等 if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等
{ {
var ids = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID var ids = _jobDbContext.Set<T>().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID
@ -93,8 +119,10 @@ namespace TaskManager.Controllers
} }
} }
_jobDbContext.BulkInsert(pagefirstList); if (pagefirstList.Any())
await CreateTaskAsync(pagefirstList,_jobDbContext); {
await InsertDataAsync(pagefirstList);
}
// 计算总页数 // 计算总页数
@ -110,7 +138,6 @@ namespace TaskManager.Controllers
if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0) if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0)
{ {
List<T> pageList = new List<T>(); List<T> pageList = new List<T>();
if (readedcount > 0) if (readedcount > 0)
{ {
var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id)); var listrows = pageResponse.Data.Rows.Where(p => !ids.Contains(p.Id));
@ -121,12 +148,10 @@ namespace TaskManager.Controllers
entity.CreationTime = DateTime.Now; entity.CreationTime = DateTime.Now;
pageList.Add(entity); pageList.Add(entity);
allData.Add(itm); allData.Add(itm);
} }
} }
else else
{ {
foreach (var itm in pageResponse.Data.Rows) foreach (var itm in pageResponse.Data.Rows)
{ {
T entity = new T(); T entity = new T();
@ -136,25 +161,22 @@ namespace TaskManager.Controllers
allData.Add(itm); allData.Add(itm);
} }
} }
if (pageList.Any())
_jobDbContext.BulkInsert(pageList); {
await CreateTaskAsync(pageList, _jobDbContext); await InsertDataAsync(pageList);
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName); }
} }
else else
{ {
await _logger.AddError($"第 {currentPage} 页未返回数据", TaskName); await _logger.AddInfo($"第 {currentPage} 页未返回数据", TaskName);
} }
// 简单的请求间隔,避免过于频繁 // 简单的请求间隔,避免过于频繁
await Task.Delay(200); await Task.Delay(200);
} }
await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName); await _logger.AddInfo($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName);
} }
} }
else else
{ {
@ -191,7 +213,6 @@ namespace TaskManager.Controllers
} }
else else
{ {
foreach (var itm in firstResponse.Data.Rows) foreach (var itm in firstResponse.Data.Rows)
{ {
T entity = new T(); T entity = new T();
@ -201,8 +222,10 @@ namespace TaskManager.Controllers
allData.Add(itm); allData.Add(itm);
} }
} }
_jobDbContext.BulkInsert(pagefirstList); if (pagefirstList.Any())
await CreateTaskAsync(pagefirstList, _jobDbContext); {
await InsertDataAsync(pagefirstList);
}
//Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}"); //Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}");
// 计算总页数 // 计算总页数
int totalPages = (int)Math.Ceiling((double)totalItems / pageSize); int totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
@ -231,7 +254,6 @@ namespace TaskManager.Controllers
} }
else else
{ {
foreach (var itm in pageResponse.Data.Rows) foreach (var itm in pageResponse.Data.Rows)
{ {
T entity = new T(); T entity = new T();
@ -241,9 +263,12 @@ namespace TaskManager.Controllers
allData.Add(itm); allData.Add(itm);
} }
} }
_jobDbContext.BulkInsert(pageList); if (pageList.Any())
await CreateTaskAsync(pageList, _jobDbContext); {
await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName); await InsertDataAsync(pageList);
}
//await _logger.AddInfo($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName);
} }
else else
{ {
@ -256,11 +281,8 @@ namespace TaskManager.Controllers
} }
} }
// 首次请求获取总条数和分页信息 // 首次请求获取总条数和分页信息
return allData; return allData;
} }

19
API/Wood.Service/Controllers/CherySupplierMrpMonthService.cs

@ -1,4 +1,5 @@
using Magicodes.ExporterAndImporter.Core; using Magicodes.ExporterAndImporter.Core;
using System.Data.Common;
using TaskManager.Contracts.Dtos; using TaskManager.Contracts.Dtos;
using TaskManager.Controllers; using TaskManager.Controllers;
using TaskManager.Entity; using TaskManager.Entity;
@ -18,11 +19,10 @@ namespace TaskManager.Controllers
public CherySupplierMrpMonthService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository<SUPPLIER_MRP_MONTH> repository) : base(httpClient, jobDbContext, log, repository) public CherySupplierMrpMonthService(HttpClient httpClient, JobDbContext jobDbContext, LogController log, IRepository<SUPPLIER_MRP_MONTH> repository) : base(httpClient, jobDbContext, log, repository)
{ {
} }
protected override async Task CreateTaskAsync(List<SUPPLIER_MRP_MONTH> plist, JobDbContext dbContext) protected override async Task ConfirmDataInsertAsync(List<SUPPLIER_MRP_MONTH> plist, JobDbContext dbContext, DbTransaction dbTransaction)
{ {
if (plist.Count > 0) if (plist.Count > 0)
{ {
List<SUPPLIER_CON_MMRP> list = new List<SUPPLIER_CON_MMRP>(); List<SUPPLIER_CON_MMRP> list = new List<SUPPLIER_CON_MMRP>();
@ -52,17 +52,12 @@ namespace TaskManager.Controllers
con.QuantityMeet12 = p.QuantityDemand12; con.QuantityMeet12 = p.QuantityDemand12;
list.Add(con); list.Add(con);
}); });
dbContext.BulkInsert(list, new BulkOperationOptions<SUPPLIER_CON_MMRP>() { UseTableLock = false });
}
await dbContext.BulkInsertAsync(list, options=> { options.Transaction = dbTransaction; options.UseTableLock = false; });
}
return; return;
} }
} }
} }

Loading…
Cancel
Save