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 = "OaApprovalApplicationStoragePropertyDTO", description = "房产资产入库申请DTO") public class OaApprovalApplicationStoragePropertyDTO extends OaApprovalApplicationStorageDTO { @ApiModelProperty(value = "房产资产明细列表") @Valid @Size(min = 1, message = "资产明细不能为空") private List assetItems; @Data @ApiModel(value = "PropertyAssetItemDTO", description = "房产资产明细DTO") public static class PropertyAssetItemDTO { // 资产主表字段 @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 region; @ApiModelProperty(value = "设计用途") private String designPurpose; @ApiModelProperty(value = "楼栋") private String building; @ApiModelProperty(value = "房间号") private String roomNumber; @ApiModelProperty(value = "建筑面积(平方米)") private BigDecimal constructionArea; @ApiModelProperty(value = "结构") private String structureType; @ApiModelProperty(value = "权证编号") private String certificateNumber; @ApiModelProperty(value = "建成年月") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate completionDate; @ApiModelProperty(value = "详细位置") private String detailedLocation; @ApiModelProperty(value = "省资产平台填报价值") private BigDecimal provincialPlatformValue; @ApiModelProperty(value = "安置情况") private String resettlementSituation; @ApiModelProperty(value = "是否抵押:0-否,1-是") private Boolean isMortgaged; @ApiModelProperty(value = "承租方") private String tenantName; @ApiModelProperty(value = "租金") private BigDecimal rentalAmount; @ApiModelProperty(value = "租赁期限起") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate leaseStartDate; @ApiModelProperty(value = "租赁期限止") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate leaseEndDate; } }