package com.ycl.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.domain.entity.File; import com.ycl.domain.entity.ProjectInfo; import com.ycl.system.domain.base.AbsVo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.lang.NonNull; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * 项目管理基础信息表展示 * * @author flq * @since 2024-11-22 */ @Data @ApiModel(value = "项目管理基础信息表响应数据", description = "项目管理基础信息表响应数据") public class ProjectInfoVO extends AbsVo { /** 项目名称 */ @ApiModelProperty("项目名称") private String projectName; /** 项目代码 */ @ApiModelProperty("项目代码") private String projectCode; /** 建设内容 */ @ApiModelProperty("建设内容") private String content; @ApiModelProperty("建设性质") private String constructionNature; /** 项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他) */ @ApiModelProperty("项目类型(0房屋建筑,1城市基础设施,2交通运输,3水利,4能源,5非煤矿山,6其他)") private String projectType; /** 项目状态 (0未开工,1已开工,2已竣工,3暂停) */ @ApiModelProperty("项目状态 (0未开工,1已开工,2已竣工,3暂停)") private String projectStatus; /** 资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债) */ @ApiModelProperty("资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)") private String fundType; /** 投资类别(0企业投资,1政府投资,2外商投资,3境外投资) */ @ApiModelProperty("投资类别(0企业投资,1政府投资,2外商投资,3境外投资)") private String investType; /** 项目阶段(0储备规划阶段, 1项目前期阶段, 2实施阶段, 3竣工投用阶段) */ @ApiModelProperty("项目阶段(0储备规划阶段, 1项目前期阶段, 2实施阶段, 3竣工投用阶段)") private String projectPhase; /** 标签 */ @ApiModelProperty("标签") private String tag; /** 主管部门(对应审批部门id) */ @ApiModelProperty("主管部门(对应审批部门id)") private List competentDepartmentList; private String competentDepartment; /** 行政区域 */ @ApiModelProperty("行政区域") private String area; /** 管理归口 (0基本建设(发改), 1更新改造(经信), 2单纯购置(发改), 3信息化(发改), 4其他投资) */ @ApiModelProperty("管理归口 (0基本建设(发改), 1更新改造(经信), 2单纯购置(发改), 3信息化(发改), 4其他投资)") private List managementCentralizationList; private String managementCentralization; /** 项目审批类型 */ @ApiModelProperty("项目审批类型") private String projectApprovalType; /** 重点分类 (0省重点项目, 1遂宁市重点项目, 2.射洪市重点项目, 3.一般项目) */ @ApiModelProperty("重点分类 (0省重点项目, 1遂宁市重点项目, 2.射洪市重点项目, 3.一般项目)") private String importanceType; /** 年度投资计划 */ @ApiModelProperty("年度投资计划") private String year; /** 年度投资金额 */ @ApiModelProperty("年度投资金额") private BigDecimal yearInvestAmount; /** 立项时间 */ @ApiModelProperty("立项时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createProjectTime; /** 计划开工时间 */ @ApiModelProperty("计划开工时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date planStartTime; /** 计划竣工时间 */ @ApiModelProperty("计划竣工时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date planCompleteTime; // /** 中标单位 */ // @ApiModelProperty("中标单位") // private String winUnit; // // /** 中标金额 */ // @ApiModelProperty("中标金额") // private String winAmount; // // /** 中标时间 */ // @ApiModelProperty("中标时间") // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // private Date winTime; /** 中标单位 */ @ApiModelProperty("中标单位") private List winUnitList; /** 详细地址 */ @ApiModelProperty("详细地址") private String projectAddress; /** 经度 */ @ApiModelProperty("经度") private String longitude; /** 纬度 */ @ApiModelProperty("纬度") private String latitude; /** 项目业主单位 */ @ApiModelProperty("项目业主单位") private Long projectOwnerUnit; /** 项目联系人 */ @ApiModelProperty("项目联系人") private String projectContactPerson; /** 联系方式 */ @ApiModelProperty("联系方式") private String contact; /** 更新人 */ @ApiModelProperty("更新人") private Long updateBy; /** 创建人 */ @ApiModelProperty("创建人") private Long createBy; /** 状态码 */ @ApiModelProperty("状态码") private String projectColorCode; @ApiModelProperty("赋码") private String coding; @ApiModelProperty("文件") private List fileList; private Integer usedStatus; private String remark; private Long processId; private ProjectInvestmentInfoVO projectInvestmentInfo; private ProjectInvestmentFundingVO projectInvestmentFunding; private ProjectUnitRegistrationInfoVO projectUnitRegistrationInfo; private ProjectInvestmentPolicyComplianceVO projectInvestmentPolicyCompliance; private Boolean auditRole; private String projectOwnerUnitName; public static ProjectInfoVO getVoByEntity(@NonNull ProjectInfo entity, ProjectInfoVO vo) { if(vo == null) { vo = new ProjectInfoVO(); } BeanUtils.copyProperties(entity, vo); //主管部门转成list String competentDepartment = entity.getCompetentDepartment(); if(!StringUtils.isBlank(competentDepartment)){ List list = Arrays.stream(competentDepartment.split(",")) .map(Long::parseLong) .collect(Collectors.toList()); vo.setCompetentDepartmentList(list); } //管理归口转换 String managementCentralization = entity.getManagementCentralization(); if(!StringUtils.isBlank(managementCentralization)){ vo.setManagementCentralizationList(Arrays.asList(managementCentralization.split(","))); } return vo; } //转换字符串集合字段 public static void transform(@NonNull ProjectInfoVO vo) { //主管部门转成list String competentDepartment = vo.getCompetentDepartment(); if(!StringUtils.isBlank(competentDepartment)){ List list = Arrays.stream(competentDepartment.split(",")) .map(Long::parseLong) .collect(Collectors.toList()); vo.setCompetentDepartmentList(list); } //管理归口转换 String managementCentralization = vo.getManagementCentralization(); if(!StringUtils.isBlank(managementCentralization)){ vo.setManagementCentralizationList(Arrays.asList(managementCentralization.split(","))); } } }