diff --git a/src/main/java/com/glxp/api/controller/purchase/SupCertRemindMsgController.java b/src/main/java/com/glxp/api/controller/purchase/SupCertRemindMsgController.java new file mode 100644 index 000000000..74c0336b2 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/purchase/SupCertRemindMsgController.java @@ -0,0 +1,71 @@ +package com.glxp.api.controller.purchase; + +import cn.hutool.core.util.StrUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.common.enums.ResultEnum; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.req.purchase.FilterCertRemindMsgRequest; +import com.glxp.api.res.purchase.SupCertRemindMsgResponse; +import com.glxp.api.service.purchase.SupCertRemindMsgService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 资质预警信息接口 + */ +@Slf4j +@RestController +public class SupCertRemindMsgController { + + @Resource + private SupCertRemindMsgService supCertRemindMsgService; + + /** + * 查询资质预警信息列表 + * + * @param filterCertRemindMsgRequest + * @return + */ + @GetMapping("/sup/cert/remind/msg/filter") + public BaseResponse filterList(FilterCertRemindMsgRequest filterCertRemindMsgRequest) { + List list = supCertRemindMsgService.filterList(filterCertRemindMsgRequest); + PageInfo pageInfo = new PageInfo<>(list); + return ResultVOUtils.page(pageInfo); + } + + /** + * 确认消息 + * + * @param id + * @param handleMsg 处理方式 + * @return + */ + @GetMapping("/sup/cert/remind/msg/confirmMsg") + public BaseResponse confirmMsg(Integer id, String handleMsg) { + if (null == id || StrUtil.isBlank(handleMsg)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return supCertRemindMsgService.confirmMsg(id, handleMsg); + } + + /** + * 忽略消息 + * + * @param id + * @param ignoreStatus 忽略状态 + * @return + */ + @GetMapping("/sup/cert/remind/msg/ignoreMsg") + public BaseResponse ignoreMsg(Integer id, Integer ignoreStatus) { + if (null == id || null == ignoreStatus) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + return supCertRemindMsgService.ignoreMsg(id, ignoreStatus); + } + +} diff --git a/src/main/java/com/glxp/api/dao/purchase/SupCertDao.java b/src/main/java/com/glxp/api/dao/purchase/SupCertDao.java index 8e2dc38f1..b41da274e 100644 --- a/src/main/java/com/glxp/api/dao/purchase/SupCertDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/SupCertDao.java @@ -1,6 +1,7 @@ package com.glxp.api.dao.purchase; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.purchase.SupCertEntity; import com.glxp.api.req.purchase.FilterSupCertRequest; import com.glxp.api.req.purchase.purPlanPrintRequest; @@ -10,7 +11,7 @@ import org.apache.ibatis.annotations.Param; import java.util.List; @Mapper -public interface SupCertDao { +public interface SupCertDao extends BaseMapper { List filterCompanyCert(FilterSupCertRequest filterSupCertRequest); @@ -25,7 +26,7 @@ public interface SupCertDao { boolean deleteById(String id); - boolean updateCustomerId(@Param("oldId") String oldId, @Param("newId") String newId,@Param("auditStatus") Integer auditStatus); + boolean updateCustomerId(@Param("oldId") String oldId, @Param("newId") String newId, @Param("auditStatus") Integer auditStatus); boolean updateManufacturerId(@Param("oldCustomerId") String oldCustomerId, @Param("newCustomerId") String newCustomerId, @Param("oldManufacturerIdFk") String oldManufacturerIdFk, @Param("newManufacturerIdFk") String newManufacturerIdFk); diff --git a/src/main/java/com/glxp/api/dao/purchase/SupCertRemindMsgDao.java b/src/main/java/com/glxp/api/dao/purchase/SupCertRemindMsgDao.java new file mode 100644 index 000000000..ced99c72b --- /dev/null +++ b/src/main/java/com/glxp/api/dao/purchase/SupCertRemindMsgDao.java @@ -0,0 +1,35 @@ +package com.glxp.api.dao.purchase; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.purchase.SupCertRemindMsgEntity; +import com.glxp.api.req.purchase.FilterCertRemindMsgRequest; +import com.glxp.api.res.purchase.SupCertRemindMsgResponse; + +import java.util.List; + +public interface SupCertRemindMsgDao extends BaseMapper { + + /** + * 查询供应商资质预警信息 + * + * @param filterCertRemindMsgRequest + * @return + */ + List selectSupRemindMsgList(FilterCertRemindMsgRequest filterCertRemindMsgRequest); + + /** + * 查询生产企业资质预警信息 + * + * @param filterCertRemindMsgRequest + * @return + */ + List selectManufactureRemindMsgList(FilterCertRemindMsgRequest filterCertRemindMsgRequest); + + /** + * 查询产品资质预警信息 + * + * @param filterCertRemindMsgRequest + * @return + */ + List selectProductRemindMsgList(FilterCertRemindMsgRequest filterCertRemindMsgRequest); +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java b/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java index d0b65f8ec..4ed837eb6 100644 --- a/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/SupCompanyDao.java @@ -4,6 +4,7 @@ package com.glxp.api.dao.purchase; import com.glxp.api.entity.purchase.SupCompanyEntity; import com.glxp.api.req.purchase.FilterSupCompanyRequest; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -26,4 +27,11 @@ public interface SupCompanyDao { boolean deleteCompany(String customerId); + /** + * 根据ID查询企业名称 + * + * @param customerId + * @return + */ + String selectNameByCustomerId(@Param("customerId") String customerId); } diff --git a/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java b/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java index 261c8a436..8f02b9f31 100644 --- a/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/SupManufacturerDao.java @@ -24,4 +24,12 @@ public interface SupManufacturerDao { boolean deleteById(@Param("id") String id); List getCompanyByNameAndCode(FilterSupManufacturerRequest filterSupManufacturerRequest); + + /** + * 根据生产厂家ID查询企业名称 + * + * @param manufacturerId + * @return + */ + String selectNameByManufacturerId(@Param("manufacturerId") String manufacturerId); } diff --git a/src/main/java/com/glxp/api/dao/purchase/SupProductDao.java b/src/main/java/com/glxp/api/dao/purchase/SupProductDao.java index 92c0e94fc..5d8a7441c 100644 --- a/src/main/java/com/glxp/api/dao/purchase/SupProductDao.java +++ b/src/main/java/com/glxp/api/dao/purchase/SupProductDao.java @@ -27,4 +27,5 @@ public interface SupProductDao { boolean deleteById(@Param("id") String id); boolean deleteByEnterpriseId(@Param("enterpriseId") String enterpriseId); + } diff --git a/src/main/java/com/glxp/api/entity/purchase/SupCertRemindMsgEntity.java b/src/main/java/com/glxp/api/entity/purchase/SupCertRemindMsgEntity.java new file mode 100644 index 000000000..d0e123189 --- /dev/null +++ b/src/main/java/com/glxp/api/entity/purchase/SupCertRemindMsgEntity.java @@ -0,0 +1,96 @@ +package com.glxp.api.entity.purchase; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 资质预警消息 + */ +@Data +@TableName(value = "sup_cret_remind_msg") +public class SupCertRemindMsgEntity { + + /** + * id + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + /** + * 关联主键,关联耗材字典ID,生产企业ID,供应商ID + */ + @TableField(value = "idFk") + private String idFk; + + /** + * 有效期 + */ + @TableField(value = "vailDate") + private Date vailDate; + + /** + * 失效期 + */ + @TableField(value = "expireDate") + private Date expireDate; + + /** + * 类型(1:供应商资质;2:生产企业资质;3:产品资质;) + */ + @TableField(value = "`type`") + private Integer type; + + /** + * 状态(1:未确认;2:已确认;) + */ + @TableField(value = "`status`") + private Integer status; + + /** + * 忽略状态(0:不忽略;1:忽略7天;2:忽略15天;3:忽略30天;) + */ + @TableField(value = "ignoreStatus") + private Integer ignoreStatus; + + /** + * 预警消息 + */ + @TableField(value = "msg") + private String msg; + + /** + * 处理方式 + */ + @TableField(value = "handleMsg") + private String handleMsg; + + /** + * 下次预警时间 + */ + @TableField(value = "nextRemindTime") + private Date nextRemindTime; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private Date createTime; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private Date updateTime; + + /** + * 备注 + */ + @TableField(value = "remark") + private String remark; + +} \ No newline at end of file diff --git a/src/main/java/com/glxp/api/req/purchase/FilterCertRemindMsgRequest.java b/src/main/java/com/glxp/api/req/purchase/FilterCertRemindMsgRequest.java new file mode 100644 index 000000000..d8e5335b5 --- /dev/null +++ b/src/main/java/com/glxp/api/req/purchase/FilterCertRemindMsgRequest.java @@ -0,0 +1,32 @@ +package com.glxp.api.req.purchase; + +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +/** + * 查询资质证书预警消息接口参数 + */ +@Data +public class FilterCertRemindMsgRequest extends ListPageRequest { + + /** + * 名称 + */ + private String name; + + /** + * 类型(1:供应商资质;2:生产企业资质;3:产品资质;) + */ + private Integer type; + + /** + * 状态(1:未确认;2:已确认;) + */ + private Integer status; + + /** + * 忽略状态(0:不忽略;1:忽略7天;2:忽略15天;3:忽略30天;) + */ + private Integer ignoreStatus; + +} diff --git a/src/main/java/com/glxp/api/res/purchase/SupCertRemindMsgResponse.java b/src/main/java/com/glxp/api/res/purchase/SupCertRemindMsgResponse.java new file mode 100644 index 000000000..76dfaa08a --- /dev/null +++ b/src/main/java/com/glxp/api/res/purchase/SupCertRemindMsgResponse.java @@ -0,0 +1,83 @@ +package com.glxp.api.res.purchase; + +import lombok.Data; + +import java.util.Date; + +/** + * 资质预警信息VO + */ +@Data +public class SupCertRemindMsgResponse { + + /** + * id + */ + private Integer id; + + /** + * 关联主键,关联耗材字典ID,生产企业ID,供应商ID + */ + private String idFk; + + /** + * 有效期 + */ + private Date vailDate; + + /** + * 失效期 + */ + private Date expireDate; + + /** + * 类型(1:供应商资质;2:生产企业资质;3:产品资质;) + */ + private Integer type; + + /** + * 状态(1:未确认;2:已确认;) + */ + private Integer status; + + /** + * 忽略状态(0:不忽略;1:忽略7天;2:忽略15天;3:忽略30天;) + */ + private Integer ignoreStatus; + + /** + * 预警消息 + */ + private String msg; + + /** + * 处理方式 + */ + private String handleMsg; + + /** + * 下次预警时间 + */ + private Date nextRemindTime; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + /** + * 名称,耗材名称/生产企业名称/供应商名称 + */ + private String name; + +} diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java index 196909205..b08931609 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvRemindMsgServiceImpl.java @@ -56,7 +56,7 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService { public BaseResponse confirmMsg(Integer id, String handleMsg) { InvRemindMsgEntity invRemindMsgEntity = invRemindMsgDao.selectById(id); if (null == invRemindMsgEntity) { - return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "消息不存在"); + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "预警信息不存在"); } invRemindMsgEntity.setStatus(2); //消息状态修改为已确认 invRemindMsgEntity.setIgnoreStatus(0); //重置成为不忽略 @@ -192,7 +192,7 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService { } msgEntity.setIgnoreStatus(ignoreStatus); invRemindMsgDao.updateById(msgEntity); - return ResultVOUtils.success("已忽略提醒"); + return ResultVOUtils.success("已忽略预警"); } /** @@ -217,7 +217,7 @@ public class InvRemindMsgServiceImpl implements InvRemindMsgService { } /** - * 查询或生成预警消息提醒 + * 查询或生成预警消息预警 * * @param invRemindMsgRequest 预警消息查询参数 * @param invProductEntity 库存产品信息 diff --git a/src/main/java/com/glxp/api/service/purchase/SupCertRemindMsgService.java b/src/main/java/com/glxp/api/service/purchase/SupCertRemindMsgService.java new file mode 100644 index 000000000..b24ccab17 --- /dev/null +++ b/src/main/java/com/glxp/api/service/purchase/SupCertRemindMsgService.java @@ -0,0 +1,45 @@ +package com.glxp.api.service.purchase; + +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.req.purchase.FilterCertRemindMsgRequest; +import com.glxp.api.res.purchase.SupCertRemindMsgResponse; + +import java.util.List; + +/** + * 资质预警信息Service + */ +public interface SupCertRemindMsgService { + + /** + * 查询资质预警信息列表 + * + * @param filterCertRemindMsgRequest + * @return + */ + List filterList(FilterCertRemindMsgRequest filterCertRemindMsgRequest); + + /** + * 确认消息 + * + * @param id + * @param handleMsg + * @return + */ + BaseResponse confirmMsg(Integer id, String handleMsg); + + /** + * 忽略消息 + * + * @param id + * @param ignoreStatus + * @return + */ + BaseResponse ignoreMsg(Integer id, Integer ignoreStatus); + + /** + * 生成预警信息 + */ + void createRemindMsg(); + +} diff --git a/src/main/java/com/glxp/api/service/purchase/impl/SupCertRemindMsgImpl.java b/src/main/java/com/glxp/api/service/purchase/impl/SupCertRemindMsgImpl.java new file mode 100644 index 000000000..457cfb055 --- /dev/null +++ b/src/main/java/com/glxp/api/service/purchase/impl/SupCertRemindMsgImpl.java @@ -0,0 +1,230 @@ +package com.glxp.api.service.purchase.impl; + +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.dao.basic.UdiRelevanceDao; +import com.glxp.api.dao.purchase.*; +import com.glxp.api.entity.purchase.SupCertEntity; +import com.glxp.api.entity.purchase.SupCertRemindMsgEntity; +import com.glxp.api.req.purchase.FilterCertRemindMsgRequest; +import com.glxp.api.res.purchase.SupCertRemindMsgResponse; +import com.glxp.api.service.purchase.SupCertRemindMsgService; +import com.glxp.api.util.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class SupCertRemindMsgImpl implements SupCertRemindMsgService { + + @Resource + private SupCertRemindMsgDao supCertRemindMsgDao; + @Resource + private SupProductDao supProductDao; + @Resource + private UdiRelevanceDao udiRelevanceDao; + @Resource + private SupManufacturerDao supManufacturerDao; + @Resource + private SupCompanyDao supCompanyDao; + @Resource + private SupCertDao supCertDao; + + @Override + public List filterList(FilterCertRemindMsgRequest filterCertRemindMsgRequest) { + if (null == filterCertRemindMsgRequest || null == filterCertRemindMsgRequest.getType()) { + return Collections.emptyList(); + } + if (null == filterCertRemindMsgRequest.getPage() && null != filterCertRemindMsgRequest.getLimit()) { + PageHelper.offsetPage((filterCertRemindMsgRequest.getPage() - 1) * filterCertRemindMsgRequest.getLimit(), filterCertRemindMsgRequest.getLimit()); + } + + List list = null; + //根据类型查询预警信息 + switch (filterCertRemindMsgRequest.getType()) { + case 1: //查询供应商资质预警信息 + list = supCertRemindMsgDao.selectSupRemindMsgList(filterCertRemindMsgRequest); + break; + case 2: //查询生产企业资质预警信息 + list = supCertRemindMsgDao.selectManufactureRemindMsgList(filterCertRemindMsgRequest); + break; + case 3: //查询产品资质预警信息 + list = supCertRemindMsgDao.selectProductRemindMsgList(filterCertRemindMsgRequest); + break; + default: + break; + } + return list; + } + + @Override + public BaseResponse confirmMsg(Integer id, String handleMsg) { + SupCertRemindMsgEntity supCertRemindMsgEntity = supCertRemindMsgDao.selectById(id); + if (null == supCertRemindMsgEntity) { + return ResultVOUtils.error(500, "预警信息不存在"); + } + supCertRemindMsgEntity.setHandleMsg(handleMsg); + Date date = new Date(); + supCertRemindMsgEntity.setUpdateTime(date); + supCertRemindMsgEntity.setNextRemindTime(date); + supCertRemindMsgEntity.setStatus(2); //已确认 + supCertRemindMsgEntity.setIgnoreStatus(0); //忽略状态,不忽略 + supCertRemindMsgDao.updateById(supCertRemindMsgEntity); + return ResultVOUtils.success("已确认"); + } + + @Override + public BaseResponse ignoreMsg(Integer id, Integer ignoreStatus) { + SupCertRemindMsgEntity msgEntity = supCertRemindMsgDao.selectById(id); + if (null == msgEntity) { + return ResultVOUtils.error(500, "预警信息不存在"); + } + //根据忽略状态,更新忽略时间 + Date updateTime = msgEntity.getUpdateTime(); + switch (ignoreStatus) { + case 1: //忽略7天 + msgEntity.setNextRemindTime(DateUtil.getAfterDay(updateTime, 7 * 24)); + break; + case 2: //忽略15天 + msgEntity.setNextRemindTime(DateUtil.getAfterDay(updateTime, 15 * 24)); + break; + case 3: //忽略30天 + msgEntity.setNextRemindTime(DateUtil.getAfterDay(updateTime, 30 * 24)); + break; + default: + break; + } + msgEntity.setIgnoreStatus(ignoreStatus); + supCertRemindMsgDao.updateById(msgEntity); + return ResultVOUtils.success("已忽略预警"); + } + + @Override + public void createRemindMsg() { + //资质预警类型集合 + List types = Arrays.asList(1, 2, 3); + for (Integer type : types) { + buildRemindMsg(buildQueryWrapper(type), type); + } + } + + /** + * 构造查询条件 + * + * @param type + * @return + */ + private QueryWrapper buildQueryWrapper(Integer type) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("status", 0).eq("auditStatus", ConstantStatus.AUDIT_PASS).gt("expireDate", new Date()).eq("type", type); + switch (type) { + case 1: //查询供应商ID + wrapper.select("CustomerId", "vailDate", "expireDate"); + break; + case 2: //查询生产企业ID + wrapper.select("manufacturerIdFk", "vailDate", "expireDate"); + break; + case 3: //查询产品ID + wrapper.select("productIdFk", "vailDate", "expireDate"); + break; + default: + break; + } + return wrapper; + } + + /** + * 构造,保存预警信息 + * + * @param supCertWrapper + * @param type + */ + private void buildRemindMsg(QueryWrapper supCertWrapper, Integer type) { + List supCertList = supCertDao.selectList(supCertWrapper); + List list = new CopyOnWriteArrayList<>(supCertList); + list.parallelStream().forEach(supCertEntity -> { + //判断证书是否超出失效期 + SupCertRemindMsgEntity msgEntity = getSupCertRemindMsg(supCertEntity, type); + if (null == msgEntity.getNextRemindTime() || msgEntity.getNextRemindTime().getTime() > new Date().getTime()) { + //生成,更新预警信息 + saveMsg(msgEntity); + } + }); + } + + /** + * 保存/更新资质预警信息 + * + * @param msgEntity + */ + private void saveMsg(SupCertRemindMsgEntity msgEntity) { + msgEntity.setStatus(1); //重置成为未确认信息 + msgEntity.setIgnoreStatus(0); //忽略状态修改为不忽略 + msgEntity.setHandleMsg(null); //处理方式重置为空 + msgEntity.setUpdateTime(new Date()); + msgEntity.setNextRemindTime(new Date()); + + if (null == msgEntity.getId()) { + log.info("新增资质预警:{}", JSONUtil.toJsonStr(msgEntity)); + supCertRemindMsgDao.insert(msgEntity); + } else { + log.info("更新资质预警:{}", JSONUtil.toJsonStr(msgEntity)); + supCertRemindMsgDao.insert(msgEntity); + } + } + + /** + * 查询/构造资质预警信息 + * + * @param supCertEntity + * @param type + * @return + */ + private SupCertRemindMsgEntity getSupCertRemindMsg(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().eq("idFk", idFk).eq("type", type)); + if (null == msgEntity) { + //构造新的资质预警信息 + msgEntity = new SupCertRemindMsgEntity(); + msgEntity.setIdFk(idFk); //设置关联主键 + msgEntity.setType(type); //类型 + msgEntity.setCreateTime(new Date()); + } + + msgEntity.setVailDate(supCertEntity.getVailDate()); + msgEntity.setExpireDate(supCertEntity.getExpireDate()); + msgEntity.setMsg(msg); + return msgEntity; + } + +} diff --git a/src/main/java/com/glxp/api/task/InvRemindMsgTask.java b/src/main/java/com/glxp/api/task/InvRemindMsgTask.java index 0fde90828..a5a276642 100644 --- a/src/main/java/com/glxp/api/task/InvRemindMsgTask.java +++ b/src/main/java/com/glxp/api/task/InvRemindMsgTask.java @@ -20,6 +20,9 @@ import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingDeque; +/** + * 库存预警定时任务 + */ @Slf4j @Component public class InvRemindMsgTask implements SchedulingConfigurer { @@ -58,16 +61,16 @@ public class InvRemindMsgTask implements SchedulingConfigurer { } private void process() { -// log.info("开始扫描库存信息,生成库存预警消息"); -// List invRemindSetEntities = invRemindSetDao.selectList(null); -// if (CollUtil.isNotEmpty(invRemindSetEntities)) { -// log.info("库存预警设置条数:{}", invRemindSetEntities.size()); -// //开始生成库存信息 -// for (InvRemindSetEntity invRemindSetEntity : invRemindSetEntities) { -// executor.execute(ThreadUtil.newThread(() -> invRemindMsgService.createRemindMsg(invRemindSetEntity), "createInvRemindThread")); -// } -// } else { -// log.info("无库存预警设置,结束库存扫描"); -// } + log.info("开始扫描库存信息,生成库存预警消息"); + List invRemindSetEntities = invRemindSetDao.selectList(null); + if (CollUtil.isNotEmpty(invRemindSetEntities)) { + log.info("库存预警设置条数:{}", invRemindSetEntities.size()); + //开始生成库存信息 + for (InvRemindSetEntity invRemindSetEntity : invRemindSetEntities) { + executor.execute(ThreadUtil.newThread(() -> invRemindMsgService.createRemindMsg(invRemindSetEntity), "createInvRemindThread")); + } + } else { + log.info("无库存预警设置,结束库存扫描"); + } } } diff --git a/src/main/java/com/glxp/api/task/SupCertRemindMsgTask.java b/src/main/java/com/glxp/api/task/SupCertRemindMsgTask.java new file mode 100644 index 000000000..7b1c2ba37 --- /dev/null +++ b/src/main/java/com/glxp/api/task/SupCertRemindMsgTask.java @@ -0,0 +1,47 @@ +package com.glxp.api.task; + +import com.glxp.api.dao.schedule.ScheduledDao; +import com.glxp.api.entity.system.ScheduledEntity; +import com.glxp.api.req.system.ScheduledRequest; +import com.glxp.api.service.purchase.SupCertRemindMsgService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.support.CronTrigger; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 资质证书定时任务 + */ +@Slf4j +@Component +public class SupCertRemindMsgTask implements SchedulingConfigurer { + + @Resource + private ScheduledDao scheduledDao; + @Resource + private SupCertRemindMsgService supCertRemindMsgService; + + @Override + public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { + taskRegistrar.addTriggerTask(this::process, triggerContext -> { + ScheduledRequest scheduledRequest = new ScheduledRequest(); + scheduledRequest.setCronName("supCertRemindMsgTask"); + ScheduledEntity scheduled = scheduledDao.findScheduled(scheduledRequest); + if (null == scheduled) { + log.error("资质预警预警定时任务未配置,请注意!"); + return null; + } + String cron = scheduled.getCron(); + return new CronTrigger(cron).nextExecutionTime(triggerContext); + }); + } + + private void process() { + log.info("开始扫描资质证书信息,生成资质预警消息"); + supCertRemindMsgService.createRemindMsg(); + log.info("资质证书预警信息生成结束"); + } +} diff --git a/src/main/resources/mybatis/mapper/purchase/SupCertRemindMsgDao.xml b/src/main/resources/mybatis/mapper/purchase/SupCertRemindMsgDao.xml new file mode 100644 index 000000000..13896a8f7 --- /dev/null +++ b/src/main/resources/mybatis/mapper/purchase/SupCertRemindMsgDao.xml @@ -0,0 +1,66 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/purchase/SupCompanyDao.xml b/src/main/resources/mybatis/mapper/purchase/SupCompanyDao.xml index b20dd41dc..193da8dc2 100644 --- a/src/main/resources/mybatis/mapper/purchase/SupCompanyDao.xml +++ b/src/main/resources/mybatis/mapper/purchase/SupCompanyDao.xml @@ -179,5 +179,7 @@ #{auditTime}, #{auditComment}, #{editStatus}) - + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/purchase/SupManufacturerDao.xml b/src/main/resources/mybatis/mapper/purchase/SupManufacturerDao.xml index 5f0038e05..f5814c2f4 100644 --- a/src/main/resources/mybatis/mapper/purchase/SupManufacturerDao.xml +++ b/src/main/resources/mybatis/mapper/purchase/SupManufacturerDao.xml @@ -152,4 +152,7 @@ + \ No newline at end of file