feat: 发起年度制修订主动上报流程

This commit is contained in:
2023-10-24 10:49:35 +08:00
parent aa125085c7
commit ab94f9795a
8 changed files with 167 additions and 7 deletions
@@ -12,6 +12,8 @@ public enum ProcessType {
* 企标立项变更
*/
ES_INIT_CHANGE("企标立项/变更计划", "1", "es-init-change", "processEsInitChangeServiceImpl"),
ES_ANNUAL_REPORT("年度制修订-各部门主动上报", "2", "es-annual-report", "processEsAnnualReportServiceImpl"),
ES_ANNUAL_INIT("年度制修订-标准化部门主动发起", "3", "es-annual-init", "processEsAnnualInitServiceImpl"),
;
@@ -18,6 +18,7 @@ import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.*;
@@ -218,4 +219,23 @@ public class ActFlowCommonService {
}
return result;
}
public void autoCompleteFirstTask(String userId, String processInstanceId, String processDefinitionId) {
// 自动完成第一个任务
List<Map<String, Object>> taskList = this.myTaskList(userId);
if (!CollectionUtils.isEmpty(taskList)) {
for (Map<String, Object> map : taskList) {
if (map.get("assignee").toString().equals(userId) &&
map.get("processDefinitionId").toString().equals(processDefinitionId) &&
map.get("processInstanceId").toString().equals(processInstanceId)) { // 添加这一行来进行更精确的匹配
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
log.info("匹配到的任务ID{}", map.get("taskId").toString());
this.completeTask("同意", map.get("taskId").toString(), userId, map);
break;
}
}
}
}
}
@@ -10,11 +10,11 @@ public interface IActFlowCustomService {
/**
* 设置流程变量
* @param id
* @param processInstanceId
* @return
*/
Map<String, Object> setVariables(String id);
Map<String, Object> setVariables(String processInstanceId);
/**
* 整个流程开始时需要执行的任务
@@ -17,8 +17,6 @@ import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
/**
* 企标-年度制修订计划-标准化发起
* @TableName process_es_annual_init
@@ -21,6 +21,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.jero.common.system.base.controller.JeroController.*;
@@ -78,4 +79,45 @@ public class ESAnnualReportController {
}
}
/**
* 新增主动上报申请
*
* @param esAnnualReportList
*/
@AutoLog(value = "企标年度制修订主动上报流程-发起流程")
@ApiOperation(value="企标年度制修订主动上报流程-发起流程", notes="企标年度制修订主动上报流程-发起流程")
@PostMapping("/start")
public Result<?> startInitChange() {
// TODO 暂时不处理参数
annualReportService.startProcess();
return Result.OK();
}
/**
* 同意
*
* @param taskId
* @param esAnnualReportList
*/
@AutoLog(value = "企标年度制修订主动上报流程-同意")
@ApiOperation(value="企标年度制修订主动上报流程-同意", notes="企标年度制修订主动上报流程-同意")
@PostMapping("/agree")
public Result<?> agree(@RequestParam("taskId") String taskId, @RequestBody List<ProcessEsAnnualReport> esAnnualReportList) {
annualReportService.approvalProcess(taskId, esAnnualReportList, true);
return Result.OK();
}
/**
* 驳回
*
* @param taskId
* @param esAnnualReportList
*/
@AutoLog(value = "企标年度制修订主动上报流程-驳回")
@ApiOperation(value="企标年度制修订主动上报流程-驳回", notes="企标年度制修订主动上报流程-驳回")
@PostMapping("/reject")
public Result<?> reject(@RequestParam("taskId") String taskId, @RequestBody List<ProcessEsAnnualReport> esAnnualReportList) {
annualReportService.approvalProcess(taskId, esAnnualReportList, false);
return Result.OK();
}
}
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
/**
@@ -14,4 +15,8 @@ import java.util.Map;
public interface ProcessEsAnnualReportService extends IService<ProcessEsAnnualReport> {
Map<String, Object> importData(MultipartFile file);
void startProcess();
void approvalProcess(String taskId, List<ProcessEsAnnualReport> esAnnualReportList, boolean b);
}
@@ -5,7 +5,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.CommonAPI;
import com.jero.common.constant.enums.YesOrNoEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.api.ISysBaseAPI;
import com.jero.common.system.vo.SysDictItemCore;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
import com.jero.modules.activiti.process.common.service.IActFlowCustomService;
import com.jero.modules.activiti.process.esAnnualReport.entity.ProcessEsAnnualReport;
import com.jero.modules.activiti.process.esAnnualReport.mapper.ProcessEsAnnualReportMapper;
import com.jero.modules.activiti.process.esAnnualReport.service.ProcessEsAnnualReportService;
@@ -13,10 +17,19 @@ import com.jero.modules.activiti.process.esInitChange.entity.enums.ESPProjectTyp
import com.jero.modules.activiti.util.ExcelUtils;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.sys.utils.UserUtils;
import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@@ -29,10 +42,11 @@ import java.util.stream.Collectors;
* @description 针对表【process_es_annual_report(企标-年度制修订计划-各部门主动上报)】的数据库操作Service实现
* @createDate 2023-10-18 09:52:41
*/
@Slf4j
@Service
@Transactional(rollbackFor = JeroBootException.class)
public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnualReportMapper, ProcessEsAnnualReport>
implements ProcessEsAnnualReportService {
implements ProcessEsAnnualReportService, IActFlowCustomService {
@Resource
private CommonAPI commonAPI;
@@ -43,6 +57,82 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl<ProcessEsAnnua
@Resource
private ILawsEnterpriseStandardService enterpriseStandardService;
@Resource
private ActFlowCommonService actFlowCommonService;
@Resource
private RepositoryService repositoryService;
@Resource
private RuntimeService runtimeService;
@Resource
private TaskService taskService;
@Resource
private ISysBaseAPI sysBaseAPI;
@Override
public Map<String, Object> setVariables(String processInstanceId) {
return null;
}
@Override
public void startRunTask(String id) {
}
@Override
public void endRunTask(String id) {
}
@Override
public Object getHandleData(String id) {
// 根据当前task定义判断返回数据
String userId = UserUtils.getUserId();
return null;
}
@Override
public void startProcess() {
String userId = UserUtils.getUserId();
// TODO 校验数据
String processDefinitionKey = ProcessType.ES_ANNUAL_REPORT.getProcessKey();
ProcessDefinition latestProcessDefinition = repositoryService.createProcessDefinitionQuery()
.processDefinitionKey(processDefinitionKey)
.orderByProcessDefinitionVersion().desc()
.list()
.get(0); // 获取最新版本的流程定义
Map<String, Object> variables = new HashMap<>();
variables.put("","");
// 启动流程
ProcessInstance processInstance = runtimeService.startProcessInstanceById(latestProcessDefinition.getId(), variables);
// 流程定义ID
String processDefinitionId = processInstance.getProcessDefinitionId();
// 流程实例Id
String processInstanceId = processInstance.getProcessInstanceId();
// 自动完成第一个任务
actFlowCommonService.autoCompleteFirstTask(userId, processDefinitionId, processInstanceId);
// TODO 保存数据
log.info("【启动流程】- 成功,processDefinitionId{}", processDefinitionId);
}
@Override
public void approvalProcess(String taskId, List<ProcessEsAnnualReport> esAnnualReportList, boolean b) {
String userId = UserUtils.getUserId();
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
String taskDefinitionKey = task.getTaskDefinitionKey();
// TODO 校验数据
// TODO 根据当前节点类型保存数据
// 设置流程变量
// 完成任务
actFlowCommonService.completeTask("同意", taskId, userId, null);
}
@Override
public Map<String, Object> importData(MultipartFile file) {
List<SysDictItemCore> listDict = commonAPI.getDictItemAll();
@@ -126,9 +126,12 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl<ProcessEsInitCha
if (!CollectionUtils.isEmpty(taskList)) {
for (Map<String, Object> map : taskList) {
if (map.get("assignee").toString().equals(userId) &&
map.get("processDefinitionId").toString().equals(processDefinitionId)) {
map.get("processDefinitionId").toString().equals(processDefinitionId) &&
map.get("processInstanceId").toString().equals(processInstance.getId())) { // 添加这一行来进行更精确的匹配
log.info("当前用户ID:{},相关联的流程定义ID:{}", userId, map.get("processDefinitionId").toString());
log.info("匹配到的任务ID{}", map.get("taskId").toString());
actFlowCommonService.completeTask("同意", map.get("taskId").toString(), userId, map);
break;
}