fix: 企标制修订-技术标准批准节点改为多人处理节点
This commit is contained in:
@@ -26,6 +26,7 @@ import org.apache.tomcat.util.digester.ArrayStack;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 发起企标制修订流程后
|
||||
@@ -369,15 +370,34 @@ public class BLApplicantAfter implements TaskListener{
|
||||
|
||||
// 批准
|
||||
String zhrUserId = json.getString("zhrUserId");
|
||||
BusProcessHistory pzBph = new BusProcessHistory();
|
||||
pzBph.setActiProcInstId(delegateTask.getProcessInstanceId());
|
||||
pzBph.setUserId(zhrUserId);
|
||||
pzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
pzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue());
|
||||
pzBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getOrderNum());
|
||||
pzBph.setIsSub("2");
|
||||
pzBph.setIsMany("2");
|
||||
bphList.add(pzBph);
|
||||
List<String> zhrUserIdList = Arrays.stream(zhrUserId.split(",")).filter(StringUtils::isNotBlank).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(qcUserIdList)) {
|
||||
// 批准节点父节点信息
|
||||
BusProcessHistory pzPBph = new BusProcessHistory();
|
||||
String pzPBphId = UUID.randomUUID().toString();
|
||||
pzPBph.setId(pzPBphId);
|
||||
pzPBph.setActiProcInstId(delegateTask.getProcessInstanceId());
|
||||
pzPBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
pzPBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue());
|
||||
pzPBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getOrderNum());
|
||||
pzPBph.setIsSub("2");
|
||||
pzPBph.setIsMany("1");
|
||||
bphList.add(pzPBph);
|
||||
|
||||
for (String eachZhrUserId : zhrUserIdList) {
|
||||
// 批准子节点信息
|
||||
BusProcessHistory pzBph = new BusProcessHistory();
|
||||
pzBph.setActiProcInstId(delegateTask.getProcessInstanceId());
|
||||
pzBph.setUserId(eachZhrUserId);
|
||||
pzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
pzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue());
|
||||
pzBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getOrderNum());
|
||||
pzBph.setIsSub("2");
|
||||
pzBph.setIsMany("1");
|
||||
pzBph.setManyPId(pzPBphId);
|
||||
bphList.add(pzBph);
|
||||
}
|
||||
}
|
||||
|
||||
// 培训
|
||||
String pxUserId = json.getString("pxUserId");
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.ydw.bat.wkflow.listener.bussLibrary;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory;
|
||||
import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName;
|
||||
@@ -15,13 +14,18 @@ import com.ydw.bat.wkflow.util.SpringContextUtil;
|
||||
import com.ydw.bat.wkflow.util.enums.BussLibraryNodeKeyEnum;
|
||||
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
|
||||
import org.activiti.engine.ActivitiException;
|
||||
import org.activiti.engine.RepositoryService;
|
||||
import org.activiti.engine.delegate.DelegateTask;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
import org.activiti.engine.repository.ProcessDefinition;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 专委会副主任/起草单位中心主任审定后
|
||||
@@ -29,6 +33,11 @@ import java.util.List;
|
||||
public class BussLibrary10After implements TaskListener{
|
||||
@Override
|
||||
public void notify(DelegateTask delegateTask) {
|
||||
RepositoryService repositoryService = SpringContextUtil.getBean(RepositoryService.class);
|
||||
// 获取当前流程的流程定义
|
||||
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
|
||||
.processDefinitionId(delegateTask.getProcessDefinitionId())
|
||||
.singleResult();
|
||||
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
|
||||
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
|
||||
IBusProcessNameService busProcessNameService = SpringContextUtil.getBean(IBusProcessNameService.class);
|
||||
@@ -70,10 +79,16 @@ public class BussLibrary10After implements TaskListener{
|
||||
|
||||
if(StringUtils.isNotBlank(approvalOpinion)){
|
||||
if ("0".equalsIgnoreCase(approvalOpinion)) {
|
||||
if(StringUtils.isNotBlank(object.getString("zhrUserId"))){
|
||||
|
||||
delegateTask.setVariable("zhrUserId",object.getString("zhrUserId"));
|
||||
nextUserList.add(object.getString("zhrUserId"));
|
||||
String zhrUserId = object.getString("zhrUserId");
|
||||
if(StringUtils.isNotBlank(zhrUserId)){
|
||||
List<String> zhrUserIdList = Arrays.stream(zhrUserId.split(",")).filter(StringUtils::isNotBlank).collect(Collectors.toList());
|
||||
// 对旧数据做兼容,如果流程定义版本低于13则是旧数据,批准节点是单人处理,之后的版本是多人处理
|
||||
if (processDefinition.getVersion() <= 13) {
|
||||
delegateTask.setVariable("zhrUserId",zhrUserIdList.get(0));
|
||||
} else {
|
||||
delegateTask.setVariable("zhrUserId",zhrUserIdList);
|
||||
}
|
||||
nextUserList.addAll(zhrUserIdList);
|
||||
|
||||
// BussUtils.approvalFunc2(delegateTask, object, prcName, nextUserList);
|
||||
BussUtils.approvalFunc3(delegateTask, object, prcName, nextUserList);
|
||||
@@ -104,43 +119,90 @@ public class BussLibrary10After implements TaskListener{
|
||||
}else {
|
||||
throw new ActivitiException("1#2 提交OR驳回参数不存在");
|
||||
}
|
||||
this.addBusProcessHistory(object,delegateTask);
|
||||
this.addBusProcessHistory(object,delegateTask, processDefinition);
|
||||
}
|
||||
|
||||
private String verifyObj(String str){
|
||||
return (str == null || str.equals("")) ? "" : str;
|
||||
}
|
||||
|
||||
public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) {
|
||||
public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask, ProcessDefinition processDefinition) {
|
||||
IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class);
|
||||
|
||||
Integer fzrFlag = (Integer) delegateTask.getVariable("fzrFlag");
|
||||
if (fzrFlag == 0) {
|
||||
String zhrUserId = json.getString("zhrUserId");
|
||||
// 如果存在 批准 节点的数据,taskId为空。 不用添加,否则需要添加。
|
||||
QueryWrapper<BusProcessHistory> bphQueryWrap = new QueryWrapper<>();
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId());
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, zhrUserId);
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId);
|
||||
List<String> zhrUserIdList = Arrays.stream(zhrUserId.split(",")).filter(StringUtils::isNotBlank).collect(Collectors.toList());
|
||||
// 对旧数据做兼容,如果流程定义版本低于13则是旧数据,批准节点是单人处理,之后的版本是多人处理
|
||||
if (processDefinition.getVersion() <= 13) {
|
||||
// 如果存在 批准 节点的数据,taskId为空。 不用添加,否则需要添加。
|
||||
QueryWrapper<BusProcessHistory> bphQueryWrap = new QueryWrapper<>();
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId());
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, zhrUserId);
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId);
|
||||
|
||||
List<BusProcessHistory> busProcessHistoryList = bphService.list(bphQueryWrap);
|
||||
if (CollectionUtils.isEmpty(busProcessHistoryList)) {
|
||||
List<BusProcessHistory> bphList = new ArrayList<>();
|
||||
// 批准
|
||||
BusProcessHistory pzBph = new BusProcessHistory();
|
||||
pzBph.setActiProcInstId(delegateTask.getProcessInstanceId());
|
||||
pzBph.setUserId(zhrUserId);
|
||||
pzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
pzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue());
|
||||
pzBph.setIsSub("2");
|
||||
pzBph.setIsMany("2");
|
||||
int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue());
|
||||
pzBph.setOrderNum(orderNum + 1);
|
||||
bphList.add(pzBph);
|
||||
List<BusProcessHistory> busProcessHistoryList = bphService.list(bphQueryWrap);
|
||||
if (CollectionUtils.isEmpty(busProcessHistoryList)) {
|
||||
List<BusProcessHistory> bphList = new ArrayList<>();
|
||||
// 批准
|
||||
BusProcessHistory pzBph = new BusProcessHistory();
|
||||
pzBph.setActiProcInstId(delegateTask.getProcessInstanceId());
|
||||
pzBph.setUserId(zhrUserId);
|
||||
pzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
pzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue());
|
||||
pzBph.setIsSub("2");
|
||||
pzBph.setIsMany("2");
|
||||
int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue());
|
||||
pzBph.setOrderNum(orderNum + 1);
|
||||
bphList.add(pzBph);
|
||||
|
||||
bphService.insertBatch(bphList);
|
||||
bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size());
|
||||
bphService.insertBatch(bphList);
|
||||
bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size());
|
||||
}
|
||||
} else {
|
||||
if (CollectionUtils.isNotEmpty(zhrUserIdList)) {
|
||||
List<BusProcessHistory> bphList = new ArrayList<>();
|
||||
int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue());
|
||||
String pzPBphId = UUID.randomUUID().toString();
|
||||
for (String userId : zhrUserIdList) {
|
||||
QueryWrapper<BusProcessHistory> bphQueryWrap = new QueryWrapper<>();
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId());
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,userId);
|
||||
bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId);
|
||||
List<BusProcessHistory> busProcessHistoryList = bphService.list(bphQueryWrap);
|
||||
if (CollectionUtils.isEmpty(busProcessHistoryList)) {
|
||||
BusProcessHistory pzBph = new BusProcessHistory();
|
||||
pzBph.setActiProcInstId(delegateTask.getProcessInstanceId());
|
||||
pzBph.setUserId(userId);
|
||||
pzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
pzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue());
|
||||
pzBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getOrderNum());
|
||||
pzBph.setIsSub("2");
|
||||
pzBph.setIsMany("1");
|
||||
pzBph.setManyPId(pzPBphId);
|
||||
pzBph.setOrderNum(orderNum + 1);
|
||||
bphList.add(pzBph);
|
||||
}
|
||||
}
|
||||
|
||||
if (CollectionUtils.isNotEmpty(bphList)) {
|
||||
BusProcessHistory pzPBph = new BusProcessHistory();
|
||||
pzPBph.setId(pzPBphId);
|
||||
pzPBph.setActiProcInstId(delegateTask.getProcessInstanceId());
|
||||
pzPBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue());
|
||||
pzPBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue());
|
||||
pzPBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getOrderNum());
|
||||
pzPBph.setIsSub("2");
|
||||
pzPBph.setIsMany("1");
|
||||
pzPBph.setOrderNum(orderNum + 1);
|
||||
bphList.add(pzPBph);
|
||||
|
||||
bphService.insertBatch(bphList);
|
||||
bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (fzrFlag == 1) {
|
||||
String cxdUserId = (String) delegateTask.getVariable("cxdUserId");
|
||||
|
||||
@@ -11,17 +11,22 @@ import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService;
|
||||
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNameService;
|
||||
import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService;
|
||||
import com.ydw.bat.wkflow.business_main.datas.service.IDatasService;
|
||||
import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService;
|
||||
import com.ydw.bat.wkflow.util.SpringContextUtil;
|
||||
import com.ydw.bat.wkflow.util.enums.BussLibraryNodeKeyEnum;
|
||||
import com.ydw.bat.wkflow.util.enums.FlowTypeEnum;
|
||||
import org.activiti.engine.ActivitiException;
|
||||
import org.activiti.engine.HistoryService;
|
||||
import org.activiti.engine.delegate.DelegateTask;
|
||||
import org.activiti.engine.delegate.TaskListener;
|
||||
import org.activiti.engine.history.HistoricTaskInstance;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 专委会主任/总院院长或主管副院长批准后
|
||||
@@ -32,6 +37,7 @@ public class BussLibrary11After implements TaskListener{
|
||||
IDatasService datasService = SpringContextUtil.getBean(IDatasService.class);
|
||||
IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class);
|
||||
IBusProcessNameService busProcessNameService = SpringContextUtil.getBean(IBusProcessNameService.class);
|
||||
WebServiceOAService webServiceOAService = SpringContextUtil.getBean(WebServiceOAService.class);
|
||||
|
||||
QueryWrapper<Datas> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId());
|
||||
@@ -75,13 +81,76 @@ public class BussLibrary11After implements TaskListener{
|
||||
delegateTask.setVariable("pxUserId",object.getString("pxUserId"));
|
||||
nextUserList.add(object.getString("pxUserId"));
|
||||
|
||||
// BussUtils.approvalFunc2(delegateTask, object, prcName, nextUserList);
|
||||
BussUtils.approvalFunc3(delegateTask, object, prcName, nextUserList);
|
||||
// 存储当前节点意见
|
||||
LambdaQueryWrapper<BusProcessNew> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(BusProcessNew::getTaskId,delegateTask.getId());
|
||||
List<BusProcessNew> list = busBean.list(queryWrapper1);
|
||||
if (list.isEmpty()) {
|
||||
throw new ActivitiException("流程实例不存在");
|
||||
}
|
||||
// 当前节点
|
||||
BusProcessNew busProcessNew = list.get(0);
|
||||
busProcessNew.setCommitText(object.getString("commentText"));
|
||||
busProcessNew.setTaskId(delegateTask.getId());
|
||||
busProcessNew.setTaskInfo(delegateTask.getName());
|
||||
busBean.saveOrUpdate(busProcessNew);
|
||||
|
||||
// 下一个节点
|
||||
try {
|
||||
Integer nrOfCompletedInstances = delegateTask.getVariable("nrOfCompletedInstances", Integer.class);
|
||||
if (nrOfCompletedInstances == 0) {
|
||||
for (String nextUser : nextUserList) {
|
||||
BusProcessNew busProcessNewNext = new BusProcessNew();
|
||||
busProcessNewNext.setMsgType("clause");
|
||||
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
|
||||
busProcessNewNext.setMesg(object.toJSONString());
|
||||
busProcessNewNext.setFinishFlag("0");
|
||||
busProcessNewNext.setUserId(nextUser);
|
||||
busProcessNewNext.setPrcName(prcName);
|
||||
busBean.save(busProcessNewNext);
|
||||
}
|
||||
}
|
||||
} catch (NullPointerException e) {
|
||||
// 对旧数据做兼容,旧流程是单人处理节点没有 nrOfCompletedInstances
|
||||
for (String nextUser : nextUserList) {
|
||||
BusProcessNew busProcessNewNext = new BusProcessNew();
|
||||
busProcessNewNext.setMsgType("clause");
|
||||
busProcessNewNext.setPId(delegateTask.getProcessInstanceId());
|
||||
busProcessNewNext.setMesg(object.toJSONString());
|
||||
busProcessNewNext.setFinishFlag("0");
|
||||
busProcessNewNext.setUserId(nextUser);
|
||||
busProcessNewNext.setPrcName(prcName);
|
||||
busBean.save(busProcessNewNext);
|
||||
}
|
||||
}
|
||||
|
||||
delegateTask.setVariable("zrFlag", 0);
|
||||
}else {
|
||||
throw new ActivitiException("1#2主起草人用户参数不存在,请配置相关用户");
|
||||
}
|
||||
} else {
|
||||
HistoryService historyService = SpringContextUtil.getBean(HistoryService.class);
|
||||
|
||||
// 改为多人处理节点后需要驳回需要删除未完成人员的待办OA
|
||||
List<HistoricTaskInstance> historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery()
|
||||
.processInstanceId(delegateTask.getProcessInstanceId())
|
||||
.taskDefinitionKey(delegateTask.getTaskDefinitionKey())
|
||||
.unfinished()
|
||||
.list();
|
||||
List<String> unFinishedTaskIdList = historicTaskInstanceList.stream()
|
||||
.map(HistoricTaskInstance::getId)
|
||||
.filter(taskId -> !Objects.equals(taskId, delegateTask.getId()))
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(unFinishedTaskIdList)) {
|
||||
LambdaQueryWrapper<BusProcessNew> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(BusProcessNew::getPId, delegateTask.getProcessInstanceId());
|
||||
wrapper.in(BusProcessNew::getTaskId, unFinishedTaskIdList);
|
||||
List<BusProcessNew> busProcessNewList = busBean.list(wrapper);
|
||||
for (BusProcessNew busProcessNew : busProcessNewList) {
|
||||
webServiceOAService.deleteOAByMandatory(busProcessNew.getId(), busProcessNew.getUserId());
|
||||
}
|
||||
}
|
||||
|
||||
if(StringUtils.isNotBlank(object.getString("xdUserId"))) {
|
||||
// 驳回节点数据
|
||||
BusProcessNew busProcessNew = new BusProcessNew();
|
||||
|
||||
Reference in New Issue
Block a user