From 47a751cb301d05276ae5d75145d57b2d090fe4e1 Mon Sep 17 00:00:00 2001 From: kongzy <kongzy> Date: 星期一, 01 七月 2024 10:58:35 +0800 Subject: [PATCH] change --- src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java | 126 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 123 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java b/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java index f9e8eae..0de3ff8 100644 --- a/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java +++ b/src/main/java/com/nanometer/smartlab/email/EmailSendSchedule.java @@ -1,20 +1,31 @@ package com.nanometer.smartlab.email; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.nanometer.smartlab.entity.EmailStatus; import com.nanometer.smartlab.entity.OpeWarehouseReserve; import com.nanometer.smartlab.entity.SysReagent; +import com.nanometer.smartlab.entity.SysUser; import com.nanometer.smartlab.entity.enumtype.EmailSendStatus; import com.nanometer.smartlab.exception.BusinessException; +import com.nanometer.smartlab.exception.ExceptionEnumCode; import com.nanometer.smartlab.service.*; import com.nanometer.smartlab.util.EmailSend; +import com.nanometer.smartlab.util.HttpUtil; +import net.sf.cglib.asm.$ByteVector; +import org.apache.commons.lang.StringUtils; +import org.apache.http.message.BasicNameValuePair; import org.apache.log4j.Logger; +import org.omg.CORBA.NameValuePair; +import org.springframework.beans.factory.annotation.Value; 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; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.*; /** * Created by wjd on 18/6/18. @@ -33,6 +44,8 @@ private OpeWarehouseReserveService opeWarehouseReserveService; @Resource private SysUserService userService; + @Resource + private SysSupplierService sysSupplierService; @Scheduled(fixedDelayString = "${emailSend.schedule.delay}") public void EmailSendSchedule(){ @@ -125,7 +138,7 @@ content.append("</body></html>"); try { - EmailSend.sendArrivalEmail(revicerList,content.toString()); + EmailSend.sendArrivalEmail(revicerList,content.toString(),"-待补货试剂"); // 发送成功,更新邮件发送状态为:已发送 } catch (BusinessException e) { // 发送失败,更新邮件发送状态为:发送失败 @@ -136,4 +149,111 @@ } } + + + @Value("${reagent.detail.price.api}") + private String reagentApi; + + private final static String send_supplier_name = "国药集团化学试剂苏州有限公司"; + private final static BigDecimal SALE_85 = BigDecimal.valueOf(0.85); + private final static Map discountMap = new HashMap<BigDecimal,String>(){{ + put(SALE_85, "85折价格"); + }}; + + /** + * @Description: 姑苏实验室 发给admin管理员邮箱 国药试剂(价格不同的)信息 执行时间 :每天早上2点 + * @date 2021/8/19 9:06 + */ + @Scheduled(cron = "0 0 2 * * ?") +// @Scheduled(cron = "0/5 * * * * ?") //每隔5秒执行一次 + public void ReagentPriceSend(){ + //0.限制在姑苏实验室 + if (StringUtils.isBlank(reagentApi) || reagentApi.length() == 0) return; + + try { + //1.获取管理员邮箱 + SysUser admin = userService.getSysUserByAccount("admin"); + if (admin == null ||StringUtils.isBlank(admin.getEmail())) throw new BusinessException(ExceptionEnumCode.PARAM_NULL,"找不到管理员或者管理员邮箱信息"); + + //2.获取国药试剂 + Long supplierId = sysSupplierService.getSysSupplierIdByname(send_supplier_name); + if (supplierId==null) + throw new BusinessException(ExceptionEnumCode.PARAM_NO_EXIST, "没有找到与(" + send_supplier_name + ")相关供应商,请检查最近信息更新"); + + List<SysReagent> guoyao_reagents = sysReagentService.getSysReagentListNew(null, null, supplierId, 1, null, null, null); + if (guoyao_reagents.size() < 1) + throw new BusinessException(ExceptionEnumCode.PARAM_NULL, "供应商:" + send_supplier_name + ",没有查询到相关试剂"); + + List<JSONObject> sendDataList = new ArrayList<>(); + for (SysReagent reagent : guoyao_reagents) { + String productSn = reagent.getProductSn(); + List params = new ArrayList<BasicNameValuePair>() {{ + add(new BasicNameValuePair("goodsErpCode", productSn)); + }}; + String res = HttpUtil.doGet(reagentApi, params); + JSONObject resJson = JSONObject.parseObject(res); + JSONArray data = resJson.getJSONArray("data"); + JSONObject dataJson = data.getJSONObject(0); + Integer totalRows = dataJson.getInteger("totalRows"); + if (totalRows != 1) continue; + + JSONArray listApiGoods = dataJson.getJSONArray("listApiGoods"); + if (listApiGoods.size() != 1) logger.info("产品编号:" + productSn + ",接口查询到多个数据,无法判断"); + + JSONObject goodJson = listApiGoods.getJSONObject(0); + String goodsName = goodJson.getString("goodsName"); + BigDecimal goodsCostPrice = goodJson.getBigDecimal("goodsCostPrice"); + BigDecimal price = reagent.getPrice(); + //保留两位 + BigDecimal price_afterDiscount = SALE_85.multiply(goodsCostPrice).setScale(2, RoundingMode.HALF_UP); + if (price_afterDiscount.compareTo(price) > 0) { + sendDataList.add(new JSONObject() {{ + put("goodsName", goodsName); + put("goodsCostPrice", goodsCostPrice); + put("priceAfterDiscount", price_afterDiscount); + put("currentSystemPrice", price); + put("goodsCode", productSn); + }}); + } + } + //制作表格 + StringBuilder content = new StringBuilder("<html><body>"); + content.append("<div style=\"line-height:1.7;color:#000000;font-size:14px;font-family:Arial\">"); + content.append("<table border=\"1\">"); + content.append("<tbody>"); + content.append("<tr>"); + content.append("<th>产品编号</th>"); + content.append("<th>产品名称</th>"); + content.append("<th>官网售价</th>"); + content.append("<th>").append(discountMap.get(SALE_85)).append("</th>"); + content.append("<th>当前系统价格</th>"); + content.append("</tr>"); + for (JSONObject goodJson : sendDataList){ + content.append("<tr>") + .append("<td>").append(goodJson.getString("goodsCode")).append("</td>") + .append("<td>").append(goodJson.getString("goodsName")).append("</td>") + .append("<td>").append(goodJson.getBigDecimal("goodsCostPrice")).append("</td>") + .append("<td>").append(goodJson.getBigDecimal("priceAfterDiscount")).append("</td>") + .append("<td>").append(goodJson.getBigDecimal("currentSystemPrice")).append("</td>") + .append("</tr>"); + } + content.append("</tbody></table></div>"); + content.append("</body></html>"); + + + //发送邮件 + EmailSend.sendArrivalEmail(Collections.singletonList(admin.getEmail()),content.toString(),"-国药试剂价格变动"); + // 发送成功,更新邮件发送状态为:已发送 + + } catch (BusinessException e) { + e.printStackTrace(); + logger.warn(e.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + logger.warn("系统内部错误,请检查代码"); + } + + + } + } -- Gitblit v1.9.2