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 bf106671..241ffeca 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; @@ -112,6 +113,9 @@ public class TodoTaskController extends BaseAction { @Autowired private IZchgxxmscCpghbDataEOService zchgxxmscCpghbDataEOService; + @Autowired + private IBusProcessHistoryService busProcessHistoryService; + @ApiOperation(value = "我的待办任务列表") @ApiImplicitParams({@ApiImplicitParam(name = "name", value = "名称"), @ApiImplicitParam(name = "current", value = "当前页"), @@ -424,6 +428,8 @@ public class TodoTaskController extends BaseAction { } else if (StringUtils.equals(one.getPrcType(), FlowTypeEnum.ZCHGXXMSCLC.getValue())) { this.changeZchgxxmscFlowAssignee(assignee, userId, pId, str); } + + this.busProcessHistoryService.changeUserIdByTaskId(str,assignee,userId); } } @@ -650,6 +656,8 @@ public class TodoTaskController extends BaseAction { }catch (Exception e){ logger.error(e.toString()); } + this.busProcessHistoryService.complete(busMes); + taskService.complete(busMes.getTaskId()); } else { return WrapMapper.error("当前任务不存在"); @@ -682,6 +690,9 @@ public class TodoTaskController extends BaseAction { }catch (Exception e){ logger.error(e.toString()); } + busMes.setTaskId(taskId); + this.busProcessHistoryService.complete(busMes); + taskService.complete(taskId); } else { return WrapMapper.error("当前任务不存在"); @@ -896,6 +907,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 new file mode 100644 index 00000000..ef2dbcd1 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/controller/BusProcessHistoryController.java @@ -0,0 +1,49 @@ +package com.ydw.bat.wkflow.business_main.datas.controller; + + +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +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") +public class BusProcessHistoryController { + + @Autowired + private IBusProcessHistoryService busProcessHistoryService; + + /** + * 查询流程历史列表 + * @param actiProcInstId + * @param flowType + * @return + */ + @GetMapping("/queryFlowHistoryList") + public List queryFlowHistoryList(String actiProcInstId,String flowType) { + BusProcessHistory busProcessHistory = new BusProcessHistory(); + busProcessHistory.setActiProcInstId(actiProcInstId); + 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 new file mode 100644 index 00000000..ed672f77 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/BusProcessHistory.java @@ -0,0 +1,122 @@ +package com.ydw.bat.wkflow.business_main.datas.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.util.Date; +import java.util.List; + +/** + * 流程历史 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("bus_process_history") +@ApiModel(value="BusProcessHistory对象", description="") +public class BusProcessHistory { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键") + @TableId(value = "id") + private String id; + + @ApiModelProperty(value = "流程实例id") + @TableField("acti_proc_inst_id") + private String actiProcInstId; + + @ApiModelProperty(value = "任务id") + @TableField("task_id") + private String taskId; + + @ApiModelProperty(value = "用户id") + @TableField("user_id") + private String userId; + + @ApiModelProperty(value = "任务节点key") + @TableField("task_key") + private String taskKey; + + @ApiModelProperty(value = "流程类型") + @TableField("flow_type") + private String flowType; + + @ApiModelProperty(value = "是否是子流程:1是 2否") + @TableField("is_sub") + private String isSub; + + @ApiModelProperty(value = "排序号") + @TableField("order_num") + private Integer orderNum; + + @ApiModelProperty(value = "任务状态") + @TableField("task_status") + private String taskStatus; + + @ApiModelProperty(value = "审批意见") + @TableField("commit_text") + private String commitText; + + @ApiModelProperty(value = "创建时间") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "完成时间") + @TableField("end_time") + private Date endTime; + + @ApiModelProperty(value = "父级id(仅限于子流程任务节点有)") + @TableField("p_id") + private String pId; + + @ApiModelProperty(value = "是否是多实例任务节点:1是 2否") + @TableField("is_many") + private String isMany; + + @ApiModelProperty(value = "多实例父节点id") + @TableField("many_p_id") + private String manyPId; + + // 子流程数据数组 + @TableField(exist = false) + private List children; + + @TableField(exist = false) + private String userName; + + @TableField(exist = false) + private String taskStatusShow; + @TableField(exist = false) + private String taskKeyShow; + @TableField(exist = false) + private String bpnId; + @TableField(exist = false) + private String prcId; + @TableField(exist = false) + private String prcName; + @TableField(exist = false) + private String prcNum; + + @ApiModelProperty(value = "图片中展示标识,0 未办白色,1 待办浅绿色 2 已办 蓝色") + @TableField("img_show_color") + private String imgShowColor; + + @ApiModelProperty(value = "图片中是否展示:1 默认展示 2 不展示") + @TableField("img_show_flag") + private String imgShowFlag; + + @ApiModelProperty(value = "分发用户id") + @TableField("parent_user_id") + private String parentUserId; + + // 分发用户名称 + @TableField(exist = false) + private String parentUserName; +} diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/BusProcessHistoryMapper.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/BusProcessHistoryMapper.java new file mode 100644 index 00000000..7a44a7ef --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/mapper/BusProcessHistoryMapper.java @@ -0,0 +1,8 @@ +package com.ydw.bat.wkflow.business_main.datas.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; + +public interface BusProcessHistoryMapper extends BaseMapper { + +} 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 new file mode 100644 index 00000000..f2b548fb --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/IBusProcessHistoryService.java @@ -0,0 +1,54 @@ +package com.ydw.bat.wkflow.business_main.datas.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusMes; +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); + + void updateBatch(List busProcessHistoryList); + + // 更新任务信息 + void updateTaskInfo(DelegateTask delegateTask); + + void complete(BusMes busMes); + + // 获取最大排序号 + int getMaxOrderNum(String actiProcInstId, String taskKey); + + // 更新排序号 + void updateOrderNum(String actiProcInstId, int orderNum,int dataNum); + + List> getImgDataList(BusProcessHistory busProcessHistory); + + // 根据taskId修改用户id + void changeUserIdByTaskId(String taskId,String afterUserId,String frontUserId); + + /** + * 更新某一个流程下 任务在流程图中展示颜色。 + * @param actiProcInstId 流程示例id + * @param inTaskKeyList in的流程定义key + * @param notInTaskKeyList notIn的流程定义key + * @param imgShowColor 更新成什么颜色 : 图片中展示标识,0 未办白色,1 待办浅绿色 2 已办 蓝色 + */ + void updateImgShowColor(String actiProcInstId,List inTaskKeyList, List notInTaskKeyList,String imgShowColor); + + /** + * 更新某一个流程下 任务是否展示。 + * @param actiProcInstId 流程示例id + * @param inTaskKeyList in的流程定义key + * @param notInTaskKeyList notIn的流程定义key + * @param imgShowFlag 1展示 2不展示 + */ + void updateImgShowFlag(String actiProcInstId, List inTaskKeyList, List notInTaskKeyList, String imgShowFlag); +} 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 new file mode 100644 index 00000000..7b2e0a9c --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/IBusProcessHistoryServiceImpl.java @@ -0,0 +1,511 @@ +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_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.IBusProcessEntrustService; +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.util.enums.BussLibraryNodeKeyEnum; +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.ActivitiException; +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.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class IBusProcessHistoryServiceImpl extends ServiceImpl implements IBusProcessHistoryService { + + + @Autowired + LawsUserInfoService lawsUserInfoService; + + @Autowired + private IBusProcessNameService busProcessNameService; + + @Autowired + private IBusProcessEntrustService iBusProcessEntrustService; + + @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).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()); + 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(childList.size()-1).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); + } + } + } + List results = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(firstBphList)) { + results = firstBphList.stream().filter(bph -> { + boolean flag = false; + if (StringUtils.equals(bph.getIsMany(),"2") || (StringUtils.equals(bph.getIsMany(),"1") && CollectionUtils.isNotEmpty(bph.getChildren()))) { + flag = true; + } + return flag; + }).distinct().collect(Collectors.toList()); + } + return results; + } + + @Override + public List queryByList(BusProcessHistory busProcessHistory) { + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + this.setQueryCondition(busProcessHistory, bphQueryWrap); + List results = this.list(bphQueryWrap); + return results; + } + + /** + * 设置查询条件 + * @param busProcessHistory + * @param bphQueryWrap + */ + private void setQueryCondition(BusProcessHistory busProcessHistory, QueryWrapper bphQueryWrap) { + if (StringUtils.isNotEmpty(busProcessHistory.getActiProcInstId())) { + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, busProcessHistory.getActiProcInstId()); + } + if (StringUtils.isNotEmpty(busProcessHistory.getTaskId())) { + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskId, busProcessHistory.getTaskId()); + } + if (StringUtils.isNotEmpty(busProcessHistory.getUserId())) { + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, busProcessHistory.getUserId()); + } + if (StringUtils.isNotEmpty(busProcessHistory.getTaskKey())) { + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, busProcessHistory.getTaskKey()); + } + if (StringUtils.isNotEmpty(busProcessHistory.getFlowType())) { + bphQueryWrap.lambda().eq(BusProcessHistory::getFlowType, busProcessHistory.getFlowType()); + } + if (StringUtils.isNotEmpty(busProcessHistory.getTaskStatus())) { + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskStatus, busProcessHistory.getTaskStatus()); + } + if (StringUtils.isNotEmpty(busProcessHistory.getPId())) { + bphQueryWrap.lambda().eq(BusProcessHistory::getPId, busProcessHistory.getPId()); + } + } + + /** + * 处理数据 + * + * @param datas + */ + private List disposeData(List datas,String actiProcInstId) { + List results = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(datas)) { + BusProcessName bpn = null; + if (StringUtils.isNotEmpty(actiProcInstId)) { + QueryWrapper bpnQueryWrap = new QueryWrapper<>(); + bpnQueryWrap.lambda().eq(BusProcessName::getPrcId,actiProcInstId); + bpn = this.busProcessNameService.getOne(bpnQueryWrap); + } + + for (BusProcessHistory data : datas) { + if (StringUtils.isNotEmpty(data.getUserId())) { + 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() + ")"; + } + + QueryWrapper queryWrapper2 = new QueryWrapper(); + queryWrapper2.eq("TASK_ID",data.getTaskId()); + queryWrapper2.orderByDesc("CREATE_TIME"); + List list1 = iBusProcessEntrustService.list(queryWrapper2); + if(list1.size()>0){ + ResponseMessage assignee1 = lawsUserInfoService.getByIdFeignClientWithDisabled(list1.get(0).getUserId()); + userName = assignee.getData().getUname()+"("+assignee1.getData().getUname()+" 转办)"; + } + } 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()); + } else if (StringUtils.equals(data.getFlowType(),FlowTypeEnum.QBZXD_JSBZ.getValue())) { + taskKeyShow = BussLibraryNodeKeyEnum.getLableByValue(data.getTaskKey()); + } + data.setTaskKeyShow(taskKeyShow); + + if (ObjectUtils.isNotEmpty(bpn)) { + data.setPrcName(bpn.getPrcName()); + data.setPrcId(bpn.getPrcId()); + data.setPrcNum(bpn.getPrcNum()); + data.setBpnId(bpn.getId()); + } + } + } + return results; + } + + @Override + public void insertBatch(List busProcessHistoryList) { + if (CollectionUtils.isNotEmpty(busProcessHistoryList)) { + for (BusProcessHistory busProcessHistory : busProcessHistoryList) { + if (StringUtils.isEmpty(busProcessHistory.getId())) { + busProcessHistory.setId(UUID.randomUUID().toString()); + } + + String imgShowColor = "0"; + if (StringUtils.isNotEmpty(busProcessHistory.getTaskStatus())) { + if (StringUtils.equals(busProcessHistory.getTaskStatus(),TaskStatusEnum.DONE.getValue())) { + imgShowColor = "2"; + } + } + busProcessHistory.setImgShowColor(imgShowColor); + busProcessHistory.setImgShowFlag("1"); + busProcessHistory.setCreateTime(new Date()); + } + this.saveBatch(busProcessHistoryList); + } + } + + @Override + public void updateBatch(List busProcessHistoryList) { + if (CollectionUtils.isNotEmpty(busProcessHistoryList)) { + this.updateBatchById(busProcessHistoryList); + } + } + + @Override + public void updateTaskInfo(DelegateTask delegateTask) { + BusProcessHistory bph = new BusProcessHistory(); + bph.setActiProcInstId(delegateTask.getProcessInstanceId()); + bph.setTaskKey(delegateTask.getTaskDefinitionKey()); + bph.setUserId(delegateTask.getAssignee()); + 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()); + busProcessHistory.setTaskStatus(TaskStatusEnum.TODO.getValue()); + busProcessHistory.setImgShowColor("1"); + super.updateById(busProcessHistory); + } + } + + @Override + public void complete(BusMes busMes) { + BusProcessHistory bph = new BusProcessHistory(); + bph.setTaskId(busMes.getTaskId()); + List bphList = this.queryByList(bph); + if (CollectionUtils.isNotEmpty(bphList)) { + JSONObject jsonObject = JSONObject.parseObject(busMes.getJson()); + bphList.forEach(busProcessHistory -> { + busProcessHistory.setTaskStatus(TaskStatusEnum.DONE.getValue()); + busProcessHistory.setEndTime(new Date()); + busProcessHistory.setCommitText(jsonObject.getString("commentText")); + busProcessHistory.setImgShowColor("2"); + }); + this.updateBatch(bphList); + } + } + + @Override + public int getMaxOrderNum(String actiProcInstId, String taskKey) { + int result = 0; + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,actiProcInstId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey,taskKey); + bphQueryWrap.orderByDesc("order_num"); + List list = this.list(bphQueryWrap); + if (CollectionUtils.isNotEmpty(list)) { + result = list.get(0).getOrderNum(); + } + return result; + } + + /** + * + * @param actiProcInstId 流程实例id + * @param orderNum 排序号 + * @param dataNum 数据数量 + */ + @Override + public void updateOrderNum(String actiProcInstId, int orderNum ,int dataNum) { + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,actiProcInstId); + bphQueryWrap.lambda().gt(BusProcessHistory::getOrderNum,orderNum); + bphQueryWrap.isNull("task_id"); + List list = this.list(bphQueryWrap); + if (CollectionUtils.isNotEmpty(list)) { + for (BusProcessHistory busProcessHistory : list) { + busProcessHistory.setOrderNum(busProcessHistory.getOrderNum() + dataNum); + } + this.updateBatch(list); + } + } + + @Override + public List> getImgDataList(BusProcessHistory busProcessHistory) { + List> result = new ArrayList<>(); + + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + this.setQueryCondition(busProcessHistory, bphQueryWrap); + bphQueryWrap.lambda().eq(BusProcessHistory::getImgShowFlag,"1"); + bphQueryWrap.orderByAsc("order_num", "create_time"); + List bphList = this.list(bphQueryWrap); + this.disposeData(bphList,busProcessHistory.getActiProcInstId()); + + FlowTypeEnum flowTypeEnum = FlowTypeEnum.getFlowTypeEnumByValue(busProcessHistory.getFlowType()); + switch (flowTypeEnum) { + case BZZQYJLC: + result = this.getBzzqyjlcImgDataList(bphList); + break; + case QBZXD_JSBZ: + result = this.getQbzxdJsbzImgDataList(bphList); + break; + default: + break; + } + return result; + } + + @Override + public void changeUserIdByTaskId(String taskId,String afterUserId,String frontUserId) { + if (StringUtils.isNotEmpty(taskId) && StringUtils.isNotEmpty(afterUserId) && StringUtils.isNotEmpty(frontUserId)) { + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskId, taskId); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,frontUserId); + BusProcessHistory bph = this.getOne(bphQueryWrap); + if (ObjectUtils.isNotEmpty(bph)) { + bph.setUserId(afterUserId); + this.updateById(bph); + } + } + } + + @Override + public void updateImgShowColor(String actiProcInstId, List inTaskKeyList, List notInTaskKeyList,String imgShowColor) { + if (CollectionUtils.isEmpty(inTaskKeyList) && CollectionUtils.isEmpty(notInTaskKeyList)) { + throw new ActivitiException("参数有误!"); + } + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, actiProcInstId); + if (CollectionUtils.isNotEmpty(inTaskKeyList)) { + bphQueryWrap.lambda().in(BusProcessHistory::getTaskKey,inTaskKeyList); + } + if (CollectionUtils.isNotEmpty(notInTaskKeyList)) { + bphQueryWrap.lambda().notIn(BusProcessHistory::getTaskKey,notInTaskKeyList); + } + List bphList = this.list(bphQueryWrap); + if (CollectionUtils.isNotEmpty(bphList)) { + for (BusProcessHistory bph : bphList) { + bph.setImgShowColor(imgShowColor); + } + this.updateBatchById(bphList); + } + } + + @Override + public void updateImgShowFlag(String actiProcInstId, List inTaskKeyList, List notInTaskKeyList, String imgShowFlag) { + if (CollectionUtils.isEmpty(inTaskKeyList) && CollectionUtils.isEmpty(notInTaskKeyList)) { + throw new ActivitiException("参数有误!"); + } + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, actiProcInstId); + if (CollectionUtils.isNotEmpty(inTaskKeyList)) { + bphQueryWrap.lambda().in(BusProcessHistory::getTaskKey,inTaskKeyList); + } + if (CollectionUtils.isNotEmpty(notInTaskKeyList)) { + bphQueryWrap.lambda().notIn(BusProcessHistory::getTaskKey,notInTaskKeyList); + } + List bphList = this.list(bphQueryWrap); + if (CollectionUtils.isNotEmpty(bphList)) { + for (BusProcessHistory bph : bphList) { + bph.setImgShowFlag(imgShowFlag); + } + this.updateBatchById(bphList); + } + } + + /** + * 获取标准征求意见流程图数据 + * @param bphList + * @return + */ + private List> getBzzqyjlcImgDataList(List bphList) { + List> result = new ArrayList<>(); + + List standardCommentNewProcessNodeKeyEnum = StandardCommentNewProcessNodeKeyEnum.getStandardCommentNewProcessNodeKeyEnum(); + for (StandardCommentNewProcessNodeKeyEnum nodeKeyEnum : standardCommentNewProcessNodeKeyEnum) { + Map tasksMap = this.getTasksMap( + bphList, + nodeKeyEnum.getValue(), + nodeKeyEnum.getLable() + ); + if (ObjectUtils.isNotEmpty(tasksMap)) { + result.add(tasksMap); + } + } + return result; + } + /** + * 获取企标制修订-技术标准流程图数据 + * @param bphList + * @return + */ + private List> getQbzxdJsbzImgDataList(List bphList) { + List> result = new ArrayList<>(); + List bussLibraryNodeKeyEnum = BussLibraryNodeKeyEnum.getBussLibraryNodeKeyEnum(); + for (BussLibraryNodeKeyEnum nodeKeyEnum : bussLibraryNodeKeyEnum) { + 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().filter(bph -> { + boolean flag = false; + if (StringUtils.isNotEmpty(bph.getUserName())) { + flag = true; + } + return flag; + }).map(BusProcessHistory::getUserName).distinct().collect(Collectors.joining(",")); + taskStatus = TaskStatusEnum.DONE.getValue(); + for (BusProcessHistory busProcessHistory : bphListByTaskKey) { + + if (StringUtils.equals(busProcessHistory.getIsMany(),"1")) { + List childList = bphList.stream().filter(bph -> StringUtils.equals(busProcessHistory.getId(), bph.getManyPId())).distinct().collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(childList)) { + for (BusProcessHistory history : childList) { + busProcessHistory.setTaskId(busProcessHistory.getId()); + busProcessHistory.setTaskStatus(TaskStatusEnum.DONE.getValue()); +// if (StringUtils.equals(history.getTaskStatus(),TaskStatusEnum.TODO.getValue()) || StringUtils.equals(history.getTaskStatus(),TaskStatusEnum.RECEIVED.getValue())) { +// busProcessHistory.setTaskStatus(TaskStatusEnum.TODO.getValue()); +// busProcessHistory.setTaskId(null); +// break; +// } + + if (StringUtils.equals(history.getImgShowColor(), "2")) { + busProcessHistory.setImgShowColor(history.getImgShowColor()); + } else if (StringUtils.equals(history.getImgShowColor(), "1")) { + busProcessHistory.setImgShowColor(history.getImgShowColor()); + break; + } else if (StringUtils.equals(history.getImgShowColor(), "0")) { + busProcessHistory.setImgShowColor(history.getImgShowColor()); + continue; + } + } + } + } +// if (StringUtils.isEmpty(busProcessHistory.getTaskId()) +// || StringUtils.equals(busProcessHistory.getTaskStatus(), TaskStatusEnum.TODO.getValue()) +// || StringUtils.equals(busProcessHistory.getTaskStatus(), TaskStatusEnum.RECEIVED.getValue())) { +// taskStatus = TaskStatusEnum.TODO.getValue(); +// break; +// } + // 如果是蓝色,设置为已办,接着往下循环,如果是绿色,设置为待办,直接终止循环,如果是白色,接着往下循环。 +// if (StringUtils.equals(busProcessHistory.getImgShowColor(), "2")) { +// taskStatus = TaskStatusEnum.DONE.getValue(); +// } else if (StringUtils.equals(busProcessHistory.getImgShowColor(), "1")) { +// taskStatus = TaskStatusEnum.TODO.getValue(); +// break; +// } else if (StringUtils.equals(busProcessHistory.getImgShowColor(), "0")) { +// taskStatus = ""; +// continue; +// } + } + + Map> map = bphListByTaskKey.stream().collect(Collectors.groupingBy(BusProcessHistory::getImgShowColor)); + if (map.containsKey("0")) { + taskStatus = ""; + } + + // 如果该节点数据,存在绿色展示数据,则设置为绿色。 + if (map.containsKey("2")) { + taskStatus = TaskStatusEnum.DONE.getValue(); + } + + // 如果该节点数据,存在绿色展示数据,则设置为绿色。 + if (map.containsKey("1")) { + taskStatus = TaskStatusEnum.TODO.getValue(); + } + } + 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/business_oa/webService/controller/WebServiceOAController.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/controller/WebServiceOAController.java index d138b8c0..7410a96d 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/controller/WebServiceOAController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/controller/WebServiceOAController.java @@ -24,6 +24,7 @@ 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_oa.webService.service.WebServiceOAService; import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext; +import com.ydw.bat.wkflow.business_oa.webService.todoContent.SendOAContent; import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult; import com.ydw.bat.wkflow.business_wkflow.form.dto.FormSubmitDto; import com.ydw.bat.wkflow.business_wkflow.form.service.FormValsService; @@ -73,4 +74,13 @@ public class WebServiceOAController extends BaseAction { return webServiceOAService.sendTodo(new BusProcessNew()); } + @ApiOperation("代主服务发送OA请求") + @PostMapping("/replaceSendOA") + public Wrapper replaceSendOA(@RequestBody SendOAContent sendOAContent) { + logger.info("收到主服务请求------------------------------------"); + logger.info("请求参数:{}", JSON.toJSONString(sendOAContent)); + String result = webServiceOAService.replaceSendOA(sendOAContent); + return WrapMapper.ok(result); + } + } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java index cbf6e246..51baaf70 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/WebServiceOAService.java @@ -2,12 +2,11 @@ package com.ydw.bat.wkflow.business_oa.webService.service; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext; +import com.ydw.bat.wkflow.business_oa.webService.todoContent.SendOAContent; import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppDeleteResult; import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult; import org.activiti.engine.task.Task; -import java.util.List; - public interface WebServiceOAService { void deleteOAByPid(String pId); @@ -26,4 +25,5 @@ public interface WebServiceOAService { NotifyTodoAppResult sendToBeRead(BusProcessNew busProcessNew) throws Exception; + String replaceSendOA(SendOAContent sendOAContent); } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java index f1f788a8..d5277f7f 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/service/impl/WebServiceOAServiceImpl.java @@ -16,6 +16,7 @@ import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService; import com.ydw.bat.wkflow.business_oa.webService.todoContent.HEAD; import com.ydw.bat.wkflow.business_oa.webService.todoContent.JsonSend; import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext; +import com.ydw.bat.wkflow.business_oa.webService.todoContent.SendOAContent; import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppDeleteResult; import com.ydw.bat.wkflow.business_oa.webService.todoResult.NotifyTodoAppResult; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -560,5 +561,10 @@ public class WebServiceOAServiceImpl implements WebServiceOAService { } return notifyTodoAppResult; } + + @Override + public String replaceSendOA(SendOAContent sendOAContent) { + return okHttpUtil.postForJson(sendOAContent.getUrl(), sendOAContent.getJson(), sendOAContent.getHeaderParams()); + } } diff --git a/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoContent/SendOAContent.java b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoContent/SendOAContent.java new file mode 100644 index 00000000..05973e11 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/business_oa/webService/todoContent/SendOAContent.java @@ -0,0 +1,21 @@ +package com.ydw.bat.wkflow.business_oa.webService.todoContent; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + +/** + * @author wxyclub + * @description + * @date 2024-03-31 + */ +@Data +public class SendOAContent implements Serializable { + + String url; + + String json; + + Map headerParams; +} diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/StartSurveyAfter.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/StartSurveyAfter.java index a6dbc9c4..dba890d7 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/StartSurveyAfter.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/StartSurveyAfter.java @@ -5,18 +5,24 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.tmsps.fk.common.util.JsonUtil; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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_slrs.dao.SarPublicIdea; import com.ydw.bat.wkflow.util.SpringContextUtil; +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 com.ydw.bat.wkflow.util.http.ResponseMessage; import org.activiti.engine.ActivitiException; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -160,5 +166,152 @@ public class StartSurveyAfter implements TaskListener { if(!result.isOk()){ throw new ActivitiException("发起公开征求意见失败"); } + this.addBusProcessHistory(object,delegateTask); + } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask){ + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + List bphList = new ArrayList<>(); + + // 起草 + BusProcessHistory qcBph = new BusProcessHistory(); + qcBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qcBph.setUserId(delegateTask.getAssignee()); + qcBph.setTaskId(delegateTask.getId()); + qcBph.setTaskKey(delegateTask.getTaskDefinitionKey()); + qcBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + qcBph.setIsSub("2"); + qcBph.setTaskStatus(TaskStatusEnum.DONE.getValue()); + qcBph.setEndTime(new Date()); + qcBph.setCommitText(json.getString("commentText")); + qcBph.setIsMany("2"); + qcBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION1.getOrderNum()); + bphList.add(qcBph); + + // 子流程 + // 子流程主键id +// String subId = UUID.randomUUID().toString(); +// delegateTask.setVariable("subId",subId); +// +// BusProcessHistory zlcBph = new BusProcessHistory(); +// zlcBph.setId(subId); +// zlcBph.setActiProcInstId(delegateTask.getProcessInstanceId()); +// zlcBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); +// zlcBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.SUB_PROCESS.getValue()); +// zlcBph.setIsSub("1"); +// bphList.add(zlcBph); + + List zrUserIdList = new ArrayList<>(); + if (json.getString("dockUserList").contains(",")){ + zrUserIdList.addAll(new ArrayList<>(Arrays.asList(json.getString("dockUserList").split(",")))); + }else { + zrUserIdList.add(json.getString("dockUserList")); + } + + if (CollectionUtils.isNotEmpty(zrUserIdList)) { + for (String zrUserId : zrUserIdList) { + // 任务分发 + BusProcessHistory rwffBph = new BusProcessHistory(); + rwffBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + rwffBph.setUserId(zrUserId); + rwffBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION2.getValue()); + rwffBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + rwffBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION2.getOrderNum()); + rwffBph.setIsSub("2"); + rwffBph.setIsMany("2"); + bphList.add(rwffBph); + +// // 意见汇总审批 +// BusProcessHistory yjhzspBph = new BusProcessHistory(); +// yjhzspBph.setActiProcInstId(delegateTask.getProcessInstanceId()); +// yjhzspBph.setUserId(zrUserId); +// yjhzspBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getValue()); +// yjhzspBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); +// yjhzspBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getOrderNum()); +// yjhzspBph.setIsSub("2"); +// yjhzspBph.setIsMany("2"); +// bphList.add(yjhzspBph); + + /*// 意见审批 + String spId = json.getString("spId"); + BusProcessHistory yjspBph = new BusProcessHistory(); + yjspBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjspBph.setUserId(spId); + yjspBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getValue()); + yjspBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjspBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getOrderNum()); + yjspBph.setIsSub("2"); + yjspBph.setIsMany("2"); + bphList.add(yjspBph); + + // 管理员 + String bzfgId = json.getString("bzfgId"); + BusProcessHistory glyBph = new BusProcessHistory(); + glyBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + glyBph.setUserId(bzfgId); + glyBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION6.getValue()); + glyBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + glyBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION6.getOrderNum()); + glyBph.setIsSub("2"); + glyBph.setIsMany("2"); + bphList.add(glyBph);*/ + } + } + + // 意见处理 + String bzfgIdSum = json.getString("startUser"); + BusProcessHistory yjclBph = new BusProcessHistory(); + yjclBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjclBph.setUserId(bzfgIdSum); + yjclBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION7.getValue()); + yjclBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjclBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION7.getOrderNum()); + yjclBph.setIsSub("2"); + yjclBph.setIsMany("2"); + bphList.add(yjclBph); + + // 批准 + String presidentUser = json.getString("presidentUser"); + BusProcessHistory pzBph = new BusProcessHistory(); + pzBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + pzBph.setUserId(presidentUser); + pzBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION11.getValue()); + pzBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + pzBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION11.getOrderNum()); + pzBph.setIsSub("2"); + pzBph.setIsMany("2"); + bphList.add(pzBph); + + // 审定 + if (StringUtils.isNotEmpty(json.getString("directorUser"))) { + // 审定节点父节点信息 + BusProcessHistory sdPBph = new BusProcessHistory(); + String sdPBphId = UUID.randomUUID().toString(); + sdPBph.setId(sdPBphId); + sdPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + sdPBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + sdPBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + sdPBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getOrderNum()); + sdPBph.setIsSub("2"); + sdPBph.setIsMany("1"); + bphList.add(sdPBph); + + List directorUserList = Arrays.asList(json.getString("directorUser").split(",")); + for (String sdUserId : directorUserList) { + BusProcessHistory sdBph = new BusProcessHistory(); + sdBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + sdBph.setUserId(sdUserId); + sdBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + sdBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + sdBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getOrderNum()); + sdBph.setIsSub("2"); + sdBph.setIsMany("1"); + sdBph.setManyPId(sdPBphId); + bphList.add(sdBph); + } + } + + bphService.insertBatch(bphList); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10After.java index ebd30f8f..aa8d8ed7 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10After.java @@ -3,18 +3,21 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ydw.bat.wkflow.business_activiti.service.TaskTodoService; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; -import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; -import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; -import com.ydw.bat.wkflow.business_main.datas.entity.Datas; -import com.ydw.bat.wkflow.business_main.datas.entity.ResponseMessage; +import com.ydw.bat.wkflow.business_main.datas.entity.*; +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_slrs.dao.SarPublicIdeaAll; import com.ydw.bat.wkflow.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +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.lang.StringUtils; import org.springframework.beans.BeanUtils; import java.text.SimpleDateFormat; @@ -168,5 +171,44 @@ public class Step10After implements TaskListener { busProcessNewNext.setPrcName(prcName); busBean.save(busProcessNewNext); } + this.addBusProcessHistory(object,delegateTask); + } + + /** + * 添加节点流程历史 + * @param json + * @param delegateTask + */ + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String presidentFlag = (String) delegateTask.getVariable("presidentFlag"); + // 如果是驳回,流程走向意见处理节点,否则流程结束 + if (StringUtils.equals(presidentFlag,"1")) { + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION11.getValue()); + + List bphList = new ArrayList<>(); + // 流程走向意见处理节点 + String bzfgIdSum = json.getString("startUser"); + BusProcessHistory yjclBph = new BusProcessHistory(); + yjclBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjclBph.setUserId(bzfgIdSum); + yjclBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION7.getValue()); + yjclBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjclBph.setOrderNum(orderNum); + yjclBph.setIsSub("2"); + yjclBph.setIsMany("2"); + bphList.add(yjclBph); + bphService.insertBatch(bphList); + + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + + // 退回到了 意见处理,将会签、审核、审定、批准 节点 设置为在流程图展示空白 + List taskKeyList = new ArrayList<>(); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION8.getValue()); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION9.getValue()); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION11.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),taskKeyList,null,"0"); + } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10Before.java index 6508388a..93b0a560 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step10Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -30,5 +31,8 @@ public class Step10Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step1After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step1After.java index e452af39..b138f16c 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step1After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step1After.java @@ -3,18 +3,24 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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_slrs.dao.SarPublicIdea; import com.ydw.bat.wkflow.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +import com.ydw.bat.wkflow.util.enums.StandardCommentNewProcessNodeKeyEnum; import com.ydw.bat.wkflow.util.http.ResponseMessage; import org.activiti.engine.ActivitiException; 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.*; @@ -121,5 +127,48 @@ public class Step1After implements TaskListener { busProcessNewNext.setUserId(delegateTask.getVariable("dockUser",String.class)); busBean.save(busProcessNewNext); } + + this.addBusProcessHistory(object,delegateTask); + } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + List bphList = new ArrayList<>(); + List 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); + } + + 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/Step1Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step1Before.java index 73d93682..b986d5e2 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step1Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step1Before.java @@ -1,12 +1,16 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; 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.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.TaskStatusEnum; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import java.util.List; @@ -32,5 +36,9 @@ public class Step1Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); + } } 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 636fba4d..948866ef 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 @@ -4,13 +4,18 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +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.ActivitiException; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; @@ -111,5 +116,43 @@ public class Step2After implements TaskListener { busBean.save(busProcessNewNext); } } + + this.addBusProcessHistory(object,delegateTask); + } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask){ + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + // 根据当前taskId + QueryWrapper queryWrapByTaskId = new QueryWrapper<>(); + queryWrapByTaskId.lambda().eq(BusProcessHistory::getTaskId,delegateTask.getId()); + queryWrapByTaskId.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + BusProcessHistory bphByTaskId = bphService.list(queryWrapByTaskId).get(0); + + // 根据分发人用户id、流程实例id,流程节点定义key,任务状态为待办 查询 , 如果存在待办,则不做任何操作,如果不存在,则给分发人创建一条意见汇总审批的任务。 + String parentUserId = bphByTaskId.getParentUserId(); + QueryWrapper queryWrap = new QueryWrapper<>(); + queryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + queryWrap.lambda().eq(BusProcessHistory::getParentUserId,parentUserId); + queryWrap.lambda().eq(BusProcessHistory::getTaskKey,StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION3.getValue()); + queryWrap.lambda().eq(BusProcessHistory::getTaskStatus, TaskStatusEnum.TODO.getValue()); + queryWrap.lambda().ne(BusProcessHistory::getTaskId,delegateTask.getId()); + + int count = bphService.count(queryWrap); + if (count == 0) { + List bphList = new ArrayList<>(); + + // 意见汇总审批 + BusProcessHistory yjhzspBph = new BusProcessHistory(); + yjhzspBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjhzspBph.setUserId(parentUserId); + yjhzspBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getValue()); + yjhzspBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjhzspBph.setOrderNum(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getOrderNum()); + yjhzspBph.setIsSub("2"); + yjhzspBph.setIsMany("2"); + bphList.add(yjhzspBph); + + bphService.insertBatch(bphList); + } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2Before.java index 48b2290b..83c9a6b6 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step2Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -32,5 +33,7 @@ public class Step2Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } 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 3eec053d..80520c6f 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 @@ -3,15 +3,20 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +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 java.text.SimpleDateFormat; import java.util.ArrayList; @@ -87,5 +92,38 @@ public class Step3After implements TaskListener { busBean.save(busProcessNewNext); } } + this.addBusProcessHistory(object,delegateTask); + } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String spId = json.getString("spId"); + + // 如果存在批准节点的数据,taskId为空。 不用添加,否则就是退回过 需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,spId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 意见审批 + BusProcessHistory pzBph = new BusProcessHistory(); + pzBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + pzBph.setUserId(spId); + pzBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getValue()); + pzBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + pzBph.setIsSub("2"); + pzBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getValue()); + pzBph.setOrderNum(orderNum + 1); + + bphList.add(pzBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3Before.java index e6c9c5c7..01289ea3 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step3Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -31,5 +32,7 @@ public class Step3Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } 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 bd09e2f7..0a0ba904 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 @@ -3,15 +3,22 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.BussLibraryNodeKeyEnum; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +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.lang.StringUtils; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -93,5 +100,66 @@ public class Step4After implements TaskListener { busBean.save(busProcessNewNext); } } + this.addBusProcessHistory(object,delegateTask); + } + + /** + * 添加节点流程历史 + * @param json + * @param delegateTask + */ + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String spFlag = json.getString("spFlag"); + List bphList = new ArrayList<>(); + + // 如果是驳回,流程走向意见处理节点,否则流程结束 + if (!StringUtils.equals(spFlag,"0")) { + String zrUserId = json.getString("SKS"); + // 意见汇总审批 + BusProcessHistory yjhzspBph = new BusProcessHistory(); + yjhzspBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjhzspBph.setUserId(zrUserId); + yjhzspBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getValue()); + yjhzspBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getValue()); + yjhzspBph.setOrderNum(orderNum + 1); + yjhzspBph.setIsSub("2"); + yjhzspBph.setIsMany("2"); + bphList.add(yjhzspBph); + + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + + // 退回到了 意见汇总报批,将意见审批节点 设置为在流程图展示空白 + List taskKeyList = new ArrayList<>(); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),taskKeyList,null,"0"); + } else { + String bzfgId = json.getString("bzfgId"); + // 如果存在批准节点的数据,taskId为空。 不用添加,否则就是退回过 需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,bzfgId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey,StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION6.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + // 管理员 + BusProcessHistory glyBph = new BusProcessHistory(); + glyBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + glyBph.setUserId(bzfgId); + glyBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION6.getValue()); + glyBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getValue()); + glyBph.setOrderNum(orderNum + 1); + glyBph.setIsSub("2"); + glyBph.setIsMany("2"); + glyBph.setParentUserId(delegateTask.getAssignee()); + bphList.add(glyBph); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } + bphService.insertBatch(bphList); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4Before.java index 3df9c474..510013d7 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step4Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -31,5 +32,8 @@ public class Step4Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } 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 185180c9..5e245d3c 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 @@ -4,15 +4,20 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +import com.ydw.bat.wkflow.util.enums.StandardCommentNewProcessNodeKeyEnum; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.List; @@ -121,5 +126,40 @@ public class Step5After implements TaskListener { busBean.save(busProcessNewNext); } } + this.addBusProcessHistory(object,delegateTask); + } + + /** + * 添加节点流程历史 + * @param json + * @param delegateTask + */ + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String bzFlag = json.getString("bzFlag"); + // 如果是驳回,流程走向意见处理节点 + if (!StringUtils.equals(bzFlag,"0")) { + String zrUserId = json.getString("SKS"); + List bphList = new ArrayList<>(); + // 意见汇总审批 + BusProcessHistory yjhzspBph = new BusProcessHistory(); + yjhzspBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjhzspBph.setUserId(zrUserId); + yjhzspBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION4.getValue()); + yjhzspBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION6.getValue()); + yjhzspBph.setOrderNum(orderNum + 1); + yjhzspBph.setIsSub("2"); + yjhzspBph.setIsMany("2"); + bphList.add(yjhzspBph); + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + + // 退回到了 意见汇总报批,将意见审批、管理员节点 设置为在流程图展示空白 + List taskKeyList = new ArrayList<>(); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION5.getValue()); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION6.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),taskKeyList,null,"0"); + } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5Before.java index 180d3617..ebdb1339 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step5Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -32,5 +33,8 @@ public class Step5Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6After.java index 70ae490c..26a7a331 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6After.java @@ -3,15 +3,20 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +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 java.util.ArrayList; import java.util.Arrays; @@ -87,5 +92,43 @@ public class Step6After implements TaskListener { busBean.save(busProcessNewNext); } } + + this.addBusProcessHistory(object,delegateTask); + } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + List bphList = new ArrayList<>(); + // 会签 + List hqUserIdList = delegateTask.getVariable("Step6", List.class); + if (CollectionUtils.isNotEmpty(hqUserIdList)) { + // 会签节点父节点信息 + BusProcessHistory hqPBph = new BusProcessHistory(); + String hqPBphId = UUID.randomUUID().toString(); + hqPBph.setId(hqPBphId); + hqPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + hqPBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION8.getValue()); + hqPBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION7.getValue()); + hqPBph.setOrderNum(orderNum + 1); + hqPBph.setIsSub("2"); + hqPBph.setIsMany("1"); + bphList.add(hqPBph); + + for (String hqUsserId : hqUserIdList) { + BusProcessHistory hqBph = new BusProcessHistory(); + hqBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + hqBph.setUserId(hqUsserId); + hqBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION8.getValue()); + hqBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + hqBph.setOrderNum(orderNum + 1); + hqBph.setIsSub("2"); + hqBph.setIsMany("1"); + hqBph.setManyPId(hqPBphId); + bphList.add(hqBph); + } + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + bphService.insertBatch(bphList); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6Before.java index eefbf769..a53cce9d 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step6Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -31,5 +32,8 @@ public class Step6Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7After.java index f978437d..fd737cb4 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7After.java @@ -2,16 +2,23 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ydw.bat.wkflow.business_activiti.service.TaskTodoService; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +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.lang.StringUtils; import java.util.ArrayList; import java.util.Arrays; @@ -126,5 +133,78 @@ public class Step7After implements TaskListener { busBean.save(busProcessNewNext); } } + this.addBusProcessHistory(object,delegateTask,nextUserList); + } + + /** + * 添加节点流程历史 + * @param json + * @param delegateTask + * @param shUserIdList + */ + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask,List shUserIdList) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + TaskTodoService taskTodoService = SpringContextUtil.getBean(TaskTodoService.class); + boolean existTaskFlag = taskTodoService.whetherExistTaskByTaskDefinitionKey( + delegateTask.getProcessInstanceId(), + delegateTask.getTaskDefinitionKey(), + delegateTask.getId() + ); + // 如果当前会签节点不存在任务了。 + if (!existTaskFlag) { + List bphList = new ArrayList<>(); + + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION8.getValue()); + + String hqFlag = (String) delegateTask.getVariable("hqFlag"); + if (StringUtils.equals(hqFlag,"0")) { + // 审核 + if (CollectionUtils.isNotEmpty(shUserIdList)) { + // 审核节点父节点信息 + BusProcessHistory shPBph = new BusProcessHistory(); + String shPBphId = UUID.randomUUID().toString(); + shPBph.setId(shPBphId); + shPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + shPBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION9.getValue()); + shPBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + shPBph.setOrderNum(orderNum + 1); + shPBph.setIsSub("2"); + shPBph.setIsMany("1"); + bphList.add(shPBph); + + for (String shUserId : shUserIdList) { + BusProcessHistory shBph = new BusProcessHistory(); + shBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + shBph.setUserId(shUserId); + shBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION9.getValue()); + shBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + shBph.setOrderNum(orderNum + 1); + shBph.setIsSub("2"); + shBph.setIsMany("1"); + shBph.setManyPId(shPBphId); + bphList.add(shBph); + } + } + } else { + // 流程走向意见处理节点 + String bzfgIdSum = json.getString("startUser"); + BusProcessHistory yjclBph = new BusProcessHistory(); + yjclBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjclBph.setUserId(bzfgIdSum); + yjclBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION7.getValue()); + yjclBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjclBph.setOrderNum(orderNum + 1); + yjclBph.setIsSub("2"); + yjclBph.setIsMany("2"); + bphList.add(yjclBph); + + // 退回到了 意见处理,将会签节点 设置为在流程图展示空白 + List taskKeyList = new ArrayList<>(); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION8.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),taskKeyList,null,"0"); + } + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + bphService.insertBatch(bphList); + } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7Before.java index 0208a164..8547cce5 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step7Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -31,5 +32,8 @@ public class Step7Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8After.java index 4271c1cf..ee4e6f96 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8After.java @@ -2,20 +2,29 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ydw.bat.wkflow.business_activiti.service.TaskTodoService; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +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.lang.StringUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; //新征求意见流程!!!!! public class Step8After implements TaskListener { @@ -114,5 +123,91 @@ public class Step8After implements TaskListener { busBean.save(busProcessNewNext); } } + this.addBusProcessHistory(object,delegateTask,nextUserList); + } + + /** + * 添加节点流程历史 + * @param json + * @param delegateTask + * @param sdUserIdList + */ + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask,List sdUserIdList) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + TaskTodoService taskTodoService = SpringContextUtil.getBean(TaskTodoService.class); + boolean existTaskFlag = taskTodoService.whetherExistTaskByTaskDefinitionKey( + delegateTask.getProcessInstanceId(), + delegateTask.getTaskDefinitionKey(), + delegateTask.getId() + ); + // 如果当前审核节点不存在任务了。 + if (!existTaskFlag) { + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION9.getValue()); + List bphList = new ArrayList<>(); + + String bdFlag = (String) delegateTask.getVariable("bdFlag"); + if (StringUtils.equals(bdFlag,"0")) { + // 审定 + if (CollectionUtils.isNotEmpty(sdUserIdList)) { + // 删除之前审定节点的信息。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey,StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + List oldSdBphList = bphService.list(bphQueryWrap); + if (CollectionUtils.isNotEmpty(oldSdBphList)) { + if (oldSdBphList.size() > 1) { + List oldSdBphIdList = oldSdBphList.stream().map(BusProcessHistory::getId).distinct().collect(Collectors.toList()); + bphService.removeByIds(oldSdBphIdList); + } + } + + // 审定节点父节点信息 + BusProcessHistory sdPBph = new BusProcessHistory(); + String sdPBphId = UUID.randomUUID().toString(); + sdPBph.setId(sdPBphId); + sdPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + sdPBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + sdPBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + sdPBph.setOrderNum(orderNum + 1); + sdPBph.setIsSub("2"); + sdPBph.setIsMany("1"); + bphList.add(sdPBph); + + for (String sdUserId : sdUserIdList) { + BusProcessHistory sdBph = new BusProcessHistory(); + sdBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + sdBph.setUserId(sdUserId); + sdBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + sdBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + sdBph.setOrderNum(orderNum + 1); + sdBph.setIsSub("2"); + sdBph.setIsMany("1"); + sdBph.setManyPId(sdPBphId); + bphList.add(sdBph); + } + } + } else { + // 流程走向意见处理节点 + String bzfgIdSum = json.getString("startUser"); + BusProcessHistory yjclBph = new BusProcessHistory(); + yjclBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjclBph.setUserId(bzfgIdSum); + yjclBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION7.getValue()); + yjclBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjclBph.setOrderNum(orderNum + 1); + yjclBph.setIsSub("2"); + yjclBph.setIsMany("2"); + bphList.add(yjclBph); + + // 退回到了 意见处理,将会签、审核节点 设置为在流程图展示空白 + List taskKeyList = new ArrayList<>(); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION8.getValue()); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION9.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),taskKeyList,null,"0"); + } + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + bphService.insertBatch(bphList); + } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8Before.java index 2efc95f7..9c9b76fd 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step8Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -32,5 +33,8 @@ public class Step8Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9After.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9After.java index 81a4896c..acd362a0 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9After.java @@ -2,20 +2,28 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ydw.bat.wkflow.business_activiti.service.TaskTodoService; import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; +import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessHistory; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +import com.ydw.bat.wkflow.util.enums.StandardCommentNewProcessNodeKeyEnum; import io.swagger.models.auth.In; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang.StringUtils; import java.util.ArrayList; import java.util.List; +import java.util.UUID; //新征求意见流程!!!!! public class Step9After implements TaskListener { @@ -110,5 +118,74 @@ public class Step9After implements TaskListener { } } } + this.addBusProcessHistory(object,delegateTask); + } + + /** + * 添加节点流程历史 + * @param json + * @param delegateTask + */ + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + TaskTodoService taskTodoService = SpringContextUtil.getBean(TaskTodoService.class); + boolean existTaskFlag = taskTodoService.whetherExistTaskByTaskDefinitionKey( + delegateTask.getProcessInstanceId(), + delegateTask.getTaskDefinitionKey(), + delegateTask.getId() + ); + // 如果当前审定节点不存在任务了。 + if (!existTaskFlag) { + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + List bphList = new ArrayList<>(); + + String directorFlag = (String) delegateTask.getVariable("directorFlag"); + // 如果是通过,流程走向批准节点 + if (StringUtils.equals(directorFlag,"0")) { + String presidentUser = json.getString("presidentUser"); + + // 如果存在批准节点的数据,taskId为空。 不用添加,否则就是退回过 需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,presidentUser); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey,StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION11.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + // 批准 + BusProcessHistory pzBph = new BusProcessHistory(); + pzBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + pzBph.setUserId(presidentUser); + pzBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION11.getValue()); + pzBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + pzBph.setOrderNum(orderNum + 1); + pzBph.setIsSub("2"); + pzBph.setIsMany("2"); + bphList.add(pzBph); + } + } else { + // 流程走向意见处理节点 + String bzfgIdSum = json.getString("startUser"); + BusProcessHistory yjclBph = new BusProcessHistory(); + yjclBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + yjclBph.setUserId(bzfgIdSum); + yjclBph.setTaskKey(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION7.getValue()); + yjclBph.setFlowType(FlowTypeEnum.BZZQYJLC.getValue()); + yjclBph.setOrderNum(orderNum + 1); + yjclBph.setIsSub("2"); + yjclBph.setIsMany("2"); + bphList.add(yjclBph); + + // 退回到了 意见处理,将会签、审核、审定节点 设置为在流程图展示空白 + List taskKeyList = new ArrayList<>(); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION8.getValue()); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION9.getValue()); + taskKeyList.add(StandardCommentNewProcessNodeKeyEnum.STAND_ASK_FOR_OPINION10.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),taskKeyList,null,"0"); + } + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + bphService.insertBatch(bphList); + } } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9Before.java b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9Before.java index d053a97f..90c7de89 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/StandardCommentNewProcess/Step9Before.java @@ -2,6 +2,7 @@ package com.ydw.bat.wkflow.listener.StandardCommentNewProcess; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; @@ -30,5 +31,8 @@ public class Step9Before implements TaskListener { one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java index 2acfe29b..b7d54618 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantAfter.java @@ -8,6 +8,10 @@ import com.ydw.bat.wkflow.business_main.datas.mapper.EsTechRelationMapper; import com.ydw.bat.wkflow.business_main.datas.service.*; import com.ydw.bat.wkflow.listener.bussLibrary.Utils.FlowFinishEnum; import com.ydw.bat.wkflow.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.BussLibraryNodeKeyEnum; +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 net.sf.json.JSONArray; import net.sf.json.util.JSONTokener; import org.activiti.engine.ActivitiException; @@ -16,13 +20,12 @@ import org.activiti.engine.TaskService; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.task.Task; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.tomcat.util.digester.ArrayStack; import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 发起企标制修订流程后 @@ -44,8 +47,12 @@ public class BLApplicantAfter implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); - + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -191,9 +198,211 @@ public class BLApplicantAfter implements TaskListener{ } } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask){ + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + List bphList = new ArrayList<>(); + + // 起草 + BusProcessHistory qcBph = new BusProcessHistory(); + qcBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qcBph.setUserId(delegateTask.getAssignee()); + qcBph.setTaskId(delegateTask.getId()); + qcBph.setTaskKey(delegateTask.getTaskDefinitionKey()); + qcBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qcBph.setIsSub("2"); + qcBph.setTaskStatus(TaskStatusEnum.DONE.getValue()); + qcBph.setEndTime(new Date()); + qcBph.setCommitText(json.getString("commentText")); + qcBph.setIsMany("2"); + qcBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY1.getOrderNum()); + bphList.add(qcBph); + + List qcUserIdList = Arrays.asList(json.getString("qcUserId").split(",")); + if (CollectionUtils.isNotEmpty(qcUserIdList)) { + // 企标编写节点父节点信息 + BusProcessHistory qbbxPBph = new BusProcessHistory(); + String qbbxPBphId = UUID.randomUUID().toString(); + qbbxPBph.setId(qbbxPBphId); + qbbxPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qbbxPBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY2.getValue()); + qbbxPBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qbbxPBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY2.getOrderNum()); + qbbxPBph.setIsSub("2"); + qbbxPBph.setIsMany("1"); + bphList.add(qbbxPBph); + + for (String qcUserId : qcUserIdList) { + // 企标编写子节点信息 + BusProcessHistory qbbxBph = new BusProcessHistory(); + qbbxBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qbbxBph.setUserId(qcUserId); + qbbxBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY2.getValue()); + qbbxBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qbbxBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY2.getOrderNum()); + qbbxBph.setIsSub("2"); + qbbxBph.setIsMany("1"); + qbbxBph.setManyPId(qbbxPBphId); + bphList.add(qbbxBph); + } + } + + // 企标编写汇总 + String hzUserId = json.getString("hzUserId"); + BusProcessHistory qbbxhzBph = new BusProcessHistory(); + qbbxhzBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qbbxhzBph.setUserId(hzUserId); + qbbxhzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY3.getValue()); + qbbxhzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qbbxhzBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY3.getOrderNum()); + qbbxhzBph.setIsSub("2"); + qbbxhzBph.setIsMany("2"); + bphList.add(qbbxhzBph); + + // 标准化初审 + String bzhUserId = json.getString("bzhUserId"); + BusProcessHistory bzhcsBph = new BusProcessHistory(); + bzhcsBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + bzhcsBph.setUserId(bzhUserId); + bzhcsBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + bzhcsBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + bzhcsBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getOrderNum()); + bzhcsBph.setIsSub("2"); + bzhcsBph.setIsMany("2"); + bphList.add(bzhcsBph); + + // 征求意见 + List hqUserIdList = Arrays.asList(json.getString("hqUserId").split(",")); + if (CollectionUtils.isNotEmpty(hqUserIdList)) { + // 企标编写节点父节点信息 + BusProcessHistory zqyjPBph = new BusProcessHistory(); + String zqyjPBphId = UUID.randomUUID().toString(); + zqyjPBph.setId(zqyjPBphId); + zqyjPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + zqyjPBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getValue()); + zqyjPBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + zqyjPBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getOrderNum()); + zqyjPBph.setIsSub("2"); + zqyjPBph.setIsMany("1"); + bphList.add(zqyjPBph); + + for (String hqUserId : hqUserIdList) { + BusProcessHistory zqyjBph = new BusProcessHistory(); + zqyjBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + zqyjBph.setUserId(hqUserId); + zqyjBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getValue()); + zqyjBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + zqyjBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getOrderNum()); + zqyjBph.setIsSub("2"); + zqyjBph.setIsMany("1"); + zqyjBph.setManyPId(zqyjPBphId); + bphList.add(zqyjBph); + } + } + + // 技术委员会评审、评审意见修改 + String xdUserId = json.getString("xdUserId"); + BusProcessHistory psyjxgBph = new BusProcessHistory(); + psyjxgBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + psyjxgBph.setUserId(xdUserId); + psyjxgBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY6.getValue()); + psyjxgBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + psyjxgBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY6.getOrderNum()); + psyjxgBph.setIsSub("2"); + psyjxgBph.setIsMany("2"); + bphList.add(psyjxgBph); + + // 标准化复审 + String fggcsUserId = json.getString("fggcsUserId"); + BusProcessHistory hzhfsBph = new BusProcessHistory(); + hzhfsBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + hzhfsBph.setUserId(fggcsUserId); + hzhfsBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + hzhfsBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + hzhfsBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getOrderNum()); + hzhfsBph.setIsSub("2"); + hzhfsBph.setIsMany("2"); + bphList.add(hzhfsBph); + + // 起草单位高级经理审核 + String jsfzrUserId = json.getString("jsfzrUserId"); + BusProcessHistory qcdwgjjlshBph = new BusProcessHistory(); + qcdwgjjlshBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qcdwgjjlshBph.setUserId(jsfzrUserId); + qcdwgjjlshBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + qcdwgjjlshBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qcdwgjjlshBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getOrderNum()); + qcdwgjjlshBph.setIsSub("2"); + qcdwgjjlshBph.setIsMany("2"); + bphList.add(qcdwgjjlshBph); + + // 标准法规部高级经理审核 + String bzUserId = json.getString("bzUserId"); + BusProcessHistory bzfgbgjjlshBph = new BusProcessHistory(); + bzfgbgjjlshBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + bzfgbgjjlshBph.setUserId(bzUserId); + bzfgbgjjlshBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + bzfgbgjjlshBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + bzfgbgjjlshBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getOrderNum()); + bzfgbgjjlshBph.setIsSub("2"); + bzfgbgjjlshBph.setIsMany("2"); + bphList.add(bzfgbgjjlshBph); + + // 审定-起草单位中心主任 + String fzrUserId = json.getString("fzrUserId"); + BusProcessHistory sdBph = new BusProcessHistory(); + sdBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + sdBph.setUserId(fzrUserId); + sdBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue()); + sdBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + sdBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getOrderNum()); + sdBph.setIsSub("2"); + sdBph.setIsMany("2"); + bphList.add(sdBph); + + // 批准 + 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); + + // 培训 + String pxUserId = json.getString("pxUserId"); + BusProcessHistory pxBph = new BusProcessHistory(); + pxBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + pxBph.setUserId(pxUserId); + pxBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY12.getValue()); + pxBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + pxBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY12.getOrderNum()); + pxBph.setIsSub("2"); + pxBph.setIsMany("2"); + bphList.add(pxBph); + + // 发布 + String fbUserId = json.getString("fbUserId"); + BusProcessHistory fbBph = new BusProcessHistory(); + fbBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + fbBph.setUserId(fbUserId); + fbBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY13.getValue()); + fbBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + fbBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY13.getOrderNum()); + fbBph.setIsSub("2"); + fbBph.setIsMany("2"); + bphList.add(fbBph); + + bphService.insertBatch(bphList); + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1After.java index eee90be8..7de3fbc5 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1After.java @@ -3,24 +3,23 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; -import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessModelHisService; -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_main.datas.service.*; 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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.tomcat.util.digester.ArrayStack; import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 重新发起企标制修订流程后 @@ -36,7 +35,12 @@ public class BLApplicantC1After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -139,6 +143,46 @@ public class BLApplicantC1After implements TaskListener{ // 生成 模板 // busProcessModelHisService.saveBussTemplateFile(object,delegateTask.getProcessInstanceId()); + + this.addBusProcessHistory(object,delegateTask); + } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + List bphList = new ArrayList<>(); + List qcUserIdList = Arrays.asList(json.getString("qcUserId").split(",")); + if (CollectionUtils.isNotEmpty(qcUserIdList)) { + // 企标编写节点父节点信息 + BusProcessHistory qbbxPBph = new BusProcessHistory(); + String qbbxPBphId = UUID.randomUUID().toString(); + qbbxPBph.setId(qbbxPBphId); + qbbxPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qbbxPBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY2.getValue()); + qbbxPBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY_C1.getValue()); + qbbxPBph.setOrderNum(orderNum + 1); + qbbxPBph.setIsSub("2"); + qbbxPBph.setIsMany("1"); + bphList.add(qbbxPBph); + + for (String qcUserId : qcUserIdList) { + // 企标编写子节点信息 + BusProcessHistory qbbxBph = new BusProcessHistory(); + qbbxBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qbbxBph.setUserId(qcUserId); + qbbxBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY2.getValue()); + qbbxBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qbbxBph.setOrderNum(orderNum + 1); + qbbxBph.setIsSub("2"); + qbbxBph.setIsMany("1"); + qbbxBph.setManyPId(qbbxPBphId); + bphList.add(qbbxBph); + } + + delegateTask.setVariable("qcUserList",qcUserIdList); + } + bphService.insertBatch(bphList); } private String verifyObj(String str){ diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1Before.java index c63e7641..4e5370db 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BLApplicantC1Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -30,10 +33,21 @@ public class BLApplicantC1Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibraryC1?prcType=buss1"); + String link = "bussLibraryC1?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibraryC1&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10After.java index 74da9b56..de4b3219 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10After.java @@ -3,16 +3,21 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; @@ -30,7 +35,12 @@ public class BussLibrary10After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -94,9 +104,79 @@ public class BussLibrary10After implements TaskListener{ }else { throw new ActivitiException("1#2 提交OR驳回参数不存在"); } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + Integer fzrFlag = (Integer) delegateTask.getVariable("fzrFlag"); + if (fzrFlag == 0) { + String zhrUserId = json.getString("zhrUserId"); + // 如果存在 批准 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper 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 busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List 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()); + } + } else if (fzrFlag == 1) { + String cxdUserId = (String) delegateTask.getVariable("cxdUserId"); + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, cxdUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 重新技术委员会评审、评审意见修改 + BusProcessHistory psyjxgBph = new BusProcessHistory(); + psyjxgBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + psyjxgBph.setUserId(cxdUserId); + psyjxgBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + psyjxgBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + psyjxgBph.setIsSub("2"); + psyjxgBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue()); + psyjxgBph.setOrderNum(orderNum + 1); + bphList.add(psyjxgBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size()); + } + + // 退回到了 重新技术委员会评审 标准化复审、起草单位高级经理审核、标准法规部高级经理审核、审定 节点,设置为在流程图展示空白 + List qczhTaskKeyList = new ArrayList<>(); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),qczhTaskKeyList,null,"0"); + + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10Before.java index 485222ab..903114fd 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary10Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -30,10 +33,21 @@ public class BussLibrary10Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary10?prcType=buss1"); + String link = "bussLibrary10?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary10&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11After.java index 904b7fd7..ed3eeb4d 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11After.java @@ -3,16 +3,21 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; @@ -30,7 +35,12 @@ public class BussLibrary11After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -95,9 +105,79 @@ public class BussLibrary11After implements TaskListener{ }else { throw new ActivitiException("1#2 提交OR驳回参数不存在"); } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + Integer zrFlag = (Integer) delegateTask.getVariable("zrFlag"); + if (zrFlag == 0) { + String pxUserId = json.getString("pxUserId"); + // 如果存在 批准 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, pxUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY12.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 培训 + BusProcessHistory pxBph = new BusProcessHistory(); + pxBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + pxBph.setUserId(pxUserId); + pxBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY12.getValue()); + pxBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + pxBph.setIsSub("2"); + pxBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue()); + pxBph.setOrderNum(orderNum + 1); + bphList.add(pxBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size()); + } + } else if (zrFlag == 1) { + String cxdUserId = (String) delegateTask.getVariable("cxdUserId"); + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, cxdUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 重新技术委员会评审、评审意见修改 + BusProcessHistory psyjxgBph = new BusProcessHistory(); + psyjxgBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + psyjxgBph.setUserId(cxdUserId); + psyjxgBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + psyjxgBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + psyjxgBph.setIsSub("2"); + psyjxgBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue()); + psyjxgBph.setOrderNum(orderNum + 1); + bphList.add(psyjxgBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size()); + } + + // 退回到了 重新技术委员会评审 标准化复审、起草单位高级经理审核、标准法规部高级经理审核、审定、批准 节点,设置为在流程图展示空白 + List qczhTaskKeyList = new ArrayList<>(); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),qczhTaskKeyList,null,"0"); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11Before.java index d77caccb..5544b22f 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary11Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -30,10 +33,21 @@ public class BussLibrary11Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary11?prcType=buss1"); + String link = "bussLibrary11?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary11&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12After.java index f93b31f2..a32c78f7 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12After.java @@ -13,6 +13,7 @@ import com.ydw.bat.wkflow.util.SpringContextUtil; import org.activiti.engine.ActivitiException; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; @@ -30,7 +31,12 @@ public class BussLibrary12After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12Before.java index 0670e2b2..7ade3a6b 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary12Before.java @@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -33,10 +36,21 @@ public class BussLibrary12Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary12?prcType=buss1"); + String link = "bussLibrary12?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary12&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13After.java index 097732bc..29a3d2fb 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13After.java @@ -18,6 +18,7 @@ import com.ydw.bat.wkflow.util.SpringContextUtil; import org.activiti.engine.ActivitiException; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -39,7 +40,12 @@ public class BussLibrary13After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13Before.java index a9456f58..54cc05e5 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary13Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -30,10 +33,21 @@ public class BussLibrary13Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary13?prcType=buss1"); + String link = "bussLibrary13?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary13&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2After.java index 858ad26e..5e7d1e2e 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2After.java @@ -4,16 +4,22 @@ import com.alibaba.fastjson.JSONArray; 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.BussLibraryNodeKeyEnum; +import com.ydw.bat.wkflow.util.enums.FlowTypeEnum; +import com.ydw.bat.wkflow.util.enums.StandardCommentNewProcessNodeKeyEnum; import org.activiti.engine.ActivitiException; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -34,8 +40,12 @@ public class BussLibrary2After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); - + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -107,9 +117,41 @@ public class BussLibrary2After implements TaskListener{ busProcessNewNext.setPrcName(prcName); busBean.save(busProcessNewNext); } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String hzUserId = json.getString("hzUserId"); + + // 如果存在企标编写汇总节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,hzUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY3.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 企标编写汇总 + BusProcessHistory qbbxhzBph = new BusProcessHistory(); + qbbxhzBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qbbxhzBph.setUserId(hzUserId); + qbbxhzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY3.getValue()); + qbbxhzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qbbxhzBph.setIsSub("2"); + qbbxhzBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY_C1.getValue()); + qbbxhzBph.setOrderNum(orderNum + 1); + bphList.add(qbbxhzBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java index 9464c443..9848f17a 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary2Before.java @@ -3,12 +3,16 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; +import java.util.Date; import java.util.List; /** @@ -38,8 +42,17 @@ public class BussLibrary2Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary2?prcType=buss1"); + String link = "bussLibrary2?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary2&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } @@ -63,5 +76,8 @@ public class BussLibrary2Before implements TaskListener{ // hisService.saveOrUpdate(modelHis); // } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3After.java index 4ad95eaa..c23ab539 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3After.java @@ -3,16 +3,21 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -32,7 +37,12 @@ public class BussLibrary3After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -95,9 +105,41 @@ public class BussLibrary3After implements TaskListener{ busProcessNewNext.setPrcName(prcName); busBean.save(busProcessNewNext); } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String bzhUserId = json.getString("bzhUserId"); + + // 如果存在标准化初审节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,bzhUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 标准化初审 + BusProcessHistory bzhcsBph = new BusProcessHistory(); + bzhcsBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + bzhcsBph.setUserId(bzhUserId); + bzhcsBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + bzhcsBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + bzhcsBph.setIsSub("2"); + bzhcsBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY3.getValue()); + bzhcsBph.setOrderNum(orderNum + 1); + bphList.add(bzhcsBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3Before.java index 3219f851..265160f5 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary3Before.java @@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -42,8 +45,17 @@ public class BussLibrary3Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary3?prcType=buss1"); + String link = "bussLibrary3?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary3&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); @@ -66,5 +78,8 @@ public class BussLibrary3Before implements TaskListener{ // modelHis.setEditFilePath(fileUrl); // hisService.save(modelHis); } + + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4After.java index 617f8c46..102095f9 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4After.java @@ -3,21 +3,27 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +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; /** * 初审,标准化员审批后 @@ -31,7 +37,12 @@ public class BussLibrary4After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -123,9 +134,95 @@ public class BussLibrary4After implements TaskListener{ }else { throw new ActivitiException("1#2 提交OR驳回参数不存在"); } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + Integer bzhFlag = (Integer) delegateTask.getVariable("bzhFlag"); + if (bzhFlag == 1) { + String hzUserId = json.getString("hzUserId"); + + // 如果存在 重新企标编写汇总 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,hzUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY_C3.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 重新企标编写汇总 + BusProcessHistory cxqbbzhzBph = new BusProcessHistory(); + cxqbbzhzBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + cxqbbzhzBph.setUserId(hzUserId); + cxqbbzhzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C3.getValue()); + cxqbbzhzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + cxqbbzhzBph.setIsSub("2"); + cxqbbzhzBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + cxqbbzhzBph.setOrderNum(orderNum + 1); + + bphList.add(cxqbbzhzBph); + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + + // 将标准化初审节点 设置为白色节点。 + List bzhcsTaskKeyList = new ArrayList<>(); + bzhcsTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),bzhcsTaskKeyList,null,"0"); + } else { + // 征求意见 + List hqUserIdList = Arrays.asList(json.getString("hqUserId").split(",")); + if (CollectionUtils.isNotEmpty(hqUserIdList)) { + List bphList = new ArrayList<>(); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + String zqyjPBphId = UUID.randomUUID().toString(); + for (String userId : hqUserIdList) { + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,userId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + BusProcessHistory zqyjBph = new BusProcessHistory(); + zqyjBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + zqyjBph.setUserId(userId); + zqyjBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getValue()); + zqyjBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + zqyjBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getOrderNum()); + zqyjBph.setIsSub("2"); + zqyjBph.setIsMany("1"); + zqyjBph.setManyPId(zqyjPBphId); + zqyjBph.setOrderNum(orderNum + 1); + bphList.add(zqyjBph); + } + } + + if (CollectionUtils.isNotEmpty(bphList)) { + BusProcessHistory zqyjPBph = new BusProcessHistory(); + zqyjPBph.setId(zqyjPBphId); + zqyjPBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + zqyjPBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getValue()); + zqyjPBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + zqyjPBph.setOrderNum(BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getOrderNum()); + zqyjPBph.setIsSub("2"); + zqyjPBph.setIsMany("1"); + zqyjPBph.setOrderNum(orderNum + 1); + bphList.add(zqyjPBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4Before.java index 78223958..5a09a286 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary4Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -30,10 +33,21 @@ public class BussLibrary4Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary4?prcType=buss1"); + String link = "bussLibrary4?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary4&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5After.java index 33474e0b..916193f1 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5After.java @@ -4,18 +4,15 @@ import com.alibaba.fastjson.JSONArray; 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.BusProcessEvaluationHis; -import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; -import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; -import com.ydw.bat.wkflow.business_main.datas.entity.Datas; -import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEvaluationHisService; -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_main.datas.entity.*; +import com.ydw.bat.wkflow.business_main.datas.service.*; 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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -119,9 +116,41 @@ public class BussLibrary5After implements TaskListener{ busProcessNewNext.setPrcName(prcName); busBean.save(busProcessNewNext); } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String xdUserId = json.getString("xdUserId"); + + // 如果存在 技术委员会评审、评审意见修改 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,xdUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY6.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 技术委员会评审、评审意见修改 + BusProcessHistory psyjxgBph = new BusProcessHistory(); + psyjxgBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + psyjxgBph.setUserId(xdUserId); + psyjxgBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY6.getValue()); + psyjxgBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + psyjxgBph.setIsSub("2"); + psyjxgBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY5.getValue()); + psyjxgBph.setOrderNum(orderNum + 1); + bphList.add(psyjxgBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5Before.java index f8bef01f..c6c45666 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary5Before.java @@ -3,11 +3,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -37,10 +40,21 @@ public class BussLibrary5Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary5?prcType=buss1"); + String link = "bussLibrary5?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary5&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6After.java index f18a6246..2a901163 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6After.java @@ -3,16 +3,21 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; @@ -30,7 +35,12 @@ public class BussLibrary6After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -100,6 +110,7 @@ public class BussLibrary6After implements TaskListener{ busProcessNewNext.setPrcName(prcName); busBean.save(busProcessNewNext); } + this.addBusProcessHistory(object,delegateTask); // 评分存储 BussUtils.evalSave(delegateTask, object, prcName, delegateTask.getAssignee()); } @@ -107,4 +118,35 @@ public class BussLibrary6After implements TaskListener{ private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String fggcsUserId = json.getString("fggcsUserId"); + + // 如果存在 技术委员会评审、评审意见修改 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,fggcsUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 标准化复审 + BusProcessHistory hzhfsBph = new BusProcessHistory(); + hzhfsBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + hzhfsBph.setUserId(fggcsUserId); + hzhfsBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + hzhfsBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + hzhfsBph.setIsSub("2"); + hzhfsBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY6.getValue()); + hzhfsBph.setOrderNum(orderNum + 1); + bphList.add(hzhfsBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6Before.java index c40a1c3f..914450d7 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary6Before.java @@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -43,10 +46,21 @@ public class BussLibrary6Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary5?prcType=buss1"); + String link = "bussLibrary6?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary6&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7After.java index 79b2e41a..9ceba341 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7After.java @@ -4,18 +4,15 @@ import com.alibaba.fastjson.JSONArray; 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.BusProcessEvaluationHis; -import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessName; -import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; -import com.ydw.bat.wkflow.business_main.datas.entity.Datas; -import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessEvaluationHisService; -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_main.datas.entity.*; +import com.ydw.bat.wkflow.business_main.datas.service.*; 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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -38,7 +35,12 @@ public class BussLibrary7After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -118,6 +120,8 @@ public class BussLibrary7After implements TaskListener{ throw new ActivitiException("1#2 提交OR驳回参数不存在"); } + this.addBusProcessHistory(object,delegateTask); + // 存储当前节点意见 // BusProcessNew busProcessNew = new BusProcessNew(); // busProcessNew.setMsgType("clause"); @@ -154,4 +158,69 @@ public class BussLibrary7After implements TaskListener{ private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + Integer fs7Flag = (Integer) delegateTask.getVariable("fs7Flag"); + if (fs7Flag == 0) { + String jsfzrUserId = json.getString("jsfzrUserId"); + // 如果存在 起草单位高级经理审核 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,jsfzrUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 起草单位高级经理审核 + BusProcessHistory qcdwgjjlshBph = new BusProcessHistory(); + qcdwgjjlshBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + qcdwgjjlshBph.setUserId(jsfzrUserId); + qcdwgjjlshBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + qcdwgjjlshBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + qcdwgjjlshBph.setIsSub("2"); + qcdwgjjlshBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + qcdwgjjlshBph.setOrderNum(orderNum + 1); + bphList.add(qcdwgjjlshBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + }else { + String cxdUserId = (String) delegateTask.getVariable("cxdUserId"); + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,cxdUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 重新技术委员会评审、评审意见修改 + BusProcessHistory psyjxgBph = new BusProcessHistory(); + psyjxgBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + psyjxgBph.setUserId(cxdUserId); + psyjxgBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + psyjxgBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + psyjxgBph.setIsSub("2"); + psyjxgBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + psyjxgBph.setOrderNum(orderNum + 1); + bphList.add(psyjxgBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + + // 将 标准化复审 节点 设置为白色节点。 + List bzhfsTaskKeyList = new ArrayList<>(); + bzhfsTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),bzhfsTaskKeyList,null,"0"); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7Before.java index 2e79abb1..087492aa 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary7Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -31,9 +34,23 @@ public class BussLibrary7Before implements TaskListener{ busBean.saveOrUpdate(one1); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary7?prcType=buss1"); + String link = "bussLibrary7?prcType=buss1"; + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); + // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary7&oldAndNew=new"; + one1.setLink(link); + } else { + one1.setLink(link); + } one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8After.java index 003e3f53..e402ab9b 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8After.java @@ -3,16 +3,21 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; @@ -30,7 +35,12 @@ public class BussLibrary8After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -95,9 +105,77 @@ public class BussLibrary8After implements TaskListener{ }else { throw new ActivitiException("1#2 提交OR驳回参数不存在"); } + + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + Integer jsfzrFlag = (Integer) delegateTask.getVariable("jsfzrFlag"); + if (jsfzrFlag == 0) { + String bzUserId = json.getString("bzUserId"); + // 如果存在 标准法规部高级经理审核 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,bzUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 标准法规部高级经理审核 + BusProcessHistory bzfgbgjjlshBph = new BusProcessHistory(); + bzfgbgjjlshBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + bzfgbgjjlshBph.setUserId(bzUserId); + bzfgbgjjlshBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + bzfgbgjjlshBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + bzfgbgjjlshBph.setIsSub("2"); + bzfgbgjjlshBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + bzfgbgjjlshBph.setOrderNum(orderNum + 1); + bphList.add(bzfgbgjjlshBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + }else { + String cxdUserId = (String) delegateTask.getVariable("cxdUserId"); + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,cxdUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 重新技术委员会评审、评审意见修改 + BusProcessHistory psyjxgBph = new BusProcessHistory(); + psyjxgBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + psyjxgBph.setUserId(cxdUserId); + psyjxgBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + psyjxgBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + psyjxgBph.setIsSub("2"); + psyjxgBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + psyjxgBph.setOrderNum(orderNum + 1); + bphList.add(psyjxgBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + + // 将 标准化复审、起草单位高级经理审核 节点 设置为白色节点。 + List bzhfsTaskKeyList = new ArrayList<>(); + bzhfsTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + bzhfsTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),bzhfsTaskKeyList,null,"0"); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8Before.java index 9a7e845c..01141078 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary8Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -30,10 +33,21 @@ public class BussLibrary8Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary8?prcType=buss1"); + String link = "bussLibrary8?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary8&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9After.java index 503b9519..64ac7505 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9After.java @@ -3,16 +3,21 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.util.ArrayList; @@ -30,7 +35,12 @@ public class BussLibrary9After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject object = JSONObject.parseObject(datas.getFormValsJson()); delegateTask.setVariable("objectJson",object); @@ -149,9 +159,111 @@ public class BussLibrary9After implements TaskListener{ }else { throw new ActivitiException("1#2 提交OR驳回参数不存在"); } + this.addBusProcessHistory(object,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + + Integer bzFlag = (Integer) delegateTask.getVariable("bzFlag"); + if (bzFlag == 0) { + String fzrUserId = json.getString("fzrUserId"); + // 如果存在 审定-起草单位中心主任 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, fzrUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 审定-起草单位中心主任 + BusProcessHistory sdBph = new BusProcessHistory(); + sdBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + sdBph.setUserId(fzrUserId); + sdBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue()); + sdBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + sdBph.setIsSub("2"); + sdBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + sdBph.setOrderNum(orderNum + 1); + bphList.add(sdBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size()); + } + } else if (bzFlag == 1) { + // 用户退回时 选择了其他问题 + String cxdUserId = (String) delegateTask.getVariable("cxdUserId"); + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, cxdUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 重新技术委员会评审、评审意见修改 + BusProcessHistory psyjxgBph = new BusProcessHistory(); + psyjxgBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + psyjxgBph.setUserId(cxdUserId); + psyjxgBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + psyjxgBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + psyjxgBph.setIsSub("2"); + psyjxgBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + psyjxgBph.setOrderNum(orderNum + 1); + bphList.add(psyjxgBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size()); + } + + // 退回到了 重新技术委员会评审 标准化复审、起草单位高级经理审核、标准法规部高级经理审核 节点,设置为在流程图展示空白 + List qczhTaskKeyList = new ArrayList<>(); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),qczhTaskKeyList,null,"0"); + } else if (bzFlag == 2) { + // 用户退回时 选择了质量问题 + String cfqUserId = (String) delegateTask.getVariable("cfqUserId"); + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId, delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId, cfqUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY_C1.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 重新起草 + BusProcessHistory cxqcBph = new BusProcessHistory(); + cxqcBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + cxqcBph.setUserId(cfqUserId); + cxqcBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C1.getValue()); + cxqcBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + cxqcBph.setIsSub("2"); + cxqcBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(), BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); + cxqcBph.setOrderNum(orderNum + 1); + bphList.add(cxqcBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(), orderNum + 1, bphList.size()); + } + + // 退回到了重新起草节点,需要将除了起草、重新起草其他的节点,全部设置为 流程图中展示空。 + List qczhTaskKeyList = new ArrayList<>(); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY1.getValue()); + qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY_C1.getValue()); + bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),null,qczhTaskKeyList,"0"); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9Before.java index 216f04f5..fa6754be 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibrary9Before.java @@ -2,11 +2,14 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; import java.util.List; @@ -30,10 +33,21 @@ public class BussLibrary9Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibrary9?prcType=buss1"); + String link = "bussLibrary9?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibrary9&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3After.java index 68519ec6..1e4ba19e 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3After.java @@ -3,16 +3,21 @@ 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -32,7 +37,12 @@ public class BussLibraryC3After implements TaskListener { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject objectNew = JSONObject.parseObject(datas.getFormValsJson()); // delegateTask.setVariable("objectJson",object); @@ -100,9 +110,43 @@ public class BussLibraryC3After implements TaskListener { busProcessNewNext.setPrcName(prcName); busBean.save(busProcessNewNext); } + + this.addBusProcessHistory(objectNew,delegateTask); } private String verifyObj(String str) { return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String bzhUserId = json.getString("bzhUserId"); + + // 如果存在标准化初审节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,bzhUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 标准化初审 + BusProcessHistory pzBph = new BusProcessHistory(); + pzBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + pzBph.setUserId(bzhUserId); + pzBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); + pzBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + pzBph.setIsSub("2"); + pzBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY_C3.getValue()); + pzBph.setOrderNum(orderNum + 1); + + bphList.add(pzBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3Before.java index b08d134d..383c45b9 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC3Before.java @@ -2,12 +2,17 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.BussLibraryNodeKeyEnum; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; +import java.util.ArrayList; import java.util.List; /** @@ -30,10 +35,26 @@ public class BussLibraryC3Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibraryC3?prcType=buss1"); + String link = "bussLibraryC3?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibraryC3&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); + +// // 标准化初审节点,设置为在流程图展示空白 +// List qczhTaskKeyList = new ArrayList<>(); +// qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY4.getValue()); +// bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),qczhTaskKeyList,null,"0"); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6After.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6After.java index c29e14cb..faf0fca4 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6After.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6After.java @@ -2,16 +2,21 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.alibaba.fastjson.JSONObject; 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; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.Datas; +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.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.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import java.text.SimpleDateFormat; @@ -31,7 +36,12 @@ public class BussLibraryC6After implements TaskListener{ QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ACTI_TASK_ID", delegateTask.getId()); - Datas datas = datasService.getOne(queryWrapper); + queryWrapper.orderByDesc("CREATE_TIME"); + List datasList = datasService.list(queryWrapper); + if (CollectionUtils.isEmpty(datasList)) { + throw new ActivitiException("t_datas表中ACTI_TASK_ID为"+delegateTask.getId()+"的数据不存在"); + } + Datas datas = datasList.get(0); JSONObject objectNew = JSONObject.parseObject(datas.getFormValsJson()); // delegateTask.setVariable("objectJson",object); @@ -108,9 +118,42 @@ public class BussLibraryC6After implements TaskListener{ BussUtils.evalSave(delegateTask, objectNew, prcName, delegateTask.getAssignee()); } } + + this.addBusProcessHistory(objectNew,delegateTask); } private String verifyObj(String str){ return (str == null || str.equals("")) ? "" : str; } + + public void addBusProcessHistory(JSONObject json,DelegateTask delegateTask) { + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + String fggcsUserId = json.getString("fggcsUserId"); + + // 如果存在 技术委员会评审、评审意见修改 节点的数据,taskId为空。 不用添加,否则需要添加。 + QueryWrapper bphQueryWrap = new QueryWrapper<>(); + bphQueryWrap.lambda().eq(BusProcessHistory::getActiProcInstId,delegateTask.getProcessInstanceId()); + bphQueryWrap.lambda().eq(BusProcessHistory::getUserId,fggcsUserId); + bphQueryWrap.lambda().eq(BusProcessHistory::getTaskKey, BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + bphQueryWrap.lambda().isNull(BusProcessHistory::getTaskId); + + List busProcessHistoryList = bphService.list(bphQueryWrap); + if (CollectionUtils.isEmpty(busProcessHistoryList)) { + List bphList = new ArrayList<>(); + // 标准化复审 + BusProcessHistory hzhfsBph = new BusProcessHistory(); + hzhfsBph.setActiProcInstId(delegateTask.getProcessInstanceId()); + hzhfsBph.setUserId(fggcsUserId); + hzhfsBph.setTaskKey(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); + hzhfsBph.setFlowType(FlowTypeEnum.QBZXD_JSBZ.getValue()); + hzhfsBph.setIsSub("2"); + hzhfsBph.setIsMany("2"); + int orderNum = bphService.getMaxOrderNum(delegateTask.getProcessInstanceId(),BussLibraryNodeKeyEnum.BUSS_LIBRARY_C6.getValue()); + hzhfsBph.setOrderNum(orderNum + 1); + bphList.add(hzhfsBph); + + bphService.insertBatch(bphList); + bphService.updateOrderNum(delegateTask.getProcessInstanceId(),orderNum + 1,bphList.size()); + } + } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6Before.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6Before.java index 9a1966ec..154d2501 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6Before.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussLibraryC6Before.java @@ -2,12 +2,17 @@ package com.ydw.bat.wkflow.listener.bussLibrary; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; +import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessHistoryService; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; import com.ydw.bat.wkflow.util.SpringContextUtil; +import com.ydw.bat.wkflow.util.enums.BussLibraryNodeKeyEnum; +import org.activiti.engine.ProcessEngine; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.history.HistoricProcessInstance; +import java.util.ArrayList; import java.util.List; /** @@ -30,10 +35,30 @@ public class BussLibraryC6Before implements TaskListener{ one1.setTaskInfo(delegateTask.getName()); busBean.saveOrUpdate(one1); + ProcessEngine processEngine = SpringContextUtil.getBean(ProcessEngine.class); + HistoricProcessInstance pi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service + .createHistoricProcessInstanceQuery()//创建历史流程实例查询 + .processInstanceId(delegateTask.getProcessInstanceId())//使用流程实例ID查询 + .singleResult(); // 发送 oa 待办 设置 跳转页面 router ? 后面流程类型 - one1.setLink("bussLibraryC6?prcType=buss1"); + String link = "bussLibraryC6?prcType=buss1"; + if (pi != null && pi.getStartTime().after(BussUtils.oldAndNew)) { + link = link + "&taskDefinitionKey=bussLibraryC6&oldAndNew=new"; + } + one1.setLink(link); one1.setTaskInfo(delegateTask.getName()); oaService.sendTodoMq(one1); } + IBusProcessHistoryService bphService = SpringContextUtil.getBean(IBusProcessHistoryService.class); + bphService.updateTaskInfo(delegateTask); +// +// // 标准化复审节点,设置为在流程图展示空白 +// List qczhTaskKeyList = new ArrayList<>(); +// qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY7.getValue()); +// qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY8.getValue()); +// qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY9.getValue()); +// qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY10.getValue()); +// qczhTaskKeyList.add(BussLibraryNodeKeyEnum.BUSS_LIBRARY11.getValue()); +// bphService.updateImgShowColor(delegateTask.getProcessInstanceId(),qczhTaskKeyList,null,"0"); } } diff --git a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussUtils.java b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussUtils.java index aec9bcad..7b268c6c 100644 --- a/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussUtils.java +++ b/src/main/java/com/ydw/bat/wkflow/listener/bussLibrary/BussUtils.java @@ -24,6 +24,9 @@ import java.util.List; */ public class BussUtils { + // 初始化一个时间,用于判断数据是否为新数据,2024-04-01 00:00:00后的数据为新数据 + public static final Date oldAndNew = new Date(1711900800000L); + public static void evalSave(DelegateTask delegateTask, JSONObject object, String prcName, String localUser) { SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); IBusProcessEvaluationHisService evaluationHisService = SpringContextUtil.getBean(IBusProcessEvaluationHisService.class); 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 new file mode 100644 index 00000000..98080407 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/BussLibraryNodeKeyEnum.java @@ -0,0 +1,73 @@ +package com.ydw.bat.wkflow.util.enums; + +import org.apache.commons.lang.StringUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; + +/** + * 企标制修订-技术标准-任务节点定义key + */ +public enum BussLibraryNodeKeyEnum { + BUSS_LIBRARY1("BussLibrary1","起草",1,true), + BUSS_LIBRARY2("BussLibrary2","企标编写",2,true), + BUSS_LIBRARY3("BussLibrary3","企标编写汇总",3,true), + BUSS_LIBRARY4("BussLibrary4","标准化初审",4,true), + BUSS_LIBRARY_C3("BussLibraryC3","重新企标编写汇总",5,false), + BUSS_LIBRARY5("BussLibrary5","征求意见",6,true), + BUSS_LIBRARY6("BussLibrary6","技术委员会评审、评审意见修改",7,true), + BUSS_LIBRARY7("BussLibrary7","标准化复审",8,true), + BUSS_LIBRARY_C6("BussLibraryC6","重新技术委员会评审、评审意见修改",9,false), + BUSS_LIBRARY8("BussLibrary8","起草单位高级经理审核",10,true), + BUSS_LIBRARY9("BussLibrary9","标准法规部高级经理审核",11,true), + BUSS_LIBRARY_C1("BussLibraryC1","重新起草",12,false), + BUSS_LIBRARY10("BussLibrary10","审定",13,true), + BUSS_LIBRARY11("BussLibrary11","批准",14,true), + BUSS_LIBRARY12("BussLibrary12","主起草人培训",15,true), + BUSS_LIBRARY13("BussLibrary13","发布",16,true), + ; + + private String value; + private String lable; + private Integer orderNum; + private boolean showFlag; // 节点是否展示,true展示,false + + private BussLibraryNodeKeyEnum(String value, String lable, Integer orderNum,boolean showFlag) { + this.value = value; + this.lable = lable; + this.orderNum = orderNum; + this.showFlag = showFlag; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + public Integer getOrderNum() { + return orderNum; + } + + public static String getLableByValue(String value){ + String result = ""; + for (BussLibraryNodeKeyEnum nodeKeyEnum : BussLibraryNodeKeyEnum.values()) { + if (StringUtils.equals(nodeKeyEnum.getValue(),value)) { + result = nodeKeyEnum.getLable(); + break; + } + } + return result; + } + + public static List getBussLibraryNodeKeyEnum(){ + List results = new ArrayList<>(); + for (BussLibraryNodeKeyEnum nodeKeyEnum : BussLibraryNodeKeyEnum.values()) { + if (nodeKeyEnum.showFlag) { + results.add(nodeKeyEnum); + } + } + return results; + } +} 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 12727645..c0a1a0fb 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,9 +1,13 @@ package com.ydw.bat.wkflow.util.enums; +import org.apache.commons.lang.StringUtils; + /** * 流程类型枚举类 */ public enum FlowTypeEnum { + BZZQYJLC("3","标准征求意见流程",""), + QBZXD_JSBZ("buss1","企标制修订-技术标准",""), ZCZQYJLC("33","政策征求意见流程","policyConsultation"), ZCHGXXMSCLC("34","重点认证标准/政策合规性项目审查流程","policyComplianceReview"), ; @@ -27,4 +31,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 new file mode 100644 index 00000000..9c47b64f --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/StandardCommentNewProcessNodeKeyEnum.java @@ -0,0 +1,68 @@ +package com.ydw.bat.wkflow.util.enums; + +import org.apache.commons.lang.StringUtils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 标准征求意见流程-任务节点定义key + */ +public enum StandardCommentNewProcessNodeKeyEnum { + STAND_ASK_FOR_OPINION1("StandAskForOpinion1","起草",0,true), + // SUB_PROCESS("subProcess","子流程",1), + STAND_ASK_FOR_OPINION2("StandAskForOpinion2","任务分发",2,true), + STAND_ASK_FOR_OPINION3("StandAskForOpinion3","意见反馈",3,true), + STAND_ASK_FOR_OPINION4("StandAskForOpinion4","意见汇总审批",4,true), + STAND_ASK_FOR_OPINION5("StandAskForOpinion5","意见审批",5,true), + STAND_ASK_FOR_OPINION6("StandAskForOpinion6","管理员",6,true), + STAND_ASK_FOR_OPINION7("StandAskForOpinion7","意见处理",7,true), + STAND_ASK_FOR_OPINION8("StandAskForOpinion8","会签",8,true), + STAND_ASK_FOR_OPINION9("StandAskForOpinion9","审核",9,true), + STAND_ASK_FOR_OPINION10("StandAskForOpinion10","审定",10,true), + STAND_ASK_FOR_OPINION11("StandAskForOpinion11","批准",11,true), + ; + + private String value; + private String lable; + private Integer orderNum; + private boolean showFlag; + + private StandardCommentNewProcessNodeKeyEnum(String value, String lable,Integer orderNum,boolean showFlag) { + this.value = value; + this.lable = lable; + this.orderNum = orderNum; + this.showFlag = showFlag; + } + public String getValue() { + return value; + } + public String getLable() { + return lable; + } + 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; + } + + public static List getStandardCommentNewProcessNodeKeyEnum(){ + List results = new ArrayList<>(); + for (StandardCommentNewProcessNodeKeyEnum nodeKeyEnum : StandardCommentNewProcessNodeKeyEnum.values()) { + if (nodeKeyEnum.showFlag) { + results.add(nodeKeyEnum); + } + } + return results; + } +} 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 new file mode 100644 index 00000000..a085cee7 --- /dev/null +++ b/src/main/java/com/ydw/bat/wkflow/util/enums/TaskStatusEnum.java @@ -0,0 +1,49 @@ +package com.ydw.bat.wkflow.util.enums; + +import org.apache.commons.lang.StringUtils; + +/** + * 任务状态枚举类 + */ +public enum TaskStatusEnum { + + TODO("未完成","todo"), // 待办 + RECEIVED("已接收","received"), // 已接收 + DONE("已完成","done"), // 已办 + ; + + TaskStatusEnum(String label, String value) { + this.label = label; + this.value = value; + } + + String label; + String value; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + 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; + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 15ea9869..fd3e0323 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -36,7 +36,7 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://121.36.69.172:3307/foton-bat-wkflow-test?nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai&useSSL=false&characterEncoding=utf-8 + url: jdbc:mysql://39.98.140.126:3306/foton-bat-wkflow?nullCatalogMeansCurrent=true&serverTimezone=Asia/Shanghai&useSSL=false&characterEncoding=utf-8 username: root password: hzwlsoft.com initialSize: 5 @@ -74,10 +74,10 @@ spring: active: dev # 相关服务配置同业务系统 rabbitmq: - host: 121.36.69.172 + host: 39.98.140.126 port: 5672 - username: admin - password: hzwlsoft.com + username: guest + password: guest listener: direct: # 默认加载 发版 需改为 true @@ -146,4 +146,4 @@ buss: down: file: path: https://srms.foton.com.cn/file/ -# path: http://foton.natapp1.cc/file/ \ No newline at end of file +# path: http://foton.natapp1.cc/file/ diff --git a/src/main/resources/mapper/datas/BusProcessHistoryMapper.xml b/src/main/resources/mapper/datas/BusProcessHistoryMapper.xml new file mode 100644 index 00000000..7b6ffd93 --- /dev/null +++ b/src/main/resources/mapper/datas/BusProcessHistoryMapper.xml @@ -0,0 +1,5 @@ + + + + +