diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs index 96a61bc2..679f1523 100644 --- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs +++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs @@ -4,11 +4,11 @@ using System.Data.SqlClient; using System.Diagnostics; using System.Linq; using System.Linq.Dynamic.Core; -using System.Linq.Expressions; using System.Text.Json; using System.Threading; using System.Threading.Tasks; using EFCore.BulkExtensions; +using LinqToDB; using LinqToDB.EntityFrameworkCore; using Magicodes.ExporterAndImporter.Core.Extension; using Microsoft.AspNetCore.Mvc; @@ -56,7 +56,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ return (DateTime.Now - now).TotalMinutes; } - [NonAction] public async Task Invoke(IServiceProvider serviceProvider) { @@ -78,6 +77,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var connectionString = serviceProvider.GetRequiredService().GetConnectionString("SettleAccountService"); for (var i = 0; i < 1000; i++) { + //1:新建 2:更新 var balanceList = new List>(); var vmiReplenishedList = new List(); var sw = new Stopwatch(); @@ -95,7 +95,13 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var vmiMessageRepo = context.Set(); var vmiLogRepo = context.Set(); var vmiBalanceRepo = context.Set(); - var vmiReplenishedRepo = context.Set(); + //sw.Stop(); + //this._logger.LogInformation($"缓存开始:{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000} 秒,{sw.ElapsedMilliseconds} 豪秒"); + //sw.Restart(); + //var balanceCachedList = vmiBalanceRepo.AsNoTracking().ToList(); + //sw.Stop(); + //this._logger.LogInformation($"缓存结束:{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000} 秒,{sw.ElapsedMilliseconds} 豪秒"); + //sw.Restart(); //读取可消费消息列表 var messages = vmiMessageRepo.AsNoTracking().Where(o => !o.isConsumed).OrderBy(o => o.Number).Take(batchSize).ToList(); //没有可消费消息则返回 @@ -132,6 +138,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ command.ExecuteNonQuery(); } } + //sw.Stop(); + //this._logger.LogInformation($"计时:{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000} 秒,{sw.ElapsedMilliseconds} 豪秒"); + //sw.Restart(); foreach (var item in list) { var message = item.VmiMessage; @@ -147,11 +156,16 @@ namespace Win.Sfs.SettleAccount.Entities.BQ o.OrderNum == log.OrderNum && o.factory == log.factory && o.Configcode == log.Configcode); - + //sw.Stop(); + ////this._logger.LogInformation($"计时:{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000} 秒,{sw.ElapsedMilliseconds} 豪秒"); + //sw.Restart(); //数据库查找 if (balance == null) { - balance = vmiBalanceRepo.AsNoTracking().FirstOrDefault( + //sw.Stop(); + ////this._logger.LogInformation($"查询开始:{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000} 秒,{sw.ElapsedMilliseconds} 豪秒"); + //sw.Restart(); + balance = vmiBalanceRepo.AsNoTracking().FirstOrDefault(// balanceCachedList.Find( o => o.DeliverBillType == log.DeliverBillType && o.CodeType == log.CodeType && o.RealPartCode == log.RealPartCode && @@ -160,6 +174,9 @@ namespace Win.Sfs.SettleAccount.Entities.BQ o.OrderNum == log.OrderNum && o.factory == log.factory && o.Configcode == log.Configcode); + //sw.Stop(); + //this._logger.LogInformation($"查询结束:{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000} 秒,{sw.ElapsedMilliseconds} 豪秒"); + //sw.Restart(); } if (balance == null) {//不存在库存记录 @@ -227,14 +244,14 @@ namespace Win.Sfs.SettleAccount.Entities.BQ } // 更新库存 balance.Qty = currentQty + log.ChangedQty; - if (balance.Qty == decimal.Zero) - { - //删除0库存 - vmiBalanceRepo.Remove(balance); - } } + //sw.Stop(); + ////this._logger.LogInformation($"准备1:{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000 / 60}分钟,{sw.ElapsedMilliseconds / 1000}秒"); + //sw.Restart(); } - + //sw.Stop(); + //this._logger.LogInformation($"准备{fetchSize}条,耗时 {sw.ElapsedMilliseconds / 1000 / 60}分钟,{sw.ElapsedMilliseconds / 1000}秒"); + //sw.Restart(); //更新事务分表 foreach (var item in tables) {