邮件发送

This commit is contained in:
lvleigang 2025-07-31 16:09:55 +08:00
parent e828e089a6
commit 30704ab9bb
1 changed files with 146 additions and 5 deletions

View File

@ -103,7 +103,7 @@ public class SendEmailServiceImpl extends BaseService<SendEmailEntity, String> i
} }
if(ids != null && ids.size() > 0){ if(ids != null && ids.size() > 0){
SendEmailEntity fileEntity = new SendEmailEntity(); SendEmailEntity fileEntity = new SendEmailEntity();
fileEntity.setDataSourceCode("SW-OA"); fileEntity.setDataSourceCode("HT-OA");
fileEntity.setId(mainData.getString("field0040")); fileEntity.setId(mainData.getString("field0040"));
files = sendEmailDao.queryFileList(fileEntity); files = sendEmailDao.queryFileList(fileEntity);
} }
@ -227,8 +227,150 @@ public class SendEmailServiceImpl extends BaseService<SendEmailEntity, String> i
* @Date 6:12 下午 2025/6/27 * @Date 6:12 下午 2025/6/27
**/ **/
private String getSendData(JSONObject mainData, JSONArray detailArray) throws ParseException { private String getSendData(JSONObject mainData, JSONArray detailArray) throws ParseException {
JSONObject sendData = new JSONObject(); StringBuffer sb = new StringBuffer();
sendData.put("buyerName", mainData.getString("field0092"));//购方名称
// 拼接主容器div
sb.append("<div style=\"max-width: 1100px; margin: 0 auto; background-color: #fff; padding: 35px; box-shadow: 0 2px 10px rgba(0,0,0,0.08); border-radius: 6px;\">");
// 拼接标题区域
sb.append(" <div style=\"text-align: center; margin-bottom: 30px; padding-bottom: 15px; border-bottom: 2px solid #34495e;\">");
sb.append(" <h2 style=\"font-size: 26px; color: #2c3e50; letter-spacing: 2px; margin: 0; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">"+mainData.getOrDefault("field0016","")+"采购单</h2>");
sb.append(" </div>");
sb.append("");
// 拼接基础信息区域
sb.append(" <div style=\"display: flex; margin-bottom: 18px; line-height: 1.6; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">申请日期:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0004","")+"</span>");
sb.append(" </div>");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">单据编号:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0001","")+"</span>");
sb.append(" </div>");
sb.append(" </div>");
sb.append("");
sb.append(" <div style=\"display: flex; margin-bottom: 18px; line-height: 1.6; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">供应商名称:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0016","")+"</span>");
sb.append(" </div>");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">供应商邮箱:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0034","")+"</span>");
sb.append(" </div>");
sb.append(" </div>");
sb.append("");
sb.append(" <div style=\"display: flex; margin-bottom: 18px; line-height: 1.6; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">联系人:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0020","")+"</span>");
sb.append(" </div>");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">联系人电话:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0021","")+"</span>");
sb.append(" </div>");
sb.append(" </div>");
sb.append("");
sb.append(" <div style=\"display: flex; margin-bottom: 18px; line-height: 1.6; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">客户名称:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0022","")+"</span>");
sb.append(" </div>");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">客户联系人:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0023","")+"</span>");
sb.append(" </div>");
sb.append(" </div>");
sb.append("");
sb.append(" <div style=\"display: flex; margin-bottom: 18px; line-height: 1.6; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">客户联系人电话:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0024","")+"</span>");
sb.append(" </div>");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">送货地址:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0025","")+"</span>");
sb.append(" </div>");
sb.append(" </div>");
sb.append("");
sb.append(" <div style=\"display: flex; margin-bottom: 18px; line-height: 1.6; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">收货人:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0026","")+"</span>");
sb.append(" </div>");
sb.append(" <div style=\"flex: 1; display: flex;\">");
sb.append(" <span style=\"font-weight: 600; color: #34495e; min-width: 110px;\">收货人电话:</span>");
sb.append(" <span style=\"color: #2c3e50; padding-left: 8px; border-bottom: 1px dashed #d1d1d1; flex: 1;\">"+mainData.getOrDefault("field0027","")+"</span>");
sb.append(" </div>");
sb.append(" </div>");
sb.append("");
// 拼接材料明细表格
sb.append(" <table style=\"width: 100%; border-collapse: collapse; margin: 30px 0; font-family: 'Microsoft YaHei', 'SimSun', sans-serif;\">");
sb.append(" <tbody>");
sb.append(" <tr>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">序号</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">编码</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">材料名称</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">规格型号</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">数量</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">品牌</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">含税单价</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">含税金额</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">要求到货时间</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">技术要求</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">税率</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">币种</th>");
sb.append(" <th style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; background-color: #2980b9; color: white; font-weight: 600;\">备注</th>");
sb.append(" </tr>");
if (detailArray != null && detailArray.size() > 0) {
for (int i = 0; i < detailArray.size(); i++) {
sb.append(" <tr style=\"background-color: #f9f9f9;\">");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0005","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0006","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0007","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0008","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0009","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0010","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0011","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0012","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0013","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0014","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0017","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0018","")+"</td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\">"+mainData.getOrDefault("field0019","")+"</td>");
sb.append(" </tr>");
}
}else {
sb.append(" <tr onmouseover=\"this.style.backgroundColor='#f0f7ff'\" onmouseout=\"this.style.backgroundColor=''\">");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" <td style=\"padding: 12px 8px; text-align: center; border: 1px solid #ddd; font-size: 14px; color: #2c3e50;\"></td>");
sb.append(" </tr>");
}
sb.append(" </tbody>");
sb.append(" </table>");
// 闭合主容器div
sb.append("</div>");
if (detailArray != null && detailArray.size() > 0) { if (detailArray != null && detailArray.size() > 0) {
for (int i = 0; i < detailArray.size(); i++) { for (int i = 0; i < detailArray.size(); i++) {
@ -236,8 +378,7 @@ public class SendEmailServiceImpl extends BaseService<SendEmailEntity, String> i
} }
} }
return sendData.toJSONString(); return sb.toString();
} }
} }