Showing
6 changed files
with
63 additions
and
31 deletions
| ... | @@ -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 | //发件人密码 | ... | ... |
-
Please register or login to post a comment