|
@@ -1,23 +1,24 @@
|
|
|
package com.factory.init;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.Callable;
|
|
|
import java.util.concurrent.ConcurrentMap;
|
|
|
-import java.util.concurrent.FutureTask;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.Future;
|
|
|
|
|
|
import org.quartz.DisallowConcurrentExecution;
|
|
|
import org.quartz.Job;
|
|
|
import org.quartz.JobExecutionContext;
|
|
|
import org.quartz.JobExecutionException;
|
|
|
-import org.springframework.web.socket.TextMessage;
|
|
|
|
|
|
import com.factory.base.entity.task.OnsiteCalendar;
|
|
|
import com.factory.base.entity.task.SendMsgReq;
|
|
|
-import com.factory.common.CommonUtil;
|
|
|
+import com.factory.base.util.time.TimeUtils;
|
|
|
import com.factory.service.MsgService;
|
|
|
import com.factory.service.OnsiteTaskService;
|
|
|
import com.factory.websocket.WsSessionManager;
|
|
@@ -54,8 +55,9 @@ public class OnsiteRemindJob implements Job {
|
|
|
* @param paramMap
|
|
|
*/
|
|
|
public void createTask(ConcurrentMap<String, Object> paramMap) {
|
|
|
+ ExecutorService executorService = (ExecutorService) paramMap.get("executorService");
|
|
|
Integer result = 0;//没什么意义只是为了不出现整体并行
|
|
|
- List<FutureTask<Integer>> tasks = new ArrayList<>();
|
|
|
+ List<Callable<Integer>> tasks = new ArrayList<>();
|
|
|
tasks.add(getDayFutureTask(paramMap, true));
|
|
|
tasks.add(getWeekFutureTask(paramMap, true));
|
|
|
tasks.add(getMonthFutureTask(paramMap, true));
|
|
@@ -63,8 +65,9 @@ public class OnsiteRemindJob implements Job {
|
|
|
tasks.add(getWeekFutureTask(paramMap, false));
|
|
|
tasks.add(getMonthFutureTask(paramMap, false));
|
|
|
try {
|
|
|
- for (FutureTask<Integer> t : tasks) {
|
|
|
- t.get();
|
|
|
+ List<Future<Integer>> rlist = executorService.invokeAll(tasks);
|
|
|
+ for (Future<Integer> t : rlist) {
|
|
|
+ result+=t.get();
|
|
|
}//等等所有线程结束
|
|
|
} catch (Throwable e) {
|
|
|
log.error("createTask生产任务出错",e);
|
|
@@ -79,21 +82,20 @@ public class OnsiteRemindJob implements Job {
|
|
|
* @param paramMap
|
|
|
* @return
|
|
|
*/
|
|
|
- private FutureTask<Integer> getDayFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
|
|
|
- HashMap param = new HashMap();
|
|
|
+ private Callable<Integer> getDayFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
|
|
|
+ HashMap<String,Object> param = new HashMap<>();
|
|
|
param.put("type_flag", 0);
|
|
|
- Callable cal = null;
|
|
|
+ LocalTime now = LocalTime.now();
|
|
|
+ param.put("time", now.format(TimeUtils.timeMiniteFormatter));
|
|
|
+ Callable<Integer> cal = null;
|
|
|
if (isWork) {
|
|
|
param.put("remind_task_flag", 0);
|
|
|
- cal = new remindOnsiteWork(paramMap, param);
|
|
|
+ cal = new RemindOnsiteWorker(paramMap, param);
|
|
|
} else {
|
|
|
param.put("remind_nowork_flag", 0);
|
|
|
- cal = new remindOnsiteNoWork(paramMap, param);
|
|
|
+ cal = new RemindOnsiteNoWorker(paramMap, param);
|
|
|
}
|
|
|
- FutureTask<Integer> dayTask = new FutureTask<Integer>(cal);
|
|
|
- Thread thread = new Thread(dayTask);
|
|
|
- thread.start(); //开启线程
|
|
|
- return dayTask;
|
|
|
+ return cal;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -102,21 +104,18 @@ public class OnsiteRemindJob implements Job {
|
|
|
* @param paramMap
|
|
|
* @return
|
|
|
*/
|
|
|
- private FutureTask<Integer> getWeekFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
|
|
|
- HashMap param = new HashMap();
|
|
|
+ private Callable<Integer> getWeekFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
|
|
|
+ HashMap<String,Object> param = new HashMap<>();
|
|
|
param.put("type_flag", 1);
|
|
|
- Callable cal = null;
|
|
|
+ Callable<Integer> cal = null;
|
|
|
if (isWork) {
|
|
|
param.put("remind_task_flag", 0);
|
|
|
- cal = new remindOnsiteWork(paramMap, param);
|
|
|
+ cal = new RemindOnsiteWorker(paramMap, param);
|
|
|
} else {
|
|
|
param.put("remind_nowork_flag", 0);
|
|
|
- cal = new remindOnsiteNoWork(paramMap, param);
|
|
|
+ cal = new RemindOnsiteNoWorker(paramMap, param);
|
|
|
}
|
|
|
- FutureTask<Integer> weekTask = new FutureTask<Integer>(cal);
|
|
|
- Thread thread = new Thread(weekTask);
|
|
|
- thread.start(); //开启线程
|
|
|
- return weekTask;
|
|
|
+ return cal;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -125,34 +124,31 @@ public class OnsiteRemindJob implements Job {
|
|
|
* @param paramMap
|
|
|
* @return
|
|
|
*/
|
|
|
- private FutureTask<Integer> getMonthFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
|
|
|
- HashMap param = new HashMap();
|
|
|
+ private Callable<Integer> getMonthFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
|
|
|
+ HashMap<String,Object> param = new HashMap<>();
|
|
|
param.put("type_flag", 2);
|
|
|
- Callable cal = null;
|
|
|
+ Callable<Integer> cal = null;
|
|
|
if (isWork) {
|
|
|
param.put("remind_task_flag", 0);
|
|
|
- cal = new remindOnsiteWork(paramMap, param);
|
|
|
+ cal = new RemindOnsiteWorker(paramMap, param);
|
|
|
} else {
|
|
|
param.put("remind_nowork_flag", 0);
|
|
|
- cal = new remindOnsiteNoWork(paramMap, param);
|
|
|
+ cal = new RemindOnsiteNoWorker(paramMap, param);
|
|
|
}
|
|
|
- FutureTask<Integer> monthTask = new FutureTask<Integer>(cal);
|
|
|
- Thread thread = new Thread(monthTask);
|
|
|
- thread.start(); //开启线程
|
|
|
- return monthTask;
|
|
|
+ return cal;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 发送提醒 需要工作的提醒
|
|
|
*/
|
|
|
- public class remindOnsiteWork implements Callable<Integer> {
|
|
|
+ public class RemindOnsiteWorker implements Callable<Integer> {
|
|
|
|
|
|
private ConcurrentMap<String, Object> paramMap;
|
|
|
- private HashMap paramQuery;
|
|
|
+ private HashMap<String,Object> paramQuery;
|
|
|
|
|
|
|
|
|
- public remindOnsiteWork(ConcurrentMap<String, Object> paramMap, HashMap paramQuery) {
|
|
|
+ public RemindOnsiteWorker(ConcurrentMap<String, Object> paramMap, HashMap<String,Object> paramQuery) {
|
|
|
this.paramMap = paramMap;
|
|
|
this.paramQuery = paramQuery;
|
|
|
}
|
|
@@ -161,38 +157,29 @@ public class OnsiteRemindJob implements Job {
|
|
|
@Override
|
|
|
public Integer call() throws Exception {
|
|
|
OnsiteTaskService onsiteTaskService = (OnsiteTaskService) paramMap.get("onsiteTaskService");
|
|
|
+ //获取了全部等待中的任务
|
|
|
List<OnsiteCalendar> cals = onsiteTaskService.getRemindWork(paramQuery);
|
|
|
- String day = null;
|
|
|
- String format = "yyyy-MM-dd HH:mm";
|
|
|
- for (OnsiteCalendar cal : cals) {
|
|
|
- if (cal.getStart_day() != null && cal.getStart_day().trim().length() > 0) {
|
|
|
- day = cal.getTask_time() + " " + cal.getStart_day();
|
|
|
- format = "yyyy-MM-dd HH:mm";
|
|
|
- } else {
|
|
|
- day = cal.getTask_time();
|
|
|
- format = "yyyy-MM-dd";
|
|
|
- }
|
|
|
- boolean flag = CommonUtil.getDateCompare(CommonUtil.getStrDate(day, format, 0), new Date(), false);
|
|
|
- if (flag) {
|
|
|
- String token = String.valueOf(cal.getUser_id());
|
|
|
- if (WsSessionManager.SESSION_POOL.containsKey(token)) {
|
|
|
- try {
|
|
|
- WsSessionManager.SESSION_POOL.get(token).
|
|
|
- sendMessage(new TextMessage("有一个防错巡检需要处理,请及时操作!"));
|
|
|
- //update onsite_task set ${flag}=${flagVal} where id=${onsite_task_id}
|
|
|
- Map<String, Object> qm = new HashMap<>();
|
|
|
- qm.put("flag", "remind_task_flag");
|
|
|
- qm.put("flagVal", remind_handle_flag);
|
|
|
- qm.put("onsite_task_id", cal.getOnsite_task_id());
|
|
|
- onsiteTaskService.updateOnsiteRemindFlag(qm);
|
|
|
- } catch (Throwable e) {
|
|
|
- log.error("remindOnsiteWork生产任务出错",e);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+ try {
|
|
|
+ for (OnsiteCalendar cal : cals) {
|
|
|
+ if (cal.getType_flag()==0&&now.isAfter(TimeUtils.paserDayTimeString(cal.getTask_time()+ " " + cal.getStart_day()+":00"))) {
|
|
|
+ //还未到时间
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String token = String.valueOf(cal.getUser_id());
|
|
|
+ if (WsSessionManager.SESSION_POOL.containsKey(token)) {
|
|
|
+
|
|
|
+ WsSessionManager.sendMessage(token,"有一个防错巡检需要处理,请及时操作!");
|
|
|
+ //update onsite_task set ${flag}=${flagVal} where id=${onsite_task_id}
|
|
|
+ Map<String, Object> qm = new HashMap<>();
|
|
|
+ qm.put("flag", "remind_task_flag");
|
|
|
+ qm.put("flagVal", remind_handle_flag);
|
|
|
+ qm.put("onsite_task_id", cal.getOnsite_task_id());
|
|
|
+ onsiteTaskService.updateOnsiteRemindFlag(qm);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Throwable e) {
|
|
|
+ log.error("remindOnsiteWork生产任务出错",e);
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
@@ -202,13 +189,13 @@ public class OnsiteRemindJob implements Job {
|
|
|
/**
|
|
|
* 发送提醒 没有工作的提醒
|
|
|
*/
|
|
|
- public class remindOnsiteNoWork implements Callable<Integer> {
|
|
|
+ public class RemindOnsiteNoWorker implements Callable<Integer> {
|
|
|
|
|
|
private ConcurrentMap<String, Object> paramMap;
|
|
|
- private HashMap paramQuery;
|
|
|
+ private HashMap<String,Object> paramQuery;
|
|
|
|
|
|
|
|
|
- public remindOnsiteNoWork(ConcurrentMap<String, Object> paramMap, HashMap paramQuery) {
|
|
|
+ public RemindOnsiteNoWorker(ConcurrentMap<String, Object> paramMap, HashMap<String,Object> paramQuery) {
|
|
|
this.paramMap = paramMap;
|
|
|
this.paramQuery = paramQuery;
|
|
|
}
|
|
@@ -217,57 +204,45 @@ public class OnsiteRemindJob implements Job {
|
|
|
public Integer call() throws Exception {
|
|
|
OnsiteTaskService onsiteTaskService = (OnsiteTaskService) paramMap.get("onsiteTaskService");
|
|
|
MsgService msgService = (MsgService) paramMap.get("msgService");
|
|
|
+ //获取了全部发送工作提醒但是到期
|
|
|
List<OnsiteCalendar> cals = onsiteTaskService.getRemindWork(paramQuery);
|
|
|
- String day = null;
|
|
|
- String format = "yyyy-MM-dd HH:mm";
|
|
|
- int min;
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
for (OnsiteCalendar cal : cals) {
|
|
|
- if (cal.getStart_day() != null && cal.getStart_day().trim().length() > 0) {
|
|
|
- day = cal.getTask_time() + " " + cal.getStart_day();
|
|
|
- format = "yyyy-MM-dd HH:mm";
|
|
|
- min = cal.getDay_outtime() + cal.getDay_validate();
|
|
|
- } else {
|
|
|
- day = cal.getTask_time();
|
|
|
- format = "yyyy-MM-dd";
|
|
|
- min = 0;
|
|
|
- }
|
|
|
- boolean flag = CommonUtil.getDateCompare(CommonUtil.getStrDate(day, format, min), new Date(), true);
|
|
|
- if (cal.getType_flag() == 1) {
|
|
|
- flag = false;
|
|
|
- if (CommonUtil.getWeekOfDate(new Date()) >= cal.getWeek_day()) {
|
|
|
- flag = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if (cal.getType_flag() == 2) {
|
|
|
- flag = false;
|
|
|
- if (CommonUtil.getWeekOfDate(new Date()) >= cal.getMonth_day()) {
|
|
|
- flag = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if (flag) {
|
|
|
- Map map = new HashMap();
|
|
|
- map.put("type", type);
|
|
|
- Long userid = onsiteTaskService.getRemindNoworkToManager(map);
|
|
|
- if (userid != null && userid > 0) {
|
|
|
- map = new HashMap();
|
|
|
- map.put("task_id", cal.getOnsite_task_id());
|
|
|
- map.put("approval_user_id", userid);
|
|
|
- map.put("task_type", type);
|
|
|
- map.put("flag", "remind_nowork_flag");
|
|
|
- map.put("flagVal", remind_handle_flag);
|
|
|
- map.put("onsite_task_id", cal.getOnsite_task_id());
|
|
|
- onsiteTaskService.addRemindNowork(map);
|
|
|
-// onsiteTaskService.updateOnsiteRemindFlag(map);
|
|
|
-
|
|
|
- //需要推动调用这个 todo
|
|
|
- //发送微信消息
|
|
|
- SendMsgReq sendMsgReq = new SendMsgReq();
|
|
|
- sendMsgReq.setToUserId(userid);//351L
|
|
|
- sendMsgReq.setTitle("计划提醒");
|
|
|
- sendMsgReq.setContent("您有待提醒的计划,请登录小程序查看");
|
|
|
- msgService.sendWechatMessage(sendMsgReq);
|
|
|
- }
|
|
|
+ if (cal.getType_flag() == 0 && now
|
|
|
+ .isAfter(TimeUtils.paserDayTimeString(cal.getTask_time() + " " + cal.getStart_day() + ":00").plusMinutes(cal.getDay_validate()))) {
|
|
|
+ // 还未到时间
|
|
|
+ continue;
|
|
|
+ } else if (cal.getType_flag() == 1 && now.getDayOfWeek().getValue() < cal.getWeek_day()) {// 周
|
|
|
+ // 还未到时间
|
|
|
+ continue;
|
|
|
+ } else if (cal.getType_flag() == 2 && now.getDayOfMonth() < cal.getMonth_day()) {// 月
|
|
|
+ // 还未到时间
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String,Object> map = new HashMap<>();
|
|
|
+ map.put("type", type);
|
|
|
+ Long roleId = onsiteTaskService.getRemindNoworkToManager(map);
|
|
|
+ if (roleId != null && roleId > 0) {
|
|
|
+ map = new HashMap<>();
|
|
|
+ map.put("task_id", cal.getOnsite_task_id());
|
|
|
+ map.put("approval_role_id", roleId);
|
|
|
+ map.put("task_type", type);
|
|
|
+ map.put("flag", "remind_nowork_flag");
|
|
|
+ map.put("flagVal", remind_handle_flag);
|
|
|
+ map.put("onsite_task_id", cal.getOnsite_task_id());
|
|
|
+ onsiteTaskService.addRemindNowork(map);
|
|
|
+
|
|
|
+ //需要推动调用这个 todo
|
|
|
+ //发送微信消息
|
|
|
+ SendMsgReq sendMsgReq = new SendMsgReq();
|
|
|
+ sendMsgReq.setToUserId(roleId);//3
|
|
|
+ sendMsgReq.setTitle("计划提醒");
|
|
|
+ sendMsgReq.setContent("您有待提醒的计划,请登录小程序查看");
|
|
|
+ msgService.sendWechatMessageByRole(sendMsgReq,roleId);
|
|
|
}
|
|
|
+
|
|
|
|
|
|
}
|
|
|
return 0;
|