diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java index c4c3854c..c70480d4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/enums/ProcessType.java @@ -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"), ; diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java index f8832aa8..7066563b 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/ActFlowCommonService.java @@ -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> taskList = this.myTaskList(userId); + if (!CollectionUtils.isEmpty(taskList)) { + for (Map 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; + } + } + } + } } \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/IActFlowCustomService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/IActFlowCustomService.java index 83830770..1a86564c 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/IActFlowCustomService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/common/service/IActFlowCustomService.java @@ -10,11 +10,11 @@ public interface IActFlowCustomService { /** * 设置流程变量 - * @param id + * @param processInstanceId * @return */ - Map setVariables(String id); - + Map setVariables(String processInstanceId); + /** * 整个流程开始时需要执行的任务 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/ProcessEsAnnualInit.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/ProcessEsAnnualInit.java index 7314f254..5a21917e 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/ProcessEsAnnualInit.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualInit/entity/ProcessEsAnnualInit.java @@ -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 diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java index 60aa2a8f..75252027 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/controller/ESAnnualReportController.java @@ -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 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 esAnnualReportList) { + annualReportService.approvalProcess(taskId, esAnnualReportList, false); + return Result.OK(); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/ProcessEsAnnualReportService.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/ProcessEsAnnualReportService.java index 555a0b9b..eb66b672 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/ProcessEsAnnualReportService.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/ProcessEsAnnualReportService.java @@ -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 { Map importData(MultipartFile file); + + void startProcess(); + + void approvalProcess(String taskId, List esAnnualReportList, boolean b); } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java index b7273efb..0e8ce0ce 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esAnnualReport/service/impl/ProcessEsAnnualReportServiceImpl.java @@ -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 - implements ProcessEsAnnualReportService { + implements ProcessEsAnnualReportService, IActFlowCustomService { @Resource private CommonAPI commonAPI; @@ -43,6 +57,82 @@ public class ProcessEsAnnualReportServiceImpl extends ServiceImpl 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 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 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 importData(MultipartFile file) { List listDict = commonAPI.getDictItemAll(); diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java index 3759cf17..b588db9b 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/esInitChange/service/impl/ProcessEsInitChangeServiceImpl.java @@ -126,9 +126,12 @@ public class ProcessEsInitChangeServiceImpl extends ServiceImpl 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; }