Kaynağa Gözat

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.2

jiawuxian 2 yıl önce
ebeveyn
işleme
91b9d9a721

Dosya farkı çok büyük olduğundan ihmal edildi
+ 875 - 126
project_data/sql/0.0.2/soc/soc.sql


+ 51 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/TimerUtils.java

@@ -0,0 +1,51 @@
+package com.xunmei.common.core.utils;
+
+import org.springframework.stereotype.Component;
+
+import java.util.Hashtable;
+import java.util.Timer;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/10/8
+ */
+@Component
+public class TimerUtils {
+    private  Hashtable<String, Timer> timerHt= new Hashtable<>();
+    private  Hashtable<String, Long> delayTimeHt= new Hashtable<>();
+    private static TimerUtils instance;
+
+    public static synchronized TimerUtils getInstance() {
+        if (instance==null){
+            synchronized (TimerUtils.class){
+                if (instance == null) {
+                    instance = new TimerUtils();
+                }
+                return instance;
+            }
+        }else {
+            return instance;
+        }
+    }
+
+    private TimerUtils(){
+
+    }
+
+    public  Hashtable<String, Timer> getTimerHt() {
+        return timerHt;
+    }
+
+    public  void setTimerHt(String numID ,Timer timer) {
+        this.timerHt.put(numID,timer);
+    }
+
+    public Hashtable<String, Long> getDelayTimeHt() {
+        return delayTimeHt;
+    }
+
+    public  void setDelayTimeHt(String numID , Long delayTime) {
+        this.delayTimeHt.put(numID,delayTime);
+    }
+
+}

+ 0 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/SocCoreApplication.java

@@ -5,11 +5,9 @@ import com.xunmei.common.security.annotation.EnableCustomConfig;
 import com.xunmei.common.security.annotation.EnableSocFeignClients;
 import com.xunmei.common.swagger.annotation.EnableCustomSwagger2;
 import org.mybatis.spring.annotation.MapperScan;
-import org.mybatis.spring.annotation.MapperScans;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 
-import java.time.LocalDate;
 
 @MapperScan("com.xunmei.core.**.mapper")
 @EnableCustomConfig

+ 19 - 15
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -1,13 +1,14 @@
 package com.xunmei.core.drill.service.impl;
 
-import java.util.*;
-
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.IdName;
@@ -22,32 +23,32 @@ import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanRoleVo;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.DateUtils;
+import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.drill.mapper.*;
+import com.xunmei.core.drill.service.ICoreDrillPlanService;
 import com.xunmei.core.drill.service.ICoreDrillPlanToExecOrgService;
 import com.xunmei.core.drill.service.ICoreDrillPlanToRoleService;
 import com.xunmei.core.drill.service.ICoreDrillTaskService;
+import com.xunmei.core.thread.ThreadPoolConfig;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.support.TransactionSynchronizationAdapter;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
 
