diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs
index 5c1dc756..b1013e0b 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs
@@ -165,11 +165,29 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
///
///
[HttpPost]
- public async Task> Balance(RequestDto input)
+ public async Task> Balance(RequestDto input)
{
- var entities = await _balanceRepository.GetListByFilterAsync(input.Filters, input.Sorting, input.MaxResultCount, input.SkipCount, true).ConfigureAwait(false);
- var totalCount = await _balanceRepository.GetCountByFilterAsync(input.Filters).ConfigureAwait(false);
- return new PagedResultDto(totalCount, entities);
+
+ var connectionString = this._serviceProvider.GetRequiredService().GetConnectionString("SettleAccountService");
+ var options = new DbContextOptionsBuilder().UseSqlServer(connectionString).Options;
+ using var db = new SettleAccountDbContext(options);
+ var query = db.Set().FromSqlRaw("select * from Set_VmiLog");
+ var filters = input.Filters.ToLambda();
+ if (input.Filters.Count > 0)
+ {
+ query = query.Where(input.Filters.ToLambda());
+ }
+
+ query = string.IsNullOrEmpty(input.Sorting) ? query : DynamicQueryableExtensions.OrderBy(query, input.Sorting);
+ var query2 = query.GroupBy(o => new { o.ErpToLoc, o.RealPartCode, o.VinCode }).Select(o => new VmiBalanceDto { VinCode = o.Key.VinCode, ErpToLoc = o.Key.ErpToLoc, RealPartCode = o.Key.RealPartCode, Qty = o.Sum(o => o.ChangedQty), LastTime = o.Max(o => o.ChangedTime) }).Where(p => p.Qty != 0);
+ var totalCount = query2.Count();
+ //query = string.IsNullOrEmpty(input.Sorting) ? query : DynamicQueryableExtensions.OrderBy(query, input.Sorting);
+ //var query2 = query.GroupBy(o => new { o.ErpToLoc, o.RealPartCode,o.VinCode }).Select(o => new VmiBalanceDto { VinCode = o.Key.VinCode, ErpToLoc = o.Key.ErpToLoc, RealPartCode = o.Key.RealPartCode, Qty = o.Sum(o => o.Qty),LastTime=o.Max(o=>o.ChangedTime) });
+ //var totalCount = query2.Count();
+ var entities = await query2.PageBy(input.SkipCount, input.MaxResultCount).ToListAsync().ConfigureAwait(false);
+ //var entities = await _balanceRepository.GetListByFilterAsync(input.Filters, input.Sorting, input.MaxResultCount, input.SkipCount, true).ConfigureAwait(false);
+ //var totalCount = await _balanceRepository.GetCountByFilterAsync(input.Filters).ConfigureAwait(false);
+ return new PagedResultDto(totalCount, entities);
}
///
@@ -178,7 +196,20 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
[HttpPost]
public async Task BalanceExport(RequestDto input)
{
- var entities = await _balanceRepository.GetListByFilterAsync(input.Filters).ConfigureAwait(false);
+ var connectionString = this._serviceProvider.GetRequiredService().GetConnectionString("SettleAccountService");
+ var options = new DbContextOptionsBuilder().UseSqlServer(connectionString).Options;
+ using var db = new SettleAccountDbContext(options);
+ var query = db.Set().FromSqlRaw("select VinCode,ErpToLoc,RealPartCode,ChangedQty ,ChangedTime from Set_VmiLog");
+ var filters = input.Filters.ToLambda();
+ if (input.Filters.Count > 0)
+ {
+ query = query.Where(input.Filters.ToLambda());
+ }
+ query = string.IsNullOrEmpty(input.Sorting) ? query : DynamicQueryableExtensions.OrderBy(query, input.Sorting);
+ var query2 = query.GroupBy(o => new { o.ErpToLoc, o.RealPartCode, o.VinCode }).Select(o => new VmiBalanceDto { VinCode = o.Key.VinCode, ErpToLoc = o.Key.ErpToLoc, RealPartCode = o.Key.RealPartCode, Qty = o.Sum(o => o.ChangedQty), LastTime = o.Max(o => o.ChangedTime) }).Where(p=>p.Qty!=0);
+ var entities = query2.ToList();
+
+ // var entities = await _balanceRepository.GetListByFilterAsync(input.Filters).ConfigureAwait(false);
var fileName = $"库存余额_{DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss")}.xlsx";
var content = this.GetContent(entities, "库存余额");
await _fileContainer.SaveAsync(fileName, content, true).ConfigureAwait(false);
@@ -194,6 +225,10 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
public async Task> BalanceSum(RequestDto input)
{
+
+
+
+
var connectionString = this._serviceProvider.GetRequiredService().GetConnectionString("SettleAccountService");
var options = new DbContextOptionsBuilder().UseSqlServer(connectionString).Options;
using var db = new SettleAccountDbContext(options);
@@ -229,9 +264,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
[HttpPost]
public async Task BalanceSumExport(RequestDto input)
{
-
-
-
var connectionString = this._serviceProvider.GetRequiredService().GetConnectionString("SettleAccountService");
var options = new DbContextOptionsBuilder().UseSqlServer(connectionString).Options;
using var db = new SettleAccountDbContext(options);
@@ -250,16 +282,6 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
return fileName;
-
-
-
-
-
-
-
-
-
-
//var connectionString = this._serviceProvider.GetRequiredService().GetConnectionString("SettleAccountService");
//var options = new DbContextOptionsBuilder().UseSqlServer(connectionString).Options;
//using var db = new SettleAccountDbContext(options);
@@ -1129,6 +1151,26 @@ namespace Win.Sfs.SettleAccount.Entities.BQ
[Display(Name = "数量", Order = 10)]
public decimal Qty { get; set; }
}
+ public class VmiBalanceDto
+ {
+ [Display(Name = "生产码", Order = 1)]
+ public string VinCode { get; set; }
+
+ [Display(Name = "ERP库位", Order = 2)]
+ public string ErpToLoc { get; set; }
+
+ [Display(Name = "厂内零件号", Order = 3)]
+ public string RealPartCode { get; set; }//原始
+
+ [Display(Name = "数量", Order = 4)]
+ public decimal Qty { get; set; }
+
+ [Display(Name = "最后更新时间", Order = 5)]
+ public DateTime? LastTime { get; set; }
+
+ }
+
+