技术监督退运流程

This commit is contained in:
hzj
2024-04-16 15:10:54 +08:00
parent dfd38dbb24
commit ba2df7c268
13 changed files with 644 additions and 27 deletions

View File

@@ -0,0 +1,24 @@
package com.njcn.process.service;
import com.njcn.process.pojo.param.RFlowProcessParm;
import com.njcn.process.pojo.po.RFlowProcessPO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
*
* Description:
* Date: 2024/4/15 16:24【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface RFlowProcessPOService extends IService<RFlowProcessPO>{
Boolean add(RFlowProcessParm rFlowProcessParm);
Boolean update(RFlowProcessParm.RFlowProcessUpdate rFlowProcessParm);
Boolean check(RFlowProcessParm.RFlowProcessCheck rFlowProcessCheck);
Boolean file(String id);
}

View File

@@ -18,11 +18,16 @@ import com.njcn.device.biz.pojo.dto.LineALLInfoDTO;
import com.njcn.oss.constant.OssPath;
import com.njcn.oss.utils.FileStorageUtil;
import com.njcn.process.enums.ProcessResponseEnum;
import com.njcn.process.enums.ThsFlowTypeEnum;
import com.njcn.process.mapper.*;
import com.njcn.process.pojo.param.*;
import com.njcn.process.pojo.po.*;
import com.njcn.process.pojo.vo.*;
import com.njcn.process.pojo.vo.flowable.FlowTaskVo;
import com.njcn.process.service.IssuesService;
import com.njcn.process.service.flowable.IFlowDefinitionService;
import com.njcn.process.service.flowable.IFlowInstanceService;
import com.njcn.process.service.flowable.IFlowTaskService;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.system.enums.DicDataEnum;
import com.njcn.system.enums.DicDataTypeEnum;
@@ -32,16 +37,14 @@ import com.njcn.user.pojo.vo.PvTerminalTreeVO;
import com.njcn.web.utils.RequestUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flowable.task.api.Task;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -76,7 +79,16 @@ public class IssuesServiceImpl implements IssuesService {
private final FileStorageUtil fileStorageUtil;
private final CommLineClient commLineClient;
private final FlowableAssMapper flowableAssMapper;
private final IFlowDefinitionService iFlowDefinitionService;
private final IFlowInstanceService iFlowInstanceService;
private final IFlowTaskService iFlowTaskService;
private final FlowFormAssMapper flowFormAssMapper;
/**
* 新增电能质量问题流程表信息
*/
@@ -136,6 +148,9 @@ public class IssuesServiceImpl implements IssuesService {
excessive.setPowerQualityProblemNo(powerQualityProblemNo);
excessive.setDataDate(localDateTime);
excessiveMapper.insert(excessive);
//生成电能质量工作流
createflow(powerQualityProblemNo,1);
}
/**
@@ -154,6 +169,9 @@ public class IssuesServiceImpl implements IssuesService {
generalSurvey.setPowerQualityProblemNo(powerQualityProblemNo);
generalSurvey.setDataDate(localDateTime);
generalSurveyMapper.insert(generalSurvey);
//生成电能质量工作流
createflow(powerQualityProblemNo,4);
}
/**
@@ -172,6 +190,8 @@ public class IssuesServiceImpl implements IssuesService {
complaint.setPowerQualityProblemNo(powerQualityProblemNo);
complaint.setDataDate(localDateTime);
complaintMapper.insert(complaint);
//生成电能质量工作流
createflow(powerQualityProblemNo,3);
}
/**
@@ -190,6 +210,35 @@ public class IssuesServiceImpl implements IssuesService {
abnormal.setPowerQualityProblemNo(powerQualityProblemNo);
abnormal.setDataDate(localDateTime);
abnormalMapper.insert(abnormal);
//生成电能质量工作流
createflow(powerQualityProblemNo,2);
}
public Boolean createflow(String thsIndex ,Integer type) {
String userId = RequestUtil.getUserIndex();
//绑定工作流
Map<String, Object> map = new HashMap<>();
//开始流程
FlowFormAss flowFormAss = flowFormAssMapper.selectOne(new LambdaQueryWrapper<FlowFormAss>().eq(FlowFormAss::getFormId, 3));
if (Objects.isNull(flowFormAss)) {
throw new BusinessException("当前功能未绑定流程,请先绑定流程");
}
map.put("type",type);
String processId = iFlowDefinitionService.startProcessInstanceById(flowFormAss.getDefinitionId(), thsIndex, ThsFlowTypeEnum.powerQualityManagement.getCode(), map);
Task task = iFlowTaskService.getTask(processId);
FlowTaskVo flowTaskVo = new FlowTaskVo();
flowTaskVo.setTaskId(task.getId());
flowTaskVo.setInstanceId(processId);
flowTaskVo.setComment(RequestUtil.getUserNickname() + "发起电能质量申请");
map.put("auditFlag",1);
flowTaskVo.setVariables(map);
iFlowTaskService.complete(flowTaskVo);
return true;
}
/**

View File

@@ -0,0 +1,185 @@
package com.njcn.process.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njcn.common.pojo.exception.BusinessException;
import com.njcn.process.enums.ProcessResponseEnum;
import com.njcn.process.enums.ThsFlowTypeEnum;
import com.njcn.process.mapper.FlowFormAssMapper;
import com.njcn.process.mapper.FlowableAssMapper;
import com.njcn.process.mapper.RFlowProcessPOMapper;
import com.njcn.process.pojo.param.RFlowProcessParm;
import com.njcn.process.pojo.po.FlowFormAss;
import com.njcn.process.pojo.po.FlowableAss;
import com.njcn.process.pojo.po.RFlowProcessPO;
import com.njcn.process.pojo.vo.flowable.FlowTaskVo;
import com.njcn.process.service.RFlowProcessPOService;
import com.njcn.process.service.flowable.IFlowDefinitionService;
import com.njcn.process.service.flowable.IFlowInstanceService;
import com.njcn.process.service.flowable.IFlowTaskService;
import com.njcn.process.utils.FlowableUtils;
import com.njcn.system.api.DicDataFeignClient;
import com.njcn.web.utils.RequestUtil;
import lombok.RequiredArgsConstructor;
import org.flowable.task.api.Task;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
*
* Description:
* Date: 2024/4/15 16:24【需求编号】
*
* @author clam
* @version V1.0.0
*/
@Service
@RequiredArgsConstructor
public class RFlowProcessPOServiceImpl extends ServiceImpl<RFlowProcessPOMapper, RFlowProcessPO> implements RFlowProcessPOService{
private final FlowableAssMapper flowableAssMapper;
private final FlowFormAssMapper flowFormAssMapper;
private final DicDataFeignClient dicDataFeignClient;
private final IFlowDefinitionService iFlowDefinitionService;
private final IFlowInstanceService iFlowInstanceService;
private final IFlowTaskService iFlowTaskService;
@Override
@Transactional(rollbackFor = {Exception.class})
public Boolean add(RFlowProcessParm rFlowProcessParm) {
RFlowProcessPO rFlowProcessPO = new RFlowProcessPO();
BeanUtils.copyProperties(rFlowProcessParm,rFlowProcessPO);
rFlowProcessPO.setProcessStatus(1);
this.save(rFlowProcessPO);
String businessId = rFlowProcessPO.getId();
//生成新建工作流
createflow(businessId, rFlowProcessParm.getApplyType(), rFlowProcessParm.getType());
//生成提交审核工作流
if(Objects.equals(rFlowProcessParm.getOperate(),"2")){
createCheckflow(businessId);
}
//修改状态
rFlowProcessPO.setProcessStatus(2);
this.updateById(rFlowProcessPO);
return true;
}
@Override
@Transactional(rollbackFor = {Exception.class})
public Boolean update(RFlowProcessParm.RFlowProcessUpdate rFlowProcessParm) {
RFlowProcessPO byId = this.getById(rFlowProcessParm.getId());
if(byId.getProcessStatus()==1||byId.getProcessStatus()==3){
BeanUtils.copyProperties(rFlowProcessParm,byId);
this.updateById(byId);
}else {
throw new BusinessException(ProcessResponseEnum.NO_UPDATE);
}
return null;
}
//审核
@Override
@Transactional(rollbackFor = {Exception.class})
public Boolean check(RFlowProcessParm.RFlowProcessCheck rFlowProcessCheck) {
boolean result = true;
UpdateWrapper<RFlowProcessPO> updateWrapper = new UpdateWrapper();
updateWrapper.eq("id", rFlowProcessCheck.getId());
updateWrapper.set("description", rFlowProcessCheck.getDescription());
updateWrapper.set("check_status", rFlowProcessCheck.getCheckStatus());
updateWrapper.set("process_status",rFlowProcessCheck.getCheckStatus()==1?3:4);
result = this.update(updateWrapper);
//流程审核
FlowableAss flowableAss = flowableAssMapper.selectOne(new LambdaQueryWrapper<FlowableAss>().eq(FlowableAss::getType, ThsFlowTypeEnum.monitoringReturned.getCode()).eq(FlowableAss::getThsIndex,rFlowProcessCheck.getId()));
if(Objects.isNull(flowableAss)){
throw new BusinessException("当前功能未绑定流程,请联系管理员处理");
}
FlowableUtils.dealAuditResult(flowableAss,rFlowProcessCheck.getCheckStatus()+"",iFlowTaskService,rFlowProcessCheck.getDescription());
return result;
}
@Override
public Boolean file(String id) {
boolean result = true;
UpdateWrapper<RFlowProcessPO> updateWrapper = new UpdateWrapper();
updateWrapper.eq("id", id);
updateWrapper.set("process_status",5);
result = this.update(updateWrapper);
//流程审核
FlowableAss flowableAss = flowableAssMapper.selectOne(new LambdaQueryWrapper<FlowableAss>().eq(FlowableAss::getType, ThsFlowTypeEnum.monitoringReturned.getCode()).eq(FlowableAss::getThsIndex,id));
if(Objects.isNull(flowableAss)){
throw new BusinessException("当前功能未绑定流程,请联系管理员处理");
}
Task task = iFlowTaskService.getTask(flowableAss.getExecIndex());
FlowTaskVo flowTaskVo = new FlowTaskVo();
flowTaskVo.setTaskId(task.getId());
flowTaskVo.setComment(RequestUtil.getUserNickname() + "进行归档" );
flowTaskVo.setInstanceId(flowableAss.getExecIndex());
iFlowTaskService.complete(flowTaskVo);
return result;
}
//新建流程
public Boolean createflow(String businessId ,Integer applyType,Integer type ) {
String userId = RequestUtil.getUserIndex();
//绑定工作流
Map<String, Object> map = new HashMap<>();
//开始流程
FlowFormAss flowFormAss = flowFormAssMapper.selectOne(new LambdaQueryWrapper<FlowFormAss>().eq(FlowFormAss::getFormId, applyType));
if (Objects.isNull(flowFormAss)) {
throw new BusinessException("当前功能未绑定流程,请先绑定流程");
}
//如何applyType==3 电能质量管理下有3个子流程
map.put("type",type);
String processId = iFlowDefinitionService.startProcessInstanceById(flowFormAss.getDefinitionId(), businessId, ThsFlowTypeEnum.monitoringReturned.getCode(), map);
Task task = iFlowTaskService.getTask(processId);
FlowTaskVo flowTaskVo = new FlowTaskVo();
flowTaskVo.setTaskId(task.getId());
flowTaskVo.setInstanceId(processId);
flowTaskVo.setComment(RequestUtil.getUserNickname() + "发起电能质量申请");
flowTaskVo.setVariables(map);
iFlowTaskService.complete(flowTaskVo);
return true;
}
//提交审核工作流
public Boolean createCheckflow(String businessId ) {
//流程审核
FlowableAss flowableAss = flowableAssMapper.selectOne(new LambdaQueryWrapper<FlowableAss>().eq(FlowableAss::getType, ThsFlowTypeEnum.monitoringReturned.getCode()).eq(FlowableAss::getThsIndex,businessId));
if(Objects.isNull(flowableAss)){
throw new BusinessException("当前功能未绑定流程,请联系管理员处理");
}
RFlowProcessPO byId = this.getById(businessId);
Task taskNext = iFlowTaskService.getTask(flowableAss.getExecIndex());
FlowTaskVo flowTaskVoNext = new FlowTaskVo();
flowTaskVoNext.setTaskId(taskNext.getId());
flowTaskVoNext.setAssignee(byId.getChecker());
iFlowTaskService.toNextTaskUser(flowTaskVoNext);
return true;
}
}