From 5d7175c98f5e06883ca8d2724b7a32c4463e7d56 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 6 Sep 2023 17:09:31 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=EF=BC=8C=E6=A0=B9=E6=8D=AE=E5=B7=A5=E4=BD=8D?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8C=B9=E9=85=8D=E7=BB=88=E6=AD=A2=E5=BA=93?= =?UTF-8?q?=E4=BD=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tnb.WarehouseMgr/WmsOutStockService.cs | 113 +++++++++++------- 1 file changed, 73 insertions(+), 40 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index ba6e9562..d2bd6152 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -19,6 +19,7 @@ using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; +using NPOI.SS.Formula.Functions; using SqlSugar; using SqlSugar.DbConvert; using Tnb.BasicData.Entities; @@ -76,14 +77,63 @@ namespace Tnb.WarehouseMgr OverideFuncs.CreateAsync = OutStockApplyFor; } - private async Task OutStockApplyFor(VisualDevModelDataCrInput input) { try { await _db.Ado.BeginTranAsync(); //判断目标库位是否自动签收 - var loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + BasLocation? loc = null; + if (input.data.ContainsKey(nameof(WmsPointH.location_id)) && input.data[nameof(WmsPointH.location_id)].IsNotEmptyOrNull()) + { + loc = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsPointH.location_id)].ToString()); + } + else if (input.data.ContainsKey(nameof(WmsOutstockH.station_id)) && input.data[nameof(WmsOutstockH.station_id)].IsNotEmptyOrNull()) + { + //多个投料库位 + /* + * 天益 + * 2、不管库位是否为空, 获取到所有库位 A B + * 2.1 根据这些库位去查任务执行 目的库位是这些库位的未完成任务数。 A 10 B 9 + * 2.2 哪个最少给哪个 + */ + var org = await _db.Queryable().FirstAsync(it => it.Id == input.data[nameof(WmsOutstockH.station_id)].ToString()); + if (!org?.FeedingLocationId.IsNullOrWhiteSpace() ?? false) + { + var fLocIds = JArray.Parse(org.FeedingLocationId).Values().ToList(); + var minTaskNumLocs = await _db.Queryable().Where(it => it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && fLocIds.Contains(it.endlocation_id)) + .GroupBy(it => it.endlocation_id) + .Select(it => new + { + it.endlocation_id, + count = SqlFunc.AggregateCount(it.endlocation_id) + }) + .MergeTable() + .OrderBy(it => it.count) + .ToListAsync(); + if (minTaskNumLocs?.Count > 0) + { + var freeLocIds = fLocIds.Except(minTaskNumLocs.Select(x => x.endlocation_id)).ToList(); + if (freeLocIds?.Count > 0) + { + var rIdx = new Random().Next(0, freeLocIds.Count); + loc = await _db.Queryable().SingleAsync(it => it.id == freeLocIds[rIdx]); + } + else + { + var firstLocId = minTaskNumLocs.FirstOrDefault().endlocation_id; + loc = await _db.Queryable().SingleAsync(it => it.id == firstLocId); + } + } + else if (minTaskNumLocs?.Count < 1) + { + var rIdx = new Random().Next(0, fLocIds.Count); + loc = await _db.Queryable().SingleAsync(it => it.id == fLocIds[rIdx]); + } + input.data[nameof(WmsOutstockH.location_id)] = loc.id; + } + } + var carryIds = new List(); //tablefield120 出库物料明细 @@ -98,20 +148,20 @@ namespace Tnb.WarehouseMgr { var OutStockStrategyInput = new OutStockStrategyQuery { - carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)].ToString(), - warehouse_id = input.data[nameof(WmsOutstockH.warehouse_id)].ToString(), + carry_id = input.data[nameof(OutStockStrategyQuery.carry_id)]?.ToString() ?? string.Empty, + warehouse_id = input.data[nameof(WmsOutstockH.warehouse_id)]?.ToString() ?? string.Empty, material_id = os.material_id, code_batch = os.code_batch, }; var outStkCarrys = await _wareHouseService.OutStockStrategy(OutStockStrategyInput); - Expression> whereExp = input.data.ContainsKey(nameof(WmsOutstockH.carry_id)) + Expression> whereExp = input.data.ContainsKey(nameof(WmsOutstockH.carry_id)) && input.data[nameof(WmsOutstockH.carry_id)].IsNotEmptyOrNull() ? (a, b) => a.id == input.data[nameof(WmsOutstockH.carry_id)].ToString() : (a, b) => outStkCarrys.Select(x => x.id).Contains(b.carry_id); List? carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) .Where(whereExp) .Select() - .ToListAsync(); + .ToListAsync(); if (carryCodesPart?.Count > 0) { @@ -177,8 +227,20 @@ namespace Tnb.WarehouseMgr } } carryIds = allOutIds.Concat(sortingOutIds).ToList(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString(), source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }).Where(it => allOutIds.Contains(it.id)).ExecuteCommandAsync(); - await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString(), source_id = input.data[nameof(WmsOutstockH.source_id)].ToString(), source_code = input.data[nameof(WmsOutstockH.source_code)].ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); + var carryH = new WmsCarryH + { + out_status = ((int)EnumOutStatus.全部出).ToString(), + source_id = input.data.ContainsKey(nameof(WmsOutstockH.source_id)) ? input.data[nameof(WmsOutstockH.source_id)]?.ToString() ?? string.Empty : string.Empty, + source_code = input.data.ContainsKey(nameof(WmsOutstockH.source_code)) ? input.data[nameof(WmsOutstockH.source_code)]?.ToString() ?? string.Empty : string.Empty, + }; + await _db.Updateable(carryH) + .UpdateColumns(it => new { it.out_status, it.source_id, it.source_code }) + .Where(it => allOutIds.Contains(it.id)) + .ExecuteCommandAsync(); + carryH.out_status = ((int)EnumOutStatus.分拣出).ToString(); + await _db.Updateable(carryH) + .UpdateColumns(it => new { it.out_status, it.source_id, it.source_code }) + .ExecuteCommandAsync(); } @@ -205,37 +267,7 @@ namespace Tnb.WarehouseMgr } if (input.data.ContainsKey(nameof(WmsPointH.location_id)) && input.data[nameof(WmsPointH.location_id)].IsNotEmptyOrNull()) { - ePoint = await _db.Queryable().FirstAsync(it => it.location_id == input.data[nameof(WmsPointH.location_id)].ToString()); - } - else if (input.data.ContainsKey(nameof(WmsOutstockH.station_id))) - { - //多个投料库位 - /* - * 潍柴 - * 1、那个库位状态是空的出那个 - * 1.1、没有空位直接抛异常 - * - * 天益 - * 2、不管库位是否为空, 获取到所有库位 A B - * 2.1 根据这些库位去查任务执行 目的库位是这些库位的未完成任务数。 A 10 B 9 - * 2.2 哪个最少给哪个 - */ - var org = await _db.Queryable().FirstAsync(it => it.Id == input.data[nameof(WmsOutstockH.station_id)].ToString()); - if (!org?.FeedingLocationId.IsNullOrWhiteSpace() ?? false) - { - var fLocIds = JArray.Parse(org.FeedingLocationId).Values(); - var minTaskNumLoc = await _db.Queryable().Where(it => it.status != WmsWareHouseConst.PRETASK_BILL_STATUS_COMPLE_ID && fLocIds.Contains(it.endlocation_id)) - .GroupBy(it => it.endlocation_id) - .Select(it => new - { - it.endlocation_id, - count = SqlFunc.AggregateCount(it.endlocation_id) - }) - .MergeTable() - .OrderBy(it => it.count) - .FirstAsync(); - ePoint = await _db.Queryable().FirstAsync(it => it.location_id == minTaskNumLoc.endlocation_id); - } + ePoint = await _db.Queryable().FirstAsync(it => it.location_id == loc.id); } if (sPoint != null && ePoint != null) @@ -323,8 +355,9 @@ namespace Tnb.WarehouseMgr await _db.Ado.CommitTranAsync(); } - catch (Exception) + catch (Exception ex) { + JNPF.Logging.Log.Error(ex.ToString()); await _db.Ado.RollbackTranAsync(); throw; } From 09236f49289e60b5a3c188667d9ee5cf6bea08d3 Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Wed, 6 Sep 2023 17:34:46 +0800 Subject: [PATCH 2/7] =?UTF-8?q?pda=E8=AE=BE=E5=A4=87=E7=BB=B4=E4=BF=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/DictConst.cs | 5 + .../Dto/PdaRepairApplyListOutput.cs | 21 ++++ .../App/AppEqpRepairApplyService.cs | 119 ++++++++++++++++++ .../Tnb.EquipMgr/EqpRepairApplyService.cs | 2 +- 4 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 EquipMgr/Tnb.EquipMgr.Entities/Dto/PdaRepairApplyListOutput.cs create mode 100644 EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs diff --git a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs index e4035d79..c413b9b4 100644 --- a/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs +++ b/BasicData/Tnb.BasicData.Entities/Consts/DictConst.cs @@ -183,6 +183,11 @@ public static class DictConst /// 模具维修TypeId /// public const string WXTypeId = "26149320818965"; + /// + /// 设备维修状态 + /// + public const string RepairStatus = "RepairStatus"; + #endregion diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/PdaRepairApplyListOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/PdaRepairApplyListOutput.cs new file mode 100644 index 00000000..c2455cec --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/PdaRepairApplyListOutput.cs @@ -0,0 +1,21 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class PdaRepairApplyListOutput + { + public string id { get; set; } + public string code { get; set; } + public string name { get; set; } + public string equip_id { get; set; } + public string equip_id_id { get; set; } + public string? expect_complete_time { get; set; } + public string? is_ugent { get; set; } + public string description { get; set; } + public string status { get; set; } + public string repairer_id { get; set; } + public string? repairer_id_id { get; set; } + + public string apply_user_id { get; set; } + public string apply_user_id_id { get; set; } + + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs b/EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs new file mode 100644 index 00000000..2c188cd1 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/App/AppEqpRepairApplyService.cs @@ -0,0 +1,119 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Enums; +using JNPF.Common.Filter; +using JNPF.Common.Security; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.FriendlyException; +using JNPF.Systems.Entitys.Permission; +using JNPF.Systems.Entitys.System; +using JNPF.VisualDev; +using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; +using JNPF.VisualDev.Interfaces; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using SqlSugar; +using Tnb.BasicData; +using Tnb.EquipMgr.Entities; +using Tnb.EquipMgr.Entities.Dto; +using Tnb.EquipMgr.Interfaces; + +namespace Tnb.EquipMgr +{ + /// + /// app设备维修登记 + /// + [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] + [Route("api/[area]/[controller]/[action]")] + [OverideVisualDev(ModuleId)] + public class AppEqpRepairApplyService : IOverideVisualDevService,IDynamicApiController, ITransient + { + private const string ModuleId = "28621611210261"; + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + private readonly IRunService _runService; + private readonly IVisualDevService _visualDevService; + public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); + + public AppEqpRepairApplyService(ISqlSugarRepository repository, + IRunService runService, + IVisualDevService visualDevService, + IUserManager userManager) + { + _repository = repository; + _userManager = userManager; + _runService = runService; + _visualDevService = visualDevService; + OverideFuncs.GetListAsync = GetList; + } + + private async Task GetList(VisualDevModelListQueryInput input) + { + var db = _repository.AsSugarClient(); + Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + string code = queryJson!=null && queryJson.ContainsKey("code") ? queryJson["code"].ToString() : ""; + string name = queryJson!=null && queryJson.ContainsKey("name") ? queryJson["name"].ToString() : ""; + string userId = _userManager.UserId; + var result = await db.Queryable() + .LeftJoin((a, b) => a.equip_id == b.id) + .LeftJoin((a, b, c) => a.apply_user_id == c.Id) + .LeftJoin((a,b,c,d)=>d.EnCode==DictConst.RepairStatus) + .LeftJoin((a,b,c,d,e)=>a.status==e.EnCode && d.Id==e.DictionaryTypeId) + .WhereIF(!string.IsNullOrEmpty("code"), (a, b, c) => a.code.Contains(code)) + .WhereIF(!string.IsNullOrEmpty("name"), (a, b, c) => a.name.Contains(name)) + .Where((a, b, c) => a.repairer_id == userId) + .Where((a, b, c) => a.status == "2" || a.status=="3") + .Select((a, b, c,d,e) => new PdaRepairApplyListOutput + { + id = a.id, + code = a.code, + name = a.name, + equip_id = b.code+"/"+b.name, + equip_id_id = a.equip_id, + expect_complete_time = a.expect_complete_time==null ? "" : a.expect_complete_time.Value.ToString("yyyy-MM-dd"), + is_ugent = a.is_ugent==null ? "" : a.is_ugent==0 ? "否" : "是", + description = a.description, + status = e.FullName, + apply_user_id = SqlFunc.IsNull(c.RealName,"异常停机"), + apply_user_id_id = a.create_id, + // repairer_id = c.RealName, + // repairer_id_id = a.repairer_id, + }).ToPagedListAsync(input.currentPage,input.pageSize); + + return PageResult.SqlSugarPageResult(result); + } + + + /// + /// 根据id获取维修相关信息 + /// + /// + /// + [HttpPost] + public async Task GetRepairInfoById(Dictionary dic) + { + string id = dic.ContainsKey("id") ? dic["id"] : ""; + if (string.IsNullOrEmpty(id)) return null; + var db = _repository.AsSugarClient(); + return await db.Queryable() + .LeftJoin((a, b) => a.equip_id == b.id) + .Where((a, b) => a.id == id) + .Select((a, b) => new + { + id = a.id, + a.code, + a.name, + equip_id = a.equip_id, + equip_code = b.code, + equip_name = b.name, + expect_complete_time = a.expect_complete_time==null?"":a.expect_complete_time.Value.ToString("yyyy-MM-dd"), + is_ugent = a.is_ugent, + description = a.description, + status = a.status, + repairer_id = a.repairer_id, + }).FirstAsync(); + + } + + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs b/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs index 5b7dd85d..f6047912 100644 --- a/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs +++ b/EquipMgr/Tnb.EquipMgr/EqpRepairApplyService.cs @@ -16,7 +16,7 @@ using Tnb.EquipMgr.Interfaces; namespace Tnb.EquipMgr { /// - /// 设备维修延期 + /// 设备维修登记 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] From 24563ed55ec575171f14bd24e34c89e776fe3b23 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 6 Sep 2023 17:46:02 +0800 Subject: [PATCH 3/7] 1 --- WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs | 1 + apihost/Tnb.API.Entry/Startup.cs | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index d2bd6152..28f5f313 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -240,6 +240,7 @@ namespace Tnb.WarehouseMgr carryH.out_status = ((int)EnumOutStatus.分拣出).ToString(); await _db.Updateable(carryH) .UpdateColumns(it => new { it.out_status, it.source_id, it.source_code }) + .Where(it => sortingOutIds.Contains(it.id)) .ExecuteCommandAsync(); } diff --git a/apihost/Tnb.API.Entry/Startup.cs b/apihost/Tnb.API.Entry/Startup.cs index 2d5ed531..5f8b9d74 100644 --- a/apihost/Tnb.API.Entry/Startup.cs +++ b/apihost/Tnb.API.Entry/Startup.cs @@ -115,8 +115,8 @@ public class Startup : AppStartup SnowflakeIdHelper.InitYitIdWorker(); - bool isStartTimeJob = App.GetConfig("IsStartTimeJob"); - if (isStartTimeJob) - serviceProvider.GetRequiredService().StartTimerJob(); + //bool isStartTimeJob = App.GetConfig("IsStartTimeJob"); + //if (isStartTimeJob) + // serviceProvider.GetRequiredService().StartTimerJob(); } } \ No newline at end of file From 198b5542056ab18d7ee308695d6ccb4d88719a89 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 6 Sep 2023 17:53:40 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=87=BA=E5=BA=93?= =?UTF-8?q?=E7=94=B3=E8=AF=B7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index 28f5f313..52071fe6 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -249,9 +249,7 @@ namespace Tnb.WarehouseMgr var carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToListAsync(); if (carrys?.Count > 0) { - var curCarry = carrys[^carrys.Count]; - var isMatch = await IsCarryAndLocationMatchByCarryStd(curCarry, loc); - if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); + VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleConsts.MODULE_WMSOUTSTOCK_ID, true); await _runService.Create(templateEntity, input); @@ -260,6 +258,9 @@ namespace Tnb.WarehouseMgr List locIds = new(); foreach (var carry in carrys) { + var isMatch = await IsCarryAndLocationMatchByCarryStd(carry, loc); + if (!isMatch) throw new AppFriendlyException("该载具无法放置到目标库位", 500); + WmsPointH sPoint = null!; WmsPointH ePoint = null!; if (input.data.ContainsKey(nameof(WmsPointH.location_id))) From 3fb38660099854640a5ba212cf8c6f0181663521 Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 6 Sep 2023 18:11:19 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=B3=A8=E9=87=8AtimeStremp=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=EF=BC=8C=E5=87=BA=E5=BA=93=E7=AD=BE=E6=94=B6=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=98=A0=E5=B0=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskCode.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskCode.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskCode.cs index 44a9d12e..40606a87 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskCode.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskCode.cs @@ -72,7 +72,7 @@ public partial class WmsDistaskCode : BaseEntity /// /// 时间戳 /// - public DateTime time_stamp { get; set; } = DateTime.Now; + //public DateTime? time_stamp { get; set; } = DateTime.Now; /// /// 创建用户 From b52e48ce9a284c101da2816fc5806758dff0f04b Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 6 Sep 2023 18:26:33 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E5=87=BA=E5=BA=93=E7=AD=BE=E6=94=B6?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=94=A8=E6=88=B7=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index 52071fe6..c45821f5 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -5,6 +5,7 @@ using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using Aop.Api.Domain; +using JNPF.Common.Const; using JNPF.Common.Contracts; using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; @@ -643,11 +644,12 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); - + var curUser = await GetUserIdentity(); var carryId = input.carryIds[^input.carryIds.Count]; var carry = await _db.Queryable().SingleAsync(it => it.id == carryId); if (carry != null) { + var otds = await _db.Queryable().Where(it => it.bill_id == input.requireId).ToListAsync(); var outStatus = carry.out_status.ToEnum(); if (outStatus == EnumOutStatus.全部出) @@ -656,6 +658,7 @@ namespace Tnb.WarehouseMgr var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); var outStockCodes = carryCodes.Adapt>(); + outStockCodes.ForEach(x => { var billDId = otds?.Find(xx => xx.material_id == x.material_id && xx.code_batch == x.code_batch)?.id; @@ -666,8 +669,8 @@ namespace Tnb.WarehouseMgr x.id = SnowflakeIdHelper.NextId(); x.bill_id = input.requireId; x.bill_d_id = billDId!; - x.org_id = _userManager.User.OrganizeId; - x.create_id = _userManager.UserId; + x.org_id = _userManager.User?.OrganizeId ?? curUser.FindFirst(ClaimConst.CLAINMORGID)?.Value ?? string.Empty; + x.create_id = _userManager.UserId ?? curUser.FindFirst(ClaimConst.CLAINMUSERID)?.Value ?? string.Empty; ; x.create_time = DateTime.Now; }); await _db.Insertable(outStockCodes).ExecuteCommandAsync(); @@ -718,8 +721,8 @@ namespace Tnb.WarehouseMgr x.id = SnowflakeIdHelper.NextId(); x.bill_id = input.requireId; x.bill_d_id = billDId!; - x.org_id = _userManager.User.OrganizeId; - x.create_id = _userManager.UserId; + x.org_id = _userManager.User?.OrganizeId ?? curUser.FindFirst(ClaimConst.CLAINMORGID)?.Value ?? string.Empty; + x.create_id = _userManager.UserId?? curUser.FindFirst(ClaimConst.CLAINMUSERID)?.Value ?? string.Empty; x.create_time = DateTime.Now; }); await _db.Insertable(osCodes).ExecuteCommandAsync(); From 64e1a607809fa7095fbc840f8df1debf64a6c0de Mon Sep 17 00:00:00 2001 From: PhilPan Date: Wed, 6 Sep 2023 18:50:20 +0800 Subject: [PATCH 7/7] =?UTF-8?q?vengine=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apihost/Tnb.API.Entry/Tnb.API.Entry.csproj | 9 + .../VengineSqlSugar/AppService.cshtml | 34 + .../Template/VengineSqlSugar/EntityDto.cshtml | 26 + .../VengineSqlSugar/EntityDtoAcmen.cshtml | 31 + .../VengineSqlSugar/EntityInfo.cshtml | 22 + .../VengineSqlSugar/EntityInfoAcmen.cshtml | 54 ++ .../Extension/EnumerableExtensions.cs | 11 + .../Tnb.Common/Extension/StringExtensions.cs | 279 ------ .../Extension/TnbStringExtensions.cs | 186 ++++ common/Tnb.Common/Models/DObject.cs | 45 + .../Tnb.Common/Utils}/ThrowIf.cs | 0 system/Tnb.Systems/System/DataBaseService.cs | 2 +- .../AppService/IVengineAppService.cs | 16 + .../AppService/IVmodelAppService.cs | 2 +- .../AppService/IVmodelPageAppService.cs | 2 +- .../AppService/VengineAppService.cs | 203 +++++ .../AppService/VengineAppServiceT.cs | 140 +++ .../Tnb.Vengine/AppService/VmAppService.cs | 198 ----- .../Tnb.Vengine/AppService/VmAppServiceT.cs | 120 --- .../AppService/VmodelAppService.cs | 328 ++++--- visualdev/Tnb.Vengine/AppService/VmodelDto.cs | 34 + .../AppService/VmodelPageAppService.cs | 266 +++--- .../Atrributes/VmodelSettingAttribute.cs | 17 + .../CodeGenerator/AcmenVmodelContext.cs | 29 + .../Tnb.Vengine/CodeGenerator/CodeHelper.cs | 123 +++ .../CodeGenerator/TemplateContext.cs | 77 ++ .../Tnb.Vengine/Constants/ModuleConst.cs | 1 + .../Tnb.Vengine/DataAccess/DataAccess.cs | 804 ++++++++--------- .../Tnb.Vengine/DataAccess/IDataAccess.cs | 103 ++- .../Tnb.Vengine/DataAccess/SugarHelper.cs | 39 + visualdev/Tnb.Vengine/Domain/VengineDto.cs | 155 ++++ visualdev/Tnb.Vengine/Domain/VmDbProp.cs | 295 ++++--- visualdev/Tnb.Vengine/Domain/VmDto.cs | 198 ----- visualdev/Tnb.Vengine/Domain/VmNavProp.cs | 68 +- visualdev/Tnb.Vengine/Domain/Vmodel.cs | 831 ++++++++++-------- visualdev/Tnb.Vengine/Domain/VmodelDto.cs | 34 - visualdev/Tnb.Vengine/Domain/VmodelLink.cs | 55 +- visualdev/Tnb.Vengine/Domain/VmodelPage.cs | 150 ++-- .../Tnb.Vengine/Extension/StringExtensions.cs | 577 ------------ visualdev/Tnb.Vengine/Mapper/VmodelMapper.cs | 3 +- visualdev/Tnb.Vengine/Tnb.Vengine.csproj | 5 + 41 files changed, 2820 insertions(+), 2752 deletions(-) create mode 100644 apihost/Tnb.API.Entry/wwwroot/Template/VengineSqlSugar/AppService.cshtml create mode 100644 apihost/Tnb.API.Entry/wwwroot/Template/VengineSqlSugar/EntityDto.cshtml create mode 100644 apihost/Tnb.API.Entry/wwwroot/Template/VengineSqlSugar/EntityDtoAcmen.cshtml create mode 100644 apihost/Tnb.API.Entry/wwwroot/Template/VengineSqlSugar/EntityInfo.cshtml create mode 100644 apihost/Tnb.API.Entry/wwwroot/Template/VengineSqlSugar/EntityInfoAcmen.cshtml create mode 100644 common/Tnb.Common/Extension/TnbStringExtensions.cs create mode 100644 common/Tnb.Common/Models/DObject.cs rename {visualdev/Tnb.Vengine/Util => common/Tnb.Common/Utils}/ThrowIf.cs (100%) create mode 100644 visualdev/Tnb.Vengine/AppService/IVengineAppService.cs create mode 100644 visualdev/Tnb.Vengine/AppService/VengineAppService.cs create mode 100644 visualdev/Tnb.Vengine/AppService/VengineAppServiceT.cs delete mode 100644 visualdev/Tnb.Vengine/AppService/VmAppService.cs delete mode 100644 visualdev/Tnb.Vengine/AppService/VmAppServiceT.cs create mode 100644 visualdev/Tnb.Vengine/AppService/VmodelDto.cs create mode 100644 visualdev/Tnb.Vengine/Atrributes/VmodelSettingAttribute.cs create mode 100644 visualdev/Tnb.Vengine/CodeGenerator/AcmenVmodelContext.cs create mode 100644 visualdev/Tnb.Vengine/CodeGenerator/CodeHelper.cs create mode 100644 visualdev/Tnb.Vengine/CodeGenerator/TemplateContext.cs create mode 100644 visualdev/Tnb.Vengine/Domain/VengineDto.cs delete mode 100644 visualdev/Tnb.Vengine/Domain/VmDto.cs delete mode 100644 visualdev/Tnb.Vengine/Domain/VmodelDto.cs delete mode 100644 visualdev/Tnb.Vengine/Extension/StringExtensions.cs diff --git a/apihost/Tnb.API.Entry/Tnb.API.Entry.csproj b/apihost/Tnb.API.Entry/Tnb.API.Entry.csproj index e3a54fc6..61fcc8dc 100644 --- a/apihost/Tnb.API.Entry/Tnb.API.Entry.csproj +++ b/apihost/Tnb.API.Entry/Tnb.API.Entry.csproj @@ -14,6 +14,14 @@ + + + + + + + +