fuliqi
2024-12-23 deb49773f332f83dafb78788bc3d9b2b39fa421c
项目库上传后端逻辑完善
5个文件已修改
100 ■■■■■ 已修改文件
business/src/main/java/com/ycl/controller/ProjectInfoController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/domain/excel/ProjectExcelTemplate.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/listener/excel/ProjectImportListener.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
start/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
business/src/main/java/com/ycl/controller/ProjectInfoController.java
@@ -156,7 +156,7 @@
     * @return
     */
    @PostMapping("/import")
    public Result importProject(@RequestPart("file") MultipartFile file) {
    public Result importProject(MultipartFile file) {
        if (file.getSize() > 100 * 1024 * 1024) {
            throw new BaseException("文件过大,文件不得超过100MB");
        }
business/src/main/java/com/ycl/domain/excel/ProjectExcelTemplate.java
@@ -1,12 +1,14 @@
package com.ycl.domain.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.common.enums.business.ImportanceTypeEnum;
import com.ycl.common.enums.business.ProjectStatusEnum;
import com.ycl.common.enums.business.ProjectTypeEnum;
import com.ycl.common.utils.excel.annotation.ExcelEnumFormat;
import com.ycl.common.utils.excel.convert.ExcelEnumConvert;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -90,12 +92,6 @@
    private String competentDepartment;
    /**
     * 项目归属地
     */
    @ExcelProperty(value = "项目归属地")
    private String projectLocation;
    /**
     * 经度
     */
    @ExcelProperty(value = "经度")
@@ -113,11 +109,11 @@
    @ExcelProperty(value = "管理归口")
    private String managementCentralization;
    /**
     * 项目申报阶段
     */
    @ExcelProperty(value = "项目申报阶段")
    private String projectApplicationPhase;
//    /**
//     * 项目申报阶段
//     */
//    @ExcelProperty(value = "项目申报阶段")
//    private String projectApplicationPhase;
    /**
     * 项目审批类型
@@ -125,11 +121,11 @@
    @ExcelProperty(value = "项目审批类型")
    private String projectApprovalType;
    /**
     * 投资目录
     */
    @ExcelProperty(value = "投资目录")
    private String investmentCatalogue;
//    /**
//     * 投资目录
//     */
//    @ExcelProperty(value = "投资目录")
//    private String investmentCatalogue;
    /**
     * 审批计划书
@@ -137,25 +133,25 @@
    @ExcelProperty(value = "审批计划书(附件名)")
    private String approvalPlan;
    /**
     * 是否立项
     */
    @ExcelProperty(value = "是否立项")
    private String isSetProject;
//    /**
//     * 是否立项
//     */
//    @ExcelProperty(value = "是否立项")
//    private String isSetProject;
    /**
     * 成立时间
     * 立项时间
     */
    @ExcelProperty(value = "成立时间")
    @ExcelProperty(value = "立项时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date setTime;
    private Date createProjectTime;
    /**
     * 赋码状态
     */
    @ExcelProperty(value = "赋码状态")
    private String assignmentStatus;
//    /**
//     * 赋码状态
//     */
//    @ExcelProperty(value = "赋码状态")
//    private String assignmentStatus;
    /**
     * 行政区划
@@ -187,7 +183,7 @@
     * 详细地址
     */
    @ExcelProperty(value = "详细地址")
    private String address;
    private String projectAddress;
    /**
     * 建设内容
@@ -231,7 +227,9 @@
    @ExcelProperty(value = "本年计划投资")
    private BigDecimal yearInvestAmount;
    @ExcelProperty("使用状态")
    /** 使用状态(0:草稿,1:提交,2:审核通过,-1:驳回) */
    private Integer usedStatus;
                                        /* 投资项目基础信息表 */
    /**
@@ -604,37 +602,48 @@
     * 是否属于《产业结构调整指导目录》下的项目
     */
    @ExcelProperty(value = "属于《产业结构调整指导目录》下的项目")
    private String belongsToIndustryAdjustmentDirectory;
    private Boolean belongsToIndustryAdjustmentDirectory;
    /**
     * 是否属于未列入《产业结构调整指导目录》的允许类项目
     */
    @ExcelProperty(value = "属于未列入《产业结构调整指导目录》的允许类项目")
    private String belongsToAllowedProjects;
    private Boolean belongsToAllowedProjects;
    /**
     * 是否属于《西部地区鼓励类产业目录》的项目
     */
    @ExcelProperty(value = "属于《西部地区鼓励类产业目录》的项目")
    private String belongsToWesternEncouragedDirectory;
    private Boolean belongsToWesternEncouragedDirectory;
    /**
     * 是否不属于产业政策禁止投资建设或实行核准、审批管理的项目
     */
    @ExcelProperty(value = "不属于产业政策禁止投资建设或实行核准、审批管理的项目")
    private String notBannedOrControlledProject;
    private Boolean notBannedOrControlledProject;
    /**
     * 填报信息是否真实
     */
    @ExcelProperty(value = "填报信息是否真实")
    private String informationIsTrue;
    private Boolean informationIsTrue;
    /**
     * 专项规划复合情况
     */
    @ExcelProperty(value = "专项规划复合情况")
    private String specialPlanningCompliance;
    /**
     * 节能审查
     */
    @ExcelProperty(value = "节能审查")
    private Boolean energyCheck;
    /**
     * 不再单独进行节能审查的类型
     */
    @ExcelProperty("不再单独进行节能审查的类型")
    private Integer noOnlyCheckType;
    /**
     * 项目能耗情况
business/src/main/java/com/ycl/listener/excel/ProjectImportListener.java
@@ -85,6 +85,7 @@
        hasData = true;
        //处理项目基础信息
        ProjectInfo projectInfo = BeanUtil.toBean(projectExcelTemplate, ProjectInfo.class);
        //TODO:项目码可能要在这里补充
        projectInfoService.checkProjectNameUnique(projectInfo);
        projectInfoService.save(projectInfo);
        //审批计划书
business/src/main/java/com/ycl/service/impl/ProjectInfoServiceImpl.java
@@ -1,6 +1,8 @@
package com.ycl.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
@@ -570,7 +572,13 @@
            }
            tempDir = Files.createTempDirectory("temp-dir").toFile();
            ZipUtil.unzip(tempZip, tempDir, StandardCharsets.ISO_8859_1);
            try {
                ZipUtil.unzip(tempZip, tempDir, CharsetUtil.CHARSET_UTF_8);
            }catch (IORuntimeException e){
                    log.error("解压失败,尝试使用GBK编码解压...");
                    ZipUtil.unzip(tempZip, tempDir, CharsetUtil.CHARSET_GBK);
            }
            Path path = tempDir.toPath();
            ProjectImportListener projectImportListener = new ProjectImportListener();
@@ -609,7 +617,7 @@
            files.forEach(attachmentFile -> {
                try {
                    //上传
                    String url = FileUploadUtils.upload(filePath, file);
                    String url = FileUploadUtils.uploadIOFile(filePath, attachmentFile);
                    //存放的文件名会加上_时间戳的后缀
                    String newName = FileUtils.getName(url);
                    attachments.add(new File()
start/src/main/resources/application.yml
@@ -64,9 +64,9 @@
  servlet:
    multipart:
      # 单个文件大小
      max-file-size: 10MB
      max-file-size: 100MB
      # 设置总上传的文件大小
      max-request-size: 20MB
      max-request-size: 100MB
  # 服务模块
  devtools:
    restart: