package cn.iocoder.yudao.module.crm.controller.admin.salesTarget.vo; import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; import cn.iocoder.yudao.module.crm.enums.DictTypeConstants; import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Schema(description = "管理后台 - CRM 销售目标 Response VO") @Data @ExcelIgnoreUnannotated public class CrmSalesTargetRespVO { @Schema(description = "编号", example = "1") @ExcelProperty("编号") private Long id; @Schema(description = "目标名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "2026 上半年销售目标") @ExcelProperty("目标名称") private String name; @Schema(description = "周期类型", example = "1") @ExcelProperty(value = "周期类型", converter = DictConvert.class) @DictFormat(DictTypeConstants.CRM_SALES_TARGET_PERIOD_TYPE) private Integer periodType; @Schema(description = "周期值,如 2026 / 2026-Q1 / 2026-07", example = "2026-Q1") @ExcelProperty("周期值") private String periodValue; @Schema(description = "周期开始时间", example = "2026-01-01 00:00:00") private LocalDateTime startTime; @Schema(description = "周期结束时间", example = "2026-03-31 23:59:59") private LocalDateTime endTime; @Schema(description = "目标维度", example = "1") @ExcelProperty(value = "目标维度", converter = DictConvert.class) @DictFormat(DictTypeConstants.CRM_SALES_TARGET_DIMENSION) private Integer targetDimension; @Schema(description = "目标用户编号(维度=个人)", example = "1") private Long targetUserId; @Schema(description = "目标用户名称", example = "张三") @ExcelProperty("目标对象") private String targetUserName; @Schema(description = "目标部门编号(维度=部门)", example = "100") private Long targetDeptId; @Schema(description = "目标部门名称", example = "销售部") private String targetDeptName; @Schema(description = "目标物料编号(维度=产品)", example = "1") private Long targetItemId; @Schema(description = "目标物料名称", example = "螺丝") private String targetItemName; @Schema(description = "合同金额目标(元)", example = "1000000") @ExcelProperty("合同金额目标") private BigDecimal contractTarget; @Schema(description = "回款金额目标(元)", example = "800000") @ExcelProperty("回款金额目标") private BigDecimal receivableTarget; @Schema(description = "商机金额目标(元)", example = "1500000") @ExcelProperty("商机金额目标") private BigDecimal businessTarget; @Schema(description = "新增客户数目标", example = "50") @ExcelProperty("新增客户数目标") private Integer customerTarget; @Schema(description = "新增合同数目标", example = "30") @ExcelProperty("新增合同数目标") private Integer contractCountTarget; @Schema(description = "实际合同金额(元)", example = "500000") @ExcelProperty("实际合同金额") private BigDecimal actualContractPrice; @Schema(description = "实际回款金额(元)", example = "300000") @ExcelProperty("实际回款金额") private BigDecimal actualReceivablePrice; @Schema(description = "实际商机金额(元)", example = "800000") @ExcelProperty("实际商机金额") private BigDecimal actualBusinessPrice; @Schema(description = "实际新增客户数", example = "20") @ExcelProperty("实际新增客户数") private Long actualCustomerCount; @Schema(description = "实际新增合同数", example = "15") @ExcelProperty("实际新增合同数") private Long actualContractCount; @Schema(description = "合同达成率(百分比)", example = "50.0") @ExcelProperty("合同达成率(%)") private BigDecimal contractRate; @Schema(description = "回款达成率(百分比)", example = "37.5") @ExcelProperty("回款达成率(%)") private BigDecimal receivableRate; @Schema(description = "商机达成率(百分比)", example = "53.3") @ExcelProperty("商机达成率(%)") private BigDecimal businessRate; @Schema(description = "新增客户数达成率(百分比)", example = "40.0") @ExcelProperty("新增客户数达成率(%)") private BigDecimal customerRate; @Schema(description = "新增合同数达成率(百分比)", example = "50.0") @ExcelProperty("新增合同数达成率(%)") private BigDecimal contractCountRate; @Schema(description = "状态", example = "1") @ExcelProperty(value = "状态", converter = DictConvert.class) @DictFormat(DictTypeConstants.CRM_SALES_TARGET_STATUS) private Integer status; @Schema(description = "备注", example = "备注") @ExcelProperty("备注") private String remark; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; @Schema(description = "创建人", example = "1") private String creator; @Schema(description = "创建人名称", example = "超级管理员") @ExcelProperty("创建人") private String creatorName; }