From 8fdbebb12751e3c42f7ee57c08a8a1c51133c465 Mon Sep 17 00:00:00 2001 From: FanLian Date: Thu, 10 Aug 2023 09:28:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9C=89=E8=AF=AF=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/ModuleConsts.cs | 4 + .../LocationDefinitionService.cs | 61 +++++++-------- .../Tnb.WarehouseMgr/WmsCarryLedgerService.cs | 61 +++++++-------- .../Tnb.WarehouseMgr/WmsPointService.cs | 75 +++++++++++++++++++ .../Tnb.WarehouseMgr/WmsRouteMgrService.cs | 39 +++++----- 5 files changed, 159 insertions(+), 81 deletions(-) create mode 100644 WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs index 90acb4f7..544ea289 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/ModuleConsts.cs @@ -176,5 +176,9 @@ public class ModuleConsts /// 模块标识-路段管理 /// public const string MODULE_WMSROAD_ID = "26100621140773"; + /// + /// 模块标识-点位管理 + /// + public const string MODULE_WMSPOINT_ID = "26099196480805"; } \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs index ab6a1016..7a262b68 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs @@ -16,11 +16,13 @@ using Tnb.WarehouseMgr.Entities; using JNPF.Common.Extension; using JNPF.Logging; using System.Reflection.Emit; +using JNPF.VisualDev.Entitys.Dto.VisualDev; +using NPOI.SS.Formula.Functions; namespace Tnb.WarehouseMgr { [OverideVisualDev(ModuleConsts.MODULE_LOCATIONDEFINITION_ID)] - public class LocationDefinitionService : ExcelDataImportManager + public class LocationDefinitionService : BaseWareHouseService { private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; @@ -28,51 +30,50 @@ namespace Tnb.WarehouseMgr { _db = repository.AsSugarClient(); _userManager = userManager; - OverideFuncs.ImportAsync = DataImport; + OverideFuncs.ImportDataAsync = DataImport; } - private async Task DataImport(IFormFile file) + private async Task DataImport(VisualDevImportDataInput input) { int row = 0; try { - List> dics = await ImportExcelToMemory(file); + List> dics = input.list; List locs = new List(); BasLocation loc = new BasLocation(); - var carryStdDic = await _db.Queryable().ToDictionaryAsync(x => x.carrystd_code, x => x.id); + List cCodes = new List(); + foreach (var d in dics) + { + var cCode = d["carrystd_id"].ToString() ?? string.Empty; + if (cCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}行载具规格不可为空", 500); + cCodes.Add(cCode); + d["create_time"] = DateTime.Now; + d.Remove("modify_time"); + loc = d.Adapt(); + locs.Add(loc); + } + var carryStdDic = await _db.Queryable().Where(it => cCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); if (carryStdDic?.Count > 0) { - string carryStdId = string.Empty; - foreach (var d in dics) + locs.ForEach(x => { - var stdCodeKey = d["carrystd_id"].ToString(); - carryStdId = carryStdDic.ContainsKey(stdCodeKey) ? carryStdDic[stdCodeKey]?.ToString() ?? "" : ""; - d["carrystd_id"] = carryStdId; - loc = d.Adapt(); - locs.Add(loc); - } + if (!carryStdDic.Keys.Contains(x.carrystd_id)) throw new AppFriendlyException($"第{locs.IndexOf(x) + 1}行的载具规格有误", 500); + x.id = SnowflakeIdHelper.NextId(); + x.org_id = _userManager.User.OrganizeId; + x.is_lock = 0; + x.carrystd_id = carryStdDic[x.carrystd_id].ToString() ?? throw new AppFriendlyException($"第{locs.IndexOf(x) + 1}行的载具规格有误", 500); + x.create_id = _userManager.UserId; + x.create_time = DateTime.Now; + x.modify_id = null; + x.modify_time = null; + x.is_mix = 1; + }); } - locs.ForEach(x => - { - x.id = SnowflakeIdHelper.NextId(); - x.org_id = _userManager.User.OrganizeId; - x.is_lock = 0; - x.create_id = _userManager.UserId; - x.create_time = DateTime.Now; - x.modify_id = null; - x.modify_time = null; - x.is_mix = 1; - }); - - await _db.Ado.BeginTranAsync(); row = await _db.Insertable(locs).ExecuteCommandAsync(); - await _db.Ado.CommitTranAsync(); } catch (Exception ex) { - await _db.Ado.RollbackTranAsync(); - Log.Error("导入失败", ex); - throw Oops.Bah("导入失败"); + throw Oops.Bah(ex.Message); } return row > 0; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs index 3fc960e2..e02e1b26 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs @@ -25,6 +25,7 @@ using JNPF.Common.Security; using Tnb.BasicData.Entities; using Mapster; using Aop.Api.Domain; +using JNPF.VisualDev.Entitys.Dto.VisualDev; namespace Tnb.WarehouseMgr { @@ -32,7 +33,7 @@ namespace Tnb.WarehouseMgr /// 载具台账服务 /// [OverideVisualDev(ModuleConsts.MODULE_WMSCARRY_ID)] - public class WmsCarryLedgerService : ExcelDataImportManager, IWmsCarryLedgerService + public class WmsCarryLedgerService : BaseWareHouseService, IWmsCarryLedgerService { private const string ModuleId = ""; private readonly ISqlSugarClient _db; @@ -45,7 +46,7 @@ namespace Tnb.WarehouseMgr _runService = runService; _visualDevService = visualDevService; _userManager = userManager; - OverideFuncs.ImportAsync = DataImport; + OverideFuncs.ImportDataAsync = DataImport; } /// @@ -53,58 +54,52 @@ namespace Tnb.WarehouseMgr /// /// /// - private async Task DataImport(IFormFile file) + private async Task DataImport(VisualDevImportDataInput input) { int row = 0; try { - List> dics = await ImportExcelToMemory(file); + List> dics = input.list; List carrys = new List(); - List locCodes = new(); List cCodes = new(); WmsCarryH carryH = new WmsCarryH(); - - string carryStdId = string.Empty; foreach (var d in dics) { var cCode = d["carrystd_id"].ToString() ?? string.Empty; - if (cCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}行数据有误", 500); + if (cCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}行载具规格不可为空", 500); locCodes.Add(d["location_code"]?.ToString() ?? string.Empty); cCodes.Add(cCode); + d["create_time"] = DateTime.Now; + d.Remove("modify_time"); carryH = d.Adapt(); carrys.Add(carryH); } - if (!locCodes.IsNullOrEmpty()) + var carryStdDic = await _db.Queryable().Where(it => cCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); + var locs = await _db.Queryable().Where(it => locCodes.Contains(it.location_code)).ToDictionaryAsync(x => x.location_code, x => x.id); + carrys.ForEach(x => { - var carryStdDic = await _db.Queryable().Where(it=>cCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); - var locs = await _db.Queryable().Where(it => locCodes.Contains(it.location_code)).ToDictionaryAsync(x => x.location_code, x => x.id); - carrys.ForEach(x => - { - x.id = SnowflakeIdHelper.NextId(); - x.org_id = _userManager.User.OrganizeId; - x.status = 1; - x.is_lock = 0; - x.carrystd_id = carryStdDic[x.carrystd_id].ToString()!; - x.carry_status = ((int)EnumCarryStatus.空闲).ToString(); - x.location_id = locs[x.location_code].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(); + if (!carryStdDic.Keys.Contains(x.carrystd_id)) throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}行的载具规格有误", 500); + if (!locs.Keys.Contains(x.location_code)) throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}行的库位编号有误", 500); + x.id = SnowflakeIdHelper.NextId(); + x.org_id = _userManager.User.OrganizeId; + x.status = 1; + x.is_lock = 0; + x.carrystd_id = carryStdDic[x.carrystd_id].ToString() ?? throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}行的载具规格有误", 500); + x.carry_status = ((int)EnumCarryStatus.空闲).ToString(); + x.location_id = locs[x.location_code].ToString() ?? throw new AppFriendlyException($"第{carrys.IndexOf(x) + 1}行的库位编号有误", 500); + 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; + }); row = await _db.Insertable(carrys).ExecuteCommandAsync(); - await _db.Ado.CommitTranAsync(); } catch (Exception ex) { - await _db.Ado.RollbackTranAsync(); - Log.Error("导入失败", ex); - throw Oops.Bah("导入失败"); + throw Oops.Bah(ex.Message); } return row > 0; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs new file mode 100644 index 00000000..73a171d6 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JNPF.Common.Core.Manager; +using JNPF.Common.Security; +using JNPF.FriendlyException; +using JNPF.VisualDev; +using JNPF.VisualDev.Entitys.Dto.VisualDev; +using Mapster; +using SqlSugar; +using Tnb.BasicData.Entities; +using Tnb.WarehouseMgr.Entities; + +namespace Tnb.WarehouseMgr +{ + [OverideVisualDev(ModuleConsts.MODULE_WMSPOINT_ID)] + public class WmsPointService: BaseWareHouseService + { + private readonly ISqlSugarClient _db; + private readonly IUserManager _userManager; + public WmsPointService(ISqlSugarRepository repository, IUserManager userManager) + { + _db = repository.AsSugarClient(); + _userManager = userManager; + OverideFuncs.ImportDataAsync = DataImport; + } + + private async Task DataImport(VisualDevImportDataInput input) + { + int row = 0; + try + { + List> dics = input.list; + List points = new List(); + WmsPointH pt = new WmsPointH(); + List cCodes = new List(); + foreach (var d in dics) + { + var cCode = d["carrystd_id"].ToString() ?? string.Empty; + if (cCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}行载具规格不可为空", 500); + cCodes.Add(cCode); + d["create_time"] = DateTime.Now; + d.Remove("modify_time"); + pt = d.Adapt(); + points.Add(pt); + } + var carryStdDic = await _db.Queryable().Where(it => cCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id); + if (carryStdDic?.Count > 0) + { + points.ForEach(x => + { + if (!carryStdDic.Keys.Contains(x.carrystd_id)) throw new AppFriendlyException($"第{points.IndexOf(x) + 1}行的载具规格有误", 500); + x.id = SnowflakeIdHelper.NextId(); + x.org_id = _userManager.User.OrganizeId; + x.is_lock = 0; + x.carrystd_id = carryStdDic[x.carrystd_id].ToString() ?? throw new AppFriendlyException($"第{points.IndexOf(x) + 1}行的载具规格有误", 500); + x.create_id = _userManager.UserId; + x.create_time = DateTime.Now; + x.modify_id = null; + x.modify_time = null; + x.is_mix = 1; + }); + } + row = await _db.Insertable(points).ExecuteCommandAsync(); + } + catch (Exception ex) + { + throw Oops.Bah(ex.Message); + } + return row > 0; + } + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs index c979c4ac..a6cb1af8 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRouteMgrService.cs @@ -20,6 +20,7 @@ using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using NPOI.SS.Formula; using SqlSugar; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Interfaces; @@ -31,7 +32,7 @@ namespace Tnb.WarehouseMgr /// [OverideVisualDev(ModuleId)] - public class WmsRouteMgrService : ExcelDataImportManager, IWmsRouteMgrService + public class WmsRouteMgrService : BaseWareHouseService, IWmsRouteMgrService { private const string ModuleId = "26100621140773";//26100621140773 private readonly ISqlSugarClient _db; @@ -44,7 +45,7 @@ namespace Tnb.WarehouseMgr _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; - _userManager = userManager; + _userManager = userManager; OverideFuncs.CreateAsync = Create; OverideFuncs.ImportDataAsync = DataImport; } @@ -70,22 +71,27 @@ namespace Tnb.WarehouseMgr int row = 0; try { - List> dics = input.list; + List> dics = input.list; List roads = new List(); List pointCodes = new List(); - List locCodes = new(); WmsRoad road = new WmsRoad(); - - string carryStdId = string.Empty; foreach (var d in dics) { - var sCode = d["startpoint_code"]?.ToString() ?? string.Empty; + var sCode = d["startpoint_code"].ToString() ?? string.Empty; var eCode = d["endpoint_code"].ToString() ?? string.Empty; - if (sCode.IsEmpty() || eCode.IsEmpty()) - throw new AppFriendlyException($"第{dics.IndexOf(d) + 2}行数据有误", 500); + var dis = d["distance"].ToString() ?? string.Empty; + if(sCode == eCode) throw new AppFriendlyException("起始点位不能等于终止点位", 500); + if (sCode.IsEmpty()) + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}行起始点位编号不可为空", 500); + if (eCode.IsEmpty()) + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}行终止点位编号不可为空", 500); + if (dis.IsEmpty()) + throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}行距离不可为空", 500); pointCodes.Add(sCode); pointCodes.Add(eCode); + d["create_time"] = DateTime.Now; + d.Remove("modify_time"); road = d.Adapt(); roads.Add(road); } @@ -94,27 +100,24 @@ namespace Tnb.WarehouseMgr { roads.ForEach(x => { + if (!points.Keys.Contains(x.startpoint_code) ) throw new AppFriendlyException($"第{roads.IndexOf(x) + 1}行的起始点位编号有误", 500); + if (!points.Keys.Contains(x.endpoint_code)) throw new AppFriendlyException($"第{roads.IndexOf(x) + 1}行的终止点位编号有误", 500); x.id = SnowflakeIdHelper.NextId(); x.org_id = _userManager.User.OrganizeId; - x.startpoint_id = points[x.startpoint_code].ToString()!; - x.endpoint_id = points[x.endpoint_code].ToString()!; + x.startpoint_id = points[x.startpoint_code].ToString() ?? throw new AppFriendlyException($"第{roads.IndexOf(x) + 1}行的起始点位编号有误", 500); + x.endpoint_id = points[x.endpoint_code].ToString() ?? throw new AppFriendlyException($"第{roads.IndexOf(x) + 1}行的终止点位编号有误", 500); x.road_code = $"{x.startpoint_code}-{x.endpoint_code}"; x.status = 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(roads).ExecuteCommandAsync(); - await _db.Ado.CommitTranAsync(); } catch (Exception ex) - { - await _db.Ado.RollbackTranAsync(); - //Log.Error("导入失败", ex); - throw Oops.Bah("导入失败"); + { + throw Oops.Bah(ex.Message); } return row > 0; } From 943cd5a0b22ba9bbd188e691e44a64f0ebc5f31e Mon Sep 17 00:00:00 2001 From: FanLian Date: Thu, 10 Aug 2023 09:29:02 +0800 Subject: [PATCH 2/2] bug --- WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs index 73a171d6..268e4137 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs @@ -51,16 +51,16 @@ namespace Tnb.WarehouseMgr { points.ForEach(x => { - if (!carryStdDic.Keys.Contains(x.carrystd_id)) throw new AppFriendlyException($"第{points.IndexOf(x) + 1}行的载具规格有误", 500); + x.id = SnowflakeIdHelper.NextId(); x.org_id = _userManager.User.OrganizeId; x.is_lock = 0; - x.carrystd_id = carryStdDic[x.carrystd_id].ToString() ?? throw new AppFriendlyException($"第{points.IndexOf(x) + 1}行的载具规格有误", 500); + x.create_id = _userManager.UserId; x.create_time = DateTime.Now; x.modify_id = null; x.modify_time = null; - x.is_mix = 1; + }); } row = await _db.Insertable(points).ExecuteCommandAsync();