Files
foton-slrs-system-rest/adc-da-activiti/src/main/java/com/adc/da/Timer/ProcessTimer.java
T

239 lines
10 KiB
Java

package com.adc.da.Timer;
import com.adc.da.FeignClient.workFlowFeignClient;
import com.adc.da.common.BusMes;
import com.adc.da.common.BusProcessName;
import com.adc.da.common.BusProcessNew;
import com.adc.da.common.Wrapper;
import com.adc.da.http.ResponseMessage;
import com.adc.da.sys.common.EmailUtils;
import com.adc.da.sys.entity.UserEO;
import com.adc.da.sys.service.IUserEOService;
import com.adc.da.workFlow.controller.WorkFlowController;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @Description: 流程相关定时任务
* @Author: yangxuenan
* date: 2020/12/11 10:18
*/
@Component
@EnableScheduling
@Slf4j
public class ProcessTimer {
@Autowired
private workFlowFeignClient workFlowFeignClient;
@Autowired
private EmailUtils mailUtil;
@Autowired
private IUserEOService userEOService;
@Autowired
private WorkFlowController workFlowController;
/**
* 根据配置文件设置是否开启定时器
*/
@Value("${isNotScheduled}")
private boolean isNotScheduled; //是否开启定时器
/***
* @Description: 自动催办,任务截至时间前3天开始每天催办
* @Author: yangxuenan
* @Date: 2020/12/11 10:29
* @Param: []
* @Return: void
*/
@Scheduled(cron = "0 30-30 0 * * ? ")//每天凌晨半点执行
// @Scheduled(cron = "*/5 * * * * ?")//每5秒执行一次
// @Scheduled(cron = "0/20 * * * * ?")
public void urging() {
if(isNotScheduled){
log.info("=================================自动催办定时任务启动=====================================");
// List<BusProcessName> busProcessNames = workFlowFeignClient.queryBusProcessNameForEnd(null);
// if (null != busProcessNames && 0 < busProcessNames.size()) {
// for (BusProcessName busProcessName : busProcessNames) {
// String type = busProcessName.getPrcType();
// Integer typeInt = 99;
// if (StringUtils.isNotEmpty(type)) {
// typeInt = Integer.valueOf(type);
// }
// type = chooseType(typeInt, type);
//
// UserEO userEO = userEOService.selectByPrimaryKey(busProcessName.getCreatUserName());
// String[] array = userEO.getEmail().split(",");
// String overTime = busProcessName.getOverTime();
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
// Date dateTime = null;
// Integer num = 3;
// try {
// dateTime = simpleDateFormat.parse(overTime);
// Date now = new Date();
// long daysBetween = (dateTime.getTime() - now.getTime() + 1000000) / (60 * 60 * 24 * 1000);
// num = Integer.valueOf(String.valueOf(daysBetween));
// } catch (ParseException e) {
// SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
// try {
// dateTime = simpleDateFormat1.parse(overTime);
// Date now = new Date();
// long daysBetween = (dateTime.getTime() - now.getTime() + 1000000) / (60 * 60 * 24 * 1000);
// num = Integer.valueOf(String.valueOf(daysBetween));
// } catch (ParseException e1) {
// e.getMessage();
// }
// }
//
// String msg = "您好,[" + busProcessName.getPrcNum() + "]-[" + busProcessName.getPrcName() + "] 您有待办任务未及时办理,距离截至日期还有[" + String.valueOf(num) + "]天 请及时办理,请登录全球标准法规管理系统 ( http://39.98.140.126:10005/#/login ) 办理:链接 ( http://39.98.140.126:10005/#/processCenter?tabsName=ProcessCenter ) 。\n" +
// " ——来自 全球标准法规管理系统";
// String title = "GSRM——【待办任务】[" + type + "] 您有未完成的待办任务";
// mailUtil.sendMsgFeign(array, title, msg);
// }
// }
log.info("=================================自动催办定时任务结束=====================================");
}
}
public String chooseType(Integer typeInt, String type) {
switch (typeInt) {
case 1:
type = "法规入库及评估流程";
break;
case 2:
type = "标准法规技术储备评估流程";
break;
case 3:
type = "项目评估流程";
break;
case 4:
type = "企标制修订流程";
break;
case 5:
type = "未符合项跟踪流程";
break;
case 6:
type = "企标制修订申请流程";
break;
case 7:
type = "企标废止流程";
break;
case 8:
type = "企标延期制修订申请流程";
break;
case 9:
type = "标准采购流程";
break;
case 10:
type = "工作组会前申请流程";
break;
case 11:
type = "企标制修订评估流程";
break;
case 12:
type = "企标勘误流程";
break;
case 13:
type = "行政管理要求评估流程";
break;
case 14:
type = "政策入库及评估流程";
break;
case 15:
type = "标准翻译申请流程";
break;
case 16:
type = "工作组会后管理流程";
break;
case 17:
type = "企标备案流程";
break;
case 18:
type = "标准法规清单发布/更新流程";
break;
case 19:
type = "企标复审流程";
break;
default:
break;
}
return type;
}
@Scheduled(cron = "0 0 10 * * ? ")//每天十点执行
// @Scheduled(cron = "*/20 * * * * ? ")//每天十点执行
public void everyDayTenOlockScan() {
if(isNotScheduled){
log.info("=================================政策课题组会后流程定时任务启动=====================================");
List<BusProcessNew> busProcessNews=new ArrayList<>();
busProcessNews=workFlowFeignClient.everyDayTenOlock();
if (!busProcessNews.isEmpty()){
for (BusProcessNew bus:busProcessNews) {
JSONObject jsonObject= JSON.parseObject(bus.getMesg());
jsonObject.put("auto","1");
ResponseMessage responseMessage = workFlowController.startProcessNew("19",jsonObject.getString("revisionId"),null);
BusMes busMes=new BusMes();
busMes.setTaskIds(String.valueOf(responseMessage.getData()));
busMes.setJson(jsonObject.toJSONString());
busMes.setUserId(jsonObject.getString("revisionId"));
Wrapper<String> wrapper=workFlowFeignClient.completeTaskByUserId(busMes);
log.info("政策课题组会后流程已发起");
}
}
log.info("=================================政策课题组会后流程定时任务启动=====================================");
}
}
@Scheduled(cron = "0 0 10 * * ? ")//每天十点执行
// @Scheduled(cron = "0 0 0/1 * * ? ")//每天十点执行
// @Scheduled(cron = "*/40 * * * * ? ")//20s
public void everyDayTenOlockScanSAM() {
if(isNotScheduled){
log.info("=================================标准化活动参会流程定时任务启动=====================================");
List<BusProcessNew> busProcessNews=new ArrayList<>();
busProcessNews=workFlowFeignClient.everyDayTenOlockSAM();
if (!busProcessNews.isEmpty()){
for (BusProcessNew bus:busProcessNews) {
JSONObject jsonObject= JSON.parseObject(bus.getMesg());
String taskInfo = bus.getTaskInfo();
String result = jsonObject.getJSONObject("roleList").getString("dockUser");
result = result.split(",")[0];
jsonObject.put("member",result);
if(taskInfo.equals("标准化活动参会流程-流程结束")){
jsonObject.put("auto","1");
ResponseMessage responseMessage = workFlowController.startProcessNew("22",result,null);
BusMes busMes=new BusMes();
busMes.setTaskIds(String.valueOf(responseMessage.getData()));
busMes.setJson(jsonObject.toJSONString());
busMes.setUserId(result);
Wrapper<String> wrapper=workFlowFeignClient.completeTaskByUserId(busMes);
System.out.println("标准化活动会后流程自动发起");
}
}
}
log.info("=================================标准化活动参会流程定时任务启动=====================================");
}
}
}