From 50f797019566a68c85bb7c1788c8292b46c23e50 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Fri, 8 Dec 2023 15:02:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B9=B4=E5=BA=A6=E5=88=B6=E4=BF=AE?= =?UTF-8?q?=E8=AE=A2-=E5=85=A8=E6=B5=81=E7=A8=8B=E8=B7=91=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/service/ActFlowCommonService.java | 33 +++++++++++++++++++ .../controller/ESAnnualReportController.java | 9 +++-- .../ProcessEsAnnualReportServiceImpl.java | 26 +++++++++++---- .../modules/activiti/util/ExcelUtils.java | 12 ++++--- 4 files changed, 68 insertions(+), 12 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java index d6fbb2d4..37cad6b5 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java @@ -27,6 +27,7 @@ import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.impl.identity.Authentication; import org.activiti.engine.repository.ProcessDefinition; +import org.activiti.engine.runtime.Execution; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.activiti.engine.task.TaskQuery; @@ -37,6 +38,7 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service @@ -448,4 +450,35 @@ public class ActFlowCommonService { updateWrapper.set(ProcessApprovalRecord::getFinishFlag, ProcessStatusEnum.WITHDRAWN.getValue()); processApprovalRecordService.update(updateWrapper); } + + + /** + * 根据指定的执行Id递归获取所有子执行Id + * + * @param executionId 指定的执行Id + * @return 所有子执行Id的列表 + */ + public List getAllChildExecutionIds(String executionId) { + List childExecutionIds = new ArrayList<>(); + Execution execution = runtimeService.createExecutionQuery().executionId(executionId).singleResult(); + if (execution != null) { + String processInstanceId = execution.getProcessInstanceId(); + collectChildExecutionIds(processInstanceId, executionId, childExecutionIds); + } + return childExecutionIds; + } + + private void collectChildExecutionIds(String processInstanceId, String parentExecutionId, List collectedIds) { + List childExecutions = runtimeService.createExecutionQuery() + .processInstanceId(processInstanceId) + .list(); + + for (Execution childExecution : childExecutions) { + if (childExecution.getSuperExecutionId() != null && childExecution.getSuperExecutionId().equals(parentExecutionId)) { + collectedIds.add(childExecution.getId()); + // 递归调用,以获取更深层次的子流程执行Id + collectChildExecutionIds(processInstanceId, childExecution.getId(), collectedIds); + } + } + } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java index e6ddaaab..ec43c70b 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java @@ -6,6 +6,7 @@ import com.jero.common.aspect.annotation.Translation; import com.jero.common.constant.enums.YesOrNoEnum; import com.jero.modules.activiti.process.common.entity.TransferVO; import com.jero.modules.activiti.process.common.service.ActFlowCommonService; +import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport; import com.jero.modules.activiti.process.esAnnualReport.entity.vo.AnnualReportDataVO; import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService; import com.jero.modules.activiti.process.fb.service.IProcessHandleService; @@ -25,6 +26,7 @@ import java.io.OutputStream; import javax.annotation.Resource; +import java.util.List; import java.util.Map; /** @@ -79,9 +81,11 @@ public class ESAnnualReportController { Map resultMap = annualReportService.importData(file); Object flag = resultMap.get("flag"); if (flag == YesOrNoEnum.YES.getValue()) { - return Result.OK(resultMap.get("dataList")); + List dataList = (List) resultMap.get("dataList"); + return Result.OK(dataList); } else { - return Result.error("导入失败", resultMap.get("msg")); + List msg = (List) resultMap.get("msg"); + return Result.error("导入失败", msg); } } @@ -117,6 +121,7 @@ public class ESAnnualReportController { @AutoLog(value = "企标年度制修订主动上报流程-办理") @ApiOperation(value="企标年度制修订主动上报流程-办理", notes="企标年度制修订主动上报流程-办理") @GetMapping("/handle/{taskId}") + @Translation public Result handle(@PathVariable(value = "taskId") String taskId) { return Result.OK(annualReportService.getHandleData(taskId)); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java index e3712807..aa20beb2 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java @@ -21,6 +21,8 @@ import com.jero.modules.activiti.service.ProcessAllService; import com.jero.modules.activiti.service.ProcessNodeLinkService; import com.jero.modules.activiti.service.ProcessNodeService; import com.jero.modules.activiti.util.ExcelUtils; +import com.jero.modules.laws.common.constant.FieldCommon; +import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.sys.utils.UserUtils; @@ -30,6 +32,7 @@ import org.activiti.engine.TaskService; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.entity.ImportParams; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -76,6 +79,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl data.setContactUser(contactUser)); + dataList.forEach(data -> data.setExecutionId(executionId)); // 保存收集联络人主管级领导 dataList.forEach(data -> data.setCollectUserLeader((String) flowUserVO.get("collectUserLeader"))); dataList.forEach(data -> data.setWorkGroupUser(UserUtils.getUserId())); @@ -190,6 +197,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ProcessEsAnnualReport::getContactUser, UserUtils.getUserId()); + wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId); remove(wrapper); saveBatch(dataList); break; @@ -210,6 +218,9 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl executionIdList = actFlowCommonService.getAllChildExecutionIds(executionId); + executionIdList.add(executionId); if (!actFlowCommonService.taskExists(taskId)) { throw new JeroBootException("任务不存在"); } @@ -246,23 +257,26 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl listDict) { + if (StrUtil.isBlank(value)) { + return ""; + } // 检查工作组 if (!excelUtils.validDict("name", value, "laws_working_group", "id", true, listDict)) { return "'工作组'无效。";