+import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.core.drill.service.ICoreDrillPlanService;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.transaction.support.TransactionSynchronizationAdapter;
-import org.springframework.transaction.support.TransactionSynchronizationManager;
-
 /**
  * 预案演练计划Service业务层处理
  *
@@ -73,8 +74,11 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     private CoreDrillTaskMapper coreDrillTaskMapper;
     @Autowired
     private CoreDrillTaskToRoleMapper coreDrillTaskToRoleMapper;
+
     @Autowired
-    private CoreDrillTaskToUserMapper coreDrillTaskToUserMapper;
+    @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
     @Autowired
     private RemoteOrgService orgService;
 
@@ -292,7 +296,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             CompletableFuture.runAsync(() -> {
                 //说明有任务并且都没执行过,需要重新生成任务
                 coreDrillTaskService.createTaskForNow(dataVo, plan.getPlanStartDate(), plan.getPlanEndDate());
-            });
+            },threadPoolTaskExecutor);
         }
     }
 
@@ -322,7 +326,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             CompletableFuture.runAsync(() -> {
                 //说明有任务并且都没执行过,需要重新生成任务
                 coreDrillTaskService.createTaskForNow(dataVo, plan.getPlanStartDate(), plan.getPlanEndDate());
-            });
+            },threadPoolTaskExecutor);
         }
     }
     private Boolean checkCanUpdate(CoreDrillPlanUpdateDto request, CoreDrillPlan plan) {
@@ -647,7 +651,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
                             final CoreDrillPlanDataVo detailPlanData = getCoreDrillPlanDataVo(drillPlan.getId());
                             coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
                         }
-                    });
+                    },threadPoolTaskExecutor);
                 }
             }
         });

+ 9 - 9
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -20,8 +20,6 @@ import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.drill.domain.*;
 import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.*;
-import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingTaskToUser;
-import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
@@ -43,6 +41,7 @@ import com.xunmei.core.drill.mapper.CoreDrillTaskToUserMapper;
 import com.xunmei.core.drill.service.ICoreDrillTaskService;
 import com.xunmei.core.drill.service.ICoreDrillTaskToRoleService;
 import com.xunmei.core.drill.service.ICoreDrillTaskToUserService;
+import com.xunmei.core.thread.ThreadPoolConfig;
 import com.xunmei.system.api.RemoteConfigService;
 import com.xunmei.system.api.RemoteFileService;
 import com.xunmei.system.api.RemoteOrgService;
@@ -55,22 +54,19 @@ import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import io.netty.util.internal.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.File;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.text.NumberFormat;
-import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import static com.xunmei.common.core.utils.StringUtils.calculatePercent;
-
 
 /**
  * 教育任务Service业务层处理
@@ -102,6 +98,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     @Autowired
     RemoteConfigService remoteConfigService;
 
+    @Autowired
+    @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
     @Override
     public TableDataInfo<CoreDrillTaskPageVo> selectPage(CoreDrillTaskPageDto request) {
         dealParam(request);
@@ -531,7 +531,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             updateWrapper.eq(CoreDrillTask::getId, id);
             updateWrapper.set(CoreDrillTask::getPdfUrl, pdfUrl);
             this.update(updateWrapper);
-        });
+        }, threadPoolTaskExecutor);
 
         return AjaxResult.success("正在生成pdf,请稍后刷新页面查看!");
     }
@@ -615,7 +615,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
                 DateRange range = DateUtils.getStartAndEnd(finalDate, plan.getPlanCycle());
                 this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
-            });
+            }, threadPoolTaskExecutor);
         }
         return "创建成功";
     }

+ 12 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -12,8 +12,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.IdName;
-import com.xunmei.common.core.domain.drill.domain.CoreDrillPlan;
-import com.xunmei.common.core.domain.drill.dto.CoreDrillPlanUpdateDto;
 import com.xunmei.common.core.domain.edu.domain.*;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanEditDto;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanInsertDto;
@@ -32,13 +30,15 @@ import com.xunmei.core.edu.service.ICoreEduTrainingPlanService;
 import com.xunmei.core.edu.service.ICoreEduTrainingPlanToExecOrgService;
 import com.xunmei.core.edu.service.ICoreEduTrainingPlanToRoleService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
+import com.xunmei.core.thread.ThreadPoolConfig;
 import com.xunmei.system.api.RemoteOrgService;
-import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -78,6 +78,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Autowired
     private RemoteOrgService orgService;
 
+    @Autowired
+    @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
     @Override
     public TableDataInfo selectPage(CoreEduTrainingPlanPageDto request) throws InterruptedException {
 
@@ -132,7 +136,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         final CoreEduTrainingPlan plan = coreEduTrainingPlanMapper.selectById(id);
         CoreEduTrainingPlanDetailVo vo = new CoreEduTrainingPlanDetailVo();
         BeanUtils.copyProperties(plan, vo);
-        vo.setBuildTaskNow(ObjectUtil.equal(1,plan.getBuildTaskNow()));
+        vo.setBuildTaskNow(ObjectUtil.equal(1, plan.getBuildTaskNow()));
         vo.setFileList(ObjectUtil.isNotEmpty(plan.getFileList()) ? JSON.parseArray(plan.getFileList(), String.class) : null);
         final List<CoreEduTrainingPlanToExecOrg> execOrgList = coreEduTrainingPlanToExecOrgMapper.selectByMap(MapUtil.of("plan_id", id));
         final List<Long> execOrgIdList = execOrgList.stream().map(CoreEduTrainingPlanToExecOrg::getOrgId).collect(Collectors.toList());
@@ -218,7 +222,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             throw new RuntimeException("当前用户所在机构类型无法确认!");
         }
         //如果是省联社或者办事处则返回1,其他机构类型返回0
-        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode()) || ObjectUtil.equal(orgType,  OrgTypeEnum.BAN_SHI_CHU.getCode());
+        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode()) || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode());
     }
 
     /**
@@ -290,7 +294,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             CompletableFuture.runAsync(() -> {
                 //说明有任务并且都没执行过,需要重新生成任务
                 coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
-            });
+            },threadPoolTaskExecutor);
         }
     }
 
@@ -318,7 +322,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             CompletableFuture.runAsync(() -> {
                 //说明有任务并且都没执行过,需要重新生成任务
                 coreEduTrainingTaskService.createTaskForNow(dataVo, plan.getStartDate(), plan.getEndDate());
-            });
+            },threadPoolTaskExecutor);
         }
     }
 
@@ -635,7 +639,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
                             CoreEduTrainingPlanDataVo detailPlanData = getCoreEduTrainingPlanDataVo(trainingPlan.getId());
                             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
                         }
-                    });
+                    },threadPoolTaskExecutor);
                 }
             }
         });

+ 8 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -41,6 +41,7 @@ import com.xunmei.core.edu.mapper.CoreEduTrainingTaskToUserMapper;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskToRoleService;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskToUserService;
+import com.xunmei.core.thread.ThreadPoolConfig;
 import com.xunmei.system.api.RemoteFileService;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteRoleService;
@@ -50,6 +51,8 @@ import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import io.netty.util.internal.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -93,7 +96,9 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     @Autowired
     private CoreEduTrainingTaskToUserMapper coreEduTrainingTaskToUserMapper;
 
-
+    @Autowired
+    @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
 
     @Override
     public TableDataInfo<CoreEduTrainingTaskPageVo> selectPage(CoreEduTrainingTaskPageDto request) {
@@ -520,7 +525,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             updateWrapper.eq(CoreEduTrainingTask::getId, id);
             updateWrapper.set(CoreEduTrainingTask::getPdfUrl, pdfUrl);
             this.update(updateWrapper);
-        });
+        },threadPoolTaskExecutor);
 
        /* //新方式生成pdf
         try {
@@ -622,7 +627,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
                 detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
                 DateRange range = DateUtils.getStartAndEnd(finalDate, plan.getPlanCycle());
                 this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
-            });
+            },threadPoolTaskExecutor);
         }
         return "创建成功";
     }

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/mapper/CoreMessageSendMapper.java

@@ -55,10 +55,10 @@ public interface CoreMessageSendMapper extends BaseMapper<CoreMessageSend> {
     /**
      * 根据发送时间查询
      *
-     * @param coreMessageSend
+     * @param sendTime
      * @return
      */
