diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/_options.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/_options.js index 1720a60f..00d0d30c 100644 --- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/_options.js +++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/_options.js @@ -172,6 +172,7 @@ const invState = { { value: 7, label: "撤销扣减进行中" }, { value: 8, label: "已提交QAD" }, { value: 9, label: "红冲" }, + { value: 10, label: "生成发票中" }, ], }; 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 1184b5c5..753166e7 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 @@ -76,6 +76,7 @@ namespace Win.Sfs.SettleAccount.Entities.BQ var batchSize = 10000; var fetchSize = 0; var connectionString = serviceProvider.GetRequiredService().GetConnectionString("SettleAccountService"); + Dictionary balanceCachedList = null; for (var i = 0; i < 1000; i++) { //1:新建 2:更新 @@ -105,13 +106,15 @@ namespace Win.Sfs.SettleAccount.Entities.BQ break; } //缓存余额表 - sw.Stop(); - sw.Restart(); - var balanceCachedList = vmiBalanceRepo.AsNoTracking() - .ToDictionary(o => $"{o.DeliverBillType}.{o.CodeType}.{o.RealPartCode}.{o.VinCode}.{o.ErpToLoc}.{o.OrderNum}.{o.factory}.{o.Configcode}"); - sw.Stop(); - this._logger.LogInformation($"缓存结束:{balanceCachedList.Count}条,耗时 {sw.ElapsedMilliseconds / 1000} 秒,{sw.ElapsedMilliseconds} 豪秒"); - sw.Restart(); + var sw2 = new Stopwatch(); + sw2.Start(); + Func keySelector = o => $"{o.DeliverBillType}.{o.CodeType}.{o.RealPartCode}.{o.VinCode}.{o.ErpToLoc}.{o.OrderNum}.{o.factory}.{o.Configcode}"; + //if (balanceCachedList == null) + //{ + balanceCachedList = vmiBalanceRepo.AsNoTracking().ToDictionary(keySelector); + //} + sw2.Stop(); + this._logger.LogInformation($"缓存结束:{balanceCachedList.Count}条,耗时 {sw2.ElapsedMilliseconds / 1000} 秒,{sw2.ElapsedMilliseconds} 豪秒"); //设置数量为实际返回数量 fetchSize = messages.Count; //反序列化获取库存事务 @@ -250,14 +253,24 @@ namespace Win.Sfs.SettleAccount.Entities.BQ //批量插入负库存补货记录 await context.BulkInsertAsync(vmiReplenishedList).ConfigureAwait(false); //批量插入库存余额 - await context.BulkInsertAsync(balanceList.Where(o => o.Item2 == 1 && o.Item1.Qty != decimal.Zero).Select(o => o.Item1).ToList()).ConfigureAwait(false); + var addList = balanceList.Where(o => o.Item2 == 1 && o.Item1.Qty != decimal.Zero).Select(o => o.Item1).ToList(); + await context.BulkInsertAsync(addList).ConfigureAwait(false); //批量更新库存余额 - await context.BulkUpdateAsync(balanceList.Where(o => o.Item2 == 2 && o.Item1.Qty != decimal.Zero).Select(o => o.Item1).ToList()).ConfigureAwait(false); + var editList = balanceList.Where(o => o.Item2 == 2 && o.Item1.Qty != decimal.Zero).Select(o => o.Item1).ToList(); + await context.BulkUpdateAsync(editList).ConfigureAwait(false); //批量删除库存余额 - await context.BulkDeleteAsync(balanceList.Where(o => o.Item2 == 2 && o.Item1.Qty == decimal.Zero).Select(o => o.Item1).ToList()).ConfigureAwait(false); + var removeList = balanceList.Where(o => o.Item2 == 2 && o.Item1.Qty == decimal.Zero).Select(o => o.Item1).ToList(); + await context.BulkDeleteAsync(removeList).ConfigureAwait(false); //批量删除消息 await context.BulkDeleteAsync(messages).ConfigureAwait(false); transaction.Commit(); + ////更新余额缓存 + //var sw3 = new Stopwatch(); + //sw3.Start(); + //addList.ForEach(o => balanceCachedList.Add(keySelector(o), o)); + //removeList.ForEach(o => balanceCachedList.Remove(keySelector(o))); + //sw3.Stop(); + //this._logger.LogInformation($"更新缓存:{balanceList.Count}条,耗时 {sw3.ElapsedMilliseconds / 1000} 秒,{sw3.ElapsedMilliseconds} 豪秒"); } catch (Exception ex) {