diff --git a/Myshipping.Application/Entity/TrackingSystem/ServiceProjectBaseInfo.cs b/Myshipping.Application/Entity/TrackingSystem/ServiceProjectBaseInfo.cs index 39b9919d..f7601827 100644 --- a/Myshipping.Application/Entity/TrackingSystem/ServiceProjectBaseInfo.cs +++ b/Myshipping.Application/Entity/TrackingSystem/ServiceProjectBaseInfo.cs @@ -28,12 +28,12 @@ namespace Myshipping.Application.Entity } /// - /// 产品代码 + /// 服务项代码 /// public string SERVICE_PROJECT_CODE { get; set; } /// - /// 产品名称 + /// 服务项名称 /// public string SERVICE_PROJECT_NAME { get; set; } diff --git a/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunInfo.cs b/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunInfo.cs index 24fb6591..dd082c78 100644 --- a/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunInfo.cs +++ b/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunInfo.cs @@ -64,6 +64,16 @@ namespace Myshipping.Application.Entity /// public string STATUS { get; set; } + /// + /// 服务项代码 + /// + public string SERVICE_PROJECT_CODE { get; set; } + + /// + /// 服务项名称 + /// + public string SERVICE_PROJECT_NAME { get; set; } + /// /// 活动数量 /// diff --git a/Myshipping.Application/Service/TrackingSystem/Dtos/TrackingQueryMessageInfo.cs b/Myshipping.Application/Service/TrackingSystem/Dtos/TrackingQueryMessageInfo.cs new file mode 100644 index 00000000..42b73403 --- /dev/null +++ b/Myshipping.Application/Service/TrackingSystem/Dtos/TrackingQueryMessageInfo.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Myshipping.Application +{ + public class TrackingQueryMessageInfo + { + /// + /// 表头 + /// + public TrackingMessageHeadInfo Head { get; set; } + + /// + /// 表体 + /// + public TrackingMessageQueryMainInfo Main { get; set; } + } + + public class TrackingMessageQueryMainInfo + { + /// + /// 服务项目代码 + /// + public List ServiceProjectCodeList { get; set; } + + /// + /// 业务系统代码 + /// + [Required(ErrorMessage = "必填")] + public string BusiSystemCode { get; set; } + + /// + /// 业务主键 + /// + public string BusiId { get; set; } + + /// + /// 提单号 + /// + public string MBlNo { get; set; } + + /// + /// 船名航次 + /// + public string VesselVoyno { get; set; } + + /// + /// 订舱编号 + /// + public string OrderNo { get; set; } + } +} diff --git a/Myshipping.Application/Service/TrackingSystem/Interface/IServiceWorkFlowManageService.cs b/Myshipping.Application/Service/TrackingSystem/Interface/IServiceWorkFlowManageService.cs index cdc0c7f1..55ddb2e3 100644 --- a/Myshipping.Application/Service/TrackingSystem/Interface/IServiceWorkFlowManageService.cs +++ b/Myshipping.Application/Service/TrackingSystem/Interface/IServiceWorkFlowManageService.cs @@ -20,18 +20,18 @@ namespace Myshipping.Application /// - /// 查询单票业务单服务项目查询 + /// 单票单服务项目查询 /// - /// 服务流程详情 + /// 查询服务流程详情 /// 返回回执 - Task QuerySingleBusinessPerServiceProject(ServiceWorkFlowBaseDto info); + Task QuerySingleBusinessPerServiceProject(TrackingQueryMessageInfo info); /// - /// 查询单票所有相关服务项目查询 + /// 单票所有相关服务项目查询 /// - /// 服务流程详情 + /// 查询服务流程详情 /// 返回回执 - Task QuerySingleBusinessAll(ServiceWorkFlowBaseDto info); + Task QuerySingleBusinessAll(TrackingQueryMessageInfo info); } } diff --git a/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs b/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs index 02e7162d..20c6e3ee 100644 --- a/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs +++ b/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs @@ -40,6 +40,7 @@ namespace Myshipping.Application private readonly SqlSugarRepository _serviceWorkFlowRunActivitiesInfoRepository; private readonly SqlSugarRepository _statusSkuBaseInfoRepository; private readonly SqlSugarRepository _sysUserRepository; + private readonly SqlSugarRepository _serviceProjectBaseInfoRepository; private readonly IServiceWorkFlowBaseService _serviceWorkFlowBaseService; @@ -53,7 +54,8 @@ namespace Myshipping.Application SqlSugarRepository serviceWorkFlowRunInfoRepository, SqlSugarRepository serviceWorkFlowRunActivitiesInfoRepository, SqlSugarRepository statusSkuBaseInfoRepository, - IServiceWorkFlowBaseService serviceWorkFlowBaseService, SqlSugarRepository sysUserRepository) + IServiceWorkFlowBaseService serviceWorkFlowBaseService, SqlSugarRepository sysUserRepository, + SqlSugarRepository serviceProjectBaseInfoRepository) { _serviceWorkFlowBaseRepository = serviceWorkFlowBaseRepository; _serviceWorkFlowActivitiesInfoRepository = serviceWorkFlowActivitiesInfoRepository; @@ -68,6 +70,7 @@ namespace Myshipping.Application _statusSkuBaseInfoRepository = statusSkuBaseInfoRepository; _serviceWorkFlowBaseService = serviceWorkFlowBaseService; _sysUserRepository = sysUserRepository; + _serviceProjectBaseInfoRepository = serviceProjectBaseInfoRepository; } #region 推送状态 @@ -224,7 +227,9 @@ namespace Myshipping.Application CreatedUserId = userTendInfo.userId, CreatedUserName = userTendInfo.userName, TenantId = userTendInfo.tendId, - TenantName = userTendInfo.tenantName + TenantName = userTendInfo.tenantName, + SERVICE_PROJECT_CODE = wf.ServiceProject.ServiceProjectCode, + SERVICE_PROJECT_NAME = wf.ServiceProject.ServiceProjectName, }; await _serviceWorkFlowRunInfoRepository.InsertAsync(serviceWorkFlowRunInfo); @@ -251,7 +256,7 @@ namespace Myshipping.Application SHOW_NAME = sku.ShowName, IS_SUB = 0, IS_SUB_JUST = 0, - IS_YIELD = 1, + IS_YIELD = 0, CreatedTime = nowDate, UpdatedTime = nowDate, CreatedUserId = userTendInfo.userId, @@ -266,6 +271,7 @@ namespace Myshipping.Application { activitiesRunInfo.ACT_DATE = currReq.Req.StatusDate; activitiesRunInfo.ACT_VAL = currReq.Req.StatusVal; + activitiesRunInfo.IS_YIELD = 1; } @@ -298,7 +304,7 @@ namespace Myshipping.Application SHOW_NAME = sub.ShowName, IS_SUB = 1, IS_SUB_JUST = 1, - IS_YIELD = 1, + IS_YIELD = 0, CreatedTime = nowDate, UpdatedTime = nowDate, CreatedUserId = userTendInfo.userId, @@ -306,13 +312,15 @@ namespace Myshipping.Application TenantId = userTendInfo.tendId, TenantName = userTendInfo.tenantName, IsDeleted = false, - SOURCE_TYPE = "AUTO" + SOURCE_TYPE = "AUTO", + PARENT_ID = activitiesRunInfo.PK_ID }; if(currSubReq != null) { activitiesSubRunInfo.ACT_DATE = currSubReq.Req.StatusDate; activitiesSubRunInfo.ACT_VAL = currSubReq.Req.StatusVal; + activitiesSubRunInfo.IS_YIELD = 1; } if (!string.IsNullOrWhiteSpace(lastSubActId)) @@ -343,28 +351,238 @@ namespace Myshipping.Application } #endregion + #region 单票单服务项目查询 /// - /// 查询单票业务单服务项目查询 + /// 单票单服务项目查询 /// - /// 服务流程详情 + /// 查询服务流程详情 /// 返回回执 [HttpPost("/ServiceWorkFlowManage/QuerySingleBusinessPerServiceProject")] - public async Task QuerySingleBusinessPerServiceProject(ServiceWorkFlowBaseDto info) + public async Task QuerySingleBusinessPerServiceProject(TrackingQueryMessageInfo info) { - return new TaskManageOrderResultDto(); - } + TaskManageOrderResultDto result = new TaskManageOrderResultDto(); + + string batchNo = IDGen.NextID().ToString(); + _logger.LogInformation("批次={no} 单票单服务项目查询 msg={msg}", batchNo, JSON.Serialize(info)); + try + { + + + var runList = _serviceWorkFlowRunInfoRepository.AsQueryable().Filter(null, true) + .LeftJoin((m, s) => m.PK_ID == s.RUN_ID) + .LeftJoin((m, s, rela) => + m.SERVICE_WF_ID == rela.SERVICE_WORKFLOW_ID && m.RELEASE_VERSION == rela.WF_VERSION) + .LeftJoin((m, s, rela, p) => + rela.SERVICE_PROJECT_ID == p.PK_ID) + .Where((m, s, rela, p) + => m.BUSI_SYSTEM_CODE == info.Main.BusiSystemCode && m.BUSI_ID == info.Main.BusiId && + info.Main.ServiceProjectCodeList.Contains(p.SERVICE_PROJECT_CODE)) + .Select((m, s) => new { Run = m, Sub = s }).ToList(); + + + var resultList = runList.GroupBy(a=>a.Run.PK_ID) + .Select(a => { + var currList = a.ToList(); + + var runInfo = currList.FirstOrDefault().Run; + + var showModel = new ServiceWorkFlowRunDto(); + + showModel.PKId = runInfo.PK_ID; + showModel.ServiceProjectCode = runInfo.SERVICE_PROJECT_CODE; + showModel.ServiceProjectName = runInfo.SERVICE_PROJECT_NAME; + + showModel.ActivitiesList = currList.Where(t => t.Sub.IS_SUB == 0) + .Select(t => + { + var runModel = new ServiceWorkFlowActivitiesRunDto + { + PKId = t.Sub.PK_ID, + ActDate = t.Sub.ACT_DATE, + ActId = t.Sub.ACT_ID, + ExecSortNo = t.Sub.EXEC_SORT_NO, + ActVal = t.Sub.ACT_VAL, + IsStart = t.Sub.IS_START, + IsEnd = t.Sub.IS_END, + IsYield = t.Sub.IS_YIELD, + RunId = t.Sub.RUN_ID, + ShowName = t.Sub.SHOW_NAME, + SourceType = t.Sub.SOURCE_TYPE, + StatusSKUCode = t.Sub.STATUS_SKU_CODE, + StatusSKUId = t.Sub.STATUS_SKU_ID + }; + + return runModel; + }).ToList(); + + var subList = + currList.Where(t => t.Sub.IS_SUB == 1) + .Select(t => t.Sub).ToList(); + + showModel.ActivitiesList = showModel.ActivitiesList.GroupJoin(subList, + l => l.PKId, r => r.PARENT_ID, + (l, r) => + { + var currList = r.ToList(); + + if (currList.Count > 0) + { + l.SubList = currList.Select(x => { + + var subModel = new ServiceWorkFlowActivitiesRunSubDto + { + PKId = x.PK_ID, + ActDate = x.ACT_DATE, + ActId = x.ACT_ID, + ExecSortNo = x.EXEC_SORT_NO, + ActVal = x.ACT_VAL, + IsStart = x.IS_START, + IsEnd = x.IS_END, + IsYield = x.IS_YIELD, + RunId = x.RUN_ID, + ShowName = x.SHOW_NAME, + SourceType = x.SOURCE_TYPE, + StatusSKUCode = x.STATUS_SKU_CODE, + StatusSKUId = x.STATUS_SKU_ID + }; + + return subModel; + }).OrderBy(x=>x.ExecSortNo).ToList(); + } + + return l; + }).OrderBy(t => t.ExecSortNo).ToList(); + + return showModel; + }).ToList(); + + result.succ = true; + result.ext = resultList; + } + catch (Exception ex) + { + result.succ = false; + result.msg = $"单票单服务项目查询失败,原因:{ex.Message}"; + } + + return result; + } + #endregion + + #region 单票所有相关服务项目查询 /// - /// 查询单票所有相关服务项目查询 + /// 单票所有相关服务项目查询 /// - /// 服务流程详情 + /// 查询服务流程详情 /// 返回回执 [HttpPost("/ServiceWorkFlowManage/QuerySingleBusinessAll")] - public async Task QuerySingleBusinessAll(ServiceWorkFlowBaseDto info) + public async Task QuerySingleBusinessAll(TrackingQueryMessageInfo info) { - return new TaskManageOrderResultDto(); + TaskManageOrderResultDto result = new TaskManageOrderResultDto(); + + string batchNo = IDGen.NextID().ToString(); + + _logger.LogInformation("批次={no} 单票所有相关服务项目查询 msg={msg}", batchNo, JSON.Serialize(info)); + + try + { + var runList = _serviceWorkFlowRunInfoRepository.AsQueryable().Filter(null, true) + .LeftJoin((m, s) => m.PK_ID == s.RUN_ID) + .Where((m, s) + => m.BUSI_SYSTEM_CODE == info.Main.BusiSystemCode && m.BUSI_ID == info.Main.BusiId) + .Select((m, s) => new { Run = m, Sub = s }).ToList(); + + + var resultList = runList.GroupBy(a => a.Run.PK_ID) + .Select(a => { + var currList = a.ToList(); + + var runInfo = currList.FirstOrDefault().Run; + + var showModel = new ServiceWorkFlowRunDto(); + + showModel.PKId = runInfo.PK_ID; + showModel.ServiceProjectCode = runInfo.SERVICE_PROJECT_CODE; + showModel.ServiceProjectName = runInfo.SERVICE_PROJECT_NAME; + + showModel.ActivitiesList = currList.Where(t => t.Sub.IS_SUB == 0) + .Select(t => + { + var runModel = new ServiceWorkFlowActivitiesRunDto + { + PKId = t.Sub.PK_ID, + ActDate = t.Sub.ACT_DATE, + ActId = t.Sub.ACT_ID, + ExecSortNo = t.Sub.EXEC_SORT_NO, + ActVal = t.Sub.ACT_VAL, + IsStart = t.Sub.IS_START, + IsEnd = t.Sub.IS_END, + IsYield = t.Sub.IS_YIELD, + RunId = t.Sub.RUN_ID, + ShowName = t.Sub.SHOW_NAME, + SourceType = t.Sub.SOURCE_TYPE, + StatusSKUCode = t.Sub.STATUS_SKU_CODE, + StatusSKUId = t.Sub.STATUS_SKU_ID + }; + + return runModel; + }).ToList(); + + var subList = + currList.Where(t => t.Sub.IS_SUB == 1) + .Select(t => t.Sub).ToList(); + + showModel.ActivitiesList = showModel.ActivitiesList.GroupJoin(subList, + l => l.PKId, r => r.PARENT_ID, + (l, r) => + { + var currList = r.ToList(); + + if (currList.Count > 0) + { + l.SubList = currList.Select(x => { + + var subModel = new ServiceWorkFlowActivitiesRunSubDto + { + PKId = x.PK_ID, + ActDate = x.ACT_DATE, + ActId = x.ACT_ID, + ExecSortNo = x.EXEC_SORT_NO, + ActVal = x.ACT_VAL, + IsStart = x.IS_START, + IsEnd = x.IS_END, + IsYield = x.IS_YIELD, + RunId = x.RUN_ID, + ShowName = x.SHOW_NAME, + SourceType = x.SOURCE_TYPE, + StatusSKUCode = x.STATUS_SKU_CODE, + StatusSKUId = x.STATUS_SKU_ID + }; + + return subModel; + }).OrderBy(x => x.ExecSortNo).ToList(); + } + + return l; + }).OrderBy(t => t.ExecSortNo).ToList(); + + return showModel; + }).ToList(); + + result.succ = true; + result.ext = resultList; + } + catch (Exception ex) + { + result.succ = false; + result.msg = $"单票所有相关服务项目查询失败,原因:{ex.Message}"; + } + + return result; } + #endregion #region 查询订舱表查询用户和租户信息 ///