فهرست منبع

项目附件功能

user5 1 سال پیش
والد
کامیت
09e2169ade
27فایلهای تغییر یافته به همراه430 افزوده شده و 65 حذف شده
  1. 0 2
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/invoice/mapper/FinanceInvoiceMapper.java
  2. 0 13
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/domain/vo/FileDictVo.java
  3. 4 4
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/controller/ProgramFileDictController.java
  4. 1 1
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/domain/ProgramFileDict.java
  5. 3 3
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/mapper/ProgramFileDictMapper.java
  6. 2 2
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/mapper/xml/ProgramFileDictMapper.xml
  7. 5 5
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/ProgramFileDictService.java
  8. 1 1
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/dto/ProgramFileDictDTO.java
  9. 3 3
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/mapstruct/ProgramFileDictWrapper.java
  10. 5 5
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/controller/ProjectDictController.java
  11. 1 1
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/domain/ProgramProjectDict.java
  12. 67 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/program/configuration/projectDict/domain/vo/BusinessAttachmentDTO.java
  13. 44 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/program/configuration/projectDict/domain/vo/FileDictVo.java
  14. 11 5
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/mapper/ProjectDictMapper.java
  15. 36 7
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/mapper/xml/ProjectDictMapper.xml
  16. 77 9
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/service/ProjectDictService.java
  17. 5 1
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/service/dto/ProjectDictDto.java
  18. 32 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/controller/JyProjectController.java
  19. 2 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/domain/JyProject.java
  20. 8 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/JyProjectOutinstanceMapper.java
  21. 26 1
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/xml/JyProjectOutinstanceMapper.xml
  22. 3 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/xml/ProjectListMapper.xml
  23. 1 2
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/service/JyProjectService.java
  24. 2 0
      jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/service/dto/JyProjectDTO.java
  25. 15 0
      jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/controller/OssFileController.java
  26. 2 0
      jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/mapper/xml/OssServiceMapper.xml
  27. 74 0
      jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/service/OssService.java

+ 0 - 2
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/invoice/mapper/FinanceInvoiceMapper.java

@@ -8,8 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.assess.invoice.domain.FinanceInvoice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jeeplus.assess.invoice.service.dto.FinanceInvoiceDTO;
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 

+ 0 - 13
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/domain/vo/FileDictVo.java

@@ -1,13 +0,0 @@
-package com.jeeplus.assess.program.configuration.projectDict.domain.vo;
-
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import lombok.Data;
-
-@Data
-public class FileDictVo extends ProgramFileDict {
-
-    private String fileId;
-
-    private String requiredStage;
-
-}

+ 4 - 4
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/controller/ProgramFileDictController.java

@@ -1,13 +1,13 @@
-package com.jeeplus.assess.program.configuration.fileDict.controller;
+package com.jeeplus.business.program.configuration.fileDict.controller;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.fileDict.service.ProgramFileDictService;
-import com.jeeplus.assess.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.business.program.configuration.fileDict.service.ProgramFileDictService;
+import com.jeeplus.business.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
 import com.jeeplus.logging.annotation.ApiLog;
 import com.jeeplus.logging.constant.enums.LogTypeEnum;
 import io.swagger.annotations.Api;

+ 1 - 1
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/domain/ProgramFileDict.java

@@ -1,4 +1,4 @@
-package com.jeeplus.assess.program.configuration.fileDict.domain;
+package com.jeeplus.business.program.configuration.fileDict.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;

+ 3 - 3
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/mapper/ProgramFileDictMapper.java

@@ -1,12 +1,12 @@
-package com.jeeplus.assess.program.configuration.fileDict.mapper;
+package com.jeeplus.business.program.configuration.fileDict.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.business.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 

+ 2 - 2
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/mapper/xml/ProgramFileDictMapper.xml

@@ -2,9 +2,9 @@
 <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.jeeplus.assess.program.configuration.fileDict.mapper.ProgramFileDictMapper">
