|
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.platform.common.constant.CommonConstants;
|
|
|
import com.platform.common.exception.DeniedException;
|
|
|
import com.platform.common.util.*;
|
|
|
+import com.platform.dao.dto.upms.SysUserDTO;
|
|
|
import com.platform.dao.dto.workflow.WorkflowNodeDTO;
|
|
|
import com.platform.dao.dto.workflow.WorkflowTaskRecordDTO;
|
|
|
import com.platform.dao.entity.custom.CustomClassName;
|
|
@@ -15,12 +16,15 @@ import com.platform.dao.enums.TaskRecordStatusEnum;
|
|
|
import com.platform.dao.enums.YesNoEnum;
|
|
|
import com.platform.dao.mapper.custom.CustomClassNameMapper;
|
|
|
import com.platform.dao.mapper.custom.CustomFormDataMapper;
|
|
|
+import com.platform.dao.mapper.upms.SysUserMapper;
|
|
|
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.SysUserVO;
|
|
|
import com.platform.dao.vo.query.workflow.WorkflowNodeVO;
|
|
|
import com.platform.service.workflow.verifyStrategy.AbstractBaseStrategy;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -48,6 +52,8 @@ public class VerifyPublishStrategy extends AbstractBaseStrategy {
|
|
|
private WorkflowTaskBomMapper workflowTaskBomMapper;
|
|
|
@Resource
|
|
|
private WorkflowTaskMapper workflowTaskMapper;
|
|
|
+ @Resource
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
|
|
|
@Override
|
|
|
public Integer getType() {
|
|
@@ -64,7 +70,9 @@ public class VerifyPublishStrategy extends AbstractBaseStrategy {
|
|
|
updBom.setId(record.getTaskBomId());
|
|
|
updBom.setHandleRemark(record.getHandleRemark());
|
|
|
// 生成taskBom
|
|
|
- generateTaskBom(nodeList, updTask, updBom, customFormDataMapper.selectByPrimaryKey(record.getFormDataId()));
|
|
|
+ if(!generateTaskBom(nodeList, updTask, updBom, customFormDataMapper.selectByPrimaryKey(record.getFormDataId()))){
|
|
|
+ throw new DeniedException("任务发送失败");
|
|
|
+ }
|
|
|
// 存储记录
|
|
|
saveTaskRecord(record);
|
|
|
}
|
|
@@ -74,33 +82,19 @@ public class VerifyPublishStrategy extends AbstractBaseStrategy {
|
|
|
super.saveTaskRecord(record);
|
|
|
}
|
|
|
|
|
|
- private void finishTask(WorkflowTaskBom updBom, WorkflowTask updTask) {
|
|
|
- updBom.setStatus(YesNoEnum.YES.getValue());
|
|
|
- updBom.setHandleTime(LocalDateTime.now());
|
|
|
- // 修改老节点
|
|
|
- workflowTaskBomMapper.updateByPrimaryKeySelective(updBom);
|
|
|
- // 修改任务
|
|
|
- updTask.setStatus(FlowTaskStatusEnum.FINISH.getValue());
|
|
|
- updTask.setLastTime(LocalDateTime.now());
|
|
|
- updTask.setLastUserName(SecurityUtils.getUserInfo().getRealName());
|
|
|
- updTask.setLastUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
- updTask.setRemark("已结束");
|
|
|
- workflowTaskMapper.updateByPrimaryKeySelective(updTask);
|
|
|
- }
|
|
|
-
|
|
|
- private WorkflowTaskBom generateTaskBom(List<WorkflowNodeVO> nodeList, WorkflowTask updTask, WorkflowTaskBom updBom, CustomFormData data) {
|
|
|
- WorkflowTaskBom bom = null;
|
|
|
+ private boolean generateTaskBom(List<WorkflowNodeVO> nodeList, WorkflowTask updTask, WorkflowTaskBom updBom, CustomFormData data) {
|
|
|
+ boolean generateFlag = Boolean.FALSE;
|
|
|
for (WorkflowNodeVO nodeVO : nodeList) {
|
|
|
- bom = generateTaskBom(nodeVO, updTask, updBom, data);
|
|
|
- if (bom != null) {
|
|
|
+ if (generateTaskBom(nodeVO, updTask, updBom, data)) {
|
|
|
+ generateFlag = Boolean.TRUE;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- return bom;
|
|
|
+ return generateFlag;
|
|
|
}
|
|
|
|
|
|
- private WorkflowTaskBom generateTaskBom(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom, CustomFormData data) {
|
|
|
- WorkflowTaskBom bom = null;
|
|
|
+ private boolean generateTaskBom(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom, CustomFormData data) {
|
|
|
+ boolean generateFlag = Boolean.FALSE;
|
|
|
switch (node.getType()) {
|
|
|
case CommonConstants.CONDITION_TYPE: // 条件分支
|
|
|
JSONObject switchJson = JSONObject.parseObject(node.getSwitchJson());
|
|
@@ -142,17 +136,40 @@ public class VerifyPublishStrategy extends AbstractBaseStrategy {
|
|
|
nextNode.setFlowId(data.getFlowId());
|
|
|
nextNode.setFrontParentId(node.getFrontId());
|
|
|
List<WorkflowNodeVO> nodeList = workflowNodeMapper.selectNodeList(nextNode);
|
|
|
- bom = getBomByNode(nodeList.get(0), updTask, updBom);
|
|
|
+ generateFlag = getBomByNode(nodeList.get(0), updTask, updBom);
|
|
|
}
|
|
|
break;
|
|
|
case CommonConstants.VERIFY_USER_TYPE: // 审核人处理
|
|
|
- bom = getBomByNode(node, updTask, updBom);
|
|
|
+ generateFlag = getBomByNode(node, updTask, updBom);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return generateFlag;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Boolean getBomByNode(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom) {
|
|
|
+ boolean generateFlag = Boolean.FALSE;
|
|
|
+ // 分流根据是角色还是个人审批
|
|
|
+ int verifyType = node.getVerifyType() == null ? 0 : node.getVerifyType();
|
|
|
+ switch (verifyType){
|
|
|
+ case CommonConstants.VERIFY_TYPE_USER: // 审批人
|
|
|
+ generateFlag = generateUserBom(node, updTask, updBom);
|
|
|
+ break;
|
|
|
+ case CommonConstants.VERIFY_TYPE_ROLE: // 审批角色
|
|
|
+ generateFlag = generateRoleBom(node, updTask, updBom);
|
|
|
break;
|
|
|
+
|
|
|
}
|
|
|
- return bom;
|
|
|
+ return generateFlag;
|
|
|
}
|
|
|
|
|
|
- private WorkflowTaskBom getBomByNode(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom) {
|
|
|
+ /**
|
|
|
+ * 审批人生成bom
|
|
|
+ * @param node
|
|
|
+ * @param updTask
|
|
|
+ * @param updBom
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Boolean generateUserBom(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom){
|
|
|
WorkflowTaskBom bom = new WorkflowTaskBom();
|
|
|
bom.setId(IdGeneratorUtils.getObjectId());
|
|
|
bom.setTaskId(updTask.getId());
|
|
@@ -163,6 +180,8 @@ public class VerifyPublishStrategy extends AbstractBaseStrategy {
|
|
|
bom.setCreatedTime(LocalDateTime.now());
|
|
|
bom.setReadFlag(YesNoEnum.NO.getValue());
|
|
|
bom.setReminderNum(YesNoEnum.NO.getValue());
|
|
|
+ bom.setNodeSort(node.getNodeLevel());
|
|
|
+ bom.setNodeId(node.getId());
|
|
|
// 修改已有taskBom
|
|
|
updBom.setStatus(YesNoEnum.YES.getValue());
|
|
|
updBom.setHandleTime(LocalDateTime.now());
|
|
@@ -182,7 +201,60 @@ public class VerifyPublishStrategy extends AbstractBaseStrategy {
|
|
|
workflowTaskBomMapper.updateByPrimaryKeySelective(updBom);
|
|
|
// 修改任务
|
|
|
workflowTaskMapper.updateByPrimaryKeySelective(updTask);
|
|
|
- return bom;
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private boolean generateRoleBom(WorkflowNodeVO node, WorkflowTask updTask, WorkflowTaskBom updBom){
|
|
|
+ List<WorkflowTaskBom> bomList = ListUtils.newArrayList();
|
|
|
+ // 根据角色和部门获取审批人员集合
|
|
|
+ SysUserDTO queryDTO = new SysUserDTO();
|
|
|
+ queryDTO.setDeptId(node.getDeptId());
|
|
|
+ queryDTO.setRoleId(node.getRoleId());
|
|
|
+ List<SysUserVO> userList = sysUserMapper.selectUserByRole(queryDTO);
|
|
|
+ if(CollectionUtils.isEmpty(userList)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ StringBuffer userName = new StringBuffer("【");
|
|
|
+ List<String> userId = ListUtils.newArrayList();
|
|
|
+ for(SysUserVO user : userList){
|
|
|
+ userName.append(user.getRealName()).append("、");
|
|
|
+ userId.add(user.getUserId());
|
|
|
+ WorkflowTaskBom bom = new WorkflowTaskBom();
|
|
|
+ bom.setId(IdGeneratorUtils.getObjectId());
|
|
|
+ bom.setTaskId(updTask.getId());
|
|
|
+ bom.setStatus(YesNoEnum.NO.getValue());
|
|
|
+ bom.setPersonalType(YesNoEnum.YES.getValue() + 1);
|
|
|
+ bom.setCreatedUserName(user.getRealName());
|
|
|
+ bom.setCreatedUserId(user.getUserId());
|
|
|
+ bom.setCreatedTime(LocalDateTime.now());
|
|
|
+ bom.setReadFlag(YesNoEnum.NO.getValue());
|
|
|
+ bom.setReminderNum(YesNoEnum.NO.getValue());
|
|
|
+ bom.setNodeSort(node.getNodeLevel());
|
|
|
+ bom.setNodeId(node.getId());
|
|
|
+ bomList.add(bom);
|
|
|
+ }
|
|
|
+ // 存入bom
|
|
|
+ workflowTaskBomMapper.insertListforComplex(bomList);
|
|
|
+ // 修改已有taskBom
|
|
|
+ updBom.setStatus(YesNoEnum.YES.getValue());
|
|
|
+ updBom.setHandleTime(LocalDateTime.now());
|
|
|
+ // 修改Task
|
|
|
+ updTask.setStatus(FlowTaskStatusEnum.VERIFYING.getValue());
|
|
|
+ updTask.setNodeSort(node.getNodeLevel());
|
|
|
+ updTask.setFrontId(node.getFrontId());
|
|
|
+ updTask.setLastTime(LocalDateTime.now());
|
|
|
+ updTask.setLastUserName(SecurityUtils.getUserInfo().getRealName());
|
|
|
+ updTask.setLastUserId(SecurityUtils.getUserInfo().getUserId());
|
|
|
+ updTask.setCurrentUserId(JsonUtils.objectToJson(userId));
|
|
|
+ String currentUserName = userName.substring(0, userName.length()-1) + "】";
|
|
|
+ updTask.setCurrentUserName(currentUserName);
|
|
|
+ updTask.setRemark("待" + currentUserName + "处理");
|
|
|
+ // 修改老节点
|
|
|
+ workflowTaskBomMapper.updateByPrimaryKeySelective(updBom);
|
|
|
+ // 修改任务
|
|
|
+ workflowTaskMapper.updateByPrimaryKeySelective(updTask);
|
|
|
+ return CollectionUtils.isNotEmpty(bomList);
|
|
|
}
|
|
|
|
|
|
private String getPrimaryKey(String json, String fieldName) {
|