From 23ff58a619aa93e762f4088709110d71215dc4e8 Mon Sep 17 00:00:00 2001 From: gaojiabao Date: Sat, 25 Mar 2023 16:36:37 +0800 Subject: [PATCH] =?UTF-8?q?=EF=BC=88OA=20=E5=88=9D=E7=A8=BF30=E5=A4=A9?= =?UTF-8?q?=E5=88=99=E5=8F=91=E9=80=81oa=E6=8F=90=E9=86=92=20=E4=B8=89?= =?UTF-8?q?=E5=A4=A9=E5=90=8E=E5=88=99=E5=8F=91=E9=80=81=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E6=8F=90=E9=86=92=EF=BC=8C=E6=A0=87=E5=87=86=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=B8=89=E5=A4=A9=E5=88=99=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=8F=90=E9=86=92=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business_auth/LawsUserInfoService.java | 3 + .../datas/entity/EsRevisePlanDTO.java | 9 ++ .../bat/wkflow/config/ScheduledJobEsPlan.java | 118 ++++++++++++++++++ 3 files changed, 130 insertions(+) diff --git a/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java b/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java index b2ac573c..2291476f 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java +++ b/src/main/java/com/ydw/bat/wkflow/business_auth/LawsUserInfoService.java @@ -213,4 +213,7 @@ public interface LawsUserInfoService { @GetMapping("/esRevisePlan/es-revise-plan/getAllPlansByWk") public List getAllPlansByWk(@RequestParam("esName") String esName); + + @GetMapping("/esRevisePlan/es-revise-plan/oaUpdatePlans") + void updateEsRevisePlan(@RequestParam("esId")String esId, @RequestParam("date")Date date,@RequestParam("s") String s); } diff --git a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/EsRevisePlanDTO.java b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/EsRevisePlanDTO.java index b7065703..064e26d2 100644 --- a/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/EsRevisePlanDTO.java +++ b/src/main/java/com/ydw/bat/wkflow/business_main/datas/entity/EsRevisePlanDTO.java @@ -113,4 +113,13 @@ public class EsRevisePlanDTO { @ApiModelProperty(value = "立项单") @TableField("LXD") private String lxd; + + @ApiModelProperty(value = "OA发送时间记录") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private Date oaDateIime; + + @ApiModelProperty(value = "OA是否已经发送") + @TableField("OA_IS_SEND") + private String oaIsSend; } diff --git a/src/main/java/com/ydw/bat/wkflow/config/ScheduledJobEsPlan.java b/src/main/java/com/ydw/bat/wkflow/config/ScheduledJobEsPlan.java index 6df44073..8cb64a76 100644 --- a/src/main/java/com/ydw/bat/wkflow/config/ScheduledJobEsPlan.java +++ b/src/main/java/com/ydw/bat/wkflow/config/ScheduledJobEsPlan.java @@ -5,9 +5,11 @@ import com.ydw.bat.wkflow.business_auth.LawsUserInfoService; import com.ydw.bat.wkflow.business_main.datas.entity.BusProcessNew; import com.ydw.bat.wkflow.business_main.datas.entity.EsPrcRelation; import com.ydw.bat.wkflow.business_main.datas.entity.EsRevisePlanDTO; +import com.ydw.bat.wkflow.business_main.datas.mapper.BusProcessNameMapper; import com.ydw.bat.wkflow.business_main.datas.service.IBusProcessNewService; import com.ydw.bat.wkflow.business_main.datas.service.IEsPrcRelationService; import com.ydw.bat.wkflow.business_mq.service.CreateMQService; +import com.ydw.bat.wkflow.business_oa.webService.service.impl.WebServiceOAServiceImpl; import com.ydw.bat.wkflow.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.TaskService; @@ -15,6 +17,7 @@ import org.activiti.engine.task.Task; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableScheduling; @@ -23,6 +26,7 @@ import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -35,6 +39,9 @@ public class ScheduledJobEsPlan { @Value("${isNotScheduled}") private boolean isNotScheduled; //是否开启定时器 + @Autowired + WebServiceOAServiceImpl webServiceOAService; + @Scheduled(cron = "0 0 2 * * ?") //每天的凌晨2点执行 @Async public void SchedulingTask() { @@ -83,6 +90,117 @@ public class ScheduledJobEsPlan { } } + @Scheduled(cron = "0 0 2 * * ?") //每天的凌晨2点执行 + @Async + public void SchedulingTaskInfo() { + if(isNotScheduled) { + logger.info("============企标计划定时任务开始==========="); + { + LawsUserInfoService lawsUserInfoService = SpringContextUtil.getBean(LawsUserInfoService.class); + IEsPrcRelationService esPrcRelationService = SpringContextUtil.getBean(IEsPrcRelationService.class); + TaskService taskService = SpringContextUtil.getBean(TaskService.class); + + List esRevisePlanDTOList = lawsUserInfoService.getAllPlansByWk(null); // 查询 制定中,修订中的企标计划 + //esRevisePlanDTOList 如果 计划标准初稿时间前一个月的企标计划 以前发送过, + if(!esRevisePlanDTOList.isEmpty()){ + for (EsRevisePlanDTO data : esRevisePlanDTOList) { + if(StringUtils.isNotBlank(data.getOaIsSend()) && data.getOaIsSend().equals("1")){ + //等于1 则证明已经发送了 三十天的OA信息 判断是否是已经发送三天 如果是 则撤回发送 + if(data.getOaDateIime()!=null){ + // 三天时间的时间戳 86400000 * 3 + long threeDay = 259200000; + long time1 = new Date().getTime(); + long oaTime = data.getOaDateIime().getTime(); + //long l = threeDay; + long l = time1 - oaTime; + if( l > threeDay || l == threeDay){ + //证明已经过了三天 则发送撤回信息 + List esPrcRelationList = esPrcRelationService.list(data.getId()); + if (!esPrcRelationList.isEmpty()) { + String esId = esPrcRelationList.get(0).getEsId(); + lawsUserInfoService.updateEsRevisePlan(esId,new Date(),"0"); + if(esPrcRelationList.get(0) != null && StringUtils.isNotBlank(esPrcRelationList.get(0).getPrcId())) { + webServiceOAService.deleteOAByPid(esPrcRelationList.get(0).getPrcId()); + } + } + } + } + } + } + } + // 计划标准初稿时间前一个月的企标计划 + SimpleDateFormat sdfQuery = new SimpleDateFormat("yyyy-MM-dd"); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.MONTH, 1); + String endDate = sdfQuery.format(calendar.getTime()); + List esRevisePlanDTOList2 = esRevisePlanDTOList.stream() + .filter(e -> endDate.equals(sdfQuery.format(e.getDraftTime()))) + .collect(Collectors.toList()); + if (!esRevisePlanDTOList2.isEmpty()) { + for (EsRevisePlanDTO esRevisePlanDTO : esRevisePlanDTOList2) { + List esPrcRelationList = esPrcRelationService.list(esRevisePlanDTO.getId()); + if (esPrcRelationList.isEmpty()) { + continue; + } + String esId = esPrcRelationList.get(0).getEsId(); + String prcIdGk = esPrcRelationList.get(0).getPrcIdGk(); + String oaFlag = esPrcRelationList.get(0).getOaFlag(); + // 判断对应 管控流程是否还在 技术标准起草节点, 且之前点过接受任务 + if (StringUtils.isNotBlank(prcIdGk)) { + List list2 = taskService.createTaskQuery().processInstanceId(prcIdGk).active().list(); + if (!list2.isEmpty()) { + String nowTaskInfo = list2.get(0).getName(); + if ("技术标准起草".equals(nowTaskInfo) && "0".equals(oaFlag)) { + // 再次发送待办 + logger.info("============再次发送待办的企标计划" + esRevisePlanDTO.getEsName() +"==========="); + sendOATodo(list2.get(0)); + // 更新 状态为待办 + esPrcRelationService.modifyEsPrcRelation(esId, null, "1", null); + //存储 OA发的时间 和 修改是否发送过 + lawsUserInfoService.updateEsRevisePlan(esId,new Date(),"1"); + } + } + } + } + } + // 计划标准发布时间 前三天 + Calendar calendarTrid = Calendar.getInstance(); + calendarTrid.add(Calendar.DATE, 3); + String endDateTrid = sdfQuery.format(calendarTrid.getTime()); + List esRevisePlanDTOList3 = esRevisePlanDTOList.stream() + .filter(e -> endDateTrid.equals(sdfQuery.format(e.getReleaseTime()))) + .collect(Collectors.toList()); + if (!esRevisePlanDTOList3.isEmpty()) { + for (EsRevisePlanDTO esRevisePlanDTO : esRevisePlanDTOList3) { + List esPrcRelationList = esPrcRelationService.list(esRevisePlanDTO.getId()); + if (esPrcRelationList.isEmpty()) { + continue; + } + String esId = esPrcRelationList.get(0).getEsId(); + String prcIdGk = esPrcRelationList.get(0).getPrcIdGk(); + String oaFlag = esPrcRelationList.get(0).getOaFlag(); + // 判断对应 管控流程是否还在 技术标准起草节点, 且之前点过接受任务 + if (StringUtils.isNotBlank(prcIdGk)) { + List list2 = taskService.createTaskQuery().processInstanceId(prcIdGk).active().list(); + if (!list2.isEmpty()) { + String nowTaskInfo = list2.get(0).getName(); + if ("技术标准起草".equals(nowTaskInfo) && "0".equals(oaFlag)) { + // 再次发送待办 + logger.info("============再次发送待办的企标计划" + esRevisePlanDTO.getEsName() +"==========="); + sendOATodo(list2.get(0)); + // 更新 状态为待办 + esPrcRelationService.modifyEsPrcRelation(esId, null, "1", null); + } + } + } + } + } + //logger.info("============企标计划定时任务结束==========="); + } + logger.info("============企标计划定时任务结束==========="); + } + } + public void sendOATodo(Task delegateTask) { IBusProcessNewService busBean = SpringContextUtil.getBean(IBusProcessNewService.class); QueryWrapper queryWrapper1 = new QueryWrapper();