feat: 回显人员改为从流程变量中取数据

This commit is contained in:
2024-07-17 18:18:42 +08:00
parent 09a4f81860
commit a0f954188c
2 changed files with 60 additions and 9 deletions
@@ -137,20 +137,29 @@ public class ProcessStandardComplianceCheck implements Serializable {
* 车型上传文件Id
*/
@ApiModelProperty(value = "车型上传文件Id")
@TableField(exist = false)
@Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name")
private String modelFile;
/**
* 拆解单上传文件Id
*/
@ApiModelProperty(value = "拆解单上传文件Id")
@TableField(exist = false)
@Dict(dictTable = "oss_file", dicCode = "id", dicText = "file_name")
private String splitFile;
/**
* 部门接口人
*/
@ApiModelProperty(value = "部门接口人")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@TableField(exist = false)
private String deptUser;
/**
* 主排查人
*/
@ApiModelProperty(value = "主排查人")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@TableField(exist = false)
private String mainCheckUser;
@@ -166,6 +175,7 @@ public class ProcessStandardComplianceCheck implements Serializable {
* 会签人员
*/
@ApiModelProperty(value = "会签人员")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@TableField(exist = false)
private String countersignUser;
@@ -173,6 +183,7 @@ public class ProcessStandardComplianceCheck implements Serializable {
* 设计工程师科室经理
*/
@ApiModelProperty(value = "设计工程师科室经理")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@TableField(exist = false)
private String manager;
@@ -180,6 +191,7 @@ public class ProcessStandardComplianceCheck implements Serializable {
* 高级经理
*/
@ApiModelProperty(value = "高级经理")
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "realname")
@TableField(exist = false)
private String seniorManager;
@@ -52,6 +52,8 @@ import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.jero.modules.activiti.common.ActivitiCommon.*;
@@ -159,10 +161,16 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
// 给流程中设置主表流程变量Id
runtimeService.setVariable(processInstanceId, CHECK_ID, standardInfo.getId());
runtimeService.setVariable(processInstanceId, MAIN_INSTANCE_ID, processInstanceId);
this.startNodeDetailBusProcess(processInstanceId, standardInfo.getId(), businessInfoDTO.getDetailInfoList());
}
private void startNodeDetailBusProcess(String processInstanceId, String checkId, List<ProcessStandardComplianceCheckDetail> detailInfoList) {
LambdaUpdateWrapper<ProcessStandardComplianceCheckDetail> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, checkId);
sccDetailService.remove(updateWrapper);
// 子表设置流程实例Id
List<ProcessStandardComplianceCheckDetail> detailInfoList = businessInfoDTO.getDetailInfoList();
detailInfoList.forEach(detail -> {
detail.setCheckId(standardInfo.getId());
detail.setCheckId(checkId);
detail.setProcessInstanceId(processInstanceId);
});
sccDetailService.saveBatch(detailInfoList);
@@ -258,6 +266,11 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
String processDefinitionId = processInstance.getProcessDefinitionId();
Map<String, Object> userMap = new HashMap<>();
switch (xmlNodeId) {
case STANDARD_ENGINEER_START:
ProcessInfoVO<ProcessSccVO> handleData = this.getHandleData(taskId);
ProcessSccVO oldBus = handleData.getBusinessInfoDTO();
this.startNodeDetailBusProcess(processInstanceId, oldBus.getStandardInfo().getId(), businessInfoDTO.getDetailInfoList());
break;
case DEPT_USER_DISTRIBUTE:
// 设置主排查人
String mainCheckUser = businessInfoDTO.getStandardInfo().getMainCheckUser();
@@ -265,6 +278,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
// 保存选人信息
userMap.put(MAIN_CHECK_USER, mainCheckUser);
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
// 保存数据
this.updateById(standardInfo);
break;
case MAIN_CHECK_USER_DISTRIBUTE:
// 驳回
@@ -381,11 +396,6 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
detailQueryWrapper.eq(ProcessStandardComplianceCheckDetail::getCheckId, scc.getId());
detailList = sccDetailService.list(detailQueryWrapper);
}
Object distributeFlag = runtimeService.getVariable(mainInstanceId, DISTRIBUTE);
if (distributeFlag != null) {
scc.setDistributeFlag((boolean)distributeFlag ? YesOrNoEnum.YES.getValue() : YesOrNoEnum.NO.getValue());
}
processSccVO.setStandardInfo(scc);
String xmlNodeId = record.getNodeId();
// 设置流程信息
switch (xmlNodeId) {
@@ -414,10 +424,39 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
processSccVO.setDetailInfoList(detailList);
break;
}
// 设置流程变量等相关信息
this.handleDataVariables(scc, mainInstanceId);
processSccVO.setStandardInfo(scc);
result.setBusinessInfoDTO(processSccVO);
return result;
}
private void handleDataVariables(ProcessStandardComplianceCheck scc, String mainInstanceId) {
Object distributeFlag = runtimeService.getVariable(mainInstanceId, DISTRIBUTE);
if (distributeFlag != null) {
scc.setDistributeFlag((boolean)distributeFlag ? YesOrNoEnum.YES.getValue() : YesOrNoEnum.NO.getValue());
}
setStringAttribute(mainInstanceId, DEPT_USER, scc::setDeptUser, Object::toString);
setStringAttribute(mainInstanceId, MAIN_CHECK_USER, scc::setMainCheckUser, Object::toString);
setListAttribute(mainInstanceId, COUNTERSIGN_USER_LIST, v -> scc.setCountersignUser(String.join(",", (List<String>) v)), v -> (List<String>) v);
setStringAttribute(mainInstanceId, MANAGER, scc::setManager, Object::toString);
setStringAttribute(mainInstanceId, SENIOR_MANAGER, scc::setSeniorManager, Object::toString);
}
private void setListAttribute(String instanceId, String variableName, Consumer<List<String>> setter, Function<Object, List<String>> converter) {
Object value = runtimeService.getVariable(instanceId, variableName);
if (value != null) {
setter.accept(converter.apply(value));
}
}
private void setStringAttribute(String instanceId, String variableName, Consumer<String> setter, Function<Object, String> converter) {
Object value = runtimeService.getVariable(instanceId, variableName);
if (value != null) {
setter.accept(converter.apply(value));
}
}
private void setDesignerEngineerEvaluationHandleData(ProcessSccVO processSccVO, String mainInstanceId, String processInstanceId) {
LambdaQueryWrapper<ProcessStandardComplianceCheck> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProcessStandardComplianceCheck::getProcessInstanceId, mainInstanceId);