|
@@ -1,6 +1,7 @@
|
|
|
package com.abi.qms.platform.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import com.abi.base.foundation.util.RedisClient;
|
|
|
import com.abi.qms.platform.dao.entity.BaseFactory;
|
|
|
import com.abi.qms.platform.dao.entity.BaseMaterial;
|
|
@@ -61,6 +62,7 @@ import com.abi.task.common.api.exception.BusinessException;
|
|
|
import com.abi.task.common.api.exception.ErrorCodeEnum;
|
|
|
import com.abi.task.common.tablestore.TableStorePlusUtils;
|
|
|
import com.abi.task.common.tablestore.TableStoreUtils;
|
|
|
+import com.abi.task.common.utils.IDateUtils;
|
|
|
import com.abi.task.common.utils.IMathUtils;
|
|
|
import com.abi.task.common.utils.PojoConverterUtils;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
@@ -82,11 +84,7 @@ import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.text.MessageFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -1184,4 +1182,69 @@ public class QrPackageServiceImpl implements QrPackageService {
|
|
|
|
|
|
return qrBoxMapping;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提醒包材厂下单还没下单的sap订单or预订单
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public void sendEmailForRemindAddQrPackage() {
|
|
|
+ try {
|
|
|
+ //拿到freemarker模板
|
|
|
+ Template template = FreeMarkerUtils.getTemplate("remind_qr_package_order.ftl");
|
|
|
+
|
|
|
+ //查询需要发送的信息列表
|
|
|
+ LocalDateTime lastWeek = IDateUtils.offsetDay(LocalDateTime.now(), -7);
|
|
|
+ List<QrPackageRemindOrderVO> qrPackageRemindOrderVOList = qrPackageMapper.listQrPackageRemind(DateUtil.format(lastWeek, "yyyy-MM-dd"));
|
|
|
+
|
|
|
+ //根据包材厂分组
|
|
|
+ Map<Long,List<QrPackageRemindOrderVO>> coverRemindMap = new HashMap<>();
|
|
|
+ for(QrPackageRemindOrderVO remindVO:qrPackageRemindOrderVOList){
|
|
|
+ //拿到包材厂id
|
|
|
+ Long coverFactoryId = remindVO.getCoverFactoryId();
|
|
|
+ //如果首次放入,则新建列表
|
|
|
+ if(!coverRemindMap.containsKey(coverFactoryId)){
|
|
|
+ coverRemindMap.put(coverFactoryId,new ArrayList<>());
|
|
|
+ }
|
|
|
+ //列表add订单明细
|
|
|
+ coverRemindMap.get(coverFactoryId).add(remindVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ //frame maker的root 入参map
|
|
|
+ Map<String,Object> paramMap = new HashMap<>();
|
|
|
+
|
|
|
+ //循环发送email
|
|
|
+ for(Long coverFactoryId:coverRemindMap.keySet()){
|
|
|
+ try {
|
|
|
+ //查询对应email
|
|
|
+ BaseFactory coverFactory = baseFactoryMapper.selectById(coverFactoryId);
|
|
|
+ if (coverFactory == null || StringUtils.isBlank(coverFactory.getEmail())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String targetEmail = coverFactory.getEmail();
|
|
|
+ //构造邮件内容
|
|
|
+ List<Map<String, Object>> itemParamMapList = new ArrayList<>();
|
|
|
+ List<QrPackageRemindOrderVO> remindOrderVOList = coverRemindMap.get(coverFactoryId);
|
|
|
+ for (QrPackageRemindOrderVO remindOrderVO : remindOrderVOList) {
|
|
|
+ //填充的内容
|
|
|
+ Map<String, Object> itemMap = new HashMap<>();
|
|
|
+ itemMap.put("orderType", remindOrderVO.getOrderType());
|
|
|
+ itemMap.put("orderNo", remindOrderVO.getOrderNo());
|
|
|
+ itemMap.put("materialName", remindOrderVO.getMaterialName());
|
|
|
+ itemParamMapList.add(itemMap);
|
|
|
+ }
|
|
|
+ paramMap.put("orderItemList", itemParamMapList);
|
|
|
+ //生成需要发送的内容
|
|
|
+ String emailContent = FreeMarkerTemplateUtils.processTemplateIntoString(template, paramMap);
|
|
|
+ log.info(emailContent);
|
|
|
+ sendmailUtil.doSendHtmlEmail("ABI I-QMS系统通知", emailContent, targetEmail);
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("发送通知邮件失败coverFactoryId="+coverFactoryId,e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info("发送码包通知邮件异常", e);
|
|
|
+ throw new BusinessException("发送码包通知邮件异常");
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|