From 48e816e006b820fe703bdf8fba1a97952b8001ad Mon Sep 17 00:00:00 2001 From: super_liu <396572590@qq.com> Date: Thu, 30 Sep 2021 17:58:45 +0800 Subject: [PATCH] feat: There is no way the schedule --- .../task/TaskController.java | 2 -- .../task/TodoTaskController.java | 29 +++------------ .../service/impl/OaTaskExecServiceImpl.java | 19 ++++++++++ .../service/WebServiceOAService.java | 3 ++ .../service/impl/WebServiceOAServiceImpl.java | 35 +++++++++++++++++++ .../ydw/bat/wkflow/config/ScheduledJob.java | 28 ++++++++++++--- .../java/com/ydw/bat/wkflow/util/Utils.java | 3 ++ 7 files changed, 88 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TaskController.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TaskController.java index 14a56d6b..c652e15f 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TaskController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TaskController.java @@ -67,8 +67,6 @@ public class TaskController { if(!list1.isEmpty()){ QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("TODO_ID",list1.get(0).getId()); - wrapper.eq("EXEC_TYPE",2); - wrapper.eq("EXEC_STATUS",0); count1 = oaTaskExecService.count(wrapper); } map.put("commitStatus",count1); diff --git a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java index e34fef18..2f4a495d 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java +++ b/src/main/java/com/ydw/bat/wkflow/business_activiti/task/TodoTaskController.java @@ -95,6 +95,9 @@ public class TodoTaskController extends BaseAction { @Autowired private IOaTaskExecService oaTaskExecService; + @Autowired + private WebServiceOAService webServiceOAService; + @Autowired private CreateMQService mqService; @@ -346,7 +349,7 @@ public class TodoTaskController extends BaseAction { //发送OA已办 try { //发送OA已办 - completeOA(task); + webServiceOAService.completeOA(task); }catch (Exception e){ logger.error(e.toString()); } @@ -373,7 +376,7 @@ public class TodoTaskController extends BaseAction { try { //发送OA已办 - completeOA(task); + webServiceOAService.completeOA(task); }catch (Exception e){ logger.error(e.toString()); } @@ -397,29 +400,7 @@ public class TodoTaskController extends BaseAction { } private void completeOA(Task task){ - CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class); - logger.info("--------------------------ESP 发送已办任务----------------------------"); - SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd HH:mm:ss"); - NotifyTodoSendContext notifyTodoSendContext = new NotifyTodoSendContext(); - notifyTodoSendContext.setAppName("FOTON"); - notifyTodoSendContext.setCreateTime(sdf.format(new Date())); - QueryWrapper queryWrapper1 = new QueryWrapper(); - queryWrapper1.eq("P_ID",task.getProcessInstanceId()); - queryWrapper1.eq("TASK_ID",task.getId()); - List list = iBusProcessNewService.list(queryWrapper1); - if(!list.isEmpty()){ - notifyTodoSendContext.setModelId(list.get(0).getId()); - notifyTodoSendContext.setModelName(task.getName()); - notifyTodoSendContext.setOptType("1"); - Map map = new HashMap<>(); - ResponseMessage byId = lawsUserInfoService.getById(task.getAssignee()); - map.put("LoginName",byId == null ? "" : byId.getData().getAccount()); - JSONObject jsonLoginName = new JSONObject(map); - notifyTodoSendContext.setTargets(jsonLoginName.toJSONString()); - notifyTodoSendContext.setUserId(task.getAssignee()); - oaService.setTodoDoneMq(notifyTodoSendContext); - } } @ApiOperation(value = "查询流程编号", notes = "根据流程实例ID查询流程编号") diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/OaTaskExecServiceImpl.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/OaTaskExecServiceImpl.java index f0ffc21f..2c2515f1 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/OaTaskExecServiceImpl.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/service/impl/OaTaskExecServiceImpl.java @@ -1,6 +1,9 @@ package com.ydw.bat.wkflow.business_main.datas.service.impl; import com.alibaba.fastjson.JSONObject; +import org.activiti.engine.TaskService; +import org.activiti.engine.impl.persistence.entity.TaskEntity; +import org.activiti.engine.task.Task; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec; @@ -8,6 +11,8 @@ import com.ydw.bat.wkflow.business_main.datas.mapper.OaTaskExecMapper; import com.ydw.bat.wkflow.business_main.datas.service.IOaTaskExecService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; +import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService; +import com.ydw.bat.wkflow.business_oa.webService.todoContent.NotifyTodoSendContext; import com.ydw.bat.wkflow.util.Utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,9 +34,15 @@ public class OaTaskExecServiceImpl extends ServiceImpl execTask(String todoId){ Map map = new TreeMap<>(); @@ -51,13 +62,21 @@ public class OaTaskExecServiceImpl extends ServiceImpl list = iBusProcessNewService.list(queryWrapper1); + if(!list.isEmpty()){ + notifyTodoSendContext.setModelId(list.get(0).getId()); + notifyTodoSendContext.setModelName(task.getName()); + notifyTodoSendContext.setOptType("1"); + Map map = new HashMap<>(); + ResponseMessage byId = lawsUserInfoService.getById(task.getAssignee()); + map.put("LoginName",byId == null ? "" : byId.getData().getAccount()); + JSONObject jsonLoginName = new JSONObject(map); + notifyTodoSendContext.setTargets(jsonLoginName.toJSONString()); + notifyTodoSendContext.setUserId(task.getAssignee()); + oaService.setTodoDoneMq(notifyTodoSendContext); + } + } + @Override @Async public NotifyTodoAppResult setTodoDone(NotifyTodoSendContext notifyTodoSendContext) throws Exception{ diff --git a/src/main/java/com/ydw/bat/wkflow/config/ScheduledJob.java b/src/main/java/com/ydw/bat/wkflow/config/ScheduledJob.java index 86bd1047..f1985c18 100644 --- a/src/main/java/com/ydw/bat/wkflow/config/ScheduledJob.java +++ b/src/main/java/com/ydw/bat/wkflow/config/ScheduledJob.java @@ -1,5 +1,8 @@ package com.ydw.bat.wkflow.config; +import com.alibaba.fastjson.JSON; +import com.ydw.bat.wkflow.business_oa.webService.service.WebServiceOAService; +import net.sf.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.OaTaskExec; @@ -9,8 +12,10 @@ import com.ydw.bat.wkflow.util.SpringContextUtil; import com.ydw.bat.wkflow.util.Utils; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.HistoryService; +import org.activiti.engine.TaskService; import org.activiti.engine.history.HistoricTaskInstance; import org.activiti.engine.history.HistoricTaskInstanceQuery; +import org.activiti.engine.task.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; @@ -36,34 +41,47 @@ public class ScheduledJob { @Value("${isNotScheduled}") private boolean isNotScheduled; //是否开启定时器 - @Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行 -// @Scheduled(cron="*/5 * * * * ?") +// @Scheduled(cron = "0 0 0 * * ?") //每天的凌晨0点执行 + @Scheduled(cron="*/5 * * * * ?") @Async public void SchedulingTask() { if(isNotScheduled){ + TaskService taskService = SpringContextUtil.getBean(TaskService.class); HistoryService historyService = SpringContextUtil.getBean(HistoryService.class); IOaTaskExecService execService = SpringContextUtil.getBean(IOaTaskExecService.class); CreateMQService oaService = SpringContextUtil.getBean(CreateMQService.class); + WebServiceOAService webServiceOAService = SpringContextUtil.getBean(WebServiceOAService.class); + SimpleDateFormat sdfQuery = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("EXEC_TYPE",2); wrapper.eq("EXEC_STATUS",1); - wrapper.eq("EXEC_TIME",sdf.format(new Date())); + wrapper.eq("EXEC_TIME",sdfQuery.format(new Date())); List taskExecs = execService.list(wrapper); if(!taskExecs.isEmpty()){ taskExecs.forEach(taskExec -> { - BusProcessNew object = (BusProcessNew) net.sf.json.JSONObject.toBean(net.sf.json.JSONObject.fromObject(taskExec.getMesg()), BusProcessNew.class); + net.sf.json.JSONObject jsonObject = JSONObject.fromObject(taskExec.getMesg()); + net.sf.json.JSONObject jsonObjectFilter = JSONObject.fromObject(taskExec.getMesg()); + jsonObjectFilter = jsonObjectFilter.discard("PId"); + jsonObjectFilter.put("pid",jsonObject.getString("PId")); + BusProcessNew object = JSON.parseObject(jsonObjectFilter.toString(),BusProcessNew.class); + HistoricTaskInstanceQuery historicTaskInstanceQuery = historyService.createHistoricTaskInstanceQuery() .processInstanceId(object.getPId()).taskId(object.getTaskId()).finished(); List list = historicTaskInstanceQuery.list(); // 判断定时任务的流程节点是否已完成 if(!list.isEmpty()){ // 业务系统流程节点已完成 则不再发送 OA 待办 + // 任务状态置为已完成 updateTask(execService, sdf, taskExec); }else { // 业务系统流程节点未完成 再发送 OA 待办 - // 任务状态 置为 已完成 业务流程 干活流程节点 均显示 提交 + // 任务状态置为已完成 业务流程 干活流程节点 均显示 提交 updateTask(execService, sdf, taskExec); + + Task task = taskService.createTaskQuery().taskId(object.getTaskId()).singleResult(); + webServiceOAService.completeOA(task); + // 直接发送OA待办 重置任务状态 0 object.setTaskStatus(0); oaService.sendTodoMq(object); diff --git a/src/main/java/com/ydw/bat/wkflow/util/Utils.java b/src/main/java/com/ydw/bat/wkflow/util/Utils.java index 45acb6c9..468cd557 100644 --- a/src/main/java/com/ydw/bat/wkflow/util/Utils.java +++ b/src/main/java/com/ydw/bat/wkflow/util/Utils.java @@ -21,6 +21,9 @@ import java.util.*; public class Utils { public static int subDayNum(String endTime){ + if (endTime.length() >= 10) { + endTime = endTime.substring(0, 10); + } DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate startDate = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()),fmt); LocalDate endDate = LocalDate.parse(endTime,fmt);