feat: 年度制修订-标准化发起 前两个节点

This commit is contained in:
2023-12-11 16:04:00 +08:00
parent d9d4e3bf8f
commit bfaaf2c9bc
6 changed files with 71 additions and 58 deletions
@@ -1,14 +1,18 @@
package com.jero.modules.activiti.process.esAnnualInit.controller;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.util.MessageUtils;
import com.jero.modules.activiti.process.common.entity.TransferVO;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit;
import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO;
import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
import com.jero.modules.activiti.process.fb.service.IProcessHandleService;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
@@ -22,6 +26,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;
@@ -87,7 +92,7 @@ public class ESAnnualInitController {
@ApiOperation(value="企标年度制修订标准化发起流程-同意", notes="企标年度制修订标准化发起流程-同意")
@PostMapping("/agree")
public Result<?> agree(@RequestBody AnnualInitDataVO annualInitData) {
annualInitService.approvalInitChange(annualInitData, true);
annualInitService.approvalProcess(annualInitData, true);
return Result.OK();
}
@@ -100,7 +105,7 @@ public class ESAnnualInitController {
@ApiOperation(value="企标年度制修订标准化发起流程-驳回", notes="企标年度制修订标准化发起流程-驳回")
@PostMapping("/reject")
public Result<?> reject(@RequestBody AnnualInitDataVO annualInitData) {
annualInitService.approvalInitChange(annualInitData, false);
annualInitService.approvalProcess(annualInitData, false);
return Result.OK();
}
@@ -142,9 +147,11 @@ public class ESAnnualInitController {
Map<String, Object> resultMap = annualInitService.importData(file);
Object flag = resultMap.get("flag");
if (flag == YesOrNoEnum.YES.getValue()) {
return Result.OK(resultMap.get("dataList"));
List<ProcessEsAnnualInit> dataList = (List<ProcessEsAnnualInit>) 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(MessageUtils.getMessage(ResultCommon.IMPORT_ERROR), msg);
}
}
@@ -7,9 +7,10 @@ package com.jero.modules.activiti.process.esAnnualInit.entity;
public class AnnualInitTaskNameConstant {
public static final String STANDARD_ENGINEER_INIT = "标准化工程师发起";
public static final String CONTACT_USER_EDIT = "部所联络人选取审批人";
public static final String CONTACT_USER_SELECT = "部所联络人选取审批人";
public static final String STANDARD_ENGINEER_EDIT = "标准化工程师修改调整";
public static final String MAIN_DRAFT_LEADER_APPROVAL = "主起草单位主管级领导审批下发";
public static final String CONTACT_USER_EDIT = "部所联络人修改调整";
public static final String MAIN_DRAFT_WRITE = "主起草人填写信息";
public static final String CONTACT_USER_COLLECT = "部所联络人汇总";
public static final String MAIN_DRAFT_LEADER_LEADER_APPROVAL = "主起草单位主管级领导审批";
@@ -252,6 +252,9 @@ public class ProcessEsAnnualInit implements Serializable {
@ApiModelProperty(value = "主起草单位责任人")
private String mainDraftingUnitResponsiblePerson;
/**
* 标准推进人
*/
@Excel(name = "*标准推进人", width = 15, orderNum = "16")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty(value = "标准推进人")
@@ -304,6 +307,7 @@ public class ProcessEsAnnualInit implements Serializable {
/**
* 联络人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@Excel(name = "*联络人", width = 15, orderNum = "15")
@ApiModelProperty(value = "联络人")
private String contactUser;
@@ -322,9 +326,16 @@ public class ProcessEsAnnualInit implements Serializable {
@Dict(dicCode = "YN")
private String rejectFlag;
/**
* 执行id
*/
@ApiModelProperty(value = "执行id")
private String executionId;
/**
* 审批人
*/
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@ApiModelProperty(value = "审批人")
private String approvalUser;
@@ -6,6 +6,7 @@ import com.jero.modules.activiti.process.esAnnualInit.entity.ProcessEsAnnualInit
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @author: Mzaxd
@@ -21,6 +22,6 @@ public class AnnualInitDataVO {
private List<ProcessEsAnnualInit> dataList;
@JsonProperty("flowUser")
private AnnualInitFlowUserVO flowUser;
private Map<String, Object> flowUser;
}
@@ -28,5 +28,5 @@ public interface ProcessEsAnnualInitService extends IService<ProcessEsAnnualInit
AnnualInitDataVO getHandleData(String taskId);
void approvalInitChange(AnnualInitDataVO annualInitData, boolean b);
void approvalProcess(AnnualInitDataVO annualInitData, boolean b);
}
@@ -18,6 +18,7 @@ import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitDataVO
import com.jero.modules.activiti.process.esAnnualInit.entity.vo.AnnualInitFlowUserVO;
import com.jero.modules.activiti.process.esAnnualInit.service.ProcessEsAnnualInitService;
import com.jero.modules.activiti.process.esAnnualInit.mapper.ProcessEsAnnualInitMapper;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
@@ -87,37 +88,39 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 执行流程发起前的操作
this.startRunTask(annualInitData);
// 流程Key
String processDefinitionKey = ProcessType.ES_ANNUAL_REPORT.getProcessKey();
// 业务数据
List<ProcessEsAnnualInit> annualReportList = annualInitData.getDataList();
String processDefinitionKey = ProcessType.ES_ANNUAL_INIT.getProcessKey();
// 通用数据
CommonVO commonVO = annualInitData.getCommonVO();
// 当前用户Id
String userId = UserUtils.getUserId();
// 人员数据
Map<String, Object> variables = annualInitData.getFlowUser();
// 业务数据
List<ProcessEsAnnualInit> dataList = annualInitData.getDataList();
// 设置流程变量
Map<String, Object> variables = this.setVariables(annualInitData);
Map<String, Object> actVariables = this.setVariables(annualInitData);
// 删除草稿
actFlowCommonService.getExistDraftAndRemove(commonVO, ProcessTypeEnum.ES_ANNUAL_INIT);
// 启动流程
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables);
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, actVariables);
// 获取流程实例ID
String processDefinitionId = processInstance.getProcessDefinitionId();
String processInstanceId = processInstance.getId();
// 手动设置所有流程变量
actFlowCommonService.setProcessVariables(processInstanceId, variables);
actFlowCommonService.setProcessVariables(processInstanceId, actVariables);
// 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, commonVO);
// 设置流程实例Id
annualReportList.forEach(annualReport -> annualReport.setProcessInstanceId(processInstanceId));
// 保存到业务流程表
saveBatch(annualReportList);
// 保存选人信息
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
// 保存数据
dataList.forEach(data -> data.setProcessInstanceId(processInstanceId));
saveBatch(dataList);
// 根据流程实例id更新流程总表
String prcName = commonVO.getPrcName();
String prcMes = commonVO.getPrcMes();
Date dueTime = commonVO.getDueTime();
Integer prcType = ProcessTypeEnum.ES_ANNUAL_INIT.getValue();
actFlowCommonService.updateProcessAll(processInstanceId, userId, prcName, prcMes, prcType, dueTime);
}
public void startRunTask(AnnualInitDataVO annualInitData) {
@@ -125,13 +128,13 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
}
public Map<String, Object> setVariables(AnnualInitDataVO annualInitData) {
AnnualInitFlowUserVO annualInitFlowUserVO = annualInitData.getFlowUser();
Map<String, Object> actVariables = new HashMap<>();
Map<String, Object> flowUser = annualInitData.getFlowUser();
List<ProcessEsAnnualInit> dataList = annualInitData.getDataList();
List<String> contactUserList = new ArrayList<>();
dataList.forEach(item -> contactUserList.add(item.getContactUser()));
annualInitFlowUserVO.setContactUserList(contactUserList);
// 设置流程中各个节点的人
return new HashMap<>(this.setUserVariables(annualInitFlowUserVO));
List<String> contactUserList = dataList.stream().map(ProcessEsAnnualInit::getContactUser).collect(Collectors.toList());
actVariables.put("contactUserList", contactUserList);
actVariables.put("standardEngineer", flowUser.get("standardEngineer"));
return actVariables;
}
public Map<String, Object> setUserVariables(AnnualInitFlowUserVO userVO) {
@@ -169,10 +172,13 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
if (!actFlowCommonService.taskExists(taskId)) {
throw new JeroBootException("任务不存在");
}
String executionId = taskService.createTaskQuery().taskId(taskId).singleResult().getExecutionId();
// 根据当前执行Id获取所有子执行Id
List<String> executionIdList = actFlowCommonService.getAllChildExecutionIds(executionId);
executionIdList.add(executionId);
AnnualInitDataVO annualInitDataVO = new AnnualInitDataVO();
// 使用流程引擎根据taskId找到流程实例Id
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
// 获取流程通用数据
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
CommonVO commonVO = new CommonVO();
@@ -188,18 +194,17 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskName = task.getName();
switch (taskName) {
case STANDARD_ENGINEER_INIT:
// do nothing now
break;
case CONTACT_USER_EDIT:
case CONTACT_USER_SELECT:
wrapper.eq(ProcessEsAnnualInit::getContactUser, userId);
break;
case STANDARD_ENGINEER_EDIT:
wrapper.eq(ProcessEsAnnualInit::getRejectFlag, YesOrNoEnum.YES.getValue());
break;
case MAIN_DRAFT_LEADER_APPROVAL:
wrapper.eq(ProcessEsAnnualInit::getApprovalUser, userId);
break;
case CONTACT_USER_EDIT:
wrapper.eq(ProcessEsAnnualInit::getApprovalUser, userId);
break;
case MAIN_DRAFT_WRITE:
wrapper.eq(ProcessEsAnnualInit::getPrcMainDraftUser, userId);
break;
@@ -213,29 +218,18 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// do nothing now
break;
}
// 选人组件内容填充
annualInitDataVO.setFlowUser(this.getProcessUserInfo(processDefinitionId, processInstanceId));
wrapper.eq(ProcessEsAnnualInit::getProcessInstanceId, processInstanceId);
wrapper.eq(ProcessEsAnnualInit::getDelFlag, YesOrNoEnum.NO.getInteger());
annualInitDataVO.setDataList(list(wrapper));
return annualInitDataVO;
}
private AnnualInitFlowUserVO getProcessUserInfo(String processDefinitionId, String processInstanceId) {
//TODO 每个节点返回的人员信息应该是不同的
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId);
AnnualInitFlowUserVO annualInitFlowUserVO = new AnnualInitFlowUserVO();
Map<String, ProcessNode> userMap = nodeList.stream().collect(Collectors.toMap(ProcessNode::getVariableName, node -> node));
// annualInitFlowUserVO.setStandardEngineer(userMap.get("standardEngineer").getLinkUserIds());
// annualInitFlowUserVO.setContactUserList(userMap.get("contactUserList").getLinkUserIds());
// annualInitFlowUserVO.setWorkGroupUserList(userMap.get("workGroupUserList").getLinkUserIds());
// annualInitFlowUserVO.setCollectUserLeader(userMap.get("collectUserLeader").getLinkUserIds());
// annualInitFlowUserVO.setContactUserLeaderLeader(userMap.get("contactUserLeaderLeader").getLinkUserIds());
return annualInitFlowUserVO;
}
@Override
public void approvalInitChange(AnnualInitDataVO annualInitData, boolean pass) {
public void approvalProcess(AnnualInitDataVO annualInitData, boolean pass) {
String userId = UserUtils.getUserId();
CommonVO commonVO = annualInitData.getCommonVO();
AnnualInitFlowUserVO flowUserVO = annualInitData.getFlowUser();
Map<String, Object> flowUserVO = annualInitData.getFlowUser();
List<ProcessEsAnnualInit> dataList = annualInitData.getDataList();
String taskId = commonVO.getTaskId();
// 获取task
@@ -245,9 +239,8 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskName = task.getName();
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
switch (taskName) {
case CONTACT_USER_EDIT:
case CONTACT_USER_SELECT:
// 处理驳回
if (pass) {
dataList.forEach(d -> d.setRejectFlag(YesOrNoEnum.NO.getValue()));
@@ -258,7 +251,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 设置本地变量
List<String> approvalUserList = new ArrayList<>();
dataList.forEach(d -> approvalUserList.add(d.getApprovalUser()));
flowUserVO.setApprovalUserList(approvalUserList);
taskService.setVariableLocal(taskId, "approvalUserList", approvalUserList);
break;
case STANDARD_ENGINEER_EDIT:
@@ -267,7 +260,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 设置流程变量
List<String> contactUserList = new ArrayList<>();
dataList.forEach(d -> contactUserList.add(d.getContactUser()));
flowUserVO.setApprovalUserList(contactUserList);
runtimeService.setVariable(processInstanceId, "contactUserList", contactUserList);
break;
case MAIN_DRAFT_LEADER_APPROVAL:
@@ -278,7 +271,7 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
// 设置本地变量
List<String> mainDraftUserList = new ArrayList<>();
dataList.forEach(d -> mainDraftUserList.add(d.getPrcMainDraftUser()));
flowUserVO.setApprovalUserList(mainDraftUserList);
taskService.setVariableLocal(taskId, "mainDraftUserList", mainDraftUserList);
}
break;
@@ -300,8 +293,8 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
}
if (pass) {
if (flowUserVO != null) {
Map<String, Object> userMap = new HashMap<>(this.setUserVariables(flowUserVO));
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
// Map<String, Object> userMap = new HashMap<>(this.setUserVariables(flowUserVO));
// processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
}
runtimeService.setVariable(processInstanceId, "pass", true);
} else {
@@ -416,11 +409,11 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
item.setAuthDept(excelUtils.translateDictValue("depart_name", "id", "sys_depart", item.getAuthDept(), listDict));
item.setEnStandardCode(excelUtils.translateDictValue("enterprise_standard_code", item.getEnStandardCode(), 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.setContactUser(excelUtils.translateDictValue("realname", "id", "sys_user", item.getContactUser(), listDict));
item.setStandardPromoter(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getStandardPromoter(), listDict));
item.setContactUser(excelUtils.translateDictValue("CONCAT(realname, '(', username, ')')", "id", "sys_user", item.getContactUser(), listDict));
});
}
@@ -440,10 +433,10 @@ public class ProcessEsAnnualInitServiceImpl extends ServiceImpl<ProcessEsAnnualI
continue;
}
plan.setSort(String.valueOf(i++));
String authDept = plan.getProjectType();
String authDept = plan.getAuthDept();
String cooperationUnit = plan.getCooperationUnit();
String mainDraftingUnit = plan.getMainDraftingUnit();
String mainDraftingUser = plan.getProjectType();
String mainDraftingUser = plan.getMainDraftingUser();
String mainDraftingUnitResponsiblePerson = plan.getMainDraftingUnitResponsiblePerson();
String standardPromoter = plan.getStandardPromoter();
String contactUser = plan.getContactUser();