+<mapper namespace="com.jeeplus.business.program.configuration.fileDict.mapper.ProgramFileDictMapper">
 
-    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.fileDict.service.dto.ProgramFileDictDTO">
+    <resultMap id="BaseResultMap" type="com.jeeplus.business.program.configuration.fileDict.service.dto.ProgramFileDictDTO">
             <id property="id" column="id" jdbcType="VARCHAR"/>
             <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
             <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>

+ 5 - 5
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/ProgramFileDictService.java

@@ -1,4 +1,4 @@
-package com.jeeplus.assess.program.configuration.fileDict.service;
+package com.jeeplus.business.program.configuration.fileDict.service;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -6,10 +6,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.fileDict.mapper.ProgramFileDictMapper;
-import com.jeeplus.assess.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
-import com.jeeplus.assess.program.configuration.fileDict.service.mapstruct.ProgramFileDictWrapper;
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.business.program.configuration.fileDict.mapper.ProgramFileDictMapper;
+import com.jeeplus.business.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.business.program.configuration.fileDict.service.mapstruct.ProgramFileDictWrapper;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;

+ 1 - 1
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/dto/ProgramFileDictDTO.java

@@ -1,4 +1,4 @@
-package com.jeeplus.assess.program.configuration.fileDict.service.dto;
+package com.jeeplus.business.program.configuration.fileDict.service.dto;
 
 import com.jeeplus.core.service.dto.BaseDTO;
 import lombok.Data;

+ 3 - 3
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/mapstruct/ProgramFileDictWrapper.java

@@ -1,7 +1,7 @@
-package com.jeeplus.assess.program.configuration.fileDict.service.mapstruct;
+package com.jeeplus.business.program.configuration.fileDict.service.mapstruct;
 
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.business.program.configuration.fileDict.service.dto.ProgramFileDictDTO;
 import com.jeeplus.core.mapstruct.EntityWrapper;
 import org.mapstruct.Mapper;
 import org.mapstruct.ReportingPolicy;

+ 5 - 5
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/controller/ProjectDictController.java

@@ -1,9 +1,9 @@
-package com.jeeplus.assess.program.configuration.projectDict.controller;
+package com.jeeplus.business.program.configuration.projectDict.controller;
 
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo;
-import com.jeeplus.assess.program.configuration.projectDict.service.ProjectDictService;
-import com.jeeplus.assess.program.configuration.projectDict.service.dto.ProjectDictDto;
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo;
+import com.jeeplus.business.program.configuration.projectDict.service.ProjectDictService;
+import com.jeeplus.business.program.configuration.projectDict.service.dto.ProjectDictDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.http.ResponseEntity;

+ 1 - 1
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/domain/ProgramProjectDict.java

@@ -1,4 +1,4 @@
-package com.jeeplus.assess.program.configuration.projectDict.domain;
+package com.jeeplus.business.program.configuration.projectDict.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;

+ 67 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/program/configuration/projectDict/domain/vo/BusinessAttachmentDTO.java

@@ -0,0 +1,67 @@
+package com.jeeplus.business.program.configuration.projectDict.domain.vo;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+/**
+ * @author: 徐滕
+ * @version: 2023-11-22 09:11
+ */
+@Data
+public class BusinessAttachmentDTO extends BaseDTO {
+    /**
+     * 附件地址
+     */
+    private String url;
+
+    /**
+     * 文件类型(文件后缀名)
+     */
+    private String type;
+
+    /**
+     * 附件对应父节点id(记录是谁的id)
+     */
+    private String attachmentId;
+
+    /**
+     * 文件名
+     */
+    private String attachmentName;
+
+    /**
+     * 文件所属业务模块(数据字典配置)
+     */
+    private String attachmentFlag;
+
+    /**
+     * 所属模块子模块
+     */
+    private String moduleType;
+
+    /**
+     * 附件类型
+     */
+    private String attachmentType;
+
+    /**
+     * 附件大小
+     */
+    private String fileSize;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 文件描述
+     */
+    private String description;
+
+    /**
+     * 附件临时地址
+     *该属性不是实体字段
+     */
+    private String temporaryUrl;
+}

