|
@@ -1,26 +1,39 @@
|
|
|
package com.platform.service.workflow.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.platform.common.bean.AbstractPageResultBean;
|
|
|
+import com.platform.common.constant.CommonConstants;
|
|
|
+import com.platform.common.exception.DeniedException;
|
|
|
import com.platform.common.util.BeanConverterUtil;
|
|
|
+import com.platform.common.util.BigDecimalUtil;
|
|
|
import com.platform.common.util.ListUtils;
|
|
|
import com.platform.common.util.SecurityUtils;
|
|
|
import com.platform.dao.bean.MyPage;
|
|
|
+import com.platform.dao.dto.workflow.WorkflowNodeDTO;
|
|
|
import com.platform.dao.dto.workflow.WorkflowTaskBomDTO;
|
|
|
+import com.platform.dao.entity.workflow.WorkflowNode;
|
|
|
+import com.platform.dao.entity.workflow.WorkflowTask;
|
|
|
import com.platform.dao.entity.workflow.WorkflowTaskBom;
|
|
|
import com.platform.dao.enums.FlowTaskStatusEnum;
|
|
|
import com.platform.dao.enums.YesNoEnum;
|
|
|
+import com.platform.dao.mapper.workflow.WorkflowNodeMapper;
|
|
|
import com.platform.dao.mapper.workflow.WorkflowTaskBomMapper;
|
|
|
+import com.platform.dao.mapper.workflow.WorkflowTaskMapper;
|
|
|
+import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
|
|
|
import com.platform.dao.vo.query.workflow.WorkflowTaskBomVO;
|
|
|
import com.platform.service.base.impl.BaseServiceImpl;
|
|
|
import com.platform.service.workflow.WorkflowTaskBomService;
|
|
|
import com.platform.service.workflow.viewStrategy.BomViewStrategy;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import tk.mybatis.mapper.weekend.Weekend;
|
|
|
import tk.mybatis.mapper.weekend.WeekendCriteria;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -34,6 +47,10 @@ import java.util.List;
|
|
|
public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomMapper, WorkflowTaskBom, WorkflowTaskBomDTO> implements WorkflowTaskBomService {
|
|
|
@Resource
|
|
|
private List<BomViewStrategy> bomViewStrategyList; // 查看实现类
|
|
|
+ @Resource
|
|
|
+ private WorkflowTaskMapper workflowTaskMapper;
|
|
|
+ @Autowired
|
|
|
+ private WorkflowNodeMapper workflowNodeMapper;
|
|
|
|
|
|
@Override
|
|
|
public int batchDelete(List<String> ids) {
|
|
@@ -54,9 +71,9 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
|
|
|
public MyPage<WorkflowTaskBomVO> selectWorkPlacePageList(WorkflowTaskBomDTO record, int pageNum, int pageSize) {
|
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
|
record.setCreatedUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
- if(record.getSearchType() != null){
|
|
|
+ if (record.getSearchType() != null) {
|
|
|
List<Integer> statusList = ListUtils.newArrayList();
|
|
|
- switch (record.getSearchType()){
|
|
|
+ switch (record.getSearchType()) {
|
|
|
case 1: // 待发事项
|
|
|
statusList.add(FlowTaskStatusEnum.APPLY.getValue());
|
|
|
statusList.add(FlowTaskStatusEnum.BACK.getValue());
|
|
@@ -72,7 +89,7 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
|
|
|
public WorkflowTaskBomVO getVOById(String id) {
|
|
|
WorkflowTaskBomVO vo = BeanConverterUtil.copyObjectProperties(mapper.selectByPrimaryKey(id), WorkflowTaskBomVO.class);
|
|
|
String userId = SecurityUtils.getUserInfo().getUserId();
|
|
|
- if(userId.equals(vo.getCreatedUserId())){
|
|
|
+ if (userId.equals(vo.getCreatedUserId())) {
|
|
|
WorkflowTaskBom bom = new WorkflowTaskBom();
|
|
|
bom.setId(id);
|
|
|
bom.setReadFlag(YesNoEnum.YES.getValue());
|
|
@@ -82,6 +99,82 @@ public class WorkflowTaskBomServiceImpl extends BaseServiceImpl<WorkflowTaskBomM
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void publishTask(String id) {
|
|
|
+ WorkflowTaskBom bom = mapper.selectByPrimaryKey(id);
|
|
|
+ WorkflowTask task = workflowTaskMapper.selectByPrimaryKey(bom.getTaskId());
|
|
|
+ // 校验是否处于待发起的状态,bom.status=0 & task.status = 3、5、6
|
|
|
+ if (bom.getStatus().intValue() != YesNoEnum.NO.getValue()) {
|
|
|
+ throw new DeniedException("待办事项状态有误,请检查");
|
|
|
+ }
|
|
|
+ int taskStatus = task.getStatus();
|
|
|
+ if (taskStatus != FlowTaskStatusEnum.APPLY.getValue() ||
|
|
|
+ taskStatus != FlowTaskStatusEnum.BACK.getValue()
|
|
|
+ || taskStatus != FlowTaskStatusEnum.CANCEL.getValue()) {
|
|
|
+ throw new DeniedException("待办事项任务状态有误,请检查");
|
|
|
+ }
|
|
|
+ // 生成新的taskBom
|
|
|
+ int currentLevel = task.getNodeSort();
|
|
|
+ currentLevel++;
|
|
|
+ // 获取flowNode
|
|
|
+ WorkflowNodeDTO node = new WorkflowNodeDTO();
|
|
|
+ node.setFlowId(task.getFlowId());
|
|
|
+ node.setNodeLevel(currentLevel);
|
|
|
+ node.setFrontParentId(task.getFrontId());
|
|
|
+ List<WorkflowNodeVO> nodeList = workflowNodeMapper.selectNodeList(node);
|
|
|
+ if (CollectionUtils.isEmpty(nodeList)) {
|
|
|
+ throw new DeniedException("流程配置有误,发起人没有子节点,请检查");
|
|
|
+ }
|
|
|
+ WorkflowTask updTask = new WorkflowTask();
|
|
|
+ updTask.setId(bom.getTaskId());
|
|
|
+ updTask.setFlowId(task.getFlowId());
|
|
|
+ WorkflowTaskBom updBom = new WorkflowTaskBom();
|
|
|
+ updBom.setId(id);
|
|
|
+ generateTaskBom(nodeList,updTask,updBom);
|
|
|
+ // 修改已有taskBom
|
|
|
+
|
|
|
+ // 修改Task
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private WorkflowTaskBom generateTaskBom(List<WorkflowNodeVO> nodeList,WorkflowTask updTask,WorkflowTaskBom updBom) {
|
|
|
+ WorkflowTaskBom bom = null;
|
|
|
+ if (nodeList.size() == 1) {
|
|
|
+ WorkflowNodeVO node = nodeList.get(0);
|
|
|
+ switch (node.getType()) {
|
|
|
+ case CommonConstants.CONDITION_TYPE: // 条件分支
|
|
|
+ break;
|
|
|
+ case CommonConstants.VERIFY_USER_TYPE:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (WorkflowNodeVO node : nodeList) {
|
|
|
+ switch (node.getType()) {
|
|
|
+ case CommonConstants.CONDITION_TYPE:
|
|
|
+ break;
|
|
|
+ case CommonConstants.VERIFY_USER_TYPE:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return bom;
|
|
|
+ }
|
|
|
+
|
|
|
+ private WorkflowTaskBom generateTaskBom(WorkflowNodeVO node,WorkflowTask updTask,WorkflowTaskBom updBom){
|
|
|
+ WorkflowTaskBom bom = null;
|
|
|
+ switch (node.getType()) {
|
|
|
+ case CommonConstants.CONDITION_TYPE: // 条件分支
|
|
|
+ JSONObject switchJson = JSONObject.parseObject(node.getSwitchJson());
|
|
|
+ int symbol = switchJson.getInteger("symbol"); // 比较符号
|
|
|
+ BigDecimal val = BigDecimalUtil.valueNull(switchJson.getString("value")); // 比较值
|
|
|
+ // 获取分支
|
|
|
+ break;
|
|
|
+ case CommonConstants.VERIFY_USER_TYPE: // 审核人处理
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return bom;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public AbstractPageResultBean<WorkflowTaskBom> selectPageInfo(WorkflowTaskBomDTO record, int pageNum, int pageSize) {
|
|
|
PageHelper.startPage(pageNum, pageSize);
|