mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
1、error-code写入时机新增重试;2、重复error-code错误码处理;
This commit is contained in:
+44
-7
@@ -13,6 +13,7 @@ import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -44,16 +45,52 @@ public class ErrorCodeAutoGeneratorImpl implements ErrorCodeAutoGenerator {
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
@Async // 异步,保证项目的启动过程,毕竟非关键流程
|
||||
public void execute() {
|
||||
// 第一步,解析错误码
|
||||
List<ErrorCodeAutoGenerateReqDTO> autoGenerateDTOs = parseErrorCode();
|
||||
log.info("[execute][解析到错误码数量为 ({}) 个]", autoGenerateDTOs.size());
|
||||
|
||||
// 第二步,写入到 system 服务
|
||||
try {
|
||||
errorCodeApi.autoGenerateErrorCodeList(autoGenerateDTOs).checkError();
|
||||
log.info("[execute][写入到 system 组件完成]");
|
||||
} catch (Exception ex) {
|
||||
log.error("[execute][写入到 system 组件失败({})]", ExceptionUtil.getRootCauseMessage(ex));
|
||||
// 手动重试配置
|
||||
int maxAttempts = 5;
|
||||
int attempt = 0;
|
||||
boolean success = false;
|
||||
long initialDelay = 1000; // 初始延迟1秒
|
||||
long maxDelay = 10000; // 最大延迟10秒
|
||||
|
||||
while (attempt < maxAttempts && !success) {
|
||||
attempt++;
|
||||
try {
|
||||
errorCodeApi.autoGenerateErrorCodeList(autoGenerateDTOs).checkError();
|
||||
log.info("[execute][第 {} 次尝试 - 写入到 system 组件成功]", attempt);
|
||||
success = true;
|
||||
} catch (Exception ex) {
|
||||
// 特别处理UnknownHostException
|
||||
if (ExceptionUtil.getRootCause(ex) instanceof UnknownHostException) {
|
||||
log.warn("[execute][第 {} 次尝试 - DNS解析失败,等待重试]", attempt);
|
||||
} else {
|
||||
log.warn("[execute][第 {} 次尝试 - 请求失败({})]",
|
||||
attempt, ExceptionUtil.getRootCauseMessage(ex));
|
||||
}
|
||||
|
||||
if (attempt >= maxAttempts) {
|
||||
log.error("[execute][写入到 system 组件失败,已达到最大重试次数({})]",
|
||||
ExceptionUtil.getRootCauseMessage(ex));
|
||||
break;
|
||||
}
|
||||
|
||||
// 每次重试间隔时间指数增长:1s, 2s, 4s, 8s, 10s(最大10s)
|
||||
long delay = Math.min(
|
||||
(long) (initialDelay * Math.pow(2, attempt - 1)),
|
||||
maxDelay
|
||||
);
|
||||
|
||||
try {
|
||||
log.info("[execute][等待 {}ms 后进行第 {} 次重试]", delay, attempt + 1);
|
||||
Thread.sleep(delay);
|
||||
} catch (InterruptedException ie) {
|
||||
Thread.currentThread().interrupt();
|
||||
log.error("[execute][重试过程被中断]");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -23,5 +23,5 @@ public class ErrorCodeConstants {
|
||||
public static final ErrorCode ORDER_IMPORT_PLATE_GOODS_NOMATCH_ERROR = new ErrorCode(1_005_000_013, "导入失败,板材库中无板材匹配,商品编码:{},商品名称:{},材质:{},颜色:{},厚度:{},品牌:{}");
|
||||
public static final ErrorCode WEBCAD_ORDER_IMPORT_PEEK_NOT_EXIST_ERROR = new ErrorCode(1_005_000_014, "导入失败:数据源不存在,请检查消息可靠性");
|
||||
public static final ErrorCode WEBCAD_ORDER_IMPORT_ORDER_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_005_000_015, "导入失败:生产单号【{}】板件数量已发生改变,请重新导入");
|
||||
public static final ErrorCode WEBCAD_ORDER_IMPORT_GOODS_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_005_000_015, "导入失败:材质【{}】板件数量已发生改变,请重新导入");
|
||||
public static final ErrorCode WEBCAD_ORDER_IMPORT_GOODS_UPDATE_CONCURRENCY_ERROR = new ErrorCode(1_005_000_016, "导入失败:材质【{}】板件数量已发生改变,请重新导入");
|
||||
}
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ public final class ErrorCodeConstants {
|
||||
public static final ErrorCode DATASOURCE_CONNECT_FAIL = new ErrorCode(1_004_002_002, "报表数据源连接失败");
|
||||
public static final ErrorCode DATASOURCE_SPRINGBEAN_GET_FAIL = new ErrorCode(1_004_002_003, "无法获取springbean【{}】");
|
||||
public static final ErrorCode DATASOURCE_SPRINGBEAN_METHODS_GET_FAIL = new ErrorCode(1_004_002_004, "获取springbean方法列表失败,请检查】");
|
||||
public static final ErrorCode DATASOURCE_BUILDIN_OPERATION_PERMISSION_ERROR = new ErrorCode(1_004_001_002, "内置数据源操作权限不足");
|
||||
public static final ErrorCode DATASOURCE_BUILDIN_OPERATION_PERMISSION_ERROR = new ErrorCode(1_004_002_005, "内置数据源操作权限不足");
|
||||
|
||||
|
||||
// ========== UREPORT dataset模块 1-003-003-000 ==========
|
||||
|
||||
+22
-26
@@ -159,7 +159,7 @@ public class ErrorCodeConstants {
|
||||
|
||||
public static final ErrorCode SOCIAL_CLIENT_WEIXIN_MINI_APP_PHONE_CODE_ERROR = new ErrorCode(1_002_018_200, "获得手机号失败");
|
||||
public static final ErrorCode SOCIAL_CLIENT_NOT_EXISTS = new ErrorCode(1_002_018_201, "社交客户端不存在");
|
||||
public static final ErrorCode SOCIAL_CLIENT_UNIQUE = new ErrorCode(1_002_018_201, "社交客户端已存在配置");
|
||||
public static final ErrorCode SOCIAL_CLIENT_UNIQUE = new ErrorCode(1_002_018_202, "社交客户端已存在配置");
|
||||
|
||||
// ========== 系统敏感词 1-002-019-000 =========
|
||||
public static final ErrorCode SENSITIVE_WORD_NOT_EXISTS = new ErrorCode(1_002_019_000, "系统敏感词在所有标签中都不存在");
|
||||
@@ -293,12 +293,12 @@ public class ErrorCodeConstants {
|
||||
|
||||
|
||||
|
||||
//=========== 包裹信息 1-002-040-000 ============
|
||||
public static final ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_040_002, "当前包裹类型错误");
|
||||
public static final ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_040_003, "修改当前生产单的工序状态和生产单的状态失败");
|
||||
public static final ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_040_004, "当前订单无优化信息");
|
||||
public static final ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_002_040_005, "已经是{}一条了");
|
||||
public static final ErrorCode ORDER_IS_PACK_ERROR = new ErrorCode(1_002_040_006, "生产单' {} '已经完成全部打包,无法进行分堆");
|
||||
//=========== 包裹信息 1-002-047-000 ============
|
||||
public static final ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_047_002, "当前包裹类型错误");
|
||||
public static final ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_047_003, "修改当前生产单的工序状态和生产单的状态失败");
|
||||
public static final ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_047_004, "当前订单无优化信息");
|
||||
public static final ErrorCode NO_PRODUCTION_ORDER_INFORMATION_AVAILABLE = new ErrorCode(1_002_047_005, "已经是{}一条了");
|
||||
public static final ErrorCode ORDER_IS_PACK_ERROR = new ErrorCode(1_002_047_006, "生产单' {} '已经完成全部打包,无法进行分堆");
|
||||
|
||||
|
||||
//=========== 断言提示信息 1-002-041-000 ============
|
||||
@@ -427,21 +427,21 @@ public class ErrorCodeConstants {
|
||||
public static final ErrorCode PRODUCTS_NO_DELETE = new ErrorCode(1_002_043_013, "当前产品以上架,无法删除,请下架后再删除");
|
||||
public static final ErrorCode PRODUCTS_NO_UPDATE = new ErrorCode(1_002_043_014, "当前产品以上架,无法进行修改");
|
||||
public static final ErrorCode PRODUCTS_DETAIL_NO_UPDATE = new ErrorCode(1_002_043_016, "定价规则对应的产品已上架,无法进行修改");
|
||||
public static final ErrorCode ADVERTISEMENT_START_TIME_ERROR = new ErrorCode(1_003_043_017, "广告开始时间选择有误,应等于或大于当日");
|
||||
public static final ErrorCode ADVERTISEMENT_TIME_ERROR = new ErrorCode(1_003_043_018, "时间选择有误,结束时间应大于或等于开始时间");
|
||||
public static final ErrorCode ADVERTISEMENT_NAME_IS_EXIST = new ErrorCode(1_003_043_019, "当前名称的广告已存在,请重新命名");
|
||||
public static final ErrorCode ADVERTISEMENT_NO_DELETE = new ErrorCode(1_003_043_020, "当前广告已经发布,无法删除,请结束发布后再删除");
|
||||
public static final ErrorCode ADVERTISEMENT_REPUBLISH_NO_TIME = new ErrorCode(1_003_043_021, "广告重新发布,应重新选择投放时间");
|
||||
public static final ErrorCode RECHARGE_ACTIVE_NAME_IS_EXIST = new ErrorCode(1_004_043_022, "当前赠送金活动名称已存在,请修改");
|
||||
public static final ErrorCode IMAGE_UPLOAD_ERROR = new ErrorCode(1_004_043_023, "图片上传失败,请重试或重新选择图片");
|
||||
public static final ErrorCode ADVERTISEMENT_START_TIME_ERROR = new ErrorCode(1_002_043_017, "广告开始时间选择有误,应等于或大于当日");
|
||||
public static final ErrorCode ADVERTISEMENT_TIME_ERROR = new ErrorCode(1_002_043_018, "时间选择有误,结束时间应大于或等于开始时间");
|
||||
public static final ErrorCode ADVERTISEMENT_NAME_IS_EXIST = new ErrorCode(1_002_043_019, "当前名称的广告已存在,请重新命名");
|
||||
public static final ErrorCode ADVERTISEMENT_NO_DELETE = new ErrorCode(1_002_043_020, "当前广告已经发布,无法删除,请结束发布后再删除");
|
||||
public static final ErrorCode ADVERTISEMENT_REPUBLISH_NO_TIME = new ErrorCode(1_002_043_021, "广告重新发布,应重新选择投放时间");
|
||||
public static final ErrorCode RECHARGE_ACTIVE_NAME_IS_EXIST = new ErrorCode(1_002_043_022, "当前赠送金活动名称已存在,请修改");
|
||||
public static final ErrorCode IMAGE_UPLOAD_ERROR = new ErrorCode(1_002_043_023, "图片上传失败,请重试或重新选择图片");
|
||||
|
||||
//=========== 支付相关 1-002-044-000 ============
|
||||
public static final ErrorCode PAY_CHANNEL_NOT_SUPPORT = new ErrorCode(1_002_044_000, "暂不支持的支付渠道,请使用其他支付渠道");
|
||||
public static final ErrorCode PAY_ORDER_NOT_EXIST = new ErrorCode(1_002_044_001, "支付订单不存在,支付编号:{},请重新发起支付");
|
||||
public static final ErrorCode PAY_ORDER_CHANNEL_QUERY_NOT_EXIST = new ErrorCode(1_002_044_002, "如果您已确认扫码支付,请稍后刷新页面,支付平台可能存在延迟到账");
|
||||
public static final ErrorCode PAY_ORDER_NOTIFY_DATA_PARSE_ERROR = new ErrorCode(1_002_044_003, "解析支付回调数据异常");
|
||||
public static final ErrorCode PAY_ORDER_STATUS_IS_NOT_WAITING = new ErrorCode(1_002_044_004, "支付订单不处于待支付");
|
||||
public static final ErrorCode PAY_ORDER_SUBMIT_CHANNEL_ERROR = new ErrorCode(1_002_044_005, "发起渠道支付异常,请联系客服");
|
||||
//=========== 支付相关 1-002-048-000 ============
|
||||
public static final ErrorCode PAY_CHANNEL_NOT_SUPPORT = new ErrorCode(1_002_048_000, "暂不支持的支付渠道,请使用其他支付渠道");
|
||||
public static final ErrorCode PAY_ORDER_NOT_EXIST = new ErrorCode(1_002_048_001, "支付订单不存在,支付编号:{},请重新发起支付");
|
||||
public static final ErrorCode PAY_ORDER_CHANNEL_QUERY_NOT_EXIST = new ErrorCode(1_002_048_002, "如果您已确认扫码支付,请稍后刷新页面,支付平台可能存在延迟到账");
|
||||
public static final ErrorCode PAY_ORDER_NOTIFY_DATA_PARSE_ERROR = new ErrorCode(1_002_048_003, "解析支付回调数据异常");
|
||||
public static final ErrorCode PAY_ORDER_STATUS_IS_NOT_WAITING = new ErrorCode(1_002_048_004, "支付订单不处于待支付");
|
||||
public static final ErrorCode PAY_ORDER_SUBMIT_CHANNEL_ERROR = new ErrorCode(1_002_048_005, "发起渠道支付异常,请联系客服");
|
||||
|
||||
//=========== 产品相关 1-002-045-000 ============
|
||||
public static final ErrorCode PRODUCTS_NO_EXIST = new ErrorCode(1_002_045_001, "当前产品不存在");
|
||||
@@ -453,6 +453,7 @@ public class ErrorCodeConstants {
|
||||
public static final ErrorCode PRODUCTS_DURATION_NUM_ERR = new ErrorCode(1_002_045_007, "产品定价规则,时长数据设置有误");
|
||||
public static final ErrorCode PRODUCTS_DURATION_INT_ERR = new ErrorCode(1_002_045_008, "产品定价规则:时长必须为整数且大于 0");
|
||||
public static final ErrorCode PRODUCTS_DURATION_UNIT_ERR = new ErrorCode(1_002_045_009, "产品定价规则,时长单位设置有误");
|
||||
public static final ErrorCode RECHARGE_ACTIVE_NO_EXIST = new ErrorCode(1_002_045_010, "当前赠送金活动不存在");
|
||||
|
||||
//=========== 广告相关 1-002-046-000 ============
|
||||
public static final ErrorCode ADVERTISEMENT_POSITION_NO_EXIST = new ErrorCode(1_002_046_001, "广告所选放置位置不存在");
|
||||
@@ -463,14 +464,9 @@ public class ErrorCodeConstants {
|
||||
public static final ErrorCode ADVERTISEMENT_END_ERROR2 = new ErrorCode(1_002_046_006, "当前广告已结束,无需立即结束");
|
||||
public static final ErrorCode ADVERTISEMENT_FAIL = new ErrorCode(1_002_046_007, "自动发布失败");
|
||||
|
||||
public static final ErrorCode RECHARGE_ACTIVE_NO_EXIST = new ErrorCode(1_004_001_001, "当前赠送金活动不存在");
|
||||
|
||||
|
||||
|
||||
|
||||
//=========== 解析器管理 1-002-044-000 ============
|
||||
public static final ErrorCode PARSER_NO_EXIST = new ErrorCode(1_002_044_001, "当前解析器不存在,请重新选择");
|
||||
|
||||
public static final ErrorCode PARSER_TEMPLATE_NO_EXIST = new ErrorCode(1_002_044_002, "当前解析器模板不存在,请重新选择");
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user