+ 44 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/program/configuration/projectDict/domain/vo/FileDictVo.java

@@ -0,0 +1,44 @@
+package com.jeeplus.business.program.configuration.projectDict.domain.vo;
+
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class FileDictVo extends ProgramFileDict {
+
+    private String fileId;
+
+    private String requiredStage;
+
+    /**
+     * 是否必填(1:必填;0:非必填)
+     */
+    private Integer mustFlag;
+
+    /**
+     * 层级(树形层级)
+     */
+    private Integer levelFlag;
+
+    /**
+     * 文件上传时间
+     */
+    private Date uploadDate;
+    /**
+     * 附件名称
+     */
+    private String attachmentName;
+
+    /**
+     * 附件地址
+     */
+    private String url;
+
+    /**
+     * 附件文件类型
+     */
+    private String workAttachmentType;
+
+}

+ 11 - 5
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/mapper/ProjectDictMapper.java

@@ -1,9 +1,9 @@
-package com.jeeplus.assess.program.configuration.projectDict.mapper;
+package com.jeeplus.business.program.configuration.projectDict.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.projectDict.domain.ProgramProjectDict;
-import com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo;
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.business.program.configuration.projectDict.domain.ProgramProjectDict;
+import com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -14,11 +14,17 @@ public interface ProjectDictMapper extends BaseMapper<ProgramProjectDict> {
 
     List<FileDictVo> parentList();
 
-    List<FileDictVo> list(@Param("type") String type, @Param("sort") String sort);
+    List<FileDictVo> list(@Param("type") String type);
 
     List<ProgramFileDict> getFileParentList(@Param("id") String id, @Param("fileIds") List<String> fileIds);
 
     List<ProgramFileDict> getFileList(@Param("id") String id, @Param("fileIds") List<String> fileIds);
 
     FileDictVo findById(@Param("id") String id);
+
+    /**
+     * 根据类型值查询父节点
+     * @return
+     */
+    List<FileDictVo> getParentList(@Param("sortList")List<String> sortList);
 }

+ 36 - 7
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/mapper/xml/ProjectDictMapper.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.jeeplus.assess.program.configuration.projectDict.mapper.ProjectDictMapper">
+<mapper namespace="com.jeeplus.business.program.configuration.projectDict.mapper.ProjectDictMapper">
 
-    <select id="parentList" resultType="com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo">
+    <select id="parentList" resultType="com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo">
         SELECT
             id AS file_id,
             create_by_id,
@@ -24,11 +24,12 @@
             ORDER BY sort
     </select>
 
-    <select id="list" resultType="com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo">
+    <select id="list" resultType="com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo">
         SELECT
             a.id,
             a.required_stage,
             b.id AS file_id,
+            b.id AS parentId,
             b.create_by_id,
             b.create_time,
             b.update_by_id,
@@ -46,11 +47,10 @@
         WHERE
             a.del_flag = 0
             AND a.attachment_project_type = #{type}
-            AND a.attachment_project_sort = #{sort}
             ORDER BY b.sort
     </select>
 
-    <select id="getFileParentList" resultType="com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict">
+    <select id="getFileParentList" resultType="com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict">
         SELECT
         *
         FROM
@@ -67,7 +67,7 @@
         ORDER BY sort
     </select>
 
-    <select id="getFileList" resultType="com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict">
+    <select id="getFileList" resultType="com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict">
         SELECT
             *
         FROM
@@ -84,7 +84,7 @@
             ORDER BY sort
     </select>
 
-    <select id="findById" resultType="com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo">
+    <select id="findById" resultType="com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo">
         SELECT
             a.id,
             a.required_stage,
@@ -108,4 +108,33 @@
             AND a.id = #{id}
     </select>
 
