|
|
@@ -0,0 +1,308 @@
|
|
|
+package org.jeecg.modules.quartz.job;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.sun.org.apache.xpath.internal.operations.Bool;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.checkerframework.checker.units.qual.A;
|
|
|
+import org.jeecg.common.api.vo.Result;
|
|
|
+import org.jeecg.modules.smscheck.configs.CheckStateCode;
|
|
|
+import org.jeecg.modules.smscheck.entity.*;
|
|
|
+import org.jeecg.modules.smscheck.handle.impl.EmailSendMsgHandle;
|
|
|
+import org.jeecg.modules.smscheck.mapper.SmsCheckCustomerDataMapper;
|
|
|
+import org.jeecg.modules.smscheck.mapper.SmsLotCustomerMapper;
|
|
|
+import org.jeecg.modules.smscheck.mapper.SmsTruckCustomerDataMapper;
|
|
|
+import org.jeecg.modules.smscheck.service.ISmsCheckCustomerDataLogService;
|
|
|
+import org.jeecg.modules.smscheck.service.ISmsCheckCustomerInfoService;
|
|
|
+import org.jeecg.modules.smscheck.service.ISysUserService;
|
|
|
+import org.jeecg.modules.smscheck.service.SmsCheckCustomerInfoBecomeDueService;
|
|
|
+import org.jeecg.modules.smscheck.service.impl.SmsCheckCustomerInfoServiceImpl;
|
|
|
+import org.quartz.Job;
|
|
|
+import org.quartz.JobExecutionContext;
|
|
|
+import org.quartz.JobExecutionException;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+public class ExpirationReminderCustormJob implements Job {
|
|
|
+ /**
|
|
|
+ * 行短
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private SmsCheckCustomerDataMapper smsCheckCustomerDataMapper;
|
|
|
+ /**
|
|
|
+ * 物联网
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private SmsLotCustomerMapper smsLotCustomerMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 中继线
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private SmsTruckCustomerDataMapper smsTruckCustomerDataMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 稽核资料到期数据表
|
|
|
+ */
|
|
|
+ @Autowired
|
|
|
+ private SmsCheckCustomerInfoBecomeDueService smsCheckCustomerInfoBecomeDueService;
|
|
|
+ @Autowired
|
|
|
+ private ISmsCheckCustomerInfoService iSmsCheckCustomerInfoService;
|
|
|
+ @Autowired
|
|
|
+ private ISysUserService sysUserService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 天数
|
|
|
+ */
|
|
|
+ private Integer days = 90;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void execute(JobExecutionContext context) throws JobExecutionException {
|
|
|
+ log.info("稽核到期提醒任务开始处理");
|
|
|
+ HashMap<String, String> emailMap = new HashMap<>();
|
|
|
+ ArrayList<SmsCheckCustomerInfoBecomeDue> addDueList = new ArrayList<>();
|
|
|
+ ArrayList<SmsCheckCustomerInfoBecomeDue> updateDueList = new ArrayList<>();
|
|
|
+ List<SysUser> userlist = sysUserService.list();
|
|
|
+ Map<String, SysUser> userMap = userlist.stream()
|
|
|
+ .collect(Collectors.toMap(v -> v.getUsername(), Function.identity(), (o, n) -> o));
|
|
|
+ // 全量稽核客户数据 -> 通过
|
|
|
+ LambdaQueryWrapper<SmsCheckCustomerInfo> infoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ infoLambdaQueryWrapper.eq(SmsCheckCustomerInfo::getCheckState, 5);
|
|
|
+ List<SmsCheckCustomerInfo> infoList = iSmsCheckCustomerInfoService.list(infoLambdaQueryWrapper);
|
|
|
+
|
|
|
+
|
|
|
+ // 行短
|
|
|
+ // 码号证到期时间
|
|
|
+ Map<String, SmsCheckCustomerData> shortMapNumber = smsCheckCustomerDataMapper.listByCodeNumberDateDate(days);
|
|
|
+ // 备案通知到期时间
|
|
|
+ Map<String, SmsCheckCustomerData> shortMapFiling = smsCheckCustomerDataMapper.listByFilingsDateDate(days);
|
|
|
+ // 增值业务许可证
|
|
|
+ Map<String, SmsCheckCustomerData> shortMapPermit = smsCheckCustomerDataMapper.listByPermitDateDate(days);
|
|
|
+ // 业务合同是否到期
|
|
|
+ Map<String, SmsCheckCustomerData> shortMapContract = smsCheckCustomerDataMapper.listByContractDateData(days);
|
|
|
+
|
|
|
+ // 物联网
|
|
|
+ // 业务合同
|
|
|
+ Map<String, SmsLotCustomerData> lotMapContract = smsLotCustomerMapper.listByContractDateData(days);
|
|
|
+
|
|
|
+ // 中继线
|
|
|
+ // 业务合同
|
|
|
+ Map<String, SmsTruckCustomerData> truckMapContract = smsTruckCustomerDataMapper.listByContractDateData(days);
|
|
|
+ // 房屋租凭合同
|
|
|
+ Map<String, SmsTruckCustomerData> truckMapHouse = smsTruckCustomerDataMapper.listByHouseDate(days);
|
|
|
+ // 增值业务许可证
|
|
|
+ Map<String, SmsTruckCustomerData> truckMapAddedLicense = smsTruckCustomerDataMapper.listByAddedLicense(days);
|
|
|
+
|
|
|
+ ArrayList<Integer> checkTypeList = new ArrayList<>();
|
|
|
+ ; checkTypeList.add(2);
|
|
|
+ checkTypeList.add(4);
|
|
|
+ LambdaQueryWrapper<SmsCheckCustomerInfoBecomeDue> dueLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ // 未处理和未完善
|
|
|
+ dueLambdaQueryWrapper.in(SmsCheckCustomerInfoBecomeDue::getCheckState, checkTypeList);
|
|
|
+ // 获取稽核到期数据
|
|
|
+ List<SmsCheckCustomerInfoBecomeDue> dueList = smsCheckCustomerInfoBecomeDueService.list(dueLambdaQueryWrapper);
|
|
|
+ Map<String, SmsCheckCustomerInfoBecomeDue> dueMap = dueList.stream()
|
|
|
+ .collect(Collectors.toMap(v -> v.getInfoId() + "-" + v.getType(), Function.identity(), (o, n) -> o));
|
|
|
+ checkTypeList.clear();
|
|
|
+ checkTypeList.add(0);
|
|
|
+ checkTypeList.add(1);
|
|
|
+ LambdaQueryWrapper<SmsCheckCustomerInfoBecomeDue> dueLambdaQueryWrapperIng = new LambdaQueryWrapper<>();
|
|
|
+ dueLambdaQueryWrapperIng.in(SmsCheckCustomerInfoBecomeDue::getCheckState, checkTypeList);
|
|
|
+ List<SmsCheckCustomerInfoBecomeDue> dueListIng = smsCheckCustomerInfoBecomeDueService.list(dueLambdaQueryWrapperIng);
|
|
|
+ Map<String, SmsCheckCustomerInfoBecomeDue> dueMapIng = dueListIng.stream()
|
|
|
+ .collect(Collectors.toMap(v -> v.getInfoId() + "-" + v.getType(), Function.identity(), (o, n) -> o));
|
|
|
+
|
|
|
+
|
|
|
+ infoList.forEach(infoData -> {
|
|
|
+ // 客户信息ID
|
|
|
+ String id = infoData.getId();
|
|
|
+ if (id.equals("1739180152945946626")){
|
|
|
+ System.out.println(id);
|
|
|
+ }
|
|
|
+ Integer type = infoData.getType();
|
|
|
+ String staffNo = infoData.getStaffNo();
|
|
|
+ SysUser sysUser = userMap.get(staffNo);
|
|
|
+ // 稽核到期数据中是否存在
|
|
|
+ SmsCheckCustomerInfoBecomeDue smsCheckCustomerInfoBecomeDue = dueMap.get(id+"-"+type);
|
|
|
+ SmsCheckCustomerInfoBecomeDue dueIng = dueMapIng.get(id + '-' +type);
|
|
|
+ SmsCheckCustomerInfoBecomeDue dueData = new SmsCheckCustomerInfoBecomeDue();
|
|
|
+ dueData.setType(type);
|
|
|
+ dueData.setTaskId(infoData.getTaskId());
|
|
|
+ dueData.setCheckState(0);
|
|
|
+ dueData.setInfoId(id);
|
|
|
+ dueData.setDelFlag(0);
|
|
|
+ dueData.setSysOrgCode(infoData.getSysOrgCode());
|
|
|
+ Boolean addChange = false;
|
|
|
+ Boolean updataChange = false;
|
|
|
+
|
|
|
+ if (smsCheckCustomerInfoBecomeDue != null || dueIng != null) {
|
|
|
+ updataChange = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (type == 1) {
|
|
|
+ // 行短 -> 码号证
|
|
|
+ if (shortMapNumber.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setShortNowCodeNumberDateIs(1);
|
|
|
+ }
|
|
|
+ // 行短-> 备案通知到期时间
|
|
|
+ if (shortMapFiling.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setShortNowFilingsDataIs(1);
|
|
|
+ }
|
|
|
+ // 行短-> 增值业务许可证
|
|
|
+ if (shortMapPermit.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setShortNowPermitDateIs(1);
|
|
|
+ }
|
|
|
+ // 行短-> 业务合同是否到期
|
|
|
+ if (shortMapContract.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setShortNowContractDateIs(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (type == 2) {
|
|
|
+ // 物联网 -> 业务合同
|
|
|
+ if (lotMapContract.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setLotContractDateIs(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if (type == 4) {
|
|
|
+ // 中继线稽核 -> 业务合同
|
|
|
+ if (truckMapContract.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setTruckContractDateIs(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 中继线稽核 -> 房屋租凭合同
|
|
|
+ if (truckMapHouse.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setTruckHouseDateIs(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 中继线稽核 -> 增值业务许可证
|
|
|
+ if (truckMapAddedLicense.get(id) != null) {
|
|
|
+ if (!updataChange){
|
|
|
+ addChange = true;
|
|
|
+ }
|
|
|
+ dueData.setTruckAddedLicenseDateIs(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (addChange){
|
|
|
+ addDueList.add(dueData);
|
|
|
+ if (sysUser != null){
|
|
|
+ String email = sysUser.getEmail();
|
|
|
+ if (StringUtils.isNotEmpty(email)){
|
|
|
+ String msg = "【客户编号】:" + infoData.getCustomerNo()+
|
|
|
+ ",【用户编号】:" + infoData.getUserNo() +"的客户资料即将或已过期,请尽快登录智慧运营系统,在稽核资料预警功能中对资料进行更新!";
|
|
|
+ emailMap.put(email+"-"+staffNo,msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (updataChange){
|
|
|
+ if (smsCheckCustomerInfoBecomeDue != null){
|
|
|
+ SmsCheckCustomerInfoBecomeDue due = new SmsCheckCustomerInfoBecomeDue();
|
|
|
+ Boolean upDataAdd = false;
|
|
|
+ if ( smsCheckCustomerInfoBecomeDue.getShortNowCodeNumberDateIs() == 0 && dueData.getShortNowCodeNumberDateIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setShortNowCodeNumberDateIs(1);
|
|
|
+ }
|
|
|
+ if (smsCheckCustomerInfoBecomeDue.getShortNowContractDateIs() == 0 && dueData.getShortNowContractDateIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setShortNowContractDateIs(1);
|
|
|
+ }
|
|
|
+ if (smsCheckCustomerInfoBecomeDue.getShortNowFilingsDataIs() == 0 && dueData.getShortNowFilingsDataIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setShortNowFilingsDataIs(1);
|
|
|
+ }
|
|
|
+ if (smsCheckCustomerInfoBecomeDue.getShortNowPermitDateIs() == 0 && dueData.getShortNowPermitDateIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setShortNowPermitDateIs(1);
|
|
|
+ }
|
|
|
+ if (smsCheckCustomerInfoBecomeDue.getLotContractDateIs() == 0 && dueData.getLotContractDateIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setLotContractDateIs(1);
|
|
|
+ }
|
|
|
+ if (smsCheckCustomerInfoBecomeDue.getTruckContractDateIs() == 0 && dueData.getTruckContractDateIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setTruckContractDateIs(1);
|
|
|
+ }
|
|
|
+ if (smsCheckCustomerInfoBecomeDue.getTruckHouseDateIs() == 0 && dueData.getTruckHouseDateIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setTruckHouseDateIs(1);
|
|
|
+ }
|
|
|
+ if (smsCheckCustomerInfoBecomeDue.getTruckAddedLicenseDateIs() == 0 && dueData.getTruckAddedLicenseDateIs() == 1){
|
|
|
+ upDataAdd = true;
|
|
|
+ due.setTruckAddedLicenseDateIs(1);
|
|
|
+ }
|
|
|
+ if (upDataAdd){
|
|
|
+ dueData = due;
|
|
|
+ dueData.setType(type);
|
|
|
+ dueData.setTaskId(infoData.getTaskId());
|
|
|
+ dueData.setCheckState(0);
|
|
|
+ dueData.setInfoId(id);
|
|
|
+ dueData.setDelFlag(0);
|
|
|
+ dueData.setSysOrgCode(infoData.getSysOrgCode());
|
|
|
+ if (dueIng == null){
|
|
|
+ addDueList.add(dueData);
|
|
|
+ if (sysUser != null){
|
|
|
+ String email = sysUser.getEmail();
|
|
|
+ if (StringUtils.isNotEmpty(email)){
|
|
|
+ String msg = "【客户编号】:" + infoData.getCustomerNo()+
|
|
|
+ ",【用户编号】:" + infoData.getUserNo() +"的客户资料即将或已过期,请尽快登录智慧运营系统,在稽核资料预警功能中对资料进行更新!";
|
|
|
+ emailMap.put(email+"-"+staffNo,msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ dueData.setId(dueIng.getId());
|
|
|
+ updateDueList.add(dueData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ dueData.setId(dueIng.getId());
|
|
|
+ updateDueList.add(dueData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ // 新增到期数据
|
|
|
+ smsCheckCustomerInfoBecomeDueService.saveBatch(addDueList);
|
|
|
+ // 修改到期数据
|
|
|
+ smsCheckCustomerInfoBecomeDueService.updateBatchById(updateDueList);
|
|
|
+ if (emailMap.size() > 0){
|
|
|
+ // 发送邮件
|
|
|
+ EmailSendMsgHandle emailSendMsgHandle = new EmailSendMsgHandle();
|
|
|
+ for (String key : emailMap.keySet()){
|
|
|
+ String[] emailAndStaffNo = key.split("-");
|
|
|
+ String msg = emailMap.get(key);
|
|
|
+ //emailSendMsgHandle.SendMsg(emailAndStaffNo[0],"稽核资料到期预警,工号:"+emailAndStaffNo[1],msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|