fix: 制修订流程征求意见子流程BUG

This commit is contained in:
2023-12-26 14:09:40 +08:00
parent d0b91ac4d5
commit 1dd917bf35
2 changed files with 17 additions and 8 deletions
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -91,6 +92,7 @@ public class EsRevisionAdvice implements Serializable {
/** /**
* 意见提出人 * 意见提出人
*/ */
@Dict(dictTable = "sys_user", dicText = "CONCAT(realname, '(', username, ')')", dicCode = "id")
@ApiModelProperty(value = "意见提出人") @ApiModelProperty(value = "意见提出人")
private String createUserId; private String createUserId;
@@ -216,13 +216,10 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
LambdaQueryWrapper<ProcessEsRevision> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<ProcessEsRevision> wrapper = new LambdaQueryWrapper<>();
LambdaQueryWrapper<EsRevisionAdvice> advicesWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<EsRevisionAdvice> advicesWrapper = new LambdaQueryWrapper<>();
advicesWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId); advicesWrapper.eq(EsRevisionAdvice::getProcessInstanceId, processInstanceId);
advicesWrapper.eq(EsRevisionAdvice::getExecutionId, executionId);
List<EsRevisionAdvice> adviceList = adviceService.list(advicesWrapper);
wrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId); wrapper.eq(ProcessEsRevision::getProcessInstanceId, processInstanceId);
ProcessEsRevision data = getOne(wrapper); ProcessEsRevision data = getOne(wrapper);
List<OtherDraftUserVO> otherDraftUserVOS = data.parseOtherDraftUserVOS(); List<OtherDraftUserVO> otherDraftUserVOS = data.parseOtherDraftUserVOS();
List<InspectContentVO> inspectContentVOS = data.parseInspectContents(); List<InspectContentVO> inspectContentVOS = data.parseInspectContents();
data.setAdvices(adviceList);
String xmlNodeId = record.getNodeId(); String xmlNodeId = record.getNodeId();
// 某些节点需要对数据进行特殊处理 // 某些节点需要对数据进行特殊处理
switch (xmlNodeId) { switch (xmlNodeId) {
@@ -239,10 +236,14 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
} }
o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue()); o.setOperateType(OperateTypeEnum.CANNOT_OPERATE.getValue());
} }
break; break;
case CONTACT_USER_COLLECT:
case CONTACT_USER_LEADER_APPROVAL:
advicesWrapper.eq(EsRevisionAdvice::getExecutionId, executionId);
break;
} }
List<EsRevisionAdvice> adviceList = adviceService.list(advicesWrapper);
data.setAdvices(adviceList);
data.setOtherDraftUserVOS(otherDraftUserVOS); data.setOtherDraftUserVOS(otherDraftUserVOS);
data.setInspectContents(inspectContentVOS); data.setInspectContents(inspectContentVOS);
revisionDataVO.setData(data); revisionDataVO.setData(data);
@@ -279,6 +280,7 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
List<EsRevisionAdvice> advices; List<EsRevisionAdvice> advices;
ProcessEsRevision data; ProcessEsRevision data;
Map<String, Object> flowUser; Map<String, Object> flowUser;
String contactUser = (String) runtimeService.getVariable(executionId, "contactUser");
switch (xmlNodeId) { switch (xmlNodeId) {
case MAIN_DRAFT_USER_DISTRIBUTE: case MAIN_DRAFT_USER_DISTRIBUTE:
// 判断是否分发 设置流程变量 // 判断是否分发 设置流程变量
@@ -350,8 +352,8 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
reviewMeetingDetailsDb = new ArrayList<>(); reviewMeetingDetailsDb = new ArrayList<>();
} }
reviewMeetingDetailsDb.addAll(reviewMeetingDetails); reviewMeetingDetailsDb.addAll(reviewMeetingDetails);
data.setReviewMeetingDetailJson(reviewMeetingDetailsDb); revisionDb.setReviewMeetingDetailJson(reviewMeetingDetailsDb);
saveOrUpdate(data); saveOrUpdate(revisionDb);
break; break;
case CONFIRM_ADVISE: case CONFIRM_ADVISE:
// 判断是否开启征求意见子流程 设置流程变量 // 判断是否开启征求意见子流程 设置流程变量
@@ -376,6 +378,7 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
List<String> adviceUserList = Arrays.asList(adviceUsers.split(",")); List<String> adviceUserList = Arrays.asList(adviceUsers.split(","));
runtimeService.setVariable(executionId, "adviceUserList", adviceUserList); runtimeService.setVariable(executionId, "adviceUserList", adviceUserList);
runtimeService.setVariable(executionId, "adviceDeadline", data.getAdviceDeadline()); runtimeService.setVariable(executionId, "adviceDeadline", data.getAdviceDeadline());
runtimeService.setVariable(executionId, contactUser + "-ExecutionId", executionId);
userMap.put("adviceUserList", adviceUsers); userMap.put("adviceUserList", adviceUsers);
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap);
// 设置截止时间 // 设置截止时间
@@ -386,12 +389,16 @@ public class EsRevisionServiceImpl extends ServiceImpl<EsRevisionMapper, Process
advices = data.getAdvices(); advices = data.getAdvices();
advices.forEach(advice -> advice.setCreateUserId(userId)); advices.forEach(advice -> advice.setCreateUserId(userId));
advices.forEach(advice -> advice.setProcessInstanceId(processInstanceId)); advices.forEach(advice -> advice.setProcessInstanceId(processInstanceId));
advices.forEach(advice -> advice.setExecutionId(executionId)); String contactUserExecutionId = (String) runtimeService.getVariable(executionId, contactUser + "-ExecutionId");
advices.forEach(advice -> advice.setExecutionId(contactUserExecutionId));
adviceService.saveBatch(advices); adviceService.saveBatch(advices);
break; break;
case CONTACT_USER_COLLECT: case CONTACT_USER_COLLECT:
data = revisionData.getData(); data = revisionData.getData();
runtimeService.setVariable(executionId, "contactUserLeader", data.getContactUserLeader());
userMap.put("contactUserLeader", data.getContactUserLeader()); userMap.put("contactUserLeader", data.getContactUserLeader());
advices = data.getAdvices();
adviceService.saveOrUpdateBatch(advices);
processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap); processNodeLinkService.incrementSaveNodeUserLink(processDefinitionId, processInstanceId, userMap);
case CONTACT_USER_LEADER_APPROVAL: case CONTACT_USER_LEADER_APPROVAL:
// 保存流程数据 // 保存流程数据