feat: 年度制修订-全流程跑通
This commit is contained in:
+33
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+7
-2
@@ -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));
|
||||
}
|
||||
|
||||
+20
-6
@@ -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 "'工作组'无效。";
|
||||
|
||||
Reference in New Issue
Block a user