-    List<CoreMessageSend> selectBySendTime(CoreMessageSend coreMessageSend);
+    List<CoreMessageSend> selectBySendTime(@Param("sendTime") String sendTime);
 
     /**
      * 删除【请填写功能名称】

+ 80 - 71
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreMessageSendServiceImpl.java

@@ -4,12 +4,14 @@ package com.xunmei.core.information.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.SpringUtils;
+import com.xunmei.common.core.utils.TimerUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.information.domain.CoreMessageCenter;
@@ -79,6 +81,9 @@ public class CoreMessageSendServiceImpl extends ServiceImpl<CoreMessageSendMappe
      */
     @Override
     public int insertCoreMessageSend(CoreMessageSend coreMessageSend) {
+        TimerUtils util = TimerUtils.getInstance();
+        Hashtable<String, Long> delayTimeHt = util.getDelayTimeHt();
+        Hashtable<String, Timer> timerHt = util.getTimerHt();
         coreMessageSend.setCreateTime(DateUtils.getNowDate());
         coreMessageSend.setCreateBy(SecurityUtils.getUsername());
         coreMessageSend.setUpdateTime(DateUtils.getNowDate());
@@ -87,28 +92,6 @@ public class CoreMessageSendServiceImpl extends ServiceImpl<CoreMessageSendMappe
             coreMessageSend.setSendTime(DateUtils.getNowDate());
         }
         if ("1".equals(coreMessageSend.getSendTimeType())) {
-//            List<Long> collect = new ArrayList<>();
-//            if (null != coreMessageSend.getSendRole()) {
-//                List<CoreAnnouncementNotificationToRole> notificationToRoles = new ArrayList<>();
-//                CoreAnnouncementNotificationToRole coreAnnouncementNotificationToRole = new CoreAnnouncementNotificationToRole();
-//                coreAnnouncementNotificationToRole.setRoleId(coreMessageSend.getSendRole());
-//                notificationToRoles.add(coreAnnouncementNotificationToRole);
-//                List<SysUser> userListByRole = remoteUserService.getUserListByRole(notificationToRoles, SecurityConstants.INNER);
-//                collect = userListByRole.stream().map(SysUser::getId).collect(Collectors.toList());
-//            }
-//            collect.add(coreMessageSend.getSendUser());
-//            List<CoreMessageCenter> coreMessageCenterList = new ArrayList<>();
-//            for (Long userId : collect) {
-//                CoreMessageCenter coreMessageCenter = new CoreMessageCenter();
-//                coreMessageCenter.setTitle(coreMessageSend.getTitle());
-//                coreMessageCenter.setContent(coreMessageSend.getContent());
-//                coreMessageCenter.setIsRead("0");
-//                coreMessageCenter.setType("3");
-//                coreMessageCenter.setCreateTime(DateUtils.getNowDate());
-//                coreMessageCenter.setCreateBy(coreMessageSend.getCreateBy());
-//                coreMessageCenter.setUserId(userId);
-//                coreMessageCenterList.add(coreMessageCenter);
-//            }
             List<CoreMessageCenter> info = getInfo(coreMessageSend);
             coreMessageSend.setSendStatus("1");
             //立即生成消息
@@ -117,56 +100,65 @@ public class CoreMessageSendServiceImpl extends ServiceImpl<CoreMessageSendMappe
             Date sendTime = coreMessageSend.getSendTime();
             Date date = new Date();
             long nowTime = date.getTime();
-            long sTime =     sendTime.getTime();
+            long sTime = sendTime.getTime();
             coreMessageSend.setSendStatus("2");
             List<CoreMessageCenter> info = getInfo(coreMessageSend);
-            Task task=new Task(info);
-            long n =sTime- nowTime;
-            Timer timer=new Timer();
-            timer.schedule(task,n);
+            Task task = new Task(info, coreMessageSend);
+            long n = sTime - nowTime;
+            Timer timer = new Timer();
+            long id = IdWorker.getId();
+            coreMessageSend.setId(id);
+            timerHt.put(String.valueOf(id), timer);
+            timer.schedule(task, n);
         }
         return coreMessageSendMapper.insert(coreMessageSend);
     }
 
     class Task extends TimerTask {
         List<CoreMessageCenter> coreMessageCenterList;
-        public Task( List<CoreMessageCenter> coreMessageCenterList){
-            this.coreMessageCenterList=coreMessageCenterList;
+        CoreMessageSend coreMessageSend;
+
+        public Task(List<CoreMessageCenter> coreMessageCenterList, CoreMessageSend coreMessageSend) {
+            this.coreMessageCenterList = coreMessageCenterList;
+            this.coreMessageSend = coreMessageSend;
         }
+
         @Override
         public void run() {
-            coreMessageCenterService.saveBatch(coreMessageCenterList);
+            boolean b = coreMessageCenterService.saveBatch(coreMessageCenterList);
+            if (b) {
+                coreMessageSend.setSendStatus("1");
+                coreMessageSendMapper.updateById(coreMessageSend);
+            }
         }
-
-    }
-private List<CoreMessageCenter> getInfo(CoreMessageSend coreMessageSend){
-    List<Long> collect = new ArrayList<>();
-    if (null != coreMessageSend.getSendRole()) {
-        List<CoreAnnouncementNotificationToRole> notificationToRoles = new ArrayList<>();
-        CoreAnnouncementNotificationToRole coreAnnouncementNotificationToRole = new CoreAnnouncementNotificationToRole();
-        coreAnnouncementNotificationToRole.setRoleId(coreMessageSend.getSendRole());
-        notificationToRoles.add(coreAnnouncementNotificationToRole);
-        List<SysUser> userListByRole = remoteUserService.getUserListByRole(notificationToRoles, SecurityConstants.INNER);
-        collect = userListByRole.stream().map(SysUser::getId).collect(Collectors.toList());
     }
-    collect.add(coreMessageSend.getSendUser());
-    List<CoreMessageCenter> coreMessageCenterList = new ArrayList<>();
-    for (Long userId : collect) {
-        CoreMessageCenter coreMessageCenter = new CoreMessageCenter();
-        coreMessageCenter.setTitle(coreMessageSend.getTitle());
-        coreMessageCenter.setContent(coreMessageSend.getContent());
-        coreMessageCenter.setIsRead("0");
-        coreMessageCenter.setType("3");
-        coreMessageCenter.setCreateTime(DateUtils.getNowDate());
-        coreMessageCenter.setCreateBy(coreMessageSend.getCreateBy());
-        coreMessageCenter.setUserId(userId);
-        coreMessageCenterList.add(coreMessageCenter);
+
+    private List<CoreMessageCenter> getInfo(CoreMessageSend coreMessageSend) {
+        List<Long> collect = new ArrayList<>();
+        if (null != coreMessageSend.getSendRole()) {
+            List<CoreAnnouncementNotificationToRole> notificationToRoles = new ArrayList<>();
+            CoreAnnouncementNotificationToRole coreAnnouncementNotificationToRole = new CoreAnnouncementNotificationToRole();
+            coreAnnouncementNotificationToRole.setRoleId(coreMessageSend.getSendRole());
+            notificationToRoles.add(coreAnnouncementNotificationToRole);
+            List<SysUser> userListByRole = remoteUserService.getUserListByRole(notificationToRoles, SecurityConstants.INNER);
+            collect = userListByRole.stream().map(SysUser::getId).collect(Collectors.toList());
+        }
+        collect.add(coreMessageSend.getSendUser());
+        List<CoreMessageCenter> coreMessageCenterList = new ArrayList<>();
+        for (Long userId : collect) {
+            CoreMessageCenter coreMessageCenter = new CoreMessageCenter();
+            coreMessageCenter.setTitle(coreMessageSend.getTitle());
+            coreMessageCenter.setContent(coreMessageSend.getContent());
+            coreMessageCenter.setIsRead("0");
+            coreMessageCenter.setType("3");
+            coreMessageCenter.setCreateTime(DateUtils.getNowDate());
+            coreMessageCenter.setCreateBy(coreMessageSend.getCreateBy());
+            coreMessageCenter.setUserId(userId);
+            coreMessageCenterList.add(coreMessageCenter);
+        }
+        return coreMessageCenterList;
     }
-   // coreMessageSend.setSendStatus("1");
-    //立即生成消息
-  //  coreMessageCenterService.saveBatch(coreMessageCenterList);
-    return  coreMessageCenterList;
-}
+
     /**
      * 修改【请填写功能名称】
      *
@@ -175,16 +167,42 @@ private List<CoreMessageCenter> getInfo(CoreMessageSend coreMessageSend){
      */
     @Override
     public int updateCoreMessageSend(CoreMessageSend coreMessageSend) {
+        cancelTask(coreMessageSend.getId());
+        TimerUtils util = TimerUtils.getInstance();
+        Hashtable<String, Timer> timerHt = util.getTimerHt();
         coreMessageSend.setUpdateTime(DateUtils.getNowDate());
         coreMessageSend.setUpdateBy(SecurityUtils.getUsername());
         if ("1".equals(coreMessageSend.getSendTimeType())) {
             coreMessageSend.setSendStatus("1");
+            List<CoreMessageCenter> info = getInfo(coreMessageSend);
+            //立即生成消息
+            coreMessageCenterService.saveBatch(info);
         } else {
             coreMessageSend.setSendStatus("2");
+            Date sendTime = coreMessageSend.getSendTime();
+            Date date = new Date();
+            long nowTime = date.getTime();
+            long sTime = sendTime.getTime();
+            List<CoreMessageCenter> info = getInfo(coreMessageSend);
+            Task task = new Task(info, coreMessageSend);
+            long n = sTime - nowTime;
+            Timer timer = new Timer();
+            timerHt.put(String.valueOf(coreMessageSend.getId()), timer);
+            timer.schedule(task, n);
         }
+
         return coreMessageSendMapper.updateById(coreMessageSend);
     }
 
+    public void cancelTask(Long id) {
+        TimerUtils util = TimerUtils.getInstance();
+        Hashtable<String, Timer> timerHt = util.getTimerHt();
+        Timer timer = timerHt.get(String.valueOf(id));
+        if (timer != null) {
+            timer.cancel();
+        }
+    }
+
     /**
      * 批量删除【请填写功能名称】
      *
@@ -199,6 +217,7 @@ private List<CoreMessageCenter> getInfo(CoreMessageSend coreMessageSend){
             coreMessageSend.setId(id);
             coreMessageSend.setDelFlag("2");
             i = coreMessageSendMapper.updateCoreMessageSend(coreMessageSend);
+            cancelTask(id);
             if (i < 1) {
                 return i;
             }
@@ -211,22 +230,12 @@ private List<CoreMessageCenter> getInfo(CoreMessageSend coreMessageSend){
         if (ObjectUtil.isEmpty(taskTime)) {
             taskTime = LocalDate.now();
         }
-        CoreMessageSend coreMessageSend = new CoreMessageSend();
-        Date nowTime = null;
-        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String format = sd.format(new Date()) + " 00:00:00";
-        try {
-            nowTime = simpleDateFormat.parse(format);
-        } catch (Exception e) {
-            e.getMessage();
-        }
-        coreMessageSend.setSendTime(nowTime);
+        LocalDate today = LocalDate.now();
+        LocalDate yesterday = today.minusDays(1);
         //查询符合条件的
-        List<CoreMessageSend> coreMessageSends = baseMapper.selectBySendTime(coreMessageSend);
+        List<CoreMessageSend> coreMessageSends = baseMapper.selectBySendTime(yesterday.toString());
         if (CollectionUtil.isNotEmpty(coreMessageSends)) {
             List<Long> collect = new ArrayList<>();
-
             for (CoreMessageSend c : coreMessageSends) {
                 List<CoreMessageCenter> coreMessageCenters = new ArrayList<>();
                 if (null != c.getSendRole()) {

+ 4 - 3
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/SocThreadFactory.java → soc-modules/soc-modules-core/src/main/java/com/xunmei/core/thread/SocThreadFactory.java

@@ -1,7 +1,8 @@
-package com.xunmei.common.core.thread;
+package com.xunmei.core.thread;
 
 import lombok.AllArgsConstructor;
 
+import javax.validation.constraints.NotNull;
 import java.util.concurrent.ThreadFactory;
 
 @AllArgsConstructor
@@ -10,8 +11,8 @@ public class SocThreadFactory implements ThreadFactory {
     private ThreadFactory original;
 
     @Override
-    public Thread newThread(Runnable r) {
-        Thread thread = original.newThread(r);
+    public Thread newThread(@NotNull Runnable runnable) {
+        Thread thread = original.newThread(runnable);
         thread.setUncaughtExceptionHandler(new SocUncaughtExceptionHandler());//异常捕获
         return thread;
     }

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/SocUncaughtExceptionHandler.java → soc-modules/soc-modules-core/src/main/java/com/xunmei/core/thread/SocUncaughtExceptionHandler.java

@@ -1,4 +1,4 @@
-package com.xunmei.common.core.thread;
+package com.xunmei.core.thread;
 
 import lombok.extern.slf4j.Slf4j;
 

+ 3 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/ThreadPoolConfig.java → soc-modules/soc-modules-core/src/main/java/com/xunmei/core/thread/ThreadPoolConfig.java

@@ -1,4 +1,4 @@
-package com.xunmei.common.core.thread;
+package com.xunmei.core.thread;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -34,7 +34,8 @@ public class ThreadPoolConfig implements AsyncConfigurer {
         executor.setMaxPoolSize(10);
         executor.setQueueCapacity(200);
         executor.setThreadNamePrefix("soc-executor-");
-        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//满了调用线程执行,认为重要任务
+        //拒绝策略,由投递者执行
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
         //装饰器,用于异步线程内捕获异常
         executor.setThreadFactory(new SocThreadFactory(executor));
         executor.initialize();

+ 3 - 3
soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreMessageSendMapper.xml

@@ -94,9 +94,9 @@
         del_flag = 0
         AND send_time_type = 2
         AND send_status =2
-        <if test="sendTime != null ">
-            and send_time = #{sendTime}
-        </if>
+            and send_time
+            like concat( #{sendTime}, '%')
+
     </select>
 
     <insert id="insertCoreMessageSend" parameterType="com.xunmei.core.information.domain.CoreMessageSend">

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor