fix: 同意驳回报错
This commit is contained in:
+6
@@ -65,4 +65,10 @@ public class CommonVO {
|
|||||||
*/
|
*/
|
||||||
@ApiModelProperty("流程描述")
|
@ApiModelProperty("流程描述")
|
||||||
private String prcMes;
|
private String prcMes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 制修订计划说明
|
||||||
|
*/
|
||||||
|
@ApiModelProperty("制修订计划说明")
|
||||||
|
private String processDescription;
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-7
@@ -2,7 +2,12 @@ package com.jero.modules.activiti.process.common.service;
|
|||||||
|
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.system.api.ISysBaseAPI;
|
import com.jero.common.system.api.ISysBaseAPI;
|
||||||
|
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||||
import com.jero.modules.activiti.entity.ProcessNode;
|
import com.jero.modules.activiti.entity.ProcessNode;
|
||||||
|
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||||
|
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||||
|
import com.jero.modules.activiti.process.common.entity.CommonVO;
|
||||||
|
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||||
import com.jero.modules.activiti.service.ProcessNodeService;
|
import com.jero.modules.activiti.service.ProcessNodeService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.activiti.engine.RepositoryService;
|
import org.activiti.engine.RepositoryService;
|
||||||
@@ -37,6 +42,9 @@ public class ActFlowCommonService {
|
|||||||
@Resource
|
@Resource
|
||||||
private ProcessNodeService processNodeService;
|
private ProcessNodeService processNodeService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProcessApprovalRecordService processApprovalRecordService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 启动流程实例
|
* 启动流程实例
|
||||||
*/
|
*/
|
||||||
@@ -46,9 +54,6 @@ public class ActFlowCommonService {
|
|||||||
.orderByProcessDefinitionVersion().desc()
|
.orderByProcessDefinitionVersion().desc()
|
||||||
.list()
|
.list()
|
||||||
.get(0); // 获取最新版本的流程定义
|
.get(0); // 获取最新版本的流程定义
|
||||||
|
|
||||||
// 第一个节点默认通过
|
|
||||||
variables.put("pass", true);
|
|
||||||
// 启动流程
|
// 启动流程
|
||||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(latestProcessDefinition.getId(), variables);
|
ProcessInstance processInstance = runtimeService.startProcessInstanceById(latestProcessDefinition.getId(), variables);
|
||||||
// 流程定义ID
|
// 流程定义ID
|
||||||
@@ -58,10 +63,21 @@ public class ActFlowCommonService {
|
|||||||
return processInstance;
|
return processInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void updateApprovalInfo(CommonVO commonVO, String taskId, boolean pass) {
|
||||||
|
//更新审批表为完成,填充数据
|
||||||
|
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
|
||||||
|
approvalRecord.setCommitFlag(pass ? CommitFlagEnum.PASS.getValue() : CommitFlagEnum.REJECT.getValue());
|
||||||
|
approvalRecord.setCommitText(commonVO.getCommitText());
|
||||||
|
approvalRecord.setCommitFile(commonVO.getCommitFile());
|
||||||
|
approvalRecord.setFinishFlag(FinishFlagEnum.COMPLETE.getValue());
|
||||||
|
approvalRecord.setEndTime(new Date());
|
||||||
|
processApprovalRecordService.updateById(approvalRecord);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 完成提交任务
|
* 完成提交任务
|
||||||
*/
|
*/
|
||||||
public void completeTask(String taskId, String userId, Map<String, Object> map) {
|
public void completeTask(String taskId, String userId) {
|
||||||
//任务Id 查询任务对象
|
//任务Id 查询任务对象
|
||||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||||
if (!taskExists(taskId)) {
|
if (!taskExists(taskId)) {
|
||||||
@@ -78,7 +94,8 @@ public class ActFlowCommonService {
|
|||||||
log.info("负责人id=" + userId);
|
log.info("负责人id=" + userId);
|
||||||
log.info("流程实例id=" + processInstanceId);
|
log.info("流程实例id=" + processInstanceId);
|
||||||
//完成办理
|
//完成办理
|
||||||
taskService.complete(taskId, map);
|
taskService.complete(taskId);
|
||||||
|
|
||||||
log.info("-----------完成任务操作 结束----------");
|
log.info("-----------完成任务操作 结束----------");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +165,7 @@ public class ActFlowCommonService {
|
|||||||
return processDefinition.getKey();
|
return processDefinition.getKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void autoCompleteFirstTask(String userId, String processInstanceId, String processDefinitionId, Map<String, Object> variables) {
|
public void autoCompleteFirstTask(String userId, String processInstanceId, String processDefinitionId) {
|
||||||
// 自动完成第一个任务
|
// 自动完成第一个任务
|
||||||
List<Map<String, Object>> taskList = this.myTaskList(userId);
|
List<Map<String, Object>> taskList = this.myTaskList(userId);
|
||||||
if (!CollectionUtils.isEmpty(taskList)) {
|
if (!CollectionUtils.isEmpty(taskList)) {
|
||||||
@@ -160,7 +177,7 @@ public class ActFlowCommonService {
|
|||||||
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
|
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
|
||||||
log.info("匹配到的任务ID:{}", map.get("taskId").toString());
|
log.info("匹配到的任务ID:{}", map.get("taskId").toString());
|
||||||
|
|
||||||
this.completeTask(map.get("taskId").toString(), userId, variables);
|
this.completeTask(map.get("taskId").toString(), userId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+50
-14
@@ -4,7 +4,9 @@ import com.jero.common.api.vo.Result;
|
|||||||
import com.jero.common.aspect.annotation.AutoLog;
|
import com.jero.common.aspect.annotation.AutoLog;
|
||||||
import com.jero.common.aspect.annotation.Translation;
|
import com.jero.common.aspect.annotation.Translation;
|
||||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||||
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
|
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.vo.AnnualReportDataVO;
|
||||||
import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService;
|
import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
@@ -22,7 +24,6 @@ import java.io.OutputStream;
|
|||||||
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,6 +39,9 @@ public class ESAnnualReportController {
|
|||||||
@Resource
|
@Resource
|
||||||
private ProcessEsAnnualReportService annualReportService;
|
private ProcessEsAnnualReportService annualReportService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ActFlowCommonService actFlowCommonService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导入模板下载
|
* 导入模板下载
|
||||||
*/
|
*/
|
||||||
@@ -83,42 +87,74 @@ public class ESAnnualReportController {
|
|||||||
/**
|
/**
|
||||||
* 新增主动上报申请
|
* 新增主动上报申请
|
||||||
*
|
*
|
||||||
* @param esAnnualReportList
|
* @param
|
||||||
*/
|
*/
|
||||||
@AutoLog(value = "企标年度制修订主动上报流程-发起流程")
|
@AutoLog(value = "企标年度制修订主动上报流程-发起流程")
|
||||||
@ApiOperation(value="企标年度制修订主动上报流程-发起流程", notes="企标年度制修订主动上报流程-发起流程")
|
@ApiOperation(value="企标年度制修订主动上报流程-发起流程", notes="企标年度制修订主动上报流程-发起流程")
|
||||||
@PostMapping("/start")
|
@PostMapping("/start")
|
||||||
public Result<?> startInitChange() {
|
public Result<?> startInitChange(@RequestBody AnnualReportDataVO annualReportDataVO) {
|
||||||
// TODO 暂时不处理参数
|
annualReportService.startProcess(annualReportDataVO);
|
||||||
annualReportService.startProcess();
|
|
||||||
return Result.OK();
|
return Result.OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存到待办
|
||||||
|
* @param annualReportDataVO
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "企标立项变更流程-保存")
|
||||||
|
@ApiOperation(value="企标立项变更流程-保存", notes="企标立项变更流程-保存")
|
||||||
|
@PostMapping("/save")
|
||||||
|
public Result<?> save(@RequestBody AnnualReportDataVO annualReportDataVO) {
|
||||||
|
annualReportService.saveToDraft(annualReportDataVO);
|
||||||
|
return Result.OK();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存到待办
|
||||||
|
* @param taskId
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "企标立项变更流程-办理")
|
||||||
|
@ApiOperation(value="企标立项变更流程-办理", notes="企标立项变更流程-办理")
|
||||||
|
@PostMapping("/handle")
|
||||||
|
public Result<?> handle(@RequestParam(value = "taskId") String taskId) {
|
||||||
|
return Result.OK(annualReportService.getHandleData(taskId));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同意
|
* 同意
|
||||||
*
|
*
|
||||||
* @param taskId
|
* @param annualReportDataVO
|
||||||
* @param esAnnualReportList
|
|
||||||
*/
|
*/
|
||||||
@AutoLog(value = "企标年度制修订主动上报流程-同意")
|
@AutoLog(value = "企标年度制修订主动上报流程-同意")
|
||||||
@ApiOperation(value="企标年度制修订主动上报流程-同意", notes="企标年度制修订主动上报流程-同意")
|
@ApiOperation(value="企标年度制修订主动上报流程-同意", notes="企标年度制修订主动上报流程-同意")
|
||||||
@PostMapping("/agree")
|
@PostMapping("/agree")
|
||||||
public Result<?> agree(@RequestParam("taskId") String taskId, @RequestBody List<ProcessEsAnnualReport> esAnnualReportList) {
|
public Result<?> agree(@RequestBody AnnualReportDataVO annualReportDataVO) {
|
||||||
annualReportService.approvalProcess(taskId, esAnnualReportList, true);
|
annualReportService.approvalProcess(annualReportDataVO, true);
|
||||||
return Result.OK();
|
return Result.OK();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 驳回
|
* 驳回
|
||||||
*
|
*
|
||||||
* @param taskId
|
* @param annualReportDataVO
|
||||||
* @param esAnnualReportList
|
|
||||||
*/
|
*/
|
||||||
@AutoLog(value = "企标年度制修订主动上报流程-驳回")
|
@AutoLog(value = "企标年度制修订主动上报流程-驳回")
|
||||||
@ApiOperation(value="企标年度制修订主动上报流程-驳回", notes="企标年度制修订主动上报流程-驳回")
|
@ApiOperation(value="企标年度制修订主动上报流程-驳回", notes="企标年度制修订主动上报流程-驳回")
|
||||||
@PostMapping("/reject")
|
@PostMapping("/reject")
|
||||||
public Result<?> reject(@RequestParam("taskId") String taskId, @RequestBody List<ProcessEsAnnualReport> esAnnualReportList) {
|
public Result<?> reject(@RequestBody AnnualReportDataVO annualReportDataVO) {
|
||||||
annualReportService.approvalProcess(taskId, esAnnualReportList, false);
|
annualReportService.approvalProcess(annualReportDataVO, false);
|
||||||
|
return Result.OK();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 转办
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "企标年度制修订主动上报流程-转办")
|
||||||
|
@ApiOperation(value="企标年度制修订主动上报流程-转办", notes="企标年度制修订主动上报流程-转办")
|
||||||
|
@PostMapping(value = "/transfer")
|
||||||
|
public Result<?> transfer(@RequestBody TransferVO transferVO) {
|
||||||
|
actFlowCommonService.transfer(transferVO.getTaskId(), transferVO.getUserId());
|
||||||
return Result.OK();
|
return Result.OK();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+43
@@ -333,6 +333,49 @@ public class ProcessEsAnnualReport implements Serializable {
|
|||||||
@ApiModelProperty(value = "隶属工作组")
|
@ApiModelProperty(value = "隶属工作组")
|
||||||
private String workGroup;
|
private String workGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否下发联络人标识 0不下发 1下发
|
||||||
|
*/
|
||||||
|
@Dict(dicCode = "YN")
|
||||||
|
@ApiModelProperty(value = "是否下发联络人标识 0不下发 1下发")
|
||||||
|
private String distributeFlag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门联络人
|
||||||
|
*/
|
||||||
|
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
|
||||||
|
@ApiModelProperty(value = "部门联络人")
|
||||||
|
private String contactUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作组所联络人
|
||||||
|
*/
|
||||||
|
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
|
||||||
|
@ApiModelProperty(value = "工作组所联络人")
|
||||||
|
private String workGroupUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作组所联络人集合
|
||||||
|
*/
|
||||||
|
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
|
||||||
|
@ApiModelProperty(value = "工作组所联络人集合")
|
||||||
|
private String workGroupUserList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联络人主管级上一级领导
|
||||||
|
*/
|
||||||
|
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
|
||||||
|
@ApiModelProperty(value = "联络人主管级上一级领导")
|
||||||
|
private String contactUserLeaderLeader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收集联络人主管级领导
|
||||||
|
*/
|
||||||
|
@Dict(dicCode = "id", dictTable = "sys_user", dicText = "username")
|
||||||
|
@ApiModelProperty(value = "收集联络人主管级领导")
|
||||||
|
private String collectUserLeader;
|
||||||
|
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
|||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
package com.jero.modules.activiti.process.esAnnualReport.entity.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: Mzaxd
|
||||||
|
* @Date: 2023/10/27 7:32
|
||||||
|
*/
|
||||||
|
public class AnnualReportTaskNameConstant {
|
||||||
|
public static final String STANDARD_ENGINEER_INIT = "标准化工程师发起";
|
||||||
|
public static final String CONTACT_USER_DISTRIBUTE = "各部所联络人 填写/下发任务";
|
||||||
|
public static final String WORK_GROUP_COLLECT = "工作组联络人 线下收集,填写计划内容(可跳过)";
|
||||||
|
public static final String COLLECT_LEADER_APPROVAL = "收集联络人主管级领导审批";
|
||||||
|
public static final String CONTACT_USER_COLLECT = "各部所联络人汇总";
|
||||||
|
public static final String CONTACT_USER_LEADER_APPROVAL = "联络人主管级上级领导审批";
|
||||||
|
public static final String CONTACT_USER_EDIT = "各部所联络人修改调整";
|
||||||
|
public static final String STANDARD_ENGINEER_COLLECT = "标准化工程师归档";
|
||||||
|
}
|
||||||
+26
@@ -0,0 +1,26 @@
|
|||||||
|
package com.jero.modules.activiti.process.esAnnualReport.entity.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
import com.jero.modules.activiti.process.common.entity.CommonVO;
|
||||||
|
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: Mzaxd
|
||||||
|
* @Date: 2023/10/26 17:28
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AnnualReportDataVO {
|
||||||
|
|
||||||
|
@JsonProperty("common")
|
||||||
|
private CommonVO commonVO;
|
||||||
|
|
||||||
|
@JsonProperty("dataList")
|
||||||
|
private List<ProcessEsAnnualReport> dataList;
|
||||||
|
|
||||||
|
@JsonProperty("flowUser")
|
||||||
|
private AnnualReportFlowUserVO flowUserVO;
|
||||||
|
|
||||||
|
}
|
||||||
+40
@@ -0,0 +1,40 @@
|
|||||||
|
package com.jero.modules.activiti.process.esAnnualReport.entity.vo;
|
||||||
|
|
||||||
|
import com.jero.common.aspect.annotation.Dict;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author: Mzaxd
|
||||||
|
* @Date: 2023/10/26 17:29
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AnnualReportFlowUserVO {
|
||||||
|
|
||||||
|
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
|
||||||
|
@ApiModelProperty("标准化工程师")
|
||||||
|
private String standardEngineer;
|
||||||
|
|
||||||
|
// 部所联络人
|
||||||
|
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
|
||||||
|
@ApiModelProperty("个部所联络人")
|
||||||
|
private String contactUserList;
|
||||||
|
|
||||||
|
// 标准专家
|
||||||
|
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
|
||||||
|
@ApiModelProperty("工作组联络人")
|
||||||
|
private String workGroupUserList;
|
||||||
|
|
||||||
|
// 主起草人主管级领导
|
||||||
|
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
|
||||||
|
@ApiModelProperty("收集联络人主管级领导")
|
||||||
|
private String collectUserLeader;
|
||||||
|
|
||||||
|
// 主起草人主管级领导上级领导
|
||||||
|
@Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
|
||||||
|
@ApiModelProperty("联络人主管级上级领导")
|
||||||
|
private String contactUserLeaderLeader;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否下发")
|
||||||
|
private boolean distribute;
|
||||||
|
}
|
||||||
+7
-2
@@ -2,6 +2,7 @@ package com.jero.modules.activiti.process.esAnnualReport.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
|
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
|
||||||
|
import com.jero.modules.activiti.process.esAnnualReport.entity.vo.AnnualReportDataVO;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -16,7 +17,11 @@ public interface ProcessEsAnnualReportService extends IService<ProcessEsAnnualRe
|
|||||||
|
|
||||||
Map<String, Object> importData(MultipartFile file);
|
Map<String, Object> importData(MultipartFile file);
|
||||||
|
|
||||||
void startProcess();
|
void startProcess(AnnualReportDataVO annualReportDataVO);
|
||||||
|
|
||||||
void approvalProcess(String taskId, List<ProcessEsAnnualReport> esAnnualReportList, boolean b);
|
void approvalProcess(AnnualReportDataVO annualReportDataVO, boolean b);
|
||||||
|
|
||||||
|
void saveToDraft(AnnualReportDataVO annualReportDataVO);
|
||||||
|
|
||||||
|
AnnualReportDataVO getHandleData(String taskId);
|
||||||
}
|
}
|
||||||
|
|||||||
+236
-33
@@ -7,21 +7,35 @@ import com.jero.common.api.CommonAPI;
|
|||||||
import com.jero.common.constant.enums.YesOrNoEnum;
|
import com.jero.common.constant.enums.YesOrNoEnum;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.system.vo.SysDictItemCore;
|
import com.jero.common.system.vo.SysDictItemCore;
|
||||||
|
import com.jero.modules.activiti.entity.ProcessAll;
|
||||||
|
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
|
||||||
|
import com.jero.modules.activiti.entity.ProcessNode;
|
||||||
|
import com.jero.modules.activiti.enums.CommitFlagEnum;
|
||||||
|
import com.jero.modules.activiti.enums.FinishFlagEnum;
|
||||||
|
import com.jero.modules.activiti.process.common.entity.CommonVO;
|
||||||
import com.jero.modules.activiti.process.common.enums.ProcessType;
|
import com.jero.modules.activiti.process.common.enums.ProcessType;
|
||||||
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
|
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
|
||||||
|
import com.jero.modules.activiti.process.common.service.ProcessDraftService;
|
||||||
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
|
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.entity.vo.AnnualReportFlowUserVO;
|
||||||
import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualReportMapper;
|
import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualReportMapper;
|
||||||
import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService;
|
import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService;
|
||||||
|
import com.jero.modules.activiti.process.esInitChange.entity.ProcessEsInitChange;
|
||||||
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType;
|
import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectType;
|
||||||
|
import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeDataVO;
|
||||||
|
import com.jero.modules.activiti.process.esInitChange.entity.vo.InitChangeFlowUserVO;
|
||||||
|
import com.jero.modules.activiti.service.ProcessAllService;
|
||||||
|
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
|
||||||
|
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.activiti.util.ExcelUtils;
|
||||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||||
import com.jero.modules.sys.utils.UserUtils;
|
import com.jero.modules.sys.utils.UserUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.activiti.engine.RepositoryService;
|
|
||||||
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.RuntimeService;
|
||||||
import org.activiti.engine.TaskService;
|
import org.activiti.engine.TaskService;
|
||||||
import org.activiti.engine.repository.ProcessDefinition;
|
|
||||||
import org.activiti.engine.runtime.ProcessInstance;
|
import org.activiti.engine.runtime.ProcessInstance;
|
||||||
import org.activiti.engine.task.Task;
|
import org.activiti.engine.task.Task;
|
||||||
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
||||||
@@ -35,16 +49,18 @@ import java.io.IOException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static com.jero.modules.activiti.process.esAnnualReport.entity.constant.AnnualReportTaskNameConstant.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ThinkBook
|
* @author ThinkBook
|
||||||
* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Service实现
|
* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Service实现
|
||||||
* @createDate 2023-10-18 09:52:41
|
* @createDate 2023-10-18 09:52:41
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@Transactional(rollbackFor = JeroBootException.class)
|
@Transactional(rollbackFor = JeroBootException.class)
|
||||||
public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnualReportMapper, ProcessEsAnnualReport>
|
public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnualReportMapper, ProcessEsAnnualReport>
|
||||||
implements ProcessEsAnnualReportService {
|
implements ProcessEsAnnualReportService {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CommonAPI commonAPI;
|
private CommonAPI commonAPI;
|
||||||
@@ -59,50 +75,235 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
|
|||||||
private ActFlowCommonService actFlowCommonService;
|
private ActFlowCommonService actFlowCommonService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RepositoryService repositoryService;
|
private ProcessDraftService processDraftService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProcessNodeLinkService processNodeLinkService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProcessNodeService processNodeService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProcessApprovalRecordService processApprovalRecordService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProcessAllService processAllService;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private RuntimeService runtimeService;
|
private RuntimeService runtimeService;
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private TaskService taskService;
|
private TaskService taskService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startProcess() {
|
public void startProcess(AnnualReportDataVO annualReportData) {
|
||||||
String userId = UserUtils.getUserId();
|
// 流程Key
|
||||||
// TODO 校验数据
|
|
||||||
|
|
||||||
String processDefinitionKey = ProcessType.ES_ANNUAL_REPORT.getProcessKey();
|
String processDefinitionKey = ProcessType.ES_ANNUAL_REPORT.getProcessKey();
|
||||||
ProcessDefinition latestProcessDefinition = repositoryService.createProcessDefinitionQuery()
|
String userId = UserUtils.getUserId();
|
||||||
.processDefinitionKey(processDefinitionKey)
|
List<ProcessEsAnnualReport> annualReportList = annualReportData.getDataList();
|
||||||
.orderByProcessDefinitionVersion().desc()
|
|
||||||
.list()
|
|
||||||
.get(0); // 获取最新版本的流程定义
|
|
||||||
|
|
||||||
Map<String, Object> variables = new HashMap<>();
|
// 设置流程变量
|
||||||
variables.put("","");
|
Map<String, Object> variables = setVariables(annualReportData);
|
||||||
// 启动流程
|
// 启动流程
|
||||||
ProcessInstance processInstance = runtimeService.startProcessInstanceById(latestProcessDefinition.getId(), variables);
|
ProcessInstance processInstance = actFlowCommonService.startProcess(processDefinitionKey, variables);
|
||||||
// 流程定义ID
|
|
||||||
|
// 获取流程实例ID
|
||||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||||
// 流程实例Id
|
String processInstanceId = processInstance.getId();
|
||||||
String processInstanceId = processInstance.getProcessInstanceId();
|
|
||||||
// 自动完成第一个任务
|
// 自动完成第一个任务
|
||||||
actFlowCommonService.autoCompleteFirstTask(userId, processDefinitionId, processInstanceId, variables);
|
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId);
|
||||||
// TODO 保存数据
|
// 设置流程实例Id
|
||||||
log.info("【启动流程】- 成功,processDefinitionId:{}", processDefinitionId);
|
for (ProcessEsAnnualReport annualReport : annualReportList) {
|
||||||
|
annualReport.setProcessInstanceId(processInstance.getId());
|
||||||
|
}
|
||||||
|
// 保存选人信息
|
||||||
|
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, this.getUserMap(variables));
|
||||||
|
|
||||||
|
// 根据流程实例id更新流程总表
|
||||||
|
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
||||||
|
process.setCreateUserId(userId);
|
||||||
|
process.setPrcName(annualReportData.getCommonVO().getPrcName());
|
||||||
|
process.setPrcMes(annualReportData.getCommonVO().getPrcMes());
|
||||||
|
process.setDueTime(annualReportData.getCommonVO().getDueTime());
|
||||||
|
processAllService.updateById(process);
|
||||||
|
// 执行流程发起前的操作
|
||||||
|
this.startRunTask(annualReportData);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Object> getUserMap(Map<String, Object> variables) {
|
||||||
|
variables.remove("distribute");
|
||||||
|
variables.remove("processDescription");
|
||||||
|
return variables;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Object> setVariables(AnnualReportDataVO annualReportData) {
|
||||||
|
AnnualReportFlowUserVO annualReportFlowUserVO = annualReportData.getFlowUserVO();
|
||||||
|
CommonVO commonVO = annualReportData.getCommonVO();
|
||||||
|
Map<String, Object> map = new HashMap<>();
|
||||||
|
// 设置流程中各个节点的人
|
||||||
|
map.put("standardEngineer", annualReportFlowUserVO.getStandardEngineer());
|
||||||
|
if (!annualReportFlowUserVO.getContactUserList().isEmpty()) {
|
||||||
|
map.put("contactUserList", Optional.of(annualReportFlowUserVO.getContactUserList()).map(s -> Arrays.asList(s.split(","))).orElse(Collections.emptyList()));
|
||||||
|
}
|
||||||
|
if (!annualReportFlowUserVO.getWorkGroupUserList().isEmpty()) {
|
||||||
|
map.put("workGroupUserList", Optional.of(annualReportFlowUserVO.getWorkGroupUserList()).map(s -> Arrays.asList(s.split(","))).orElse(Collections.emptyList()));
|
||||||
|
}
|
||||||
|
map.put("collectUserLeader", annualReportFlowUserVO.getContactUserLeaderLeader());
|
||||||
|
map.put("contactUserLeaderLeader", annualReportFlowUserVO.getContactUserLeaderLeader());
|
||||||
|
// 设置流程分支判断变量
|
||||||
|
map.put("distribute", annualReportFlowUserVO.isDistribute());
|
||||||
|
map.put("processDescription", commonVO.getProcessDescription());
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void startRunTask(AnnualReportDataVO annualReportDataVO) {
|
||||||
|
//TODO info部长
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void approvalProcess(String taskId, List<ProcessEsAnnualReport> esAnnualReportList, boolean pass) {
|
public void approvalProcess(AnnualReportDataVO annualReportDataVO, boolean pass) {
|
||||||
String userId = UserUtils.getUserId();
|
String userId = UserUtils.getUserId();
|
||||||
|
CommonVO commonVO = annualReportDataVO.getCommonVO();
|
||||||
|
AnnualReportFlowUserVO flowUserVO = annualReportDataVO.getFlowUserVO();
|
||||||
|
List<ProcessEsAnnualReport> dataList = annualReportDataVO.getDataList();
|
||||||
|
String taskId = commonVO.getTaskId();
|
||||||
|
// 获取task
|
||||||
|
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
|
||||||
|
throw new JeroBootException("taskId为空或任务不存在");
|
||||||
|
}
|
||||||
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||||
String taskDefinitionKey = task.getTaskDefinitionKey();
|
String taskName = task.getName();
|
||||||
// TODO 校验数据
|
Map<String, Object> variables = new HashMap<>();
|
||||||
// TODO 根据当前节点类型保存数据
|
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||||
|
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
|
||||||
|
switch (taskName) {
|
||||||
|
case CONTACT_USER_DISTRIBUTE:
|
||||||
|
// 获取是否分发
|
||||||
|
if (!flowUserVO.isDistribute()) {
|
||||||
|
// 保存联络人主管级上级领导
|
||||||
|
dataList.forEach(data -> data.setContactUserLeaderLeader(flowUserVO.getContactUserLeaderLeader()));
|
||||||
|
// 不分发,入库存表
|
||||||
|
saveBatch(dataList);
|
||||||
|
}
|
||||||
|
// 设置流程变量
|
||||||
|
break;
|
||||||
|
case WORK_GROUP_COLLECT:
|
||||||
|
String executionId = task.getExecutionId();
|
||||||
|
String contactUser = (String) runtimeService.getVariable(executionId, "contactUser");
|
||||||
|
dataList.forEach(data -> data.setContactUser(contactUser));
|
||||||
|
// 保存收集联络人主管级领导
|
||||||
|
dataList.forEach(data -> data.setCollectUserLeader(flowUserVO.getCollectUserLeader()));
|
||||||
|
dataList.forEach(data -> data.setWorkGroupUser(UserUtils.getUserId()));
|
||||||
|
saveBatch(dataList);
|
||||||
|
// 设置流程变量
|
||||||
|
break;
|
||||||
|
case CONTACT_USER_COLLECT:
|
||||||
|
case CONTACT_USER_EDIT:
|
||||||
|
// 先删后增
|
||||||
|
LambdaQueryWrapper<ProcessEsAnnualReport> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(ProcessEsAnnualReport::getContactUser, UserUtils.getUserId());
|
||||||
|
remove(wrapper);
|
||||||
|
saveBatch(dataList);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (pass) {
|
||||||
|
// 更新业务流程数据
|
||||||
|
variables = setVariables(annualReportDataVO);
|
||||||
|
variables.put("pass", true);
|
||||||
|
// 保存选人信息
|
||||||
|
Map<String, Object> userMap = this.getUserMap(variables);
|
||||||
|
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
|
||||||
|
} else {
|
||||||
|
// 设置流程变量
|
||||||
|
variables.put("pass", false);
|
||||||
|
}
|
||||||
// 设置流程变量
|
// 设置流程变量
|
||||||
// 完成任务
|
variables.put("pass", pass);
|
||||||
actFlowCommonService.completeTask(taskId, userId, null);
|
|
||||||
|
//更新审批表为完成,填充数据
|
||||||
|
actFlowCommonService.updateApprovalInfo(commonVO, taskId, pass);
|
||||||
|
//审批节点
|
||||||
|
actFlowCommonService.completeTask(taskId, userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveToDraft(AnnualReportDataVO annualReportDataVO) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnnualReportDataVO getHandleData(String taskId) {
|
||||||
|
String userId = UserUtils.getUserId();
|
||||||
|
if (!actFlowCommonService.taskExists(taskId)) {
|
||||||
|
throw new JeroBootException("任务不存在");
|
||||||
|
}
|
||||||
|
AnnualReportDataVO annualReportDataVO = new AnnualReportDataVO();
|
||||||
|
// 使用流程引擎根据taskId找到流程实例Id
|
||||||
|
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||||
|
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
|
||||||
|
// 获取流程通用数据
|
||||||
|
ProcessAll process = processAllService.getByProcessInstanceId(processInstanceId);
|
||||||
|
CommonVO commonVO = new CommonVO();
|
||||||
|
commonVO.setPrcName(process.getPrcName());
|
||||||
|
commonVO.setTaskId(process.getTaskId());
|
||||||
|
commonVO.setPrcMes(process.getPrcMes());
|
||||||
|
commonVO.setDueTime(process.getDueTime());
|
||||||
|
String processDescription = (String) runtimeService.getVariable(processInstanceId, "processDescription");
|
||||||
|
boolean distribute = (boolean) runtimeService.getVariable(processInstanceId, "distribute");
|
||||||
|
commonVO.setProcessDescription(processDescription);
|
||||||
|
annualReportDataVO.setCommonVO(commonVO);
|
||||||
|
// 获取流程实例数据
|
||||||
|
LambdaQueryWrapper<ProcessEsAnnualReport> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId);
|
||||||
|
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
|
||||||
|
String taskName = task.getName();
|
||||||
|
switch (taskName) {
|
||||||
|
case STANDARD_ENGINEER_INIT:
|
||||||
|
// do nothing now
|
||||||
|
break;
|
||||||
|
case CONTACT_USER_DISTRIBUTE:
|
||||||
|
// do nothing now
|
||||||
|
break;
|
||||||
|
case WORK_GROUP_COLLECT:
|
||||||
|
// do nothing now
|
||||||
|
break;
|
||||||
|
case COLLECT_LEADER_APPROVAL:
|
||||||
|
wrapper.eq(ProcessEsAnnualReport::getCollectUserLeader, userId);
|
||||||
|
annualReportDataVO.setDataList(list(wrapper));
|
||||||
|
break;
|
||||||
|
case CONTACT_USER_COLLECT:
|
||||||
|
wrapper.eq(ProcessEsAnnualReport::getContactUser, userId);
|
||||||
|
annualReportDataVO.setDataList(list(wrapper));
|
||||||
|
break;
|
||||||
|
case CONTACT_USER_LEADER_APPROVAL:
|
||||||
|
wrapper.eq(ProcessEsAnnualReport::getContactUserLeaderLeader, userId);
|
||||||
|
annualReportDataVO.setDataList(list(wrapper));
|
||||||
|
break;
|
||||||
|
case CONTACT_USER_EDIT:
|
||||||
|
wrapper.eq(ProcessEsAnnualReport::getContactUser, userId);
|
||||||
|
annualReportDataVO.setDataList(list(wrapper));
|
||||||
|
break;
|
||||||
|
case STANDARD_ENGINEER_COLLECT:
|
||||||
|
wrapper.eq(ProcessEsAnnualReport::getProcessInstanceId, processInstanceId);
|
||||||
|
annualReportDataVO.setDataList(list(wrapper));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// 选人组件内容填充
|
||||||
|
annualReportDataVO.setFlowUserVO(this.getProcessUserInfo(processDefinitionId, processInstanceId));
|
||||||
|
return annualReportDataVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
private AnnualReportFlowUserVO getProcessUserInfo(String processDefinitionId, String processInstanceId) {
|
||||||
|
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId);
|
||||||
|
AnnualReportFlowUserVO annualReportFlowUserVO = new AnnualReportFlowUserVO();
|
||||||
|
Map<String, ProcessNode> userMap = nodeList.stream().collect(Collectors.toMap(ProcessNode::getVariableName, node -> node));
|
||||||
|
annualReportFlowUserVO.setStandardEngineer(userMap.get("standardEngineer").getLinkUserIds());
|
||||||
|
annualReportFlowUserVO.setContactUserList(userMap.get("contactUserList").getLinkUserIds());
|
||||||
|
annualReportFlowUserVO.setWorkGroupUserList(userMap.get("workGroupUserList").getLinkUserIds());
|
||||||
|
annualReportFlowUserVO.setCollectUserLeader(userMap.get("collectUserLeader").getLinkUserIds());
|
||||||
|
annualReportFlowUserVO.setContactUserLeaderLeader(userMap.get("contactUserLeaderLeader").getLinkUserIds());
|
||||||
|
return annualReportFlowUserVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -183,7 +384,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
|
|||||||
// 转换成key为企标编号的map
|
// 转换成key为企标编号的map
|
||||||
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
|
Map<String, LawsEnterpriseStandard> esMap = esList.stream().collect(Collectors.toMap(LawsEnterpriseStandard::getStandardNumber, item -> item));
|
||||||
|
|
||||||
list.forEach(item-> {
|
list.forEach(item -> {
|
||||||
// 如果是制定则去除掉所有的原企标名称 原企标编号
|
// 如果是制定则去除掉所有的原企标名称 原企标编号
|
||||||
if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) {
|
if (ESPProjectType.ENACT.getValue().equals(item.getProjectType())) {
|
||||||
item.setOriginEnStandardName(null);
|
item.setOriginEnStandardName(null);
|
||||||
@@ -199,6 +400,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void transToDictValue(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) {
|
private void transToDictValue(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) {
|
||||||
list.forEach(item -> {
|
list.forEach(item -> {
|
||||||
item.setProjectType(excelUtils.translateDictValue("esp_revision_type", item.getProjectType(), listDict));
|
item.setProjectType(excelUtils.translateDictValue("esp_revision_type", item.getProjectType(), listDict));
|
||||||
@@ -212,6 +414,7 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
|
|||||||
item.setWorkGroup(excelUtils.translateDictValue("name", "id", "laws_working_group", item.getWorkGroup(), listDict));
|
item.setWorkGroup(excelUtils.translateDictValue("name", "id", "laws_working_group", item.getWorkGroup(), listDict));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> validationList(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) {
|
private List<String> validationList(List<ProcessEsAnnualReport> list, List<SysDictItemCore> listDict) {
|
||||||
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
|
List<LawsEnterpriseStandard> esList = enterpriseStandardService.list();
|
||||||
List<String> errorMsgs = new ArrayList<>();
|
List<String> errorMsgs = new ArrayList<>();
|
||||||
|
|||||||
+57
-40
@@ -107,15 +107,16 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId);
|
List<ProcessNode> nodeList = processNodeService.getNodeList(processDefinitionId, processInstanceId);
|
||||||
InitChangeFlowUserVO initChangeFlowUserVO = new InitChangeFlowUserVO();
|
InitChangeFlowUserVO initChangeFlowUserVO = new InitChangeFlowUserVO();
|
||||||
Map<String, ProcessNode> userMap = nodeList.stream().collect(Collectors.toMap(ProcessNode::getVariableName, node -> node));
|
Map<String, ProcessNode> userMap = nodeList.stream().collect(Collectors.toMap(ProcessNode::getVariableName, node -> node));
|
||||||
initChangeFlowUserVO.setCreateUser(userMap.get("createUser").getLinkUserIds());
|
Optional.ofNullable(userMap.get("createUser")).ifPresent(node -> initChangeFlowUserVO.setCreateUser(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setContactUser(userMap.get("contactUser").getLinkUserIds());
|
Optional.ofNullable(userMap.get("contactUser")).ifPresent(node -> initChangeFlowUserVO.setContactUser(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setMainDraftUserLeader(userMap.get("mainDraftUserLeader").getLinkUserIds());
|
Optional.ofNullable(userMap.get("standardExpertList")).ifPresent(node -> initChangeFlowUserVO.setStandardExpert(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setMainDraftUserLeaderLeader(userMap.get("mainDraftUserLeaderLeader").getLinkUserIds());
|
Optional.ofNullable(userMap.get("mainDraftUserLeader")).ifPresent(node -> initChangeFlowUserVO.setMainDraftUserLeader(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setStandardizationApprovalUser(userMap.get("standardizationApprovalUser").getLinkUserIds());
|
Optional.ofNullable(userMap.get("mainDraftUserLeaderLeader")).ifPresent(node -> initChangeFlowUserVO.setMainDraftUserLeaderLeader(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setNewMainDraftUserLeaderLeader(userMap.get("newMainDraftUserLeaderLeader").getLinkUserIds());
|
Optional.ofNullable(userMap.get("standardizationApprovalUser")).ifPresent(node -> initChangeFlowUserVO.setStandardizationApprovalUser(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setNewMainDraftUserLeader(userMap.get("newMainDraftUserLeader").getLinkUserIds());
|
Optional.ofNullable(userMap.get("newMainDraftUserLeaderLeader")).ifPresent(node -> initChangeFlowUserVO.setNewMainDraftUserLeaderLeader(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setCopyUser(userMap.get("copyUser").getLinkUserIds());
|
Optional.ofNullable(userMap.get("newMainDraftUserLeader")).ifPresent(node -> initChangeFlowUserVO.setNewMainDraftUserLeader(node.getLinkUserIds()));
|
||||||
initChangeFlowUserVO.setStandardExpert(userMap.get("standardExpert").getLinkUserIds());
|
Optional.ofNullable(userMap.get("relatedUserList")).ifPresent(node -> initChangeFlowUserVO.setRelatedUser(node.getLinkUserIds()));
|
||||||
|
Optional.ofNullable(userMap.get("copyUser")).ifPresent(node -> initChangeFlowUserVO.setCopyUser(node.getLinkUserIds()));
|
||||||
return initChangeFlowUserVO;
|
return initChangeFlowUserVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -138,7 +139,14 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
String processDefinitionId = processInstance.getProcessDefinitionId();
|
String processDefinitionId = processInstance.getProcessDefinitionId();
|
||||||
String processInstanceId = processInstance.getId();
|
String processInstanceId = processInstance.getId();
|
||||||
// 自动完成第一个任务
|
// 自动完成第一个任务
|
||||||
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId, variables);
|
runtimeService.setVariable(processInstanceId, "createUser", variables.get("createUser"));
|
||||||
|
runtimeService.setVariable(processInstanceId, "contactUser", variables.get("contactUser"));
|
||||||
|
runtimeService.setVariable(processInstanceId, "projectType", variables.get("projectType"));
|
||||||
|
runtimeService.setVariable(processInstanceId, "mainDraftUserLeader", variables.get("mainDraftUserLeader"));
|
||||||
|
runtimeService.setVariable(processInstanceId, "contactUser", variables.get("contactUser"));
|
||||||
|
runtimeService.setVariable(processInstanceId, "standardExpertList", variables.get("standardExpertList"));
|
||||||
|
runtimeService.setVariable(processInstanceId, "standardizationApprovalUser", variables.get("standardizationApprovalUser"));
|
||||||
|
actFlowCommonService.autoCompleteFirstTask(userId, processInstanceId, processDefinitionId);
|
||||||
// 设置流程实例Id
|
// 设置流程实例Id
|
||||||
for (ProcessEsInitChange esInitChange : esInitChangeList) {
|
for (ProcessEsInitChange esInitChange : esInitChangeList) {
|
||||||
esInitChange.setProcessInstanceId(processInstance.getId());
|
esInitChange.setProcessInstanceId(processInstance.getId());
|
||||||
@@ -171,28 +179,23 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
|
if (StrUtil.isBlank(taskId) && !actFlowCommonService.taskExists(taskId)) {
|
||||||
throw new JeroBootException("taskId为空或任务不存在");
|
throw new JeroBootException("taskId为空或任务不存在");
|
||||||
}
|
}
|
||||||
List<ProcessEsInitChange> esInitChangeList = initChangeDataVO.getDataList();
|
|
||||||
Map<String, Object> variables = new HashMap<>();
|
Map<String, Object> variables = new HashMap<>();
|
||||||
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
String processInstanceId = actFlowCommonService.getProcessInstanceIdByTaskId(taskId);
|
||||||
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
|
String processDefinitionId = actFlowCommonService.getProcessDefId(processInstanceId);
|
||||||
if (pass) {
|
if (pass) {
|
||||||
// 校验企标编号是否冲突
|
InitChangeFlowUserVO flowUserInfoVO = initChangeDataVO.getFlowUserInfoVO();
|
||||||
if (!esUtil.verifyEnStandardNumber(esInitChangeList.get(0).getOriginEnStandardNo())) {
|
if (flowUserInfoVO != null) {
|
||||||
throw new JeroBootException("企标编号冲突");
|
Map<String, Object> userMap = new HashMap<>();
|
||||||
|
this.setUserMap(userMap, flowUserInfoVO);
|
||||||
|
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
|
||||||
}
|
}
|
||||||
// 更新业务流程数据
|
runtimeService.setVariable(processInstanceId, "pass", true);
|
||||||
saveOrUpdateBatch(esInitChangeList);
|
|
||||||
variables = setVariables(initChangeDataVO);
|
|
||||||
variables.put("pass", true);
|
|
||||||
// 保存选人信息
|
|
||||||
Map<String, Object> userMap = this.getUserMap(variables);
|
|
||||||
processNodeLinkService.saveNodeUserLink(processDefinitionId, processInstanceId, userMap);
|
|
||||||
} else {
|
} else {
|
||||||
// 设置流程变量
|
// 设置流程变量
|
||||||
InitChangeFlowUserVO processUserInfo = this.getProcessUserInfo(processDefinitionId, processInstanceId);
|
// InitChangeFlowUserVO processUserInfo = this.getProcessUserInfo(processDefinitionId, processInstanceId);
|
||||||
initChangeDataVO.setFlowUserInfoVO(processUserInfo);
|
// initChangeDataVO.setFlowUserInfoVO(processUserInfo);
|
||||||
this.setUserMap(variables, processUserInfo);
|
runtimeService.setVariable(processInstanceId, "pass", false);
|
||||||
variables.put("pass", false);
|
// variables.put("pass", false);
|
||||||
}
|
}
|
||||||
//更新审批表为完成,填充数据
|
//更新审批表为完成,填充数据
|
||||||
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
|
ProcessApprovalRecord approvalRecord = processApprovalRecordService.getToDoByTaskId(taskId);
|
||||||
@@ -203,13 +206,20 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
approvalRecord.setEndTime(new Date());
|
approvalRecord.setEndTime(new Date());
|
||||||
processApprovalRecordService.updateById(approvalRecord);
|
processApprovalRecordService.updateById(approvalRecord);
|
||||||
//审批节点
|
//审批节点
|
||||||
actFlowCommonService.completeTask(taskId, userId, variables);
|
actFlowCommonService.completeTask(taskId, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, Object> getUserMap(Map<String, Object> variables) {
|
private Map<String, Object> getUserMap(Map<String, Object> variables) {
|
||||||
variables.remove("pass");
|
variables.remove("pass");
|
||||||
variables.remove("applicationCategory");
|
variables.remove("applicationCategory");
|
||||||
variables.remove("projectType");
|
variables.remove("projectType");
|
||||||
|
// 转成逗号拼接
|
||||||
|
variables.put("standardExpertList", Optional.ofNullable((List<String>) variables.get("standardExpertList"))
|
||||||
|
.map(list -> String.join(",", list))
|
||||||
|
.orElse(""));
|
||||||
|
variables.put("relatedUserList", Optional.ofNullable((List<String>) variables.get("relatedUserList"))
|
||||||
|
.map(list -> String.join(",", list))
|
||||||
|
.orElse(""));
|
||||||
return variables;
|
return variables;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,23 +280,30 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
|
|||||||
InitChangeFlowUserVO initChangeFlowUserVO = initChangeData.getFlowUserInfoVO();
|
InitChangeFlowUserVO initChangeFlowUserVO = initChangeData.getFlowUserInfoVO();
|
||||||
ProcessEsInitChange initChange = initChangeData.getDataList().get(0);
|
ProcessEsInitChange initChange = initChangeData.getDataList().get(0);
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
// 设置流程中各个节点的人
|
|
||||||
map.put("createUser", initChangeFlowUserVO.getCreateUser());
|
// 使用一个通用方法来只在不为空时添加键值对
|
||||||
map.put("contactUser", initChangeFlowUserVO.getContactUser());
|
putIfNotNull(map, "createUser", initChangeFlowUserVO.getCreateUser());
|
||||||
map.put("standardExpertList", Optional.ofNullable(initChangeFlowUserVO.getStandardExpert()).map(s -> Arrays.asList(s.split(","))).orElse(Collections.emptyList()));
|
putIfNotNull(map, "contactUser", initChangeFlowUserVO.getContactUser());
|
||||||
map.put("mainDraftUserLeader", initChangeFlowUserVO.getMainDraftUserLeader());
|
putIfNotNull(map, "standardExpertList", Optional.ofNullable(initChangeFlowUserVO.getStandardExpert()).map(s -> Arrays.asList(s.split(","))).orElse(null));
|
||||||
map.put("mainDraftUserLeaderLeader", initChangeFlowUserVO.getMainDraftUserLeaderLeader());
|
putIfNotNull(map, "mainDraftUserLeader", initChangeFlowUserVO.getMainDraftUserLeader());
|
||||||
map.put("standardizationApprovalUser", initChangeFlowUserVO.getStandardizationApprovalUser());
|
putIfNotNull(map, "mainDraftUserLeaderLeader", initChangeFlowUserVO.getMainDraftUserLeaderLeader());
|
||||||
map.put("newMainDraftUserLeaderLeader", initChangeFlowUserVO.getNewMainDraftUserLeaderLeader());
|
putIfNotNull(map, "standardizationApprovalUser", initChangeFlowUserVO.getStandardizationApprovalUser());
|
||||||
map.put("newMainDraftUserLeader", initChangeFlowUserVO.getNewMainDraftUserLeader());
|
putIfNotNull(map, "newMainDraftUserLeaderLeader", initChangeFlowUserVO.getNewMainDraftUserLeaderLeader());
|
||||||
map.put("relatedUserList", Optional.ofNullable(initChangeFlowUserVO.getRelatedUser()).map(s -> Arrays.asList(s.split(","))).orElse(Collections.emptyList()));
|
putIfNotNull(map, "newMainDraftUserLeader", initChangeFlowUserVO.getNewMainDraftUserLeader());
|
||||||
map.put("copyUser", initChangeFlowUserVO.getCopyUser());
|
putIfNotNull(map, "relatedUserList", Optional.ofNullable(initChangeFlowUserVO.getRelatedUser()).map(s -> Arrays.asList(s.split(","))).orElse(null));
|
||||||
// 设置流程分支判断变量
|
putIfNotNull(map, "copyUser", initChangeFlowUserVO.getCopyUser());
|
||||||
map.put("applicationCategory", initChange.getApplicationCategory());
|
putIfNotNull(map, "applicationCategory", initChange.getApplicationCategory());
|
||||||
map.put("projectType", initChange.getProjectType());
|
putIfNotNull(map, "projectType", initChange.getProjectType());
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void putIfNotNull(Map<String, Object> map, String key, Object value) {
|
||||||
|
if (value != null) {
|
||||||
|
map.put(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void startRunTask(InitChangeDataVO initChangeData) {
|
public void startRunTask(InitChangeDataVO initChangeData) {
|
||||||
List<ProcessEsInitChange> esInitChangeList = initChangeData.getDataList();
|
List<ProcessEsInitChange> esInitChangeList = initChangeData.getDataList();
|
||||||
// 校验企标编号是否冲突
|
// 校验企标编号是否冲突
|
||||||
|
|||||||
Reference in New Issue
Block a user