+    <select id="getParentList" resultType="com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo">
+        SELECT
+            id AS file_id,
+            create_by_id,
+            create_time,
+            update_by_id,
+            update_time,
+            del_flag,
+            remarks,
+            parent_id,
+            `name`,
+            type,
+            sort,
+            size
+        FROM
+            program_file_dict
+        <where>
+            del_flag = 0
+            AND parent_id = 0
+            <if test="sortList != null">
+                AND sort IN
+                <foreach collection="sortList" item="sort" index="index" open="(" close=")" separator=",">
+                    #{sort}
+                </foreach>
+            </if>
+            ORDER BY sort
+        </where>
+    </select>
+
 </mapper>

+ 77 - 9
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/service/ProjectDictService.java

@@ -1,17 +1,21 @@
-package com.jeeplus.assess.program.configuration.projectDict.service;
+package com.jeeplus.business.program.configuration.projectDict.service;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.extra.spring.SpringUtil;
-import com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict;
-import com.jeeplus.assess.program.configuration.fileDict.mapper.ProgramFileDictMapper;
-import com.jeeplus.assess.program.configuration.projectDict.domain.ProgramProjectDict;
-import com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo;
-import com.jeeplus.assess.program.configuration.projectDict.mapper.ProjectDictMapper;
-import com.jeeplus.assess.program.configuration.projectDict.service.dto.ProjectDictDto;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.google.common.collect.Lists;
+import com.jeeplus.business.program.configuration.fileDict.domain.ProgramFileDict;
+import com.jeeplus.business.program.configuration.fileDict.mapper.ProgramFileDictMapper;
+import com.jeeplus.business.program.configuration.projectDict.domain.ProgramProjectDict;
+import com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo;
+import com.jeeplus.business.program.configuration.projectDict.mapper.ProjectDictMapper;
+import com.jeeplus.business.program.configuration.projectDict.service.dto.ProjectDictDto;
+import com.jeeplus.business.project.mapper.JyProjectOutinstanceMapper;
 import com.jeeplus.common.TokenProvider;
 import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.service.dto.UserDTO;
 //import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.sys.service.dto.WorkAttachmentInfoDTO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -31,6 +35,8 @@ public class ProjectDictService {
 
     @Resource
     private ProgramFileDictMapper programFileDictMapper;
+    @Resource
+    private JyProjectOutinstanceMapper jyProjectOutinstanceMapper;
 
     /**
      * 查询
@@ -39,12 +45,15 @@ public class ProjectDictService {
      */
     public List<FileDictVo> list(ProjectDictDto projectDictDto) {
         List<FileDictVo> list = new ArrayList<>();
-        if (StringUtils.isNotEmpty(projectDictDto.getAttachmentProjectType()) && StringUtils.isNotEmpty(projectDictDto.getAttachmentProjectSort())) {
+        if (StringUtils.isNotEmpty(projectDictDto.getAttachmentProjectType())) {
             //查询父级
             List<FileDictVo> parentList = projectDictMapper.parentList();
+            for (FileDictVo fileDictVo : parentList) {
+                fileDictVo.setId(fileDictVo.getFileId());
+            }
             list.addAll(parentList);
             //查询子级
-            List<FileDictVo> dictVos = projectDictMapper.list(projectDictDto.getAttachmentProjectType(), projectDictDto.getAttachmentProjectSort());
+            List<FileDictVo> dictVos = projectDictMapper.list(projectDictDto.getAttachmentProjectType());
             list.addAll(dictVos);
         }
         return list;
@@ -138,4 +147,63 @@ public class ProjectDictService {
     public ProgramFileDict findByFileId(String id) {
         return projectDictMapper.findById(id);
     }
+
+
+    /**
+     * 查询
+     * @param projectDictDto
+     * @return
+     */
+    public List<FileDictVo> getFileDictList(ProjectDictDto projectDictDto,String projectId) {
+        List<FileDictVo> list = new ArrayList<>();
+        if (StringUtils.isNotEmpty(projectDictDto.getAttachmentProjectType())) {
+            //查询父级
+            List<FileDictVo> parentList = projectDictMapper.getParentList(projectDictDto.getSortList());
+            for (FileDictVo fileDictVo : parentList) {
+                fileDictVo.setId(fileDictVo.getFileId());
+            }
+            list.addAll(parentList);
+            //查询子级
+            List<FileDictVo> dictVos = projectDictMapper.list(projectDictDto.getAttachmentProjectType());
+            list.addAll(dictVos);
+        }
+        List<WorkAttachmentInfoDTO> fileList = Lists.newArrayList();
+        for (FileDictVo dictVo : list) {
+            if(StringUtils.isNotBlank(dictVo.getRequiredStage()) && dictVo.getRequiredStage().equals("2")){
+                dictVo.setMustFlag(1);
+            }else{
+                dictVo.setMustFlag(0);
+            }
+            if(StringUtils.isNotBlank(dictVo.getType())){
+                // 查询附件信息
+                List<WorkAttachmentInfoDTO> files = jyProjectOutinstanceMapper.getFileListByAttachmentAndModuleType(dictVo.getId(), projectId);
+                if (CollectionUtils.isNotEmpty(files)) {
+                    fileList.addAll(files);
+                }
+                //此处为子集菜单,需根据项目id和附件类型id查询对应附件信息
+                dictVo.setLevelFlag(2);
+            }else{
+                dictVo.setLevelFlag(1);
+            }
+        }
+        //对附件进行处理
+        if (CollectionUtils.isNotEmpty(fileList)) {
+            for (WorkAttachmentInfoDTO workAttachmentInfoDTO : fileList) {
+                FileDictVo info = new FileDictVo();
+                info.setId(workAttachmentInfoDTO.getId());
+                info.setParentId(workAttachmentInfoDTO.getAttachmentId());
+                info.setAttachmentName(workAttachmentInfoDTO.getAttachmentName());
+                info.setWorkAttachmentType(workAttachmentInfoDTO.getType());
+                info.setSize(workAttachmentInfoDTO.getSize());
+                info.setCreateTime(workAttachmentInfoDTO.getCreateTime());
+                info.setUrl(workAttachmentInfoDTO.getUrl());
+                //此处为子集菜单,需根据项目id和附件类型id查询对应附件信息
+                info.setLevelFlag(3);
+                list.add(info);
+            }
+        }
+
+
+        return list;
+    }
 }

+ 5 - 1
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/service/dto/ProjectDictDto.java

@@ -1,7 +1,9 @@
-package com.jeeplus.assess.program.configuration.projectDict.service.dto;
+package com.jeeplus.business.program.configuration.projectDict.service.dto;
 
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 public class ProjectDictDto {
 
@@ -15,4 +17,6 @@ public class ProjectDictDto {
 
     private String requiredStage;
 
+    private List<String> sortList;
+
 }

+ 32 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/controller/JyProjectController.java

@@ -3,6 +3,7 @@ package com.jeeplus.business.project.controller;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
 import com.jeeplus.aop.demo.annotation.DemoMode;
 import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
 import com.jeeplus.assess.program.configuration.projectList.service.dto.ContractDto;
@@ -10,6 +11,9 @@ import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramA
 import com.jeeplus.assess.program.configuration.projectList.service.dto.ProjectListDto;
 import com.jeeplus.assess.utils.FreemarkerUtil;
 import com.jeeplus.assess.workContract.domain.WorkContractInfo;
+import com.jeeplus.business.program.configuration.projectDict.domain.vo.FileDictVo;
+import com.jeeplus.business.program.configuration.projectDict.service.ProjectDictService;
+import com.jeeplus.business.program.configuration.projectDict.service.dto.ProjectDictDto;
 import com.jeeplus.business.project.domain.JyProject;
 import com.jeeplus.business.project.domain.JyProjectAudit;
 import com.jeeplus.business.project.domain.JyProjectReportsSubmit;
@@ -21,6 +25,7 @@ import com.jeeplus.business.workContractInfo.domain.JyWorkContractInfo;
 import com.jeeplus.business.workContractInfo.service.dto.JyWorkContractInfoDto;
 import com.jeeplus.common.utils.ResponseUtil;
 import com.jeeplus.logging.annotation.ApiLog;
+import com.jeeplus.utils.StringUtils;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import io.swagger.annotations.Api;
@@ -45,6 +50,8 @@ public class JyProjectController {
 
     @Resource
     private JyProjectService jyProjectService;
+    @Resource
+    private ProjectDictService projectDictService;
 
 
     /**
@@ -398,6 +405,31 @@ public class JyProjectController {
     }
 
     /**
+     * 根据项目id查询外审附件信息(归档)
+     */
+    @ApiOperation(value = "根据项目id查询外审附件信息")
+    @GetMapping(value = "/getAttachmentList")
+    public ResponseEntity<List<FileDictVo>> getAttachmentList(@RequestParam String projectId){
+        //根据项目id查询项目信息
+        JyProjectDTO project = jyProjectService.findById(projectId);
+        ProjectDictDto projectDictDto = new ProjectDictDto();
+        List<String> sortList = Lists.newArrayList();
+        sortList.add("12");
+        sortList.add("13");
+        if(StringUtils.isNotBlank(project.getContractTypeFirstValue())){
+            if(project.getContractTypeFirstValue().equals("2")){
+                sortList.add("11");
+            }
+            projectDictDto.setAttachmentProjectType(project.getContractTypeFirstValue());
+        }else{
+            projectDictDto.setAttachmentProjectType("5");
+        }
+        projectDictDto.setSortList(sortList);
+        List<FileDictVo> list = projectDictService.getFileDictList(projectDictDto,projectId);
+        return ResponseEntity.ok(list);
+    }
+
+    /**
      * 新增/修改外审
      */
     @ApiOperation(value = "新增/修改外审")

+ 2 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/domain/JyProject.java

@@ -171,6 +171,8 @@ public class JyProject extends BaseEntity implements Serializable {
     private String contractType;
     @TableField(exist = false)
     private String contractTypeFirst;
+    @TableField(exist = false)
+    private String contractTypeFirstValue;
 
     /**
      * 联系人

+ 8 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/JyProjectOutinstanceMapper.java

@@ -18,4 +18,12 @@ public interface JyProjectOutinstanceMapper extends BaseMapper<JyProjectOutinsta
     JyProjectOutinstance findByProjectId(@Param("projectId") String s);
 
     void updateOutInstanceStatus(@Param("id") String id,@Param("status") String status,@Param("exceedTimeStatus") String exceedTimeStatus);
+
+    /**
+     * 根据文件attachmentId 和moduleType 查询附件信息
+     * @param attachmentId
+     * @param moduleType
+     * @return
+     */
+    List<WorkAttachmentInfoDTO> getFileListByAttachmentAndModuleType(@Param("attachmentId")String attachmentId , @Param("moduleType")String moduleType);
 }

+ 26 - 1
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/xml/JyProjectOutinstanceMapper.xml

@@ -48,7 +48,32 @@
         update jy_project_outinstance set status=#{status},exceed_time_status=#{exceedTimeStatus} where id=#{id}
     </update>
 
-
+    <select id="getFileListByAttachmentAndModuleType" resultType="com.jeeplus.sys.service.dto.WorkAttachmentInfoDTO">
+        select
+            wa.id,
+			wa.url,
+			wa.attachment_name AS `name`,
+			wa.create_by_id AS `createBy.id`,
+			su.name AS `createBy.name`,
+			wa.create_time,
+            wa.type as "type",
+            wa.attachment_id as "attachmentId",
+            wa.attachment_name as "attachmentName",
+            wa.attachment_flag as "attachmentFlag",
+            wa.module_type as "moduleType",
+            wa.attachment_type as "attachmentType",
+            wa.file_size as "fileSize",
+            wa.sort as "sort",
+            wa.description as "description"
+		from
+		    work_attachment wa
+		left join sys_user su on su.id = wa.create_by_id
+		<where>
+            wa.del_flag = 0
+            AND wa.attachment_id = #{attachmentId}
+            AND wa.module_type = #{moduleType}
+        </where>
+    </select>
 
 
 

+ 3 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/mapper/xml/ProjectListMapper.xml

@@ -186,6 +186,9 @@
            (SELECT dv.label FROM `sys_dict_value` dv
 			LEFT JOIN sys_dict_type dt on dt.id=dv.dict_type_id
 			where dt.type='jy_contract_type_up' and wci.contract_type_first=dv.value) as contractTypeFirst,
+           (SELECT dv.value FROM `sys_dict_value` dv
+			LEFT JOIN sys_dict_type dt on dt.id=dv.dict_type_id
+			where dt.type='jy_contract_type_up' and wci.contract_type_first=dv.value) as contractTypeFirstValue,
 			cl.id as linkId,
 			cl.name as clientName,
 			cl.link_phone as phone,

+ 1 - 2
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/service/JyProjectService.java

@@ -1452,8 +1452,7 @@ public class JyProjectService {
     /**
      * 修改附件信息
      * @param list 待修改的附件列表
-     * @param userDTO 当前登录用户
-     * @param id 关联id
+     * @param userDTO 当前登录用户     * @param id 关联id
      */
     @Transactional(rollbackFor = Exception.class)
     public void updateReportsFiles(List<WorkAttachmentInfo> list, UserDTO userDTO, String id) {

+ 2 - 0
jeeplus-modules/jeeplus-business/src/main/java/com/jeeplus/business/project/service/dto/JyProjectDTO.java

@@ -175,6 +175,8 @@ public class JyProjectDTO extends BaseEntity implements Serializable {
     private String contractType;
     @TableField(exist = false)
     private String contractTypeFirst;
+    @TableField(exist = false)
+    private String contractTypeFirstValue;
 
     @TableField(exist = false)
     private String place;

+ 15 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/controller/OssFileController.java

@@ -105,6 +105,13 @@ public class OssFileController {
         return ResponseEntity.ok(list);
     }
 
+    @GetMapping("/getFileListByAttachmentIdAndModuleType")
+    @ApiOperation(value = "查询数据")
+    public List<AttachmentDTO> getFileListByAttachmentIdAndModuleType(@RequestParam("attachmentId") String attachmentId,@RequestParam("moduleType") String moduleType) {
+        List<AttachmentDTO> list = ossService.getFileListByAttachmentIdAndModuleType(attachmentId,moduleType);
+        return list;
+    }
+
     /**
      * 下载附件
      */
@@ -430,4 +437,12 @@ public class OssFileController {
         List<WorkAttachment> list = JSON.parseObject(attachmentInfo, new TypeReference<List<WorkAttachment>>() {});
         ossService.saveMsg(list,currentToken);
     }
+
+    @ApiOperation(value = "保存数据")
+    @PostMapping("/save")
+    public String save(@RequestBody List<WorkAttachment> workAttachments) {
+        String currentToken = TokenProvider.getCurrentToken();
+        String success = ossService.save(workAttachments, currentToken);
+        return success;
+    }
 }

+ 2 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/mapper/xml/OssServiceMapper.xml

@@ -66,6 +66,7 @@
             type,
             attachment_id,
             attachment_name,
+            module_type,
             attachment_flag,
             file_size,
             sort
@@ -81,6 +82,7 @@
             #{workAttachment.type},
             #{workAttachment.attachmentId},
             #{workAttachment.attachmentName},
+            #{workAttachment.moduleType},
             #{workAttachment.attachmentFlag},
             #{workAttachment.fileSize},
             #{workAttachment.sort}

+ 74 - 0
jeeplus-modules/jeeplus-public-modules/src/main/java/com/jeeplus/pubmodules/oss/service/OssService.java

@@ -127,6 +127,58 @@ public class OssService extends ServiceImpl<OssServiceMapper, WorkAttachment> {
         }
     }
 
+
+    /**
+     * 保存数据
+     * @param workAttachments
+     * @return
+     */
+    public String save(List<WorkAttachment> workAttachments,String currentToken) {
+//        String currentToken = TokenProvider.getCurrentToken();
+        if (CollectionUtil.isNotEmpty(workAttachments)) {
+            //获取当前登录人信息
+            String id = SpringUtil.getBean ( IUserApi.class ).getByToken (currentToken).getId();
+            int i = 1;
+            for (WorkAttachment workAttachment : workAttachments) {
+                //判断文件是否存在
+                /*LambdaQueryWrapper<WorkAttachment> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+                lambdaQueryWrapper.eq(WorkAttachment::getUrl, workAttachment.getUrl());
+                lambdaQueryWrapper.eq(WorkAttachment::getAttachmentId, workAttachment.getAttachmentId());*/
+                WorkAttachmentInfo workAttachmentInfo = new WorkAttachmentInfo();
+                workAttachmentInfo.setUrl(workAttachment.getUrl());
+                workAttachmentInfo.setAttachmentId(workAttachment.getAttachmentId());
+                List<WorkAttachmentInfo> list = ossServiceMapper.getByAttachmentIdAndUrlAndAttachmentFlag(workAttachmentInfo);
+                if (CollectionUtil.isNotEmpty(list)) {
+                    i++;
+                    continue;
+                }
+                log.info("开始执行保存操作,入参:{}" , JSONObject.toJSONString(workAttachments));
+                //文件后缀名赋值
+                List<String> strings = Arrays.asList(workAttachment.getUrl().split("\\."));
+                workAttachment.setType(strings.get(strings.size()-1));
+                workAttachment.setId(UUID.randomUUID().toString().replace("-",""));
+                //排序赋值
+                workAttachment.setSort(i);
+                //基础信息赋值
+                //workAttachment.getCreateBy().setId(id);
+                workAttachment.setCreateTime(new Date());
+                //workAttachment.getUpdateBy().setId(id);
+                workAttachment.setUpdateTime(new Date());
+                workAttachment.setAttachmentId(workAttachment.getAttachmentId());
+                workAttachment.setModuleType(workAttachment.getModuleType());
+                workAttachment.setDelFlag(0);
+                i++;
+
+                UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken (currentToken);
+                ossServiceMapper.insertWorkAttachment(workAttachment, userDTO);
+            }
+
+
+            log.info("保存操作执行完成");
+        }
+        return "保存完成";
+    }
+
     /**
      * 根据文件路径删除文件
      * @param url
@@ -177,6 +229,28 @@ public class OssService extends ServiceImpl<OssServiceMapper, WorkAttachment> {
     }
 
     /**
+     * 根据附件对应父节点id查询文件列表
+     * @param attachmentId
+     * @return
+     */
+    public List<AttachmentDTO> getFileListByAttachmentIdAndModuleType(String attachmentId,String moduleType) {
+
+        log.info("文件查询开始,入参:{}" , attachmentId);
+        log.info("文件查询开始,入参:{}" , moduleType);
+        QueryWrapper<WorkAttachment> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq ("a.attachment_id", attachmentId );
+        queryWrapper.eq ("a.module_type", moduleType );
+        queryWrapper.eq ("a.del_flag", "0" );
+        List<AttachmentDTO> list = ossServiceMapper.findList(queryWrapper);
+        //创建人和文件名称处理
+        if (CollectionUtil.isNotEmpty(list)) {
+            temporaryUrl(list);
+        }
+        log.info("文件查询结束,查询结果:{}" , JSONObject.toJSONString(list));
+        return list;
+    }
+
+    /**
      * 生成临时文件
      * @param list
      * @return