diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java index 76dc5c6a..a5e10d26 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/MessageTemplateCodeCommon.java @@ -11,5 +11,7 @@ public class MessageTemplateCodeCommon { public static final String LAWS_NEWS_FEED = "laws_news_feed"; // 【动态消息】通知 public static final String LAWS_PROBLEM_LIBRARY = "laws_problem_library"; // 【问答库】回答已置顶 + public static final String NEW_MODEL_IMPLEMENTATION = "new_model_implementation"; // 【新车型实施预警】 + public static final String ON_THE_PRODUCTION = "on_the_production"; // 【在产车实施预警】 } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/localTool/entity/StandardEarlyWarning.java b/laws-modules/src/main/java/com/jero/modules/laws/localTool/entity/StandardEarlyWarning.java index 63d41f45..74edc862 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/localTool/entity/StandardEarlyWarning.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/localTool/entity/StandardEarlyWarning.java @@ -3,6 +3,7 @@ package com.jero.modules.laws.localTool.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.jero.common.aspect.annotation.Dict; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +11,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; import java.util.List; @@ -66,4 +68,15 @@ public class StandardEarlyWarning { /**当前天前一周*/ private List dayStrings; + /**查询时间开始*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "查询时间开始") + private java.util.Date startDate; + /**查询时间结束*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "查询时间结束") + private java.util.Date endDate; + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/localTool/job/StandardEarlyWarningJob.java b/laws-modules/src/main/java/com/jero/modules/laws/localTool/job/StandardEarlyWarningJob.java new file mode 100644 index 00000000..f0ee8f32 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/laws/localTool/job/StandardEarlyWarningJob.java @@ -0,0 +1,20 @@ +package com.jero.modules.laws.localTool.job; + +import com.jero.common.util.SpringContextUtils; +import com.jero.modules.laws.localTool.service.ILawsStandardEarlyWarningService; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +/** + * @Author: liao + * @Date: 2023/11/10 17:12 + * @Description: 标准预警 + */ +public class StandardEarlyWarningJob implements Job { + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + ILawsStandardEarlyWarningService bean = SpringContextUtils.getBean(ILawsStandardEarlyWarningService.class); + bean.sendMsg(); + } +} diff --git a/laws-modules/src/main/java/com/jero/modules/laws/localTool/mapper/xml/LawsStandardEarlyWarningMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/localTool/mapper/xml/LawsStandardEarlyWarningMapper.xml index 4597986a..70b94386 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/localTool/mapper/xml/LawsStandardEarlyWarningMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/localTool/mapper/xml/LawsStandardEarlyWarningMapper.xml @@ -100,19 +100,31 @@ #{item} + + AND STR_TO_DATE(dataInfo.new_model_implementation_date, '%Y-%m-%d') = ]]> #{param.startDate} + + + AND STR_TO_DATE(dataInfo.new_model_implementation_date, '%Y-%m-%d') #{param.endDate} + dataInfo.on_the_production_date IN #{item} + + AND STR_TO_DATE(dataInfo.on_the_production_date, '%Y-%m-%d') = ]]> #{param.startDate} + + + AND STR_TO_DATE(dataInfo.on_the_production_date, '%Y-%m-%d') #{param.endDate} + ORDER BY - dataInfo.new_model_implementation_date ASC + STR_TO_DATE(dataInfo.new_model_implementation_date, '%Y-%m-%d') ASC - dataInfo.on_the_production_date ASC + STR_TO_DATE(dataInfo.on_the_production_date, '%Y-%m-%d') ASC \ No newline at end of file diff --git a/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/ILawsStandardEarlyWarningService.java b/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/ILawsStandardEarlyWarningService.java index 43dfd5c4..bf8f3434 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/ILawsStandardEarlyWarningService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/ILawsStandardEarlyWarningService.java @@ -23,4 +23,11 @@ public interface ILawsStandardEarlyWarningService { * @Description: 在产车实施预警 **/ IPage onTheProduction(StandardEarlyWarning standardEarlyWarning, Integer pageNo, Integer pageSize); + + /** + * @Author: liao + * @Date: 2023/11/10 17:13 + * @Description: 定时发送消息 + **/ + void sendMsg(); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/impl/LawsStandardEarlyWarningServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/impl/LawsStandardEarlyWarningServiceImpl.java index bb5e7e8e..af3e62a1 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/impl/LawsStandardEarlyWarningServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/localTool/service/impl/LawsStandardEarlyWarningServiceImpl.java @@ -1,20 +1,31 @@ package com.jero.modules.laws.localTool.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.jero.modules.laws.common.constant.MessageTemplateCodeCommon; import com.jero.modules.laws.common.util.DateUtil; import com.jero.modules.laws.localTool.entity.StandardEarlyWarning; import com.jero.modules.laws.localTool.mapper.LawsStandardEarlyWarningMapper; import com.jero.modules.laws.localTool.service.ILawsStandardEarlyWarningService; +import com.jero.modules.system.entity.SysUserDepart; +import com.jero.modules.system.service.ISysUserDepartService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.function.BinaryOperator; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @Author: liao @@ -27,6 +38,10 @@ public class LawsStandardEarlyWarningServiceImpl implements ILawsStandardEarlyWa @Autowired private LawsStandardEarlyWarningMapper lawsStandardEarlyWarningMapper; + @Resource + private ILawsStandardEarlyWarningService lawsStandardEarlyWarningService; + @Resource + private ISysUserDepartService userDepartService; /** * @Author: liao @@ -67,4 +82,63 @@ public class LawsStandardEarlyWarningServiceImpl implements ILawsStandardEarlyWa return pageList; } + /** + * @Author: liao + * @Date: 2023/11/10 17:13 + * @Description: 定时发送消息 + **/ + @Override + public void sendMsg() { + StandardEarlyWarning newModelImplementation = new StandardEarlyWarning(); + IPage newPage = lawsStandardEarlyWarningService.newModelImplementation(newModelImplementation, -1, -1); + List newList = newPage.getRecords(); + StandardEarlyWarning onTheProduction = new StandardEarlyWarning(); + IPage onPage = lawsStandardEarlyWarningService.onTheProduction(onTheProduction, -1, -1); + List onList = onPage.getRecords(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + // 新车型实施日期 + if (CollectionUtils.isNotEmpty(newList)) { + // 根据 id 字段去重,保留日期最小的 + List distinctList = newList.stream() + .collect(Collectors.toMap(StandardEarlyWarning::getId, Function.identity(), + BinaryOperator.minBy((e1, e2) -> LocalDate.parse(e1.getNewModelImplementationDate(), formatter) + .compareTo(LocalDate.parse(e2.getNewModelImplementationDate(), formatter))))) + .values() + .stream() + .collect(Collectors.toList()); + sendMsgList(MessageTemplateCodeCommon.NEW_MODEL_IMPLEMENTATION, distinctList); + } + // 在产车实施日期 + if (CollectionUtils.isNotEmpty(onList)) { + // 根据 id 字段去重,保留日期最小的 + List distinctList = onList.stream() + .collect(Collectors.toMap(StandardEarlyWarning::getId, Function.identity(), + BinaryOperator.minBy((e1, e2) -> LocalDate.parse(e1.getOnTheProductionDate(), formatter) + .compareTo(LocalDate.parse(e2.getOnTheProductionDate(), formatter))))) + .values() + .stream() + .collect(Collectors.toList()); + sendMsgList(MessageTemplateCodeCommon.ON_THE_PRODUCTION, distinctList); + } + } + + /** + * @Author: liao + * @Date: 2023/11/10 17:39 + * @Description: 发送消息 + **/ + private void sendMsgList(String templateCode, List distinctList) { + distinctList.forEach(data -> { + String departId = data.getResponsibleDepartment(); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(SysUserDepart::getDepId, departId); + List userDepartList = userDepartService.list(queryWrapper); + if (CollectionUtils.isNotEmpty(userDepartList)) { + // 每个部门需要发消息的用户id集合 + List userIdList = userDepartList.stream().map(SysUserDepart::getUserId).collect(Collectors.toList()); + + } + }); + } + }