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("是否招商引资项目:0 不是 1 是") private String attractInvestment; @ApiModelProperty("建设性质") private String constructionNature; /** 项目类型 */ @ApiModelProperty("项目类型") private String projectType; @ApiModelProperty("项目子类型") private String projectSubType; /** 项目状态 (0未开工,1已开工,2已竣工,3暂停) */ @ApiModelProperty("项目状态 (0未开工,1已开工,2已竣工,3暂停)") private String projectStatus; /** 资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债) */ @ApiModelProperty("资金类型(0中预资金,1国债资金,2超长期国债,3地方政府专项债)") private String fundType; private List fundTypeList; /** 投资类别(0企业投资,1政府投资,2外商投资,3境外投资) */ @ApiModelProperty("投资类别(0企业投资,1政府投资,2外商投资,3境外投资)") private String investType; /** 项目阶段(1储备规划阶段, 2项目前期阶段, 3实施阶段, 4竣工投用阶段) */ @ApiModelProperty("项目阶段(1储备规划阶段, 2项目前期阶段, 3实施阶段, 4竣工投用阶段)") private String projectPhase; /** 标签 */ @ApiModelProperty("标签") private String tag; /** 主管部门(对应审批部门id) */ @ApiModelProperty("主管部门(对应审批部门id)") private String competentDepartment; @ApiModelProperty("主管部门") private String competentDepartmentName; @ApiModelProperty("主管部门联系人") /** 主管部门联系人 */ private String competentDepartmentPerson; @ApiModelProperty("主管部门联系方式") /** 主管部门联系方式 */ private String competentDepartmentPhone; /** 行政区域 */ @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; private List importanceTypeList; // /** 年度投资计划 */ // @ApiModelProperty("年度投资计划") // private String year; // // /** 年度投资金额 */ // @ApiModelProperty("年度投资金额") // private BigDecimal yearInvestAmount; /** 年度投资金额 */ @ApiModelProperty("年度投资金额") private List yearPlanList; /** 立项时间 */ @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 projectOwnerUnitName; /** 项目联系人 */ @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; @ApiModelProperty("行业主管部门") private Long industryCompetentDepartment; @ApiModelProperty("行业主管部门联系人") private String industryCompetentDepartmentPerson; @ApiModelProperty("行业主管部门联系方式") private String departmentPersonPhone; private Integer usedStatus; private String remark; private Long processId; private ProjectInvestmentInfoVO projectInvestmentInfo; private ProjectInvestmentFundingVO projectInvestmentFunding; private ProjectUnitRegistrationInfoVO projectUnitRegistrationInfo; private ProjectInvestmentPolicyComplianceVO projectInvestmentPolicyCompliance; private Boolean auditRole; public static ProjectInfoVO getVoByEntity(@NonNull ProjectInfo entity, ProjectInfoVO vo) { if(vo == null) { vo = new ProjectInfoVO(); } BeanUtils.copyProperties(entity, vo); //管理归口转换 String managementCentralization = entity.getManagementCentralization(); if(!StringUtils.isBlank(managementCentralization)){ vo.setManagementCentralizationList(Arrays.asList(managementCentralization.split(","))); } // //分类类型转换 String importanceType = entity.getImportanceType(); if (!StringUtils.isBlank(importanceType)) { vo.setImportanceTypeList(Arrays.asList(importanceType.split(","))); } //资金类型 String fundTypeList = entity.getFundType(); if (!StringUtils.isBlank(fundTypeList)) { vo.setFundTypeList(Arrays.asList(fundTypeList.split(","))); } return vo; } //转换字符串集合字段 public static void transform(@NonNull ProjectInfoVO vo) { //管理归口转换 String managementCentralization = vo.getManagementCentralization(); if(!StringUtils.isBlank(managementCentralization)){ vo.setManagementCentralizationList(Arrays.asList(managementCentralization.split(","))); } //分类类型转换 String importanceType = vo.getImportanceType(); if (!StringUtils.isBlank(importanceType)) { vo.setImportanceTypeList(Arrays.asList(importanceType.split(","))); } //资金类型 String fundTypeList = vo.getFundType(); if (!StringUtils.isBlank(fundTypeList)) { vo.setFundTypeList(Arrays.asList(fundTypeList.split(","))); } } }