Browse Source

修改项目

anderx 2 years ago
parent
commit
2124194434

+ 13 - 28
yccrc-kede/pom.xml

@@ -8,12 +8,8 @@
         <version>1.0.0</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-
     <artifactId>yccrc-kede</artifactId>
-
-    <description>
-        科德项目
-    </description>
+    <description>科德项目</description>
 
     <dependencies>
         <dependency>
@@ -37,30 +33,19 @@
             <version>4.8</version>
             <scope>test</scope>
         </dependency>
-    </dependencies>
-
-    <profiles>
-        <profile>
-            <id>dev</id>
-            <properties>
-                <!-- 环境标识,需要与配置文件的名称相对应 -->
-                <profiles.active>dev</profiles.active>
-                <logging.level>debug</logging.level>
-            </properties>
-            <activation>
-                <!-- 默认环境 -->
-                <activeByDefault>true</activeByDefault>
-            </activation>
-        </profile>
-        <profile>
-            <id>prod</id>
-            <properties>
-                <profiles.active>prod</profiles.active>
-                <logging.level>warn</logging.level>
-            </properties>
-        </profile>
-    </profiles>
+        <dependency>
+            <groupId>com.deepoove</groupId>
+            <artifactId>poi-tl</artifactId>
+            <version>1.10.0</version>
+        </dependency>
 
+        <!-- 其他依赖 -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-compress</artifactId>
+            <version>1.21</version> <!-- 使用适当的版本号 -->
+        </dependency>
+    </dependencies>
     <build>
         <plugins>
             <plugin>

+ 140 - 9
yccrc-kede/src/main/java/com/yccrc/kede/controller/ent/EntProjectController.java

@@ -3,13 +3,19 @@ package com.yccrc.kede.controller.ent;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
+import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
 import com.mchange.io.FileUtils;
 import com.yccrc.common.annotation.Log;
 import com.yccrc.common.config.YccrcConfig;
+import com.yccrc.common.constant.Constants;
 import com.yccrc.common.core.controller.BaseController;
 import com.yccrc.common.core.domain.entity.SysUser;
 import com.yccrc.common.enums.BusinessType;
@@ -22,6 +28,8 @@ import com.yccrc.kede.domain.Enterprise;
 import com.yccrc.kede.domain.EnterpriseProject;
 import com.yccrc.kede.domain.EnterpriseYearInfo;
 import com.yccrc.kede.enums.AttachTypeEnum;
+import com.yccrc.kede.enums.EntIndustryTypeEnum;
+import com.yccrc.kede.enums.EntProjectTypeEnum;
 import com.yccrc.kede.service.*;
 import com.yccrc.kede.vo.ProjectHeadAddVO;
 import com.yccrc.kede.vo.ProjectQueryVO;
