diff --git a/BasicData/Tnb.BasicData.Entities/Properties/launchSettings.json b/BasicData/Tnb.BasicData.Entities/Properties/launchSettings.json new file mode 100644 index 00000000..60bc7990 --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.BasicData.Entities": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50313;http://localhost:50314" + } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Interfaces/IBasESopService.cs b/BasicData/Tnb.BasicData.Interfaces/IBasESopService.cs index ac47c8f2..1e4e57ed 100644 --- a/BasicData/Tnb.BasicData.Interfaces/IBasESopService.cs +++ b/BasicData/Tnb.BasicData.Interfaces/IBasESopService.cs @@ -18,5 +18,12 @@ namespace Tnb.BasicData.Interfaces /// public Task GetHistoryList(EsopHistoryListQueryInput input); + /// + /// 根据生产bom工序id获取实体 + /// + /// mbomProcessId + /// + public Task GetEntityByMbomProcessId(Dictionary dic); + } } \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Interfaces/Properties/launchSettings.json b/BasicData/Tnb.BasicData.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..1fcc5282 --- /dev/null +++ b/BasicData/Tnb.BasicData.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.BasicData.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50305;http://localhost:50306" + } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData/BasESopService.cs b/BasicData/Tnb.BasicData/BasESopService.cs index 61b94458..00d86f39 100644 --- a/BasicData/Tnb.BasicData/BasESopService.cs +++ b/BasicData/Tnb.BasicData/BasESopService.cs @@ -126,6 +126,18 @@ namespace Tnb.BasicData return PageResult.SqlSugarPageResult(list); } + [HttpPost] + public async Task GetEntityByMbomProcessId(Dictionary dic) + { + string mbomProcessId = dic["mbomProcessId"]; + if (!string.IsNullOrEmpty(mbomProcessId)) + { + return await _repository.GetFirstAsync(x => x.mbom_process_id == mbomProcessId && x.enabled == 1); + } + + return null; + } + [HttpPost] public async Task UploadNewVersion(UploadNewVersionInput input) { diff --git a/BasicData/Tnb.BasicData/Properties/launchSettings.json b/BasicData/Tnb.BasicData/Properties/launchSettings.json new file mode 100644 index 00000000..058fd70e --- /dev/null +++ b/BasicData/Tnb.BasicData/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.BasicData": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50307;http://localhost:50308" + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Consts/EquipmentLife.cs b/EquipMgr/Tnb.EquipMgr.Entities/Consts/EquipmentLife.cs index 7224dfc9..78c78153 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Consts/EquipmentLife.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Consts/EquipmentLife.cs @@ -21,5 +21,9 @@ namespace Tnb.EquipMgr /// 报废 /// public const string SCRAP = "4"; + /// + /// 未入场 + /// + public const string NOTADMITTED = "4"; } } \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipWorkshopChangeInput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipWorkshopChangeInput.cs new file mode 100644 index 00000000..c6a3d0da --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipWorkshopChangeInput.cs @@ -0,0 +1,10 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipWorkshopChangeInput + { + public string equip_id { get; set; } = string.Empty; + public string new_workshop_id { get; set; } = string.Empty; + public string? new_installation_location { get; set; } + public string? remark { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipWorkshopChangeQueryOutput.cs b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipWorkshopChangeQueryOutput.cs new file mode 100644 index 00000000..b1099286 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Dto/EquipWorkshopChangeQueryOutput.cs @@ -0,0 +1,36 @@ +namespace Tnb.EquipMgr.Entities.Dto +{ + public class EquipWorkshopChangeQueryOutput + { + public string id { get; set; } = string.Empty; + /// + /// 旧车间id + /// + public string old_workshop_id { get; set; } = string.Empty; + + /// + /// 新车间id + /// + public string new_workshop_id { get; set; } = string.Empty; + + /// + /// 旧安装地点 + /// + public string? old_installation_location { get; set; } + + /// + /// 新安装地点 + /// + public string? new_installation_location { get; set; } + + /// + /// 备注 + /// + public string? remark { get; set; } + + /// + /// 创建时间 + /// + public string? create_time { get; set; } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpEquipment.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpEquipment.cs index 335cda29..ff6a8947 100644 --- a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpEquipment.cs +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpEquipment.cs @@ -187,5 +187,15 @@ public partial class EqpEquipment : BaseEntity /// 工位编码 /// public string? station_code { get; set; } + + /// + /// 质保开始时间 + /// + public DateTime? warranty_start_time { get; set; } + + /// + /// 质保结束时间 + /// + public DateTime? warranty_end_time { get; set; } } diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpWorkshopChangeLog.cs b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpWorkshopChangeLog.cs new file mode 100644 index 00000000..85b448f1 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Entity/EqpWorkshopChangeLog.cs @@ -0,0 +1,72 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.EquipMgr.Entities; + +/// +/// 设备使用车间变更记录 +/// +[SugarTable("eqp_workshop_change_log")] +public partial class EqpWorkshopChangeLog : BaseEntity +{ + public EqpWorkshopChangeLog() + { + id = SnowflakeIdHelper.NextId(); + } + /// + /// 设备id + /// + public string equip_id { get; set; } = string.Empty; + + /// + /// 旧车间id + /// + public string? old_workshop_id { get; set; } + + /// + /// 新车间id + /// + public string? new_workshop_id { get; set; } + + /// + /// 旧安装地点 + /// + public string? old_installation_location { get; set; } + + /// + /// 新安装地点 + /// + public string? new_installation_location { get; set; } + + /// + /// 备注 + /// + public string? remark { get; set; } + + /// + /// 创建用户 + /// + public string? create_id { get; set; } + + /// + /// 创建时间 + /// + public DateTime? create_time { get; set; } + + /// + /// 修改用户 + /// + public string? modify_id { get; set; } + + /// + /// 修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 所属组织 + /// + public string? org_id { get; set; } + +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Entities/Properties/launchSettings.json b/EquipMgr/Tnb.EquipMgr.Entities/Properties/launchSettings.json new file mode 100644 index 00000000..0685298d --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Entities/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.EquipMgr.Entities": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50299;http://localhost:50300" + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpWorkshopChangeLogService.cs b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpWorkshopChangeLogService.cs new file mode 100644 index 00000000..f4cdd287 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/IEqpWorkshopChangeLogService.cs @@ -0,0 +1,23 @@ +using Tnb.EquipMgr.Entities.Dto; + +namespace Tnb.EquipMgr.Interfaces +{ + /// + /// 设备迁移服务 + /// + public interface IEqpWorkshopChangeLogService + { + /// + /// 根据设备id获取迁移记录 + /// + /// + public Task GetEquipWorkshopChangeList(EquipQueryInput input); + + /// + /// 设备迁移 + /// + /// + /// + public Task WorkshopChange(EquipWorkshopChangeInput input); + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr.Interfaces/Properties/launchSettings.json b/EquipMgr/Tnb.EquipMgr.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..f4a42f30 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.EquipMgr.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50303;http://localhost:50304" + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/EqpWorkshopChangeLogService.cs b/EquipMgr/Tnb.EquipMgr/EqpWorkshopChangeLogService.cs new file mode 100644 index 00000000..94074c06 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/EqpWorkshopChangeLogService.cs @@ -0,0 +1,95 @@ +using JNPF.Common.Core.Manager; +using JNPF.Common.Enums; +using JNPF.Common.Filter; +using JNPF.DependencyInjection; +using JNPF.DynamicApiController; +using JNPF.FriendlyException; +using JNPF.Systems.Entitys.Permission; +using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using SqlSugar; +using Tnb.EquipMgr.Entities; +using Tnb.EquipMgr.Entities.Dto; +using Tnb.EquipMgr.Interfaces; + +namespace Tnb.EquipMgr +{ + /// + /// 设备技术参数 + /// + [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] + [Route("api/[area]/[controller]/[action]")] + public class EqpWorkshopChangeLogService : IEqpWorkshopChangeLogService, IDynamicApiController, ITransient + { + private readonly ISqlSugarRepository _repository; + private readonly IUserManager _userManager; + + public EqpWorkshopChangeLogService(ISqlSugarRepository repository, IUserManager userManager) + { + _userManager = userManager; + _repository = repository; + } + + [HttpPost] + public async Task GetEquipWorkshopChangeList(EquipQueryInput input) + { + var db = _repository.AsSugarClient(); + // Dictionary? queryJson = new Dictionary(); + // if (input!=null && !string.IsNullOrEmpty(input.queryJson)) + // { + // queryJson = JsonConvert.DeserializeObject>(input?.queryJson ?? ""); + // } + var result = await db.Queryable() + .LeftJoin((a,b)=>a.old_workshop_id==b.Id) + .LeftJoin((a,b,c)=>a.new_workshop_id==c.Id) + .WhereIF(input!=null,a=>a.equip_id==input.equip_id) + //.WhereIF(queryJson!=null && queryJson.ContainsKey("name"),a=>a.name.Contains(queryJson["name"])) + .Select((a,b,c) => new EquipWorkshopChangeQueryOutput + { + id = a.id, + old_workshop_id = b.FullName, + new_workshop_id = c.FullName, + old_installation_location = a.old_installation_location, + new_installation_location = a.new_installation_location, + remark = a.remark, + create_time = a.create_time==null ? null : a.create_time.Value.ToString("yyyy-MM-dd"), + }).ToPagedListAsync((input?.currentPage??1), (input?.pageSize??50)); + + return PageResult.SqlSugarPageResult(result); + } + + [HttpPost] + public async Task WorkshopChange(EquipWorkshopChangeInput input) + { + var db = _repository.AsSugarClient(); + DbResult result = await db.Ado.UseTranAsync(async () => + { + EqpEquipment eqpEquipment = await db.Queryable().SingleAsync(x => x.id == input.equip_id); + + EqpWorkshopChangeLog eqpWorkshopChangeLog = new EqpWorkshopChangeLog() + { + equip_id = input.equip_id, + old_workshop_id = eqpEquipment.use_department_id, + new_workshop_id = input.new_workshop_id, + old_installation_location = eqpEquipment.installation_location, + new_installation_location = input.new_installation_location, + remark = input.remark, + create_id = _userManager.UserId, + create_time = DateTime.Now, + org_id = _userManager.GetUserInfo().Result.organizeId + }; + + await _repository.InsertAsync(eqpWorkshopChangeLog); + + await db.Updateable() + .SetColumns(x => x.use_department_id == input.new_workshop_id) + .SetColumns(x => x.installation_location == input.new_installation_location) + .Where(x => x.id == input.equip_id).ExecuteCommandAsync(); + + }); + + if(!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); + return result.IsSuccess ? "迁移成功" : result.ErrorMessage; + } + } +} \ No newline at end of file diff --git a/EquipMgr/Tnb.EquipMgr/Properties/launchSettings.json b/EquipMgr/Tnb.EquipMgr/Properties/launchSettings.json new file mode 100644 index 00000000..52e54340 --- /dev/null +++ b/EquipMgr/Tnb.EquipMgr/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.EquipMgr": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50301;http://localhost:50302" + } + } +} \ No newline at end of file diff --git a/PerMgr/Tnb.PerMgr.Entities/Properties/launchSettings.json b/PerMgr/Tnb.PerMgr.Entities/Properties/launchSettings.json new file mode 100644 index 00000000..54c1b4f2 --- /dev/null +++ b/PerMgr/Tnb.PerMgr.Entities/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.PerMgr.Entities": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50319;http://localhost:50320" + } + } +} \ No newline at end of file diff --git a/PerMgr/Tnb.PerMgr.Interfaces/Properties/launchSettings.json b/PerMgr/Tnb.PerMgr.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..4967ac13 --- /dev/null +++ b/PerMgr/Tnb.PerMgr.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.PerMgr.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50321;http://localhost:50322" + } + } +} \ No newline at end of file diff --git a/PerMgr/Tnb.PerMgr/Properties/launchSettings.json b/PerMgr/Tnb.PerMgr/Properties/launchSettings.json new file mode 100644 index 00000000..6d85c6dd --- /dev/null +++ b/PerMgr/Tnb.PerMgr/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.PerMgr": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50317;http://localhost:50318" + } + } +} \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Properties/launchSettings.json b/ProductionMgr/Tnb.ProductionMgr.Entities/Properties/launchSettings.json new file mode 100644 index 00000000..a4a524d7 --- /dev/null +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.ProductionMgr.Entities": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50311;http://localhost:50312" + } + } +} \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr.Interfaces/Properties/launchSettings.json b/ProductionMgr/Tnb.ProductionMgr.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..4dc4edc8 --- /dev/null +++ b/ProductionMgr/Tnb.ProductionMgr.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.ProductionMgr.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50315;http://localhost:50316" + } + } +} \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs index f0e28267..0699bd34 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdPackReportService.cs @@ -89,7 +89,7 @@ namespace Tnb.ProductionMgr process_id = a.process_id, plan_start_date = a.estimated_start_date, plan_end_date = a.estimated_end_date, - plan_qty = c.plan_qty, + plan_qty = c.scheduled_qty, // complete_qty = SqlFunc.Subqueryable().Where(it => it.mo_task_code == a.mo_task_code).Sum(it => it.reported_work_qty), complete_qty = a.last_process_complete_qty, mo_task_status = a.mo_task_status, @@ -179,7 +179,7 @@ namespace Tnb.ProductionMgr process_name = b.process_name, plan_start_date = a.estimated_start_date, plan_end_date = a.estimated_end_date, - plan_qty = c.plan_qty, + plan_qty = c.scheduled_qty, //complete_qty = SqlFunc.Subqueryable().Where(it => it.mo_task_code == a.mo_task_code).Sum(it => it.reported_work_qty), complete_qty = a.reported_work_qty + a.scrap_qty, mo_task_status = a.mo_task_status, @@ -197,9 +197,9 @@ namespace Tnb.ProductionMgr { nsChild[i].parentId = parentId; nsChild[i].process_id = $"{items[i].process_code}/{items[i].process_name}"; - nsChild[i].plan_start_date = items[i].estimated_start_date.HasValue ? items[i].estimated_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""; - nsChild[i].plan_end_date = items[i].estimated_end_date.HasValue ? items[i].estimated_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""; - + nsChild[i].plan_start_date = items[i].plan_start_date.HasValue ? items[i].plan_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""; + nsChild[i].plan_end_date = items[i].plan_end_date.HasValue ? items[i].plan_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss") : ""; + if (nsChild[i].workline_id.IsNotEmptyOrNull()) { var workLine = _dicWorkLine.ContainsKey(nsChild[i].workline_id) ? (Tuple)_dicWorkLine[nsChild[i].workline_id] : null; diff --git a/ProductionMgr/Tnb.ProductionMgr/Properties/launchSettings.json b/ProductionMgr/Tnb.ProductionMgr/Properties/launchSettings.json new file mode 100644 index 00000000..cce9bdec --- /dev/null +++ b/ProductionMgr/Tnb.ProductionMgr/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.ProductionMgr": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50309;http://localhost:50310" + } + } +} \ No newline at end of file diff --git a/QcMgr/Tnb.QcMgr.Entities/Properties/launchSettings.json b/QcMgr/Tnb.QcMgr.Entities/Properties/launchSettings.json new file mode 100644 index 00000000..a45ccc61 --- /dev/null +++ b/QcMgr/Tnb.QcMgr.Entities/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.QcMgr.Entities": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50295;http://localhost:50296" + } + } +} \ No newline at end of file diff --git a/QcMgr/Tnb.QcMgr.Interfaces/Properties/launchSettings.json b/QcMgr/Tnb.QcMgr.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..5f71dd6e --- /dev/null +++ b/QcMgr/Tnb.QcMgr.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.QcMgr.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50297;http://localhost:50298" + } + } +} \ No newline at end of file diff --git a/QcMgr/Tnb.QcMgr/Properties/launchSettings.json b/QcMgr/Tnb.QcMgr/Properties/launchSettings.json new file mode 100644 index 00000000..e8f5d84b --- /dev/null +++ b/QcMgr/Tnb.QcMgr/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.QcMgr": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50291;http://localhost:50292" + } + } +} \ No newline at end of file diff --git a/Tnb.Server.sln b/Tnb.Server.sln index 7d6c0e17..f7d31d69 100644 --- a/Tnb.Server.sln +++ b/Tnb.Server.sln @@ -94,6 +94,9 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "12-ProductionMgr", "12-ProductionMgr", "{ABE58B5E-610B-4159-BFF0-8B04BF700B3C}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "13-WarehouseMgr", "13-WarehouseMgr", "{D90E2789-189A-4F05-B081-27F2FABB2E7E}" + ProjectSection(SolutionItems) = preProject + WmsSignForDeliveryService.txt = WmsSignForDeliveryService.txt + EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "14-QcMgr", "14-QcMgr", "{D65B00D5-F40C-4FF2-8F8D-870772FAAA56}" EndProject @@ -131,11 +134,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tnb.ProductionMgr.Entities" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "16-PerMgr", "16-PerMgr", "{74AB6486-1090-4CC9-9D1A-F1245E3ECFC3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tnb.PerMgr", "PerMgr\Tnb.PerMgr\Tnb.PerMgr.csproj", "{D41946CF-09C6-4CA4-A1F4-42E7E1538BF7}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tnb.PerMgr", "PerMgr\Tnb.PerMgr\Tnb.PerMgr.csproj", "{D41946CF-09C6-4CA4-A1F4-42E7E1538BF7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tnb.PerMgr.Entities", "PerMgr\Tnb.PerMgr.Entities\Tnb.PerMgr.Entities.csproj", "{42AD083D-D199-4B09-ADD8-89251011C959}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tnb.PerMgr.Entities", "PerMgr\Tnb.PerMgr.Entities\Tnb.PerMgr.Entities.csproj", "{42AD083D-D199-4B09-ADD8-89251011C959}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tnb.PerMgr.Interfaces", "PerMgr\Tnb.PerMgr.Interfaces\Tnb.PerMgr.Interfaces.csproj", "{F3656494-27D3-4BD7-B831-8D909DFBD7B9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tnb.PerMgr.Interfaces", "PerMgr\Tnb.PerMgr.Interfaces\Tnb.PerMgr.Interfaces.csproj", "{F3656494-27D3-4BD7-B831-8D909DFBD7B9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs index 57c90ee2..83daa894 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Consts/WmsWareHouseConst.cs @@ -15,6 +15,10 @@ namespace Tnb.WarehouseMgr.Entities.Consts /// public const string WMS_INSTOCK_D_BILL_STATUS_TYPEID = "25065133038101"; /// + /// 业务类型TypeId + /// + public const string WMS_BIZTYPE_ID = "25043955941909"; + /// /// 预任务生成EnCode /// public const string WMS_PRETASK_H_ENCODE = "PreTaskGen"; @@ -42,8 +46,8 @@ namespace Tnb.WarehouseMgr.Entities.Consts /// 预任务单据状态-已完成Id /// public const string PRETASK_BILL_STATUS_CANCEL_ID = "26126842129701"; - - // + + // /// /// 任务单据状态-待执行Id /// @@ -65,7 +69,7 @@ namespace Tnb.WarehouseMgr.Entities.Consts /// 任务单据状态-已取消ID /// public const string TASK_BILL_STATUS_CANCEL_ID = "26126863175461"; - + /// /// 单据状态-作业中 /// @@ -74,6 +78,23 @@ namespace Tnb.WarehouseMgr.Entities.Consts /// 单据状态-完成 /// public const string BILLSTATUS_COMPLETE_ID = "25065149810453"; + /// + /// 单据状态-取消 + /// + public const string BILLSTATUS_CANCEL_ID = "25065146252309"; + /// + /// 单据状态-新增 + /// + public const string BILLSTATUS_ADD_ID = "25065138925589"; + /// + /// 单据状态-已呼叫 + /// + public const string BILLSTATUS_CALLED_ID = "25065138925589"; + /// + /// 单据状态-待配送 + /// + public const string BILLSTATUS_TOBESHIPPED_ID = "26169434213669"; + /// /// 任务类型-入库TypeId /// @@ -86,7 +107,7 @@ namespace Tnb.WarehouseMgr.Entities.Consts /// 任务类型-转移TypeId /// public const string WMS_PRETASK_TRANSFER_TYPE_ID = "26126753796389"; - + /// /// 预任务生成业务类型-空载具出库 /// @@ -149,7 +170,5 @@ namespace Tnb.WarehouseMgr.Entities.Consts /// public const string BARCODE_PRINT_STATUS_COMPLETE_ID = "26191372853541"; - - } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/SignForDeliveryInput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/SignForDeliveryInput.cs new file mode 100644 index 00000000..f41c5f38 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Inputs/SignForDeliveryInput.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.WarehouseMgr.Entities.Dto.Inputs +{ + /// + /// 出库签收输入参数 + /// + public class SignForDeliveryInput + { + /// + /// 任务ID + /// + public string disTaskId { get; set; } + /// + /// 载具ID + /// + public string carryId { get; set; } + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Outputs/CarryInfoOutput.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Outputs/CarryInfoOutput.cs new file mode 100644 index 00000000..279ad345 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Dto/Outputs/CarryInfoOutput.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.WarehouseMgr.Entities.Dto.Outputs +{ + /// + /// 载具信息输出类 + /// + public class CarryInfoOutput + { + /// + /// 租户ID + /// + public string? tenant_id { get; set; } + + /// + /// 所属组织ID + /// + public string? org_id { get; set; } + + /// + /// 载具编号 + /// + public string carry_code { get; set; } = string.Empty; + + /// + /// 载具名称 + /// + public string carry_name { get; set; } = string.Empty; + + /// + /// 状态 + /// + public int status { get; set; } + + /// + /// 载具状态 + /// + public string carry_status { get; set; } + + /// + /// 载具分类ID + /// + public string carrystd_id { get; set; } = string.Empty; + + /// + /// 载具库位ID + /// + public string? location_id { get; set; } + + /// + /// 载具库位编号 + /// + public string? location_code { get; set; } + + /// + /// 是否锁定 + /// + public int is_lock { get; set; } + + /// + /// 出库类型 + /// + public string out_status { get; set; } + + /// + /// 是否检验 + /// + public int is_check { get; set; } + + /// + /// 来源单据ID + /// + public string? source_id { get; set; } + + /// + /// 来源单据代码 + /// + public string? source_code { get; set; } + + /// + /// 创建用户 + /// + public string create_id { get; set; } = string.Empty; + + /// + /// 创建时间 + /// + public DateTime create_time { get; set; } = DateTime.Now; + + /// + /// 最后修改人员ID + /// + public string? modify_id { get; set; } + + /// + /// 最后修改时间 + /// + public DateTime? modify_time { get; set; } + + /// + /// 扩展字段 + /// + public string? extras { get; set; } + + /// + /// 时间戳(用于并发控制) + /// + public DateTime? timestamp { get; set; } + + /// + /// 打包号 + /// + public string? bale_num { get; set; } + + /// + /// 齐套搭配方案ID + /// + public string? collocation_scheme_id { get; set; } + + /// + /// 齐套搭配方案编号 + /// + public string? collocation_scheme_code { get; set; } + /// + /// 载具明细列表 + /// + public List carryDetails { get; set; }=new List(); + /// + /// 载具条码列表 + /// + public List carryCodes { get; set; } = new List(); + /// + /// 载具无聊分拣明细 + /// + public List carryMats { get; set; } = new List(); + + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs index 94df7398..fcd567dd 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsCarryH.cs @@ -1,6 +1,7 @@ using JNPF.Common.Contracts; using JNPF.Common.Security; using SqlSugar; +using SqlSugar.DbConvert; namespace Tnb.WarehouseMgr.Entities; @@ -42,7 +43,9 @@ public partial class WmsCarryH : BaseEntity /// /// 载具状态 /// - public string carry_status { get; set; } + /// + [SugarColumn(ColumnDataType = "varchar(32)", SqlParameterDbType = typeof(CommonPropertyConvert))] + public int carry_status { get; set; } /// /// 载具分类ID diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskH.part.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskH.part.cs index cf9870e0..9bbbc560 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskH.part.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsDistaskH.part.cs @@ -13,5 +13,5 @@ public partial class WmsDistaskH /// 载具状态 /// [SugarColumn(IsIgnore = true)] - public string carry_status { get; set; } + public int carry_status { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsFeedingrecordCode.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsFeedingrecordCode.cs index bba6c031..cdc69402 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsFeedingrecordCode.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsFeedingrecordCode.cs @@ -94,9 +94,4 @@ public partial class WmsFeedingrecordCode : BaseEntity /// public DateTime? modify_time { get; set; } - /// - /// 行号 - /// - public int no { get; set; } - } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutD.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutD.cs index 7a0478e6..e88b2244 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutD.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsKittingoutD.cs @@ -55,9 +55,9 @@ public partial class WmsKittingoutD : BaseEntity public string? code_batch { get; set; } /// - /// 数量(件数) + /// 出库需求数量 /// - public decimal qty { get; set; } + public decimal pr_qty { get; set; } /// /// 箱数 diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs index 1a665b3a..b8001b33 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.cs @@ -122,7 +122,7 @@ public partial class WmsSetsortingH : BaseEntity /// /// 顺序号 /// - public int order { get; set; } + public int seq { get; set; } /// /// 备注 @@ -152,11 +152,21 @@ public partial class WmsSetsortingH : BaseEntity /// /// 修改用户 /// - public string modify_id { get; set; } = string.Empty; + public string? modify_id { get; set; } /// /// 修改时间 /// - public DateTime modify_time { get; set; } = DateTime.Now; + public DateTime? modify_time { get; set; } + + /// + /// 流程任务Id + /// + public string? f_flowtaskid { get; set; } + + /// + /// 流程引擎Id + /// + public string? f_flowid { get; set; } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.part.cs b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.part.cs new file mode 100644 index 00000000..0d34f784 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Entity/WmsSetsortingH.part.cs @@ -0,0 +1,20 @@ +using JNPF.Common.Contracts; +using JNPF.Common.Security; +using SqlSugar; + +namespace Tnb.WarehouseMgr.Entities; + +/// +/// 齐套分拣主表 +/// +public partial class WmsSetsortingH +{ + /// + /// 载具ID + /// + [SugarColumn(IsIgnore = true)] + public string? carry_id { get; set; } + + [SugarColumn(IsIgnore = true)] + public string? carry_code { get; set; } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Entities/Properties/launchSettings.json b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Properties/launchSettings.json new file mode 100644 index 00000000..190e0f72 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Entities/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.WarehouseMgr.Entities": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50287;http://localhost:50288" + } + } +} \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmskittingOutService.cs b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmskittingOutService.cs new file mode 100644 index 00000000..db94d4ad --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/IWmskittingOutService.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tnb.WarehouseMgr.Interfaces +{ + /// + /// 齐套出库服务接口 + /// + public interface IWmskittingOutService + { + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/Properties/launchSettings.json b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..e52cdd23 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.WarehouseMgr.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50293;http://localhost:50294" + } + } +} \ No newline at end of file diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index b20cea3f..c8390c52 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -446,11 +446,11 @@ namespace Tnb.WarehouseMgr for (int i = 0; i < multis.Count; i++) { var carryStatus = multis[i].carry_status; - if (multis[i].carry_status == "0") + if (multis[i].carry_status == (int)EnumCarryStatus.空闲) { - carryStatus = "1"; + carryStatus = (int)EnumCarryStatus.空闲; } - await _db.Updateable().SetColumns(it => new BasLocation { is_use = carryStatus, is_lock = 0 }).Where(it => it.id == multis[i].endlocation_id).ExecuteCommandAsync(); + await _db.Updateable().SetColumns(it => new BasLocation { is_use = carryStatus.ToString(), is_lock = 0 }).Where(it => it.id == multis[i].endlocation_id).ExecuteCommandAsync(); } //更新业务主表的单据状态 if (disTasks?.Count > 0) @@ -517,7 +517,10 @@ namespace Tnb.WarehouseMgr { await _db.Ado.BeginTranAsync(); //根据生成的预任务,插入预任务操作记录 - await _db.Insertable(input.PreTaskRecord).ExecuteCommandAsync(); + if (input.PreTaskRecord != null) + { + await _db.Insertable(input.PreTaskRecord).ExecuteCommandAsync(); + } if (input.PreTaskHandleCodes.Count > 0) { await _db.Insertable(input.PreTaskHandleCodes).ExecuteCommandAsync(); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs index 377f2f6d..006c31e9 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryBindService.cs @@ -22,6 +22,7 @@ using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr @@ -69,9 +70,9 @@ namespace Tnb.WarehouseMgr var subCarry = await _db.Queryable().SingleAsync(it => it.id == subCarryId); if (carry != null && subCarry != null) { - carry.carry_status = "1"; + carry.carry_status = (int)EnumCarryStatus.占用; var row = await _db.Updateable(carry).ExecuteCommandAsync(); - subCarry.carry_status = "1"; + subCarry.carry_status = (int)EnumCarryStatus.占用; row = await _db.Updateable(subCarry).ExecuteCommandAsync(); //更新载具明细表 WmsCarryD wmsCarryD = new() diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs index d7c079df..8945d77a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryService.cs @@ -18,6 +18,7 @@ using Tnb.Common.Utils; using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Dto.Outputs; using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; @@ -35,11 +36,11 @@ namespace Tnb.WarehouseMgr private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; public WmsCarryService( - ISqlSugarRepository repository, - IUserManager userManager, - IBillRullService billRullService, + ISqlSugarRepository repository, + IUserManager userManager, + IBillRullService billRullService, IRunService runService, - IVisualDevService visualDevService ) + IVisualDevService visualDevService) { _db = repository.AsSugarClient(); _userManager = userManager; @@ -49,6 +50,23 @@ namespace Tnb.WarehouseMgr OverideFuncs.CreateAsync = ExchangeCarry; } + /// + /// 根据载具ID获取载具信息 + /// + /// + /// + [HttpGet] + public async Task GetCarryInfoById([FromRoute] string carryId) + { + var carryOutPut = await _db.Queryable().Where(it => it.id == carryId).Select().FirstAsync(); + if (carryOutPut == null) throw new AppFriendlyException("找不到载具", 500); + carryOutPut.carryDetails = await _db.Queryable().Where(it=>it.carry_id == carryId).ToListAsync(); + carryOutPut.carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + carryOutPut.carryMats = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); + return carryOutPut; + } + + /// /// 更换载具 /// @@ -63,7 +81,7 @@ namespace Tnb.WarehouseMgr /// private async Task ExchangeCarry(VisualDevModelDataCrInput input) { - + var isOk = false; try @@ -142,11 +160,11 @@ namespace Tnb.WarehouseMgr try { carryObj.status = 0; - carryObj.carry_status = "0"; + carryObj.carry_status = (int)EnumCarryStatus.空闲; carryObj.location_id = null; carryObj.location_code = null; carryObj.out_status = "0"; - carryObj.is_check = 0; + carryObj.is_check = 1; carryObj.status = 1; carryObj.bale_num = null; carryObj.collocation_scheme_id = null; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs index 739d972f..1bdd4499 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsCarryUnbindService.cs @@ -22,6 +22,7 @@ using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr @@ -91,9 +92,9 @@ namespace Tnb.WarehouseMgr wmsCarryUnbindCode.create_time = DateTime.Now; row = await _db.Insertable(wmsCarryUnbindCode).ExecuteCommandAsync(); } - carry.carry_status = "0"; + carry.carry_status = (int)EnumCarryStatus.空闲; row = await _db.Updateable(carry).ExecuteCommandAsync(); - subCarry.carry_status = "0"; + subCarry.carry_status = (int)EnumCarryStatus.空闲; row = await _db.Updateable(subCarry).ExecuteCommandAsync(); isOk = (row > 0); if (!isOk) throw Oops.Oh(ErrorCode.COM1001); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs index 94c43365..5066db04 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsDeliveryService.cs @@ -158,7 +158,7 @@ namespace Tnb.WarehouseMgr var location = await _db.Queryable().SingleAsync(it => it.id == input.data[nameof(WmsDelivery.startlocation_id)].ToString()); { //载具加锁,增加库位信息 - await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = ((int)EnumCarryStatus.占用).ToString(), + await _db.Updateable().SetColumns(it => new WmsCarryH { carry_status = (int)EnumCarryStatus.占用, is_lock = 1, location_id = input.data[nameof(WmsDelivery.startlocation_id)].ToString(), location_code = location.location_code}).Where(it => it.id == input.data[nameof(WmsDelivery.carry_id)].ToString()).ExecuteCommandAsync(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs index d6beff87..fe5418ca 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsEmptyOutstockService .cs @@ -78,7 +78,7 @@ namespace Tnb.WarehouseMgr var setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)].ToString()); var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() - && a.carry_status == "0" && a.is_lock == 0 && b.is_lock == 0) + && a.carry_status == (int)EnumCarryStatus.空闲 && a.is_lock == 0 && b.is_lock == 0) .ToListAsync(); WmsPointH sPoint = null; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs index 2bb1f90e..52078432 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsOutStockService.cs @@ -81,24 +81,40 @@ namespace Tnb.WarehouseMgr List carryCodes = new(); foreach (var os in outStockDList) { - var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id) - .Where((a, b) => b.material_id == os.material_id && b.code_batch == os.code_batch && a.is_lock == 0 && !string.IsNullOrEmpty(a.location_id) && a.status == (int)EnumCarryStatus.占用) + var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id).InnerJoin((a, b, c) => a.location_id == c.id) + .Where((a, b, c) => b.material_id == os.material_id && a.is_lock == 0 && !string.IsNullOrEmpty(a.location_id) && a.status == (int)EnumCarryStatus.占用 && c.is_type == ((int)EnumLocationType.存储库位).ToString()) + .WhereIF(!string.IsNullOrEmpty(os.code_batch), (a, b) => b.code_batch == os.code_batch) .Select() .ToListAsync(); if (carryCodesPart?.Count > 0) { + carryCodes.AddRange(carryCodesPart); var codeQty = carryCodes.Sum(x => x.codeqty); if (codeQty < os.pr_qty) { throw new AppFriendlyException($"需要出库[{os.pr_qty}],实际库存{codeQty},数量不足", 500); } - var partCarryMats = carryCodesPart.Adapt>(); - partCarryMats.ForEach(x => + List curCarryCodes = new(); + for (int i = 0; i < carryCodesPart.Count; i++) { - x.need_qty = (int)os.pr_qty; - x.real_qty = codeQty; - }); + if (os.pr_qty > carryCodesPart[i].codeqty) + { + os.pr_qty -= carryCodesPart[i].codeqty; + curCarryCodes.Add(carryCodesPart[i]); + } + else if (os.pr_qty <= carryCodesPart[i].codeqty) + { + carryCodesPart[i].codeqty = os.pr_qty; + curCarryCodes.Add(carryCodesPart[i]); + break; + } + } + var partCarryMats = curCarryCodes.Adapt>(); + for (int i = 0; i < partCarryMats.Count; i++) + { + partCarryMats[i].need_qty = carryCodesPart[i].codeqty; + } carryMats.AddRange(partCarryMats); } } @@ -109,12 +125,12 @@ namespace Tnb.WarehouseMgr .Select(x => { WmsCarryMat? carryMat = x.FirstOrDefault()!; - carryMat.real_qty = x.Sum(d => d.real_qty); + carryMat.need_qty = x.Sum(d => d.need_qty); return carryMat; }) .ToList(); await _db.Insertable(carryMats).ExecuteCommandAsync(); - var dic = carryMats.DistinctBy(x => x.carry_id).ToDictionary(x => x.carry_id, x => x.real_qty); + var dic = carryMats.DistinctBy(x => x.carry_id).ToDictionary(x => x.carry_id, x => x.need_qty); var allOutIds = new List(); var sortingOutIds = new List(); foreach (var pair in dic) diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs index eecedd09..657c232a 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryBindService.cs @@ -22,6 +22,7 @@ using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr @@ -83,9 +84,9 @@ namespace Tnb.WarehouseMgr create_time = DateTime.Now }; var row = await _db.Insertable(wmsCarryD).ExecuteCommandAsync(); - carry.carry_status = "1"; + carry.carry_status = (int)EnumCarryStatus.占用; row = await _db.Updateable(carry).ExecuteCommandAsync(); - subCarry.carry_status = "1"; + subCarry.carry_status = (int)EnumCarryStatus.占用; row = await _db.Updateable(subCarry).ExecuteCommandAsync(); var items = await _db.Queryable().Where(it => it.carry_id == subCarryId).ToListAsync(); //更新载具绑定条码表 diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs index 37b39ebf..6652b476 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDACarryUnbindService .cs @@ -22,6 +22,7 @@ using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Consts; using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; namespace Tnb.WarehouseMgr @@ -90,9 +91,9 @@ namespace Tnb.WarehouseMgr wmsCarryUnbindCode.create_time = DateTime.Now; row = await _db.Insertable(wmsCarryUnbindCode).ExecuteCommandAsync(); } - carry.carry_status = "0"; + carry.carry_status = (int)EnumCarryStatus.空闲; row = await _db.Updateable(carry).ExecuteCommandAsync(); - subCarry.carry_status = "0"; + subCarry.carry_status = (int)EnumCarryStatus.空闲; row = await _db.Updateable(subCarry).ExecuteCommandAsync(); isOk = (row > 0); if (!isOk) throw Oops.Oh(ErrorCode.COM1001); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs index 2ecb1828..3b44dd0b 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDADeliveryService.cs @@ -157,7 +157,7 @@ namespace Tnb.WarehouseMgr //载具加锁,增加库位信息 await _db.Updateable().SetColumns(it => new WmsCarryH { - carry_status = ((int)EnumCarryStatus.占用).ToString(), + carry_status = (int)EnumCarryStatus.占用, is_lock = 1, location_id = input.data[nameof(WmsDelivery.startlocation_id)].ToString(), location_code = location.location_code diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs index 0f4dbfda..ba1ace87 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAEmptyOutstockService .cs @@ -75,7 +75,7 @@ namespace Tnb.WarehouseMgr var setQty = await _db.Queryable().FirstAsync(it => it.bill_code == input.data[nameof(WmsEmptyOutstockH.bill_code)].ToString()); var carrys = await _db.Queryable().LeftJoin((a, b) => a.location_id == b.id) .Where((a, b) => a.carrystd_id == input.data[nameof(WmsEmptyOutstockH.carrystd_id)].ToString() - && a.carry_status == "0" && a.is_lock == 0 && b.is_lock == 0) + && a.carry_status ==(int)EnumCarryStatus.空闲 && a.is_lock == 0 && b.is_lock == 0) .ToListAsync(); WmsPointH sPoint = null; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs index 45fbce7b..5143677d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAFeedingService.cs @@ -61,10 +61,9 @@ namespace Tnb.WarehouseMgr /// /// /// + private async Task WmsPDAFeedingRecord(VisualDevModelDataCrInput input) { - - var isOk = false; try { @@ -79,35 +78,24 @@ namespace Tnb.WarehouseMgr var feedBox = await _db.Queryable().SingleAsync(it => it.feedbox_code == feedBoxCode); var carryMaterial = await _db.Queryable().FirstAsync(it => it.carry_id == carryId); var carryCodes = await _db.Queryable().Where(it => it.carry_id == carryId).ToListAsync(); - if (carry != null && feedBox != null) + if (carryMaterial != null && feedBox != null && carry != null) { //更新投料箱 feedBox.material_id = carryMaterial.material_id; feedBox.material_code = carryMaterial.material_code; feedBox.qty = carryMaterial.qty; feedBox.batch = carryMaterial?.code_batch!; - feedBox.status = carry.status; - feedBox.create_id = _userManager.UserId; - feedBox.create_time = DateTime.Now; - var row = await _db.Updateable(feedBox).ExecuteCommandAsync(); - //更新投料记录条码表 - foreach (var carryCode in carryCodes) - { - WmsFeedingrecordCode wmsFeedingrecordCode = new(); - wmsFeedingrecordCode.id = SnowflakeIdHelper.NextId(); - wmsFeedingrecordCode.org_id = _userManager.User.OrganizeId; - wmsFeedingrecordCode.record_id = input.data["ReturnIdentity"]?.ToString()!; - wmsFeedingrecordCode.material_id = carryCode.material_id; - wmsFeedingrecordCode.material_code = carryCode.material_code; - wmsFeedingrecordCode.barcode = carryCode.barcode; - wmsFeedingrecordCode.code_batch = carryCode.code_batch; - wmsFeedingrecordCode.codeqty = carryCode.codeqty; - wmsFeedingrecordCode.unit_id = carryCode.unit_id; - wmsFeedingrecordCode.unit_code = carryCode.unit_code; - wmsFeedingrecordCode.create_id = _userManager.UserId; - wmsFeedingrecordCode.create_time = DateTime.Now; - row = await _db.Insertable(wmsFeedingrecordCode).ExecuteCommandAsync(); - } + feedBox.modify_id = _userManager.UserId; + feedBox.modify_time = DateTime.Now; + var row = await _db.Updateable(feedBox) + .UpdateColumns(it => new { + it.material_id, + it.material_code, + it.qty, + it.batch, + it.modify_id, + it.modify_time + }).ExecuteCommandAsync(); //更新载具 row = await UpdateNullCarry(carry); isOk = (row > 0); @@ -115,13 +103,13 @@ namespace Tnb.WarehouseMgr } else { - if (carry == null) + if (carryMaterial == null) { - throw new AppFriendlyException("没有可用的旧载具", 500); + throw new AppFriendlyException("没有可用的载具", 500); } if (feedBox == null) { - throw new AppFriendlyException("没有可用的新载具", 500); + throw new AppFriendlyException("没有可用的投料箱", 500); } } @@ -129,7 +117,7 @@ namespace Tnb.WarehouseMgr } catch (Exception ex) { - Log.Error("载具更换失败", ex); + Log.Error("投料失败", ex); await _db.Ado.RollbackTranAsync(); throw; } @@ -142,7 +130,7 @@ namespace Tnb.WarehouseMgr try { carryObj.status = 0; - carryObj.carry_status = "0"; + carryObj.carry_status = (int)EnumCarryStatus.空闲; carryObj.location_id = null; carryObj.location_code = null; carryObj.out_status = "0"; diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs index fa06b6d5..f091e3fe 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInStockService.cs @@ -239,7 +239,7 @@ namespace Tnb.WarehouseMgr await _db.Insertable(carryCodes).ExecuteCommandAsync(); await _db.Insertable(instockCOdes).CallEntityMethod(it => it.Create(orgId)).ExecuteCommandAsync(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, - it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = ((int)EnumCarryStatus.占用).ToString(), location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, + it => new WmsCarryH { carry_code = input.data[nameof(WmsCarryH.carry_code)].ToString()!, is_lock = 1, carry_status = (int)EnumCarryStatus.占用, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode }, it => new BasLocation { is_lock = 1, is_use = "1" }); if (instockCOdes?.Count > 0) { diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs index 54c69b7b..89027139 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDAInbaleService.cs @@ -145,7 +145,7 @@ namespace Tnb.WarehouseMgr var baleNum = input.data[nameof(WmsCarryH.bale_num)]?.ToString(); await _wareHouseService.GenInStockTaskHandleAfter(preTaskUpInput, - it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, carry_status = ((int)EnumCarryStatus.寄存).ToString(), bale_num = baleNum }, + it => new WmsCarryH { is_lock = 1, location_id = preTaskUpInput.CarryStartLocationId, location_code = preTaskUpInput.CarryStartLocationCode, carry_status = (int)EnumCarryStatus.寄存, bale_num = baleNum }, it => new BasLocation { is_lock = 1 }); //((int)EnumCarryStatus.寄存).ToString() } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs index 44c4981a..259fa4e2 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPDATransferService.cs @@ -122,7 +122,7 @@ namespace Tnb.WarehouseMgr //载具加锁,增加库位信息 await _db.Updateable().SetColumns(it => new WmsCarryH { - carry_status = ((int)EnumCarryStatus.占用).ToString(), + carry_status = (int)EnumCarryStatus.占用, is_lock = 1, location_id = input.data[nameof(WmsTransfer.startlocation_id)].ToString(), location_code = location.location_code diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs new file mode 100644 index 00000000..7bc941a4 --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSetSortingService.cs @@ -0,0 +1,197 @@ +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.Systems.Interfaces.System; +using Mapster; +using Microsoft.AspNetCore.Mvc; +using NPOI.SS.Formula; +using SqlSugar; +using Tnb.BasicData.Entities; +using Tnb.WarehouseMgr.Entities; +using Tnb.WarehouseMgr.Entities.Consts; +using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Enums; +using Tnb.WarehouseMgr.Interfaces; + +namespace Tnb.WarehouseMgr +{ + /// + /// 齐套分拣服务类 + /// + public class WmsSetSortingService : BaseWareHouseService + { + private readonly ISqlSugarClient _db; + private readonly IWareHouseService _wareHouseService; + private readonly IBillRullService _billRullService; + private readonly IUserManager _userManager; + + public WmsSetSortingService(ISqlSugarRepository repository, IWareHouseService wareHouseService, IUserManager userManager, IBillRullService billRullService) + { + _db = repository.AsSugarClient(); + _wareHouseService = wareHouseService; + _billRullService = billRullService; + _userManager = userManager; + } + + /// + /// 齐套分拣(新增状态) + /// + /// + [HttpPost] + public async Task PackSortingByAdd() + { + var setSortings = await _db.Queryable() + .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID).OrderBy(a => a.seq) + .ToListAsync(); + var items = await _db.Queryable().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_ON_ID).ToListAsync(); + var onFlag = items?.Count > 0; + if (setSortings?.Count > 0 && !onFlag) + { + var singleSorting = setSortings[^setSortings.Count]; + var setSortingDList = await _db.Queryable().Where(it => it.bill_id == singleSorting.id).ToListAsync(); + if (setSortingDList?.Count > 0) + { + List carryMats = new(); + List carryCodes = new(); + List carryIds = new(); + foreach (var os in setSortingDList) + { + var carryCodesPart = await _db.Queryable().InnerJoin((a, b) => a.id == b.carry_id) + .Where((a, b) => b.material_id == os.material_id && a.is_lock == 0 && !string.IsNullOrEmpty(a.location_id) && a.status == (int)EnumCarryStatus.占用) + .WhereIF(!string.IsNullOrEmpty(os.code_batch), (a, b) => b.code_batch == os.code_batch) + .Select() + .ToListAsync(); + if (carryCodesPart?.Count > 0) + { + carryCodes.AddRange(carryCodesPart); + var codeQty = carryCodes.Sum(x => x.codeqty); + if (codeQty < os.pr_qty) + { + throw new AppFriendlyException($"需要出库[{os.pr_qty}],实际库存{codeQty},数量不足", 500); + } + var partCarryMats = carryCodesPart.Adapt>(); + for (int i = 0; i < partCarryMats.Count; i++) + { + partCarryMats[i].need_qty = carryCodesPart[i].codeqty; + } + + carryMats.AddRange(partCarryMats); + } + } + if (carryMats.Count > 0) + { + carryMats.ForEach(x => x.id = SnowflakeIdHelper.NextId()); + carryMats = carryMats.OrderBy(o => o.create_time).GroupBy(g => new { g.carry_id, g.material_id, g.code_batch }) + .Select(x => + { + WmsCarryMat? carryMat = x.FirstOrDefault()!; + carryMat.need_qty = x.Sum(d => d.need_qty); + return carryMat; + }) + .ToList(); + await _db.Insertable(carryMats).ExecuteCommandAsync(); + var dic = carryMats.DistinctBy(x => x.carry_id).ToDictionary(x => x.carry_id, x => x.need_qty); + + carryIds = carryMats.Select(x => x.carry_id).Distinct().ToList(); + await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.全部出).ToString() }).Where(it => carryIds.Contains(it.id)).ExecuteCommandAsync(); + //天益项目不需要 + //await _db.Updateable().SetColumns(it => new WmsCarryH { out_status = ((int)EnumOutStatus.分拣出).ToString() }).Where(it => sortingOutIds.Contains(it.id)).ExecuteCommandAsync(); + } + var carrys = await _db.Queryable().Where(it => carryIds.Contains(it.id)).ToArrayAsync(); + if (carrys?.Length > 0) + { + List preTasks = new(); + List locIds = new(); + string firstLocationId = "27010980724501", secondLocationId = "27010987857941"; + if (carrys.Length > 6) + { + var leftCarrys = carrys[..6]; + var rightCarrys = carrys[6..]; + await _genPreTask(leftCarrys, locIds, firstLocationId, singleSorting.id, singleSorting.bill_code, preTasks); + await _genPreTask(rightCarrys, locIds, secondLocationId, singleSorting.id, singleSorting.bill_code, preTasks); + } + else + { + await _genPreTask(carrys, locIds, firstLocationId, singleSorting.id, singleSorting.bill_code, preTasks); + } + var isOk = await _wareHouseService.GenPreTask(preTasks, null); + GenPreTaskUpInput genPreTaskAfterUpInput = new(); + genPreTaskAfterUpInput.CarryIds = preTasks.Select(x => x.carry_id).ToList(); + genPreTaskAfterUpInput.LocationIds = new HashSet(locIds).ToList(); + await _wareHouseService.GenInStockTaskHandleAfter(genPreTaskAfterUpInput, it => new WmsCarryH { is_lock = 1, carry_status = (int)EnumCarryStatus.齐套分拣 }, it => new BasLocation { is_use = ((int)EnumCarryStatus.齐套分拣).ToString() }); + } + + } + } + } + + private async Task _genPreTask(WmsCarryH[] carrys, List locIds, string eLocationId, string requireId, string requireCode, List preTasks) + { + var loc = await _db.Queryable().SingleAsync(it => it.id == eLocationId); + foreach (var carry in carrys) + { + WmsPointH sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carry.location_id); + WmsPointH ePoint = await _db.Queryable().FirstAsync(it => it.location_id == eLocationId); + + if (sPoint != null && ePoint != null) + { + var points = await _wareHouseService.PathAlgorithms(sPoint.id, ePoint.id); + locIds.AddRange(points.Select(x => x.location_id).ToList()!); + //根据获取的路径点生成预任务,生成顺序必须预路径算法返回的起终点的顺序一致(预任务顺序) + if (points?.Count > 0) + { + if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + var curPreTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + var sPoint = it.FirstOrDefault(); + var ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new(); + preTask.org_id = _userManager.User.OrganizeId; + preTask.startlocation_id = sPoint?.location_id!; + preTask.startlocation_code = sPoint?.location_code!; + preTask.endlocation_id = ePoint?.location_id!; + preTask.endlocation_code = ePoint?.location_code!; + preTask.start_floor = sPoint?.floor.ToString(); + preTask.end_floor = ePoint?.floor.ToString(); + preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); + preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; + preTask.biz_type = WmsWareHouseConst.BIZTYPE_WMSOUTSTOCK_ID; + preTask.task_type = WmsWareHouseConst.WMS_PRETASK_OUTSTOCK_TYPE_ID; + preTask.carry_id = carry.id; + preTask.carry_code = carry.carry_code; + preTask.area_id = sPoint?.area_id!; + preTask.area_code = it.Key; + preTask.require_id = requireId; + preTask.require_code = requireCode; + preTask.create_id = _userManager.UserId; + preTask.create_time = DateTime.Now; + return preTask; + }).ToList(); + if (loc.is_sign == 0) + { + curPreTasks[^1].is_sign = 0; // 修改最后一个元素的是否签收值 + } + preTasks.AddRange(curPreTasks); + + } + } + } + } + + + public override Task ModifyAsync(WareHouseUpInput input) + { + return Task.CompletedTask; + + } + + + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs new file mode 100644 index 00000000..43d8af9d --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSignForDeliveryService.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; +using JNPF.Common.Contracts; +using JNPF.Common.Enums; +using JNPF.Common.Extension; +using JNPF.FriendlyException; +using JNPF.Systems.Interfaces.System; +using Microsoft.AspNetCore.Mvc; +using Microsoft.CodeAnalysis.Operations; +using SqlSugar; +using Tnb.BasicData.Entities; +using Tnb.WarehouseMgr.Entities; +using Tnb.WarehouseMgr.Entities.Consts; +using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Dto.Inputs; +using Tnb.WarehouseMgr.Interfaces; + +namespace Tnb.WarehouseMgr +{ + /// + /// 出库签收 + /// + public class WmsSignForDeliveryService : BaseWareHouseService + { + private readonly ISqlSugarClient _db; + private readonly IWmsCarryService _wareCarryService; + private readonly IDictionaryDataService _dictionaryDataService; + private static Dictionary _dicBizType = new(); + public WmsSignForDeliveryService(ISqlSugarRepository repository, IWmsCarryService wareCarryService, IDictionaryDataService dictionaryDataService) + { + _db = repository.AsSugarClient(); + _wareCarryService = wareCarryService; + _dictionaryDataService = dictionaryDataService; + } + /// + /// 根据载具ID获取,对应的执行任务记录 + /// + /// + /// + [HttpGet] + public async Task GetDisTasksByCarryId([FromRoute] string carryId) + { + var item = await _db.Queryable().FirstAsync(it => it.carry_id == carryId && it.status == WmsWareHouseConst.TASK_BILL_STATUS_COMPLE_ID && it.is_sign == 0); + return item; + } + /// + /// 出库签收 + /// + /// + [HttpPost] + public async Task SignForDelivery(SignForDeliveryInput input) + { + if (_dicBizType.Count < 1) + { + _dicBizType = await _dictionaryDataService.GetDictionaryByTypeId(WmsWareHouseConst.WMS_BIZTYPE_ID); + } + try + { + await _db.Ado.BeginTranAsync(); + + var carry = await _db.Queryable().SingleAsync(it => it.id == input.carryId); + if (carry != null) + { + var disTask = await _db.Queryable().SingleAsync(it => it.id == input.disTaskId); + if (disTask != null) + { + if (_dicBizType.ContainsKey(disTask.biz_type)) + { + switch (_dicBizType[disTask.biz_type]) + { + case "空载具出库": + case "寄存出库": + case "齐套出库": + case "一般出库": + await _wareCarryService.UpdateNullCarry(carry); + break; + } + } + } + var loc = await _db.Queryable().SingleAsync(it => it.id == carry.location_id); + loc.is_use = "0"; + await _db.Updateable(loc).UpdateColumns(it => it.is_use).ExecuteCommandAsync(); + } + + await _db.Ado.CommitTranAsync(); + } + catch (Exception) + { + await _db.Ado.RollbackTranAsync(); + throw; + } + } + + + } +} diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs index 2ce0a3c7..20f2935c 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferService.cs @@ -122,7 +122,7 @@ namespace Tnb.WarehouseMgr //载具加锁,增加库位信息 await _db.Updateable().SetColumns(it => new WmsCarryH { - carry_status = ((int)EnumCarryStatus.占用).ToString(), + carry_status = (int)EnumCarryStatus.占用, is_lock = 1, location_id = input.data[nameof(WmsTransfer.startlocation_id)].ToString(), location_code = location.location_code diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs new file mode 100644 index 00000000..3c2e978e --- /dev/null +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmskittingOutService.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Aop.Api.Domain; +using JNPF.Common.Core.Manager; +using JNPF.Common.Extension; +using JNPF.Common.Security; +using JNPF.FriendlyException; +using JNPF.Systems.Interfaces.System; +using Mapster; +using Microsoft.AspNetCore.Mvc; +using SqlSugar; +using Tnb.BasicData.Entities; +using Tnb.WarehouseMgr.Entities; +using Tnb.WarehouseMgr.Entities.Consts; +using Tnb.WarehouseMgr.Entities.Dto; +using Tnb.WarehouseMgr.Entities.Enums; +using Tnb.WarehouseMgr.Interfaces; + +namespace Tnb.WarehouseMgr +{ + /// + /// 齐套出库服务类 + /// + public class WmskittingOutService : BaseWareHouseService, IWmskittingOutService + { + private readonly ISqlSugarClient _db; + private readonly IWareHouseService _warehouseService; + private readonly IUserManager _userManager; + private readonly IBillRullService _billRullService; + public WmskittingOutService(ISqlSugarRepository repository, IWareHouseService warehouseService, IUserManager userManager, IBillRullService billRullService) + { + _db = repository.AsSugarClient(); + _warehouseService = warehouseService; + _userManager = userManager; + _billRullService = billRullService; + } + /// + /// 齐套出库(新增状态) + /// + /// + [HttpPost] + public async Task KittingOutByAdd() + { + try + { + await _db.Ado.BeginTranAsync(); + + var kittingOuts = await _db.Queryable() + .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_ADD_ID) + .OrderBy(a => a.seq) + .ToListAsync(); + // 是否有已呼叫的齐套出库任务 + // var set = true ; 如果有 把set修改为false + var items = await _db.Queryable().Where(it => it.status == WmsWareHouseConst.BILLSTATUS_CALLED_ID).ToListAsync(); + var isCalled = items?.Count > 0; + if (kittingOuts?.Count > 0) + { + foreach (var ko in kittingOuts) + { + var carrys = await _db.Queryable().Where(it => it.collocation_scheme_id == ko.collocation_scheme_id && it.is_lock == 0).ToListAsync(); + if (carrys?.Count > 0) + { + var firstCarry = carrys.FirstOrDefault(); + GenPreTaskUpInput genPreTaskInput = new() { CarryId = firstCarry.id }; + await _warehouseService.GenInStockTaskHandleAfter(genPreTaskInput, it => new WmsCarryH { is_lock = 1 }, null!); + ko.status = WmsWareHouseConst.BILLSTATUS_TOBESHIPPED_ID; + ko.carry_id = firstCarry.id; + ko.carry_code = firstCarry.carry_code; + await _db.Updateable(ko).UpdateColumns(it => new { it.status, it.carry_id, it.carry_code }).ExecuteCommandAsync(); + } + else + { + //if(false) 跳出 插入完一次齐套分拣 set 改为false + if (!isCalled) + { + var setSortingH = ko.Adapt(); + setSortingH.id = SnowflakeIdHelper.NextId(); + setSortingH.kittingout_id = ko.id; + setSortingH.seq = ko.seq; + setSortingH.org_id = _userManager.User.OrganizeId; + setSortingH.create_id = _userManager.UserId; + setSortingH.create_time = DateTime.Now; + await _db.Insertable(setSortingH).ExecuteCommandAsync(); + + var kittingOutDetails = await _db.Queryable().Where(it => it.bill_id == setSortingH.id).ToListAsync(); + var setSortDetails = kittingOutDetails.Adapt>(); + setSortDetails.ForEach(x => + { + x.id = SnowflakeIdHelper.NextId(); + x.org_id = _userManager.User.OrganizeId; + x.create_id = _userManager.UserId; + x.create_time = DateTime.Now; + }); + await _db.Insertable(setSortDetails).ExecuteCommandAsync(); + ko.status = WmsWareHouseConst.BILLSTATUS_CALLED_ID; + await _db.Updateable(ko).UpdateColumns(it => it.status).ExecuteCommandAsync(); + isCalled = true; + } + } + } + } + + await _db.Ado.CommitTranAsync(); + } + catch (Exception) + { + await _db.Ado.RollbackTranAsync(); + throw; + } + } + /// + /// 齐套出库,(待配送状态) + /// + /// + [HttpPost] + public async Task KittingOutByIsToBeShipped() + { + + var kittingOuts = await _db.Queryable() + .Where(a => a.status == WmsWareHouseConst.BILLSTATUS_TOBESHIPPED_ID) + .OrderBy(a => a.seq) + .ToListAsync(); + if (kittingOuts?.Count > 0) + { + var grpList = kittingOuts.GroupBy(g => g.location_id).ToList(); + foreach (var koGrp in grpList) + { + var locs = await _db.Queryable().Where(it => it.id == koGrp.Key && it.is_use == "0" && it.is_lock == 0).ToListAsync(); + if (locs?.Count > 0) + { + + var arr = koGrp.ToArray(); + var ko = arr[^arr.Length]; + var carry = await _db.Queryable().SingleAsync(it => it.id == ko.carry_id); + if (carry != null) + { + WmsPointH sPoint = await _db.Queryable().FirstAsync(it => it.location_id == carry.location_id); + WmsPointH ePoint = await _db.Queryable().FirstAsync(it => it.location_id == ko.location_id); + if (sPoint != null && ePoint != null) + { + var points = await _warehouseService.PathAlgorithms(sPoint.id, ePoint.id); + if (points?.Count > 0) + { + if (points.Count <= 2) throw new AppFriendlyException("该路径不存在", 500); + var preTasks = points.Where(it => !it.location_id.IsNullOrEmpty()).GroupBy(g => g.area_code).Select(it => + { + var sPoint = it.FirstOrDefault(); + var ePoint = it.LastOrDefault(); + + WmsPretaskH preTask = new(); + preTask.org_id = _userManager.User.OrganizeId; + preTask.startlocation_id = sPoint?.location_id; + preTask.startlocation_code = sPoint?.location_code; + preTask.endlocation_id = ePoint?.location_id; + preTask.endlocation_code = ePoint?.location_code; + preTask.start_floor = sPoint?.floor.ToString(); + preTask.end_floor = ePoint?.floor.ToString(); + preTask.bill_code = _billRullService.GetBillNumber(WmsWareHouseConst.WMS_PRETASK_H_ENCODE).GetAwaiter().GetResult(); + preTask.status = WmsWareHouseConst.PRETASK_BILL_STATUS_DXF_ID; + preTask.biz_type = ko.biz_type; + preTask.task_type = WmsWareHouseConst.WMS_PRETASK_INSTOCK_TYPE_ID; + preTask.carry_id = ko.carry_id; + preTask.carry_code = ko.carry_code; + preTask.area_id = sPoint?.area_id; + preTask.area_code = it.Key; + preTask.require_id = ko.id; + preTask.require_code = ko.bill_code; + preTask.create_id = _userManager.UserId; + preTask.create_time = DateTime.Now; + return preTask; + }).ToList(); + await _warehouseService.GenPreTask(preTasks, null!); + var subCarrys = await _db.Queryable().Where(it => it.carry_id == ko.carry_id).ToListAsync(); + var carryIds = subCarrys.Select(x => x.carry_id).Concat(new[] { ko.carry_id }).Distinct().ToList(); + GenPreTaskUpInput genPreTaskInput = new() { CarryIds = carryIds, LocationIds = new List { carry.location_id, ko.location_id } }; + await _warehouseService.GenInStockTaskHandleAfter(genPreTaskInput, it => new WmsCarryH { is_lock = 1, carry_status = (int)EnumCarryStatus.齐套 }, it => new BasLocation { is_lock = 1 }); + + } + } + } + } + } + } + } + } + +} diff --git a/WmsSignForDeliveryService.txt b/WmsSignForDeliveryService.txt new file mode 100644 index 00000000..e69de29b diff --git a/app/Tnb.Apps.Interfaces/Properties/launchSettings.json b/app/Tnb.Apps.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..c8996f68 --- /dev/null +++ b/app/Tnb.Apps.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Apps.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50247;http://localhost:50263" + } + } +} \ No newline at end of file diff --git a/app/Tnb.Apps/Properties/launchSettings.json b/app/Tnb.Apps/Properties/launchSettings.json new file mode 100644 index 00000000..a07fb231 --- /dev/null +++ b/app/Tnb.Apps/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Apps": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50240;http://localhost:50264" + } + } +} \ No newline at end of file diff --git a/common/Tnb.CollectiveOAuth/Properties/launchSettings.json b/common/Tnb.CollectiveOAuth/Properties/launchSettings.json new file mode 100644 index 00000000..67b55152 --- /dev/null +++ b/common/Tnb.CollectiveOAuth/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.CollectiveOAuth": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50269;http://localhost:50270" + } + } +} \ No newline at end of file diff --git a/common/Tnb.Common.Core/Properties/launchSettings.json b/common/Tnb.Common.Core/Properties/launchSettings.json new file mode 100644 index 00000000..8467993c --- /dev/null +++ b/common/Tnb.Common.Core/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Common.Core": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50271;http://localhost:50273" + } + } +} \ No newline at end of file diff --git a/common/Tnb.Common/Properties/launchSettings.json b/common/Tnb.Common/Properties/launchSettings.json new file mode 100644 index 00000000..38603b70 --- /dev/null +++ b/common/Tnb.Common/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Common": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50246;http://localhost:50267" + } + } +} \ No newline at end of file diff --git a/common/Tnb.SqlSugar/Properties/launchSettings.json b/common/Tnb.SqlSugar/Properties/launchSettings.json new file mode 100644 index 00000000..ce32dbb9 --- /dev/null +++ b/common/Tnb.SqlSugar/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.SqlSugar": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50289;http://localhost:50290" + } + } +} \ No newline at end of file diff --git a/common/Tnb.Thirdparty/Properties/launchSettings.json b/common/Tnb.Thirdparty/Properties/launchSettings.json new file mode 100644 index 00000000..b2a75244 --- /dev/null +++ b/common/Tnb.Thirdparty/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Thirdparty": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50276;http://localhost:50277" + } + } +} \ No newline at end of file diff --git a/common/Tnb.WebSockets/Properties/launchSettings.json b/common/Tnb.WebSockets/Properties/launchSettings.json new file mode 100644 index 00000000..c89e7e57 --- /dev/null +++ b/common/Tnb.WebSockets/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.WebSockets": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50272;http://localhost:50274" + } + } +} \ No newline at end of file diff --git a/extend/Tnb.Extend.Entitys/Properties/launchSettings.json b/extend/Tnb.Extend.Entitys/Properties/launchSettings.json new file mode 100644 index 00000000..dca0860f --- /dev/null +++ b/extend/Tnb.Extend.Entitys/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Extend.Entitys": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50285;http://localhost:50286" + } + } +} \ No newline at end of file diff --git a/extend/Tnb.Extend.Interfaces/Properties/launchSettings.json b/extend/Tnb.Extend.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..77266e9a --- /dev/null +++ b/extend/Tnb.Extend.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Extend.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50283;http://localhost:50284" + } + } +} \ No newline at end of file diff --git a/message/Tnb.Message.Entitys/Properties/launchSettings.json b/message/Tnb.Message.Entitys/Properties/launchSettings.json new file mode 100644 index 00000000..31331cbf --- /dev/null +++ b/message/Tnb.Message.Entitys/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Message.Entitys": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50244;http://localhost:50268" + } + } +} \ No newline at end of file diff --git a/message/Tnb.Message.Interfaces/Properties/launchSettings.json b/message/Tnb.Message.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..6f24c200 --- /dev/null +++ b/message/Tnb.Message.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Message.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50239;http://localhost:50259" + } + } +} \ No newline at end of file diff --git a/message/Tnb.Message/Properties/launchSettings.json b/message/Tnb.Message/Properties/launchSettings.json new file mode 100644 index 00000000..3aff95b9 --- /dev/null +++ b/message/Tnb.Message/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Message": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50241;http://localhost:50262" + } + } +} \ No newline at end of file diff --git a/system/Tnb.OAuth/Properties/launchSettings.json b/system/Tnb.OAuth/Properties/launchSettings.json new file mode 100644 index 00000000..c7a7206a --- /dev/null +++ b/system/Tnb.OAuth/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.OAuth": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50278;http://localhost:50279" + } + } +} \ No newline at end of file diff --git a/system/Tnb.Systems.Entitys/Properties/launchSettings.json b/system/Tnb.Systems.Entitys/Properties/launchSettings.json new file mode 100644 index 00000000..c69f89f2 --- /dev/null +++ b/system/Tnb.Systems.Entitys/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.Systems.Entitys": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50280;http://localhost:50281" + } + } +} \ No newline at end of file diff --git a/taskschedule/Tnb.TaskScheduler.Entitys/Properties/launchSettings.json b/taskschedule/Tnb.TaskScheduler.Entitys/Properties/launchSettings.json new file mode 100644 index 00000000..842c1c8a --- /dev/null +++ b/taskschedule/Tnb.TaskScheduler.Entitys/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.TaskScheduler.Entitys": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50245;http://localhost:50257" + } + } +} \ No newline at end of file diff --git a/taskschedule/Tnb.TaskScheduler.Interfaces/Properties/launchSettings.json b/taskschedule/Tnb.TaskScheduler.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..4d593874 --- /dev/null +++ b/taskschedule/Tnb.TaskScheduler.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.TaskScheduler.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50251;http://localhost:50258" + } + } +} \ No newline at end of file diff --git a/taskschedule/Tnb.TaskScheduler/Properties/launchSettings.json b/taskschedule/Tnb.TaskScheduler/Properties/launchSettings.json new file mode 100644 index 00000000..523f2c0b --- /dev/null +++ b/taskschedule/Tnb.TaskScheduler/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.TaskScheduler": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50250;http://localhost:50255" + } + } +} \ No newline at end of file diff --git a/visualdev/Tnb.VisualDev.Engine/Properties/launchSettings.json b/visualdev/Tnb.VisualDev.Engine/Properties/launchSettings.json new file mode 100644 index 00000000..6bf841cb --- /dev/null +++ b/visualdev/Tnb.VisualDev.Engine/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.VisualDev.Engine": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50248;http://localhost:50254" + } + } +} \ No newline at end of file diff --git a/visualdev/Tnb.VisualDev.Entitys/Properties/launchSettings.json b/visualdev/Tnb.VisualDev.Entitys/Properties/launchSettings.json new file mode 100644 index 00000000..6b871025 --- /dev/null +++ b/visualdev/Tnb.VisualDev.Entitys/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.VisualDev.Entitys": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50243;http://localhost:50260" + } + } +} \ No newline at end of file diff --git a/visualdev/Tnb.VisualDev.Interfaces/Properties/launchSettings.json b/visualdev/Tnb.VisualDev.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..a65fcf0f --- /dev/null +++ b/visualdev/Tnb.VisualDev.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.VisualDev.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50252;http://localhost:50256" + } + } +} \ No newline at end of file diff --git a/visualdev/Tnb.VisualDev/Properties/launchSettings.json b/visualdev/Tnb.VisualDev/Properties/launchSettings.json new file mode 100644 index 00000000..698c0500 --- /dev/null +++ b/visualdev/Tnb.VisualDev/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.VisualDev": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50242;http://localhost:50266" + } + } +} \ No newline at end of file diff --git a/workflow/Tnb.WorkFlow.Entitys/Properties/launchSettings.json b/workflow/Tnb.WorkFlow.Entitys/Properties/launchSettings.json new file mode 100644 index 00000000..46607c9d --- /dev/null +++ b/workflow/Tnb.WorkFlow.Entitys/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.WorkFlow.Entitys": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50253;http://localhost:50261" + } + } +} \ No newline at end of file diff --git a/workflow/Tnb.WorkFlow.Interfaces/Properties/launchSettings.json b/workflow/Tnb.WorkFlow.Interfaces/Properties/launchSettings.json new file mode 100644 index 00000000..0d35553b --- /dev/null +++ b/workflow/Tnb.WorkFlow.Interfaces/Properties/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Tnb.WorkFlow.Interfaces": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "applicationUrl": "https://localhost:50249;http://localhost:50265" + } + } +} \ No newline at end of file