baihe 3 anni fa
parent
commit
c25b2936a5
26 ha cambiato i file con 570 aggiunte e 493 eliminazioni
  1. 18 3
      application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java
  2. 15 11
      application-facade/src/main/resources/mapper/ReminderMapper.xml
  3. 1 2
      application-task/src/main/java/com/factory/ApplicationTaskApplication.java
  4. 42 0
      application-task/src/main/java/com/factory/common/CommonConfig.java
  5. 16 12
      application-task/src/main/java/com/factory/init/AutoApproveErrorTaskJob.java
  6. 95 108
      application-task/src/main/java/com/factory/init/FirstRemindJob.java
  7. 22 17
      application-task/src/main/java/com/factory/init/FirstTaskJob.java
  8. 94 119
      application-task/src/main/java/com/factory/init/OnsiteRemindJob.java
  9. 56 52
      application-task/src/main/java/com/factory/init/OnsiteTaskJob.java
  10. 4 1
      application-task/src/main/java/com/factory/init/TimerTaskInit.java
  11. 8 1
      application-task/src/main/java/com/factory/mapper/FirstTaskMapper.java
  12. 3 0
      application-task/src/main/java/com/factory/mapper/UserMapper.java
  13. 5 5
      application-task/src/main/java/com/factory/service/FirstTaskService.java
  14. 8 0
      application-task/src/main/java/com/factory/service/MsgService.java
  15. 6 6
      application-task/src/main/java/com/factory/service/OnsiteTaskService.java
  16. 7 6
      application-task/src/main/java/com/factory/service/impl/FirstTaskServiceImp.java
  17. 56 7
      application-task/src/main/java/com/factory/service/impl/MsgServiceImpl.java
  18. 6 6
      application-task/src/main/java/com/factory/service/impl/OnsiteTaskServiceImp.java
  19. 0 7
      application-task/src/main/resources/application-uat.yml
  20. 21 23
      application-task/src/main/resources/mappers/FirstTaskMapper.xml
  21. 47 33
      application-task/src/main/resources/mappers/OnsiteTaskMapper.xml
  22. 7 0
      application-task/src/main/resources/mappers/UserMapper.xml
  23. 2 5
      common-base/src/main/java/com/factory/base/entity/task/FirstCalendar.java
  24. 4 33
      common-base/src/main/java/com/factory/base/entity/task/FirstTask.java
  25. 6 31
      common-base/src/main/java/com/factory/base/entity/task/OnsiteTask.java
  26. 21 5
      common-base/src/main/java/com/factory/base/util/time/TimeUtils.java

+ 18 - 3
application-facade/src/main/java/com/factory/wx/service/impl/PlanReminderServiceImpl.java

@@ -1,14 +1,14 @@
 package com.factory.wx.service.impl;
 
+import java.util.ArrayList;
 import java.util.List;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.factory.user.service.UserRoleService;
 import com.factory.web.entity.fa.FirstArticleItem;
 import com.factory.web.entity.fa.FirstArticleTitle;
 import com.factory.web.entity.fa.FirstArticleWorkshop;
@@ -32,11 +32,14 @@ import com.factory.wx.mapper.ReminderMapper;
 import com.factory.wx.service.PlanReminderService;
 import com.factory.wx.service.WxPlanService;
 
+import lombok.extern.slf4j.Slf4j;
+
 /**
  * @author sMArT
  * @version 1.0
  * @date 2021-07-13 12:42 下午
  */
