diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java index 30dad68b..1a4118a4 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java @@ -27,6 +27,7 @@ import com.ydw.bat.wkflow.business_oa.webService.service.impl.WebServiceOAServic import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto; import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService; import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +import com.ydw.bat.wkflow.util.enums.TaskStatusEnum; import org.activiti.engine.*; import org.activiti.engine.history.*; import org.activiti.engine.repository.ProcessDefinition; @@ -903,6 +904,11 @@ public class TodoTaskController extends BaseAction { updateWrapper.in(BusProcessNew::getTaskId,taskIdList); updateWrapper.set(BusProcessNew::getReceiveStatus,"已接收"); iBusProcessNewService.update(updateWrapper); + + LambdaUpdateWrapper bphUpdateWrapper = new LambdaUpdateWrapper<>(); + bphUpdateWrapper.in(BusProcessHistory::getTaskId,taskIdList); + bphUpdateWrapper.set(BusProcessHistory::getTaskStatus, TaskStatusEnum.RECEIVED.getValue()); + this.busProcessHistoryService.update(bphUpdateWrapper); return processNew; } 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 d540c96e..ef2dbcd1 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 @@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/datas/bus-process-history") @@ -17,11 +18,31 @@ public class BusProcessHistoryController { @Autowired private IBusProcessHistoryService busProcessHistoryService; - @GetMapping("/queryByList") - public List queryByList(String actiProcInstId) { + /** + * 查询流程历史列表 + * @param actiProcInstId + * @param flowType + * @return + */ + @GetMapping("/queryFlowHistoryList") + public List queryFlowHistoryList(String actiProcInstId,String flowType) { BusProcessHistory busProcessHistory = new BusProcessHistory(); busProcessHistory.setActiProcInstId(actiProcInstId); - return this.busProcessHistoryService.queryByList(busProcessHistory); + busProcessHistory.setFlowType(flowType); + return this.busProcessHistoryService.queryFlowHistoryList(busProcessHistory); + } + + /** + * 查询流程图数据 + * @param actiProcInstId + * @return + */ + @GetMapping("/getImgDataList") + public List> getImgDataList(String actiProcInstId, String flowType) { + BusProcessHistory busProcessHistory = new BusProcessHistory(); + busProcessHistory.setActiProcInstId(actiProcInstId); + busProcessHistory.setFlowType(flowType); + return this.busProcessHistoryService.getImgDataList(busProcessHistory); } } diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessHistory.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessHistory.java index 5236bf29..9830bf0f 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessHistory.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessHistory.java @@ -86,5 +86,13 @@ public class BusProcessHistory { // 子流程数据数组 @TableField(exist = false) - private List childList; + private List children; + + @TableField(exist = false) + private String userName; + + @TableField(exist = false) + private String taskStatusShow; + @TableField(exist = false) + private String taskKeyShow; } 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 df58036b..88c804d1 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 @@ -6,9 +6,12 @@ import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import org.activiti.engine.delegate.DelegateTask; import java.util.List; +import java.util.Map; public interface IBusProcessHistoryService extends IService { + List queryFlowHistoryList(BusProcessHistory busProcessHistory); + List queryByList(BusProcessHistory busProcessHistory); void insertBatch(List busProcessHistoryList); @@ -25,4 +28,6 @@ public interface IBusProcessHistoryService extends IService { // 更新排序号 void updateOrderNum(String actiProcInstId, int orderNum,int dataNum); + + List> getImgDataList(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 70afc5f4..cb1aa80e 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 @@ -2,26 +2,81 @@ package com.ydw.bat.wkflow.business_main.datas.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ydw.bat.wkflow.business_main.datas.entity.BusMes; -import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; +import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.*; import com.ydw.bat.wkflow.business_main.datas.mapper.BusProcessHistoryMapper; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +import com.ydw.bat.wkflow.util.enums.StandardCommentNewProcessNodeKeyEnum; import com.ydw.bat.wkflow.util.enums.TaskStatusEnum; import org.activiti.engine.delegate.DelegateTask; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; @Service public class IBusProcessHistoryServiceImpl extends ServiceImpl implements IBusProcessHistoryService { + + @Autowired + LawsUserInfoService lawsUserInfoService; + + @Override + public List queryFlowHistoryList(BusProcessHistory busProcessHistory) { + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + this.setQueryCondition(busProcessHistory, bphQueryWrap); + bphQueryWrap.orderByAsc("order_num","create_time"); + bphQueryWrap.lambda().and( + query -> query.isNull(BusProcessHistory::getTaskId).eq(BusProcessHistory::getIsMany,"1").or().isNotNull(BusProcessHistory::getTaskId) + ); +// bphQueryWrap.isNotNull("task_id"); + List bphList = this.list(bphQueryWrap); + this.disposeData(bphList); + List firstBphList = bphList.stream().filter(bph -> StringUtils.isEmpty(bph.getManyPId())).distinct().collect(Collectors.toList()); + for (BusProcessHistory processHistory : firstBphList) { + if (StringUtils.equals(processHistory.getIsMany(),"1")) { + List childList = bphList.stream().filter(bph -> StringUtils.equals(processHistory.getId(), bph.getManyPId())).distinct().collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(childList)) { + String taskStatus = TaskStatusEnum.DONE.getValue(); + for (BusProcessHistory history : childList) { + if (StringUtils.equals(history.getTaskStatus(),TaskStatusEnum.TODO.getValue()) || StringUtils.equals(history.getTaskStatus(),TaskStatusEnum.RECEIVED.getValue())) { + taskStatus = TaskStatusEnum.TODO.getValue(); + break; + } + } + Date endTime = null; + if (StringUtils.equals(taskStatus,TaskStatusEnum.DONE.getValue())) { + Collections.sort(childList,new Comparator(){ + @Override + public int compare(BusProcessHistory o1, BusProcessHistory o2) { + return o2.getEndTime().compareTo(o1.getEndTime()); + } + }); + + endTime = childList.get(0).getEndTime(); + } + + String userNames = childList.stream().map(BusProcessHistory::getUserName).distinct().collect(Collectors.joining(",")); + + processHistory.setUserName(userNames); + processHistory.setCreateTime(childList.get(0).getCreateTime()); + processHistory.setEndTime(endTime); + processHistory.setTaskStatus(taskStatus); + processHistory.setTaskStatusShow(TaskStatusEnum.getLabelByValue(taskStatus)); + processHistory.setChildren(childList); + } + } + } + return firstBphList; + } + @Override public List queryByList(BusProcessHistory busProcessHistory) { QueryWrapper bphQueryWrap = new QueryWrapper<>(); @@ -67,14 +122,26 @@ public class IBusProcessHistoryServiceImpl extends ServiceImpl disposeData(List datas) { List results = new ArrayList<>(); if (CollectionUtils.isNotEmpty(datas)) { - results = datas.stream().filter(data -> StringUtils.isEmpty(data.getPId())).distinct().collect(Collectors.toList()); - if (CollectionUtils.isNotEmpty(results)) { - List childList = datas.stream().filter(data -> StringUtils.isNotEmpty(data.getPId())).distinct().collect(Collectors.toList()); - for (BusProcessHistory data : results) { - if (StringUtils.equals(data.getIsSub(), "1")) { - data.setChildList(childList.stream().filter(child -> StringUtils.equals(child.getPId(), data.getId())).distinct().collect(Collectors.toList())); + for (BusProcessHistory data : datas) { + ResponseMessage assignee = lawsUserInfoService.getByIdFeignClientWithDisabled(data.getUserId()); + String userName = ""; + if(assignee.getData()!=null){ + if (assignee.getData().getDisableFlag() == 1) { + userName = assignee.getData().getUname() + "("+ assignee.getData().getUsid() +")" + "(已禁用)"; + } else { + userName = assignee.getData().getUname() + "(" + assignee.getData().getUsid() + ")"; } + } else { + userName = data.getUserId(); } + data.setUserName(userName); + + data.setTaskStatusShow(TaskStatusEnum.getLabelByValue(data.getTaskStatus())); + String taskKeyShow = ""; + if (StringUtils.equals(data.getFlowType(),FlowTypeEnum.BZZQYJLC.getValue())) { + taskKeyShow = StandardCommentNewProcessNodeKeyEnum.getLableByValue(data.getTaskKey()); + } + data.setTaskKeyShow(taskKeyShow); } } return results; @@ -106,7 +173,10 @@ public class IBusProcessHistoryServiceImpl extends ServiceImpl bphList = this.queryByList(bph); + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + this.setQueryCondition(bph, bphQueryWrap); + bphQueryWrap.isNull("task_id"); + List bphList = this.list(bphQueryWrap); if (CollectionUtils.isNotEmpty(bphList)) { BusProcessHistory busProcessHistory = bphList.get(0); busProcessHistory.setTaskId(delegateTask.getId()); @@ -165,4 +235,80 @@ public class IBusProcessHistoryServiceImpl extends ServiceImpl> getImgDataList(BusProcessHistory busProcessHistory) { + List> result = new ArrayList<>(); + + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + this.setQueryCondition(busProcessHistory, bphQueryWrap); + bphQueryWrap.orderByAsc("order_num", "create_time"); + List bphList = this.list(bphQueryWrap); + this.disposeData(bphList); + + FlowTypeEnum flowTypeEnum = FlowTypeEnum.getFlowTypeEnumByValue(busProcessHistory.getFlowType()); + switch (flowTypeEnum) { + case BZZQYJLC: + result = this.getBzzqyjlcImgDataList(bphList); + break; + default: + break; + } + return result; + } + + /** + * 获取标准征求意见流程图数据 + * @param bphList + * @return + */ + private List> getBzzqyjlcImgDataList(List bphList) { + List> result = new ArrayList<>(); + + for (StandardCommentNewProcessNodeKeyEnum nodeKeyEnum : StandardCommentNewProcessNodeKeyEnum.values()) { + Map tasksMap = this.getTasksMap( + bphList, + nodeKeyEnum.getValue(), + nodeKeyEnum.getLable() + ); + if (ObjectUtils.isNotEmpty(tasksMap)) { + result.add(tasksMap); + } + } + return result; + } + + private Map getTasksMap(List bphList,String taskKey,String taskKeyName) { + Map tasksMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(bphList)) { + List bphListByTaskKey = bphList.stream().filter(bph -> { + boolean flag = false; + if (StringUtils.equals(bph.getTaskKey(), taskKey)) { + flag = true; + } + return flag; + }).distinct().collect(Collectors.toList()); + String taskStatus = ""; + String userNames = ""; + if (CollectionUtils.isNotEmpty(bphListByTaskKey)) { + userNames = bphListByTaskKey.stream().map(BusProcessHistory::getUserName).distinct().collect(Collectors.joining(",")); + taskStatus = TaskStatusEnum.DONE.getValue(); + for (BusProcessHistory busProcessHistory : bphListByTaskKey) { + if (StringUtils.isEmpty(busProcessHistory.getTaskId()) + || StringUtils.equals(busProcessHistory.getTaskStatus(), TaskStatusEnum.TODO.getValue()) + || StringUtils.equals(busProcessHistory.getTaskStatus(), TaskStatusEnum.RECEIVED.getValue())) { + taskStatus = TaskStatusEnum.TODO.getValue(); + break; + } + } + } + tasksMap.put("taskKey", taskKey); + tasksMap.put("taskKeyName", taskKeyName); + tasksMap.put("userNames", userNames); + // 任务状态 + tasksMap.put("taskStatus", taskStatus); + tasksMap.put("taskList", bphListByTaskKey); + } + return tasksMap; + } } diff --git a/src/main/java/com/ydw/bat/wkflow/util/enums/FlowTypeEnum.java b/src/main/java/com/ydw/bat/wkflow/util/enums/FlowTypeEnum.java index 86f04c48..5be85d28 100644 --- a/src/main/java/com/ydw/bat/wkflow/util/enums/FlowTypeEnum.java +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/FlowTypeEnum.java @@ -1,5 +1,7 @@ package com.ydw.bat.wkflow.util.enums; +import org.apache.commons.lang.StringUtils; + /** * 流程类型枚举类 */ @@ -28,4 +30,15 @@ public enum FlowTypeEnum { public String getRoute() { return route; } + + public static FlowTypeEnum getFlowTypeEnumByValue(String value){ + FlowTypeEnum result = null; + for (FlowTypeEnum flowTypeEnum : FlowTypeEnum.values()) { + if (StringUtils.equals(flowTypeEnum.getValue(),value)) { + result = flowTypeEnum; + break; + } + } + 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 2a5f93c2..dd3af0bf 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 @@ -1,11 +1,13 @@ package com.ydw.bat.wkflow.util.enums; +import org.apache.commons.lang.StringUtils; + /** * 标准征求意见流程-任务节点定义key */ public enum StandardCommentNewProcessNodeKeyEnum { STAND_ASK_FOR_OPINION1("StandAskForOpinion1","起草",0), - SUB_PROCESS("subProcess","子流程",1), + // SUB_PROCESS("subProcess","子流程",1), STAND_ASK_FOR_OPINION2("StandAskForOpinion2","任务分发",2), STAND_ASK_FOR_OPINION3("StandAskForOpinion3","意见反馈",3), STAND_ASK_FOR_OPINION4("StandAskForOpinion4","意见汇总审批",4), @@ -36,4 +38,15 @@ public enum StandardCommentNewProcessNodeKeyEnum { public Integer getOrderNum() { return orderNum; } + + public static String getLableByValue(String value){ + String result = ""; + for (StandardCommentNewProcessNodeKeyEnum nodeKeyEnum : StandardCommentNewProcessNodeKeyEnum.values()) { + if (StringUtils.equals(nodeKeyEnum.getValue(),value)) { + result = nodeKeyEnum.getLable(); + break; + } + } + return result; + } } diff --git a/src/main/java/com/ydw/bat/wkflow/util/enums/TaskStatusEnum.java b/src/main/java/com/ydw/bat/wkflow/util/enums/TaskStatusEnum.java index 40096b32..a085cee7 100644 --- a/src/main/java/com/ydw/bat/wkflow/util/enums/TaskStatusEnum.java +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/TaskStatusEnum.java @@ -1,12 +1,15 @@ package com.ydw.bat.wkflow.util.enums; +import org.apache.commons.lang.StringUtils; + /** * 任务状态枚举类 */ public enum TaskStatusEnum { - TODO("待办","todo"), - DONE("已办","done"), + TODO("未完成","todo"), // 待办 + RECEIVED("已接收","received"), // 已接收 + DONE("已完成","done"), // 已办 ; TaskStatusEnum(String label, String value) { @@ -33,4 +36,14 @@ public enum TaskStatusEnum { this.value = value; } + public static String getLabelByValue(String value) { + String result = ""; + for (TaskStatusEnum taskStatusEnum : TaskStatusEnum.values()) { + if (StringUtils.equals(taskStatusEnum.getValue(), value)) { + result = taskStatusEnum.getLabel(); + break; + } + } + return result; + } }