法规预警--推送,定时任务
This commit is contained in:
+3
@@ -53,6 +53,9 @@ public class BussDocumentLibraryEO implements Serializable {
|
||||
/**适用地区*/
|
||||
@ApiModelProperty(value = "适用地区")
|
||||
private java.lang.String region;
|
||||
/**适用地区*/
|
||||
@ApiModelProperty(value = "类别")
|
||||
private java.lang.String lei4Bie2;
|
||||
|
||||
/**状态*/
|
||||
@ApiModelProperty(value = "状态")
|
||||
|
||||
+1
@@ -12,6 +12,7 @@
|
||||
<id column="xin1_che1_xing2_shi2_shi1_ri4_qi1" property="xin1Che1Xing2Shi2Shi1Ri4Qi1" />
|
||||
<id column="implement_time" property="implementTime" />
|
||||
<id column="corresponding_standard" property="correspondingStandard" />
|
||||
<id column="lei4_bie2" property="lei4Bie2" />
|
||||
</resultMap>
|
||||
|
||||
<insert id="insertInfo">
|
||||
|
||||
+8
@@ -60,4 +60,12 @@ public class LawsWarnController {
|
||||
lawsWarnService.exportExcel(map,response,request);
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "推送")
|
||||
@GetMapping(value = "/warnPullMessage")
|
||||
// @RequiresPermissions("document:pullMessage")
|
||||
public Result<?> pullMessage(String departIds,String userIds,String documentIds) {
|
||||
lawsWarnService.warnPullMessage(departIds,userIds,documentIds);
|
||||
return Result.OK("推送成功");
|
||||
}
|
||||
}
|
||||
|
||||
+106
@@ -3,15 +3,23 @@ package com.jero.modules.warn.service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.common.constant.enums.CutEnum;
|
||||
import com.jero.common.constant.enums.MessageTypeEnum;
|
||||
import com.jero.common.constant.enums.ModuleEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
|
||||
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
|
||||
import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper;
|
||||
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
|
||||
import com.jero.modules.feishu.service.IFeishuService;
|
||||
import com.jero.modules.system.entity.SysAnnouncement;
|
||||
import com.jero.modules.system.entity.SysCategory;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysAnnouncementService;
|
||||
import com.jero.modules.system.service.ISysDepartService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
|
||||
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
|
||||
import com.jero.modules.system.util.StringUtils;
|
||||
@@ -22,9 +30,13 @@ import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.yaml.snakeyaml.util.UriEncoder;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
@@ -32,9 +44,11 @@ import java.io.OutputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -54,6 +68,16 @@ public class LawsWarnService {
|
||||
private SysDictItemServiceImpl sysDictItemServiceImpl;
|
||||
@Autowired
|
||||
private OnlCgformFieldServiceImpl onlCgformFieldService;
|
||||
@Autowired
|
||||
private ISysDepartService sysDepartService;
|
||||
@Autowired
|
||||
private ISysUserService sysUserService;
|
||||
@Value(value = "${jero.backUrl}")
|
||||
private String backUrl;
|
||||
@Autowired
|
||||
private ISysAnnouncementService sysAnnouncementService;
|
||||
@Resource
|
||||
private IFeishuService iFeishuService;
|
||||
|
||||
public IPage getInfoPage(Map<String, Object> parameter) {
|
||||
String cut = (String) parameter.get("cut");//中英文切换标识
|
||||
@@ -248,6 +272,88 @@ public class LawsWarnService {
|
||||
sheetNum++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String warnPullMessage(String departIds, String userIds, String documentIds) {
|
||||
Set<String> allDepartIds = new HashSet<>();
|
||||
//查询当前部门下所有部门
|
||||
if (StringUtils.isNotEmpty(departIds)) {
|
||||
String[] departIdArr = departIds.split(",");
|
||||
for (String departId : departIdArr) {
|
||||
List<String> subDepIdsByDepId = sysDepartService.getSubDepIdsByDepId(departId);
|
||||
allDepartIds.addAll(subDepIdsByDepId);
|
||||
}
|
||||
}
|
||||
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
List<String> thirdIdList = new ArrayList<>();
|
||||
if (StringUtils.isNotBlank(departIds)) {
|
||||
//查询部门下的人员
|
||||
List<SysUser> userList = new ArrayList<>();
|
||||
if(allDepartIds.size() != 0){
|
||||
userList = sysUserService.getUserListByDepIds(new ArrayList<>(allDepartIds));
|
||||
}
|
||||
|
||||
if (userList.size() != 0) {
|
||||
userIdList = userList.stream().map(SysUser::getId).distinct().collect(Collectors.toList());
|
||||
thirdIdList = userList.stream().map(SysUser::getThirdId).distinct().collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
if(userIdList.size() == 0 && StringUtils.isNotBlank(userIds)){
|
||||
List<SysUser> sysUsers = sysUserService.listByIds(Arrays.asList(userIds.split(",")));
|
||||
if(sysUsers.size() != 0){
|
||||
List<String> userId = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
||||
List<String> thirdId = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
|
||||
userIdList.addAll(userId);
|
||||
thirdIdList.addAll(thirdId);
|
||||
}
|
||||
}
|
||||
|
||||
//查询文档
|
||||
List<Map<String, Object>> mapList = bussDocumentLibraryEOMapper.selectMapsAll(documentIds);
|
||||
List<String> serialNumberList = new ArrayList<>();
|
||||
List<String> urlList = new ArrayList<>();
|
||||
List<String> hrefList = new ArrayList<>();
|
||||
for (Map<String, Object> map : mapList) {
|
||||
serialNumberList.add(StringUtils.valueOf(map.get("serial_number")));
|
||||
String url = backUrl + "/docManage/library/detail?id=" + map.get("id") +
|
||||
"&title=" + map.get("title") +
|
||||
"&serial_number=" + map.get("serial_number");
|
||||
|
||||
String href = "<a href='/docManage/library/detail?id=" + map.get("id") +
|
||||
"&title=" + map.get("title") +
|
||||
"&serial_number=" + map.get("serial_number") + "'" + " target='_blank'>" + map.get("serial_number") + "</a>";
|
||||
urlList.add(url);
|
||||
hrefList.add(href);
|
||||
}
|
||||
|
||||
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String content = sysUser.getUsername() + " pushed " + StringUtils.join(serialNumberList, ",") + " to you. Please be reminded to check it out.";
|
||||
String contentInfo = sysUser.getUsername() + " pushed " + StringUtils.join(hrefList, ",") + " to you. Please be reminded to check it out.";
|
||||
//封装消息的实体类
|
||||
SysAnnouncement sysAnnouncement = bussDocumentLibraryEOService.getSysAnnouncement(userIdList, content, contentInfo);
|
||||
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
|
||||
bussDocumentLibraryEOService.sendWebsocket(StringUtils.join(thirdIdList, ","), contentInfo);
|
||||
//飞书
|
||||
try {
|
||||
for (String s : urlList) {
|
||||
String encode = UriEncoder.encode(s);
|
||||
List<String> list = new ArrayList<>();
|
||||
mapList.stream().forEach(e->{
|
||||
if(s.contains((String)e.get("id"))){
|
||||
String serialNumber = StringUtils.valueOf(e.get("serial_number"));
|
||||
list.add(serialNumber);
|
||||
}
|
||||
});
|
||||
String contentTemp = sysUser.getUsername() + " pushed " + StringUtils.join(list, ",") + " to you. Please be reminded to check it out.";
|
||||
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentTemp, MessageTypeEnum.PUSH.getName(), encode);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
bussDocumentLibraryEOService.sendWebsocket(documentIds, contentInfo);
|
||||
return "推送成功";
|
||||
}
|
||||
}
|
||||
|
||||
+174
@@ -0,0 +1,174 @@
|
||||
package com.jero.modules.warn.service;
|
||||
|
||||
import com.jero.common.constant.enums.MessageTypeEnum;
|
||||
import com.jero.modules.document.entity.BussDocumentLibraryEO;
|
||||
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
|
||||
import com.jero.modules.feishu.service.IFeishuService;
|
||||
import com.jero.modules.subscribe.entity.OnlCgformSubscribe;
|
||||
import com.jero.modules.subscribe.service.IOnlCgformSubscribeService;
|
||||
import com.jero.modules.system.entity.SysAnnouncement;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.mapper.SysUserMapper;
|
||||
import com.jero.modules.system.service.ISysAnnouncementService;
|
||||
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
|
||||
import com.jero.modules.system.util.StringUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @description
|
||||
* @date 2022/6/28 18:38
|
||||
* @auth zhn
|
||||
*/
|
||||
@Service
|
||||
public class TimedTaskWarn implements Job {
|
||||
|
||||
@Autowired
|
||||
private BussDocumentLibraryEOServiceImpl bussDocumentLibraryEOService;
|
||||
@Autowired
|
||||
private IOnlCgformSubscribeService iOnlCgformSubscribeService;
|
||||
@Autowired
|
||||
private SysDictItemServiceImpl sysDictItemServiceImpl;
|
||||
@Autowired
|
||||
private ISysAnnouncementService sysAnnouncementService;
|
||||
@Resource
|
||||
private IFeishuService iFeishuService;
|
||||
@Autowired
|
||||
private SysUserMapper sysUserMapper;
|
||||
@Value(value = "${jero.backUrl}")
|
||||
private String backUrl;
|
||||
|
||||
@Override
|
||||
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
||||
//获取所有的法规
|
||||
List<BussDocumentLibraryEO> bussDocumentLibraryEOList = bussDocumentLibraryEOService.list();
|
||||
//订阅信息
|
||||
List<OnlCgformSubscribe> subscribeList = iOnlCgformSubscribeService.list();
|
||||
List<String> documentIdList = subscribeList.stream().map(OnlCgformSubscribe::getDocumentId).distinct().collect(Collectors.toList());
|
||||
//已经订阅的法规
|
||||
List<BussDocumentLibraryEO> bussDocumentLibraryEOS = bussDocumentLibraryEOList.stream()
|
||||
.filter(e -> documentIdList.contains(e.getId())).collect(Collectors.toList());
|
||||
if(bussDocumentLibraryEOS.size() == 0){
|
||||
return;
|
||||
}
|
||||
//普通数据字典
|
||||
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
|
||||
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String currentTime = sdf.format(new Date());
|
||||
for (BussDocumentLibraryEO bussDocumentLibraryEO : bussDocumentLibraryEOS) {
|
||||
Date xin1Che1Xing2Shi2Shi1Ri4Qi1 = bussDocumentLibraryEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1();
|
||||
Date implementTime = bussDocumentLibraryEO.getImplementTime();
|
||||
String category = bussDocumentLibraryEO.getLei4Bie2();
|
||||
String serialNumber = bussDocumentLibraryEO.getSerialNumber();
|
||||
String id = bussDocumentLibraryEO.getId();
|
||||
String title = bussDocumentLibraryEO.getTitleEn();
|
||||
//类别
|
||||
if(StringUtils.isNotBlank(category)){
|
||||
String finalCategory = category;
|
||||
List<SysDictItem> stateDictItemList = dictItemList.stream()
|
||||
.filter(e -> "type".equals(e.getDictCode()) && finalCategory.equals(e.getItemValue()))
|
||||
.collect(Collectors.toList());
|
||||
if(stateDictItemList.size() != 0){
|
||||
category = stateDictItemList.get(0).getEnName();
|
||||
}
|
||||
}else{
|
||||
category = "";
|
||||
}
|
||||
String href = "<a href='/docManage/library/detail?id=" + id +
|
||||
"&title=" + title +
|
||||
"&serial_number=" + serialNumber + "'" + " target='_blank'>" + serialNumber + "</a>";
|
||||
//跳转文档详情
|
||||
String url = backUrl + "/docManage/library/detail?id=" + id;
|
||||
//订阅的用户
|
||||
List<OnlCgformSubscribe> onlCgformSubscribe = subscribeList.stream().filter(e -> e.getDocumentId().equals(bussDocumentLibraryEO.getId())).collect(Collectors.toList());
|
||||
List<String> userIdList = new ArrayList<>();
|
||||
List<String> thirdIdList = new ArrayList<>();
|
||||
if(onlCgformSubscribe.size() != 0){
|
||||
List<String> userNameList = onlCgformSubscribe.stream().map(OnlCgformSubscribe::getCreateBy).collect(Collectors.toList());
|
||||
List<SysUser> userList = sysUserMapper.getUserListByNames(StringUtils.join(userNameList, ","));
|
||||
userIdList = userList.stream().map(SysUser::getId).collect(Collectors.toList());
|
||||
thirdIdList = userList.stream().map(SysUser::getThirdId).collect(Collectors.toList());
|
||||
}
|
||||
//新车型实施日期
|
||||
//您所订阅的标准GB 7258 新车型实施日期为2022-01-01,请注意查看
|
||||
//The implementation date of the standard GB 7258 new model you subscribed to is 2022-01-01,
|
||||
// please pay attention to check
|
||||
if(ObjectUtils.isNotEmpty(xin1Che1Xing2Shi2Shi1Ri4Qi1)){
|
||||
//当前时间的前6个月
|
||||
String beforeTimeSix = beforeTime(6,xin1Che1Xing2Shi2Shi1Ri4Qi1);
|
||||
//当前时间的前12个月
|
||||
String beforeTimeSixTen = beforeTime(12,xin1Che1Xing2Shi2Shi1Ri4Qi1);
|
||||
|
||||
if(currentTime.equals(beforeTimeSix) || currentTime.equals(beforeTimeSixTen)){
|
||||
//发送站内消息和飞书消息
|
||||
String format = sdf.format(xin1Che1Xing2Shi2Shi1Ri4Qi1);
|
||||
String content = "The implementation date of the " + category +" "+ serialNumber
|
||||
+ " new model you subscribed to is "+format+",please pay attention to check";
|
||||
String contentInfo = "The implementation date of the " + category +" "+ href
|
||||
+ " new model you subscribed to is "+format+",please pay attention to check";
|
||||
sendMessage(content,contentInfo,content, url, userIdList, thirdIdList);
|
||||
}
|
||||
}
|
||||
|
||||
//在产车实施日期
|
||||
//The implementation date of the standard GB 7258 in production vehicle you subscribed to is 2022-01-01,
|
||||
// please pay attention to check
|
||||
if(ObjectUtils.isNotEmpty(implementTime)){
|
||||
//当前时间的前6个月
|
||||
String beforeTimeSix = beforeTime(6,implementTime);
|
||||
//当前时间的前12个月
|
||||
String beforeTimeSixTen = beforeTime(12,implementTime);
|
||||
if(currentTime.equals(beforeTimeSix) || currentTime.equals(beforeTimeSixTen)){
|
||||
//发送站内消息和飞书消息
|
||||
String format = sdf.format(implementTime);
|
||||
String content = "The implementation date of the " + category +" "+ serialNumber
|
||||
+ " production vehicle you subscribed to is "+format+",please pay attention to check";
|
||||
String contentInfo = "The implementation date of the " + category +" "+ href
|
||||
+ " production vehicle you subscribed to is "+format+",please pay attention to check";
|
||||
sendMessage(content,contentInfo,content, url, userIdList, thirdIdList);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void sendMessage(String content,String contentInfo,String contentFeiShu, String url, List<String> userIdList, List<String> thirdIdList) {
|
||||
//站内消息
|
||||
//封装消息的实体类
|
||||
SysAnnouncement sysAnnouncement = bussDocumentLibraryEOService.getSysAnnouncement(userIdList, content, contentInfo);
|
||||
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
|
||||
bussDocumentLibraryEOService.sendWebsocket(StringUtils.join(userIdList, ","), content);
|
||||
|
||||
//飞书消息
|
||||
try {
|
||||
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentFeiShu, MessageTypeEnum.WARN.getName(), url);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private String beforeTime (int month,Date date){
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Calendar calendarBefore = Calendar.getInstance();
|
||||
calendarBefore.setTime(date);
|
||||
calendarBefore.add(Calendar.MONTH, -month);
|
||||
Date dateBefore = calendarBefore.getTime();
|
||||
String beforeTime = sdf.format(dateBefore);
|
||||
return beforeTime;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user