package cn.iocoder.yudao.module.erp.controller.admin.sale.vo.order; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @Schema(description = "管理后台 - ERP 销售订单 Response VO") @Data @ExcelIgnoreUnannotated public class ErpSaleOrderRespVO { @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17386") @ExcelProperty("编号") private Long id; @Schema(description = "销售单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "XS001") @ExcelProperty("销售单编号") private String no; @Schema(description = "销售状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty("销售状态") private Integer status; @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1724") private Long customerId; @Schema(description = "客户名称", example = "芋道") @ExcelProperty("客户名称") private String customerName; @Schema(description = "关联合同编号", example = "1") private Long contractId; @Schema(description = "合同单号", example = "HT001") @ExcelProperty("合同单号") private String contractNo; @Schema(description = "结算账户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "311.89") @ExcelProperty("结算账户编号") private Long accountId; @Schema(description = "销售员编号", example = "1888") private Long saleUserId; @Schema(description = "下单时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("下单时间") private LocalDateTime orderTime; @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15663") @ExcelProperty("合计数量") private BigDecimal totalCount; @Schema(description = "最终合计价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24906") @ExcelProperty("最终合计价格") private BigDecimal totalPrice; @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") private BigDecimal totalProductPrice; @Schema(description = "合计税额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") private BigDecimal totalTaxPrice; @Schema(description = "优惠率,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "99.88") private BigDecimal discountPercent; @Schema(description = "优惠金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") private BigDecimal discountPrice; @Schema(description = "定金金额,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "7127") private BigDecimal depositPrice; @Schema(description = "附件地址", example = "https://www.iocoder.cn") @ExcelProperty("附件地址") private String fileUrl; @Schema(description = "备注", example = "你猜") @ExcelProperty("备注") private String remark; @Schema(description = "创建人", example = "芋道") private String creator; @Schema(description = "创建人名称", example = "芋道") private String creatorName; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; @Schema(description = "订单项列表", requiredMode = Schema.RequiredMode.REQUIRED) private List items; @Schema(description = "产品信息", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("产品信息") private String productNames; // ========== 销售出库 ========== @Schema(description = "销售出库数量", example = "100.00") private BigDecimal outCount; @Schema(description = "出库状态", example = "0") private Integer outStatus; // ========== 发货通知 ========== @Schema(description = "是否已生成发货通知单", example = "false") private Boolean hasSalesNotice; @Schema(description = "是否可以生成发货通知单(有需要生产且未完成的明细时为 false)", example = "true") private Boolean canCreateSalesNotice; @Schema(description = "是否有需要生产的明细(0=否 1=是)", example = "1") private Integer needProduction; // ========== 生产关联 ========== @Schema(description = "生产状态:0-未完成,1-已完成", example = "1") private Integer productionStatus; @Schema(description = "生产完成时间") private LocalDateTime productionFinishTime; @Data public static class Item { @Schema(description = "订单项编号", example = "11756") private Long id; @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") private Long productId; @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "3113") private Long productUnitId; @Schema(description = "产品单价", example = "100.00") private BigDecimal productPrice; @Schema(description = "产品数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") @NotNull(message = "产品数量不能为空") private BigDecimal count; @Schema(description = "税率,百分比", example = "99.88") private BigDecimal taxPercent; @Schema(description = "税额,单位:元", example = "100.00") private BigDecimal taxPrice; @Schema(description = "备注", example = "随便") private String remark; // ========== 销售出库 ========== @Schema(description = "销售出库数量", example = "100.00") private BigDecimal outCount; // ========== 生产关联 ========== @Schema(description = "是否需要生产(0=否 1=是)", example = "1") private Integer needProduction; @Schema(description = "关联的 MPS 编号", example = "1024") private Long mpsId; // ========== 关联字段 ========== @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "巧克力") private String productName; @Schema(description = "产品条码", requiredMode = Schema.RequiredMode.REQUIRED, example = "A9985") private String productBarCode; @Schema(description = "产品单位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "盒") private String productUnitName; @Schema(description = "库存数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.00") private BigDecimal stockCount; // 该字段仅仅在详情和编辑时使用 } }