|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.glxp.api.service.purchase.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
|
|
import com.glxp.api.common.res.BaseResponse;
|
|
|
|
@ -16,12 +17,15 @@ import com.glxp.api.res.purchase.SupCertRemindMsgResponse;
|
|
|
|
|
import com.glxp.api.service.auth.CustomerService;
|
|
|
|
|
import com.glxp.api.service.purchase.SupCertRemindMsgService;
|
|
|
|
|
import com.glxp.api.service.purchase.SupCertService;
|
|
|
|
|
import com.glxp.api.service.system.SystemParamConfigService;
|
|
|
|
|
import com.glxp.api.util.DateUtil;
|
|
|
|
|
import com.glxp.api.util.IntUtil;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.Date;
|
|
|
|
@ -122,10 +126,16 @@ public class SupCertRemindMsgImpl implements SupCertRemindMsgService {
|
|
|
|
|
//资质预警类型集合
|
|
|
|
|
List<Integer> types = Arrays.asList(1, 2, 3);
|
|
|
|
|
for (Integer type : types) {
|
|
|
|
|
buildNearRemindMsg(buildNearQueryWrapper(type), type);
|
|
|
|
|
buildRemindMsg(buildQueryWrapper(type), type);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean removeRemindMsg(String idFk) {
|
|
|
|
|
return supCertRemindMsgDao.delete(new LambdaQueryWrapper<SupCertRemindMsgEntity>().eq(SupCertRemindMsgEntity::getIdFk, idFk)) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造查询条件
|
|
|
|
|
*
|
|
|
|
@ -151,10 +161,73 @@ public class SupCertRemindMsgImpl implements SupCertRemindMsgService {
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造近效期预警查询条件
|
|
|
|
|
*
|
|
|
|
|
* @param type
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Resource
|
|
|
|
|
SystemParamConfigService systemParamConfigService;
|
|
|
|
|
|
|
|
|
|
private QueryWrapper<SupCertEntity> buildNearQueryWrapper(Integer type) {
|
|
|
|
|
|
|
|
|
|
String plusDay = systemParamConfigService.selectValueByParamKey("cert_near_warn");
|
|
|
|
|
|
|
|
|
|
if (IntUtil.value(plusDay) > 0) {
|
|
|
|
|
QueryWrapper<SupCertEntity> wrapper = new QueryWrapper<>();
|
|
|
|
|
// 获取当前日期
|
|
|
|
|
LocalDate currentDate = LocalDate.now();
|
|
|
|
|
// 获取N天后的日期
|
|
|
|
|
LocalDate endDate = currentDate.plusDays(IntUtil.value(plusDay));
|
|
|
|
|
// 创建 QueryWrapper 并设置条件
|
|
|
|
|
wrapper.lt("expireDate", endDate);
|
|
|
|
|
wrapper.ge("expireDate", currentDate);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wrapper.eq("status", 0).eq("auditStatus", ConstantStatus.AUDIT_PASS).eq("type", type);
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 1: //查询供应商ID
|
|
|
|
|
wrapper.select("CustomerId", "code", "vailDate", "expireDate", "type");
|
|
|
|
|
break;
|
|
|
|
|
case 2: //查询生产企业ID
|
|
|
|
|
wrapper.select("manufacturerIdFk", "code", "vailDate", "expireDate", "type");
|
|
|
|
|
break;
|
|
|
|
|
case 3: //查询产品ID
|
|
|
|
|
wrapper.select("productIdFk", "code", "vailDate", "expireDate", "type");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return wrapper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
SupCertService supCertService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造,保存近效期预警信息
|
|
|
|
|
*/
|
|
|
|
|
private void buildNearRemindMsg(QueryWrapper<SupCertEntity> supCertWrapper, Integer type) {
|
|
|
|
|
List<SupCertEntity> supCertList = supCertDao.selectList(supCertWrapper);
|
|
|
|
|
List<SupCertEntity> list = new CopyOnWriteArrayList<>(supCertList);
|
|
|
|
|
list.parallelStream().forEach(supCertEntity -> {
|
|
|
|
|
SupCertRemindMsgEntity msgEntity = getSupCertNearRemindMsg(supCertEntity, type);
|
|
|
|
|
if (null == msgEntity.getNextRemindTime() || msgEntity.getNextRemindTime().getTime() > new Date().getTime()) {
|
|
|
|
|
try {
|
|
|
|
|
saveMsg(msgEntity);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造,保存预警信息
|
|
|
|
|
*
|
|
|
|
@ -233,6 +306,7 @@ public class SupCertRemindMsgImpl implements SupCertRemindMsgService {
|
|
|
|
|
msgEntity = new SupCertRemindMsgEntity();
|
|
|
|
|
msgEntity.setIdFk(idFk); //设置关联主键
|
|
|
|
|
msgEntity.setType(type); //类型
|
|
|
|
|
msgEntity.setWarnType(1);
|
|
|
|
|
msgEntity.setCode(supCertEntity.getCode()); //证书编码
|
|
|
|
|
msgEntity.setCreateTime(new Date());
|
|
|
|
|
}
|
|
|
|
@ -243,4 +317,40 @@ public class SupCertRemindMsgImpl implements SupCertRemindMsgService {
|
|
|
|
|
return msgEntity;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private SupCertRemindMsgEntity getSupCertNearRemindMsg(SupCertEntity supCertEntity, Integer type) {
|
|
|
|
|
String idFk = null; //关联外键
|
|
|
|
|
String msg = null; //预警信息
|
|
|
|
|
switch (type) {
|
|
|
|
|
case 1: //供应商
|
|
|
|
|
idFk = supCertEntity.getCustomerId();
|
|
|
|
|
msg = "供应商资质即将过期,过期时间:" + DateUtil.formatDate(supCertEntity.getExpireDate(), "yyyy-MM-dd");
|
|
|
|
|
break;
|
|
|
|
|
case 2: //生产企业
|
|
|
|
|
idFk = supCertEntity.getManufacturerIdFk();
|
|
|
|
|
msg = "生产企业资质即将过期,过期时间:" + DateUtil.formatDate(supCertEntity.getExpireDate(), "yyyy-MM-dd");
|
|
|
|
|
break;
|
|
|
|
|
case 3: //产品
|
|
|
|
|
idFk = supCertEntity.getProductIdFk();
|
|
|
|
|
msg = "产品资质即将过期,过期时间:" + DateUtil.formatDate(supCertEntity.getExpireDate(), "yyyy-MM-dd");
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
SupCertRemindMsgEntity msgEntity = supCertRemindMsgDao.selectOne(new QueryWrapper<SupCertRemindMsgEntity>().eq("idFk", idFk).eq("type", type).eq("code", supCertEntity.getCode()).last("limit 1"));
|
|
|
|
|
if (null == msgEntity) {
|
|
|
|
|
//构造新的资质预警信息
|
|
|
|
|
msgEntity = new SupCertRemindMsgEntity();
|
|
|
|
|
msgEntity.setIdFk(idFk); //设置关联主键
|
|
|
|
|
msgEntity.setType(type); //类型
|
|
|
|
|
msgEntity.setWarnType(2);
|
|
|
|
|
msgEntity.setCode(supCertEntity.getCode()); //证书编码
|
|
|
|
|
msgEntity.setCreateTime(new Date());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
msgEntity.setVailDate(supCertEntity.getVailDate());
|
|
|
|
|
msgEntity.setExpireDate(supCertEntity.getExpireDate());
|
|
|
|
|
msgEntity.setMsg(msg);
|
|
|
|
|
return msgEntity;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|