feat: 添加采购交易编辑DTO

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
wkc
2026-02-06 15:30:51 +08:00
parent ad369e7789
commit c1de614cb2

View File

@@ -0,0 +1,198 @@
package com.ruoyi.ccdi.domain.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 采购交易信息编辑DTO
*
* @author ruoyi
* @date 2026-02-06
*/
@Data
@Schema(description = "采购交易信息编辑")
public class CcdiPurchaseTransactionEditDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/** 采购事项ID */
@NotBlank(message = "采购事项ID不能为空")
@Size(max = 32, message = "采购事项ID长度不能超过32个字符")
@Schema(description = "采购事项ID")
private String purchaseId;
/** 采购类别 */
@NotBlank(message = "采购类别不能为空")
@Size(max = 50, message = "采购类别长度不能超过50个字符")
@Schema(description = "采购类别")
private String purchaseCategory;
/** 项目名称 */
@Size(max = 200, message = "项目名称长度不能超过200个字符")
@Schema(description = "项目名称")
private String projectName;
/** 标的物名称 */
@NotBlank(message = "标的物名称不能为空")
@Size(max = 200, message = "标的物名称长度不能超过200个字符")
@Schema(description = "标的物名称")
private String subjectName;
/** 标的物描述 */
@Schema(description = "标的物描述")
private String subjectDesc;
/** 采购数量 */
@NotNull(message = "采购数量不能为空")
@DecimalMin(value = "0.0001", message = "采购数量必须大于0")
@Schema(description = "采购数量")
private BigDecimal purchaseQty;
/** 预算金额 */
@NotNull(message = "预算金额不能为空")
@DecimalMin(value = "0.01", message = "预算金额必须大于0")
@Schema(description = "预算金额")
private BigDecimal budgetAmount;
/** 中标金额 */
@DecimalMin(value = "0.01", message = "中标金额必须大于0")
@Schema(description = "中标金额")
private BigDecimal bidAmount;
/** 实际采购金额 */
@DecimalMin(value = "0.01", message = "实际采购金额必须大于0")
@Schema(description = "实际采购金额")
private BigDecimal actualAmount;
/** 合同金额 */
@DecimalMin(value = "0.01", message = "合同金额必须大于0")
@Schema(description = "合同金额")
private BigDecimal contractAmount;
/** 结算金额 */
@DecimalMin(value = "0.01", message = "结算金额必须大于0")
@Schema(description = "结算金额")
private BigDecimal settlementAmount;
/** 采购方式 */
@NotBlank(message = "采购方式不能为空")
@Size(max = 50, message = "采购方式长度不能超过50个字符")
@Schema(description = "采购方式")
private String purchaseMethod;
/** 中标供应商名称 */
@Size(max = 200, message = "中标供应商名称长度不能超过200个字符")
@Schema(description = "中标供应商名称")
private String supplierName;
/** 供应商联系人 */
@Size(max = 50, message = "供应商联系人长度不能超过50个字符")
@Schema(description = "供应商联系人")
private String contactPerson;
/** 供应商联系电话 */
@Pattern(regexp = "^1[3-9]\\d{9}$|^0\\d{2,3}-?\\d{7,8}$", message = "供应商联系电话格式不正确")
@Schema(description = "供应商联系电话")
private String contactPhone;
/** 供应商统一信用代码 */
@Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$", message = "供应商统一信用代码格式不正确")
@Schema(description = "供应商统一信用代码")
private String supplierUscc;
/** 供应商银行账户 */
@Size(max = 50, message = "供应商银行账户长度不能超过50个字符")
@Schema(description = "供应商银行账户")
private String supplierBankAccount;
/** 采购申请日期(或立项日期) */
@NotNull(message = "采购申请日期不能为空")
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "采购申请日期")
private LocalDate applyDate;
/** 采购计划批准日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "采购计划批准日期")
private LocalDate planApproveDate;
/** 采购公告发布日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "采购公告发布日期")
private LocalDate announceDate;
/** 开标日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "开标日期")
private LocalDate bidOpenDate;
/** 合同签订日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "合同签订日期")
private LocalDate contractSignDate;
/** 预计交货日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "预计交货日期")
private LocalDate expectedDeliveryDate;
/** 实际交货日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "实际交货日期")
private LocalDate actualDeliveryDate;
/** 验收日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "验收日期")
private LocalDate acceptanceDate;
/** 结算日期 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Schema(description = "结算日期")
private LocalDate settlementDate;
/** 申请人工号 */
@NotBlank(message = "申请人工号不能为空")
@Size(max = 7, message = "申请人工号长度不能超过7个字符")
@Schema(description = "申请人工号")
private String applicantId;
/** 申请人姓名 */
@NotBlank(message = "申请人姓名不能为空")
@Size(max = 50, message = "申请人姓名长度不能超过50个字符")
@Schema(description = "申请人姓名")
private String applicantName;
/** 申请部门 */
@NotBlank(message = "申请部门不能为空")
@Size(max = 100, message = "申请部门长度不能超过100个字符")
@Schema(description = "申请部门")
private String applyDepartment;
/** 采购负责人工号 */
@Size(max = 7, message = "采购负责人工号长度不能超过7个字符")
@Schema(description = "采购负责人工号")
private String purchaseLeaderId;
/** 采购负责人姓名 */
@Size(max = 50, message = "采购负责人姓名长度不能超过50个字符")
@Schema(description = "采购负责人姓名")
private String purchaseLeaderName;
/** 采购部门 */
@Size(max = 100, message = "采购部门长度不能超过100个字符")
@Schema(description = "采购部门")
private String purchaseDepartment;
}