From 1e108645ef290a05b400c26b8a76d6a82476d9c3 Mon Sep 17 00:00:00 2001 From: FanLian Date: Mon, 7 Aug 2023 15:13:24 +0800 Subject: [PATCH] 1 --- .../WmsImportAndExportService.cs | 58 ++++++++++++++----- 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsImportAndExportService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsImportAndExportService.cs index 7dcdc78c..d0858efa 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsImportAndExportService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsImportAndExportService.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using JNPF.Common.Configuration; +using JNPF.Common.Core.Manager; using JNPF.Common.Extension; using JNPF.Common.Helper; using JNPF.Common.Models; @@ -26,9 +27,11 @@ namespace Tnb.WarehouseMgr public class WmsImportAndExportService { private readonly ISqlSugarClient _db; - public WmsImportAndExportService(ISqlSugarRepository repository) + private readonly IUserManager _userManager; + public WmsImportAndExportService(ISqlSugarRepository repository, IUserManager userManager) { _db = repository.AsSugarClient(); + _userManager = userManager; } @@ -39,25 +42,48 @@ namespace Tnb.WarehouseMgr /// public async Task CarryImport(IFormFile file) { - List> dics = WmsImport(file); - List carrys = new List(); - var carryStds = await _db.Queryable().ToListAsync(); - List locCodes = new(); - WmsCarryH carryH = new WmsCarryH(); - if (carryStds != null) + int row = 0; + try { - string carryStdId = string.Empty; - foreach (var d in dics) + List> dics = WmsImport(file); + List carrys = new List(); + var carryStdDic = await _db.Queryable().ToDictionaryAsync(x => x.carrystd_code, x => x.id); + List locCodes = new(); + WmsCarryH carryH = new WmsCarryH(); + if (carryStdDic?.Count > 0) { - carryStdId = carryStds.Find(x => x.carrystd_code == d["carrystd_code"])!.id; - d.Remove("carrystd_code"); - d.Add("carrystd_id", carryStdId); - locCodes.Add(d["location_code"]); - carryH = d.Adapt(); + string carryStdId = string.Empty; + foreach (var d in dics) + { + var stdCodeKey = d["carrystd_code"]; + carryStdId = carryStdDic.ContainsKey(stdCodeKey) ? carryStdDic[stdCodeKey]?.ToString() ?? "" : ""; + d.Add("carrystd_id", carryStdId); + locCodes.Add(d["location_code"]); + carryH = d.Adapt(); + carrys.Add(carryH); + } + var locs = await _db.Queryable().Where(it => locCodes.Contains(it.location_code)).ToDictionaryAsync(x => x.location_code, x => x.id); + foreach (var loc in locCodes) + { + var c = carrys.Find(x => x.location_code == loc); + if (c != null) + c.location_id = locs[loc].ToString(); + } + carrys.ForEach(x => + { + x.id = SnowflakeIdHelper.NextId(); + x.create_id = _userManager.UserId; + x.create_time = DateTime.Now; + }); } - var locs = await _db.Queryable().Where(it=>locCodes.Contains(it.location_code)).ToListAsync(); + row = await _db.Storageable(carrys).ExecuteCommandAsync(); } - return Task.FromResult(0); + catch (Exception) + { + return false; + throw; + } + return row>0; } ///