package com.ruoyi.system.dto.asset; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.format.annotation.DateTimeFormat; import javax.validation.Valid; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.math.BigDecimal; import java.time.LocalDate; import java.util.List; /** * 通用资产入库申请DTO * * @author CodeBuddy * @since 2025-09-17 */ @Data @EqualsAndHashCode(callSuper = true) @ApiModel(value = "OaApprovalApplicationStorageGeneralDTO", description = "通用资产入库申请DTO") public class OaApprovalApplicationStorageGeneralDTO extends OaApprovalApplicationStorageDTO { @ApiModelProperty(value = "通用资产明细列表") @Valid @Size(min = 1, message = "资产明细不能为空") private List assetItems; @Data @ApiModel(value = "GeneralAssetItemDTO", description = "通用资产明细DTO") public static class GeneralAssetItemDTO { // 资产主表字段 @ApiModelProperty(value = "资产原编码") private String assetOriginalCode; @ApiModelProperty(value = "资产名称") @NotBlank(message = "资产名称不能为空") private String assetName; @ApiModelProperty(value = "规格型号") private String specificationModel; @ApiModelProperty(value = "计量单位") @NotBlank(message = "计量单位不能为空") private String measurementUnit; @ApiModelProperty(value = "数量") @NotNull(message = "数量不能为空") private BigDecimal quantity; @ApiModelProperty(value = "单价") @NotNull(message = "单价不能为空") private BigDecimal unitPrice; @ApiModelProperty(value = "使用年限(年)") private Integer usefulLife; @ApiModelProperty(value = "权属单位/部门ID") private Integer ownershipDeptId; @ApiModelProperty(value = "使用人") private String userName; @ApiModelProperty(value = "使用部门/位置ID") private Integer useDeptId; @ApiModelProperty(value = "仓库ID") private Integer warehouseId; @ApiModelProperty(value = "仓库名称") private String warehouseName; @ApiModelProperty(value = "所在位置") private String address; @ApiModelProperty(value = "资产状态") private String assetStatus; @ApiModelProperty(value = "备注") private String remarks; @ApiModelProperty(value = "入账状态") private String accountingStatus; @ApiModelProperty(value = "入账时间") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate accountingDate; @ApiModelProperty(value = "会计凭证号") private String accountingVoucherNo; @ApiModelProperty(value = "会计科目") private String accountingSubject; @ApiModelProperty(value = "入账金额") private BigDecimal accountingAmount; // 通用资产扩展表字段 @ApiModelProperty(value = "供应商名称") private String supplierName; @ApiModelProperty(value = "采购日期") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate purchaseDate; @ApiModelProperty(value = "保修期(月)") private Integer warrantyPeriod; @ApiModelProperty(value = "保修到期日期") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate warrantyExpireDate; @ApiModelProperty(value = "折旧方法") private String depreciationMethod; @ApiModelProperty(value = "折旧率") private BigDecimal depreciationRate; @ApiModelProperty(value = "净值") private BigDecimal netValue; @ApiModelProperty(value = "维护周期(月)") private Integer maintenanceCycle; @ApiModelProperty(value = "上次维护日期") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate lastMaintenanceDate; @ApiModelProperty(value = "下次维护日期") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate nextMaintenanceDate; } }