+@Slf4j
 @Service("planReminderService")
 public class PlanReminderServiceImpl implements PlanReminderService {
 
@@ -60,7 +63,8 @@ public class PlanReminderServiceImpl implements PlanReminderService {
     private FirstArticleItemMapper firstArticleItemMapper;
     @Autowired
     private WxPlanService wxPlanService;
-
+    @Autowired
+    private UserRoleService userRoleService;
     /**
      * 获取计划提醒列表
      *
@@ -69,6 +73,12 @@ public class PlanReminderServiceImpl implements PlanReminderService {
      */
     @Override
     public List<ReminderRes> getReminderList(PlanPageReq planPageReq) {
+        List<Long> roleIds =userRoleService.getRoleIdsByUserId(planPageReq.getUserId());
+        if(roleIds.isEmpty()) {
+    		log.error("没有权限获取超时任务{}",planPageReq);
+    		return new ArrayList<>();
+    	}
+        planPageReq.setRoleIds(roleIds);
         Page<ReminderRes> page = new Page<>(planPageReq.getPage(),planPageReq.getSize());
         return reminderMapper.getReminderList(page,planPageReq);
     }
@@ -103,6 +113,11 @@ public class PlanReminderServiceImpl implements PlanReminderService {
 
     @Override
     public void confirmReminder(PlanInfoReq planInfoReq) {
+    	List<Long> roleIds =userRoleService.getRoleIdsByUserId(planInfoReq.getUserId());
+    	if(roleIds.isEmpty()) {
+    		log.error("没有权限确认超时任务{}",planInfoReq);
+    		return;
+    	}
         reminderMapper.confirmReminder(planInfoReq);
     }
 

+ 15 - 11
application-facade/src/main/resources/mapper/ReminderMapper.xml

@@ -20,7 +20,10 @@
         AND ot.onsite_calendar_id = oc.id
         AND oc.benteler_plan_id = bp.id
         AND rat.task_type = 2
-        AND rat.approval_user_id = #{req.userId}
+        AND rat.approval_role_id = 
+        <foreach collection="req.roleIds" open="(" close=")" separator="," item="roleId">
+        	#{roleId}
+        </foreach>
         <if test="req.name!=null and req.name != ''">
             AND bp.`name` LIKE CONCAT('%',#{req.name},'%')
         </if>
@@ -40,7 +43,10 @@
         AND ot.first_article_calendar_id = oc.id
         AND oc.benteler_plan_id = bp.id
         AND rat.task_type = 1
-        AND rat.approval_user_id = #{req.userId}
+        AND rat.approval_role_id = 
+        <foreach collection="req.roleIds" open="(" close=")" separator="," item="roleId">
+        	#{roleId}
+        </foreach>
         <if test="req.name!=null and req.name != ''">
             AND bp.`name` LIKE CONCAT('%',#{req.name},'%')
         </if>
@@ -48,15 +54,13 @@
     </select>
     <update id="confirmReminder" parameterType="com.factory.wx.entity.req.PlanInfoReq">
         UPDATE remind_approval_task rat
-        SET rat.`status` = 1
-        WHERE rat.task_id IN (
-            SELECT ot.id
-            FROM onsite_calendar oc,
-                 onsite_task ot
-            WHERE ot.onsite_calendar_id = oc.id
-              AND oc.benteler_plan_id = #{planId}
-        )
-          AND rat.approval_user_id = #{userId}
+        join onsite_task ot on ot.id = rat.task_id
+        join onsite_calendar oc on ot.onsite_calendar_id = oc.id
+        SET rat.`status` = 1,rat.approval_user_id = #{userId}
+        WHERE oc.benteler_plan_id = #{planId} AND rat.approval_role_id = 
+        <foreach collection="req.roleIds" open="(" close=")" separator="," item="roleId">
+        	#{roleId}
+        </foreach>
     </update>
 
 </mapper>

+ 1 - 2
application-task/src/main/java/com/factory/ApplicationTaskApplication.java

@@ -1,13 +1,12 @@
 package com.factory;
 
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableScheduling
 @SpringBootApplication
-@MapperScan(value = "com.factory.mapper")
+//@MapperScan(value = "com.factory.mapper")
 public class ApplicationTaskApplication {
 
     public static void main(String[] args) {

+ 42 - 0
application-task/src/main/java/com/factory/common/CommonConfig.java

@@ -0,0 +1,42 @@
+package com.factory.common;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+@Configuration
+public class CommonConfig {
+
+	@Bean
+	public ExecutorService executorService() {
+		return new ThreadPoolExecutor(30, 50, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(),
+				new ThreadPoolExecutor.CallerRunsPolicy());
+	}
+
+	//@Schedule注解用
+//	@Bean
+	public TaskExecutor taskExecutor() {
+		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+		// 设置核心线程数
+		executor.setCorePoolSize(5);
+		// 设置最大线程数
+		executor.setMaxPoolSize(10);
+		// 设置队列容量
+		executor.setQueueCapacity(20);
+		// 设置线程活跃时间(秒)
+		executor.setKeepAliveSeconds(60);
+		// 设置默认线程名称
+		executor.setThreadNamePrefix("doc-");
+		// 设置拒绝策略
+		executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+		// 等待所有任务结束后再关闭线程池
+		executor.setWaitForTasksToCompleteOnShutdown(true);
+		return executor;
+	}
+}

+ 16 - 12
application-task/src/main/java/com/factory/init/AutoApproveErrorTaskJob.java

@@ -1,8 +1,12 @@
 package com.factory.init;
 
-import com.factory.base.entity.task.ApproveEntry;
-import com.factory.service.FirstTaskService;
-import com.factory.service.OnsiteTaskService;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.FutureTask;
+
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
@@ -10,22 +14,22 @@ import org.quartz.JobExecutionException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.FutureTask;
+import com.factory.base.entity.task.ApproveEntry;
+import com.factory.service.FirstTaskService;
+import com.factory.service.OnsiteTaskService;
+
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * 首件任务定时器
  */
+@Slf4j
 @DisallowConcurrentExecution
 public class AutoApproveErrorTaskJob implements Job {
-    private static Logger log = LoggerFactory.getLogger(AutoApproveErrorTaskJob.class);
 
-    private static int type2 = 2;
-    private static int type3 = 3;
+	private static int type2 = 2;
+	
+	private static int type3 = 3;
 
     @Override
     public void execute(JobExecutionContext context) throws JobExecutionException {

+ 95 - 108
application-task/src/main/java/com/factory/init/FirstRemindJob.java

@@ -1,28 +1,25 @@
 package com.factory.init;
 
-import java.time.LocalTime;
-import java.time.temporal.ChronoUnit;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
-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.apache.commons.lang3.StringUtils;
 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.FirstCalendar;
 import com.factory.base.entity.task.SendMsgReq;
-import com.factory.base.util.time.TimeConvert;
-import com.factory.common.CommonUtil;
+import com.factory.base.util.time.TimeUtils;
 import com.factory.service.FirstTaskService;
 import com.factory.service.MsgService;
 import com.factory.websocket.WsSessionManager;
@@ -56,15 +53,17 @@ public class FirstRemindJob 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(getFirstFutureTask(paramMap, true));
         tasks.add(get200FutureTask(paramMap, true));
         tasks.add(getFirstFutureTask(paramMap, false));
         tasks.add(get200FutureTask(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);
@@ -80,21 +79,19 @@ public class FirstRemindJob implements Job {
      * @param isWork
      * @return
      */
-    private FutureTask<Integer> getFirstFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
-        HashMap param = new HashMap();
+    private Callable<Integer> getFirstFutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
+        HashMap<String,Object> param = new HashMap<>();
         param.put("type_flag", 0);
-        Callable cal = null;
+        Callable<Integer> cal = null;
         if (isWork) {
             param.put("remind_task_flag", 0);
-            cal = new remindFirstWork(paramMap, param);
+            cal = new RemindFirstWorker(paramMap, param);
         } else {
             param.put("remind_nowork_flag", 0);
-            cal = new remindFirstNoWork(paramMap, param);
+            cal = new RemindFirstNoWorker(paramMap, param);
         }
-        FutureTask<Integer> task = new FutureTask<Integer>(cal);
-        Thread thread = new Thread(task);
-        thread.start();  //开启线程
-        return task;
+        
+        return cal;
     }
 
 
@@ -105,88 +102,82 @@ public class FirstRemindJob implements Job {
      * @param isWork
      * @return
      */
-    private FutureTask<Integer> get200FutureTask(ConcurrentMap<String, Object> paramMap, boolean isWork) {
-        HashMap param = new HashMap();
+    private  Callable<Integer>  get200FutureTask(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 remindFirstWork(paramMap, param);
+            cal = new RemindFirstWorker(paramMap, param);
         } else {
             param.put("remind_nowork_flag", 0);
-            cal = new remindFirstNoWork(paramMap, param);
+            cal = new RemindFirstNoWorker(paramMap, param);
         }
-        FutureTask<Integer> task = new FutureTask<Integer>(cal);
-        Thread thread = new Thread(task);
-        thread.start();  //开启线程
-        return task;
+        return cal;
     }
 
     /**
      * 发送提醒 需要工作的提醒
      */
-    public class remindFirstWork implements Callable<Integer> {
+    public class RemindFirstWorker implements Callable<Integer> {
 
         private ConcurrentMap<String, Object> paramMap;
-        private HashMap paramQuery;
+        private HashMap<String,Object> paramQuery;
 
 
-        public remindFirstWork(ConcurrentMap<String, Object> paramMap, HashMap paramQuery) {
+        public RemindFirstWorker(ConcurrentMap<String, Object> paramMap, HashMap<String,Object> paramQuery) {
             this.paramMap = paramMap;
             this.paramQuery = paramQuery;
         }
 
 
-        @Override
-        public Integer call() throws Exception {
-            FirstTaskService firstTaskService = (FirstTaskService) paramMap.get("firstTaskService");
-            List<FirstCalendar> cals = firstTaskService.getRemindWork(paramQuery);
-            String day = null;
-            String format = "yyyy-MM-dd HH:mm";
-            for (FirstCalendar cal : cals) {
-                if (StringUtils.isNotBlank(cal.getFirstStart())) {
-                    day = cal.getTaskTime() + " " + cal.getFirstStart();
-                    format = "yyyy-MM-dd HH:mm";
-                } else {
-                    day = cal.getTaskTime();
-                    format = "yyyy-MM-dd";
-                }
-                boolean flag = CommonUtil.getDateCompare(CommonUtil.getStrDate(day, format, 0), new Date(), false);
-                if (flag) {
-                    String tokenA = String.valueOf(cal.getPrincipalOneId());
-                    String tokenB = String.valueOf(cal.getPrincipalTwoId());
-                    Arrays.asList(tokenA, tokenB).forEach(token -> {
-                        if (WsSessionManager.SESSION_POOL.containsKey(token)) {
-                            try {
-                                WsSessionManager.SESSION_POOL.get(token).
-                                        sendMessage(new TextMessage("有一个首件巡检需要处理,请及时操作!"));
-                                Map<String, Object> qm = new HashMap<>();
-                                qm.put("flag", "remind_task_flag");
-                                qm.put("flagVal", remind_handle_flag);
-                                qm.put("first_task_id", cal.getFirstTaskId());
-                                firstTaskService.updateFirstRemindFlag(qm);
-                            } catch (Throwable e) {
-                            	 log.error("remindFirstWork生产任务出错",e);
-                            }
-                        }
-                    });
-                }
-            }
-            return 0;
-        }
+		@Override
+		public Integer call() throws Exception {
+			FirstTaskService firstTaskService = (FirstTaskService) paramMap.get("firstTaskService");
+			// 获取全部微提醒的任务
+			List<FirstCalendar> cals = firstTaskService.getRemindWork(paramQuery);
+			LocalDateTime now = LocalDateTime.now();
+			for (FirstCalendar cal : cals) {
+				if (StringUtils.isNotBlank(cal.getFirstRemind()) && now
+						.isAfter(TimeUtils.paserDayTimeString(cal.getTaskTime() + " " + cal.getFirstRemind() + ":00"))) {//首件
+					// 还未到时间
+					continue;
+				} else if (now.isAfter(TimeUtils.paserDayTimeString(cal.getTaskTime() + " "+cal.getTwoRemind()+":00"))) {//200件
+					continue;
+				}
+
+				String tokenA = String.valueOf(cal.getPrincipalOneId());
+				String tokenB = String.valueOf(cal.getPrincipalTwoId());
+				Arrays.asList(tokenA, tokenB).forEach(token -> {
+					if (WsSessionManager.SESSION_POOL.containsKey(token)) {
+						try {
+							WsSessionManager.sendMessage(token, "有一个首件巡检需要处理,请及时操作!");
+							Map<String, Object> qm = new HashMap<>();
+							qm.put("flag", "remind_task_flag");
+							qm.put("flagVal", remind_handle_flag);
+							qm.put("first_task_id", cal.getFirstTaskId());
+							firstTaskService.updateFirstRemindFlag(qm);
+						} catch (Throwable e) {
+							log.error("remindFirstWork生产任务出错", e);
+						}
+					}
+				});
+			}
+			return 0;
+		}
     }
 
 
     /**
      * 发送提醒  没有工作的提醒
      */
-    public class remindFirstNoWork implements Callable<Integer> {
+    public class RemindFirstNoWorker implements Callable<Integer> {
 
         private ConcurrentMap<String, Object> paramMap;
-        private HashMap paramQuery;
+        private HashMap<String,Object> paramQuery;
 
 
-        public remindFirstNoWork(ConcurrentMap<String, Object> paramMap, HashMap paramQuery) {
+        public RemindFirstNoWorker(ConcurrentMap<String, Object> paramMap, HashMap<String,Object> paramQuery) {
             this.paramMap = paramMap;
             this.paramQuery = paramQuery;
         }
@@ -196,44 +187,40 @@ public class FirstRemindJob implements Job {
             FirstTaskService firstTaskService = (FirstTaskService) paramMap.get("firstTaskService");
             MsgService msgService = (MsgService) paramMap.get("msgService");
             List<FirstCalendar> cals = firstTaskService.getRemindWork(paramQuery);
-            String day = null;
-            String format = "yyyy-MM-dd HH:mm";
-            int min;
+            
+            LocalDateTime now = LocalDateTime.now();
+            
             for (FirstCalendar cal : cals) {
-                if (StringUtils.isNotBlank(cal.getFirstStart())) {
-                    day = cal.getTaskTime() + " " + cal.getFirstStart();
-                    format = "yyyy-MM-dd HH:mm";
-                    LocalTime temporal1Inclusive = TimeConvert.timeString2time(TimeConvert.timeString2String(cal.getFirstRemind(), cal.getUpleverTimeNum(), "HH:mm"), 0);
-                    LocalTime temporal2Inclusive = TimeConvert.timeString2time(cal.getFirstStart(), 0);
-                    min = Integer.parseInt(ChronoUnit.MINUTES.between(temporal1Inclusive, temporal2Inclusive)+"");
-                } else {
-                    day = cal.getTaskTime() + " " + cal.getTwoRemind();
-                    format = "yyyy-MM-dd HH:mm";
-                    min = 0;
-                }
-                boolean flag = CommonUtil.getDateCompare(CommonUtil.getStrDate(day, format, min), new Date(), true);
-                if (flag) {
-                    Map map = new HashMap();
-                    map.put("type", type);
-                    Long userid = firstTaskService.getRemindNoworkToManager(map);
-                    if (userid != null && userid > 0) {
-                        map = new HashMap();
-                        map.put("task_id", cal.getFirstTaskId());
-                        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("first_task_id", cal.getFirstTaskId());
-                        firstTaskService.addRemindNowork(map);
-
-                        //需要推动调用这个 todo
-                        //发送微信消息
-                        SendMsgReq sendMsgReq = new SendMsgReq();
-                        sendMsgReq.setToUserId(userid);
-                        sendMsgReq.setTitle("计划提醒");
-                        sendMsgReq.setContent("您有待提醒的计划,请登录小程序查看");
-                        msgService.sendWechatMessage(sendMsgReq);
-                    }
+               
+                if (StringUtils.isNotBlank(cal.getFirstRemind()) && now
+						.isAfter(TimeUtils.paserDayTimeString(cal.getTaskTime() + " " + cal.getFirstRemind() + ":00").plusMinutes(cal.getUpleverTimeNum()))) {
+					// 还未到时间
+					continue;
+				} else if (now.isAfter(TimeUtils.paserDayTimeString(cal.getTaskTime() + " "+cal.getTwoRemind()+":00").plusMinutes(cal.getUpleverTimeNum()))) {
+					continue;
+				}
+
+                
+                Map<String,Object> map = new HashMap<>();
+                map.put("type", type);
+                Long roleId = firstTaskService.getRemindNoworkToManager(map);
+                if (roleId != null && roleId > 0) {
+                    map = new HashMap<>();
+                    map.put("task_id", cal.getFirstTaskId());
+                    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("first_task_id", cal.getFirstTaskId());
+                    firstTaskService.addRemindNowork(map);
+
+                    //需要推动调用这个 todo
+                    //发送微信消息
+                    SendMsgReq sendMsgReq = new SendMsgReq();
+                    sendMsgReq.setToUserId(roleId);
+                    sendMsgReq.setTitle("计划提醒");
+                    sendMsgReq.setContent("您有待提醒的计划,请登录小程序查看");
+                    msgService.sendWechatMessageByRole(sendMsgReq,roleId);
                 }
 
             }

+ 22 - 17
application-task/src/main/java/com/factory/init/FirstTaskJob.java

@@ -1,11 +1,15 @@
 package com.factory.init;
 
+import java.time.LocalDate;
 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;
@@ -41,12 +45,14 @@ public class FirstTaskJob implements Job {
      * @param paramMap
      */
     public void createTask(ConcurrentMap<String, Object> paramMap) {
-        List<FutureTask<Integer>> tasks = new ArrayList<>();
+    	ExecutorService executorService = (ExecutorService) paramMap.get("executorService");
+        List<Callable<Integer>> tasks = new ArrayList<>();
         tasks.add(getFirstFutureTask(paramMap));
         tasks.add(get200FutureTask(paramMap));
         try {
-            for (FutureTask<Integer> t : tasks) {
-                t.get();
+        	List<Future<Integer>> rlist = executorService.invokeAll(tasks);
+            for (Future<Integer> t : rlist) {
+            	t.get();
             }//等等所有线程结束
         } catch (Throwable e) {
         	log.error("createTask生产任务出错",e);
@@ -60,10 +66,8 @@ public class FirstTaskJob implements Job {
      * @param paramMap
      * @return
      */
-    private FutureTask<Integer> getFirstFutureTask(ConcurrentMap<String, Object> paramMap) {
-        FutureTask<Integer> task = new FutureTask<>(new addTask(paramMap, 0));
-        Thread thread = new Thread(task);
-        thread.start();  //开启线程
+    private Callable<Integer> getFirstFutureTask(ConcurrentMap<String, Object> paramMap) {
+    	Callable<Integer> task = new AddTaskWorker(paramMap, 0);
         return task;
     }
 
@@ -73,10 +77,8 @@ public class FirstTaskJob implements Job {
      * @param paramMap
      * @return
      */
-    private FutureTask<Integer> get200FutureTask(ConcurrentMap<String, Object> paramMap) {
-        FutureTask<Integer> task = new FutureTask<>(new addTask(paramMap, 1));
-        Thread thread = new Thread(task);
-        thread.start();  //开启线程
+    private Callable<Integer> get200FutureTask(ConcurrentMap<String, Object> paramMap) {
+    	Callable<Integer> task = new AddTaskWorker(paramMap, 1);
         return task;
     }
 
@@ -84,13 +86,13 @@ public class FirstTaskJob implements Job {
     /**
      * 生产任务
      */
-    public class addTask implements Callable<Integer> {
+    public class AddTaskWorker implements Callable<Integer> {
 
         private ConcurrentMap<String, Object> paramMap;
         private Integer typeFlag;
 
 
-        public addTask(ConcurrentMap<String, Object> paramMap, Integer typeFlag) {
+        public AddTaskWorker(ConcurrentMap<String, Object> paramMap, Integer typeFlag) {
             this.paramMap = paramMap;
             this.typeFlag = typeFlag;
         }
@@ -98,13 +100,16 @@ public class FirstTaskJob implements Job {
         @Override
         public Integer call() {
             FirstTaskService firstTaskService = (FirstTaskService) paramMap.get("firstTaskService");
-            String td = CommonUtil.getDateStr(new Date(), "yyyy-MM-dd");
-            List<FirstCalendar> cals = firstTaskService.getCalenderFirstForType(typeFlag);
+            LocalDate now = LocalDate.now();
+            Map<String,Object> param = new HashMap<>();
+            param.put("typeFlag", typeFlag);
+            param.put("date", now);
+            List<FirstCalendar> cals = firstTaskService.getCalenderFirstForType(param);
             for (FirstCalendar cal : cals) {
                 try {
                     // TODO 添加不同类型添加一个task代码
                     FirstTask task = new FirstTask();
-                    task.setTask_time(td);
+                    task.setTask_time(now);
                     task.setFirst_article_calendar_id(cal.getId());
                     firstTaskService.insertFirstTask(task);
                 } catch (Throwable e) {

+ 94 - 119
application-task/src/main/java/com/factory/init/OnsiteRemindJob.java

@@ -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;

+ 56 - 52
application-task/src/main/java/com/factory/init/OnsiteTaskJob.java

@@ -1,23 +1,24 @@
 package com.factory.init;
 
+import java.time.LocalDate;
 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.ExecutorService;
+import java.util.concurrent.Future;
 import java.util.concurrent.FutureTask;
 
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.factory.base.entity.task.OnsiteCalendar;
 import com.factory.base.entity.task.OnsiteTask;
+import com.factory.base.util.time.TimeUtils;
 import com.factory.common.CommonUtil;
 import com.factory.service.OnsiteTaskService;
 
@@ -47,14 +48,16 @@ public class OnsiteTaskJob 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));
         tasks.add(getWeekFutureTask(paramMap));
         tasks.add(getMonthFutureTask(paramMap));
         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);
@@ -68,12 +71,12 @@ public class OnsiteTaskJob implements Job {
      * @param paramMap
      * @return
      */
-    private FutureTask<Integer> getDayFutureTask(ConcurrentMap<String, Object> paramMap) {
-        HashMap param = new HashMap();
+    private Callable<Integer> getDayFutureTask(ConcurrentMap<String, Object> paramMap) {
+        HashMap<String,Object> param = new HashMap<>();
         param.put("type_flag", 0);
-        FutureTask<Integer> dayTask = new FutureTask<Integer>(new addTask(paramMap, param));
-        Thread thread = new Thread(dayTask);
-        thread.start();  //开启线程
+        param.put("today", LocalDate.now());
+        Callable<Integer> dayTask = new AddTaskWorker(paramMap, param);
+        
         return dayTask;
     }
 
@@ -83,13 +86,13 @@ public class OnsiteTaskJob implements Job {
      * @param paramMap
      * @return
      */
-    private FutureTask<Integer> getWeekFutureTask(ConcurrentMap<String, Object> paramMap) {
-        HashMap param = new HashMap();
+    private Callable<Integer> getWeekFutureTask(ConcurrentMap<String, Object> paramMap) {
+    	HashMap<String,Object> param = new HashMap<>();
         param.put("type_flag", 1);
-        param.put("week_day", CommonUtil.getWeekOfDate(new Date()));
-        FutureTask<Integer> weekTask = new FutureTask<Integer>(new addTask(paramMap, param));
-        Thread thread = new Thread(weekTask);
-        thread.start();  //开启线程
+        LocalDate[] se = TimeUtils.getStartAndEndDay(LocalDate.now(), 1, 0);
+        param.put("sday", se[0]);
+        param.put("eday", se[1]);
+        Callable<Integer> weekTask = new AddTaskWorker(paramMap, param);
         return weekTask;
     }
 
@@ -99,13 +102,13 @@ public class OnsiteTaskJob implements Job {
      * @param paramMap
      * @return
      */
-    private FutureTask<Integer> getMonthFutureTask(ConcurrentMap<String, Object> paramMap) {
-        HashMap param = new HashMap();
+    private Callable<Integer> getMonthFutureTask(ConcurrentMap<String, Object> paramMap) {
+    	HashMap<String,Object> param = new HashMap<>();
         param.put("type_flag", 2);
-        param.put("month_day", CommonUtil.getMonthOfDate(new Date()));
-        FutureTask<Integer> monthTask = new FutureTask<Integer>(new addTask(paramMap, param));
-        Thread thread = new Thread(monthTask);
-        thread.start();  //开启线程
+        LocalDate[] se = TimeUtils.getStartAndEndDay(LocalDate.now(), 2, 0);
+        param.put("sday", se[0]);
+        param.put("eday", se[1]);
+        Callable<Integer> monthTask =new AddTaskWorker(paramMap, param);
         return monthTask;
     }
 
@@ -113,13 +116,13 @@ public class OnsiteTaskJob implements Job {
     /**
      * 生产任务
      */
-    public class addTask implements Callable<Integer> {
+    public class AddTaskWorker implements Callable<Integer> {
 
         private ConcurrentMap<String, Object> paramMap;
-        private HashMap paramQuery;
+        private HashMap<String,Object> paramQuery;
 
 
-        public addTask(ConcurrentMap<String, Object> paramMap, HashMap paramQuery) {
+        public AddTaskWorker(ConcurrentMap<String, Object> paramMap, HashMap<String,Object> paramQuery) {
             this.paramMap = paramMap;
             this.paramQuery = paramQuery;
         }
@@ -129,39 +132,40 @@ public class OnsiteTaskJob implements Job {
             Date cur = new Date();
             OnsiteTaskService onsiteTaskService = (OnsiteTaskService) paramMap.get("onsiteTaskService");
             String td = CommonUtil.getDateStr(cur, "yyyy-MM-dd");
+            //直接查询没有生成任务的
             List<OnsiteCalendar> cals = onsiteTaskService.getCalenderOnsitesForType(paramQuery);
             for (OnsiteCalendar cal : cals) {
                 try {
-                    boolean flag = false;
-                    Map qMap = new HashMap<>();
-                    if (cal.getType_flag() == 1) {
-                        String[] t = CommonUtil.getWeekStartEnd(cur);//当前时间周的开始结束时间
-                        qMap.put("onsite_calendar_id", cal.getId());
-                        qMap.put("start", t[0]);
-                        qMap.put("end", t[1]);
-                        int count = onsiteTaskService.getTaskExistCount(qMap);
-                        if (count <= 0) {
-                            flag = true;
-                        }
-                    } else if (cal.getType_flag() == 2) {
-                        String[] t = CommonUtil.getDayForMonthAndDay(cur, cal.getMonth_day());//当前时间周的开始结束时间
-                        qMap.put("onsite_calendar_id", cal.getId());
-                        qMap.put("start", t[0]);
-                        qMap.put("end", t[1]);
-                        int count = onsiteTaskService.getTaskExistCount(qMap);
-                        if (count <= 0) {
-                            flag = true;
-                        }
-                    } else {
-                        flag = true;
-                    }
-
-                    if (flag) {
+//                    boolean flag = false;
+//                    Map qMap = new HashMap<>();
+//                    if (cal.getType_flag() == 1) {
+//                        String[] t = CommonUtil.getWeekStartEnd(cur);//当前时间周的开始结束时间
+//                        qMap.put("onsite_calendar_id", cal.getId());
+//                        qMap.put("start", t[0]);
+//                        qMap.put("end", t[1]);
+//                        int count = onsiteTaskService.getTaskExistCount(qMap);
+//                        if (count <= 0) {
+//                            flag = true;
+//                        }
+//                    } else if (cal.getType_flag() == 2) {
+//                        String[] t = CommonUtil.getDayForMonthAndDay(cur, cal.getMonth_day());//当前时间周的开始结束时间
+//                        qMap.put("onsite_calendar_id", cal.getId());
+//                        qMap.put("start", t[0]);
+//                        qMap.put("end", t[1]);
+//                        int count = onsiteTaskService.getTaskExistCount(qMap);
+//                        if (count <= 0) {
+//                            flag = true;
+//                        }
+//                    } else {
+//                        flag = true;
+//                    }
+//
+//                    if (flag) {
                         OnsiteTask task = new OnsiteTask();
                         task.setTask_time(td);
                         task.setOnsite_calendar_id(cal.getId());
                         onsiteTaskService.insertOnsiteTask(task);
-                    }
+//                    }
 
 
                 } catch (Throwable e) {

+ 4 - 1
application-task/src/main/java/com/factory/init/TimerTaskInit.java

@@ -2,6 +2,7 @@ package com.factory.init;
 
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.ExecutorService;
 
 import javax.annotation.PostConstruct;
 
@@ -42,7 +43,8 @@ public class TimerTaskInit {
 
     @Autowired
     MsgService msgService;
-
+    @Autowired
+	private ExecutorService executorService;
 
     @PostConstruct
     public void run() {
@@ -50,6 +52,7 @@ public class TimerTaskInit {
         param.put("onsiteTaskService", onsiteTaskService);
         param.put("firstTaskService", firstTaskService);
         param.put("msgService", msgService);
+        param.put("executorService", executorService);
         Scheduler sche = schedulerFactoryBean.getScheduler();
         addAutoApproveErrorTask(param, sche);
         addOnsiteTask(param, sche);

+ 8 - 1
application-task/src/main/java/com/factory/mapper/FirstTaskMapper.java

@@ -20,7 +20,7 @@ public interface FirstTaskMapper {
      * @param typeFlag
      * @return
      */
-    List<FirstCalendar> getCalenderFirstForType(Integer typeFlag);
+    List<FirstCalendar> getCalenderFirstForType(Map<String, Object> param);
 
 
     /**
@@ -30,6 +30,13 @@ public interface FirstTaskMapper {
      * @return
      */
     int insertFirstTask(FirstTask task);
+    /**
+     * 添加当天任务
+     *
+     * @param task
+     * @return
+     */
+    int insertFirstTaskKey(FirstTask task);
 
     /**
      * 需要提醒的工作

+ 3 - 0
application-task/src/main/java/com/factory/mapper/UserMapper.java

@@ -1,5 +1,7 @@
 package com.factory.mapper;
 
+import java.util.List;
+
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -10,4 +12,5 @@ import org.apache.ibatis.annotations.Mapper;
 @Mapper
 public interface UserMapper {
     String getOpenIdByUserId(Long userId);
+    List<Long> getUserIdsByRoleId(Long roleId);
 }

+ 5 - 5
application-task/src/main/java/com/factory/service/FirstTaskService.java

@@ -15,7 +15,7 @@ public interface FirstTaskService {
      * @param typeFlag
      * @return
      */
-    List<FirstCalendar> getCalenderFirstForType(Integer typeFlag);
+    List<FirstCalendar> getCalenderFirstForType(Map<String, Object> param);
 
     /**
      * 添加当天任务
@@ -49,7 +49,7 @@ public interface FirstTaskService {
      * @param map
      * @return
      */
-    int addRemindNowork(Map map);
+    int addRemindNowork(Map<String, Object> map);
 
     /**
      * 获取需要提醒人
@@ -57,7 +57,7 @@ public interface FirstTaskService {
      * @param map
      * @return
      */
-    Long getRemindNoworkToManager(Map map);
+    Long getRemindNoworkToManager(Map<String, Object> map);
 
     /**
      * 获取最大审批级别
@@ -65,7 +65,7 @@ public interface FirstTaskService {
      * @param map
      * @return
      */
-    int getMaxApproveLevel(Map map);
+    int getMaxApproveLevel(Map<String, Object> map);
 
     /**
      * 或许超时没处理记录
@@ -73,7 +73,7 @@ public interface FirstTaskService {
      * @param map
      * @return
      */
-    List<ApproveEntry> getApproveTaskNoDeal(Map map);
+    List<ApproveEntry> getApproveTaskNoDeal(Map<String, Object> map);
 
     /**
      * 添加新任务处理

+ 8 - 0
application-task/src/main/java/com/factory/service/MsgService.java

@@ -14,5 +14,13 @@ public interface MsgService {
      * @param sendMsgReq
      * @return
      */
+	@Deprecated
     String sendWechatMessage(SendMsgReq sendMsgReq);
+    /**
+     * 给微信用户发送消息
+     *
+     * @param sendMsgReq
+     * @return
+     */
+    String sendWechatMessageByRole(SendMsgReq sendMsgReq,Long roleId);
 }

+ 6 - 6
application-task/src/main/java/com/factory/service/OnsiteTaskService.java

@@ -9,9 +9,9 @@ import java.util.Map;
 
 public interface OnsiteTaskService {
 
-    public int getTaskExistCount(Map map);
+    public int getTaskExistCount(Map<String,Object> map);
 
-    public int delTaskOld(Map map);
+    public int delTaskOld(Map<String,Object> map);
 
     /**
      * 添加不工作提醒信息
@@ -19,7 +19,7 @@ public interface OnsiteTaskService {
      * @param map
      * @return
      */
-    public int addRemindNowork(Map map);
+    public int addRemindNowork(Map<String,Object> map);
 
     /**
      * 获取需要提醒人
@@ -27,7 +27,7 @@ public interface OnsiteTaskService {
      * @param map
      * @return
      */
-    public Long getRemindNoworkToManager(Map map);
+    public Long getRemindNoworkToManager(Map<String,Object> map);
 
     /**
      * 添加当天任务
@@ -69,7 +69,7 @@ public interface OnsiteTaskService {
      * @param map
      * @return
      */
-    public int getMaxApproveLevel(Map map);
+    public int getMaxApproveLevel(Map<String,Object> map);
 
     /**
      * 或许超时没处理记录
@@ -77,7 +77,7 @@ public interface OnsiteTaskService {
      * @param map
      * @return
      */
-    public List<ApproveEntry> getApproveTaskNoDeal(Map map);
+    public List<ApproveEntry> getApproveTaskNoDeal(Map<String,Object> map);
 
     /**
      * 添加新任务处理

+ 7 - 6
application-task/src/main/java/com/factory/service/impl/FirstTaskServiceImp.java

@@ -29,8 +29,8 @@ public class FirstTaskServiceImp implements FirstTaskService {
      * @return
      */
     @Override
-    public List<FirstCalendar> getCalenderFirstForType(Integer typeFlag) {
-        return mapper.getCalenderFirstForType(typeFlag);
+    public List<FirstCalendar> getCalenderFirstForType(Map<String, Object> param) {
+        return mapper.getCalenderFirstForType(param);
     }
 
     /**
@@ -41,6 +41,7 @@ public class FirstTaskServiceImp implements FirstTaskService {
      */
     @Override
     public int insertFirstTask(FirstTask task) {
+    	mapper.insertFirstTaskKey(task);
         return mapper.insertFirstTask(task);
     }
 
@@ -75,7 +76,7 @@ public class FirstTaskServiceImp implements FirstTaskService {
      */
     @Override
     @Transactional(rollbackFor = Throwable.class)
-    public int addRemindNowork(Map map) {
+    public int addRemindNowork(Map<String, Object> map) {
         int result = mapper.addRemindNowork(map);
         mapper.updateFirstRemindFlag(map);
         return result;
@@ -88,7 +89,7 @@ public class FirstTaskServiceImp implements FirstTaskService {
      * @return
      */
     @Override
-    public Long getRemindNoworkToManager(Map map) {
+    public Long getRemindNoworkToManager(Map<String, Object> map) {
         return mapper.getRemindNoworkToManager(map);
     }
 
@@ -100,7 +101,7 @@ public class FirstTaskServiceImp implements FirstTaskService {
      * @return
      */
     @Override
-    public int getMaxApproveLevel(Map map) {
+    public int getMaxApproveLevel(Map<String, Object> map) {
         return mapper.getMaxApproveLevel(map);
     }
 
@@ -111,7 +112,7 @@ public class FirstTaskServiceImp implements FirstTaskService {
      * @return
      */
     @Override
-    public List<ApproveEntry> getApproveTaskNoDeal(Map map) {
+    public List<ApproveEntry> getApproveTaskNoDeal(Map<String, Object> map) {
         return mapper.getApproveTaskNoDeal(map);
     }
 

+ 56 - 7
application-task/src/main/java/com/factory/service/impl/MsgServiceImpl.java

@@ -1,27 +1,34 @@
 package com.factory.service.impl;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.factory.base.entity.task.AppEntry;
+import com.factory.base.entity.task.PushWxMessage;
 import com.factory.base.entity.task.SendMsgReq;
 import com.factory.base.entity.task.TemplateEntry;
 import com.factory.base.entity.task.ValEntry;
 import com.factory.common.HttpCilentUntil;
 import com.factory.mapper.UserMapper;
 import com.factory.service.MsgService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
 
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * @author sMArT
  * @version 1.0
  * @date 2021-08-04 10:56 上午
  */
+@Slf4j
 @Service
 public class MsgServiceImpl implements MsgService {
     @Value("${wx.minprogram.appsecret}")
@@ -86,4 +93,46 @@ public class MsgServiceImpl implements MsgService {
             return "-1";
         }
     }
+
+	@Override
+	public String sendWechatMessageByRole(SendMsgReq sendMsgReq, Long roleId) {
+		List<Long> list = userMapper.getUserIdsByRoleId(roleId);
+		if(list.isEmpty()) {
+	        log.error("下发微信消息,角色:{}接收人为空", roleId);
+			return "-1";
+		}
+		HashMap<String, ValEntry> dataMap = new HashMap<>();
+		 //提醒内容
+        dataMap.put("thing1", ValEntry.builder().value(sendMsgReq.getContent()).build());
+        //作业名称
+        dataMap.put("thing2", ValEntry.builder().value(sendMsgReq.getTitle()).build());
+        //截止日期
+        if (null != sendMsgReq.getEndTime()) {
+            dataMap.put("time3", ValEntry.builder().value(sendMsgReq.getEndTime()).build());
+        } else {
+            Date date = new Date();
+            SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
+            dataMap.put("time3", ValEntry.builder().value(ft.format(date)).build());
+        }
+        dataMap.put("thing4", new ValEntry("智云工厂系统"));
+		for(Long userId:list) {
+			try {
+				String openId = userMapper.getOpenIdByUserId(userId);
+				if (null != openId && !openId.isEmpty()) {
+					AppEntry appEntry = AppEntry.builder().appId(appid).secret(appsecret).build();
+					TemplateEntry tpl = TemplateEntry.builder().template_id(templateId).touser(openId).page(page)
+							.miniprogram_state(miniprogramState).data(dataMap).build();
+					PushWxMessage.sendMessage(appEntry, tpl);
+				} else {
+					log.error("下发微信消息,接收人userId:{}的openId为空", sendMsgReq.getToUserId());
+				}
+			} catch (Exception e) {
+				 log.error("下发微信消息异常",e);
+				 return "-1";
+			}
+		}
+		return "1";
+	}
+    
+    
 }

+ 6 - 6
application-task/src/main/java/com/factory/service/impl/OnsiteTaskServiceImp.java

@@ -23,11 +23,11 @@ public class OnsiteTaskServiceImp implements OnsiteTaskService {
     @Autowired
     private MsgService msgService;
 
-    public int getTaskExistCount(Map map) {
+    public int getTaskExistCount(Map<String,Object> map) {
         return mapper.getTaskExistCount(map);
     }
 
-    public int delTaskOld(Map map) {
+    public int delTaskOld(Map<String,Object> map) {
         return mapper.delTaskOld(map);
     }
 
@@ -76,7 +76,7 @@ public class OnsiteTaskServiceImp implements OnsiteTaskService {
      * @param map
      * @return
      */
-    public Long getRemindNoworkToManager(Map map) {
+    public Long getRemindNoworkToManager(Map<String,Object> map) {
         return mapper.getRemindNoworkToManager(map);
     }
 
@@ -87,7 +87,7 @@ public class OnsiteTaskServiceImp implements OnsiteTaskService {
      * @return
      */
     @Transactional(rollbackFor = Throwable.class)
-    public int addRemindNowork(Map map) {
+    public int addRemindNowork(Map<String,Object> map) {
         int result = mapper.addRemindNowork(map);
         mapper.updateOnsiteRemindFlag(map);
         return result;
@@ -101,7 +101,7 @@ public class OnsiteTaskServiceImp implements OnsiteTaskService {
      * @param map
      * @return
      */
-    public int getMaxApproveLevel(Map map) {
+    public int getMaxApproveLevel(Map<String,Object> map) {
         return mapper.getMaxApproveLevel(map);
     }
 
@@ -111,7 +111,7 @@ public class OnsiteTaskServiceImp implements OnsiteTaskService {
      * @param map
      * @return
      */
-    public List<ApproveEntry> getApproveTaskNoDeal(Map map) {
+    public List<ApproveEntry> getApproveTaskNoDeal(Map<String,Object> map) {
         return mapper.getApproveTaskNoDeal(map);
     }
 

+ 0 - 7
application-task/src/main/resources/application-uat.yml

@@ -1,10 +1,3 @@
-<<<<<<< HEAD
-server: 
-  port: 8099
-  servlet: 
-    context-path: /task/
-=======
->>>>>>> d2c1732... 小程序端放行和审批按照角色审批和发送微信消息,修改task
 spring: 
   datasource: 
      type: com.alibaba.druid.pool.DruidDataSource

+ 21 - 23
application-task/src/main/resources/mappers/FirstTaskMapper.xml

@@ -2,8 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.factory.mapper.FirstTaskMapper">
 
-<<<<<<< HEAD
-=======
     <resultMap id="calendarFirst" type="com.factory.base.entity.task.FirstCalendar">
         <id column="id" property="id"/>
         <result column="benteler_plan_id" property="benteler_plan_id"/>
@@ -17,7 +15,7 @@
         <result column="task_time" property="task_time"/>
         <result column="first_task_id" property="first_task_id"/>
     </resultMap>
->>>>>>> d2c1732... 小程序端放行和审批按照角色审批和发送微信消息,修改task
+
     <resultMap id="approveMap" type="com.factory.base.entity.task.ApproveEntry">
         <id column="id" property="id"/>
         <result column="first_article_task_id" property="task_id"/>
@@ -67,28 +65,30 @@
     </select>
 
 
-    <select id="getCalenderFirstForType" parameterType="java.lang.Integer" resultType="com.factory.base.entity.task.FirstCalendar">
-        SELECT b.id,b.typeFlag
-        FROM benteler_plan a,
-             first_article_calendar b
-        WHERE a.id = b.benteler_plan_id
-          and a.pause_flag = 0
+    <select id="getCalenderFirstForType" parameterType="map" resultType="com.factory.base.entity.task.FirstCalendar">
+        SELECT b.id,b.type_flag as typeFlag
+        FROM benteler_plan a
+             join first_article_calendar b on a.id = b.benteler_plan_id and b.type_flag = #{typeFlag}
+             left join first_article_task fat on b.id = fat.first_article_calendar_id and fat.task_time = #{date}
+        WHERE 
+          a.pause_flag = 0
           and a.deleted = 0
           and a.status = 4
           and a.effective_date &lt;= now()
-          and b.type_flag = #{type_flag}
           and a.plan_type = 1
     </select>
 
     <insert id="insertFirstTask" parameterType="com.factory.base.entity.task.FirstTask">
-        insert into first_article_task_key(first_article_calendar_id, task_time)
-        values (${first_article_calendar_id}, #{task_time});
         insert into first_article_task(first_article_calendar_id, task_time)
         values (${first_article_calendar_id}, #{task_time});
     </insert>
+    <insert id="insertFirstTaskKey" parameterType="com.factory.base.entity.task.FirstTask">
+        insert into first_article_task_key(first_article_calendar_id, task_time)
+        values (${first_article_calendar_id}, #{task_time});
+    </insert>
 
     <select id="getRemindWork" resultType="com.factory.base.entity.task.FirstCalendar">
-        select b.*,a.taskTime ,a.id firstTaskId
+        select b.*,a.task_time ,a.id first_task_id
         from first_article_task a,first_article_calendar b
         where a.first_article_calendar_id=b.id and a.status=0 and b.type_flag like concat('%', ${type_flag}, '%')
             and a.type_flag = ${type_flag}
@@ -96,28 +96,26 @@
             and a.remind_task_flag = ${remind_task_flag}
         </if>
         <if test="remind_nowork_flag != null">
-            and a.remind_nowork_flag = ${remind_nowork_flag}
+           and a.remind_nowork_flag = ${remind_nowork_flag} <!--  and a.remind_task_flag = 1  -->
         </if>
     </select>
 
 
     <update id="updateFirstRemindFlag">
         update first_article_task
-        set ${flag}=${flagVal}
-        where id = ${first_task_id}
+        set ${flag}=#{flagVal}
+        where id = #{first_task_id}
     </update>
 
     <insert id="addRemindNowork">
-        insert into remind_approval_task(task_id, approval_user_id, task_type)
-        values (${task_id}, ${approval_user_id}, ${task_type})
+        insert into remind_approval_task(task_id, approval_role_id, task_type)
+        values (${task_id}, ${approval_role_id}, ${task_type})
     </insert>
 
     <select id="getRemindNoworkToManager" resultType="Long">
-        select b.user_id
-        from nowork_remind_rule a,
-             us_user_role b
-        where a.type = ${type}
-          and a.role_id = b.role_id limit 1
+        select a.role_id
+        from nowork_remind_rule a
+        where a.type = #{type} limit 1
     </select>
 
 

+ 47 - 33
application-task/src/main/resources/mappers/OnsiteTaskMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.factory.mapper.OnsiteTaskMapper">
 
-    <resultMap id="calendarOnsite" type="com.factory.base.entity.task.OnsiteCalendar">
+	<resultMap id="calendarOnsite" type="com.factory.base.entity.task.OnsiteCalendar">
         <id column="id" property="id"/>
         <result column="benteler_plan_id" property="benteler_plan_id"/>
         <result column="start_day" property="start_day"/>
@@ -67,35 +67,41 @@
 
 
     <insert id="addRemindNowork">
-        insert into remind_approval_task(task_id, approval_user_id, task_type)
-        values (${task_id}, ${approval_user_id}, ${task_type})
+        insert into remind_approval_task(task_id, approval_role_id, task_type,status)
+        values (${task_id}, ${approval_role_id}, ${task_type},0)
     </insert>
 
     <select id="getRemindNoworkToManager" resultType="Long">
-        select b.user_id
-        from nowork_remind_rule a,
-             us_user_role b
-        where a.type = ${type}
-          and a.role_id = b.role_id limit 1
+        select a.role_id
+        from nowork_remind_rule a
+        where a.type = ${type}  limit 1
     </select>
 
     <select id="getCalenderOnsitesForType" resultMap="calendarOnsite">  <!-- todo  这个还需要状态 -->
-        SELECT b.* 
-        FROM benteler_plan a,onsite_calendar b,onsite_approval_plan oap
+        SELECT oc.* 
+        FROM 
+        benteler_plan bp
+		join onsite_approval_plan oap on oap.benteler_plan_id = bp.id and oap.approval_level = 2 and oap.status = 1
+		join onsite_calendar oc on  oc.benteler_plan_id = bp.id and oc.type_flag=${type_flag} 
+		left join onsite_task ot on ot.onsite_calendar_id = oc.id
+        <choose>
+        	<when test="type_flag=='2'">
+        	 and  ot.task_time between #{sday} and #{eday}
+        	</when>
+        	<when test="type_flag=='1'">
+        	 and  ot.task_time between #{sday} and #{eday}
+        	</when>
+        	<when test="type_flag=='0'">
+        	 and  ot.task_time=#{today}
+        	</when>
+        </choose>
         WHERE
-        a.id=b.benteler_plan_id and a.pause_flag=0 and a.status=4 and a.deleted=0 and a.effective_date &lt;= now()
+        bp.plan_type = 2 
+        and bp.pause_flag=0 
+        and bp.status=4 
+        and bp.deleted=0 
+        and bp.effective_date >= now() 
         
-        and b.type_flag=${type_flag}
-        <if test="week_day != null and week_day != ''">
-            and b.week_day &gt;= ${week_day}
-        </if>
-        <if test="month_day != null and month_day != ''">
-            and b.month_day &gt;= ${month_day}
-        </if>
-        and a.id = oap.benteler_plan_id
-        and a.plan_type = 2
-        and oap.approval_level = 2
-        and oap.status = 1
 
     </select>
 
@@ -155,25 +161,33 @@
     <select id="getRemindWork" resultMap="calendarOnsite">
         select b.*,a.task_time ,a.id onsite_task_id
         from onsite_task a,onsite_calendar b
-        where a.onsite_calendar_id=b.id and a.status=0 and b.type_flag=${type_flag}
-        <if test="remind_task_flag != null">
-            and a.remind_task_flag = ${remind_task_flag}
-        </if>
-        <if test="remind_nowork_flag != null">
-            and a.remind_nowork_flag = ${remind_nowork_flag}
-        </if>
+        where a.onsite_calendar_id=b.id and a.status=0 and b.type_flag=#{type_flag}
+        <choose>
+        	<when test="type_flag=='0' and remind_task_flag != null">
+        		and a.remind_task_flag = 0 and b.start_day  &gt; #{time}
+        	</when>
+        	<when test="type_flag=='0' and remind_nowork_flag != null">
+        	 	and a.remind_nowork_flag = 0<!-- and a.remind_task_flag=1  and b.end_day &gt; #{time} -->
+        	</when>
+        	<when test="remind_task_flag != nul">
+        	 	and a.remind_task_flag = 0
+        	</when>
+        	<otherwise>
+        		and a.remind_nowork_flag = 0<!--  and a.remind_task_flag=1  -->
+        	</otherwise>
+        </choose>
     </select>
 
     <update id="updateOnsiteRemindFlag">
         update onsite_task
-        set ${flag}=${flagVal}
-        where id = ${onsite_task_id}
+        set ${flag}=#{flagVal}
+        where id = #{onsite_task_id}
     </update>
 
 
     <insert id="insertOnsiteTask" parameterType="com.factory.base.entity.task.OnsiteTask">
-        insert into onsite_task(onsite_calendar_id, task_time)
-        values (${onsite_calendar_id}, #{task_time})
+        insert into onsite_task(onsite_calendar_id, task_time,status,remind_task_flag,remind_nowork_flag)
+        values (#{onsite_calendar_id}, #{task_time}, #{status}, #{remind_task_flag}, #{remind_nowork_flag})
     </insert>
 
 

+ 7 - 0
application-task/src/main/resources/mappers/UserMapper.xml

@@ -7,5 +7,12 @@
         FROM us_user_wechat
         WHERE user_id = #{userId};
     </select>
+    <select id="getUserIdsByRoleId" resultType="Long">
+	    SELECT uur.user_id
+		FROM us_user_role uur,us_user uu
+		WHERE uu.id = uur.user_id
+		AND uu.del_flag = 0
+		AND uu.`lock` = 0 and uur.role_id=#{roleId}
+    </select>
 
 </mapper>

+ 2 - 5
common-base/src/main/java/com/factory/base/entity/task/FirstCalendar.java

@@ -1,16 +1,13 @@
 package com.factory.base.entity.task;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.io.Serializable;
-import java.time.LocalDate;
-
 @Data
 @Builder
 @NoArgsConstructor

+ 4 - 33
common-base/src/main/java/com/factory/base/entity/task/FirstTask.java

@@ -1,8 +1,11 @@
 package com.factory.base.entity.task;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 
+import lombok.Data;
 
+@Data
 public class FirstTask implements Serializable {
 
     private long id;
@@ -11,37 +14,5 @@ public class FirstTask implements Serializable {
 
     private int status;
 
-    private String task_time;
-
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public long getFirst_article_calendar_id() {
-        return first_article_calendar_id;
-    }
-
-    public void setFirst_article_calendar_id(long first_article_calendar_id) {
-        this.first_article_calendar_id = first_article_calendar_id;
-    }
-
-    public int getStatus() {
-        return status;
-    }
-
-    public void setStatus(int status) {
-        this.status = status;
-    }
-
-    public String getTask_time() {
-        return task_time;
-    }
-
-    public void setTask_time(String task_time) {
-        this.task_time = task_time;
-    }
+    private LocalDate task_time;
 }

+ 6 - 31
common-base/src/main/java/com/factory/base/entity/task/OnsiteTask.java

@@ -2,7 +2,9 @@ package com.factory.base.entity.task;
 
 import java.io.Serializable;
 
+import lombok.Data;
 
+@Data
 public class OnsiteTask implements Serializable {
 
     private long id;
@@ -12,36 +14,9 @@ public class OnsiteTask implements Serializable {
     private int status;
 
     private String task_time;
+    
+    private int remind_task_flag;
 
-    public long getId() {
-        return id;
-    }
-
-    public void setId(long id) {
-        this.id = id;
-    }
-
-    public long getOnsite_calendar_id() {
-        return onsite_calendar_id;
-    }
-
-    public void setOnsite_calendar_id(long onsite_calendar_id) {
-        this.onsite_calendar_id = onsite_calendar_id;
-    }
-
-    public int getStatus() {
-        return status;
-    }
-
-    public void setStatus(int status) {
-        this.status = status;
-    }
-
-    public String getTask_time() {
-        return task_time;
-    }
-
-    public void setTask_time(String task_time) {
-        this.task_time = task_time;
-    }
+    private int remind_nowork_flag;
+  
 }

+ 21 - 5
common-base/src/main/java/com/factory/base/util/time/TimeUtils.java

@@ -6,6 +6,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -49,8 +50,19 @@ public class TimeUtils {
     public static String getWeekInfo(int week) {
         return weekInfo.get(week);
     }
-
-    public static LocalDateTime[] getStartAndEnd(LocalDateTime now, int type, int num) {
+    public static LocalDate[] getStartAndEndDay(LocalDate now, int type, int num) {
+        LocalDate[] se = new LocalDate[2];
+        if (type == 1) {//周一到周日
+            int week = now.getDayOfWeek().getValue();
+            se[0] = now.minusDays(week - 1);
+            se[1] = now.plusDays(7-week).plusWeeks(num);
+        } else if (type == 2) {//月初到月末
+            se[0] = now.with(TemporalAdjusters.firstDayOfMonth());
+            se[1] = now.with(TemporalAdjusters.lastDayOfMonth()).plusMonths(num);
+        }
+        return se;
+    }
+    public static LocalDateTime[] getStartAndEndDayTime(LocalDateTime now, int type, int num) {
         LocalDateTime[] se = new LocalDateTime[2];
         if (type == 1) {//日
             se[0] = now.truncatedTo(ChronoUnit.DAYS);
@@ -109,12 +121,16 @@ public class TimeUtils {
     public static DateTimeFormatter dayFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
     public static DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
     public static DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("yyyy-MM");
+    public static DateTimeFormatter timeMiniteFormatter = DateTimeFormatter.ofPattern("HH:mm");
 
     public static void main(String[] args) {
         LocalDateTime now = LocalDateTime.now();
-        System.out.println(Arrays.toString(getStartAndEnd(now, 1, 2)));
-        System.out.println(Arrays.toString(getStartAndEnd(now, 2, 2)));
-        System.out.println(Arrays.toString(getStartAndEnd(now, 3, 2)));
+        LocalDate now2 = LocalDate.now();
+        System.out.println(Arrays.toString(getStartAndEndDay(now2, 1, 0)));
+        System.out.println(Arrays.toString(getStartAndEndDay(now2, 2, 0)));
+        System.out.println(Arrays.toString(getStartAndEndDayTime(now, 1, 2)));
+        System.out.println(Arrays.toString(getStartAndEndDayTime(now, 2, 2)));
+        System.out.println(Arrays.toString(getStartAndEndDayTime(now, 3, 2)));
         System.out.println(now.getDayOfMonth());
         System.out.println(now.getDayOfWeek().getValue());
         System.out.println(getMonthString(now));