package com.nanometer.smartlab.email; import com.nanometer.smartlab.entity.EmailStatus; import com.nanometer.smartlab.entity.OpeWarehouseReserve; import com.nanometer.smartlab.entity.SysReagent; import com.nanometer.smartlab.entity.enumtype.EmailSendStatus; import com.nanometer.smartlab.exception.BusinessException; import com.nanometer.smartlab.service.*; import com.nanometer.smartlab.util.EmailSend; import org.apache.log4j.Logger; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * Created by wjd on 18/6/18. */ @Component public class EmailSendSchedule { @Lazy @Resource private OpeOrderService opeOrderService; private static Logger logger = Logger.getLogger(EmailSendSchedule.class); @Resource private SysReagentService sysReagentService; @Resource private OpeWarehouseReserveService opeWarehouseReserveService; @Resource private SysUserService userService; @Scheduled(fixedDelayString = "${emailSend.schedule.delay}") public void EmailSendSchedule(){ List list = null; try { int count = this.opeOrderService.getUnsendEmailCount(); if (count > 0) { list = opeOrderService.getUnsendEmailList(); } } catch (Exception e) { logger.error(e); } if(list != null){ for (EmailStatus email: list) { try { EmailSend.send(email.getEmailAddress(), email.getApplyCode()); // 发送成功,更新邮件发送状态为:已发送 email.setStatus(EmailSendStatus.SEND_SUCCESS); this.opeOrderService.updateEmailStatus(email); } catch (BusinessException e) { // 发送失败,更新邮件发送状态为:发送失败 email.setStatus(EmailSendStatus.SEND_FAIL); this.opeOrderService.updateEmailStatus(email); logger.warn("操作失败。", e); } catch (Exception e) { logger.error(e); } } } } // @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次 @Scheduled(cron = "0 0 8 * * ?")//每天8点执行一次 public void EmailSendStock(){ //收件人为人员角色为库管员的邮箱 List revicerList = userService.getLibrarianEmail(); //先查试剂表 安全库存大于0,然后去查库存,实际库存小于安全库存的列表 List sysReagentList = new ArrayList<>(); //已经填写安全库存的试剂 List alreadyFillIn = sysReagentService.selectReagentSafetyNum(); if (alreadyFillIn.size() > 0) { for (SysReagent reagent : alreadyFillIn) { int actualNum = opeWarehouseReserveService.countByReagentId(reagent.getId()); if (reagent.getSafetynum() > actualNum) { reagent.setActualnum(actualNum); sysReagentList.add(reagent); } } } if(sysReagentList.size() > 0 && revicerList.size() > 0 ){ StringBuffer content = new StringBuffer(""); content.append("
"); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); content.append(""); for (SysReagent sysReagent : sysReagentList){ content.append(""); content.append(""); content.append(""); content.append(""); content.append("");// content.append(""); content.append(""); content.append("");// content.append("");// content.append(""); content.append(""); content.append(""); } content.append("
试剂名称产品编号CAS试剂类型供应商厂家规格包装安全库存实际库存
"+sysReagent.getName()+""+sysReagent.getProductSn()+""+sysReagent.getCas()+""+sysReagent.getReagentType()+""+sysReagent.getSupplierName()+""+sysReagent.getProductHomeName()+""+sysReagent.getReagentFormat()+""+sysReagent.getReagentUnit()+""+sysReagent.getSafetynum()+""+sysReagent.getActualnum()+"
"); content.append(""); try { EmailSend.sendArrivalEmail(revicerList,content.toString()); // 发送成功,更新邮件发送状态为:已发送 } catch (BusinessException e) { // 发送失败,更新邮件发送状态为:发送失败 logger.warn("操作失败。", e); } catch (Exception e) { logger.error(e); } } } }