@@ -29,18 +37,17 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
+import java.io.*;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
@@ -197,6 +204,11 @@ public class EntProjectController extends BaseController {
         for (Integer projectId : projectIds) {
             EnterpriseProject pro = enterpriseProjectService.getById(projectId);
             if (pro != null) {
+                // 生成doc模版
+                uploadBasicInfo(projectId, pro.getEntId(), pro.getProjectYear());
+                uploadProjectInfo(projectId);
+
+
                 downloadFileName += pro.getProjectName() + "_";
                 // 企业项目申报上传文件
                 List<Attach> attachEntList = attachService.lambdaQuery()
@@ -205,8 +217,13 @@ public class EntProjectController extends BaseController {
                         .in(Attach::getFileType, "file1", "file2", "file3", "file4", "file5",
                                 "file6", "file7", "file8", "file9", "file10", "file11")
                         .list();
-
-                if (!CollectionUtil.isEmpty(attachEntList)) {
+                List<Attach> docList = attachService.lambdaQuery()
+                        .eq(Attach::getAttachType, AttachTypeEnum.DOC)
+                        .eq(Attach::getDataId, pro.getId())
+                        .in(Attach::getFileType, "doc1", "doc2")
+                        .list();
+                if (!CollectionUtil.isEmpty(attachEntList) || !CollectionUtil.isEmpty(docList)) {
+                    attachEntList.addAll(docList);
                     logger.info("打包企业资料");
                     ArrayList<String> fileList = new ArrayList<>();
                     for (Attach attach : attachEntList) {
@@ -250,4 +267,118 @@ public class EntProjectController extends BaseController {
         IOUtils.write(data, response.getOutputStream());
     }
 
+    public void uploadBasicInfo(Integer projectId, Integer entId, String projectYear) throws IOException {
+        EnterpriseYearInfo one = enterpriseYearInfoService.getOne(new LambdaQueryWrapper<EnterpriseYearInfo>()
+                .eq(EnterpriseYearInfo::getProjectYear, projectYear)
+                .eq(EnterpriseYearInfo::getEntId, entId)
+        );
+        ProjectQueryVO project = new ProjectQueryVO();
+        project.setEntId(entId);
+        project.setYear(projectYear);
+        Page<EnterpriseProject> list = enterpriseProjectService.selectList(project);
+
+        // 封装数据
+        Map<String, Object> params = new HashMap<>();
+        params.put("one", one);
+        params.put("list", list.getRecords());
+        // 单选按钮
+        params.put("innovateFlag", (one.getInnovateFlag() != null && one.getInnovateFlag()) ? "是" : "否");
+        params.put("smallFlag", (one.getSmallFlag() != null && one.getSmallFlag()) ? "是" : "否");
+        params.put("techFlag", (one.getTechFlag() != null && one.getTechFlag()) ? "是" : "否");
+        // 时间
+        params.put("techStartDate", StringUtils.isNotEmpty(one.getTechStartDate())
+                ? one.getTechStartDate().replaceAll("(\\d{4})-(\\d{2})-(\\d{2})", "$1年$2月$3日")
+                : "");
+        params.put("techEndDate", StringUtils.isNotEmpty(one.getTechEndDate())
+                ? one.getTechEndDate().replaceAll("(\\d{4})-(\\d{2})-(\\d{2})", "$1年$2月$3日")
+                : "");
+        // 图片
+        params.put("image", Pictures
+                .ofUrl(one.getTechLicense())
+                .size(300, 240)
+                .create());
+        try {
+            upload("加计扣除基本信息表.doc", "001.docx", projectId, "doc1", params);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public void uploadProjectInfo(Integer projectId) {
+        EnterpriseProject one = enterpriseProjectService.getOne(new LambdaQueryWrapper<EnterpriseProject>()
+                .eq(EnterpriseProject::getId, projectId));
+        if (one.getProjectJson() == null || "".equals(one.getProjectJson()) || "[]".equals(one.getProjectJson())) {
+            one.setProjectJson(JSON.toJSONString(Collections.singletonList(new ProjectHeadAddVO())));
+        }
+        if (StringUtils.isNotEmpty(one.getProjectJson())) {
+            one.setHeadAddVOList(JSON.parseArray(one.getProjectJson(), ProjectHeadAddVO.class));
+        }
+        Map<String, Object> params = new HashMap<>();
+        params.put("one", one);
+        params.put("list", one.getHeadAddVOList());
+        // 单选按钮
+        params.put("innovateFlag", (one.getDevelopFlag() != null && one.getDevelopFlag()) ? "成功" : "失败");
+        params.put("industry", (one.getIndustry() != null && one.getIndustry()) ? "是" : "否");
+        // 时间
+        params.put("projectDate", StringUtils.isNotEmpty(one.getProjectDate())
+                ? one.getProjectDate().replaceAll("(\\d{4})-(\\d{2})-(\\d{2})", "$1年$2月$3日")
+                : "");
+        params.put("projectStartDate", StringUtils.isNotEmpty(one.getProjectStartDate())
+                ? one.getProjectStartDate().replaceAll("(\\d{4})-(\\d{2})-(\\d{2})", "$1年$2月$3日")
+                : "");
+        params.put("projectEndDate", StringUtils.isNotEmpty(one.getProjectEndDate())
+                ? one.getProjectEndDate().replaceAll("(\\d{4})-(\\d{2})-(\\d{2})", "$1年$2月$3日")
+                : "");
+        params.put("projectType", EntProjectTypeEnum.getParse(one.getProjectType()));
+        params.put("industryType", EntIndustryTypeEnum.getParse(one.getIndustryType()));
+        try {
+            upload("企业研发项目情况表.doc", "002.docx", projectId, "doc2", params);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public Result<Attach> upload(String fileName, String templateName, Integer dataId, String fileType, Map<String, Object> params) throws IOException {
+        String suffix = "doc";
+        String fileKey = IdUtil.fastSimpleUUID() + "." + suffix;
+        String uploadPath = YccrcConfig.getUploadPath();
+        FileUtil.mkdir(uploadPath);
+        String dest = uploadPath + fileKey;
+
+        Resource resource = new ClassPathResource("templates/" + templateName);
+        InputStream inputStream = resource.getInputStream();
+        // 动态表单插件设置
+        LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
+        Configure config = Configure.builder()
+                .bind("list", policy).build();
+        // 数据填充
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, config).render(params);
+        OutputStream outputStream = Files.newOutputStream(Paths.get(dest));
+        template.write(outputStream);
+
+        // 先移除后添加
+        attachService.remove(new LambdaQueryWrapper<Attach>()
+                .eq(Attach::getDataId, dataId)
+                .eq(Attach::getFileType, fileType)
+                .eq(Attach::getAttachType, AttachTypeEnum.DOC)
+        );
+
+        Attach attach = new Attach();
+        //保存数据信息至数据库
+        attach.setFileName(fileName);
+        attach.setFileSize(0L);
+        attach.setFileKey(fileKey);
+        attach.setUrl(YccrcConfig.getDomain() + Constants.RESOURCE_PREFIX + "/upload/" + fileKey);
+        attach.setDataId(dataId);
+        attach.setFileType(fileType);
+        attach.setAttachType(AttachTypeEnum.DOC);
+        try {
+            attach.setCreateBy(super.getUsername());
+        } catch (Exception e) {
+
+        }
+        attachService.save(attach);
+        return new Result<Attach>().ok(attach);
+    }
+
 }

+ 4 - 3
yccrc-kede/src/main/java/com/yccrc/kede/domain/EnterpriseProject.java

@@ -18,9 +18,6 @@ import java.util.List;
 @Data
 public class EnterpriseProject extends BaseEntity {
 
-    // 项目负责人以研发人员
-    @TableField(exist = false)
-    List<ProjectHeadAddVO> headAddVOList = new ArrayList<>();
     @TableId
     private Integer id;
     /**
@@ -150,8 +147,12 @@ public class EnterpriseProject extends BaseEntity {
     // 财务百分比
     @TableField(exist = false)
     private String finRate;
+    // 研发人员数
     @TableField(exist = false)
     private int techPersons;
+    // 项目负责人以研发人员
+    @TableField(exist = false)
+    List<ProjectHeadAddVO> headAddVOList = new ArrayList<>();
 
     public int getTechNum() {
         int success = 0;

+ 4 - 1
yccrc-kede/src/main/java/com/yccrc/kede/enums/AttachTypeEnum.java

@@ -9,5 +9,8 @@ public enum AttachTypeEnum {
 	PROJECT,
 	
 	/**财务资料附件*/
-	FINACIAL;
+	FINACIAL,
+
+	/**基础文档资料*/
+	DOC;
 }

+ 56 - 0
yccrc-kede/src/main/java/com/yccrc/kede/enums/EntIndustryTypeEnum.java

@@ -0,0 +1,56 @@
+package com.yccrc.kede.enums;
+
+/**
+ * @author zhiqiang.peng
+ * @date 2023/8/31
+ */
+public enum EntIndustryTypeEnum {
+
+    LASER(1, "激光"),
+    NEW_DISPLAY(2, "新型显示"),
+    NEW_MOBILE(3, "新一代移动通信"),
+    CNC_MACHINE_TOOL(4, "数控机床"),
+    GEOSPATIAL_INFO(5, "地球空间信息"),
+    SCALE(6, "半导体及规模集成电路"),
+    OUTSOURCING(7, "软件及服务外包"),
+    ENERGY(8, "新能源"),
+    MATERIAL(9, "新材料"),
+    POWER(10, "新动力汽车"),
+    BIOMEDICINE(11, "生物医药"),
+    MODERN_LOGISTICS(12, "现代物流"),
+    ANIME(13, "动漫"),
+    PROTECTION(14, "节能环保装备"),
+    FINANCIAL(15, "金融服务");
+
+    private Integer code;
+    private String desc;
+
+    EntIndustryTypeEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    EntIndustryTypeEnum() {
+    }
+
+    public static String getParse(Integer code) {
+        if (code == null) {
+            return "";
+        }
+        for (EntIndustryTypeEnum value : EntIndustryTypeEnum.values()) {
+            if (value.getCode() == code) {
+                return value.getDesc();
+            }
+        }
+        return "";
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+}

+ 45 - 0
yccrc-kede/src/main/java/com/yccrc/kede/enums/EntProjectTypeEnum.java

@@ -0,0 +1,45 @@
+package com.yccrc.kede.enums;
+
+/**
+ * 项目类型 1:自主研发 2:委托研发 3:合作研发 4:自主研发(含委托研发)
+ *
+ * @author zhiqiang.peng
+ * @date 2023/8/31
+ */
+public enum EntProjectTypeEnum {
+    AUTONOMY(1, "自主研发"),
+    ENTRUST(2, "委托研发"),
+    COOPERATION(3, "合作研发"),
+    SEMIAUTONOMOUS(4, "自主研发(含委托研发)");
+
+    private Integer code;
+    private String desc;
+
+    EntProjectTypeEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    EntProjectTypeEnum() {
+    }
+
+    public static String getParse(Integer code) {
+        if (code == null) {
+            return "";
+        }
+        for (EntProjectTypeEnum value : EntProjectTypeEnum.values()) {
+            if (value.getCode() == code) {
+                return value.getDesc();
+            }
+        }
+        return "";
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 12 - 7
yccrc-kede/src/main/java/com/yccrc/kede/service/impl/EnterpriseServiceImpl.java

@@ -234,15 +234,20 @@ public class EnterpriseServiceImpl extends ServiceImpl<EnterpriseMapper, Enterpr
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         String nowDate = format.format(new Date());
         // 修改账户为正常
-        if (nowDate.compareTo(enterprise.getEndDate()) > 0) {
+        if (nowDate.compareTo(enterprise.getEndDate()) <= 0) {
+            this.lambdaUpdate()
+                    .set(Enterprise::getStartDate, enterprise.getStartDate())
+                    .set(Enterprise::getEndDate, enterprise.getEndDate())
+                    .set(!expired, Enterprise::getEntState, 2)    //已过期企业更新为服务中
+                    .eq(Enterprise::getId, enterprise.getId()).update();
             userService.lambdaUpdate().set(SysUser::getStatus, UserConstants.NORMAL).eq(SysUser::getScopeId, enterprise.getId()).update();
+        } else {
+            this.lambdaUpdate()
+                    .set(Enterprise::getEntState, 3)
+                    .eq(Enterprise::getId, enterprise.getId()).update();
+            userService.lambdaUpdate().set(SysUser::getStatus, UserConstants.USER_DISABLE).eq(SysUser::getScopeId, enterprise.getId()).update();
         }
-
-        return this.lambdaUpdate()
-                .set(Enterprise::getStartDate, enterprise.getStartDate())
-                .set(Enterprise::getEndDate, enterprise.getEndDate())
-                .set(!expired && ori.getEntState() == 3, Enterprise::getEntState, 2)    //已过期企业更新为服务中
-                .eq(Enterprise::getId, enterprise.getId()).update();
+        return true;
     }
 
     @Override

BIN
yccrc-kede/src/main/resources/templates/001.docx


BIN
yccrc-kede/src/main/resources/templates/002.docx