using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using JNPF.Common.Core.Manager; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Systems.Interfaces.System; using JNPF.VisualDev; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Interfaces; using SqlSugar; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; using JNPF.Common.Extension; using JNPF.VisualDev.Entitys; using Aspose.Cells.Drawing; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using JNPF.Logging; using JNPF.FriendlyException; using JNPF.Common.Security; using Tnb.BasicData.Entities; using Mapster; using Aop.Api.Domain; namespace Tnb.WarehouseMgr { /// /// 载具台账服务 /// [OverideVisualDev(ModuleConsts.MODULE_WMSCARRY_ID)] public class WmsCarryLedgerService : ExcelDataImportManager, IWmsCarryLedgerService { private const string ModuleId = ""; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly IUserManager _userManager; public WmsCarryLedgerService(ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService,IUserManager userManager) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; _userManager = userManager; OverideFuncs.ImportAsync = DataImport; } /// /// 载具导入 /// /// /// private async Task DataImport(IFormFile file) { int row = 0; try { //例1 获取所有表 List> dics = await ImportExcelToMemory(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) { string carryStdId = string.Empty; foreach (var d in dics) { var stdCodeKey = d["carrystd_id"].ToString(); carryStdId = carryStdDic.ContainsKey(stdCodeKey) ? carryStdDic[stdCodeKey]?.ToString() ?? "" : ""; d["carrystd_id"] = carryStdId; locCodes.Add(d["location_code"]?.ToString() ?? string.Empty); carryH = d.Adapt(); carrys.Add(carryH); } if (!locCodes.IsNullOrEmpty()) { 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.org_id = _userManager.User.OrganizeId; x.status = 1; x.is_lock = 0; x.carry_status = ((int)EnumCarryStatus.空闲).ToString(); x.out_status = ((int)EnumOutStatus.正常).ToString(); x.is_check = 1; x.create_id = _userManager.UserId; x.create_time = DateTime.Now; x.modify_id = null; x.modify_time = null; }); } await _db.Ado.BeginTranAsync(); row = await _db.Insertable(carrys).ExecuteCommandAsync(); await _db.Ado.CommitTranAsync(); } catch (Exception ex) { await _db.Ado.RollbackTranAsync(); Log.Error("导入失败", ex); throw Oops.Bah("导入失败"); } return row > 0; } } }