Browse Source

改单邮件

java8
han\hanst 4 months ago
parent
commit
6db0d0cbd4
  1. 282
      src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

282
src/main/java/com/xujie/sys/modules/ecss/service/impl/CoDelServiceImpl.java

@ -492,7 +492,11 @@ public class CoDelServiceImpl implements CoDelService {
data.getCmcInvoice()+"】<span style='color:red'>订单取消</span>" + "</div>"; data.getCmcInvoice()+"】<span style='color:red'>订单取消</span>" + "</div>";
String textHead = data.getCmcInvoice()+"【发票:"+ data.getCmcInvoice()+"】订单取消"; String textHead = data.getCmcInvoice()+"【发票:"+ data.getCmcInvoice()+"】订单取消";
String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new); String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new);
String[] mailAddress2 = new String[]{coDelMapper.queryByUserName(data.getCreateBy()).getEmail()};
// 安全获取创建人邮箱防止用户不存在或邮箱为空的空指针异常
SysUserEntity creator = coDelMapper.queryByUserName(data.getCreateBy());
String[] mailAddress2 = (creator != null && creator.getEmail() != null) ?
new String[]{creator.getEmail()} : new String[]{};
String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2); String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2);
if (mailAddressAll.length>0) { if (mailAddressAll.length>0) {
sendMailUtil(textHead, text,mailAddressAll, data); sendMailUtil(textHead, text,mailAddressAll, data);
@ -512,7 +516,11 @@ public class CoDelServiceImpl implements CoDelService {
data.getCmcInvoice()+"】<span style='color:green'>取消废弃,恢复正常</span>" + "</div>"; data.getCmcInvoice()+"】<span style='color:green'>取消废弃,恢复正常</span>" + "</div>";
String textHead = data.getCmcInvoice()+"【发票:"+ data.getCmcInvoice()+"】取消废弃"; String textHead = data.getCmcInvoice()+"【发票:"+ data.getCmcInvoice()+"】取消废弃";
String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new); String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new);
String[] mailAddress2 = new String[]{coDelMapper.queryByUserName(data.getCreateBy()).getEmail()};
// 安全获取创建人邮箱防止用户不存在或邮箱为空的空指针异常
SysUserEntity creator = coDelMapper.queryByUserName(data.getCreateBy());
String[] mailAddress2 = (creator != null && creator.getEmail() != null) ?
new String[]{creator.getEmail()} : new String[]{};
String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2); String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2);
if (mailAddressAll.length>0) { if (mailAddressAll.length>0) {
sendMailUtil(textHead, text,mailAddressAll, data); sendMailUtil(textHead, text,mailAddressAll, data);
@ -643,7 +651,11 @@ public class CoDelServiceImpl implements CoDelService {
+" 变更后数量:<span style='color:red'>"+data.getQty()+"</span></div>"; +" 变更后数量:<span style='color:red'>"+data.getQty()+"</span></div>";
String textHead = data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】改单[发货数量变更]"; String textHead = data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】改单[发货数量变更]";
String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new); String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new);
String[] mailAddress2 = new String[]{coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy()).getEmail()};
// 安全获取创建人邮箱防止用户不存在或邮箱为空的空指针异常
SysUserEntity creator = coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy());
String[] mailAddress2 = (creator != null && creator.getEmail() != null) ?
new String[]{creator.getEmail()} : new String[]{};
String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2); String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2);
if (mailAddressAll.length>0) { if (mailAddressAll.length>0) {
sendMailUtil(textHead, text,mailAddressAll, checkHeader.get(0)); sendMailUtil(textHead, text,mailAddressAll, checkHeader.get(0));
@ -666,7 +678,11 @@ public class CoDelServiceImpl implements CoDelService {
"</span><span style='color:red'> 新增发货</span></div>"; "</span><span style='color:red'> 新增发货</span></div>";
String textHead = data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】改单[新增发货]"; String textHead = data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】改单[新增发货]";
String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new); String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new);
String[] mailAddress2 = new String[]{coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy()).getEmail()};
// 安全获取创建人邮箱防止用户不存在或邮箱为空的空指针异常
SysUserEntity creator = coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy());
String[] mailAddress2 = (creator != null && creator.getEmail() != null) ?
new String[]{creator.getEmail()} : new String[]{};
String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2); String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2);
if (mailAddressAll.length>0) { if (mailAddressAll.length>0) {
sendMailUtil(textHead, text,mailAddressAll, checkHeader.get(0)); sendMailUtil(textHead, text,mailAddressAll, checkHeader.get(0));
@ -703,7 +719,11 @@ public class CoDelServiceImpl implements CoDelService {
"</span><span style='color:red'> 取消发货</span></div>"; "</span><span style='color:red'> 取消发货</span></div>";
String textHead = data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】改单[取消发货]"; String textHead = data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】改单[取消发货]";
String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new); String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",data.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new);
String[] mailAddress2 = new String[]{coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy()).getEmail()};
// 安全获取创建人邮箱防止用户不存在或邮箱为空的空指针异常
SysUserEntity creator = coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy());
String[] mailAddress2 = (creator != null && creator.getEmail() != null) ?
new String[]{creator.getEmail()} : new String[]{};
String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2); String[] mailAddressAll = ArrayUtils.addAll(mailAddress, mailAddress2);
if (mailAddressAll.length>0) { if (mailAddressAll.length>0) {
sendMailUtil(textHead, text,mailAddressAll, checkHeader.get(0)); sendMailUtil(textHead, text,mailAddressAll, checkHeader.get(0));
@ -725,8 +745,15 @@ public class CoDelServiceImpl implements CoDelService {
//设置邮件内容 //设置邮件内容
String text = "<!DOCTYPE>" + "<div>发货通知单" +data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】仓库已确认" + "</div>"; String text = "<!DOCTYPE>" + "<div>发货通知单" +data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】仓库已确认" + "</div>";
String textHead = "发货通知单"+data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】仓库已确认"; String textHead = "发货通知单"+data.getDelNo()+"【发票:"+ data.getCmcInvoice()+"】仓库已确认";
String[] mailAddress = new String[]{coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy()).getEmail()};
// 安全获取创建人邮箱防止用户不存在或邮箱为空的空指针异常
SysUserEntity creator = coDelMapper.queryByUserName(checkHeader.get(0).getCreateBy());
if (creator != null && creator.getEmail() != null && !creator.getEmail().trim().isEmpty()) {
String[] mailAddress = new String[]{creator.getEmail()};
sendMailUtil(textHead, text, mailAddress, data); sendMailUtil(textHead, text, mailAddress, data);
} else {
log.warn("仓库确认邮件发送失败:创建人{}不存在或邮箱为空", checkHeader.get(0).getCreateBy());
}
} }
@Override @Override
@ -782,20 +809,24 @@ public class CoDelServiceImpl implements CoDelService {
// 先删除全部明细再新建明细 // 先删除全部明细再新建明细
coDelMapper.deleteAllEcssDelDetail(headerData); coDelMapper.deleteAllEcssDelDetail(headerData);
// 构建原数据Map用于比较数量是否变化
Map<String, BigDecimal> originalQtyMap = dbData.stream()
.collect(Collectors.toMap(EcssCoDelNotifyDetail::getPn, EcssCoDelNotifyDetail::getQty));
// 构建原数据Map使用itemNo作为唯一标识
// 注意不能用pn作为key因为同一个pn可能有多行记录每行都需要独立比较
Map<Integer, EcssCoDelNotifyDetailData> originalDataMap = dbData.stream()
.collect(Collectors.toMap(EcssCoDelNotifyDetail::getItemNo, detail -> detail, (v1, v2) -> v1));
for (int i = 0; i < excelList.size(); i++) { for (int i = 0; i < excelList.size(); i++) {
excelList.get(i).setDelNo(headerData.getDelNo()); excelList.get(i).setDelNo(headerData.getDelNo());
excelList.get(i).setItemNo(i + 1); excelList.get(i).setItemNo(i + 1);
excelList.get(i).setModifyFlag(true); excelList.get(i).setModifyFlag(true);
// 判断数量是否变化新增物料或数量不同时设置 modifyQtyFlag=true
String pn = excelList.get(i).getPn();
BigDecimal newQty = excelList.get(i).getQty();
if (!originalQtyMap.containsKey(pn) ||
!originalQtyMap.get(pn).equals(newQty)) {
// 判断数量是否变化按itemNo匹配原数据比较同一行的数量是否变化
Integer itemNo = i + 1;
EcssCoDelNotifyDetailData originalDetail = originalDataMap.get(itemNo);
// 如果原数据中不存在该itemNo新增行或者pn不同换料或者数量不同则标记modifyQtyFlag=true
if (originalDetail == null ||
!originalDetail.getPn().equals(excelList.get(i).getPn()) ||
!originalDetail.getQty().equals(excelList.get(i).getQty())) {
excelList.get(i).setModifyQtyFlag(true); excelList.get(i).setModifyQtyFlag(true);
} }
} }
@ -810,10 +841,16 @@ public class CoDelServiceImpl implements CoDelService {
String textHead = headerData.getDelNo()+"【发票:"+ headerData.getCmcInvoice()+"】改单"; String textHead = headerData.getDelNo()+"【发票:"+ headerData.getCmcInvoice()+"】改单";
String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",headerData.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new); String[] mailAddress = coDelMapper.queryUsersByRoleName("关务仓库",headerData.getSite()).stream().map(SysUserEntity::getEmail).toArray(String[]::new);
String[] mailAddress2 = new String[]{coDelMapper.queryByUserName(headerData.getCreateBy()).getEmail()};
// 安全获取创建人邮箱防止用户不存在或邮箱为空的空指针异常
SysUserEntity creator = coDelMapper.queryByUserName(headerData.getCreateBy());
String[] mailAddress2 = (creator != null && creator.getEmail() != null) ?
new String[]{creator.getEmail()} : new String[]{};
// 合并 + 去重 // 合并 + 去重
String[] mailAddressAll = Stream.concat(Arrays.stream(mailAddress), Arrays.stream(mailAddress2)) String[] mailAddressAll = Stream.concat(Arrays.stream(mailAddress), Arrays.stream(mailAddress2))
.filter(Objects::nonNull) // 防止 null .filter(Objects::nonNull) // 防止 null
.filter(email -> !email.trim().isEmpty()) // 过滤空字符串
.distinct() // 去重 .distinct() // 去重
.toArray(String[]::new); .toArray(String[]::new);
if (mailAddressAll.length>0) { if (mailAddressAll.length>0) {
@ -832,8 +869,30 @@ public class CoDelServiceImpl implements CoDelService {
List<EcssCoDelNotifyDetailData> dbData, List<EcssCoDelNotifyDetailData> dbData,
List<EcssCoDelNotifyDetailData> newData) { List<EcssCoDelNotifyDetailData> newData) {
StringBuilder emailContent = new StringBuilder(); StringBuilder emailContent = new StringBuilder();
emailContent.append("<!DOCTYPE><div>发货通知单").append(newHeaderData.getDelNo())
.append("【发票:").append(newHeaderData.getCmcInvoice()).append("】改单</div>");
// HTML头部和样式
emailContent.append("<!DOCTYPE html>");
emailContent.append("<html>");
emailContent.append("<head>");
emailContent.append("<meta charset='UTF-8'>");
emailContent.append("<style>");
emailContent.append("body { font-family: Arial, sans-serif; margin: 20px; }");
emailContent.append("table { border-collapse: collapse; width: 100%; margin: 10px 0; }");
emailContent.append("th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }");
emailContent.append("th { background-color: #f2f2f2; font-weight: bold; }");
emailContent.append(".changed { color: red; font-weight: bold; }");
emailContent.append(".deleted { color: red; text-decoration: line-through; }");
emailContent.append(".added { color: red; font-weight: bold; }");
emailContent.append(".section-title { color: #333; font-size: 16px; font-weight: bold; margin: 20px 0 10px 0; }");
emailContent.append("</style>");
emailContent.append("</head>");
emailContent.append("<body>");
// 邮件标题
emailContent.append("<h2>发货通知单改单通知</h2>");
emailContent.append("<p><strong>发货通知单号:</strong>").append(newHeaderData.getDelNo()).append("</p>");
emailContent.append("<p><strong>发票号:</strong>").append(newHeaderData.getCmcInvoice()).append("</p>");
emailContent.append("<p><strong>操作时间:</strong>").append(DateUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")).append("</p>");
// 检查头表字段变更 // 检查头表字段变更
StringBuilder headerChanges = new StringBuilder(); StringBuilder headerChanges = new StringBuilder();
@ -846,8 +905,8 @@ public class CoDelServiceImpl implements CoDelService {
DateUtils.format(originalHeaderData.getReadyDate(), "yyyy-MM-dd") : "无"; DateUtils.format(originalHeaderData.getReadyDate(), "yyyy-MM-dd") : "无";
String newDate = newHeaderData.getReadyDate() != null ? String newDate = newHeaderData.getReadyDate() != null ?
DateUtils.format(newHeaderData.getReadyDate(), "yyyy-MM-dd") : "无"; DateUtils.format(newHeaderData.getReadyDate(), "yyyy-MM-dd") : "无";
headerChanges.append("<li style='margin-top: 10px'>Ready Date: ")
.append(originalDate).append(" → <span style='color:red'>").append(newDate).append("</span></li>");
headerChanges.append("<li>Ready Date: ")
.append(originalDate).append(" → <span class='changed'>").append(newDate).append("</span></li>");
} }
// 检查ShippingMode变更 // 检查ShippingMode变更
@ -855,8 +914,8 @@ public class CoDelServiceImpl implements CoDelService {
hasHeaderChanges = true; hasHeaderChanges = true;
String originalMode = originalHeaderData.getShippingMode() != null ? originalHeaderData.getShippingMode() : "无"; String originalMode = originalHeaderData.getShippingMode() != null ? originalHeaderData.getShippingMode() : "无";
String newMode = newHeaderData.getShippingMode() != null ? newHeaderData.getShippingMode() : "无"; String newMode = newHeaderData.getShippingMode() != null ? newHeaderData.getShippingMode() : "无";
headerChanges.append("<li style='margin-top: 10px'>Shipping Mode: ")
.append(originalMode).append(" → <span style='color:red'>").append(newMode).append("</span></li>");
headerChanges.append("<li>Shipping Mode: ")
.append(originalMode).append(" → <span class='changed'>").append(newMode).append("</span></li>");
} }
// 检查Destination变更 // 检查Destination变更
@ -864,86 +923,104 @@ public class CoDelServiceImpl implements CoDelService {
hasHeaderChanges = true; hasHeaderChanges = true;
String originalDest = originalHeaderData.getDestination() != null ? originalHeaderData.getDestination() : "无"; String originalDest = originalHeaderData.getDestination() != null ? originalHeaderData.getDestination() : "无";
String newDest = newHeaderData.getDestination() != null ? newHeaderData.getDestination() : "无"; String newDest = newHeaderData.getDestination() != null ? newHeaderData.getDestination() : "无";
headerChanges.append("<li style='margin-top: 10px'>Destination: ")
.append(originalDest).append(" → <span style='color:red'>").append(newDest).append("</span></li>");
headerChanges.append("<li>Destination: ")
.append(originalDest).append(" → <span class='changed'>").append(newDest).append("</span></li>");
} }
// 如果有头表字段变更添加到邮件内容 // 如果有头表字段变更添加到邮件内容
if (hasHeaderChanges) { if (hasHeaderChanges) {
emailContent.append("<div><span style='color:blue'>头表字段变更</span></div>")
.append("<div><ol>").append(headerChanges).append("</ol></div>");
}
// 处理明细变更
Map<String, List<EcssCoDelNotifyDetailData>> dbMap = dbData.stream().collect(Collectors.groupingBy(EcssCoDelNotifyDetail::getPn));
Map<String, List<EcssCoDelNotifyDetailData>> newMap = newData.stream().collect(Collectors.groupingBy(EcssCoDelNotifyDetail::getPn));
// 构建原数据明细
StringBuilder originalDetails = new StringBuilder();
originalDetails.append("<ol>");
for (EcssCoDelNotifyDetailData detail : dbData) {
if (!newMap.containsKey(detail.getPn())) {
// 删除的项目用红色显示
originalDetails.append("<li style='margin-top: 10px;color:red'>")
.append("PN:").append(detail.getPn()).append(" 数量:")
.append(detail.getQty().setScale(0, RoundingMode.HALF_UP))
.append(" [已删除]</li>");
} else {
// 检查数量是否有变更
EcssCoDelNotifyDetailData newDetail = newMap.get(detail.getPn()).get(0);
if (!detail.getQty().equals(newDetail.getQty())) {
// 数量有变更用红色显示
originalDetails.append("<li style='margin-top: 10px'>")
.append("PN:").append(detail.getPn()).append(" 数量:<span style='color:red'>")
.append(detail.getQty().setScale(0, RoundingMode.HALF_UP))
.append("</span></li>");
} else {
// 无变更
originalDetails.append("<li style='margin-top: 10px'>")
.append("PN:").append(detail.getPn()).append(" 数量:")
.append(detail.getQty().setScale(0, RoundingMode.HALF_UP))
.append("</li>");
}
}
}
originalDetails.append("</ol>");
// 构建新数据明细
StringBuilder newDetails = new StringBuilder();
newDetails.append("<ol>");
for (EcssCoDelNotifyDetailData detail : newData) {
if (!dbMap.containsKey(detail.getPn())) {
// 新增的项目用红色显示
newDetails.append("<li style='margin-top: 10px;color:red'>")
.append("PN:").append(detail.getPn()).append(" 数量:")
.append(detail.getQty().setScale(0, RoundingMode.HALF_UP))
.append(" [新增]</li>");
} else {
// 检查数量是否有变更
EcssCoDelNotifyDetailData originalDetail = dbMap.get(detail.getPn()).get(0);
if (!detail.getQty().equals(originalDetail.getQty())) {
// 数量有变更用红色显示
newDetails.append("<li style='margin-top: 10px'>")
.append("PN:").append(detail.getPn()).append(" 数量:<span style='color:red'>")
.append(detail.getQty().setScale(0, RoundingMode.HALF_UP))
.append("</span></li>");
} else {
// 无变更
newDetails.append("<li style='margin-top: 10px'>")
.append("PN:").append(detail.getPn()).append(" 数量:")
.append(detail.getQty().setScale(0, RoundingMode.HALF_UP))
.append("</li>");
emailContent.append("<div class='section-title'>头表字段变更</div>");
emailContent.append("<ul>").append(headerChanges).append("</ul>");
} }
// 处理明细变更 - 生成对比表格
emailContent.append("<div class='section-title'>明细数据对比</div>");
emailContent.append(generateDetailComparisonTable(dbData, newData));
emailContent.append("</body>");
emailContent.append("</html>");
return emailContent;
} }
/**
* 生成明细对比表格
* @param dbData 原数据
* @param newData 新数据
* @return 表格HTML
*/
private String generateDetailComparisonTable(List<EcssCoDelNotifyDetailData> dbData,
List<EcssCoDelNotifyDetailData> newData) {
StringBuilder table = new StringBuilder();
// 注意不能用pn作为key因为同一个pn可能有多行记录
// 应该用itemNo进行一对一匹配比较每一行的变化
Map<Integer, EcssCoDelNotifyDetailData> dbMap = dbData.stream()
.collect(Collectors.toMap(EcssCoDelNotifyDetail::getItemNo, detail -> detail, (v1, v2) -> v1));
Map<Integer, EcssCoDelNotifyDetailData> newMap = newData.stream()
.collect(Collectors.toMap(EcssCoDelNotifyDetail::getItemNo, detail -> detail, (v1, v2) -> v1));
// 获取所有itemNo
Set<Integer> allItemNos = new HashSet<>();
allItemNos.addAll(dbMap.keySet());
allItemNos.addAll(newMap.keySet());
List<Integer> sortedItemNos = new ArrayList<>(allItemNos);
sortedItemNos.sort(Integer::compareTo);
table.append("<table>");
table.append("<tr>");
table.append("<th>项次</th>");
table.append("<th>PN</th>");
table.append("<th>数量(原)</th>");
table.append("<th>数量(新)</th>");
table.append("<th>变更说明</th>");
table.append("</tr>");
for (Integer itemNo : sortedItemNos) {
EcssCoDelNotifyDetailData oldDetail = dbMap.get(itemNo);
EcssCoDelNotifyDetailData newDetail = newMap.get(itemNo);
table.append("<tr>");
table.append("<td>").append(itemNo).append("</td>");
// 判断变更类型
if (oldDetail == null) {
// 新增行
table.append("<td class='added'>").append(newDetail.getPn()).append("</td>");
table.append("<td>-</td>");
table.append("<td class='added'>").append(newDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td class='added'>新增</td>");
} else if (newDetail == null) {
// 删除行
table.append("<td class='deleted'>").append(oldDetail.getPn()).append("</td>");
table.append("<td class='deleted'>").append(oldDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td>-</td>");
table.append("<td class='deleted'>已删除</td>");
} else if (!oldDetail.getPn().equals(newDetail.getPn())) {
// 换料
table.append("<td>").append(oldDetail.getPn()).append(" → <span class='changed'>").append(newDetail.getPn()).append("</span></td>");
table.append("<td>").append(oldDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td class='changed'>").append(newDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td class='changed'>换料</td>");
} else if (!oldDetail.getQty().equals(newDetail.getQty())) {
// 数量变化
table.append("<td>").append(newDetail.getPn()).append("</td>");
table.append("<td>").append(oldDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td class='changed'>").append(newDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td class='changed'>数量变更</td>");
} else {
// 无变化
table.append("<td>").append(newDetail.getPn()).append("</td>");
table.append("<td>").append(oldDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td>").append(newDetail.getQty().setScale(0, RoundingMode.HALF_UP)).append("</td>");
table.append("<td>-</td>");
} }
newDetails.append("</ol>");
// 添加明细变更到邮件内容
String oldText = "<div><span style='color:blue'>原数据</span></div><div>" + originalDetails + "</div>";
String newText = "<div><span style='color:blue'>新数据</span></div><div>" + newDetails + "</div>";
emailContent.append(oldText).append(newText);
table.append("</tr>");
}
return emailContent;
table.append("</table>");
return table.toString();
} }
@Override @Override
@ -3721,11 +3798,12 @@ public class CoDelServiceImpl implements CoDelService {
oldPalletDetailList, newPalletDetailList); oldPalletDetailList, newPalletDetailList);
// 获取发货通知单创建人邮箱 // 获取发货通知单创建人邮箱
String creatorEmail = coDelMapper.queryByUserName(notifyHeader.getCreateBy()).getEmail();
if (StringUtils.isBlank(creatorEmail)) {
log.warn("发货通知单创建人{}没有配置邮箱地址", notifyHeader.getCreateBy());
SysUserEntity creator = coDelMapper.queryByUserName(notifyHeader.getCreateBy());
if (creator == null || StringUtils.isBlank(creator.getEmail())) {
log.warn("发货通知单创建人{}不存在或没有配置邮箱地址", notifyHeader.getCreateBy());
return; return;
} }
String creatorEmail = creator.getEmail();
// 发送邮件 // 发送邮件
String subject = String.format("发货通知单%s【发票:%s】一键装箱数据变更通知", String subject = String.format("发货通知单%s【发票:%s】一键装箱数据变更通知",
@ -4028,11 +4106,12 @@ public class CoDelServiceImpl implements CoDelService {
String emailContent = generateBoxChangeEmailContent(notifyHeader, oldBoxList, newBoxList, operation, boxData); String emailContent = generateBoxChangeEmailContent(notifyHeader, oldBoxList, newBoxList, operation, boxData);
// 获取发货通知单创建人邮箱 // 获取发货通知单创建人邮箱
String creatorEmail = coDelMapper.queryByUserName(notifyHeader.getCreateBy()).getEmail();
if (StringUtils.isBlank(creatorEmail)) {
log.warn("发货通知单创建人{}没有配置邮箱地址", notifyHeader.getCreateBy());
SysUserEntity creator = coDelMapper.queryByUserName(notifyHeader.getCreateBy());
if (creator == null || StringUtils.isBlank(creator.getEmail())) {
log.warn("发货通知单创建人{}不存在或没有配置邮箱地址", notifyHeader.getCreateBy());
return; return;
} }
String creatorEmail = creator.getEmail();
// 发送邮件 // 发送邮件
String subject = String.format("发货通知单%s【发票:%s】箱子%s通知", String subject = String.format("发货通知单%s【发票:%s】箱子%s通知",
@ -4078,11 +4157,12 @@ public class CoDelServiceImpl implements CoDelService {
String emailContent = generateDetailChangeEmailContent(notifyHeader, oldPalletDetailList, newPalletDetailList, operation, detailData); String emailContent = generateDetailChangeEmailContent(notifyHeader, oldPalletDetailList, newPalletDetailList, operation, detailData);
// 获取发货通知单创建人邮箱 // 获取发货通知单创建人邮箱
String creatorEmail = coDelMapper.queryByUserName(notifyHeader.getCreateBy()).getEmail();
if (StringUtils.isBlank(creatorEmail)) {
log.warn("发货通知单创建人{}没有配置邮箱地址", notifyHeader.getCreateBy());
SysUserEntity creator = coDelMapper.queryByUserName(notifyHeader.getCreateBy());
if (creator == null || StringUtils.isBlank(creator.getEmail())) {
log.warn("发货通知单创建人{}不存在或没有配置邮箱地址", notifyHeader.getCreateBy());
return; return;
} }
String creatorEmail = creator.getEmail();
// 发送邮件 // 发送邮件
String subject = String.format("发货通知单%s【发票:%s】箱明细%s通知", String subject = String.format("发货通知单%s【发票:%s】箱明细%s通知",

Loading…
Cancel
Save