Merge remote-tracking branch 'origin/master'

This commit is contained in:
yjz
2023-11-10 18:20:02 +08:00
6 changed files with 130 additions and 2 deletions
@@ -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"; // 【在产车实施预警】
}
@@ -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<String> 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;
}
@@ -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();
}
}
@@ -100,19 +100,31 @@
<foreach collection="param.dayStrings" separator="," open="(" close=")" item="item">
#{item}
</foreach>
<if test="param.startDate != null">
AND STR_TO_DATE(dataInfo.new_model_implementation_date, '%Y-%m-%d') <![CDATA[ >= ]]> #{param.startDate}
</if>
<if test="param.endDate != null">
AND STR_TO_DATE(dataInfo.new_model_implementation_date, '%Y-%m-%d') <![CDATA[ <= ]]> #{param.endDate}
</if>
</if>
<if test="param.onTheProductionDate != null and param.onTheProductionDate != ''">
dataInfo.on_the_production_date IN
<foreach collection="param.dayStrings" separator="," open="(" close=")" item="item">
#{item}
</foreach>
<if test="param.startDate != null">
AND STR_TO_DATE(dataInfo.on_the_production_date, '%Y-%m-%d') <![CDATA[ >= ]]> #{param.startDate}
</if>
<if test="param.endDate != null">
AND STR_TO_DATE(dataInfo.on_the_production_date, '%Y-%m-%d') <![CDATA[ <= ]]> #{param.endDate}
</if>
</if>
ORDER BY
<if test="param.newModelImplementationDate != null and param.newModelImplementationDate != ''">
dataInfo.new_model_implementation_date ASC
STR_TO_DATE(dataInfo.new_model_implementation_date, '%Y-%m-%d') ASC
</if>
<if test="param.onTheProductionDate != null and param.onTheProductionDate != ''">
dataInfo.on_the_production_date ASC
STR_TO_DATE(dataInfo.on_the_production_date, '%Y-%m-%d') ASC
</if>
</select>
</mapper>
@@ -23,4 +23,11 @@ public interface ILawsStandardEarlyWarningService {
* @Description: 在产车实施预警
**/
IPage<StandardEarlyWarning> onTheProduction(StandardEarlyWarning standardEarlyWarning, Integer pageNo, Integer pageSize);
/**
* @Author: liao
* @Date: 2023/11/10 17:13
* @Description: 定时发送消息
**/
void sendMsg();
}
@@ -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<StandardEarlyWarning> newPage = lawsStandardEarlyWarningService.newModelImplementation(newModelImplementation, -1, -1);
List<StandardEarlyWarning> newList = newPage.getRecords();
StandardEarlyWarning onTheProduction = new StandardEarlyWarning();
IPage<StandardEarlyWarning> onPage = lawsStandardEarlyWarningService.onTheProduction(onTheProduction, -1, -1);
List<StandardEarlyWarning> onList = onPage.getRecords();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// 新车型实施日期
if (CollectionUtils.isNotEmpty(newList)) {
// 根据 id 字段去重,保留日期最小的
List<StandardEarlyWarning> 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<StandardEarlyWarning> 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<StandardEarlyWarning> distinctList) {
distinctList.forEach(data -> {
String departId = data.getResponsibleDepartment();
LambdaQueryWrapper<SysUserDepart> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysUserDepart::getDepId, departId);
List<SysUserDepart> userDepartList = userDepartService.list(queryWrapper);
if (CollectionUtils.isNotEmpty(userDepartList)) {
// 每个部门需要发消息的用户id集合
List<String> userIdList = userDepartList.stream().map(SysUserDepart::getUserId).collect(Collectors.toList());
}
});
}
}