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.Entities/Exceptions/TimedTaskException.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Exceptions/TimedTaskException.cs
index adb7c426..5b73e217 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Exceptions/TimedTaskException.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Exceptions/TimedTaskException.cs
@@ -1,8 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
+using JNPF.Common.Const;
+using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.WarehouseMgr.Entities.Exceptions
@@ -17,28 +20,37 @@ namespace Tnb.WarehouseMgr.Entities.Exceptions
public string UserName { get; set; }
public string RequestURL { get; set; }
public string RequestMethod { get; set; }
- public ConnectionConfigOptions options { get; set; }
+ public ClaimsPrincipal UserIdentity { get; set; }
+ public ConnectionConfigOptions? options { get; set; }
public TimedTaskException(string message,
- string method,
- string userId,
- string userName,
string requestUrl,
string requestMethod,
- ConnectionConfigOptions options,
+ ClaimsPrincipal userIdentity,
Exception innerException) : base(message, innerException)
{
- this.Method = method;
- this.UserId = userId;
- this.UserName = userName;
+ this.UserId = userIdentity.FindFirst(ClaimConst.CLAINMUSERID)?.Value ?? string.Empty;
+ this.UserName = userIdentity.FindFirst(ClaimConst.CLAINMREALNAME)?.Value ?? string.Empty;
+ this.options = userIdentity.FindFirst(ClaimConst.CONNECTIONCONFIG)?.ToObject() ?? null;
this.RequestURL = requestUrl;
this.RequestMethod = requestMethod;
- this.options = options;
}
}
public static class TimedTaskExceptionExtensions
{
+ public static TimedTaskException ToTimedTaskException(this Exception exception, TimedTaskErrorInfo exceptionInfo)
+ {
+ TimedTaskException ex = new(exception.Message, exceptionInfo.RequestURL, exceptionInfo.RequestMethod, exceptionInfo.userIdentity, exception);
+ return ex;
+ }
+ }
+
+ public class TimedTaskErrorInfo
+ {
+ public string RequestURL { get; set; }
+ public string RequestMethod { get; set; }
+ public ClaimsPrincipal userIdentity { get; set; }
}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/ExcelDataImportManager.cs b/WarehouseMgr/Tnb.WarehouseMgr/ExcelDataImportManager.cs
deleted file mode 100644
index 062cc44a..00000000
--- a/WarehouseMgr/Tnb.WarehouseMgr/ExcelDataImportManager.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using JNPF.FriendlyException;
-using Microsoft.AspNetCore.Http;
-using NPOI.HSSF.UserModel;
-using NPOI.SS.UserModel;
-using NPOI.XSSF.UserModel;
-
-namespace Tnb.WarehouseMgr
-{
- public class ExcelDataImportManager : BaseWareHouseService
- {
- ///
- /// 解析Excel到内存
- ///
- ///
- ///
- protected Task>> ImportExcelToMemory(IFormFile file)
- {
- int rowIndex = 1;
- List>? dics = new();
- IWorkbook? workbook = null;
- try
- {
- using (Stream stream = file.OpenReadStream())
- {
- // 2007版本
- if (file.Name.IndexOf(".xlsx") > 0)
- {
- workbook = new XSSFWorkbook(stream);
- }
- else if (file.Name.IndexOf(".xls") > 0)
- {
- workbook = new HSSFWorkbook(stream);
- }
-
- ISheet? sheet = workbook?.GetSheetAt(0);
- if (workbook == null || sheet == null) throw Oops.Bah("无导入数据");
- if (sheet?.LastRowNum <= 1) throw Oops.Bah("无导入数据");
-
- ICellStyle style = workbook.CreateCellStyle();
- IFont font = workbook.CreateFont();
- font.Color = IndexedColors.Black.Index; // 将字体颜色设置为黑色
- style.SetFont(font);
- var nameRow = sheet?.GetRow(0);
- if (nameRow != null)
- {
- Dictionary dic = new Dictionary();
- List columns = new List();
- columns = nameRow.Cells.Select(x => x.StringCellValue).ToList();
- columns.ForEach(x =>
- {
- var strings = x.Split(new char[2] { '(', ')' }, StringSplitOptions.RemoveEmptyEntries);
- x = strings[1];
- });
- if (columns?.Count > 0)
- {
- for (rowIndex = 1; rowIndex <= sheet?.LastRowNum; rowIndex++)
- {
- var row = sheet?.GetRow(rowIndex);
- if (row != null)
- {
- foreach (var col in columns)
- {
- ICell cell = row.GetCell(columns.IndexOf(col));
- dic.Add(col, cell.StringCellValue);
- }
- dics.Add(dic);
- }
- }
- if (dics == null) throw new AppFriendlyException("输入的数据为空", 500);
- }
- }
- }
- }
- catch (Exception)
- {
- //return Task.FromResult(dics);
- throw;
- }
- return Task.FromResult(dics);
- }
-
- public async Task GenImportTemplate(params string[] fields)
- {
- return null;
- }
- }
-}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs
index ab6a1016..cf3716f8 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/LocationDefinitionService.cs
@@ -16,11 +16,16 @@ 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 +33,59 @@ 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);
- if (carryStdDic?.Count > 0)
+ List cStdCodes = new List();
+ //遍历字典,找出需要查询数据库拿的相关字段
+ foreach (var d in dics)
{
- 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;
- loc = d.Adapt();
- locs.Add(loc);
- }
+ var LCode = d["location_code"].ToString() ?? string.Empty;
+ if (LCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据库位编号不可为空", 500);
+ var isType = d["is_type"].ToString() ?? string.Empty;
+ if (isType == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据库位类型不可为空", 500);
+ var floor = d["floor"].ToString() ?? string.Empty;
+ if (floor == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据楼层不可为空", 500);
+ var layers = d["layers"].ToString() ?? string.Empty;
+ var locLine = d["loc_line"].ToString() ?? string.Empty;
+ var locColumn = d["loc_column"].ToString() ?? string.Empty;
+ if (locLine == string.Empty || locColumn == string.Empty || layers == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据行列层不可为空", 500);
+ var isSign = d["is_sign"].ToString() ?? string.Empty;
+ if(isSign==string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据自动签收不可为空", 500);
+ var cStdCode = d["carrystd_id"].ToString() ?? string.Empty;
+ cStdCodes.Add(cStdCode);
+ d["create_time"] = DateTime.Now;
+ d.Remove("modify_time");
+ loc = d.Adapt();
+ locs.Add(loc);
}
+ var carryStdDic = await _db.Queryable().Where(it => cStdCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id);
locs.ForEach(x =>
{
+ 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;
});
- 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/TimedTaskBackgroundService.cs b/WarehouseMgr/Tnb.WarehouseMgr/TimedTaskBackgroundService.cs
index 6b7c22a3..8eb61c17 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/TimedTaskBackgroundService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/TimedTaskBackgroundService.cs
@@ -15,6 +15,7 @@ using JNPF.FriendlyException;
using JNPF.Logging;
using JNPF.Message.Interfaces.Message;
using JNPF.Systems.Entitys.System;
+using Mapster;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
@@ -35,7 +36,7 @@ namespace Tnb.WarehouseMgr
protected override Task ExecuteAsync(CancellationToken stoppingToken) => Task.Run(() =>
{
- //_eventPublisher = App.GetRequiredService();
+ _eventPublisher = App.GetRequiredService();
List toUserIds = new List() { "25398501929509" };
//生成任务执行
CancellationTokenSource genTaskCTS = new();
@@ -64,19 +65,21 @@ namespace Tnb.WarehouseMgr
{
await action(cts).Catch(async ex =>
{
- if (ex is TimedTaskException timedTaskEx)
+ if (ex is TimedTaskException timedTaskEx and not null)
{
- //await _eventPublisher.PublishAsync(new LogEventSource("Log:CreateExLog", options, new SysLogEntity
- //{
- // Id = SnowflakeIdHelper.NextId(),
- // Category = 4,
- // IPAddress = NetHelper.Ip,
- // RequestURL = httpRequest.Path,
- // RequestMethod = httpRequest.Method,
- // Json = timedTaskEx + "\n" + context.Exception.StackTrace + "\n" + context.Exception.TargetSite.GetParameters().ToString(),
- // PlatForm = string.Format("{0}-{1}", userAgent.OS.ToString(), userAgent.RawValue),
- // CreatorTime = DateTime.Now
- //}));
+ await _eventPublisher.PublishAsync(new LogEventSource("Log:CreateExLog", timedTaskEx.options!, new SysLogEntity
+ {
+ Id = SnowflakeIdHelper.NextId(),
+ Category = 4,
+ UserId = timedTaskEx.UserId,
+ UserName = timedTaskEx.UserName,
+ IPAddress = NetHelper.Ip,
+ RequestURL = timedTaskEx.RequestURL,
+ RequestMethod = timedTaskEx.RequestMethod,
+ Json = timedTaskEx + "\n" + timedTaskEx.InnerException?.StackTrace + "\n" + timedTaskEx?.TargetSite?.GetParameters().ToString(),
+ //PlatForm = string.Format("{0}-{1}", userAgent.OS.ToString(), userAgent.RawValue),
+ CreatorTime = DateTime.Now
+ }));
}
});
await Task.Delay(1000);
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
index 64df0065..d2093b7f 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs
@@ -9,13 +9,16 @@ using System.Runtime.InteropServices;
using System.Text;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
+using Aliyun.Credentials.Http;
using Aop.Api.Domain;
using Aspose.Cells.Drawing;
using JNPF;
+using JNPF.Common.Const;
using JNPF.Common.Contracts;
using JNPF.Common.Core.Manager;
using JNPF.Common.Enums;
using JNPF.Common.Extension;
+using JNPF.Common.Manager;
using JNPF.Common.Security;
using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
@@ -59,12 +62,15 @@ namespace Tnb.WarehouseMgr
private readonly IDictionaryDataService _dictionaryDataService;
private readonly IBillRullService _billRullService;
private readonly IUserManager _userManager;
- public WareHouseService(ISqlSugarRepository repository, IDictionaryDataService dictionaryDataService, IBillRullService billRullService, IUserManager userManager)
+ private readonly ICacheManager _cacheManager;
+
+ public WareHouseService(ISqlSugarRepository repository, IDictionaryDataService dictionaryDataService, IBillRullService billRullService, IUserManager userManager, ICacheManager cacheManager)
{
_db = repository.AsSugarClient();
_dictionaryDataService = dictionaryDataService;
_billRullService = billRullService;
_userManager = userManager;
+ _cacheManager = cacheManager;
}
///
@@ -221,6 +227,12 @@ namespace Tnb.WarehouseMgr
{
Stopwatch sw = Stopwatch.StartNew();
CancellationTokenSource agvCts = new();
+
+ //获取用户登录令牌
+ var aToken = await _cacheManager.GetAsync("AsscessToken");
+ if (aToken.IsNullOrWhiteSpace()) return;
+ var curUser = await GetUserIdentity(aToken);
+
var db = _db.CopyNew();
try
{
@@ -366,9 +378,18 @@ namespace Tnb.WarehouseMgr
catch (Exception ex)
{
Log.Error("生成预任务执行时出现错误", ex);
+ var opts = curUser.FindFirst(ClaimConst.CONNECTIONCONFIG)?.Value;
+
+ TimedTaskErrorInfo ei = new()
+ {
+ RequestURL = App.HttpContext?.Request?.Path,
+ RequestMethod = App.HttpContext?.Request?.Method,
+ userIdentity = curUser,
+ };
+ var timedTaskEx = ex.ToTimedTaskException(ei);
await db.Ado.RollbackTranAsync();
cts?.Cancel();
- throw;
+ throw timedTaskEx;
}
finally
{
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryLedgerService.cs
index 3fc960e2..7a455402 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,53 @@ 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();
-
+ Dictionary? locs = null;
List locCodes = new();
- List cCodes = new();
+ List cStdCodes = 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);
- locCodes.Add(d["location_code"]?.ToString() ?? string.Empty);
- cCodes.Add(cCode);
+ var cStdCode = d["carrystd_id"].ToString() ?? string.Empty;
+ locCodes.Add(d["location_code"].ToString() ?? string.Empty);
+ cStdCodes.Add(cStdCode);
+ 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 => cStdCodes.Contains(it.carrystd_code)).ToDictionaryAsync(x => x.carrystd_code, x => x.id);
+ if (locCodes?.Count > 0)
+ 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);
+ 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();
+ if (locs != null && x.location_code != null && x.location_code != string.Empty)
+ 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.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..93cdfd12
--- /dev/null
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPointService.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using JNPF.Common.Core.Manager;
+using JNPF.Common.Extension;
+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 aCodes = new List();
+ //遍历字典,找出需要查询数据库拿的相关字段
+ foreach (var d in dics)
+ {
+ var pCode = d["point_code"].ToString() ?? string.Empty;
+ var pName = d["point_name"].ToString() ?? string.Empty;
+ var aCode = d["area_code"].ToString() ?? string.Empty;
+ var floor = d["floor"].ToString() ?? string.Empty;
+ if (pCode == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位编号不可为空", 500);
+ if (pName == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据点位名称不可为空", 500);
+ if (floor == string.Empty) throw new AppFriendlyException($"第{dics.IndexOf(d) + 1}个数据楼层不可为空", 500);
+ aCodes.Add(aCode);
+ d["create_time"] = DateTime.Now;
+ d.Remove("modify_time");
+ pt = d.Adapt();
+ points.Add(pt);
+ }
+ var areas = await _db.Queryable().Where(it => aCodes.Contains(it.code)).ToDictionaryAsync(x => x.code, x => x.id);
+ points.ForEach(x =>
+ {
+ if (!areas.Keys.Contains(x.area_code)) throw new AppFriendlyException($"第{points.IndexOf(x) + 1}个数据的管理区编号有误", 500);
+ x.id = SnowflakeIdHelper.NextId();
+ x.org_id = _userManager.User.OrganizeId;
+ x.is_lock = 0;
+ x.status = 1;
+ x.point_x = 0;
+ x.point_y = 0;
+ x.point_z = 0;
+ x.area_id = areas[x.area_code].ToString() ?? throw new AppFriendlyException($"第{points.IndexOf(x) + 1}个数据的管理区编号编号有误", 500);
+ x.create_id = _userManager.UserId;
+ x.modify_id = null;
+ x.modify_time = null;
+ });
+ 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..de6e2ae4 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,24 @@ 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 (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 +97,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;
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs
index 47739623..b63baf28 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs
@@ -5,6 +5,7 @@ using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
+using JNPF;
using JNPF.Common.Const;
using JNPF.Common.Core.Manager;
using JNPF.Common.Enums;
@@ -17,6 +18,7 @@ using Mapster;
using Microsoft.AspNetCore.Mvc;
using NPOI.SS.Formula;
using SqlSugar;
+using TencentCloud.Common;
using Tnb.BasicData.Entities;
using Tnb.Common.Utils;
using Tnb.WarehouseMgr.Entities;
@@ -24,6 +26,7 @@ using Tnb.WarehouseMgr.Entities.Attributes;
using Tnb.WarehouseMgr.Entities.Consts;
using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Enums;
+using Tnb.WarehouseMgr.Entities.Exceptions;
using Tnb.WarehouseMgr.Interfaces;
using UAParser;
@@ -223,8 +226,15 @@ namespace Tnb.WarehouseMgr
{
JNPF.Logging.Log.Error("齐套分拣执行时出现错误", ex);
await curDb.Ado.RollbackTranAsync();
+ TimedTaskErrorInfo ei = new()
+ {
+ RequestURL = App.HttpContext?.Request?.Path,
+ RequestMethod = App.HttpContext?.Request?.Method,
+ userIdentity = curUser,
+ };
+ var timedTaskEx = ex.ToTimedTaskException(ei);
cts?.Cancel();
- throw;
+ throw timedTaskEx;
}
}
diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs
index 9e529e65..2e8fd185 100644
--- a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs
+++ b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs
@@ -37,6 +37,7 @@ using Tnb.WarehouseMgr.Entities.Dto;
using Tnb.WarehouseMgr.Entities.Dto.Inputs;
using Tnb.WarehouseMgr.Entities.Dto.Outputs;
using Tnb.WarehouseMgr.Entities.Enums;
+using Tnb.WarehouseMgr.Entities.Exceptions;
using Tnb.WarehouseMgr.Interfaces;
namespace Tnb.WarehouseMgr
@@ -164,8 +165,15 @@ namespace Tnb.WarehouseMgr
{
JNPF.Logging.Log.Error("齐套出库,新增时出现错误", ex);
await curDb.Ado.RollbackTranAsync();
+ TimedTaskErrorInfo ei = new()
+ {
+ RequestURL = App.HttpContext?.Request?.Path,
+ RequestMethod = App.HttpContext?.Request?.Method,
+ userIdentity = curUser,
+ };
+ var timedTaskEx = ex.ToTimedTaskException(ei);
cts?.Cancel();
- throw;
+ throw timedTaskEx;
}
}
///
@@ -265,8 +273,15 @@ namespace Tnb.WarehouseMgr
catch (Exception ex)
{
JNPF.Logging.Log.Error("齐套出库,待配送时出现错误", ex);
+ TimedTaskErrorInfo ei = new()
+ {
+ RequestURL = App.HttpContext?.Request?.Path,
+ RequestMethod = App.HttpContext?.Request?.Method,
+ userIdentity = curUser,
+ };
+ var timedTaskEx = ex.ToTimedTaskException(ei);
cts?.Cancel();
- throw;
+ throw timedTaskEx;
}
}
diff --git a/visualdev/Tnb.VisualDev/VisualDevModelDataService.cs b/visualdev/Tnb.VisualDev/VisualDevModelDataService.cs
index 6ca79456..adc31b40 100644
--- a/visualdev/Tnb.VisualDev/VisualDevModelDataService.cs
+++ b/visualdev/Tnb.VisualDev/VisualDevModelDataService.cs
@@ -798,7 +798,7 @@ namespace JNPF.VisualDev
{
VisualDevImportDataOutput result = new VisualDevImportDataOutput();
var overideSvc = OverideVisualDevManager.GetOrDefault(modelId);
- if (overideSvc != null && overideSvc.OverideFuncs.CreateAsync != null)
+ if (overideSvc != null && overideSvc.OverideFuncs.ImportDataAsync != null)
{
await overideSvc.OverideFuncs.ImportDataAsync(list);
}