diff --git a/common-core/src/main/java/com/baiyue/common/core/api/ResultCode.java b/common-core/src/main/java/com/baiyue/common/core/api/ResultCode.java index 7e58bd886..848b89ce1 100644 --- a/common-core/src/main/java/com/baiyue/common/core/api/ResultCode.java +++ b/common-core/src/main/java/com/baiyue/common/core/api/ResultCode.java @@ -8,16 +8,27 @@ import java.util.Arrays; * 统一接口结果码枚举,定义业务错误编码、默认消息和对应 HTTP 状态。 */ public enum ResultCode { + /** 请求处理成功。 */ SUCCESS("200", "success", HttpStatus.OK), + /** 请求参数不符合接口要求。 */ BAD_REQUEST("A0400", "Bad request", HttpStatus.BAD_REQUEST), + /** 未登录、令牌无效或登录态已过期。 */ UNAUTHORIZED("A0401", "Authentication required", HttpStatus.UNAUTHORIZED), + /** 已登录但没有操作权限。 */ FORBIDDEN("A0403", "Access denied", HttpStatus.FORBIDDEN), + /** 请求的资源不存在或不在可访问范围内。 */ NOT_FOUND("A0404", "Resource not found", HttpStatus.NOT_FOUND), + /** 资源版本、幂等键或当前状态发生冲突。 */ CONFLICT("A0409", "Resource conflict", HttpStatus.CONFLICT), + /** 字段校验、格式校验或业务前置校验未通过。 */ VALIDATION_FAILED("A0422", "Validation failed", HttpStatus.UNPROCESSABLE_ENTITY), + /** 请求频率或并发数量超过限制。 */ TOO_MANY_REQUESTS("A0429", "Too many requests", HttpStatus.TOO_MANY_REQUESTS), + /** 未被更细错误码覆盖的通用业务失败。 */ BUSINESS_ERROR("B0001", "Business operation failed", HttpStatus.BAD_REQUEST), + /** 服务内部发生未预期异常。 */ INTERNAL_ERROR("S0500", "Internal server error", HttpStatus.INTERNAL_SERVER_ERROR), + /** 下游服务、数据库或基础设施暂不可用。 */ SERVICE_UNAVAILABLE("S0503", "Service unavailable", HttpStatus.SERVICE_UNAVAILABLE); private final String code; diff --git a/common-core/src/main/java/com/baiyue/common/core/export/ExportContracts.java b/common-core/src/main/java/com/baiyue/common/core/export/ExportContracts.java index 1b6a6cbcc..d62b1c13d 100644 --- a/common-core/src/main/java/com/baiyue/common/core/export/ExportContracts.java +++ b/common-core/src/main/java/com/baiyue/common/core/export/ExportContracts.java @@ -24,5 +24,18 @@ public final class ExportContracts { public record ExportColumn(String key, String title, ExportColumnType type, Integer width) { } - public enum ExportColumnType { STRING, INTEGER, DECIMAL, BOOLEAN, DATE, DATETIME } + public enum ExportColumnType { + /** 文本列。 */ + STRING, + /** 整数列。 */ + INTEGER, + /** 高精度小数列。 */ + DECIMAL, + /** 布尔值列。 */ + BOOLEAN, + /** 日期列,不包含时间。 */ + DATE, + /** 日期时间列。 */ + DATETIME + } } diff --git a/docs/系统状态枚举说明.md b/docs/系统状态枚举说明.md new file mode 100644 index 000000000..c0d76da8a --- /dev/null +++ b/docs/系统状态枚举说明.md @@ -0,0 +1,186 @@ +# 系统状态枚举说明 + +## 使用范围 + +本文档说明当前后端实际使用的状态值。状态值是接口、数据库和前端联调契约,不能为了展示中文而修改其英文编码;前端展示应使用本说明中的中文含义。 + +代码中的 Java 枚举、状态常量和数据库状态字段均已补充中文注释。本说明用于集中查询,不替代各业务状态机的校验。 + +## 通用响应码 + +| 状态值 | 中文含义 | +| --- | --- | +| `200` | 请求成功。 | +| `A0400` | 请求参数不符合接口要求。 | +| `A0401` | 未登录、令牌无效或会话过期。 | +| `A0403` | 已登录但没有权限。 | +| `A0404` | 资源不存在或不在可访问范围。 | +| `A0409` | 状态、版本或幂等键冲突。 | +| `A0422` | 字段或业务前置校验失败。 | +| `A0429` | 请求频率或并发数量超限。 | +| `B0001` | 通用业务失败。 | +| `S0500` | 服务内部异常。 | +| `S0503` | 下游服务、数据库或基础设施暂不可用。 | + +## 账号和权限 + +| 字段 | 状态值 | 中文含义 | +| --- | --- | --- | +| 账号状态 | `ACTIVE` | 账号正常,可登录。 | +| 账号状态 | `DISABLED` | 账号已停用,不允许登录。 | +| 账号状态 | `LOCKED` | 账号已锁定,需要管理员解除。 | +| 客户资料状态 | `PROFILE_REQUIRED` | 客户资料尚未补全。 | +| 客户资料状态 | `PENDING` | 客户资料已提交,等待审核。 | +| 客户资料状态 | `ACTIVE` | 客户审核通过,可正常开展业务。 | +| 客户资料状态 | `REJECTED` | 客户资料审核驳回。 | +| 客户资料状态 | `DISABLED` | 客户已停用。 | +| 客户、成员、角色、权限状态 | `ACTIVE` | 已启用,可参与登录、授权或业务使用。 | +| 客户、成员、角色、权限状态 | `DISABLED` | 已停用,不可继续使用。 | +| 审核记录状态 | `PENDING` | 等待审核。 | +| 审核记录状态 | `APPROVED` | 审核通过。 | +| 审核记录状态 | `REJECTED` | 审核驳回。 | +| 审核记录状态 | `SUPERSEDED` | 已被更新后的审核记录替代。 | + +## 订单状态 + +| 状态值 | 中文含义 | +| --- | --- | +| `DRAFT` | 草稿,可继续编辑。 | +| `SUBMITTED` | 已提交,等待平台审核。 | +| `APPROVED` | 审核通过,可接单或进入履约。 | +| `ACCEPTED` | 平台已接单。 | +| `REJECTED` | 审核驳回,不允许进入履约。 | +| `CANCELLED` | 已取消,订单结束。 | +| `PROCESSING` | 履约处理中。 | +| `COMPLETED` | 订单完成。 | + +统一订单列表的主状态是展示分组,不等于订单表的内部状态:`PENDING_REVIEW`、`WAIT_MEASURE`、`WAIT_SPLIT`、`INBOUNDED`、`LOADING`、`LOADED`、`DELIVERED`。 + +## 仓库与库位 + +| 字段 | 状态值 | 中文含义 | +| --- | --- | --- | +| 仓库、往来单位、快递公司 | `ACTIVE` | 启用,可被下单和作业引用。 | +| 仓库、往来单位、快递公司 | `INACTIVE` | 停用,不允许新增业务引用。 | +| 托盘 | `AVAILABLE` | 可分配。 | +| 托盘 | `RESERVED` | 已预占,尚未确认占用。 | +| 托盘 | `OCCUPIED` | 已确认占用。 | +| 库位 | `AVAILABLE` | 可用。 | +| 库位 | `RESERVED` | 已预占。 | +| 库位 | `OCCUPIED` | 已占用。 | +| 库位 | `DISABLED` | 已停用,不允许分配。 | +| 库位预占记录 | `RESERVED` | 预占生效中。 | +| 库位预占记录 | `CONFIRMED` | 预占已转为正式占用。 | +| 库位预占记录 | `RELEASED` | 已释放。 | +| 库位预占记录 | `EXPIRED` | 预占超时失效。 | +| 库位占用记录 | `OCCUPIED` | 正在占用。 | +| 库位占用记录 | `RELEASED` | 已释放。 | + +## 二期入库 + +### 入库单主流程状态 + +| 状态值 | 中文含义 | +| --- | --- | +| `WAIT_MEASURE` | 等待录入或接收测量数据。 | +| `MEASURING` | 正在测量、识别重量或人工修正。 | +| `MEASURE_PENDING` | 测量已提交,等待审核。 | +| `MEASURE_REJECTED` | 测量审核被驳回,等待修正或异常放行。 | +| `WAIT_PRICING` | 测量通过或异常放行,等待计费。 | +| `FEE_CONFIRMING` | 已生成费用,等待费用确认和发送。 | +| `INBOUNDING` | 费用已确认,正在占用托盘、库位并完成入库。 | +| `INBOUNDED` | 入库完成,费用已发送给客户。 | +| `WAIT_SPLIT` | 已完成入库,等待智能装柜或预装确认。 | +| `LOADING` | 已进入装柜作业,PDA 可执行拣货。 | +| `LOADED` | 装柜完成,等待派送完成。 | +| `DELIVERED` | 已完成派送。 | +| `VOIDED` | 已作废,不允许继续处理。 | + +主链路为:`WAIT_MEASURE` -> `MEASURING` -> `MEASURE_PENDING` -> `WAIT_PRICING` -> `FEE_CONFIRMING` -> `INBOUNDING` -> `INBOUNDED` -> `WAIT_SPLIT` -> `LOADING` -> `LOADED` -> `DELIVERED`。测量驳回走 `MEASURE_PENDING` -> `MEASURE_REJECTED`;异常放行后回到 `WAIT_PRICING`。 + +### 测量、重量和费用状态 + +| 字段 | 状态值 | 中文含义 | +| --- | --- | --- | +| 测量批次 | `DRAFT` | 后台人工测量草稿,可编辑。 | +| 测量批次 | `RECEIVED` | 已接收第三方测量回传,待平台提交审核。 | +| 测量批次 | `SUBMITTED` | 已提交测量审核。 | +| 测量批次 | `APPROVED` | 测量审核通过。 | +| 测量批次 | `REJECTED` | 测量审核驳回。 | +| 重量识别 | `PENDING_CONFIRM` | OCR 已识别有效数值,等待人工确认。 | +| 重量识别 | `NEEDS_MANUAL` | OCR 无效或不完整,必须人工录入或修正。 | +| 重量识别 | `CONFIRMED` | 重量已确认,可参与计费。 | +| 测量审核、费用审核 | `NOT_SUBMITTED` | 尚未提交审核。 | +| 测量审核、费用审核 | `PENDING` | 等待审核。 | +| 测量审核、费用审核 | `APPROVED` | 审核通过。 | +| 测量审核、费用审核 | `REJECTED` | 审核驳回。 | +| 费用状态 | `UNPRICED` | 尚未计费。 | +| 费用状态 | `CALCULATED` | 已计算费用,等待确认。 | +| 费用状态 | `CONFIRMED` | 费用已确认,可发送给客户。 | +| 费用状态 | `SENT` | 费用明细已发送给客户。 | +| 客户通知状态 | `NOT_CREATED` | 尚未创建通知任务。 | +| 客户通知状态 | `PENDING` | 已创建待处理通知。当前代码未发现发送完成后的独立状态更新。 | + +### 第三方回传和幂等记录 + +| 字段 | 状态值 | 中文含义 | +| --- | --- | --- | +| 第三方测量调用 | `PROCESSING` | 请求正在处理。 | +| 第三方测量调用 | `ACCEPTED` | 回传被接受,包含幂等重放成功。 | +| 第三方测量调用 | `REJECTED` | 回传校验或处理失败。 | +| 入库与计费幂等记录 | `PROCESSING` | 请求正在执行。 | +| 入库与计费幂等记录 | `COMPLETED` | 请求已成功完成,可返回幂等结果。 | + +## 三期智能装柜和 PDA + +| 字段 | 状态值 | 中文含义 | +| --- | --- | --- | +| 装柜计划 | `EDITING` | 编辑中,可维护货柜信息,并可增删未拣货明细。 | +| 装柜计划 | `LOADING` | 装柜中,已生成 PDA 拣货任务;未拣货明细仍可追加、修改或删除。 | +| 装柜计划 | `COMPLETED` | PDA 拣货完成后自动完成,计划、明细和货柜信息只读。 | +| PDA 拣货任务 | `LOADING` | 拣货作业进行中。 | +| PDA 拣货任务 | `COMPLETED` | 拣货已完成。 | +| PDA 拣货明细 | `PENDING` | 尚未开始拣货。 | +| PDA 拣货明细 | `PICKING` | 已拣部分数量,仍可继续拣货。 | +| PDA 拣货明细 | `PICKED` | 计划箱数已全部拣完。 | +| PDA 拣货明细 | `PARTIAL` | 只拣到部分箱数,剩余数量需要生成关联子入库单。 | +| PDA 拣货明细 | `SKIPPED` | 本次跳过,入库单回退为已入库并可重新参与智能装柜。 | +| 预装清单 | `PENDING` | 预装草稿,尚未开始确认。 | +| 预装清单 | `CONFIRMING` | 正在确认预装明细。 | +| 预装清单 | `CONFIRMED` | 预装已确认,可进入装柜作业。 | +| 新版拆单批次 | `PREPARED` | 已准备待应用。 | +| 新版拆单批次 | `APPLIED` | 已应用并生成关联子入库单。 | +| 新版拆单批次 | `CANCELLED` | 已取消,不能再次应用。 | +| 旧版拆单记录 | `LOCKED` | 已锁定待完成。 | +| 旧版拆单记录 | `COMPLETED` | 已完成并关联子入库单。 | + +装柜计划只能单向推进:`EDITING` -> `LOADING` -> `COMPLETED`,没有撤回状态。`COMPLETED` 后不允许编辑或删除装柜明细。 + +## 文件、导出和审计 + +| 字段 | 状态值 | 中文含义 | +| --- | --- | --- | +| 导出任务 | `PENDING` | 等待执行。 | +| 导出任务 | `RUNNING` | 正在生成文件。 | +| 导出任务 | `SUCCEEDED` | 文件已生成,可下载。 | +| 导出任务 | `FAILED` | 生成失败,可按规则重试。 | +| 导出任务 | `EXPIRED` | 文件已过期。 | +| 导出消息 | `PENDING` | 等待投递。 | +| 导出消息 | `CLAIMED` | 已被工作线程领取。 | +| 导出消息 | `SENT` | 已成功投递。 | +| 导出消息 | `QUARANTINED` | 异常隔离,等待人工或补偿处理。 | +| 审计消息 | `PENDING` | 等待发送。 | +| 审计消息 | `SENDING` | 正在发送。 | +| 审计消息 | `SENT` | 已发送成功。 | +| 审计消息 | `DEAD` | 多次失败,进入死信补偿。 | + +## 第三方能力和 OCR + +| 字段 | 状态值 | 中文含义 | +| --- | --- | --- | +| 第三方能力 | `DISABLED` | 能力未启用。 | +| 第三方能力 | `NOT_CONFIGURED` | 已启用但密钥或配置不完整。 | +| 第三方能力 | `READY` | 已启用且配置完整。 | +| 单图 OCR | `RECOGNIZED` | 已识别到有效重量。 | +| 单图 OCR | `NO_WEIGHT_FOUND` | 已处理图片但未识别到可用重量。 | +| 单图 OCR | `FAILED` | 图片处理、供应商调用或解析失败。 | diff --git a/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundListTab.java b/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundListTab.java index a8a1e3e4d..93336d26a 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundListTab.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundListTab.java @@ -4,9 +4,13 @@ import java.util.List; /** 入库列表页签及其流程状态映射。 */ public enum InboundListTab { + /** 待测量:包含待测量、测量中和测量审核驳回的入库单。 */ WAIT_MEASURE(List.of("WAIT_MEASURE", "MEASURING", "MEASURE_REJECTED")), + /** 待审核:测量数据已经提交,等待审核结论。 */ WAIT_REVIEW(List.of("MEASURE_PENDING")), + /** 待发送费用:等待计费、费用确认或正在完成入库。 */ WAIT_FEE_SEND(List.of("WAIT_PRICING", "FEE_CONFIRMING", "INBOUNDING")), + /** 已入库:费用已发送且入库完成。 */ INBOUNDED(List.of("INBOUNDED")); private final List processStatuses; diff --git a/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundProcessStatus.java b/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundProcessStatus.java index 7339ccc18..20c39a063 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundProcessStatus.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/domain/InboundProcessStatus.java @@ -4,10 +4,37 @@ import java.util.Set; /** 二期入库主流程状态,不包含原型中的“待客户确认”。 */ public final class InboundProcessStatus { + /** 等待录入或接收测量数据。 */ + public static final String WAIT_MEASURE = "WAIT_MEASURE"; + /** 已存在测量草稿、重量 OCR 或人工修正,尚未提交审核。 */ + public static final String MEASURING = "MEASURING"; + /** 测量已提交,等待平台审核。 */ + public static final String MEASURE_PENDING = "MEASURE_PENDING"; + /** 测量审核被驳回,等待修正或异常放行。 */ + public static final String MEASURE_REJECTED = "MEASURE_REJECTED"; + /** 测量已通过或异常放行,等待计费。 */ + public static final String WAIT_PRICING = "WAIT_PRICING"; + /** 已生成费用,等待费用确认和发送。 */ + public static final String FEE_CONFIRMING = "FEE_CONFIRMING"; + /** 费用已确认,正在执行托盘、库位占用和入库收口。 */ + public static final String INBOUNDING = "INBOUNDING"; + /** 已入库完成,费用已发送给客户。 */ + public static final String INBOUNDED = "INBOUNDED"; + /** 等待智能装柜或预装确认。 */ + public static final String WAIT_SPLIT = "WAIT_SPLIT"; + /** 已进入装柜作业,PDA 可执行拣货。 */ + public static final String LOADING = "LOADING"; + /** 装柜完成,等待派送完成。 */ + public static final String LOADED = "LOADED"; + /** 已完成派送。 */ + public static final String DELIVERED = "DELIVERED"; + /** 已作废,不再允许继续处理。 */ + public static final String VOIDED = "VOIDED"; + public static final Set VALUES = Set.of( - "WAIT_MEASURE", "MEASURING", "MEASURE_PENDING", "MEASURE_REJECTED", - "WAIT_PRICING", "FEE_CONFIRMING", "INBOUNDING", "INBOUNDED", - "WAIT_SPLIT", "LOADING", "LOADED", "DELIVERED", "VOIDED" + WAIT_MEASURE, MEASURING, MEASURE_PENDING, MEASURE_REJECTED, + WAIT_PRICING, FEE_CONFIRMING, INBOUNDING, INBOUNDED, + WAIT_SPLIT, LOADING, LOADED, DELIVERED, VOIDED ); private InboundProcessStatus() { diff --git a/firstleg/src/main/java/com/baiyue/firstleg/domain/SmartLoadingStatus.java b/firstleg/src/main/java/com/baiyue/firstleg/domain/SmartLoadingStatus.java index 0dc401816..8c90af1af 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/domain/SmartLoadingStatus.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/domain/SmartLoadingStatus.java @@ -2,8 +2,11 @@ package com.baiyue.firstleg.domain; /** 智能装柜状态,只允许沿此方向推进。 */ public enum SmartLoadingStatus { + /** 编辑中:可以维护货柜信息并增删未拣货明细。 */ EDITING, + /** 装柜中:已生成 PDA 拣货任务,仍可追加或调整未拣货明细。 */ LOADING, + /** 装柜完成:PDA 拣货完成后自动完成,计划、明细和货柜信息只读。 */ COMPLETED; /** 装柜完成前可维护集装箱号和航次。 */ diff --git a/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/LoadingEvidenceType.java b/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/LoadingEvidenceType.java index 7f3f4f017..74a5f40ef 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/LoadingEvidenceType.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/LoadingEvidenceType.java @@ -6,10 +6,15 @@ import java.util.Set; * 装柜证据类型。照片语义尚待产品确认,当前只固定四个步骤和一个铅封证据槽位。 */ public final class LoadingEvidenceType { + /** 装柜过程第 1 步照片。 */ public static final String PHOTO_STEP_1 = "PHOTO_STEP_1"; + /** 装柜过程第 2 步照片。 */ public static final String PHOTO_STEP_2 = "PHOTO_STEP_2"; + /** 装柜过程第 3 步照片。 */ public static final String PHOTO_STEP_3 = "PHOTO_STEP_3"; + /** 装柜过程第 4 步照片。 */ public static final String PHOTO_STEP_4 = "PHOTO_STEP_4"; + /** 柜门铅封或封条证据。 */ public static final String SEAL = "SEAL"; public static final Set VALUES = Set.of(PHOTO_STEP_1, PHOTO_STEP_2, PHOTO_STEP_3, PHOTO_STEP_4, SEAL); diff --git a/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/PickingStatus.java b/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/PickingStatus.java index b0b9fb351..98b0cb71b 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/PickingStatus.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/loading/domain/PickingStatus.java @@ -1,8 +1,11 @@ package com.baiyue.firstleg.loading.domain; public final class PickingStatus { + /** PDA 拣货尚未开始。 */ public static final String PENDING = "PENDING"; + /** PDA 正在执行拣货。 */ public static final String IN_PROGRESS = "IN_PROGRESS"; + /** PDA 拣货已完成。 */ public static final String COMPLETED = "COMPLETED"; private PickingStatus() {} } diff --git a/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java b/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java index b5193dfee..45ce9cc73 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/service/InboundMeasurementService.java @@ -28,9 +28,13 @@ import java.util.Set; /** 平台端入库测量、OCR 修正、重量确认和提交审核应用服务。 */ @Service public class InboundMeasurementService { + /** 测量批次已提交,等待测量审核。 */ private static final String STATUS_SUBMITTED = "SUBMITTED"; + /** OCR 或人工修正的重量已确认,可参与计费。 */ private static final String WEIGHT_CONFIRMED = "CONFIRMED"; + /** OCR 已识别到有效重量,等待人工确认。 */ private static final String WEIGHT_PENDING_CONFIRM = "PENDING_CONFIRM"; + /** OCR 结果无效或不完整,必须人工录入或修正。 */ private static final String WEIGHT_NEEDS_MANUAL = "NEEDS_MANUAL"; /** 测量完成后的默认普通托盘类型;实际拆托和库位占用由提交编排服务执行。 */ private static final String RECOMMENDED_PALLET_TYPE = "STANDARD"; diff --git a/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java b/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java index f586c0416..e7abff234 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/service/MeasurementBatchService.java @@ -26,9 +26,13 @@ import java.util.Set; */ @Service public class MeasurementBatchService { + /** 后台人工录入的测量来源。 */ static final String SOURCE_MANUAL = "MANUAL"; + /** 第三方设备或开放接口回传的测量来源。 */ static final String SOURCE_THIRD_PARTY = "THIRD_PARTY"; + /** 测量草稿,可继续编辑。 */ static final String STATUS_DRAFT = "DRAFT"; + /** 已接收第三方测量数据,待平台提交审核。 */ static final String STATUS_RECEIVED = "RECEIVED"; static final BigDecimal VOLUME_WEIGHT_FACTOR = new BigDecimal("167"); static final String CALCULATION_RULE_VERSION = "V1_CBM_CEILING_4_GIRTH_L2WH"; diff --git a/firstleg/src/main/java/com/baiyue/firstleg/split/domain/PreloadStatus.java b/firstleg/src/main/java/com/baiyue/firstleg/split/domain/PreloadStatus.java index 3d9675b82..32200c3c6 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/split/domain/PreloadStatus.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/split/domain/PreloadStatus.java @@ -4,8 +4,11 @@ import java.util.Set; /** 预装清单子状态,固定为三态。 */ public final class PreloadStatus { + /** 预装清单草稿,尚未开始确认。 */ public static final String PENDING = "PENDING"; + /** 正在确认预装明细。 */ public static final String CONFIRMING = "CONFIRMING"; + /** 预装清单已确认,可进入装柜作业。 */ public static final String CONFIRMED = "CONFIRMED"; public static final Set VALUES = Set.of(PENDING, CONFIRMING, CONFIRMED); private PreloadStatus() {} diff --git a/integration-service/src/main/java/com/baiyue/integration/dto/ocr/WeightOcrImageResult.java b/integration-service/src/main/java/com/baiyue/integration/dto/ocr/WeightOcrImageResult.java index 21b99715a..d5f55cec2 100644 --- a/integration-service/src/main/java/com/baiyue/integration/dto/ocr/WeightOcrImageResult.java +++ b/integration-service/src/main/java/com/baiyue/integration/dto/ocr/WeightOcrImageResult.java @@ -17,8 +17,11 @@ public record WeightOcrImageResult( String error ) { public enum Status { + /** 已成功识别到有效重量。 */ RECOGNIZED, + /** 图片已处理,但未识别到可用重量。 */ NO_WEIGHT_FOUND, + /** 图片读取、裁切、调用供应商或解析过程失败。 */ FAILED } } diff --git a/order/src/main/java/com/baiyue/order/entity/OrderStatus.java b/order/src/main/java/com/baiyue/order/entity/OrderStatus.java index 693aaab40..971ef1ea0 100644 --- a/order/src/main/java/com/baiyue/order/entity/OrderStatus.java +++ b/order/src/main/java/com/baiyue/order/entity/OrderStatus.java @@ -2,4 +2,21 @@ package com.baiyue.order.entity; /** * 头程订单生命周期状态,约束草稿、提交、审核、受理、处理、完成及取消等状态流转。 */ -public enum OrderStatus { DRAFT, SUBMITTED, APPROVED, ACCEPTED, REJECTED, CANCELLED, PROCESSING, COMPLETED } +public enum OrderStatus { + /** 草稿:客户可继续编辑,尚未提交审核。 */ + DRAFT, + /** 已提交:等待平台审核。 */ + SUBMITTED, + /** 审核通过:可由平台接单或进入头程履约。 */ + APPROVED, + /** 已接单:平台已受理订单。 */ + ACCEPTED, + /** 审核驳回:不允许继续进入履约。 */ + REJECTED, + /** 已取消:订单生命周期终止。 */ + CANCELLED, + /** 履约中:订单正在执行头程业务。 */ + PROCESSING, + /** 已完成:订单全流程结束。 */ + COMPLETED +} diff --git a/warehouse/src/main/java/com/baiyue/warehouse/dto/WarehouseImportDtos.java b/warehouse/src/main/java/com/baiyue/warehouse/dto/WarehouseImportDtos.java index 8d70d9316..3db6d9bf4 100644 --- a/warehouse/src/main/java/com/baiyue/warehouse/dto/WarehouseImportDtos.java +++ b/warehouse/src/main/java/com/baiyue/warehouse/dto/WarehouseImportDtos.java @@ -12,8 +12,10 @@ public final class WarehouseImportDtos { @Schema(name = "WarehouseImportMode", description = "Warehouse import mode / 仓库导入模式") public enum ImportMode { @Schema(description = "Only create new rows; existing rows are reported but not modified / 仅新增,现有数据只预检分类不修改") + /** 仅新增:重复的仓库编码只提示,不修改已有仓库。 */ CREATE_ONLY, @Schema(description = "Create new rows and update existing rows without overriding contact or remark / 新增并更新,更新不覆盖联系人和备注") + /** 新增或更新:已有仓库按导入字段更新,但保留联系人和备注。 */ UPSERT }