From a0f68015f4a5a43f60cb8185ed630017c0463c57 Mon Sep 17 00:00:00 2001 From: jianghaiqing Date: Tue, 8 Aug 2023 17:16:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9C=8D=E5=8A=A1=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ServiceWorkFlowRunLogInfo.cs | 18 ++- .../Enum/TrackingRunOperTypeEnum.cs | 36 +++++ .../Dtos/ServiceProjectWithStatusDto.cs | 5 + .../ServiceWorkFlowManageService.cs | 147 +++++++++++++++++- 4 files changed, 198 insertions(+), 8 deletions(-) create mode 100644 Myshipping.Application/Enum/TrackingRunOperTypeEnum.cs diff --git a/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunLogInfo.cs b/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunLogInfo.cs index c18d91db..03704ca2 100644 --- a/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunLogInfo.cs +++ b/Myshipping.Application/Entity/TrackingSystem/ServiceWorkFlowRunLogInfo.cs @@ -1,6 +1,7 @@ using Furion.DistributedIDGenerator; using Myshipping.Application.Entity.TrackingSystem; using Myshipping.Core; +using NPOI.HSSF.Record.AutoFilter; using SqlSugar; using System; using System.Collections.Generic; @@ -19,13 +20,6 @@ namespace Myshipping.Application.Entity [Tenant(CommonConst.MasterDb)] public class ServiceWorkFlowRunLogInfo { - public ServiceWorkFlowRunLogInfo() - { - PK_ID = IDGen.NextID().ToString(); - - CreatedTime = DateTime.Now; - } - /// /// 主键 /// @@ -37,6 +31,11 @@ namespace Myshipping.Application.Entity /// public string BATCH_NO { get; set; } + /// + /// 操作类型 PUSH_PROJECT 推送服务;CANCEL_PROJECT 取消服务;PUSH_STATUS 推送状态;CANCEL_STATUS 取消状态 + /// + public string OPER_TYPE { get; set; } + /// /// 服务流程运行主表ID /// @@ -107,6 +106,11 @@ namespace Myshipping.Application.Entity /// public Nullable ACT_DATE { get; set; } + /// + /// 活动备注 + /// + public string ACT_REMARK { get; set; } + /// /// 下一个活动ID /// diff --git a/Myshipping.Application/Enum/TrackingRunOperTypeEnum.cs b/Myshipping.Application/Enum/TrackingRunOperTypeEnum.cs new file mode 100644 index 00000000..a859a0dc --- /dev/null +++ b/Myshipping.Application/Enum/TrackingRunOperTypeEnum.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Myshipping.Application +{ + /// + /// 服务项目运行操作枚举 + /// + public enum TrackingRunOperTypeEnum + { + /// + /// 推送服务 + /// + [Description("推送服务")] + PUSH_PROJECT, + /// + /// 取消服务 + /// + [Description("取消服务")] + CANCEL_PROJECT, + /// + /// 推送状态 + /// + [Description("推送状态")] + PUSH_STATUS, + /// + /// 取消状态 + /// + [Description("取消状态")] + CANCEL_STATUS + } +} diff --git a/Myshipping.Application/Service/TrackingSystem/Dtos/ServiceProjectWithStatusDto.cs b/Myshipping.Application/Service/TrackingSystem/Dtos/ServiceProjectWithStatusDto.cs index 1afd351f..160b59d7 100644 --- a/Myshipping.Application/Service/TrackingSystem/Dtos/ServiceProjectWithStatusDto.cs +++ b/Myshipping.Application/Service/TrackingSystem/Dtos/ServiceProjectWithStatusDto.cs @@ -178,5 +178,10 @@ namespace Myshipping.Application /// 计算排序值 /// public decimal CalcSortNo { get; set; } + + /// + /// 是否结束 + /// + public bool IsEnd { get; set; } } } diff --git a/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs b/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs index dc8fe111..76980611 100644 --- a/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs +++ b/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs @@ -12,6 +12,7 @@ using Microsoft.Extensions.Options; using Myshipping.Application.Entity; using Myshipping.Core; using Myshipping.Core.Entity; +using Npoi.Mapper; using NPOI.OpenXmlFormats.Vml; using NPOI.SS.Formula.Functions; using NPOI.SS.Formula.PTG; @@ -202,6 +203,18 @@ namespace Myshipping.Application }; await _serviceWorkFlowRunInfoRepository.InsertAsync(serviceWorkFlowRunInfo); + + #region 写入运行日志 + var runLog = serviceWorkFlowRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = serviceWorkFlowRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_PROJECT.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Insert"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion } else if (tsk.OperType == "Update") { @@ -216,6 +229,18 @@ namespace Myshipping.Application it.ACT_DATE, it.IS_YIELD, }).ExecuteCommandAsync(); + + #region 写入运行日志 + var runLog = runInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = runInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_PROJECT.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Update"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion } }); @@ -326,6 +351,18 @@ namespace Myshipping.Application //写入run主表 await _serviceWorkFlowRunInfoRepository.InsertAsync(serviceWorkFlowRunInfo); + #region 写入运行日志 + var runLog = serviceWorkFlowRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = serviceWorkFlowRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Insert"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion + //获取状态最大数 int endNum = rt.StatusList.Max(sku => sku.ActSortNo); @@ -388,6 +425,19 @@ namespace Myshipping.Application //写入run活动表 await _serviceWorkFlowRunActivitiesInfoRepository.InsertAsync(activitiesRunInfo); + #region 写入运行日志 + var runLog = activitiesRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = activitiesRunInfo.RUN_ID; + runLog.RUN_DETAIL_ID = activitiesRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Insert"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion + if (sku.SubStatusList != null && sku.SubStatusList.Count > 0) { string lastSubActId = string.Empty; @@ -451,6 +501,19 @@ namespace Myshipping.Application await _serviceWorkFlowRunActivitiesInfoRepository.InsertAsync(activitiesSubRunInfo); + #region 写入运行日志 + var runLog = activitiesSubRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = activitiesSubRunInfo.RUN_ID; + runLog.RUN_DETAIL_ID = activitiesSubRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Insert"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion + lastSubActId = activitiesSubRunInfo.PK_ID; }); @@ -484,6 +547,18 @@ namespace Myshipping.Application it.UpdatedUserId, it.UpdatedUserName }).ExecuteCommandAsync(); + + #region 写入运行日志 + var runLog = runEntity.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = runEntity.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Update"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion } //批量写入活动表 @@ -550,6 +625,19 @@ namespace Myshipping.Application //写入run活动表 await _serviceWorkFlowRunActivitiesInfoRepository.InsertAsync(activitiesRunInfo); + #region 写入运行日志 + var runLog = activitiesRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = activitiesRunInfo.RUN_ID; + runLog.RUN_DETAIL_ID = activitiesRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Insert"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion + if (sku.SubStatusList != null && sku.SubStatusList.Count > 0) { string lastSubActId = string.Empty; @@ -614,6 +702,19 @@ namespace Myshipping.Application await _serviceWorkFlowRunActivitiesInfoRepository.InsertAsync(activitiesSubRunInfo); + #region 写入运行日志 + var runLog = activitiesSubRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = activitiesSubRunInfo.RUN_ID; + runLog.RUN_DETAIL_ID = activitiesSubRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Insert"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion + lastSubActId = activitiesSubRunInfo.PK_ID; }); @@ -644,6 +745,18 @@ namespace Myshipping.Application it.UpdatedUserId, it.UpdatedUserName }).ExecuteCommandAsync(); + + #region 写入运行日志 + var runLog = runEntity.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = runEntity.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Update"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion } //只需要更新完成标记和完成时间 rt.StatusList.ForEach(async sku => @@ -694,6 +807,19 @@ namespace Myshipping.Application it.UpdatedUserId, it.UpdatedUserName }).ExecuteCommandAsync(); + + #region 写入运行日志 + var runLog = activitiesRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = activitiesRunInfo.RUN_ID; + runLog.RUN_DETAIL_ID = activitiesRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Update"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion } if (sku.SubStatusList != null && sku.SubStatusList.Count > 0) @@ -747,6 +873,19 @@ namespace Myshipping.Application it.UpdatedUserId, it.UpdatedUserName }).ExecuteCommandAsync(); + + #region 写入运行日志 + var runLog = activitiesSubRunInfo.Adapt(); + runLog.PK_ID = IDGen.NextID().ToString(); + runLog.RUN_ID = activitiesSubRunInfo.RUN_ID; + runLog.RUN_DETAIL_ID = activitiesSubRunInfo.PK_ID; + runLog.BATCH_NO = batchNo; + runLog.OPER_TYPE = TrackingRunOperTypeEnum.PUSH_STATUS.ToString(); + runLog.EXEC_RESULT = "SUCC"; + runLog.EXEC_NOTE = "Update"; + + await _serviceWorkFlowRunLogInfoRepository.InsertAsync(runLog); + #endregion } }); } @@ -1533,6 +1672,7 @@ namespace Myshipping.Application int lastWFSortNo = 0; int calcNum = 1; + var resultList = statuList.Join(runList, l => l.WFPKId, r => r.WFPKId, (l, r) => { @@ -1609,7 +1749,12 @@ namespace Myshipping.Application }); } } - + + if (rltList != null && rltList.Count > 0) + { + var maxSort = rltList.Max(t => t.CalcSortNo); + rltList.FirstOrDefault(t => t.CalcSortNo == maxSort).IsEnd = true; + } return rltList; }).SelectMany(b => b).OrderBy(b => b.WFSortNo).Select(b => { if(lastWFSortNo == 0)