feat: 年度制修订-全流程跑通

This commit is contained in:
2023-12-08 15:02:53 +08:00
parent f419487454
commit 50f7970195
4 changed files with 68 additions and 12 deletions
@@ -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<String> getAllChildExecutionIds(String executionId) {
List<String> 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<String> collectedIds) {
List<Execution> 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);
}
}
}
}
@@ -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<String, Object> resultMap = annualReportService.importData(file);
Object flag = resultMap.get("flag");
if (flag == YesOrNoEnum.YES.getValue()) {
return Result.OK(resultMap.get("dataList"));
List<ProcessEsAnnualReport> dataList = (List<ProcessEsAnnualReport>) resultMap.get("dataList");
return Result.OK(dataList);
} else {
return Result.error("导入失败", resultMap.get("msg"));
List<String> msg = (List<String>) 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));
}
@@ -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<ProcessEsAnnua
@Resource
private TaskService taskService;
@Resource
private EnterpriseStandardUtil esUtil;
@Override
public void startProcess(AnnualReportDataVO annualReportData) {
// 流程Key
@@ -179,6 +185,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
String executionId = task.getExecutionId();
String contactUser = (String) runtimeService.getVariable(executionId, "contactUser");
dataList.forEach(data -> 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<ProcessEsAnnua
// 先删后增
LambdaQueryWrapper<ProcessEsAnnualReport> 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<ProcessEsAnnua
public AnnualReportDataVO getHandleData(String taskId) {
String userId = UserUtils.getUserId();
String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId();
// 根据当前执行Id获取所有子执行Id
List<String> executionIdList = actFlowCommonService.getAllChildExecutionIds(executionId);
executionIdList.add(executionId);
if (!actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("任务不存在");
}
@@ -246,23 +257,26 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
break;
case COLLECT_LEADER_APPROVAL:
wrapper.eq(ProcessEsAnnualReport::getCollectUserLeader, userId);
wrapper.eq(ProcessEsAnnualReport::getDelFlag, YesOrNoEnum.NO.getInteger());
annualReportDataVO.setDataList(list(wrapper));
break;
case CONTACT_USER_COLLECT:
wrapper.eq(ProcessEsAnnualReport::getContactUser, userId);
wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId);
wrapper.eq(ProcessEsAnnualReport::getExecutionId, executionId);
wrapper.in(ProcessEsAnnualReport::getExecutionId, executionIdList);
wrapper.eq(ProcessEsAnnualReport::getDelFlag, YesOrNoEnum.NO.getInteger());
annualReportDataVO.setDataList(list(wrapper));
break;
case CONTACT_USER_LEADER_APPROVAL:
// 获取上一个节点的审批人
wrapper.eq(ProcessEsAnnualReport::getContactUserLeaderLeader, userId);
wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId);
wrapper.eq(ProcessEsAnnualReport::getExecutionId, executionId);
wrapper.in(ProcessEsAnnualReport::getExecutionId, executionIdList);
wrapper.eq(ProcessEsAnnualReport::getDelFlag, YesOrNoEnum.NO.getInteger());
annualReportDataVO.setDataList(list(wrapper));
break;
case STANDARD_ENGINEER_COLLECT:
wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId);
wrapper.eq(ProcessEsAnnualReport::getDelFlag, YesOrNoEnum.NO.getInteger());
annualReportDataVO.setDataList(list(wrapper));
break;
}
@@ -370,10 +384,10 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
item.setEnStandardCode(excelUtils.translateDictValue("enterprise_standard_code", item.getEnStandardCode(), listDict));
item.setAuthDept(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getAuthDept(), listDict));
item.setCooperationUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getCooperationUnit(), listDict));
item.setMainDraftingUser(excelUtils.translateDictValue("realname", "id", "sys_user", item.getMainDraftingUser(), listDict));
item.setMainDraftingUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUser(), listDict));
item.setMainDraftingUnit(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getMainDraftingUnit(), listDict));
item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("realname", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict));
item.setStandardPromoter(excelUtils.translateDictValue("realname", "id", "sys_user", item.getStandardPromoter(), listDict));
item.setMainDraftingUnitResponsiblePerson(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getMainDraftingUnitResponsiblePerson(), listDict));
item.setStandardPromoter(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getStandardPromoter(), listDict));
item.setWorkGroup(excelUtils.translateDictValue("name", "id", "laws_working_group", item.getWorkGroup(), listDict));
});
}
@@ -282,8 +282,9 @@ public class ExcelUtils {
if (StrUtil.isBlank(value)) {
return "'主起草人'不能为空。";
}
// 检查主起草人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
if (!excelUtils.validDict("CONCAT(realname, '(', username, ')')", value, "sys_user", "id", true, listDict)) {
return "'主起草人'无效。";
}
return "";
@@ -305,7 +306,7 @@ public class ExcelUtils {
return "'主起草单位负责人'不能为空。";
}
// 检查主起草单位负责人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
if (!excelUtils.validDict("CONCAT(realname, '(', username, ')')", value, "sys_user", "id", true, listDict)) {
return "'主起草单位负责人'无效。";
}
return "";
@@ -316,7 +317,7 @@ public class ExcelUtils {
return "'标准推进人'不能为空。";
}
// 检查标准推进人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
if (!excelUtils.validDict("CONCAT(realname, '(', username, ')')", value, "sys_user", "id", true, listDict)) {
return "'标准推进人'无效。";
}
return "";
@@ -327,7 +328,7 @@ public class ExcelUtils {
return "'联络人'不能为空。";
}
// 检查联络人
if (!excelUtils.validDict("username", value, "sys_user", "id", true, listDict)) {
if (!excelUtils.validDict("CONCAT(realname, '(', username, ')')", value, "sys_user", "id", true, listDict)) {
return "'联络人'无效。";
}
return "";
@@ -345,6 +346,9 @@ public class ExcelUtils {
}
public String validWorkGroup(String value, List<SysDictItemCore> listDict) {
if (StrUtil.isBlank(value)) {
return "";
}
// 检查工作组
if (!excelUtils.validDict("name", value, "laws_working_group", "id", true, listDict)) {
return "'工作组'无效。";