tao.mo

Merge remote-tracking branch 'origin/master'

...@@ -22,11 +22,21 @@ public class ConsignmentQuery extends PageBase { ...@@ -22,11 +22,21 @@ public class ConsignmentQuery extends PageBase {
22 if (Utils.isNotEmpty(query.getConsignmentCode())) { 22 if (Utils.isNotEmpty(query.getConsignmentCode())) {
23 query.setConsignmentCodeList(Utils.split(query.getConsignmentCode(), "[;\\n]")); 23 query.setConsignmentCodeList(Utils.split(query.getConsignmentCode(), "[;\\n]"));
24 } 24 }
25 - if(!CollectionUtils.isEmpty(query.getConsignmentCodeList())) { 25 + if(!CollectionUtils.isEmpty(query.getConsignmentCodeList()) && Utils.isEmpty(query.getCreateTimeFrom()) && Utils.isEmpty(query.getCreateTimeTo())) {
26 - query.setCreateTimeFrom(null); 26 + // 获取当前日期,减去180天
27 - query.setCreateTimeTo(null); 27 + LocalDate localDate = LocalDate.now().minusDays(180);
28 - } 28 +
29 - if (Utils.isEmpty(query.getCreateTimeFrom()) && Utils.isEmpty(query.getCreateTimeTo())) { 29 + // 设置 createTimeFrom 为 180 天前的日期(不带时分秒)
30 + String createTimeFrom = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
31 + query.setCreateTimeFrom(createTimeFrom);
32 +
33 + // 获取当前日期(不带时分秒)
34 + LocalDate currentDate = LocalDate.now();
35 +
36 + // 设置 createTimeTo 为今天的日期(不带时分秒)
37 + String createTimeTo = currentDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
38 + query.setCreateTimeTo(createTimeTo);
39 + }else if (Utils.isEmpty(query.getCreateTimeFrom()) && Utils.isEmpty(query.getCreateTimeTo())) {
30 // 获取当前日期,减去3天 40 // 获取当前日期,减去3天
31 LocalDate localDate = LocalDate.now().minusDays(3); 41 LocalDate localDate = LocalDate.now().minusDays(3);
32 42
......
...@@ -32,10 +32,10 @@ public enum EmailTypeEnum { ...@@ -32,10 +32,10 @@ public enum EmailTypeEnum {
32 } 32 }
33 33
34 // 获取 enMsg 根据 code 34 // 获取 enMsg 根据 code
35 - public static String getEnMsgByCode(String code) { 35 + public static String getMsgByCode(String code) {
36 for (EmailTypeEnum emailType : EmailTypeEnum.values()) { 36 for (EmailTypeEnum emailType : EmailTypeEnum.values()) {
37 if (emailType.code.equals(code)) { 37 if (emailType.code.equals(code)) {
38 - return emailType.enMsg; 38 + return emailType.msg;
39 } 39 }
40 } 40 }
41 return null; // 如果找不到对应的 code,返回 null 41 return null; // 如果找不到对应的 code,返回 null
......
...@@ -15,4 +15,7 @@ public class PushZipEmailDto { ...@@ -15,4 +15,7 @@ public class PushZipEmailDto {
15 private String shipperAccount; 15 private String shipperAccount;
16 private String originCountry; 16 private String originCountry;
17 private String fileName; 17 private String fileName;
18 + private String userInputShipperAccount;
19 + private String userInputOriginCountry;
20 + private Long ceFlag;
18 } 21 }
......
...@@ -10,18 +10,23 @@ import java.util.List; ...@@ -10,18 +10,23 @@ import java.util.List;
10 public interface AttachmentExtMapper { 10 public interface AttachmentExtMapper {
11 11
12 @Select("SELECT a.FILE_PATH, " + 12 @Select("SELECT a.FILE_PATH, " +
13 - "c.DEST_IATA_CODE, " + 13 + " c.DEST_IATA_CODE, " +
14 - "c.CONSIGNMENT_CODE, " + 14 + " c.CONSIGNMENT_CODE, " +
15 - "c.SHIPPER_CONTACT_NAME, " + 15 + " c.SHIPPER_CONTACT_NAME, " +
16 - "c.SHIPPER_EMAIL, " + 16 + " c.SHIPPER_EMAIL, " +
17 - "c.SHIPPER_PHONE, " + 17 + " c.SHIPPER_PHONE, " +
18 - "c.SHIPPER_ACCOUNT, " + 18 + " c.SHIPPER_ACCOUNT, " +
19 - "c.ORIGIN_COUNTRY, " + 19 + " c.ORIGIN_COUNTRY, " +
20 - "a.FILE_NAME " + 20 + " a.FILE_NAME, " +
21 + " c.USER_INPUT_SHIPPER_ACCOUNT, " +
22 + " c.USER_INPUT_ORIGIN_COUNTRY, " +
23 + " ucm.CE_FLAG " +
21 "FROM T_BIZ_ATTACHMENT a " + 24 "FROM T_BIZ_ATTACHMENT a " +
22 "JOIN T_BIZ_UPLOAD_RECORD ur ON a.UPLOAD_RECORD_ID = ur.ID " + 25 "JOIN T_BIZ_UPLOAD_RECORD ur ON a.UPLOAD_RECORD_ID = ur.ID " +
23 "JOIN T_BIZ_CONSIGNMENT c ON ur.CONSIGNMENT_ID = c.ID " + 26 "JOIN T_BIZ_CONSIGNMENT c ON ur.CONSIGNMENT_ID = c.ID " +
24 - "WHERE a.UPLOAD_RECORD_ID = #{bizId,jdbcType=NUMERIC}") 27 + "JOIN T_BIZ_USER_CONSIGNMENT_MAPPING ucm ON ucm.CONSIGNMENT_ID = c.ID " +
28 + "WHERE a.UPLOAD_RECORD_ID = #{bizId,jdbcType=NUMERIC} " +
29 + " AND ucm.USER_ID = ur.CREATE_USER_ID")
25 List<PushZipEmailDto> findAttachmentDetailsByBizId(@Param("bizId") Long bizId); 30 List<PushZipEmailDto> findAttachmentDetailsByBizId(@Param("bizId") Long bizId);
26 31
27 @Select("SELECT * FROM T_BIZ_ATTACHMENT WHERE UPLOAD_RECORD_ID = #{uploadRecordId,jdbcType=NUMERIC} AND BIZ_ID = #{consignmentId,jdbcType=NUMERIC} AND STATUS = 1") 32 @Select("SELECT * FROM T_BIZ_ATTACHMENT WHERE UPLOAD_RECORD_ID = #{uploadRecordId,jdbcType=NUMERIC} AND BIZ_ID = #{consignmentId,jdbcType=NUMERIC} AND STATUS = 1")
......
...@@ -3,6 +3,7 @@ package com.fedex.connect.task.utils.sys; ...@@ -3,6 +3,7 @@ package com.fedex.connect.task.utils.sys;
3 import com.fedex.connect.common.dependencies.cache.CacheSystem; 3 import com.fedex.connect.common.dependencies.cache.CacheSystem;
4 import com.fedex.connect.common.dependencies.contants.BaseConstants; 4 import com.fedex.connect.common.dependencies.contants.BaseConstants;
5 import com.fedex.connect.common.dependencies.contants.BaseSeparatorConstants; 5 import com.fedex.connect.common.dependencies.contants.BaseSeparatorConstants;
6 +import com.fedex.connect.common.dependencies.contants.DigitConstants;
6 import com.fedex.connect.common.dependencies.enums.biz.EmailStatusEnum; 7 import com.fedex.connect.common.dependencies.enums.biz.EmailStatusEnum;
7 import com.fedex.connect.common.dependencies.i18n.LocaleMessageUtil; 8 import com.fedex.connect.common.dependencies.i18n.LocaleMessageUtil;
8 import com.fedex.connect.common.dependencies.template.clearanceEmail.ClearanceEmailTemplate; 9 import com.fedex.connect.common.dependencies.template.clearanceEmail.ClearanceEmailTemplate;
...@@ -85,11 +86,17 @@ public class ConFileEmailUtil { ...@@ -85,11 +86,17 @@ public class ConFileEmailUtil {
85 if (file.exists()) { 86 if (file.exists()) {
86 filesList.add(file); 87 filesList.add(file);
87 } 88 }
89 + if (pushZipEmailDto.getCeFlag().equals(DigitConstants.DIGIT_ONE_LONG)){
88 portFileDto.setShipperContactName(pushZipEmailDto.getShipperContactName()); 90 portFileDto.setShipperContactName(pushZipEmailDto.getShipperContactName());
89 portFileDto.setShipperEmail(pushZipEmailDto.getShipperEmail()); 91 portFileDto.setShipperEmail(pushZipEmailDto.getShipperEmail());
90 portFileDto.setShipperPhone(pushZipEmailDto.getShipperPhone()); 92 portFileDto.setShipperPhone(pushZipEmailDto.getShipperPhone());
91 portFileDto.setShipperAccount(pushZipEmailDto.getShipperAccount()); 93 portFileDto.setShipperAccount(pushZipEmailDto.getShipperAccount());
92 portFileDto.setOriginCountry(pushZipEmailDto.getOriginCountry()); 94 portFileDto.setOriginCountry(pushZipEmailDto.getOriginCountry());
95 + }else {
96 + portFileDto.setShipperAccount(pushZipEmailDto.getUserInputShipperAccount());
97 + portFileDto.setOriginCountry(pushZipEmailDto.getUserInputOriginCountry());
98 + portFileDto.setShipperEmail(pushZipEmailDto.getShipperEmail());
99 + }
93 } 100 }
94 String date = DateUtil.yyyyMMddHHmmss(new Date()); 101 String date = DateUtil.yyyyMMddHHmmss(new Date());
95 String fileName = date + BaseSeparatorConstants.SEPARATOR_UNDERLINE + consignmentCode + BaseConstants.FILE_SUFFIX_KEYS.ZIP; 102 String fileName = date + BaseSeparatorConstants.SEPARATOR_UNDERLINE + consignmentCode + BaseConstants.FILE_SUFFIX_KEYS.ZIP;
...@@ -180,6 +187,7 @@ public class ConFileEmailUtil { ...@@ -180,6 +187,7 @@ public class ConFileEmailUtil {
180 //设置邮件标题 187 //设置邮件标题
181 mailConfigDto.setSubject("推送预清关文件"); 188 mailConfigDto.setSubject("推送预清关文件");
182 //设置邮件内容 189 //设置邮件内容
190 + portFileDto.setShipperEmail(emailAddress);
183 String body = this.generateContent("zelong.shao@erry.com", propertiesConfig.getEmailAccount(), portFileDto, conPushEmail.getBizCode()); 191 String body = this.generateContent("zelong.shao@erry.com", propertiesConfig.getEmailAccount(), portFileDto, conPushEmail.getBizCode());
184 mailConfigDto.setContent(body); 192 mailConfigDto.setContent(body);
185 //放入文件列表 193 //放入文件列表
...@@ -283,10 +291,12 @@ public class ConFileEmailUtil { ...@@ -283,10 +291,12 @@ public class ConFileEmailUtil {
283 }else { 291 }else {
284 conPushEmail.setStatusCode(failed.getCode()); 292 conPushEmail.setStatusCode(failed.getCode());
285 conPushEmail.setStatusName(failed.getDescription()); 293 conPushEmail.setStatusName(failed.getDescription());
294 + if (StringUtils.isNotEmpty(mailMessageReqDto.getTo())){
286 conPushEmail.setSendNum(conPushEmail.getSendNum()+1); 295 conPushEmail.setSendNum(conPushEmail.getSendNum()+1);
287 } 296 }
288 } 297 }
289 } 298 }
299 + }
290 300
291 /** 301 /**
292 * @Author Szl 302 * @Author Szl
...@@ -348,7 +358,7 @@ public class ConFileEmailUtil { ...@@ -348,7 +358,7 @@ public class ConFileEmailUtil {
348 emailHistoryRepository.saveOrUpdate(emailHistory); 358 emailHistoryRepository.saveOrUpdate(emailHistory);
349 }else { 359 }else {
350 //失败则根据是否第三次,如果是第三次失败则删除,保存到历史表 360 //失败则根据是否第三次,如果是第三次失败则删除,保存到历史表
351 - if (conPushEmail.getSendNum() == 3){ 361 + if (conPushEmail.getSendNum() == 3 || StringUtils.isEmpty(conPushEmail.getToAddress())){
352 emailRepository.deleteById(conPushEmail.getId()); 362 emailRepository.deleteById(conPushEmail.getId());
353 emailHistory.setId(null); 363 emailHistory.setId(null);
354 emailHistoryRepository.saveOrUpdate(emailHistory); 364 emailHistoryRepository.saveOrUpdate(emailHistory);
...@@ -356,7 +366,6 @@ public class ConFileEmailUtil { ...@@ -356,7 +366,6 @@ public class ConFileEmailUtil {
356 emailRepository.saveOrUpdate(conPushEmail); 366 emailRepository.saveOrUpdate(conPushEmail);
357 } 367 }
358 } 368 }
359 -
360 } 369 }
361 370
362 } 371 }
......
...@@ -82,11 +82,12 @@ public class SendFailedEmailUtil { ...@@ -82,11 +82,12 @@ public class SendFailedEmailUtil {
82 .filter(pushOb -> PushObStatusEnum.PUSH_FAILED.getCode().equals(pushOb.getStatusCode())) 82 .filter(pushOb -> PushObStatusEnum.PUSH_FAILED.getCode().equals(pushOb.getStatusCode()))
83 .count(); 83 .count();
84 84
85 - // 获取前 10 条 CONSIGNMENT_CODE 85 + // 2. 获取 STATUS_CODE 为 PUSH_FAILED 且 MODIFY_TIME 最晚的指定数量的 CONSIGNMENT_CODE
86 List<String> latestConsignmentCodes = obs.stream() 86 List<String> latestConsignmentCodes = obs.stream()
87 + .filter(pushOb -> PushObStatusEnum.PUSH_FAILED.getCode().equals(pushOb.getStatusCode())) // 筛选 STATUS_CODE 为 PUSH_FAILED
87 .sorted(Comparator.comparing(PushOb::getModifyTime).reversed()) // 按 MODIFY_TIME 降序排序 88 .sorted(Comparator.comparing(PushOb::getModifyTime).reversed()) // 按 MODIFY_TIME 降序排序
88 - .limit(Long.parseLong(size)) // 取前 10 条 89 + .limit(Long.parseLong(size)) // 获取指定数量
89 - .map(PushOb::getConsignmentCode) // 获取 CONSIGNMENT_CODE 90 + .map(PushOb::getConsignmentCode) // 提取 CONSIGNMENT_CODE
90 .collect(Collectors.toList()); 91 .collect(Collectors.toList());
91 return new SendFailedEmailDto("ob",statusCodeCount,latestConsignmentCodes,totalCount); 92 return new SendFailedEmailDto("ob",statusCodeCount,latestConsignmentCodes,totalCount);
92 } 93 }
...@@ -111,22 +112,26 @@ public class SendFailedEmailUtil { ...@@ -111,22 +112,26 @@ public class SendFailedEmailUtil {
111 .map(typeCode -> { 112 .map(typeCode -> {
112 List<EmailHistory> emailList = groupedEmails.getOrDefault(typeCode, Collections.emptyList()); 113 List<EmailHistory> emailList = groupedEmails.getOrDefault(typeCode, Collections.emptyList());
113 114
114 - // 1. 统计 STATUS_CODE 为 FAILED 的数量 115 + // 1. 统计 STATUS_CODE 为 FAILED 且 sendNum 等于 3 的数量
115 long statusCodeCount = emailList.stream() 116 long statusCodeCount = emailList.stream()
116 - .filter(email -> EmailStatusEnum.FAILED.getCode().equals(email.getStatusCode())) 117 + .filter(email -> EmailStatusEnum.FAILED.getCode().equals(email.getStatusCode())) // 筛选 STATUS_CODE 为 FAILED
118 + .filter(email -> email.getSendNum() >1) // 筛选 sendNum 等于 3
117 .count(); 119 .count();
118 120
119 - // 2. 获取 MODIFY_TIME 最晚的 10 个 BIZ_CODE 121 + // 2. 获取 STATUS_CODE 为 FAILED 且 sendNum 等于 3 且 MODIFY_TIME 最晚的指定数量的 BIZ_CODE
120 - List<String> latestBizCodes = emailList.stream() 122 + List<String> latestFailedBizCodes = emailList.stream()
121 - .sorted(Comparator.comparing(EmailHistory::getModifyTime).reversed()) 123 + .filter(email -> EmailStatusEnum.FAILED.getCode().equals(email.getStatusCode())) // 筛选 STATUS_CODE 为 FAILED
122 - .limit(Long.parseLong(size)) 124 + .filter(email -> email.getSendNum() >1) // 筛选 sendNum 等于 3
123 - .map(EmailHistory::getBizCode) 125 + .sorted(Comparator.comparing(EmailHistory::getModifyTime).reversed()) // 按 MODIFY_TIME 降序排序
126 + .limit(Long.parseLong(size)) // 获取最晚的指定数量
127 + .map(EmailHistory::getBizCode) // 提取 BIZ_CODE
124 .collect(Collectors.toList()); 128 .collect(Collectors.toList());
125 129
130 +
126 // 3. 统计 TYPE_CODE 的总数量 131 // 3. 统计 TYPE_CODE 的总数量
127 long totalCount = emailList.size(); 132 long totalCount = emailList.size();
128 133
129 - return new SendFailedEmailDto(typeCode, statusCodeCount, latestBizCodes, totalCount); 134 + return new SendFailedEmailDto(typeCode, statusCodeCount, latestFailedBizCodes, totalCount);
130 }) 135 })
131 .collect(Collectors.toList()); 136 .collect(Collectors.toList());
132 return results; 137 return results;
...@@ -173,7 +178,7 @@ public class SendFailedEmailUtil { ...@@ -173,7 +178,7 @@ public class SendFailedEmailUtil {
173 .map(String::trim) // 去除每个元素的前后空格 178 .map(String::trim) // 去除每个元素的前后空格
174 .collect(Collectors.joining(",")); 179 .collect(Collectors.joining(","));
175 tableRows.append("<tr>" + 180 tableRows.append("<tr>" +
176 - "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+EmailTypeEnum.getEnMsgByCode(failedEmailDto.getTypeCode())+"</td>" + 181 + "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+EmailTypeEnum.getMsgByCode(failedEmailDto.getTypeCode())+"</td>" +
177 "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ bizCodesStr +"</td>" + 182 "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ bizCodesStr +"</td>" +
178 "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ failedEmailDto.getTotalCount() +"</td>" + 183 "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ failedEmailDto.getTotalCount() +"</td>" +
179 "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ failedEmailDto.getStatusCodeCount() +"</td>" + 184 "<td style=\"border: 1px solid #dddddd;text-align: left;padding: 8px;\">"+ failedEmailDto.getStatusCodeCount() +"</td>" +
...@@ -230,7 +235,7 @@ public class SendFailedEmailUtil { ...@@ -230,7 +235,7 @@ public class SendFailedEmailUtil {
230 //ce接收人 235 //ce接收人
231 mailConfigDto.setTo("zelong.shao@erry.com,jialiang.song@erry.com"); 236 mailConfigDto.setTo("zelong.shao@erry.com,jialiang.song@erry.com");
232 mailConfigDto.setCcAccount(""); 237 mailConfigDto.setCcAccount("");
233 - mailConfigDto.setReceiveAccount("zelong.shao@erry.com"); 238 + mailConfigDto.setReceiveAccount("zelong.shao@erry.com,jialiang.song@erry.com");
234 //发件人 239 //发件人
235 mailConfigDto.setFrom(propertiesConfig.getEmailAccount()); 240 mailConfigDto.setFrom(propertiesConfig.getEmailAccount());
236 //发件人密码 241 //发件人密码
......