diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/BusProcessHistoryController.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/BusProcessHistoryController.java index ef2dbcd1..0b85021b 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/BusProcessHistoryController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/BusProcessHistoryController.java @@ -25,11 +25,11 @@ public class BusProcessHistoryController { * @return */ @GetMapping("/queryFlowHistoryList") - public List queryFlowHistoryList(String actiProcInstId,String flowType) { + public List queryFlowHistoryList(String actiProcInstId,String flowType,String userId) { BusProcessHistory busProcessHistory = new BusProcessHistory(); busProcessHistory.setActiProcInstId(actiProcInstId); busProcessHistory.setFlowType(flowType); - return this.busProcessHistoryService.queryFlowHistoryList(busProcessHistory); + return this.busProcessHistoryService.queryFlowHistoryList(busProcessHistory,userId); } /** diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IBusProcessHistoryService.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IBusProcessHistoryService.java index f2b548fb..e739cef8 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IBusProcessHistoryService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IBusProcessHistoryService.java @@ -10,7 +10,7 @@ import java.util.Map; public interface IBusProcessHistoryService extends IService { - List queryFlowHistoryList(BusProcessHistory busProcessHistory); + List queryFlowHistoryList(BusProcessHistory busProcessHistory,String userId); List queryByList(BusProcessHistory busProcessHistory); diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/IBusProcessHistoryServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/IBusProcessHistoryServiceImpl.java index 7b2e0a9c..f747bc3e 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/IBusProcessHistoryServiceImpl.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/IBusProcessHistoryServiceImpl.java @@ -39,13 +39,37 @@ public class IBusProcessHistoryServiceImpl extends ServiceImpl queryFlowHistoryList(BusProcessHistory busProcessHistory) { + public List queryFlowHistoryList(BusProcessHistory busProcessHistory,String userId) { QueryWrapper bphQueryWrap = new QueryWrapper<>(); this.setQueryCondition(busProcessHistory, bphQueryWrap); bphQueryWrap.orderByAsc("order_num","create_time"); - bphQueryWrap.lambda().and( - query -> query.isNull(BusProcessHistory::getTaskId).isNull(BusProcessHistory::getUserId).eq(BusProcessHistory::getIsMany,"1").or().isNotNull(BusProcessHistory::getTaskId) - ); + // 验证当前操作用户,是否只是该流程中子流程中参与的人员(用户参与了外面的节点,也参与了子流程节点,这种情况不属于子流程用户) + // 如果是,查询出非子流程节点所有数据,和他自己参与过的子流程数据,如果不是,查询所有的数据。 + boolean isChildProcess = this.checkUserIsChildProcess(busProcessHistory,userId); + if (isChildProcess) { + // 查询出,当前登录用户,所在的子流程数据id + QueryWrapper childBphQueryWrap = new QueryWrapper<>(); + this.setQueryCondition(busProcessHistory, childBphQueryWrap); + childBphQueryWrap.lambda().eq(BusProcessHistory::getUserId,userId); + List childBpnList = this.list(childBphQueryWrap); + List manyPidList = childBpnList.stream().map(BusProcessHistory::getManyPId) + .distinct().filter(manyPid -> StringUtils.isNotEmpty(manyPid)).collect(Collectors.toList()); + + bphQueryWrap.lambda().and( + query -> query.isNull(BusProcessHistory::getTaskId).isNull(BusProcessHistory::getUserId) + .eq(BusProcessHistory::getIsMany,"1") + .notLike(BusProcessHistory::getTaskKey,StandardCommentNewProcessNodeKeyEnum.SUB_PROCESS.getLable()) + .or().in(BusProcessHistory::getId,manyPidList) + .or().isNotNull(BusProcessHistory::getTaskId) + ); + } else { + bphQueryWrap.lambda().and( + query -> query.isNull(BusProcessHistory::getTaskId) + .isNull(BusProcessHistory::getUserId) + .eq(BusProcessHistory::getIsMany,"1") + .or().isNotNull(BusProcessHistory::getTaskId) + ); + } // bphQueryWrap.isNotNull("task_id"); List bphList = this.list(bphQueryWrap); this.disposeData(bphList,busProcessHistory.getActiProcInstId()); @@ -97,6 +121,38 @@ public class IBusProcessHistoryServiceImpl extends ServiceImpl bphQueryWrap = new QueryWrapper<>(); + this.setQueryCondition(bph, bphQueryWrap); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,userId); + List busProcessHistoryList = this.list(bphQueryWrap); + if (CollectionUtils.isNotEmpty(busProcessHistoryList)) { + for (BusProcessHistory busProcessHistory : busProcessHistoryList) { + if (StringUtils.isNotEmpty(busProcessHistory.getManyPId())) { + BusProcessHistory byId = this.getById(busProcessHistory.getManyPId()); + if (StringUtils.contains(byId.getTaskKey(),StandardCommentNewProcessNodeKeyEnum.SUB_PROCESS.getLable())) { + result = true; + continue; + } else { + result = false; + break; + } + } else { + result = false; + break; + } + } + } + return result; + } + @Override public List queryByList(BusProcessHistory busProcessHistory) { QueryWrapper bphQueryWrap = new QueryWrapper<>(); @@ -210,7 +266,9 @@ public class IBusProcessHistoryServiceImpl extends ServiceImpl yjfkUserIdList = Arrays.asList(json.getString("responUserList").split(",")); // 意见反馈 if (CollectionUtils.isNotEmpty(yjfkUserIdList)) { - String yjfkPBphId = (String) delegateTask.getVariable("yjfkPBphId"); - if (StringUtils.isEmpty(yjfkPBphId)) { - BusProcessHistory yjfkPBph = new BusProcessHistory(); - yjfkPBphId = UUID.randomUUID().toString(); - yjfkPBph.setId(yjfkPBphId); - yjfkPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); - yjfkPBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getValue()); - yjfkPBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); - yjfkPBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getOrderNum()); - yjfkPBph.setIsSub("2"); - yjfkPBph.setIsMany("1"); - bphList.add(yjfkPBph); + String subProcessId = json.getString("subProcessId"); + if (StringUtils.isNotEmpty(subProcessId)) { + for (String yjfkUserId : yjfkUserIdList) { + BusProcessHistory yjfkBph = new BusProcessHistory(); + yjfkBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjfkBph.setUserId(yjfkUserId); + yjfkBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getValue()); + yjfkBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjfkBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getOrderNum()); + yjfkBph.setIsSub("2"); + yjfkBph.setIsMany("1"); + yjfkBph.setManyPId(subProcessId); + yjfkBph.setParentUserId(delegateTask.getAssignee()); + bphList.add(yjfkBph); + } + } else { + String yjfkPBphId = (String) delegateTask.getVariable("yjfkPBphId"); + if (StringUtils.isEmpty(yjfkPBphId)) { + BusProcessHistory yjfkPBph = new BusProcessHistory(); + yjfkPBphId = UUID.randomUUID().toString(); + yjfkPBph.setId(yjfkPBphId); + yjfkPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjfkPBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getValue()); + yjfkPBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjfkPBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getOrderNum()); + yjfkPBph.setIsSub("2"); + yjfkPBph.setIsMany("1"); + bphList.add(yjfkPBph); + } + + for (String yjfkUserId : yjfkUserIdList) { + BusProcessHistory yjfkBph = new BusProcessHistory(); + yjfkBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjfkBph.setUserId(yjfkUserId); + yjfkBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getValue()); + yjfkBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjfkBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getOrderNum()); + yjfkBph.setIsSub("2"); + yjfkBph.setIsMany("1"); + yjfkBph.setManyPId(yjfkPBphId); + yjfkBph.setParentUserId(delegateTask.getAssignee()); + bphList.add(yjfkBph); + } + + delegateTask.setVariable("yjfkPBphId",yjfkPBphId); } - for (String yjfkUserId : yjfkUserIdList) { - BusProcessHistory yjfkBph = new BusProcessHistory(); - yjfkBph.setActiProcInstId(delegateTask.getProcessInstanceId()); - yjfkBph.setUserId(yjfkUserId); - yjfkBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getValue()); - yjfkBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); - yjfkBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getOrderNum()); - yjfkBph.setIsSub("2"); - yjfkBph.setIsMany("1"); - yjfkBph.setManyPId(yjfkPBphId); - yjfkBph.setParentUserId(delegateTask.getAssignee()); - bphList.add(yjfkBph); - } - delegateTask.setVariable("yjfkPBphId",yjfkPBphId); } bphService.insertBatch(bphList); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java index 948866ef..aaabecb2 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2After.java @@ -19,6 +19,7 @@ import com.ydw.bat.wkflow.util.enums.TaskStatusEnum; import org.activiti.engine.ActivitiException; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; import java.util.*; @@ -141,6 +142,7 @@ public class Step2After implements TaskListener { if (count == 0) { List bphList = new ArrayList<>(); + String subProcessId = json.getString("subProcessId"); // 意见汇总审批 BusProcessHistory yjhzspBph = new BusProcessHistory(); yjhzspBph.setActiProcInstId(delegateTask.getProcessInstanceId()); @@ -150,6 +152,9 @@ public class Step2After implements TaskListener { yjhzspBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getOrderNum()); yjhzspBph.setIsSub("2"); yjhzspBph.setIsMany("2"); + if (StringUtils.isNotEmpty(subProcessId)) { + yjhzspBph.setManyPId(subProcessId); + } bphList.add(yjhzspBph); bphService.insertBatch(bphList); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3After.java index 80520c6f..7e7147dd 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3After.java @@ -17,6 +17,7 @@ import com.ydw.bat.wkflow.util.enums.StandardCommentNewProcessNodeKeyEnum; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -117,6 +118,10 @@ public class Step3After implements TaskListener { pzBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); pzBph.setIsSub("2"); pzBph.setIsMany("2"); + String subProcessId = json.getString("subProcessId"); + if (StringUtils.isNotEmpty(subProcessId)) { + pzBph.setManyPId(subProcessId); + } int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getValue()); pzBph.setOrderNum(orderNum + 1); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java index 0a0ba904..422c3183 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4After.java @@ -113,6 +113,7 @@ public class Step4After implements TaskListener { String spFlag = json.getString("spFlag"); List bphList = new ArrayList<>(); + String subProcessId = json.getString("subProcessId"); // 如果是驳回,流程走向意见处理节点,否则流程结束 if (!StringUtils.equals(spFlag,"0")) { String zrUserId = json.getString("SKS"); @@ -126,6 +127,9 @@ public class Step4After implements TaskListener { yjhzspBph.setOrderNum(orderNum + 1); yjhzspBph.setIsSub("2"); yjhzspBph.setIsMany("2"); + if (StringUtils.isNotEmpty(subProcessId)) { + yjhzspBph.setManyPId(subProcessId); + } bphList.add(yjhzspBph); bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); @@ -155,6 +159,9 @@ public class Step4After implements TaskListener { glyBph.setOrderNum(orderNum + 1); glyBph.setIsSub("2"); glyBph.setIsMany("2"); + if (StringUtils.isNotEmpty(subProcessId)) { + glyBph.setManyPId(subProcessId); + } glyBph.setParentUserId(delegateTask.getAssignee()); bphList.add(glyBph); bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5After.java index 5e245d3c..7f79845f 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5After.java @@ -141,6 +141,8 @@ public class Step5After implements TaskListener { if (!StringUtils.equals(bzFlag,"0")) { String zrUserId = json.getString("SKS"); List bphList = new ArrayList<>(); + + String subProcessId = json.getString("subProcessId"); // 意见汇总审批 BusProcessHistory yjhzspBph = new BusProcessHistory(); yjhzspBph.setActiProcInstId(delegateTask.getProcessInstanceId()); @@ -151,6 +153,9 @@ public class Step5After implements TaskListener { yjhzspBph.setOrderNum(orderNum + 1); yjhzspBph.setIsSub("2"); yjhzspBph.setIsMany("2"); + if (StringUtils.isNotEmpty(subProcessId)) { + yjhzspBph.setManyPId(subProcessId); + } bphList.add(yjhzspBph); bphService.insertBatch(bphList); bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); diff --git a/src/main/java/com/ydw/bat/wkflow/util/enums/BussLibraryNodeKeyEnum.java b/src/main/java/com/ydw/bat/wkflow/util/enums/BussLibraryNodeKeyEnum.java index 98080407..d33eeb4d 100644 --- a/src/main/java/com/ydw/bat/wkflow/util/enums/BussLibraryNodeKeyEnum.java +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/BussLibraryNodeKeyEnum.java @@ -58,6 +58,9 @@ public enum BussLibraryNodeKeyEnum { break; } } + if (StringUtils.isEmpty(result)) { + result = value; + } return result; } diff --git a/src/main/java/com/ydw/bat/wkflow/util/enums/StandardCommentNewProcessNodeKeyEnum.java b/src/main/java/com/ydw/bat/wkflow/util/enums/StandardCommentNewProcessNodeKeyEnum.java index 9c47b64f..f07b2542 100644 --- a/src/main/java/com/ydw/bat/wkflow/util/enums/StandardCommentNewProcessNodeKeyEnum.java +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/StandardCommentNewProcessNodeKeyEnum.java @@ -11,7 +11,7 @@ import java.util.List; */ public enum StandardCommentNewProcessNodeKeyEnum { STAND_ASK_FOR_OPINION1("StandAskForOpinion1","起草",0,true), - // SUB_PROCESS("subProcess","子流程",1), + SUB_PROCESS("subProcess","子流程",1,false), STAND_ASK_FOR_OPINION2("StandAskForOpinion2","任务分发",2,true), STAND_ASK_FOR_OPINION3("StandAskForOpinion3","意见反馈",3,true), STAND_ASK_FOR_OPINION4("StandAskForOpinion4","意见汇总审批",4,true), @@ -53,6 +53,9 @@ public enum StandardCommentNewProcessNodeKeyEnum { break; } } + if (StringUtils.isEmpty(result)) { + result = value; + } return result; }