Commit 3321bcb5 authored by chenzhao's avatar chenzhao

工作台 消息及短信功能

parent 84724514
...@@ -3,7 +3,9 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller; ...@@ -3,7 +3,9 @@ package com.yeejoin.amos.boot.module.jyjc.biz.controller;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import com.yeejoin.amos.boot.module.common.biz.utils.CommonResponseUtil;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonserviceImpl; import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.CommonserviceImpl;
import com.yeejoin.amos.boot.module.jyjc.biz.service.impl.EquipRegularlyRemindServicelmpl;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzBaseEnterpriseInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -32,6 +34,8 @@ public class CommonController extends BaseController { ...@@ -32,6 +34,8 @@ public class CommonController extends BaseController {
@Autowired @Autowired
CommonserviceImpl commonserviceImpl; CommonserviceImpl commonserviceImpl;
@Autowired
EquipRegularlyRemindServicelmpl equipRegularlyRemindServicelmpl;
/** /**
* 新增 * 新增
...@@ -100,4 +104,14 @@ public class CommonController extends BaseController { ...@@ -100,4 +104,14 @@ public class CommonController extends BaseController {
return ResponseHelper.buildResponse(commonserviceImpl.getInspectionUnitBySequenceNbr(sequenceNbr)); return ResponseHelper.buildResponse(commonserviceImpl.getInspectionUnitBySequenceNbr(sequenceNbr));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY,needAuth = false)
@GetMapping(value = "/test1")
@ApiOperation(httpMethod = "GET", value = "查询检验检测机构基本信息", notes = "查询检验检测机构基本信息")
public ResponseModel sendReminderMessage() {
equipRegularlyRemindServicelmpl.sendReminderMessage();
return CommonResponseUtil.success();
}
} }
...@@ -2,50 +2,123 @@ package com.yeejoin.amos.boot.module.jyjc.biz.service.impl; ...@@ -2,50 +2,123 @@ package com.yeejoin.amos.boot.module.jyjc.biz.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yeejoin.amos.boot.biz.common.utils.DateUtils; import com.yeejoin.amos.boot.biz.common.utils.DateUtils;
import com.yeejoin.amos.boot.module.ymt.api.dto.UseInfoModel;
import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.TzsUserInfo;
import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo; import com.yeejoin.amos.boot.module.ymt.api.mapper.TzsUserInfoMapper;
import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper; import com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper;
import com.yeejoin.amos.feign.systemctl.Systemctl; import com.yeejoin.amos.feign.systemctl.Systemctl;
import com.yeejoin.amos.feign.systemctl.model.MessageModel;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@EnableScheduling @EnableScheduling
@Service
public class EquipRegularlyRemindServicelmpl { public class EquipRegularlyRemindServicelmpl {
@Autowired @Autowired
private UseInfoMapper useInfoMapper; private UseInfoMapper useInfoMapper;
@Autowired
private TzsUserInfoMapper tzsUserInfoMapper;
@Scheduled(cron = "0 0 8 * * * ?") @Scheduled(cron = "0 0 8 * * ?")
public void sendReminderMessage(){ public void sendReminderMessage(){
//获取当前日期 //获取当前日期
String currentDate = DateUtils.getDateNowShortStr(); String currentDate = DateUtils.getDateNowShortStr();
Date date = DateUtils.dateAddDays(new Date(), 31); Date curDate = null;
try {
curDate = DateUtils.dateParse(currentDate, null);
} catch (ParseException e) {
e.printStackTrace();
}
Date date = DateUtils.dateAddDays(curDate, 31);
List<String> types = new ArrayList<>(); List<String> types = new ArrayList<>();
List<String> status = new ArrayList<>(); List<String> status = new ArrayList<>();
//查询需要发送消息的设备 //查询需要发送消息的设备
LambdaQueryWrapper<UseInfo> query = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<UseInfo> query = new LambdaQueryWrapper<>();
query.in(UseInfo::getLastInspectType,types); // query.in(UseInfo::getLastInspectType,types);
query.in(UseInfo::getStatus,status); // query.in(UseInfo::getStatus,status);
query.le(UseInfo::getNextInspectDate,date).or().ge(UseInfo::getNextInspectDate,currentDate); // query.le(UseInfo::getNextInspectDate,date).or().ge(UseInfo::getNextInspectDate,currentDate);
List<UseInfo> equips = useInfoMapper.selectList(query); // List<UseInfo> equips = useInfoMapper.selectList(query);
//
List<UseInfoModel> equips = useInfoMapper.selecEquipInfotList(types, status, date, curDate);
//超期设备
List<UseInfoModel> cqEquip = new ArrayList<>();
//临期设备
List<UseInfoModel> lqEquip = new ArrayList<>();
for (UseInfoModel equip : equips) {
//下次检验时间小于当前时间为超期 反之为临期
if (DateUtils.dateCompare(equip.getNextInspectDate(),curDate) < 0 ){
cqEquip.add(equip);
}else {
lqEquip.add(equip);
}
}
Map<String, List<UseInfoModel>> cqEquips = cqEquip.stream().collect(Collectors.groupingBy(UseInfoModel::getUseUnitCreditCode));
Map<String, List<UseInfoModel>> lqEquips = lqEquip.stream().collect(Collectors.groupingBy(UseInfoModel::getUseUnitCreditCode));
for (String s : cqEquips.keySet()) {
//查询单位下共有多少超期及临期装备
List<UseInfoModel> useInfos = cqEquips.get(s);
int cq = useInfos.size();
int lq = lqEquips.containsKey(s)?lqEquips.get(s).size():0;
//查询符合发送规则的人员电话 //查询符合发送规则的人员电话
LambdaQueryWrapper<TzsUserInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(TzsUserInfo::getPost,"6552");
//组装短信内容 queryWrapper.isNotNull(TzsUserInfo::getPhone);
HashMap<String,String> params = new HashMap<>(); List<TzsUserInfo> tzsUserInfos = tzsUserInfoMapper.selectList(queryWrapper);
List<String> phones = tzsUserInfos.stream().map(TzsUserInfo::getPhone).collect(Collectors.toList());
//发送短信 List<String> userIds = tzsUserInfos.stream().map(TzsUserInfo::getAmosUserId).collect(Collectors.toList());
// 组装短信内容 发送短信
Systemctl.smsClient.sendCommonSms(params); HashMap<String,String> smsParams = new HashMap<>();
smsParams.put("smsCode","EQU_TZS_001");
smsParams.put("lq", String.valueOf(lq));
smsParams.put("cq", String.valueOf(cq));
for (String phone : phones) {
smsParams.put("mobile",phone);
Systemctl.smsClient.sendCommonSms(smsParams);
}
//发送平台消息
if ( lqEquips.containsKey(s)){
useInfos.addAll(lqEquips.get(s));
}
for (UseInfoModel useInfo : useInfos) {
Date nextInspectDate = useInfo.getNextInspectDate();
try {
MessageModel messageModel = new MessageModel();
messageModel.setCategory(1); //1 :消息通知
messageModel.setRelationId(useInfo.getRecord());
int day = DateUtils.dateBetween(nextInspectDate, curDate);
int day1 = DateUtils.dateBetween(nextInspectDate, date);
if (day > 0) {
messageModel.setTitle("设备超期提醒");
messageModel.setBody(useInfo.getProductName()+"("+useInfo.getSupervisiryCode()==null?"":useInfo.getSupervisiryCode()+") 已超期"+ Math.abs(day)+"天" );
}else if (day1 > 0){
messageModel.setTitle("设备临期提醒");
messageModel.setBody(useInfo.getProductName()+"("+useInfo.getSupervisiryCode()==null?"":useInfo.getSupervisiryCode()+") 还有"+ Math.abs(day1)+"天将到期");
}
messageModel.setRecivers(userIds);
messageModel.setIsSendWeb(true);
messageModel.setMsgType("EQUIP_HINT");
messageModel.setMsgTypeLabel("设备检验");
Systemctl.messageClient.create(messageModel);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
} }
......
package com.yeejoin.amos.boot.module.ymt.api.dto; package com.yeejoin.amos.boot.module.ymt.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto; import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.Date;
/** /**
* 使用信息表 * 使用信息表
* *
...@@ -72,5 +75,11 @@ public class UseInfoModel extends BaseDto { ...@@ -72,5 +75,11 @@ public class UseInfoModel extends BaseDto {
private String cityName; private String cityName;
@ApiModelProperty(value = "") @ApiModelProperty(value = "")
private String countyName; private String countyName;
private String supervisiryCode;
private String productName;
private Date nextInspectDate;
private String lastInspectReportNo;
private String lastInspectType;
private String record;
} }
package com.yeejoin.amos.boot.module.ymt.api.mapper; package com.yeejoin.amos.boot.module.ymt.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.ymt.api.dto.UseInfoModel;
import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo; import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo;
import java.util.Date;
import java.util.List;
/** /**
* 特种设备基本信息-使用信息 Mapper 接口 * 特种设备基本信息-使用信息 Mapper 接口
* *
...@@ -11,4 +15,6 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo; ...@@ -11,4 +15,6 @@ import com.yeejoin.amos.boot.module.ymt.api.entity.UseInfo;
*/ */
public interface UseInfoMapper extends BaseMapper<UseInfo> { public interface UseInfoMapper extends BaseMapper<UseInfo> {
List<UseInfoModel> selecEquipInfotList(List<String>types, List<String>statusList, Date date,Date curDate);
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.ymt.api.mapper.UseInfoMapper">
<select id="selecEquipInfotList" resultType="com.yeejoin.amos.boot.module.ymt.api.dto.UseInfoModel">
SELECT
use.RECORD,
use.USE_UNIT_CREDIT_CODE,
other.SUPERVISORY_CODE,
register.PRODUCT_NAME,
base.contact_phone as phone
FROM
idx_biz_jg_use_info use
LEFT JOIN idx_biz_jg_other_info other on other.RECORD = use.RECORD
LEFT JOIN idx_biz_jg_register_info register on register.RECORD = use.RECORD
LEFT JOIN idx_biz_jg_supervision_info supervision on supervision.RECORD = use.RECORD
LEFT JOIN privilege_company pc on pc.org_code = supervision.ORG_BRANCH_CODE
LEFT JOIN tz_base_enterprise_info base on base.use_code = pc.company_code
<where>
<if test="statusList.size() > 0">
and STATUS in
<foreach collection="statusList" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="types.size() > 0">
and LAST_INSPECT_TYPE in
<foreach collection="types" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
and (NEXT_INSPECT_DATE > #{date} or #{curDate} > NEXT_INSPECT_DATE)
</where>
</select>
</mapper>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<springcloud.version>Hoxton.SR8</springcloud.version> <springcloud.version>Hoxton.SR8</springcloud.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<tyboot-version>1.1.23-SNAPSHOT</tyboot-version> <tyboot-version>1.1.23-SNAPSHOT</tyboot-version>
<amos.version>1.8.6</amos.version> <amos.version>1.10.3</amos.version>
<itext.version>7.1.1</itext.version> <itext.version>7.1.1</itext.version>
<elasticsearch.version>7.15.2</elasticsearch.version> <elasticsearch.version>7.15.2</elasticsearch.version>
</properties> </properties>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment