瀏覽代碼

评估的客户、合同、项目管理代码迁移

lizhenhao 1 年之前
父節點
當前提交
10b67e9927
共有 100 個文件被更改,包括 8419 次插入34 次删除
  1. 7 0
      jeeplus-common/jeeplus-common-core/src/main/java/com/jeeplus/common/excel/ExportMode.java
  2. 11 32
      jeeplus-modules/jeeplus-assess/pom.xml
  3. 0 2
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/JeeplusAssessApplication.java
  4. 139 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/controller/ProgramFileDictController.java
  5. 48 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/domain/ProgramFileDict.java
  6. 26 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/mapper/ProgramFileDictMapper.java
  7. 51 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/mapper/xml/ProgramFileDictMapper.xml
  8. 55 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/ProgramFileDictService.java
  9. 46 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/dto/ProgramFileDictDTO.java
  10. 15 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/fileDict/service/mapstruct/ProgramFileDictWrapper.java
  11. 72 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/controller/ProjectDictController.java
  12. 25 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/domain/ProgramProjectDict.java
  13. 13 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/domain/vo/FileDictVo.java
  14. 24 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/mapper/ProjectDictMapper.java
  15. 111 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/mapper/xml/ProjectDictMapper.xml
  16. 138 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/service/ProjectDictService.java
  17. 18 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectDict/service/dto/ProjectDictDto.java
  18. 528 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/controller/ProjectListController.java
  19. 183 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramArchive.java
  20. 88 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramAudit.java
  21. 30 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramAuditAssessPeople.java
  22. 45 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramMembers.java
  23. 425 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramProjectListInfo.java
  24. 30 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramProjectListLink.java
  25. 23 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramProjectListMember.java
  26. 31 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramReportNo.java
  27. 25 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramArchiveMapper.java
  28. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramAuditAssessPeopleMapper.java
  29. 20 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramAuditMapper.java
  30. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramMembersMapper.java
  31. 23 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramReportNoMapper.java
  32. 13 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProjectLinkMapper.java
  33. 43 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProjectListMapper.java
  34. 14 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProjectMemberMapper.java
  35. 174 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramArchiveMapper.xml
  36. 30 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramAuditAssessPeopleMapper.xml
  37. 107 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramAuditMapper.xml
  38. 27 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramMembersMapper.xml
  39. 34 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramReportNoMapper.xml
  40. 9 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProjectLinkMapper.xml
  41. 649 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProjectListMapper.xml
  42. 9 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProjectMemberMapper.xml
  43. 14 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/ProgramMembersService.java
  44. 1476 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/ProjectListService.java
  45. 14 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ContractDto.java
  46. 177 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ExportFileDto.java
  47. 231 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramArchiveDto.java
  48. 28 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramAuditAssessPeopleDto.java
  49. 104 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramAuditDto.java
  50. 45 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramMembersDto.java
  51. 32 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramReportNoDto.java
  52. 165 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProjectListDto.java
  53. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramArchiveWrapper.java
  54. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramAuditAssessPeopleWrapper.java
  55. 15 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramAuditWrapper.java
  56. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramMembersWrapper.java
  57. 141 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/controller/ProgramTypeDictController.java
  58. 38 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/domain/ProgramTypeDict.java
  59. 30 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/mapper/ProgramTypeDictMapper.java
  60. 75 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/mapper/xml/ProgramTypeDictMapper.xml
  61. 71 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/service/ProgramTypeDictService.java
  62. 43 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/service/dto/ProgramTypeDictDTO.java
  63. 15 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/service/mapstruct/ProgramTypeDictWrapper.java
  64. 122 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/controller/ProgramServiceTypeController.java
  65. 46 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/domain/ProgramServiceType.java
  66. 28 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/mapper/ProgramServiceTypeMapper.java
  67. 80 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/mapper/xml/ProgramServiceTypeMapper.xml
  68. 80 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/service/ProgramServiceTypeService.java
  69. 50 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/service/dto/ProgramServiceTypeDTO.java
  70. 15 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/service/mapstruct/ProgramServiceTypeWrapper.java
  71. 60 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/controller/ProofreadInfoController.java
  72. 68 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/controller/ProofreadIssuedController.java
  73. 90 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/controller/ProofreadTypeController.java
  74. 54 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadDetail.java
  75. 43 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadInfo.java
  76. 137 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadIssued.java
  77. 41 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadType.java
  78. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadDetailMapper.java
  79. 14 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadInfoMapper.java
  80. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadIssuedMapper.java
  81. 17 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadTypeMapper.java
  82. 48 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadDetailMapper.xml
  83. 33 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadInfoMapper.xml
  84. 72 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadIssuedMapper.xml
  85. 38 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadTypeMapper.xml
  86. 113 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadInfoService.java
  87. 67 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadIssuedService.java
  88. 105 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadTypeForTreeDataService.java
  89. 132 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadTypeService.java
  90. 80 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/dto/ProofreadInfoDto.java
  91. 25 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/utils/FreemarkerUtil.java
  92. 61 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/utils/ResponseUtil.java
  93. 212 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/controller/WorkClientController.java
  94. 31 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientBank.java
  95. 161 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientInfo.java
  96. 14 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientJobTypeInfo.java
  97. 56 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientLinkman.java
  98. 12 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/dto/PageInfoDto.java
  99. 22 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/dto/WorkClientInfosDto.java
  100. 0 0
      jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/mapper/WorkClientBankMapper.java

+ 7 - 0
jeeplus-common/jeeplus-common-core/src/main/java/com/jeeplus/common/excel/ExportMode.java

@@ -0,0 +1,7 @@
+package com.jeeplus.common.excel;
+
+public interface ExportMode {
+    String all = "all";
+    String current = "current";
+    String selected = "selected";
+}

+ 11 - 32
jeeplus-modules/jeeplus-assess/pom.xml

@@ -44,16 +44,6 @@
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.zxing</groupId>
-            <artifactId>core</artifactId>
-            <version>${zxing.core}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.zxing</groupId>
-            <artifactId>javase</artifactId>
-            <version>${zxing.core}</version>
-        </dependency>
 
         <!--添加actuator依赖-->
         <dependency>
@@ -66,23 +56,6 @@
             <artifactId>spring-boot-admin-starter-client</artifactId>
         </dependency>
 
-        <!-- 获取系统信息 -->
-        <dependency>
-            <groupId>com.github.oshi</groupId>
-            <artifactId>oshi-core</artifactId>
-            <version>${oshi.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>net.java.dev.jna</groupId>
-            <artifactId>jna-platform</artifactId>
-            <version>${jna.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>net.java.dev.jna</groupId>
-            <artifactId>jna</artifactId>
-            <version>${jna.version}</version>
-        </dependency>
-
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -122,18 +95,24 @@
         </dependency>
         <dependency>
             <groupId>org.jeeplus</groupId>
-            <artifactId>jeeplus-system</artifactId>
+            <artifactId>jeeplus-public-modules</artifactId>
             <version>${project.parent.version}</version>
         </dependency>
         <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
-        </dependency>
-        <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>
             <version>${hutool.version}</version>
         </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-spring-boot-starter</artifactId>
+            <version>${easypoi-spring-boot-starter.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+            <version>${spring.boot.version}</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 0 - 2
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/JeeplusAssessApplication.java

@@ -2,8 +2,6 @@ package com.jeeplus.assess;
 
 import com.jeeplus.core.annotation.JeeplusCloudApplication;
 import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.cache.annotation.EnableCaching;
 
 /**

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

@@ -0,0 +1,139 @@
+package com.jeeplus.assess.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.logging.annotation.ApiLog;
+import com.jeeplus.logging.constant.enums.LogTypeEnum;
+import io.swagger.annotations.Api;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Api("项目配置管理-附件类型管理")
+@RestController
+@RequestMapping(value = "/program/configuration/file")
+public class ProgramFileDictController {
+
+    @Autowired
+    private ProgramFileDictService programFileDictService;
+
+    /**
+     * 查询附件类型管理列表
+     * @param programFileDictDTO
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiLog("查询附件类型管理列表")
+    @PreAuthorize("hasAuthority('program:configuration:file:list')")
+    @GetMapping("list")
+    public ResponseEntity<IPage<ProgramFileDictDTO>> data(ProgramFileDictDTO programFileDictDTO, Page<ProgramFileDictDTO> page) throws Exception {
+        page.setSize(-1);
+        IPage<ProgramFileDictDTO> result = new Page<ProgramFileDictDTO>();
+        if(ObjectUtil.isNotEmpty(programFileDictDTO)){
+            if(StringUtils.isNotBlank(programFileDictDTO.getName())){
+                //根据name模糊查询
+                List<ProgramFileDict> programFileDictList = programFileDictService.list(new QueryWrapper<ProgramFileDict>().lambda()
+                        .like(StringUtils.isNotBlank(programFileDictDTO.getName()), ProgramFileDict::getName, programFileDictDTO.getName())
+                );
+                //获取到其中不是一级附件类型的数据
+                List<ProgramFileDict> childList = programFileDictList.stream().distinct().filter(item -> {
+                    if (!"0".equals(item.getParentId())) {
+                        return true;
+                    }
+                    return false;
+                }).collect(Collectors.toList());
+                //childList的id全部获取
+                List<String> cIdList = childList.stream().distinct().map(ProgramFileDict::getId).collect(Collectors.toList());
+                //childList的父级id全部获取
+                List<String> cupIdList = childList.stream().distinct().map(ProgramFileDict::getParentId).collect(Collectors.toList());
+                //获取到其中一级附件类型的数据的id
+                List<String> pIdList = programFileDictList.stream().distinct().filter(item -> {
+                    if ("0".equals(item.getParentId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(ProgramFileDict::getId).collect(Collectors.toList());
+                //获取pIdList下的所有子附件类型的id
+                if(CollectionUtil.isNotEmpty(pIdList)){
+                    pIdList.addAll(programFileDictService.list(new QueryWrapper<ProgramFileDict>().lambda()
+                            .in(ProgramFileDict::getParentId,pIdList)).stream().map(ProgramFileDict::getId).collect(Collectors.toList()));
+                }
+                //将获取到的这几个id集合融合到一起并去重,然后根据id查询,即可得到结果
+                cIdList.addAll(cupIdList);
+                cIdList.addAll(pIdList);
+                List<String> idList = cIdList.stream().distinct().collect(Collectors.toList());
+                if(CollectionUtil.isNotEmpty(idList)){
+                    QueryWrapper<ProgramFileDict> wrapper = new QueryWrapper<ProgramFileDict>()
+                            .in("pfd.id",idList);
+                    result = programFileDictService.findList (page,wrapper);
+                }
+            }else{
+                result = programFileDictService.findList (page,new QueryWrapper<ProgramFileDict>());
+            }
+        }
+        return ResponseEntity.ok (result);
+    }
+
+    /**
+     * 查询附件类型管理数据
+     * @param id
+     * @return
+     */
+    @ApiLog("查询附件类型管理数据")
+    @PreAuthorize ("hasAnyAuthority('program:configuration:file:view','program:configuration:file:add','program:configuration:file:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam("id") String id) {
+        ProgramFileDictDTO programFileDictDTO = programFileDictService.queryById ( id );
+        return ResponseEntity.ok (programFileDictDTO);
+    }
+
+    /**
+     * 保存附件类型
+     * @param programFileDictDTO
+     * @return
+     */
+    @ApiLog(value = "修改/新增附件类型")
+    @PreAuthorize("hasAnyAuthority('program:configuration:type:save','program:configuration:type:edit')")
+    @PostMapping("save")
+    public ResponseEntity save(@Valid @RequestBody ProgramFileDictDTO programFileDictDTO) {
+        programFileDictService.saveType(programFileDictDTO);
+        return ResponseEntity.ok ("操作成功");
+    }
+
+    /**
+     * 删除附件类型
+     * @param ids
+     * @return
+     */
+    @ApiLog(value = "删除附件类型")
+    @PreAuthorize ("hasAuthority('program:configuration:type:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        return programFileDictService.deleteByIds(ids);
+    }
+
+    /**
+     * 查询附件类型
+     * @return
+     */
+    @ApiLog("查询附件类型")
+    @GetMapping("getAllFileType")
+    public ResponseEntity getAllFileType() {
+        List<ProgramFileDict> list = programFileDictService.list ( new QueryWrapper<ProgramFileDict>().lambda().eq(ProgramFileDict::getParentId,"0") );
+        return ResponseEntity.ok (list);
+    }
+}

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

@@ -0,0 +1,48 @@
+package com.jeeplus.assess.program.configuration.fileDict.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ * @TableName program_file_dict
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("program_file_dict")
+public class ProgramFileDict extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 上级类型
+     */
+    private String parentId;
+
+    /**
+     * 附件结构名称
+     */
+    private String name;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    /**
+     * 文件类型
+     */
+    private String type;
+
+    /**
+     * 文件大小
+     */
+    private String size;
+
+    private static final long serialVersionUID = 1L;
+}

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

@@ -0,0 +1,26 @@
+package com.jeeplus.assess.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 org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.fileDict.dimain.ProgramFileDict
+ */
+@Mapper
+public interface ProgramFileDictMapper extends BaseMapper<ProgramFileDict> {
+
+    public IPage<ProgramFileDictDTO> findList(Page<ProgramFileDictDTO> page, @Param(Constants.WRAPPER) QueryWrapper<ProgramFileDict> queryWrapper);
+
+    public ProgramFileDictDTO queryById(@Param("id") String id);
+}
+
+
+
+

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

@@ -0,0 +1,51 @@
+<?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.fileDict.mapper.ProgramFileDictMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.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"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="sort" column="sort" jdbcType="VARCHAR"/>
+            <result property="type" column="type" jdbcType="VARCHAR"/>
+            <result property="size" column="size" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        pfd.id,
+        pfd.create_by,
+        pfd.create_date,
+        pfd.update_by,
+        pfd.update_date,
+        pfd.del_flag,
+        pfd.remarks,
+        pfd.parent_id,
+        pfd.name,
+        pfd.sort,
+        pfd.type,
+        pfd.size
+    </sql>
+
+    <select id="findList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_file_dict pfd
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="queryById" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_file_dict pfd
+        where pfd.del_flag = '0' and pfd.id = ${id}
+    </select>
+
+</mapper>

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

@@ -0,0 +1,55 @@
+package com.jeeplus.assess.program.configuration.fileDict.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+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.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 org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional
+public class ProgramFileDictService extends ServiceImpl<ProgramFileDictMapper, ProgramFileDict> {
+
+    @Resource
+    private ProgramFileDictMapper programFileDictMapper;
+
+    public IPage<ProgramFileDictDTO> findList(Page<ProgramFileDictDTO> page, QueryWrapper<ProgramFileDict> queryWrapper){
+        queryWrapper.eq("pfd.del_flag","0").orderByAsc("pfd.sort");
+        return programFileDictMapper.findList(page,queryWrapper);
+    }
+
+    public ProgramFileDictDTO queryById(String id) {
+
+        ProgramFileDictDTO programFileDictDTO = programFileDictMapper.queryById(id);
+
+        return programFileDictDTO;
+    }
+
+    public ResponseEntity saveType(ProgramFileDictDTO programFileDictDTO) {
+        ProgramFileDict programFileDict = ProgramFileDictWrapper.INSTANCE.toEntity(programFileDictDTO);
+        this.saveOrUpdate(programFileDict);
+        return ResponseEntity.ok("保存成功");
+    }
+
+    public ResponseEntity deleteByIds(String ids) {
+        String idArray[] =ids.split(",");
+        if(CollectionUtil.isNotEmpty(Lists.newArrayList (idArray))){
+            List<String> list = this.list(new QueryWrapper<ProgramFileDict>().lambda().in(ProgramFileDict::getParentId, Lists.newArrayList(idArray))).stream().distinct().map(ProgramFileDict::getId).collect(Collectors.toList());
+            this.removeByIds (list);
+        }
+        this.removeByIds (Lists.newArrayList (idArray));
+        return ResponseEntity.ok ("删除成功");
+    }
+}

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

@@ -0,0 +1,46 @@
+package com.jeeplus.assess.program.configuration.fileDict.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ * @TableName program_file_dict
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProgramFileDictDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 上级类型
+     */
+    private String parentId;
+
+    /**
+     * 附件结构名称
+     */
+    private String name;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    /**
+     * 文件类型
+     */
+    private String type;
+
+    /**
+     * 文件大小
+     */
+    private String size;
+
+    private static final long serialVersionUID = 1L;
+}

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

@@ -0,0 +1,15 @@
+package com.jeeplus.assess.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.core.mapstruct.EntityWrapper;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramFileDictWrapper extends EntityWrapper<ProgramFileDictDTO, ProgramFileDict>{
+
+        ProgramFileDictWrapper INSTANCE = Mappers.getMapper(ProgramFileDictWrapper.class);
+
+}

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

@@ -0,0 +1,72 @@
+package com.jeeplus.assess.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 io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Api(tags ="项目类型附件设置")
+@RestController
+@RequestMapping(value = "/program/project")
+public class ProjectDictController {
+
+    @Resource
+    private ProjectDictService projectDictService;
+
+    /**
+     * 查询
+     */
+    @ApiOperation(value = "查询")
+    @PostMapping(value = "/list")
+    public ResponseEntity<List<FileDictVo>> list(@RequestBody ProjectDictDto projectDictDto){
+        List<FileDictVo> list = projectDictService.list(projectDictDto);
+        return ResponseEntity.ok(list);
+    }
+
+    /**
+     * 新增/修改
+     */
+    @ApiOperation(value = "新增")
+    @PostMapping(value = "/save")
+    public ResponseEntity<String> save(@RequestBody ProjectDictDto projectDictDto){
+        String add = projectDictService.save(projectDictDto);
+        return ResponseEntity.ok(add);
+    }
+
+    /**
+     * 新增
+     */
+    @ApiOperation(value = "删除")
+    @DeleteMapping(value = "/deleteById")
+    public ResponseEntity<String> deleteById(String id){
+        String deleteById = projectDictService.deleteById(id);
+        return ResponseEntity.ok(deleteById);
+    }
+
+    /**
+     * 新增下拉查询
+     */
+    @ApiOperation(value = "新增下拉查询")
+    @PostMapping(value = "/getFileList")
+    public ResponseEntity<List<ProgramFileDict>> getFileList(@RequestBody ProjectDictDto projectDictDto){
+        List<ProgramFileDict> fileList = projectDictService.getFileList(projectDictDto);
+        return ResponseEntity.ok(fileList);
+    }
+
+    /**
+     * 根据id查询
+     */
+    @ApiOperation(value = "根据id查询")
+    @GetMapping(value = "/findByFileId")
+    public ResponseEntity<ProgramFileDict> findByFileId(@RequestParam String id){
+        ProgramFileDict fileDict = projectDictService.findByFileId(id);
+        return ResponseEntity.ok(fileDict);
+    }
+}

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

@@ -0,0 +1,25 @@
+package com.jeeplus.assess.program.configuration.projectDict.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName(value = "program_project_dict")
+public class ProgramProjectDict extends BaseEntity {
+
+    private String attachmentProjectType;
+
+    private String attachmentProjectSort;
+
+    private String projectType;
+
+    private String fileType;
+
+    private String fileId;
+
+    private String requiredStage;
+
+    private String attachmentProjectApprovalMoney;
+
+}

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

@@ -0,0 +1,13 @@
+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;
+
+}

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

@@ -0,0 +1,24 @@
+package com.jeeplus.assess.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 org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ProjectDictMapper extends BaseMapper<ProgramProjectDict> {
+
+    List<FileDictVo> parentList();
+
+    List<FileDictVo> list(@Param("type") String type, @Param("sort") String sort);
+
+    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);
+}

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

@@ -0,0 +1,111 @@
+<?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">
+
+    <select id="parentList" resultType="com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo">
+        SELECT
+            id AS file_id,
+            create_by,
+            create_by,
+            update_by,
+            update_date,
+            del_flag,
+            remarks,
+            parent_id,
+            `name`,
+            type,
+            sort,
+            size
+        FROM
+            program_file_dict
+        WHERE
+            del_flag = 0
+            AND parent_id = 0
+            ORDER BY sort
+    </select>
+
+    <select id="list" resultType="com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo">
+        SELECT
+            a.id,
+            a.required_stage,
+            b.id AS file_id,
+            b.create_by,
+            b.create_by,
+            b.update_by,
+            b.update_date,
+            b.del_flag,
+            b.remarks,
+            b.parent_id,
+            b.`name`,
+            b.type,
+            b.sort,
+            b.size
+        FROM
+            program_project_dict a
+            LEFT JOIN program_file_dict b ON a.file_id = b.id
+        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
+        *
+        FROM
+        program_file_dict
+        WHERE
+        del_flag = 0
+        AND parent_id = #{id}
+        <if test="fileIds != null">
+            AND id NOT IN
+            <foreach collection="fileIds" item="item" index="index" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+        ORDER BY sort
+    </select>
+
+    <select id="getFileList" resultType="com.jeeplus.assess.program.configuration.fileDict.domain.ProgramFileDict">
+        SELECT
+            *
+        FROM
+            program_file_dict
+        WHERE
+            del_flag = 0
+            AND parent_id = (SELECT parent_id FROM program_file_dict WHERE del_flag = 0 AND id = #{id})
+            <if test="fileIds != null">
+                AND id NOT IN
+                <foreach collection="fileIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            ORDER BY sort
+    </select>
+
+    <select id="findById" resultType="com.jeeplus.assess.program.configuration.projectDict.domain.vo.FileDictVo">
+        SELECT
+            a.id,
+            a.required_stage,
+            b.id AS file_id,
+            b.create_by,
+            b.create_by,
+            b.update_by,
+            b.update_date,
+            b.del_flag,
+            b.remarks,
+            b.parent_id,
+            b.`name`,
+            b.type,
+            b.sort,
+            b.size
+        FROM
+            program_project_dict a
+            LEFT JOIN program_file_dict b ON a.file_id = b.id
+        WHERE
+            a.del_flag = 0
+            AND a.id = #{id}
+    </select>
+
+</mapper>

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

@@ -0,0 +1,138 @@
+package com.jeeplus.assess.program.configuration.projectDict.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+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.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.UserUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+@Service
+public class ProjectDictService {
+
+    @Resource
+    private ProjectDictMapper projectDictMapper;
+
+    @Resource
+    private ProgramFileDictMapper programFileDictMapper;
+
+    /**
+     * 查询
+     * @param projectDictDto
+     * @return
+     */
+    public List<FileDictVo> list(ProjectDictDto projectDictDto) {
+        List<FileDictVo> list = new ArrayList<>();
+        if (StringUtils.isNotEmpty(projectDictDto.getAttachmentProjectType()) && StringUtils.isNotEmpty(projectDictDto.getAttachmentProjectSort())) {
+            //查询父级
+            List<FileDictVo> parentList = projectDictMapper.parentList();
+            list.addAll(parentList);
+            //查询子级
+            List<FileDictVo> dictVos = projectDictMapper.list(projectDictDto.getAttachmentProjectType(), projectDictDto.getAttachmentProjectSort());
+            list.addAll(dictVos);
+        }
+        return list;
+    }
+
+    /**
+     * 保存
+     * @param projectDictDto
+     * @return
+     */
+    public String save(ProjectDictDto projectDictDto) {
+        if (StringUtils.isNotEmpty(projectDictDto.getId())) {
+            return update(projectDictDto);
+        } else {
+            return add(projectDictDto);
+        }
+    }
+
+    /**
+     * 新增
+     * @param projectDictDto
+     * @return
+     */
+    public String add(ProjectDictDto projectDictDto) {
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        String id = UUID.randomUUID().toString().replace("-", "");
+        ProgramProjectDict dict = new ProgramProjectDict();
+        BeanUtils.copyProperties(projectDictDto, dict);
+        dict.setId(id);
+        dict.setCreateById(userDTO.getId());
+        dict.setCreateTime(new Date());
+        dict.setUpdateById(userDTO.getId());
+        dict.setUpdateTime(new Date());
+        dict.setDelFlag(0);
+        projectDictMapper.insert(dict);
+        return "操作成功";
+    }
+
+    /**
+     * 修改
+     * @param projectDictDto
+     * @return
+     */
+    public String update(ProjectDictDto projectDictDto) {
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        ProgramProjectDict dict = new ProgramProjectDict();
+        BeanUtils.copyProperties(projectDictDto, dict);
+        dict.setUpdateById(userDTO.getId());
+        dict.setUpdateTime(new Date());
+        dict.setDelFlag(0);
+        projectDictMapper.updateById(dict);
+        return "操作成功";
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    public String deleteById(String id) {
+        projectDictMapper.deleteById(id);
+        return "操作成功";
+    }
+
+    /**
+     * 新增附件结构信息附件名称查询
+     * @param projectDictDto
+     * @return
+     */
+    public List<ProgramFileDict> getFileList(ProjectDictDto projectDictDto) {
+        List<FileDictVo> list = list(projectDictDto);
+        if (CollectionUtil.isNotEmpty(list)) {
+            List<String> fileIds = list.stream().map(i -> i.getFileId()).collect(Collectors.toList());
+            // 根据fileId查询所属层级
+            String parentId = programFileDictMapper.selectById(projectDictDto.getFileId()).getParentId();
+            if (CollectionUtil.isNotEmpty(fileIds) && StringUtils.isNotEmpty(projectDictDto.getFileId()) && !"0".equals(parentId)) {
+                fileIds.remove(projectDictDto.getFileId());
+                return projectDictMapper.getFileList(projectDictDto.getFileId(), fileIds);
+            } else {
+                return projectDictMapper.getFileParentList(projectDictDto.getFileId(), fileIds);
+            }
+        }
+        return new ArrayList<>();
+    }
+
+    /**
+     * 根据fileId查询
+     * @param id
+     * @return
+     */
+    public ProgramFileDict findByFileId(String id) {
+        return projectDictMapper.findById(id);
+    }
+}

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

@@ -0,0 +1,18 @@
+package com.jeeplus.assess.program.configuration.projectDict.service.dto;
+
+import lombok.Data;
+
+@Data
+public class ProjectDictDto {
+
+    private String id;
+
+    private String attachmentProjectType;
+
+    private String attachmentProjectSort;
+
+    private String fileId;
+
+    private String requiredStage;
+
+}

+ 528 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/controller/ProjectListController.java

@@ -0,0 +1,528 @@
+package com.jeeplus.assess.program.configuration.projectList.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.aop.demo.annotation.DemoMode;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
+import com.jeeplus.assess.program.configuration.projectList.service.ProjectListService;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.*;
+import com.jeeplus.assess.workContract.domain.WorkContractInfo;
+import com.jeeplus.common.excel.ExcelOptions;
+import com.jeeplus.common.excel.annotation.ExportMode;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.logging.annotation.ApiLog;
+import com.jeeplus.assess.utils.FreemarkerUtil;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import com.jeeplus.core.excel.EasyPoiUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Api(tags ="项目列表管理")
+@RestController
+@RequestMapping(value = "/program/projectList")
+public class ProjectListController {
+
+    @Resource
+    private ProjectListService projectListService;
+
+    /**
+     * 新增/修改
+     */
+    @ApiOperation(value = "新增/修改")
+    @PostMapping(value = "/save")
+    public ResponseEntity<String> save(@RequestBody ProjectListDto projectListDto) throws Exception{
+        String id = projectListService.save(projectListDto,"1");
+        return ResponseEntity.ok("操作成功");
+    }
+
+    /**
+     * 2022项目-新增/修改
+     */
+    @ApiOperation(value = "新增/修改")
+    @PostMapping(value = "/save2022")
+    public ResponseEntity<String> save2022(@RequestBody ProjectListDto projectListDto) throws Exception{
+        String id = projectListService.save(projectListDto,"2022");
+        return ResponseEntity.ok("操作成功");
+    }
+
+    /**
+     * 新增/修改项目归档
+     */
+    @ApiOperation(value = "新增/修改项目归档")
+    @PostMapping(value = "/saveFormArchive")
+    public ResponseEntity saveFormArchive(@RequestBody ProgramArchiveDto programArchiveDto) throws Exception{
+        String id = projectListService.saveFormArchive(programArchiveDto);
+        return ResponseUtil.newInstance().add("businessTable", "program_archive").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 新增/修改三级校审
+     */
+    @ApiOperation(value = "新增/修改三级校审")
+    @PostMapping(value = "/saveFormThree")
+    public ResponseEntity saveFormThree(@RequestBody ProgramAuditDto programAuditDto) throws Exception{
+        String id = projectListService.saveFormThree(programAuditDto);
+        return ResponseUtil.newInstance().add("businessTable", "program_audit").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 流程保存
+     */
+    @ApiOperation(value = "流程保存")
+    @PostMapping(value = "/saveForm")
+    public ResponseEntity saveForm(@RequestBody ProjectListDto projectListDto) throws Exception{
+        String id = projectListService.save(projectListDto,"1");
+        return ResponseUtil.newInstance().add("businessTable", "program_project_list_info").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 根据id查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id查询")
+    @GetMapping(value = "/findById")
+    public ResponseEntity<ProjectListDto> save(@RequestParam String id){
+        ProjectListDto dto = projectListService.findById(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 根据id查询三级校审
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id查询三级校审")
+    @GetMapping(value = "/findByIdAudit")
+    public ResponseEntity<ProgramAuditDto> findByIdAudit(@RequestParam String id){
+        ProgramAuditDto dto = projectListService.findByIdAudit(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 根据id查询项目归档
+     * @return
+     */
+    @ApiOperation(value = "根据id查询项目归档")
+    @GetMapping(value = "/findByIdArchive")
+    public ResponseEntity<ProgramArchiveDto> findByIdArchive(@RequestParam String id){
+        ProgramArchiveDto dto = projectListService.findByIdArchive(id);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 根据id删除
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id删除")
+    @GetMapping(value = "/deleteById")
+    public ResponseEntity<String> deleteById(@RequestParam String id){
+        String s = projectListService.deleteById(id);
+        return ResponseEntity.ok(s);
+    }
+
+
+    /**
+     * 批量删除字典
+     */
+    @DemoMode
+    @ApiLog("批量删除项目信息")
+    @PreAuthorize("hasAuthority('program:registered:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        String idArray[] = ids.split ( "," );
+        for(String id: idArray){
+            projectListService.deleteById ( id );
+        }
+        return ResponseEntity.ok ( "删除信息成功!" );
+    }
+
+    /**
+     * 合同信息列表查询
+     * @param dto
+     * @param page
+     * @return
+     */
+    @ApiOperation(value = "合同信息列表查询")
+    @GetMapping(value = "/findContractPageList")
+    public ResponseEntity<IPage<WorkContractInfo>> findContractPageList(ContractDto dto, Page<WorkContractInfo> page) {
+        IPage<WorkContractInfo> pageList = projectListService.findContractPageList(dto, page);
+        return ResponseEntity.ok(pageList);
+    }
+
+    /**
+     * 根据id修改状态值status
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "根据id修改状态值status")
+    @PostMapping(value = "/updateStatusById")
+    public ResponseEntity<String> updateStatusById(@RequestBody ProjectListDto dto) {
+        String s = projectListService.updateStatusById(dto);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 根据id修改三级校审状态值status
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "根据id修改三级校审状态值status")
+    @PostMapping(value = "/updateStatusByAuditId")
+    public ResponseEntity<String> updateStatusByAuditId(@RequestBody ProjectListDto dto) {
+        String s = projectListService.updateStatusByAuditId(dto);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 根据id修改项目归档状态值status
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "根据id修改项目归档状态值status")
+    @PostMapping(value = "/updateStatusByArchiveId")
+    public ResponseEntity<String> updateStatusByArchiveId(@RequestBody ProjectListDto dto) {
+        String s = projectListService.updateStatusByArchiveId(dto);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 项目登记列表
+     * @param info
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiOperation(value = "项目登记列表")
+    @GetMapping(value = "/list")
+    public ResponseEntity<IPage<ProgramProjectListInfo>> list(ProgramProjectListInfo info, Page<ProgramProjectListInfo> page) throws Exception {
+        IPage<ProgramProjectListInfo> list = projectListService.list(page, info, "1");
+        return ResponseEntity.ok (list);
+    }
+
+    /**
+     * 项目登记列表,和上面list接口是一样的,目的时跳过list mapper接口的数据规则(比如仅部门可见、仅自己可见之类的)
+     */
+    @GetMapping(value = "/list2")
+    public ResponseEntity<IPage<ProgramProjectListInfo>> list2(ProgramProjectListInfo info, Page<ProgramProjectListInfo> page) throws Exception {
+        IPage<ProgramProjectListInfo> list = projectListService.list2(page, info, "1");
+        return ResponseEntity.ok (list);
+    }
+
+    /**
+     * 2022项目-项目登记列表
+     * @param info
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiOperation(value = "2022项目-项目登记列表")
+    @GetMapping(value = "/list2022")
+    public ResponseEntity<IPage<ProgramProjectListInfo>> list2022(ProgramProjectListInfo info, Page<ProgramProjectListInfo> page) throws Exception {
+        IPage<ProgramProjectListInfo> list = projectListService.list(page, info, "2022");
+        return ResponseEntity.ok (list);
+    }
+
+
+    @ApiLog(value = "导出项目信息")
+    @GetMapping("exportFile")
+    @ApiOperation(value = "导出项目信息")
+    public void exportFile(ProgramProjectListInfo info, Page <ProgramProjectListInfo> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+        String fileName = options.getFilename();
+        String sheetName = options.getSheetName();
+        List<ProgramProjectListInfo> result = new ArrayList<>();
+        if ( ExportMode.current.equals ( options.getMode() ) ) {
+            result = projectListService.list (page,info,"1").getRecords();
+        } else if (ExportMode.selected.equals ( options.getMode() )) {
+            result = projectListService.list (page,info,"1").getRecords().stream ( ).filter ( item ->
+                    options.getSelectIds ( ).contains ( item.getId ( ) )
+            ).collect ( Collectors.toList ( ) );
+        } else {
+            page.setSize (-1);
+            page.setCurrent (0);
+            result = projectListService.list (page,info,"1").getRecords();
+        }
+        List<ExportFileDto> exportFileDtos = projectListService.exportList(result);
+        EasyPoiUtil.exportExcel ( exportFileDtos, sheetName,  sheetName, ExportFileDto.class, fileName, response );
+
+    }
+
+
+
+
+    /**
+     * 根据项目id生成报告号
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据项目id生成报告号")
+    @GetMapping(value = "/saveReportNo")
+    public ResponseEntity<String> saveReportNo(@RequestParam("id") String id) throws Exception {
+        String s = projectListService.saveReportNo(id);
+        if (StringUtils.isNotBlank(s)) {
+            return ResponseEntity.ok("已生成报告号:"+s);
+        }else{
+            return ResponseEntity.badRequest().body("报告号生成失败");
+        }
+    }
+
+    /**
+     * 下载评估报告装订后浏览审核记录表
+     * 下载一级校审表
+     * @param response
+     * @param info
+     */
+    @RequestMapping(value="downloadFirstAuditTpl")
+    @ResponseBody
+    public void downloadFirstAuditTpl(HttpServletResponse response, ProgramProjectListInfo info)  {
+        Map data = projectListService.getAuditInfoMap(info);
+
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("firstAudit.ftl","UTF-8");
+
+            File docFile = new File("一级校审.doc");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            com.jeeplus.assess.utils.ResponseUtil.docResponse("一级校审.doc",docFile,response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            //获取tomcat的路径
+            String tomcatFilePath=System.getProperty("catalina.home");
+            //删除tomcat目录下的处理后的文件信息
+            File tomcatFile = new File(tomcatFilePath+"/bin/"+"一级校审.doc");
+            if (tomcatFile.isFile()) {
+                tomcatFile.delete();
+            }
+        }
+
+    }
+
+    /**
+     * 下载二级校审表
+     * @param response
+     * @param info
+     */
+    @RequestMapping(value="downloadSecondAuditTpl")
+    @ResponseBody
+    public void downloadSecondAuditTpl(HttpServletResponse response, ProgramProjectListInfo info)  {
+        Map data = projectListService.getAuditInfoMap(info);
+
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("secondAuditFtl.ftl","UTF-8");
+
+            File docFile = new File("二级校审.doc");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            com.jeeplus.assess.utils.ResponseUtil.docResponse("二级校审.doc",docFile,response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            //获取tomcat的路径
+            String tomcatFilePath=System.getProperty("catalina.home");
+            //删除tomcat目录下的处理后的文件信息
+            File tomcatFile = new File(tomcatFilePath+"/bin/"+"二级校审.doc");
+            if (tomcatFile.isFile()) {
+                tomcatFile.delete();
+            }
+        }
+
+    }
+
+    /**
+     * 下载三级校审表
+     * @param response
+     * @param info
+     */
+    @RequestMapping(value="downloadThirdlyAuditTpl")
+    @ResponseBody
+    public void downloadThirdlyAuditTpl(HttpServletResponse response, ProgramProjectListInfo info)  {
+        Map data = projectListService.getAuditInfoMap(info);
+
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("thirdlyAudit.ftl","UTF-8");
+
+            File docFile = new File("三级校审.doc");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            com.jeeplus.assess.utils.ResponseUtil.docResponse("三级校审.doc",docFile,response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            //获取tomcat的路径
+            String tomcatFilePath=System.getProperty("catalina.home");
+            //删除tomcat目录下的处理后的文件信息
+            File tomcatFile = new File(tomcatFilePath+"/bin/"+"三级校审.doc");
+            if (tomcatFile.isFile()) {
+                tomcatFile.delete();
+            }
+        }
+
+    }
+
+    /**
+     * 下载资产评估项目(校对)审核记录表
+     * @param response
+     * @param info
+     */
+    @RequestMapping(value="downloadProofreadAuditTpl")
+    @ResponseBody
+    public void downloadProofreadAuditTpl(HttpServletResponse response, ProgramProjectListInfo info)  {
+        Map data = projectListService.getProofreadAuditMap(info);
+
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("proofreadAudit.ftl","UTF-8");
+
+            File docFile = new File("资产评估项目(校对)审核记录表.xls");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            com.jeeplus.assess.utils.ResponseUtil.docResponse("资产评估项目(校对)审核记录表.xls",docFile,response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            //获取tomcat的路径
+            String tomcatFilePath=System.getProperty("catalina.home");
+            //删除tomcat目录下的处理后的文件信息
+            File tomcatFile = new File(tomcatFilePath+"/bin/"+"资产评估项目(校对)审核记录表.xls");
+            if (tomcatFile.isFile()) {
+                tomcatFile.delete();
+            }
+        }
+
+    }
+
+    /**
+     * 下载评估报告装订后浏览审核记录表
+     * @param response
+     * @param info
+     */
+    @RequestMapping(value="downloadAuditRecordFormAfterBindingTpl")
+    @ResponseBody
+    public void downloadAuditRecordFormAfterBindingTpl(HttpServletResponse response, ProgramProjectListInfo info)  {
+        Map data = projectListService.getAuditRecordFormAfterBindingMap(info);
+
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("auditRecordFormAfterBinding.ftl","UTF-8");
+
+            File docFile = new File("评估报告装订后浏览审核记录表.xls");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            com.jeeplus.assess.utils.ResponseUtil.docResponse("评估报告装订后浏览审核记录表.xls",docFile,response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            //获取tomcat的路径
+            String tomcatFilePath=System.getProperty("catalina.home");
+            //删除tomcat目录下的处理后的文件信息
+            File tomcatFile = new File(tomcatFilePath+"/bin/"+"评估报告装订后浏览审核记录表.xls");
+            if (tomcatFile.isFile()) {
+                tomcatFile.delete();
+            }
+        }
+    }
+
+    /**
+     * 下载报告签发表
+     * @param response
+     * @param info
+     */
+    @RequestMapping(value="downloadReportAusstellungTpl")
+    @ResponseBody
+    public void downloadReportAusstellungTpl(HttpServletResponse response, ProgramProjectListInfo info)  {
+        Map data = projectListService.downloadReportAusstellungTpl(info);
+
+
+        //模板对象
+        Template template=null;
+        //freemaker模板路径
+        File path = new File(this.getClass().getResource("/").getPath()+"/freemarker");
+        Configuration cfg = new Configuration();
+        try {
+            cfg.setDirectoryForTemplateLoading(path);
+            //选择对应的ftl文件
+            template = cfg.getTemplate("reportAusstellung.ftl","UTF-8");
+
+            File docFile = new File("报告签发单.doc");
+            FreemarkerUtil.generateFile(data,template,docFile);
+            com.jeeplus.assess.utils.ResponseUtil.docResponse("报告签发单.doc",docFile,response);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            //获取tomcat的路径
+            String tomcatFilePath=System.getProperty("catalina.home");
+            //删除tomcat目录下的处理后的文件信息
+            File tomcatFile = new File(tomcatFilePath+"/bin/"+"报告签发单.doc");
+            if (tomcatFile.isFile()) {
+                tomcatFile.delete();
+            }
+        }
+    }
+
+
+    /**
+     * 查询当前登录人所属项目组的项目
+     * @return
+     */
+    @ApiOperation(value = "查询当前登录人所属项目组的项目")
+    @GetMapping(value = "/getHaveProjectIds")
+    public ResponseEntity<List<String>> getHaveProjectIds() {
+        return projectListService.getHaveProjectIds();
+    }
+
+    @ApiOperation(value = "根据项目id以及校审等级查询三级校审详情")
+    @GetMapping(value = "/findByProIdAndLevel")
+    public ResponseEntity<ProgramAuditDto> findByProIdAndLevel(String programId, String auditLevel) {
+        return projectListService.findByProIdAndLevel(programId, auditLevel);
+    }
+}

+ 183 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramArchive.java

@@ -0,0 +1,183 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 新项目管理-项目登记-项目归档
+ * @TableName program_archive
+ */
+@Data
+@TableName(value = "program_archive")
+public class ProgramArchive extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String programId;
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 项目类型
+     */
+    private String programType;
+
+    /**
+     * 评估报告日
+     */
+    private Date evaluationReportDate;
+
+    /**
+     * 协议号
+     */
+    private String protocolNum;
+
+    /**
+     * 废旧物资评估(万元)
+     */
+    private String waystEvaluation;
+
+    /**
+     * 固定资产评估(万元)
+     */
+    private String fixedAssetsEvaluation;
+
+    /**
+     * 净资产评估
+     */
+    private String netAssetsEvaluation;
+
+    /**
+     * 租金评估(万/年)
+     */
+    private String rentEvaluation;
+
+    /**
+     * 司法鉴定
+     */
+    private String forensics;
+
+    /**
+     * 报告收费(元)
+     */
+    private String reportCharges;
+
+    /**
+     * 租金类型
+     */
+    private String rentType;
+
+    /**
+     * 当前处理人
+     */
+    private String currentDisposePerson;
+
+    /**
+     * 是否开票
+     */
+    private String isInvoice;
+
+    /**
+     * 开票日期
+     */
+    private Date invoiceDate;
+
+    /**
+     * 预估/实际收费(万元)
+     */
+    private String actualCharges;
+
+    /**
+     * 合同是否存档
+     */
+    private String isContractArchive;
+
+    /**
+     * 底稿是否完好
+     */
+    private String isPapersIntact;
+
+    /**
+     * 底稿是否归档
+     */
+    private String isPapersArchive;
+
+    /**
+     * 报销外勤天数
+     */
+    private String opsAmount;
+
+    /**
+     * 外勤是否已经报销
+     */
+    private String isOpsReimbursement;
+
+    /**
+     * 已报销金额
+     */
+    private String reimbursementAmount;
+
+    /**
+     * 未报销金额
+     */
+    private String unreimbursedAmount;
+
+    /**
+     * 报销单号
+     */
+    private String reimbursementNum;
+
+    /**
+     * 报销日期
+     */
+    private Date reimbursementDate;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 审核通过时间
+     */
+    private String auditDate;
+
+    /**
+     * 审核通过审批人id
+     */
+    private String auditUserId;
+
+    /**
+     * 签字评估师1
+     */
+    private String signatureEvaluatorFirst;
+
+    /**
+     * 签字评估师2
+     */
+    private String signatureEvaluatorSecond;
+
+    private static final long serialVersionUID = 1L;
+}

+ 88 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramAudit.java

@@ -0,0 +1,88 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 新项目管理-项目登记-三级校审
+ * @TableName program_audit
+ */
+@Data
+@TableName(value = "program_audit")
+public class ProgramAudit extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String programId;
+
+    /**
+     * 校审级别
+     */
+    private String auditLevel;
+
+    /**
+     * 审核人
+     */
+    private String auditPeople;
+
+    /**
+     * 审核通过时间
+     */
+    private Date auditDate;
+
+    /**
+     * 执行人员保留意见
+     */
+    private String retainOpinion;
+
+    /**
+     * 审核人员审核未修改意见
+     */
+    private String changeOpinion;
+
+    /**
+     * 审核意见及回复/明细表
+     */
+    private String detailOpinion;
+
+    /**
+     * 审核意见及回复/评估报告
+     */
+    private String reportOpinion;
+
+    /**
+     * 审核意见及回复/技术说明
+     */
+    private String remarksOpinion;
+
+    /**
+     * 审核意见及回复/工作底稿
+     */
+    private String workOpinion;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    private static final long serialVersionUID = 1L;
+}

+ 30 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramAuditAssessPeople.java

@@ -0,0 +1,30 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 新项目管理-项目登记-三级校审-评估人员
+ * @TableName program_audit_assess_people
+ */
+@Data
+@TableName(value = "program_audit_assess_people")
+public class ProgramAuditAssessPeople extends BaseEntity {
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 校审id
+     */
+    private String auditId;
+
+    /**
+     * 评估人员
+     */
+    private String assessPeople;
+
+    private static final long serialVersionUID = 1L;
+}

+ 45 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramMembers.java

@@ -0,0 +1,45 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 评估-项目管理-项目组成员
+ * @TableName program_members
+ */
+@TableName(value ="program_members")
+@Data
+public class ProgramMembers extends BaseEntity implements Serializable {
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 人员id
+     */
+    private String userId;
+
+    /**
+     * 状态  0为正常  1为移除
+     */
+    private String status;
+
+    /**
+     * 项目主要成员  1为主要成员 
+     */
+    private String isImportant;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 425 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramProjectListInfo.java

@@ -0,0 +1,425 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.query.Query;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@TableName(value = "program_project_list_info")
+public class ProgramProjectListInfo {
+
+    /**
+     * 实体主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 创建日期
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    @Excel(name = "创建时间", width = 30, orderNum = "6")
+    private Date createDate;
+
+    /**
+     * 创建人
+     */
+    @Query(tableColumn = "a.create_by")
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    /**
+     * 更新日期
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateDate;
+
+    /**
+     * 更新人
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    /**
+     * 逻辑删除标记
+     */
+    @TableLogic
+    @TableField(fill = FieldFill.INSERT)
+    private Integer delFlag;
+
+    private String contractId;
+
+    /**
+     * 合同名称
+     */
+    @Excel(name = "合同名称", width = 30, orderNum = "3")
+    @Query(tableColumn = "a.contract_name")
+    private String contractName;
+
+    /**
+     * 委托方
+     */
+    private String client;
+
+    @Excel(name = "委托方", width = 30, orderNum = "5")
+    @Query(tableColumn = "a.client_name")
+    private String clientName;
+
+    private String amount;
+
+    private String contractType;
+
+    /**
+     * 项目名称
+     */
+    @Excel(name = "项目名称", width = 30, orderNum = "1")
+    @Query(tableColumn = "a.name")
+    private String name;
+
+    /**
+     * 项目编号
+     */
+    @Excel(name = "项目编号", width = 20, orderNum = "2")
+    @Query(tableColumn = "a.no")
+    private String no;
+
+    private String projectType;
+
+    /**
+     * 项目立项号
+     */
+    private String approvalNo;
+
+    private String company;
+
+    private String projectMould;
+
+    private String propertyHolder;
+
+    private String propertyHolderName;
+
+    private String location;
+
+    private String isFirst;
+
+    private String yearNum;
+
+    private String checkYear;
+
+    /**
+     * 项目经理(项目责任人)
+     */
+    private String projectManager;
+
+    @Excel(name = "项目经理", width = 20, orderNum = "4")
+    @Query(tableColumn = "c.name")
+    private String projectManagerName;
+
+    private String reportType;
+
+    private String industry;
+
+    private String enterpriseType;
+
+    private String riskLevel;
+
+    private String projectSource;
+
+    private BigDecimal estimate;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date planEndTime;
+
+    private Integer useNum;
+
+    private Integer appointment;
+
+    private Double workHours;
+
+    private String remarks;
+
+    private String assessmentEnterprise;
+
+    private String assessmentEnterpriseName;
+
+    private String linkNum;
+
+    private String relationship;
+
+    private String assessmentWay;
+
+    private String assessmentObjective;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date assessmentDate;
+
+    private BigDecimal num;
+
+    private String projectDevelopment;
+
+    private String delegateProjectType;
+
+    private String assessmentObject;
+
+    private String assessmentRange;
+
+    /**
+     * 是否生成报告号
+     */
+    private String generateReportNumber;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date workBeginDate;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date workEndDate;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date reportingDate;
+
+    private String isHave;
+
+    private String isInfluence;
+
+    private String mode;
+
+    /**
+     * 状态
+     */
+    @Excel(name = "状态", width = 20, orderNum = "7")
+    @Query(tableColumn = "a.status")
+    private String status;
+
+    private String procInsId;
+
+    private String processDefinitionId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(exist = false)
+    private String[] createDates;
+
+    /**
+     * 是否开票
+     */
+    @TableField(exist = false)
+    private String isInvoice;
+
+    /**
+     * 项目报告号
+     */
+    @TableField(exist = false)
+    private String reportNo;
+
+    /**
+     * 一级校审状态
+     */
+    @TableField(exist = false)
+    private String status1;
+
+    /**
+     * 二级校审状态
+     */
+    @TableField(exist = false)
+    private String status2;
+
+    /**
+     * 三级校审状态
+     */
+    @TableField(exist = false)
+    private String status3;
+
+    /**
+     * 报告签发状态
+     */
+    @TableField(exist = false)
+    private String issuedStatus;
+
+    /**
+     * 一级校审id
+     */
+    @TableField(exist = false)
+    private String auditId1;
+
+    /**
+     * 二级校审id
+     */
+    @TableField(exist = false)
+    private String auditId2;
+
+    /**
+     * 三级校审id
+     */
+    @TableField(exist = false)
+    private String auditId3;
+
+    /**
+     * 报告签发id
+     */
+    @TableField(exist = false)
+    private String issuedId;
+
+    /**
+     * 三级校审流程id
+     */
+    @TableField(exist = false)
+    private String procInsId1;
+
+    /**
+     * 三级校审流程id
+     */
+    @TableField(exist = false)
+    private String procInsId2;
+
+    /**
+     * 三级校审流程id
+     */
+    @TableField(exist = false)
+    private String procInsId3;
+
+    /**
+     * 项目归档流程id
+     */
+    @TableField(exist = false)
+    private String procInsIdArchive;
+
+    /**
+     * 项目归档id
+     */
+    @TableField(exist = false)
+    private String archiveId;
+
+    /**
+     * 项目归档状态
+     */
+    @TableField(exist = false)
+    private String archiveStatus;
+
+    /**
+     * 项目负责人id
+     */
+    @TableField(exist = false)
+    private String OfficeId;
+
+    /**
+     * 报告签发流程id
+     */
+    @TableField(exist = false)
+    private String procInsId4;
+
+    /**
+     * 审批通过时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date agreeTime;
+
+    /**
+     * 审批人
+     */
+    private String agreeUserId;
+
+    /**
+     * 合同编号
+     */
+    @TableField(exist = false)
+    private String contractNo;
+
+    /**
+     * 所属菜单   是评估项目登记   还是  评估2022项目登记
+     */
+    private String tabType;
+
+    /**
+     * 项目登记  taskId
+     */
+    @TableField(exist = false)
+    private String taskId;
+
+    /**
+     * 数据审核人  项目登记
+     */
+    @TableField(exist = false)
+    private List<String> auditUserIds;
+
+    /**
+     * 一级校审  taskId
+     */
+    @TableField(exist = false)
+    private String taskIdAudit1;
+
+    /**
+     * 二级校审  taskId
+     */
+    @TableField(exist = false)
+    private String taskIdAudit2;
+
+    /**
+     * 三级校审  taskId
+     */
+    @TableField(exist = false)
+    private String taskIdAudit3;
+
+    /**
+     * 数据审核人  一级校审
+     */
+    @TableField(exist = false)
+    private List<String> auditUserIds1;
+
+    /**
+     * 数据审核人  二级校审
+     */
+    @TableField(exist = false)
+    private List<String> auditUserIds2;
+
+    /**
+     * 数据审核人  三级校审
+     */
+    @TableField(exist = false)
+    private List<String> auditUserIds3;
+
+    /**
+     * 签发  taskId
+     */
+    @TableField(exist = false)
+    private String taskIdIssued;
+
+    /**
+     * 归档  taskId
+     */
+    @TableField(exist = false)
+    private String taskIdArchive;
+
+    /**
+     * 数据审核人  签发
+     */
+    @TableField(exist = false)
+    private List<String> auditUserIdsIssued;
+
+    /**
+     * 数据审核人  归档
+     */
+    @TableField(exist = false)
+    private List<String> auditUserIdsArchive;
+
+    /**
+     * 是否展示关联发票的开票状态   1展示   其他不展示
+     */
+    @TableField(exist = false)
+    private String showInvoiceFlag;
+
+}

+ 30 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramProjectListLink.java

@@ -0,0 +1,30 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName(value = "program_project_list_link")
+public class ProgramProjectListLink extends BaseEntity {
+
+    private String type;
+
+    private String infoId;
+
+    private String contacts;
+
+    private String linkMobilePhoneFirst;
+
+    private String linkMobilePhoneSecoed;
+
+    private String job;
+
+    private String remarks;
+
+    /**
+     * 人员类型
+     */
+    private String clientType;
+
+}

+ 23 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramProjectListMember.java

@@ -0,0 +1,23 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName(value = "program_project_list_member")
+public class ProgramProjectListMember extends BaseEntity {
+
+    private String infoId;
+
+    private String name;
+
+    private String workHours;
+
+    private String type;
+
+    private String job;
+
+    private String userId;
+
+}

+ 31 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/domain/ProgramReportNo.java

@@ -0,0 +1,31 @@
+package com.jeeplus.assess.program.configuration.projectList.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 新项目管理-项目登记-项目报告号表
+ * @TableName program_report_no
+ */
+@Data
+@TableName(value = "program_report_no")
+public class ProgramReportNo extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String programId;
+
+    /**
+     * 项目报告号
+     */
+    private String reportNo;
+
+    private static final long serialVersionUID = 1L;
+}

+ 25 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramArchiveMapper.java

@@ -0,0 +1,25 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramArchive;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramArchiveDto;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.projectList.domain.ProgramArchive
+ */
+@Mapper
+public interface ProgramArchiveMapper extends BaseMapper<ProgramArchive> {
+    ProgramArchiveDto findByIdArchive(String id);
+
+    /**
+     * 根据项目id查询信息
+     * @param id
+     * @return
+     */
+    ProgramArchiveDto findByProgramIdArchive(String id);
+}
+
+
+
+

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramAuditAssessPeopleMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramAuditAssessPeople;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.projectList.domain.ProgramAuditAssessPeople
+ */
+@Mapper
+public interface ProgramAuditAssessPeopleMapper extends BaseMapper<ProgramAuditAssessPeople> {
+
+}
+
+
+
+

+ 20 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramAuditMapper.java

@@ -0,0 +1,20 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramAudit;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditDto;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.projectList.domain.ProgramAudit
+ */
+@Mapper
+public interface ProgramAuditMapper extends BaseMapper<ProgramAudit> {
+    ProgramAuditDto findByIdAudit(String id);
+
+    String findIdByProIdAndLevel(String programId, String auditLevel);
+}
+
+
+
+

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramMembersMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramMembers;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.projectList.domain.ProgramMembers
+ */
+@Mapper
+public interface ProgramMembersMapper extends BaseMapper<ProgramMembers> {
+
+}
+
+
+
+

+ 23 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProgramReportNoMapper.java

@@ -0,0 +1,23 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramReportNo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.projectList.domain.ProgramReportNo
+ */
+@Mapper
+public interface ProgramReportNoMapper extends BaseMapper<ProgramReportNo> {
+
+    /**
+     * 根据项目id查报告号信息
+     * @param id
+     * @return
+     */
+    ProgramReportNo selectByProgramId(String id);
+}
+
+
+
+

+ 13 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProjectLinkMapper.java

@@ -0,0 +1,13 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListLink;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProjectLinkMapper extends BaseMapper<ProgramProjectListLink> {
+
+    void deleteByInfoId(@Param("id") String id);
+
+}

+ 43 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProjectListMapper.java

@@ -0,0 +1,43 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ContractDto;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ExportFileDto;
+import com.jeeplus.assess.workContract.domain.WorkContractInfo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+@Mapper
+public interface ProjectListMapper extends BaseMapper<ProgramProjectListInfo> {
+
+    IPage<WorkContractInfo> findContractPageList(Page<WorkContractInfo> page, @Param("dto") ContractDto dto);
+
+    void updateStatusById(@Param("id")String id, @Param("status")String status);
+
+    IPage<ProgramProjectListInfo> findPageList(Page<ProgramProjectListInfo> page, @Param(Constants.WRAPPER) QueryWrapper<ProgramProjectListInfo> wrapper);
+    /**
+     * 项目登记列表,和上面findPageList接口是一样的,目的时跳过findPageList mapper接口的数据规则(比如仅部门可见、仅自己可见之类的)
+     */
+    IPage<ProgramProjectListInfo> findPageList2(Page<ProgramProjectListInfo> page, @Param(Constants.WRAPPER) QueryWrapper<ProgramProjectListInfo> wrapper);
+
+    List<ProgramProjectListInfo> findInfoList(@Param(Constants.WRAPPER) QueryWrapper<ProgramProjectListInfo> wrapper);
+
+    List<ExportFileDto> findList(@Param("infoList")List<ProgramProjectListInfo> infoList);
+
+    IPage<ProgramProjectListInfo> findPage(Page<ProgramProjectListInfo> page, @Param(Constants.WRAPPER) QueryWrapper<ProgramProjectListInfo> wrapper);
+
+    String selectInvoiceFlag(@Param("id") String id);
+
+    ProgramProjectListInfo getById(@Param("id")String id);
+
+    List<String> getHaveProjectIds(@Param("currentUser") UserDTO currentUser);
+}

+ 14 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/ProjectMemberMapper.java

@@ -0,0 +1,14 @@
+package com.jeeplus.assess.program.configuration.projectList.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListMember;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProjectMemberMapper extends BaseMapper<ProgramProjectListMember> {
+
+    void deleteByInfoId(@Param("id") String id);
+
+}

+ 174 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramArchiveMapper.xml

@@ -0,0 +1,174 @@
+<?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.projectList.mapper.ProgramArchiveMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramArchiveDto">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="programId" column="program_id" jdbcType="VARCHAR"/>
+            <result property="year" column="year" jdbcType="VARCHAR"/>
+            <result property="programType" column="program_type" jdbcType="VARCHAR"/>
+            <result property="evaluationReportDate" column="evaluation_report_date" jdbcType="TIMESTAMP"/>
+            <result property="protocolNum" column="protocol_num" jdbcType="VARCHAR"/>
+            <result property="waystEvaluation" column="wayst_evaluation" jdbcType="VARCHAR"/>
+            <result property="fixedAssetsEvaluation" column="fixed_assets_evaluation" jdbcType="VARCHAR"/>
+            <result property="netAssetsEvaluation" column="net_assets_evaluation" jdbcType="VARCHAR"/>
+            <result property="rentEvaluation" column="rent_evaluation" jdbcType="VARCHAR"/>
+            <result property="forensics" column="forensics" jdbcType="VARCHAR"/>
+            <result property="reportCharges" column="report_charges" jdbcType="VARCHAR"/>
+            <result property="currentDisposePerson" column="current_dispose_person" jdbcType="VARCHAR"/>
+            <result property="isInvoice" column="is_invoice" jdbcType="VARCHAR"/>
+            <result property="invoiceDate" column="invoice_date" jdbcType="TIMESTAMP"/>
+            <result property="actualCharges" column="actual_charges" jdbcType="VARCHAR"/>
+            <result property="isContractArchive" column="is_contract_archive" jdbcType="VARCHAR"/>
+            <result property="isPapersIntact" column="is_papers_intact" jdbcType="VARCHAR"/>
+            <result property="isPapersArchive" column="is_papers_archive" jdbcType="VARCHAR"/>
+            <result property="opsAmount" column="ops_amount" jdbcType="VARCHAR"/>
+            <result property="isOpsReimbursement" column="is_ops_reimbursement" jdbcType="VARCHAR"/>
+            <result property="reimbursementAmount" column="reimbursement_amount" jdbcType="VARCHAR"/>
+            <result property="unreimbursedAmount" column="unreimbursed_amount" jdbcType="VARCHAR"/>
+            <result property="reimbursementNum" column="reimbursement_num" jdbcType="VARCHAR"/>
+            <result property="reimbursementDate" column="reimbursement_date" jdbcType="TIMESTAMP"/>
+            <result property="auditDate" column="audit_date" jdbcType="TIMESTAMP"/>
+            <result property="procInsId" column="proc_ins_id" jdbcType="VARCHAR"/>
+            <result property="processDefinitionId" column="process_definition_id" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="VARCHAR"/>
+            <result property="reportNo" column="report_no" jdbcType="VARCHAR"/>
+            <result property="auditUserId" column="audit_user_id" jdbcType="VARCHAR"/>
+            <result property="signatureEvaluatorFirst" column="signature_evaluator_first" jdbcType="VARCHAR"/>
+            <result property="signatureEvaluatorSecond" column="signature_evaluator_second" jdbcType="VARCHAR"/>
+            <association property="programProjectListInfo" select="getProgram" javaType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo" column="program_id"></association>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        pa.id,
+        pa.create_by,
+        pa.create_date,
+        pa.update_by,
+        pa.update_date,
+        pa.del_flag,
+        pa.remarks,
+        pa.program_id,
+        pa.year,
+        pa.program_type,
+        pa.evaluation_report_date,
+        pa.protocol_num,
+        pa.wayst_evaluation,
+        pa.fixed_assets_evaluation,
+        pa.net_assets_evaluation,
+        pa.rent_evaluation,
+        pa.forensics,
+        pa.report_charges,
+        pa.rent_type,
+        pa.current_dispose_person,
+        pa.is_invoice,
+        pa.invoice_date,
+        pa.actual_charges,
+        pa.is_contract_archive,
+        pa.is_papers_intact,
+        pa.is_papers_archive,
+        pa.ops_amount,
+        pa.is_ops_reimbursement,
+        pa.reimbursement_amount,
+        pa.unreimbursed_amount,
+        pa.reimbursement_num,
+        pa.reimbursement_date,
+        pa.proc_ins_id,
+        pa.process_definition_id,
+        pa.status,
+        pa.audit_date,
+        pa.audit_date as "auditDateDate",
+        pa.audit_user_id,
+        pa.signature_evaluator_first,
+        pa.signature_evaluator_second
+    </sql>
+    <sql id="Program_Column_List">
+        ppli.id,
+        ppli.create_by,
+        ppli.create_date,
+        ppli.update_by,
+        ppli.update_date,
+        ppli.del_flag,
+        ppli.contract_id,
+        ppli.contract_name,
+        ppli.client,
+        ppli.client_name,
+        ppli.amount,
+        ppli.contract_type,
+        ppli.name,
+        ppli.no,
+        ppli.project_type,
+        ppli.approval_no,
+        ppli.company,
+        ppli.project_mould,
+        ppli.property_holder,
+        ppli.property_holder_name,
+        ppli.location,
+        ppli.is_first,
+        ppli.year_num,
+        ppli.check_year,
+        ppli.project_manager,
+        ppli.project_manager_name,
+        ppli.report_type,
+        ppli.industry,
+        ppli.enterprise_type,
+        ppli.risk_level,
+        ppli.project_source,
+        ppli.estimate,
+        ppli.plan_end_time,
+        ppli.use_num,
+        ppli.appointment,
+        ppli.work_hours,
+        ppli.remarks,
+        ppli.assessment_enterprise,
+        ppli.assessment_enterprise_name,
+        ppli.link_num,
+        ppli.relationship,
+        ppli.assessment_way,
+        ppli.assessment_objective,
+        ppli.assessment_date,
+        ppli.num,
+        ppli.project_development,
+        ppli.delegate_project_type,
+        ppli.assessment_object,
+        ppli.work_begin_date,
+        ppli.work_end_date,
+        ppli.reporting_date,
+        ppli.is_have,
+        ppli.is_influence,mode,
+        ppli.status,
+        ppli.proc_ins_id,
+        ppli.process_definition_id
+    </sql>
+    <select id="getProgram" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        select
+        <include refid="Program_Column_List"></include>,
+        wci.no AS contract_no
+        from program_project_list_info ppli
+        left join work_contract_info wci on wci.id = ppli.contract_id and wci.del_flag = '0'
+        where ppli.del_flag = '0' and ppli.id = #{program_id}
+    </select>
+    <select id="findByIdArchive" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>,
+        prn.report_no as report_no
+        from program_archive pa
+        left join program_report_no prn on prn.program_id = pa.program_id and prn.del_flag = '0'
+        where pa.del_flag = '0' and pa.id = #{id}
+    </select>
+    <select id="findByProgramIdArchive" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>,
+        prn.report_no as report_no
+        from program_archive pa
+        left join program_report_no prn on prn.program_id = pa.program_id and prn.del_flag = '0'
+        where pa.del_flag = '0' and pa.program_id = #{id}
+    </select>
+</mapper>

+ 30 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramAuditAssessPeopleMapper.xml

@@ -0,0 +1,30 @@
+<?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.projectList.mapper.ProgramAuditAssessPeopleMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditAssessPeopleDto">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="auditId" column="audit_id" jdbcType="VARCHAR"/>
+            <result property="assessPeople" column="assess_people" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        paap.id,
+        paap.create_by,
+        paap.create_date,
+        paap.update_by,
+        paap.update_date,
+        paap.del_flag,
+        paap.remarks,
+        paap.audit_id,
+        paap.assess_people
+    </sql>
+</mapper>

+ 107 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramAuditMapper.xml

@@ -0,0 +1,107 @@
+<?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.projectList.mapper.ProgramAuditMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditDto">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="programId" column="program_id" jdbcType="VARCHAR"/>
+            <result property="auditLevel" column="audit_level" jdbcType="VARCHAR"/>
+            <result property="auditPeople" column="audit_people" jdbcType="VARCHAR"/>
+            <result property="auditDate" column="audit_date" jdbcType="TIMESTAMP"/>
+            <result property="retainOpinion" column="retain_opinion" jdbcType="VARCHAR"/>
+            <result property="changeOpinion" column="change_opinion" jdbcType="VARCHAR"/>
+            <result property="detailOpinion" column="detail_opinion" jdbcType="VARCHAR"/>
+            <result property="reportOpinion" column="report_opinion" jdbcType="VARCHAR"/>
+            <result property="remarksOpinion" column="remarks_opinion" jdbcType="VARCHAR"/>
+            <result property="workOpinion" column="work_opinion" jdbcType="VARCHAR"/>
+            <result property="procInsId" column="proc_ins_id" jdbcType="VARCHAR"/>
+            <result property="processDefinitionId" column="process_definition_id" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="VARCHAR"/>
+            <association property="programProjectListInfo" select="getProgram" javaType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo" column="program_id"></association>
+            <collection property="programAuditAssessPeopleDtoList" select="getAssess" ofType="com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditAssessPeopleDto" column="id"></collection>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        pa.id,
+        pa.create_by,
+        pa.create_date,
+        pa.update_by,
+        pa.update_date,
+        pa.del_flag,
+        pa.remarks,
+        pa.program_id,
+        pa.audit_level,
+        pa.audit_people,
+        pa.audit_date,
+        pa.retain_opinion,
+        pa.change_opinion,
+        pa.detail_opinion,
+        pa.report_opinion,
+        pa.remarks_opinion,
+        pa.work_opinion,
+        pa.proc_ins_id,
+        pa.process_definition_id,
+        pa.status
+    </sql>
+    <sql id="Program_Column_List">
+        id,create_by,create_date,
+        update_by,update_date,del_flag,
+        contract_id,contract_name,client,
+        client_name,amount,contract_type,
+        name,no,project_type,
+        approval_no,company,project_mould,
+        property_holder,property_holder_name,location,
+        is_first,year_num,check_year,
+        project_manager,project_manager_name,report_type,
+        industry,enterprise_type,risk_level,
+        project_source,estimate,plan_end_time,
+        use_num,appointment,work_hours,
+        remarks,assessment_enterprise,assessment_enterprise_name,
+        link_num,relationship,assessment_way,
+        assessment_objective,assessment_date,num,
+        project_development,delegate_project_type,assessment_object,
+        work_begin_date,work_end_date,reporting_date,
+        is_have,is_influence,mode,
+        status,proc_ins_id,process_definition_id
+    </sql>
+    <sql id="Assess_Column_List">
+        paap.id,
+        paap.create_by,
+        paap.create_date,
+        paap.update_by,
+        paap.update_date,
+        paap.del_flag,
+        paap.remarks,
+        paap.audit_id,
+        paap.assess_people
+    </sql>
+    <select id="getAssess" resultType="com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditAssessPeopleDto">
+        select
+        <include refid="Assess_Column_List"></include>
+        from program_audit_assess_people paap
+        where paap.del_flag = '0' and paap.audit_id = #{id}
+    </select>
+    <select id="getProgram" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        select
+        <include refid="Program_Column_List"></include>
+        from program_project_list_info ppli
+        where ppli.del_flag = '0' and id = #{program_id}
+    </select>
+    <select id="findByIdAudit" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_audit pa
+        where pa.del_flag = '0' and pa.id = #{id}
+    </select>
+    <select id="findIdByProIdAndLevel" resultType="string">
+        select id from program_audit where del_flag = '0' and program_id = #{programId} and audit_level = #{auditLevel}
+    </select>
+</mapper>

+ 27 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramMembersMapper.xml

@@ -0,0 +1,27 @@
+<?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.projectList.mapper.ProgramMembersMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramMembersDto">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="projectId" column="project_id" jdbcType="VARCHAR"/>
+            <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="VARCHAR"/>
+            <result property="isImportant" column="is_important" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,create_by,create_date,
+        update_by,update_date,del_flag,
+        remarks,project_id,user_id,
+        status,is_important
+    </sql>
+</mapper>

+ 34 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProgramReportNoMapper.xml

@@ -0,0 +1,34 @@
+<?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.projectList.mapper.ProgramReportNoMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramReportNoDto">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="programId" column="program_id" jdbcType="VARCHAR"/>
+            <result property="reportNo" column="report_no" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        prn.id,
+        prn.create_by,
+        prn.create_date,
+        prn.update_by,
+        prn.update_date,
+        prn.del_flag,
+        prn.remarks,
+        prn.program_id,
+        prn.report_no
+    </sql>
+    <select id="selectByProgramId"
+            resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramReportNo">
+        select * from program_report_no where program_id = #{id} and del_flag = 0
+    </select>
+</mapper>

+ 9 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProjectLinkMapper.xml

@@ -0,0 +1,9 @@
+<?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.projectList.mapper.ProjectLinkMapper">
+
+   <delete id="deleteByInfoId">
+       UPDATE program_project_list_link SET del_flag = 1 WHERE del_flag = 0 AND info_id = #{id}
+   </delete>
+
+</mapper>

+ 649 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProjectListMapper.xml

@@ -0,0 +1,649 @@
+<?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.projectList.mapper.ProjectListMapper">
+
+   <select id="findContractPageList" resultType="com.jeeplus.assess.workContract.domain.WorkContractInfo">
+       SELECT
+           a.id,
+           a.create_date,
+           a.update_by,
+           a.update_date,
+           a.del_flag,
+           a.client_id,
+           a.client_name,
+           a.no,
+           a.name,
+           a.contract_date,
+           a.effective_date,
+           a.closing_date,
+           a.contract_type,
+           a.contract_amount_type,
+           a.contract_amount,
+           a.contract_opposite,
+           a.contract_fee,
+           a.fees,
+           a.describes,
+           a.contract_special,
+           a.remarks,
+           a.filed_by,
+           a.filed_date,
+           a.filed_no,
+           a.confirm_filed_no,
+           a.filed_remarks,
+           a.proc_ins_id,
+           a.process_definition_id,
+           a.status,
+           a.filed_type,
+           a.borrow_type,
+           b.NAME AS create_by
+        FROM
+            work_contract_info a
+            LEFT JOIN sys_user b ON a.create_by = b.id
+        WHERE
+            a.del_flag = 0
+            and a.status != 1
+            <if test="dto.createBy != null and dto.createBy != ''">
+                AND b.id = #{dto.createBy}
+            </if>
+           <if test="dto.name != null and dto.name != ''">
+               AND a.name LIKE CONCAT ('%', #{dto.name}, '%')
+           </if>
+           <if test="dto.clientName != null and dto.clientName != ''">
+               AND a.client_name LIKE CONCAT ('%', #{dto.clientName}, '%')
+           </if>
+            ORDER BY a.create_by DESC
+   </select>
+
+    <update id="updateStatusById">
+        UPDATE program_project_list_info SET `status` = #{status} WHERE id = #{id}
+    </update>
+
+    <select id="findPageList" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        SELECT
+        distinct
+           a.id,
+           b.name AS create_by,
+           a.create_date,
+           a.update_by,
+           a.update_date,
+           a.del_flag,
+           a.contract_id,
+           a.contract_name,
+           a.client,
+           a.client_name,
+           a.amount,
+           a.contract_type,
+           a.name,
+           a.no,
+           a.project_type,
+           a.approval_no,
+           a.company,
+           a.project_mould,
+           a.property_holder,
+           a.property_holder_name,
+           a.location,
+           a.is_first,
+           a.year_num,
+           a.check_year,
+           a.project_manager,
+           c.name AS project_manager_name,
+           a.report_type,
+           a.industry,
+           a.enterprise_type,
+           a.risk_level,
+           a.project_source,
+           a.estimate,
+           a.plan_end_time,
+           a.use_num,
+           a.appointment,
+           a.work_hours,
+           a.remarks,
+           a.assessment_enterprise,
+           a.assessment_enterprise_name,
+           a.link_num,
+           a.relationship,
+           a.assessment_way,
+           a.assessment_objective,
+           a.assessment_date,
+           a.num,
+           a.project_development,
+           a.delegate_project_type,
+           a.assessment_object,
+           a.work_begin_date,
+           a.work_end_date,
+           a.reporting_date,
+           a.is_have,
+           a.is_influence,
+           a.mode,
+           a.status,
+           a.proc_ins_id,
+           a.process_definition_id,
+           prn.report_no,
+           pa1.status as status1,
+           pa1.id as auditId1,
+           pa1.proc_ins_id as procInsId1,
+           pa2.status as status2,
+           pa2.id as auditId2,
+           pa2.proc_ins_id as procInsId2,
+           pa3.status as status3,
+           pa3.id as auditId3,
+           pa3.proc_ins_id as procInsId3,
+           pa.status as archive_status,
+           pa.id as archive_id,
+           pa.proc_ins_id as procInsIdArchive,
+           d.id AS issued_id,
+           d.proc_ins_id AS procInsId4,
+           d.status AS issued_status,
+           wci.no AS contract_no,
+           art.ID_ as task_id,
+           art1.ID_ as task_id_audit1,
+           art2.ID_ as task_id_audit2,
+           art3.ID_ as task_id_audit3,
+           artd.ID_ as task_id_issued,
+           art_archive.ID_ as task_id_archive
+        FROM
+            program_project_list_info a
+            LEFT JOIN sys_user b ON a.create_by = b.id
+            LEFT JOIN sys_user c ON a.project_manager = c.id
+            LEFT JOIN work_contract_info wci ON wci.id = a.contract_id and wci.del_flag = '0'
+            LEFT JOIN program_report_no prn ON prn.program_id = a.id and prn.del_flag = '0'
+            LEFT JOIN program_audit pa1 ON pa1.program_id = a.id and pa1.audit_level = '1' and pa1.del_flag = '0'
+            LEFT JOIN program_audit pa2 ON pa2.program_id = a.id and pa2.audit_level = '2' and pa2.del_flag = '0'
+            LEFT JOIN program_audit pa3 ON pa3.program_id = a.id and pa3.audit_level = '3' and pa3.del_flag = '0'
+            LEFT JOIN program_archive pa ON pa.program_id = a.id and pa.del_flag = '0'
+            left join program_members pm on a.id = pm.project_id
+            LEFT JOIN proofread_issued d ON a.id = d.project_id
+            LEFT JOIN act_ru_task art ON a.proc_ins_id = art.PROC_INST_ID_
+            LEFT JOIN act_ru_task art1 ON pa1.proc_ins_id = art1.PROC_INST_ID_
+            LEFT JOIN act_ru_task art2 ON pa2.proc_ins_id = art2.PROC_INST_ID_
+            LEFT JOIN act_ru_task art3 ON pa3.proc_ins_id = art3.PROC_INST_ID_
+            LEFT JOIN act_ru_task artd ON d.proc_ins_id = artd.PROC_INST_ID_
+            LEFT JOIN act_ru_task art_archive ON pa.proc_ins_id = art_archive.PROC_INST_ID_
+            ${ew.customSqlSegment}
+            ORDER BY a.update_date DESC
+    </select>
+    <select id="findPageList2" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        SELECT
+        distinct
+           a.id,
+           b.name AS create_by,
+           a.create_date,
+           a.update_by,
+           a.update_date,
+           a.del_flag,
+           a.contract_id,
+           a.contract_name,
+           a.client,
+           a.client_name,
+           a.amount,
+           a.contract_type,
+           a.name,
+           a.no,
+           a.project_type,
+           a.approval_no,
+           a.company,
+           a.project_mould,
+           a.property_holder,
+           a.property_holder_name,
+           a.location,
+           a.is_first,
+           a.year_num,
+           a.check_year,
+           a.project_manager,
+           c.name AS project_manager_name,
+           a.report_type,
+           a.industry,
+           a.enterprise_type,
+           a.risk_level,
+           a.project_source,
+           a.estimate,
+           a.plan_end_time,
+           a.use_num,
+           a.appointment,
+           a.work_hours,
+           a.remarks,
+           a.assessment_enterprise,
+           a.assessment_enterprise_name,
+           a.link_num,
+           a.relationship,
+           a.assessment_way,
+           a.assessment_objective,
+           a.assessment_date,
+           a.num,
+           a.project_development,
+           a.delegate_project_type,
+           a.assessment_object,
+           a.work_begin_date,
+           a.work_end_date,
+           a.reporting_date,
+           a.is_have,
+           a.is_influence,
+           a.mode,
+           a.status,
+           a.proc_ins_id,
+           a.process_definition_id,
+           prn.report_no,
+           pa1.status as status1,
+           pa1.id as auditId1,
+           pa1.proc_ins_id as procInsId1,
+           pa2.status as status2,
+           pa2.id as auditId2,
+           pa2.proc_ins_id as procInsId2,
+           pa3.status as status3,
+           pa3.id as auditId3,
+           pa3.proc_ins_id as procInsId3,
+           pa.status as archive_status,
+           pa.id as archive_id,
+           pa.proc_ins_id as procInsIdArchive,
+           d.id AS issued_id,
+           d.proc_ins_id AS procInsId4,
+           d.status AS issued_status,
+           wci.no AS contract_no
+        FROM
+            program_project_list_info a
+            LEFT JOIN sys_user b ON a.create_by = b.id
+            LEFT JOIN sys_user c ON a.project_manager = c.id
+            LEFT JOIN work_contract_info wci ON wci.id = a.contract_id and wci.del_flag = '0'
+            LEFT JOIN program_report_no prn ON prn.program_id = a.id and prn.del_flag = '0'
+            LEFT JOIN program_audit pa1 ON pa1.program_id = a.id and pa1.audit_level = '1' and pa1.del_flag = '0'
+            LEFT JOIN program_audit pa2 ON pa2.program_id = a.id and pa2.audit_level = '2' and pa2.del_flag = '0'
+            LEFT JOIN program_audit pa3 ON pa3.program_id = a.id and pa3.audit_level = '3' and pa3.del_flag = '0'
+            LEFT JOIN program_archive pa ON pa.program_id = a.id and pa.del_flag = '0'
+            left join program_members pm on a.id = pm.project_id
+            LEFT JOIN proofread_issued d ON a.id = d.project_id
+            ${ew.customSqlSegment}
+            ORDER BY a.update_date DESC
+    </select>
+
+    <select id="findInfoList" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        SELECT
+           a.id,
+           b.name AS create_by,
+           a.create_date,
+           a.update_by,
+           a.update_date,
+           a.del_flag,
+           a.contract_id,
+           a.contract_name,
+           a.client,
+           a.client_name,
+           a.amount,
+           a.contract_type,
+           a.name,
+           a.no,
+           a.project_type,
+           a.approval_no,
+           a.company,
+           a.project_mould,
+           a.property_holder,
+           a.property_holder_name,
+           a.location,
+           a.is_first,
+           a.year_num,
+           a.check_year,
+           a.project_manager,
+           c.name AS project_manager_name,
+           a.report_type,
+           a.industry,
+           a.enterprise_type,
+           a.risk_level,
+           a.project_source,
+           a.estimate,
+           a.plan_end_time,
+           a.use_num,
+           a.appointment,
+           a.work_hours,
+           a.remarks,
+           a.assessment_enterprise,
+           a.assessment_enterprise_name,
+           a.link_num,
+           a.relationship,
+           a.assessment_way,
+           a.assessment_objective,
+           a.assessment_date,
+           a.num,
+           a.project_development,
+           a.delegate_project_type,
+           a.assessment_object,
+           a.assessment_range,
+           a.work_begin_date,
+           a.work_end_date,
+           a.reporting_date,
+           a.is_have,
+           a.is_influence,
+           a.mode,
+           a.status,
+           a.proc_ins_id,
+           a.process_definition_id,
+           prn.report_no,
+           pa1.status as status1,
+           pa1.id as auditId1,
+           pa1.proc_ins_id as procInsId1,
+           pa2.status as status2,
+           pa2.id as auditId2,
+           pa2.proc_ins_id as procInsId2,
+           pa3.status as status3,
+           pa3.id as auditId3,
+           pa3.proc_ins_id as procInsId3,
+           pa.status as archive_status,
+           pa.id as archive_id,
+           pa.proc_ins_id as procInsIdArchive,
+           d.id AS issued_id,
+           d.proc_ins_id AS procInsId4,
+           d.status AS issued_status
+        FROM
+            program_project_list_info a
+            LEFT JOIN sys_user b ON a.create_by = b.id
+            LEFT JOIN sys_user c ON a.project_manager = c.id
+            LEFT JOIN program_report_no prn ON prn.program_id = a.id
+            LEFT JOIN program_audit pa1 ON pa1.program_id = a.id and pa1.audit_level = '1' and pa1.del_flag = '0'
+            LEFT JOIN program_audit pa2 ON pa2.program_id = a.id and pa2.audit_level = '2' and pa2.del_flag = '0'
+            LEFT JOIN program_audit pa3 ON pa3.program_id = a.id and pa3.audit_level = '3' and pa3.del_flag = '0'
+            LEFT JOIN program_archive pa ON pa.program_id = a.id and pa.del_flag = '0'
+            LEFT JOIN proofread_issued d ON a.id = d.project_id
+            ${ew.customSqlSegment}
+            ORDER BY a.update_date DESC
+    </select>
+
+    <select id="getById" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        SELECT
+           a.id,
+           b.name AS create_by,
+           a.create_date,
+           a.update_by,
+           a.update_date,
+           a.del_flag,
+           a.contract_id,
+           a.contract_name,
+           a.client,
+           a.client_name,
+           a.amount,
+           a.contract_type,
+           a.name,
+           a.no,
+           a.project_type,
+           a.approval_no,
+           a.company,
+           a.project_mould,
+           a.property_holder,
+           a.property_holder_name,
+           a.location,
+           a.is_first,
+           a.year_num,
+           a.check_year,
+           a.project_manager,
+           c.name AS project_manager_name,
+           a.report_type,
+           a.industry,
+           a.enterprise_type,
+           a.risk_level,
+           a.project_source,
+           a.estimate,
+           a.plan_end_time,
+           a.use_num,
+           a.appointment,
+           a.work_hours,
+           a.remarks,
+           a.assessment_enterprise,
+           a.assessment_enterprise_name,
+           a.link_num,
+           a.relationship,
+           a.assessment_way,
+           a.assessment_objective,
+           a.assessment_date,
+           a.num,
+           a.project_development,
+           a.delegate_project_type,
+           a.assessment_object,
+           a.work_begin_date,
+           a.work_end_date,
+           a.reporting_date,
+           a.is_have,
+           a.is_influence,
+           a.mode,
+           a.status,
+           a.proc_ins_id,
+           a.process_definition_id,
+           a.generate_report_number,
+           prn.report_no,
+           pa1.status as status1,
+           pa1.id as auditId1,
+           pa1.proc_ins_id as procInsId1,
+           pa2.status as status2,
+           pa2.id as auditId2,
+           pa2.proc_ins_id as procInsId2,
+           pa3.status as status3,
+           pa3.id as auditId3,
+           pa3.proc_ins_id as procInsId3,
+           pa.status as archive_status,
+           pa.id as archive_id,
+           pa.proc_ins_id as procInsIdArchive,
+           d.id AS issued_id,
+           d.proc_ins_id AS procInsId4,
+           d.status AS issued_status
+        FROM
+            program_project_list_info a
+            LEFT JOIN sys_user b ON a.create_by = b.id
+            LEFT JOIN sys_user c ON a.project_manager = c.id
+            LEFT JOIN program_report_no prn ON prn.program_id = a.id
+            LEFT JOIN program_audit pa1 ON pa1.program_id = a.id and pa1.audit_level = '1' and pa1.del_flag = '0'
+            LEFT JOIN program_audit pa2 ON pa2.program_id = a.id and pa2.audit_level = '2' and pa2.del_flag = '0'
+            LEFT JOIN program_audit pa3 ON pa3.program_id = a.id and pa3.audit_level = '3' and pa3.del_flag = '0'
+            LEFT JOIN program_archive pa ON pa.program_id = a.id and pa.del_flag = '0'
+            LEFT JOIN proofread_issued d ON a.id = d.project_id
+        where a.id = #{id}
+    </select>
+
+    <select id="findList" resultType="com.jeeplus.assess.program.configuration.projectList.service.dto.ExportFileDto">
+        SELECT
+            (@i:=@i+1) AS `no`,
+            tab.*
+        FROM
+            (SELECT
+                b.`year`,
+                d.`name` AS client_name,
+                a.`name`,
+                a.assessment_objective,
+                a.assessment_object,
+                a.assessment_range,
+                a.project_mould as program_type,
+                DATE_FORMAT(a.assessment_date,'%Y-%m-%d') AS assessment_date,
+                DATE_FORMAT(b.evaluation_report_date, '%Y-%m-%d') as "evaluation_report_date",
+                b.protocol_num,
+                c.no as contract_num,
+                e.report_no,
+                f.`name` AS project_manager_name,
+                g.`name` AS signature_evaluator_first,
+                h.`name` AS signature_evaluator_second,
+                b.wayst_evaluation,
+                b.fixed_assets_evaluation,
+                b.net_assets_evaluation,
+                b.rent_evaluation,
+                b.forensics,
+                b.report_charges,
+                i.name as current_dispose_person,
+                (CASE b.is_invoice WHEN 0 THEN "否" WHEN 1 THEN "是" ELSE "" END) AS is_invoice,
+                DATE_FORMAT(b.invoice_date,'%Y-%m-%d') AS invoice_date,
+                (CASE b.is_contract_archive WHEN 0 THEN "否" WHEN 1 THEN "是" ELSE "" END) AS is_contract_archive,
+                (CASE b.is_papers_intact WHEN 0 THEN "否" WHEN 1 THEN "是" ELSE "" END) AS is_papers_intact,
+                (CASE b.is_papers_archive WHEN 0 THEN "否" WHEN 1 THEN "是" ELSE "" END) AS is_papers_archive
+            FROM
+                program_project_list_info a
+                LEFT JOIN program_archive b ON a.id = b.program_id
+                LEFT JOIN work_contract_info c ON a.contract_id = c.id
+                LEFT JOIN work_client_info d ON c.client_id = d.id
+                LEFT JOIN program_report_no e ON a.id = e.program_id
+                LEFT JOIN sys_user f ON a.project_manager = f.id
+                LEFT JOIN sys_user i ON b.current_dispose_person = i.id
+                LEFT JOIN sys_user g ON b.signature_evaluator_first = g.id
+                LEFT JOIN sys_user h ON b.signature_evaluator_second = h.id
+            WHERE a.del_flag = 0
+            <if test="infoList != null">
+                AND a.id IN
+                <foreach collection="infoList" item="item" index="index" open="(" close=")" separator=",">
+                    #{item.id}
+                </foreach>
+            </if>
+            ORDER BY a.update_date DESC) AS tab
+            ,(SELECT @i:=0) AS itable
+    </select>
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+        <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+        <result property="delFlag" column="del_flag" jdbcType="VARCHAR"/>
+        <result property="contractId" column="contract_id" jdbcType="VARCHAR"/>
+        <result property="contractName" column="contract_name" jdbcType="VARCHAR"/>
+        <result property="client" column="client" jdbcType="VARCHAR"/>
+        <result property="clientName" column="client_name" jdbcType="VARCHAR"/>
+        <result property="amount" column="amount" jdbcType="VARCHAR"/>
+        <result property="contractType" column="contract_type" jdbcType="VARCHAR"/>
+        <result property="name" column="name" jdbcType="VARCHAR"/>
+        <result property="no" column="no" jdbcType="VARCHAR"/>
+        <result property="projectType" column="project_type" jdbcType="VARCHAR"/>
+        <result property="approvalNo" column="approval_no" jdbcType="VARCHAR"/>
+        <result property="company" column="company" jdbcType="VARCHAR"/>
+        <result property="projectMould" column="project_mould" jdbcType="VARCHAR"/>
+        <result property="propertyHolder" column="property_holder" jdbcType="VARCHAR"/>
+        <result property="propertyHolderName" column="property_holder_name" jdbcType="VARCHAR"/>
+        <result property="location" column="location" jdbcType="VARCHAR"/>
+        <result property="isFirst" column="is_first" jdbcType="VARCHAR"/>
+        <result property="yearNum" column="year_num" jdbcType="VARCHAR"/>
+        <result property="checkYear" column="check_year" jdbcType="VARCHAR"/>
+        <result property="projectManager" column="project_manager" jdbcType="VARCHAR"/>
+        <result property="projectManagerName" column="project_manager_name" jdbcType="VARCHAR"/>
+        <result property="reportType" column="report_type" jdbcType="VARCHAR"/>
+        <result property="industry" column="industry" jdbcType="VARCHAR"/>
+        <result property="enterpriseType" column="enterprise_type" jdbcType="VARCHAR"/>
+        <result property="riskLevel" column="risk_level" jdbcType="VARCHAR"/>
+        <result property="projectSource" column="project_source" jdbcType="VARCHAR"/>
+        <result property="estimate" column="estimate" jdbcType="DECIMAL"/>
+        <result property="planEndTime" column="plan_end_time" jdbcType="TIMESTAMP"/>
+        <result property="useNum" column="use_num" jdbcType="INTEGER"/>
+        <result property="appointment" column="appointment" jdbcType="INTEGER"/>
+        <result property="workHours" column="work_hours" jdbcType="DOUBLE"/>
+        <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+        <result property="assessmentEnterprise" column="assessment_enterprise" jdbcType="VARCHAR"/>
+        <result property="assessmentEnterpriseName" column="assessment_enterprise_name" jdbcType="VARCHAR"/>
+        <result property="linkNum" column="link_num" jdbcType="VARCHAR"/>
+        <result property="relationship" column="relationship" jdbcType="VARCHAR"/>
+        <result property="assessmentWay" column="assessment_way" jdbcType="VARCHAR"/>
+        <result property="assessmentObjective" column="assessment_objective" jdbcType="VARCHAR"/>
+        <result property="assessmentDate" column="assessment_date" jdbcType="TIMESTAMP"/>
+        <result property="num" column="num" jdbcType="DECIMAL"/>
+        <result property="projectDevelopment" column="project_development" jdbcType="VARCHAR"/>
+        <result property="delegateProjectType" column="delegate_project_type" jdbcType="VARCHAR"/>
+        <result property="assessmentObject" column="assessment_object" jdbcType="VARCHAR"/>
+        <result property="workBeginDate" column="work_begin_date" jdbcType="TIMESTAMP"/>
+        <result property="workEndDate" column="work_end_date" jdbcType="TIMESTAMP"/>
+        <result property="reportingDate" column="reporting_date" jdbcType="TIMESTAMP"/>
+        <result property="isHave" column="is_have" jdbcType="VARCHAR"/>
+        <result property="isInfluence" column="is_influence" jdbcType="VARCHAR"/>
+        <result property="mode" column="mode" jdbcType="VARCHAR"/>
+        <result property="status" column="status" jdbcType="VARCHAR"/>
+        <result property="procInsId" column="proc_ins_id" jdbcType="VARCHAR"/>
+        <result property="processDefinitionId" column="process_definition_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ppli.id,
+        ppli.create_by,
+        ppli.create_date,
+        ppli.update_by,
+        ppli.update_date,
+        ppli.del_flag,
+        ppli.contract_id,
+        ppli.contract_name,
+        ppli.client,
+        ppli.client_name,
+        ppli.amount,
+        ppli.contract_type,
+        ppli.name,
+        ppli.no,
+        ppli.project_type,
+        ppli.approval_no,
+        ppli.company,
+        ppli.project_mould,
+        ppli.property_holder,
+        ppli.property_holder_name,
+        ppli.location,
+        ppli.is_first,
+        ppli.year_num,
+        ppli.check_year,
+        ppli.project_manager,
+        ppli.project_manager_name,
+        ppli.report_type,
+        ppli.industry,
+        ppli.enterprise_type,
+        ppli.risk_level,
+        ppli.project_source,
+        ppli.estimate,
+        ppli.plan_end_time,
+        ppli.use_num,
+        ppli.appointment,
+        ppli.work_hours,
+        ppli.remarks,
+        ppli.assessment_enterprise,
+        ppli.assessment_enterprise_name,
+        ppli.link_num,
+        ppli.relationship,
+        ppli.assessment_way,
+        ppli.assessment_objective,
+        ppli.assessment_date,
+        ppli.num,
+        ppli.project_development,
+        ppli.delegate_project_type,
+        ppli.assessment_object,
+        ppli.work_begin_date,
+        ppli.work_end_date,
+        ppli.reporting_date,
+        ppli.is_have,
+        ppli.is_influence,
+        ppli.mode,
+        ppli.status,
+        ppli.proc_ins_id,
+        ppli.process_definition_id
+    </sql>
+    <select id="findPage" resultType="com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo">
+        SELECT
+        <include refid="Base_Column_List"></include>,
+        su.name AS create_by,
+        sup.name as project_manager_name
+        FROM
+            program_project_list_info ppli
+            LEFT JOIN sys_user su ON ppli.create_by = su.id
+            LEFT JOIN sys_user sup ON ppli.project_manager = su.id
+            LEFT JOIN
+            ${ew.customSqlSegment}
+            ORDER BY ppli.update_date DESC
+    </select>
+
+    <select id="selectInvoiceFlag" resultType="string">
+        select
+            case
+                 when fi.status = '1' then '开票中'
+                 when fi.status = '2' then '开票中'
+                 when fi.status = '3' then '开票中'
+                 when fi.status = '4' then '开票中'
+                 when fi.status = '5' then '已开票'
+                 when fi.status = '6' then '已开票'
+                 when fi.status = '7' then '已开票'
+                 when fi.status = '8' then '已开票'
+            else '' end
+        from finance_invoice_base fib
+        inner join finance_invoice fi on fi.id = fib.invoice_id and fi.del_flag = '0'
+        where fib.del_flag = '0' and fi.status != '9' and fib.program_id = #{id}
+        order by fi.create_date desc
+        limit 1
+    </select>
+
+    <select id="getHaveProjectIds" resultType="string">
+        select
+            pm.project_id
+        from program_members pm
+        where pm.user_id = #{currentUser.id} and pm.del_flag = '0'
+    </select>
+</mapper>

+ 9 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/mapper/xml/ProjectMemberMapper.xml

@@ -0,0 +1,9 @@
+<?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.projectList.mapper.ProjectMemberMapper">
+
+   <delete id="deleteByInfoId">
+       UPDATE program_project_list_member SET del_flag = 1 WHERE del_flag = 0 AND info_id = #{id}
+   </delete>
+
+</mapper>

+ 14 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/ProgramMembersService.java

@@ -0,0 +1,14 @@
+package com.jeeplus.assess.program.configuration.projectList.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.assess.program.configuration.projectList.domain.*;
+import com.jeeplus.assess.program.configuration.projectList.mapper.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ProgramMembersService extends ServiceImpl<ProgramMembersMapper, ProgramMembers> {
+
+    @Autowired
+    private ProgramMembersMapper programMembersMapper;
+}

文件差異過大導致無法顯示
+ 1476 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/ProjectListService.java


+ 14 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ContractDto.java

@@ -0,0 +1,14 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import lombok.Data;
+
+@Data
+public class ContractDto {
+
+    private String createBy;
+
+    private String name;
+
+    private String clientName;
+
+}

+ 177 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ExportFileDto.java

@@ -0,0 +1,177 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class ExportFileDto {
+
+    /**
+     * 序号(自动生成)
+     */
+    @Excel(name = "序号", width = 10, orderNum = "1")
+    private Integer no;
+
+    /**
+     * 年份(归档表)
+     */
+    @Excel(name = "年份", width = 10, orderNum = "2")
+    private String year;
+
+    /**
+     * 客户名称(关联查询)
+     */
+    @Excel(name = "客户名称", width = 30, orderNum = "3")
+    private String clientName;
+
+    /**
+     * 项目名称(项目表)
+     */
+    @Excel(name = "项目名称", width = 30, orderNum = "4")
+    private String name;
+
+    /**
+     * 评估目的(项目表)
+     */
+    @Excel(name = "评估目的", width = 30, orderNum = "5")
+    private String assessmentObjective;
+
+    /**
+     * 评估对象(项目表)
+     */
+    @Excel(name = "评估对象", width = 30, orderNum = "6")
+    private String assessmentObject;
+
+    /**
+     * 评估范围(项目表)
+     */
+    @Excel(name = "评估范围", width = 30, orderNum = "7")
+    private String assessmentRange;
+
+    /**
+     * 项目类型(归档表)
+     */
+    @Excel(name = "项目类型", width = 20, orderNum = "8",dict = "program_registered_type")
+    private String programType;
+
+    /**
+     * 评估基准日(项目表)
+     */
+    @Excel(name = "评估基准日", width = 20, orderNum = "9")
+    private String assessmentDate;
+
+    /**
+     * 评估报告日(归档表)
+     */
+    @Excel(name = "评估报告日", width = 20, orderNum = "10")
+    private String evaluationReportDate;
+
+    /**
+     * 协议号(归档表)
+     */
+    //@Excel(name = "协议号", width = 20, orderNum = "9")
+    private String protocolNum;
+
+    /**
+     * 合同编号(合同表)
+     */
+    @Excel(name = "合同编号", width = 20, orderNum = "11")
+    private String contractNum;
+
+    /**
+     * 文号(报告号表)
+     */
+    @Excel(name = "文号", width = 20, orderNum = "12")
+    private String reportNo;
+
+    /**
+     * 项目负责人(项目表)
+     */
+    @Excel(name = "项目负责人", width = 20, orderNum = "13")
+    private String projectManagerName;
+
+    /**
+     * 签字评估师1(归档表)
+     */
+    @Excel(name = "签字评估师1", width = 20, orderNum = "14")
+    private String signatureEvaluatorFirst;
+
+    /**
+     * 签字评估师2(归档表)
+     */
+    @Excel(name = "签字评估师2", width = 20, orderNum = "15")
+    private String signatureEvaluatorSecond;
+
+    /**
+     * 废旧物资评估(万元)(归档表)
+     */
+    @Excel(name = "废旧物资评估(万元)", width = 20, orderNum = "16")
+    private String waystEvaluation;
+
+    /**
+     * 固定资产评估(万元)(归档表)
+     */
+    @Excel(name = "固定资产评估(万元)", width = 20, orderNum = "17")
+    private String fixedAssetsEvaluation;
+
+    /**
+     * 净资产评估(归档表)
+     */
+    @Excel(name = "净资产评估", width = 20, orderNum = "18")
+    private String netAssetsEvaluation;
+
+    /**
+     * 租金评估(万/年)(归档表)
+     */
+    @Excel(name = "租金评估(万/年)", width = 20, orderNum = "19")
+    private String rentEvaluation;
+
+    /**
+     * 其他(归档表)
+     */
+    @Excel(name = "其他", width = 20, orderNum = "20")
+    private String forensics;
+
+    /**
+     * 报告收费(元)(归档表)
+     */
+    @Excel(name = "报告收费(元)", width = 20, orderNum = "21")
+    private String reportCharges;
+
+    /**
+     * 当前处理人(归档表)
+     */
+    @Excel(name = "当前处理人", width = 20, orderNum = "22")
+    private String currentDisposePerson;
+
+    /**
+     * 是否开票(归档表)
+     */
+    @Excel(name = "是否开票", width = 20, orderNum = "23")
+    private String isInvoice;
+
+    /**
+     * 开票日期(归档表)
+     */
+    @Excel(name = "开票日期", width = 20, orderNum = "24")
+    private String invoiceDate;
+
+    /**
+     * 合同是否存档(归档表)
+     */
+    @Excel(name = "合同是否存档", width = 20, orderNum = "25")
+    private String isContractArchive;
+
+    /**
+     * 底稿是否完好(归档表)
+     */
+//    @Excel(name = "底稿是否完好", width = 20, orderNum = "24")
+//    private String isPapersIntact;
+
+    /**
+     * 底稿是否归档(归档表)
+     */
+    @Excel(name = "底稿是否归档", width = 20, orderNum = "26")
+    private String isPapersArchive;
+
+}

+ 231 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramArchiveDto.java

@@ -0,0 +1,231 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
+import com.jeeplus.pubmodules.oss.service.dto.WorkAttachmentDto;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 新项目管理-项目登记-项目归档
+ * @TableName program_archive
+ */
+@Data
+public class ProgramArchiveDto extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String programId;
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 项目类型
+     */
+    private String programType;
+
+    /**
+     * 评估报告日
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date evaluationReportDate;
+
+    /**
+     * 协议号
+     */
+    private String protocolNum;
+
+    /**
+     * 废旧物资评估(万元)
+     */
+    private String waystEvaluation;
+
+    /**
+     * 固定资产评估(万元)
+     */
+    private String fixedAssetsEvaluation;
+
+    /**
+     * 净资产评估
+     */
+    private String netAssetsEvaluation;
+
+    /**
+     * 租金评估(万/年)
+     */
+    private String rentEvaluation;
+
+    /**
+     * 司法鉴定
+     */
+    private String forensics;
+
+    /**
+     * 报告收费(元)
+     */
+    private String reportCharges;
+
+    /**
+     * 租金类型
+     */
+    private String rentType;
+
+    /**
+     * 当前处理人
+     */
+    private String currentDisposePerson;
+
+    /**
+     * 是否开票
+     */
+    private String isInvoice;
+
+    /**
+     * 开票日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date invoiceDate;
+
+    /**
+     * 预估/实际收费(万元)
+     */
+    private String actualCharges;
+
+    /**
+     * 合同是否存档
+     */
+    private String isContractArchive;
+
+    /**
+     * 底稿是否完好
+     */
+    private String isPapersIntact;
+
+    /**
+     * 底稿是否归档
+     */
+    private String isPapersArchive;
+
+    /**
+     * 报销外勤天数
+     */
+    private String opsAmount;
+
+    /**
+     * 外勤是否已经报销
+     */
+    private String isOpsReimbursement;
+
+    /**
+     * 已报销金额
+     */
+    private String reimbursementAmount;
+
+    /**
+     * 未报销金额
+     */
+    private String unreimbursedAmount;
+
+    /**
+     * 报销单号
+     */
+    private String reimbursementNum;
+
+    /**
+     * 报销日期
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date reimbursementDate;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 审核通过时间
+     */
+    private String auditDate;
+
+    /**
+     * 项目信息
+     */
+    private ProgramProjectListInfo programProjectListInfo;
+
+    /**
+     * 附件 - 评估报告
+     */
+    private List<WorkAttachmentDto> reportFileList;
+
+    /**
+     * 附件 - 评估说明
+     */
+    private List<WorkAttachmentDto> explainFileList;
+
+    /**
+     * 附件 - 评估明细表
+     */
+    private List<WorkAttachmentDto> detailFileList;
+
+    /**
+     * 附件 - 评估操作计算底稿
+     */
+    private List<WorkAttachmentDto> papersFileList;
+
+    /**
+     * 附件 - 其他
+     */
+    private List<WorkAttachmentDto> otherFileList;
+
+    /**
+     * 项目报告号
+     */
+    private String reportNo;
+    /**
+     * 审核通过时间
+     */
+    private Date auditDateDate;
+
+    /**
+     * 审核通过审批人id
+     */
+    private String auditUserId;
+
+    /**
+     * 签字评估师1
+     */
+    private String signatureEvaluatorFirst;
+
+    /**
+     * 签字评估师2
+     */
+    private String signatureEvaluatorSecond;
+
+    private static final long serialVersionUID = 1L;
+}

+ 28 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramAuditAssessPeopleDto.java

@@ -0,0 +1,28 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+/**
+ * 新项目管理-项目登记-三级校审-评估人员
+ * @TableName program_audit_assess_people
+ */
+@Data
+public class ProgramAuditAssessPeopleDto extends BaseDTO {
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 校审id
+     */
+    private String auditId;
+
+    /**
+     * 评估人员
+     */
+    private String assessPeople;
+
+    private static final long serialVersionUID = 1L;
+}

+ 104 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramAuditDto.java

@@ -0,0 +1,104 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListInfo;
+import com.jeeplus.pubmodules.oss.service.dto.WorkAttachmentDto;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 新项目管理-项目登记-三级校审
+ * @TableName program_audit
+ */
+@Data
+public class ProgramAuditDto extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String programId;
+
+    /**
+     * 校审级别
+     */
+    private String auditLevel;
+
+    /**
+     * 审核人
+     */
+    private String auditPeople;
+
+    /**
+     * 审核通过时间
+     */
+    private Date auditDate;
+
+    /**
+     * 执行人员保留意见
+     */
+    private String retainOpinion;
+
+    /**
+     * 审核人员审核未修改意见
+     */
+    private String changeOpinion;
+
+    /**
+     * 审核意见及回复/明细表
+     */
+    private String detailOpinion;
+
+    /**
+     * 审核意见及回复/评估报告
+     */
+    private String reportOpinion;
+
+    /**
+     * 审核意见及回复/技术说明
+     */
+    private String remarksOpinion;
+
+    /**
+     * 审核意见及回复/工作底稿
+     */
+    private String workOpinion;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 项目信息
+     */
+    private ProgramProjectListInfo programProjectListInfo;
+
+    /**
+     * 专业评估人员
+     */
+    private List<ProgramAuditAssessPeopleDto> programAuditAssessPeopleDtoList;
+
+    /**
+     * 附件信息
+     */
+    private List<WorkAttachmentDto> workAttachmentDtoList;
+
+    private static final long serialVersionUID = 1L;
+}

+ 45 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramMembersDto.java

@@ -0,0 +1,45 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 评估-项目管理-项目组成员
+ * @TableName program_members
+ */
+@TableName(value ="program_members")
+@Data
+public class ProgramMembersDto extends BaseDTO implements Serializable {
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 人员id
+     */
+    private String userId;
+
+    /**
+     * 状态  0为正常  1为移除
+     */
+    private String status;
+
+    /**
+     * 项目主要成员  1为主要成员 
+     */
+    private String isImportant;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 32 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProgramReportNoDto.java

@@ -0,0 +1,32 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+/**
+ * 新项目管理-项目登记-项目报告号表
+ * @TableName program_report_no
+ */
+@Data
+public class ProgramReportNoDto extends BaseDTO {
+
+    public static final String BIZ_CODE = "7";
+    public static final String BIZ_CODE_ = "8";
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String programId;
+
+    /**
+     * 项目报告号
+     */
+    private String reportNo;
+
+    private static final long serialVersionUID = 1L;
+}

+ 165 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/dto/ProjectListDto.java

@@ -0,0 +1,165 @@
+package com.jeeplus.assess.program.configuration.projectList.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListLink;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramProjectListMember;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.pubmodules.oss.service.dto.WorkAttachmentDto;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ProjectListDto extends BaseEntity {
+
+    public static final String BIZ_CODE = "xmlb";
+    public static final String BIY_CODE = "6";
+
+    private String contractId;
+
+    private String contractName;
+
+    private String client;
+
+    private String clientName;
+
+    private String amount;
+
+    private String contractType;
+
+    private String name;
+
+    private String no;
+
+    private String projectType;
+
+    private String approvalNo;
+
+    private String company;
+
+    private String projectMould;
+
+    private String propertyHolder;
+
+    private String propertyHolderName;
+
+    private String location;
+
+    private String isFirst;
+
+    private String yearNum;
+
+    private String checkYear;
+
+    private String projectManager;
+
+    private String projectManagerName;
+
+    private String reportType;
+
+    private String industry;
+
+    private String enterpriseType;
+
+    private String riskLevel;
+
+    private String projectSource;
+
+    private BigDecimal estimate;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date planEndTime;
+
+    private Integer useNum;
+
+    private Integer appointment;
+
+    private Double workHours;
+
+    private String remarks;
+
+    private String assessmentEnterprise;
+
+    private String assessmentEnterpriseName;
+
+    private String linkNum;
+
+    private String relationship;
+
+    private String assessmentWay;
+
+    private String assessmentObjective;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date assessmentDate;
+
+    private BigDecimal num;
+
+    private String projectDevelopment;
+
+    private String delegateProjectType;
+
+    private String assessmentObject;
+
+    /**
+     * 评估范围
+     */
+    private String assessmentRange;
+
+    /**
+     * 是否生成报告号
+     */
+    private String generateReportNumber;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date workBeginDate;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date workEndDate;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
+    private Date reportingDate;
+
+    private String isHave;
+
+    private String isInfluence;
+
+    private String mode;
+
+    private String status;
+
+    /**
+     * 联系人
+     */
+    private List<ProgramProjectListLink> links;
+
+    private List<ProgramProjectListMember> members;
+
+    private List<WorkAttachmentDto> files;
+
+    /**
+     * 审批通过时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date agreeTime;
+
+    /**
+     * 审批人
+     */
+    private String agreeUserId;
+
+    /**
+     * 生成合同编号,前端传值为 “ 1 ” 的时候,进行生成
+     */
+    private String createContractNo;
+
+}

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramArchiveWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.program.configuration.projectList.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramArchive;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramAuditAssessPeople;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramArchiveDto;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditAssessPeopleDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramArchiveWrapper extends EntityWrapper<ProgramArchiveDto, ProgramArchive>{
+
+        ProgramArchiveWrapper INSTANCE = Mappers.getMapper(ProgramArchiveWrapper.class);
+
+}

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramAuditAssessPeopleWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.program.configuration.projectList.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramAudit;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramAuditAssessPeople;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditAssessPeopleDto;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramAuditAssessPeopleWrapper extends EntityWrapper<ProgramAuditAssessPeopleDto, ProgramAuditAssessPeople>{
+
+        ProgramAuditAssessPeopleWrapper INSTANCE = Mappers.getMapper(ProgramAuditAssessPeopleWrapper.class);
+
+}

+ 15 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramAuditWrapper.java

@@ -0,0 +1,15 @@
+package com.jeeplus.assess.program.configuration.projectList.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramAudit;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramAuditDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramAuditWrapper extends EntityWrapper<ProgramAuditDto, ProgramAudit>{
+
+        ProgramAuditWrapper INSTANCE = Mappers.getMapper(ProgramAuditWrapper.class);
+
+}

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/mapstruct/ProgramMembersWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.program.configuration.projectList.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramArchive;
+import com.jeeplus.assess.program.configuration.projectList.domain.ProgramMembers;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramArchiveDto;
+import com.jeeplus.assess.program.configuration.projectList.service.dto.ProgramMembersDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramMembersWrapper extends EntityWrapper<ProgramMembersDto, ProgramMembers>{
+
+        ProgramMembersWrapper INSTANCE = Mappers.getMapper(ProgramMembersWrapper.class);
+
+}

+ 141 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/controller/ProgramTypeDictController.java

@@ -0,0 +1,141 @@
+package com.jeeplus.assess.program.configuration.typeDict.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+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.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.assess.program.configuration.typeDict.service.ProgramTypeDictService;
+import com.jeeplus.assess.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import com.jeeplus.logging.annotation.ApiLog;
+import io.swagger.annotations.Api;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+@Api("项目配置管理-项目类型管理")
+@RestController
+@RequestMapping(value = "/program/configuration/type")
+public class ProgramTypeDictController {
+
+    @Resource
+    private ProgramTypeDictService programTypeDictService;
+
+    /**
+     * 查询项目类型管理列表
+     * @param programTypeDictDTO
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiLog("查询项目类型管理列表")
+    @PreAuthorize("hasAuthority('program:configuration:type:list')")
+    @GetMapping("list")
+    public ResponseEntity<IPage<ProgramTypeDictDTO>> data(ProgramTypeDictDTO programTypeDictDTO, Page<ProgramTypeDictDTO> page) throws Exception {
+        page.setSize(-1);
+        IPage<ProgramTypeDictDTO> result = new Page<ProgramTypeDictDTO>();
+        if(ObjectUtil.isNotEmpty(programTypeDictDTO)){
+            if(StringUtils.isNotBlank(programTypeDictDTO.getType())){
+                //根据type模糊查询
+                List<ProgramTypeDict> programTypeDictList = programTypeDictService.list(new QueryWrapper<ProgramTypeDict>().lambda()
+                        .like(StringUtils.isNotBlank(programTypeDictDTO.getType()), ProgramTypeDict::getType, programTypeDictDTO.getType())
+                );
+                //获取到其中不是一级项目类型的数据
+                List<ProgramTypeDict> childList = programTypeDictList.stream().distinct().filter(item -> {
+                    if (!"0".equals(item.getParentId())) {
+                        return true;
+                    }
+                    return false;
+                }).collect(Collectors.toList());
+                //childList的id全部获取
+                List<String> cIdList = childList.stream().distinct().map(ProgramTypeDict::getId).collect(Collectors.toList());
+                //childList的父级id全部获取
+                List<String> cupIdList = childList.stream().distinct().map(ProgramTypeDict::getParentId).collect(Collectors.toList());
+                //获取到其中一级项目类型的数据的id
+                List<String> pIdList = programTypeDictList.stream().distinct().filter(item -> {
+                    if ("0".equals(item.getParentId())) {
+                        return true;
+                    }
+                    return false;
+                }).map(ProgramTypeDict::getId).collect(Collectors.toList());
+                //获取pIdList下的所有子项目类型的id
+                if(CollectionUtil.isNotEmpty(pIdList)){
+                    pIdList.addAll(programTypeDictService.list(new QueryWrapper<ProgramTypeDict>().lambda()
+                            .in(ProgramTypeDict::getParentId,pIdList)).stream().map(ProgramTypeDict::getId).collect(Collectors.toList()));
+                }
+                //将获取到的这几个id集合融合到一起并去重,然后根据id查询,即可得到结果
+                cIdList.addAll(cupIdList);
+                cIdList.addAll(pIdList);
+                List<String> idList = cIdList.stream().distinct().collect(Collectors.toList());
+                if(CollectionUtil.isNotEmpty(idList)){
+                    QueryWrapper<ProgramTypeDict> wrapper = new QueryWrapper<ProgramTypeDict>()
+                            .in("ptd.id",idList);
+                    result = programTypeDictService.findList (page,wrapper);
+                }
+            }else{
+                result = programTypeDictService.findList (page,new QueryWrapper<ProgramTypeDict>());
+            }
+        }
+        return ResponseEntity.ok (result);
+    }
+
+    /**
+     * 查询项目类型管理数据
+     * @param id
+     * @return
+     */
+    @ApiLog("查询项目类型管理详情")
+    @PreAuthorize ("hasAnyAuthority('program:configuration:type:view','program:configuration:type:add','program:configuration:type:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam("id") String id) {
+        ProgramTypeDictDTO programTypeDictDTO = programTypeDictService.queryById ( id );
+        return ResponseEntity.ok (programTypeDictDTO);
+    }
+
+    /**
+     * 查询全部一级项目类型
+     * @return
+     */
+    @ApiLog("查询全部一级项目类型")
+    @GetMapping("getList")
+    public ResponseEntity<List<ProgramTypeDictDTO>> getList() {
+        List<ProgramTypeDictDTO> list = programTypeDictService.getList();
+        return ResponseEntity.ok (list);
+    }
+
+    /**
+     * 保存项目类型
+     * @param programTypeDictDTO
+     * @return
+     */
+    @ApiLog(value = "修改/新增项目类型")
+    @PreAuthorize("hasAnyAuthority('program:configuration:type:save','program:configuration:type:edit')")
+    @PostMapping("save")
+    public ResponseEntity save(@Valid @RequestBody ProgramTypeDictDTO programTypeDictDTO) {
+        programTypeDictService.saveType(programTypeDictDTO);
+        return ResponseEntity.ok ("操作成功");
+    }
+
+    /**
+     * 删除项目类型
+     * @param ids
+     * @return
+     */
+    @ApiLog(value = "删除项目类型")
+    @PreAuthorize ("hasAuthority('program:configuration:type:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        return programTypeDictService.deleteByIds(ids);
+    }
+
+}

+ 38 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/domain/ProgramTypeDict.java

@@ -0,0 +1,38 @@
+package com.jeeplus.assess.program.configuration.typeDict.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 
+ * @TableName program_type_dict
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("program_type_dict")
+public class ProgramTypeDict extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目类型名称
+     */
+    private String type;
+
+    /**
+     * 父类型id
+     */
+    private String parentId;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    private static final long serialVersionUID = 1L;
+}

+ 30 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/mapper/ProgramTypeDictMapper.java

@@ -0,0 +1,30 @@
+package com.jeeplus.assess.program.configuration.typeDict.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.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.assess.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @Entity com.jeeplus.test.program.configuration.typeDict.domain.ProgramTypeDict
+ */
+@Mapper
+public interface ProgramTypeDictMapper extends BaseMapper<ProgramTypeDict> {
+
+    public IPage<ProgramTypeDictDTO> findList(Page<ProgramTypeDictDTO> page, @Param(Constants.WRAPPER) QueryWrapper<ProgramTypeDict> queryWrapper);
+
+    public ProgramTypeDictDTO queryById(@Param("id") String id);
+
+    public List<ProgramTypeDictDTO> getList();
+}
+
+
+
+

+ 75 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/mapper/xml/ProgramTypeDictMapper.xml

@@ -0,0 +1,75 @@
+<?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.typeDict.mapper.ProgramTypeDictMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.configuration.typeDict.service.dto.ProgramTypeDictDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="type" column="type" jdbcType="VARCHAR"/>
+            <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+            <result property="sort" column="sort" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ptd.id,
+        ptd.create_by,
+        ptd.create_date,
+        ptd.update_by,
+        ptd.update_date,
+        ptd.del_flag,
+        ptd.remarks,
+        ptd.type,
+        ptd.parent_id,
+        ptd.sort
+    </sql>
+
+    <select id="findList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_type_dict ptd
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="queryById" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_type_dict ptd
+        where ptd.del_flag = '0' and ptd.id = ${id}
+    </select>
+
+    <select id="getList" resultMap="Map">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_type_dict ptd
+        where ptd.del_flag = '0' and ptd.parent_id = '0'
+    </select>
+
+    <resultMap id="Map" type="com.jeeplus.assess.program.configuration.typeDict.service.dto.ProgramTypeDictDTO">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+        <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+        <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+        <result property="type" column="type" jdbcType="VARCHAR"/>
+        <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+        <result property="sort" column="sort" jdbcType="VARCHAR"/>
+        <collection property="childrenList" column="id" select="getChildList" ofType="com.jeeplus.test.program.configuration.typeDict.service.dto.ProgramTypeDictDTO"/>
+    </resultMap>
+
+    <select id="getChildList" resultType="com.jeeplus.assess.program.configuration.typeDict.service.dto.ProgramTypeDictDTO">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_type_dict ptd
+        where ptd.del_flag = '0' and ptd.parent_id = ${id}
+    </select>
+
+</mapper>

+ 71 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/service/ProgramTypeDictService.java

@@ -0,0 +1,71 @@
+package com.jeeplus.assess.program.configuration.typeDict.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+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.google.common.collect.Maps;
+import com.jeeplus.assess.program.configuration.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.assess.program.configuration.typeDict.mapper.ProgramTypeDictMapper;
+import com.jeeplus.assess.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import com.jeeplus.assess.program.configuration.typeDict.service.mapstruct.ProgramTypeDictWrapper;
+import com.jeeplus.core.service.TreeService;
+import com.jeeplus.sys.domain.Menu;
+import com.jeeplus.sys.service.dto.MenuDTO;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional
+public class ProgramTypeDictService extends ServiceImpl<ProgramTypeDictMapper, ProgramTypeDict> {
+
+    @Resource
+    private ProgramTypeDictMapper programTypeDictMapper;
+
+    public IPage<ProgramTypeDictDTO> findList(Page<ProgramTypeDictDTO> page, QueryWrapper<ProgramTypeDict> queryWrapper){
+        queryWrapper.eq("ptd.del_flag","0").orderByAsc("ptd.sort");
+        return programTypeDictMapper.findList(page,queryWrapper);
+    }
+
+    public ProgramTypeDictDTO queryById(String id) {
+
+        ProgramTypeDictDTO programTypeDictDTO = programTypeDictMapper.queryById(id);
+
+        return programTypeDictDTO;
+    }
+
+    public List<ProgramTypeDictDTO> getList() {
+        List<ProgramTypeDictDTO> list = programTypeDictMapper.getList();
+        return list;
+    }
+
+    public ResponseEntity saveType(ProgramTypeDictDTO programTypeDictDTO) {
+        ProgramTypeDict programTypeDict = ProgramTypeDictWrapper.INSTANCE.toEntity(programTypeDictDTO);
+        this.saveOrUpdate(programTypeDict);
+        return ResponseEntity.ok("保存成功");
+    }
+
+    public ResponseEntity deleteByIds(String ids) {
+        String idArray[] =ids.split(",");
+        if(CollectionUtil.isNotEmpty(Lists.newArrayList (idArray))){
+            List<String> list = this.list(new QueryWrapper<ProgramTypeDict>().lambda().in(ProgramTypeDict::getParentId, Lists.newArrayList(idArray))).stream().distinct().map(ProgramTypeDict::getId).collect(Collectors.toList());
+            this.removeByIds (list);
+        }
+        this.removeByIds (Lists.newArrayList (idArray));
+        return ResponseEntity.ok ("删除成功");
+    }
+}

+ 43 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/service/dto/ProgramTypeDictDTO.java

@@ -0,0 +1,43 @@
+package com.jeeplus.assess.program.configuration.typeDict.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 
+ * @TableName program_type_dict
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class ProgramTypeDictDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目类型名称
+     */
+    private String type;
+
+    /**
+     * 父类型id
+     */
+    private String parentId;
+
+    /**
+     * 序号
+     */
+    private String sort;
+
+    /**
+     * 子类型集合
+     */
+    List<ProgramTypeDictDTO> childrenList;
+
+    private static final long serialVersionUID = 1L;
+}

+ 15 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/typeDict/service/mapstruct/ProgramTypeDictWrapper.java

@@ -0,0 +1,15 @@
+package com.jeeplus.assess.program.configuration.typeDict.service.mapstruct;
+
+import com.jeeplus.assess.program.configuration.typeDict.domain.ProgramTypeDict;
+import com.jeeplus.assess.program.configuration.typeDict.service.dto.ProgramTypeDictDTO;
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramTypeDictWrapper extends EntityWrapper<ProgramTypeDictDTO, ProgramTypeDict>{
+
+        ProgramTypeDictWrapper INSTANCE = Mappers.getMapper(ProgramTypeDictWrapper.class);
+
+}

+ 122 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/controller/ProgramServiceTypeController.java

@@ -0,0 +1,122 @@
+package com.jeeplus.assess.program.serviceType.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.serviceType.domain.ProgramServiceType;
+import com.jeeplus.assess.program.serviceType.service.ProgramServiceTypeService;
+import com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO;
+import io.swagger.annotations.Api;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Api("项目管理-业务类型管理")
+@RestController
+@RequestMapping(value = "/program/service_type")
+public class ProgramServiceTypeController {
+
+    @Resource
+    private ProgramServiceTypeService programServiceTypeService;
+
+    /**
+     * 查询业务类型列表
+     * @param programServiceTypeDTO
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @GetMapping("list")
+    public ResponseEntity<IPage<ProgramServiceTypeDTO>> data(ProgramServiceTypeDTO programServiceTypeDTO, Page<ProgramServiceTypeDTO> page) throws Exception {
+        page.setSize(-1);
+        IPage<ProgramServiceTypeDTO> result = new Page<ProgramServiceTypeDTO>();
+        if(ObjectUtil.isNotEmpty(programServiceTypeDTO)){
+            if(StringUtils.isNotBlank(programServiceTypeDTO.getName())){
+                //根据type模糊查询
+                List<ProgramServiceType> programServiceTypeList = programServiceTypeService.list(new QueryWrapper<ProgramServiceType>().lambda()
+                        .like(StringUtils.isNotBlank(programServiceTypeDTO.getName()), ProgramServiceType::getName, programServiceTypeDTO.getName())
+                );
+                List<String> idList = new ArrayList<>();
+                programServiceTypeList.stream().forEach(item->{
+                    if (StringUtils.isNotBlank(item.getParentIds())){
+                        String[] split = item.getParentIds().split(",");
+                        for (String s : split) {
+                            idList.add(s);
+                        }
+                    }
+                    List<ProgramServiceType> list = programServiceTypeService.list(new QueryWrapper<ProgramServiceType>().lambda().like(ProgramServiceType::getParentIds, "," + item.getId() + ","));
+                    idList.addAll(list.stream().map(ProgramServiceType::getId).collect(Collectors.toList()));
+                    idList.add(item.getId());
+                });
+                List<String> ids = idList.stream().distinct().filter(item->{
+                    if (!"0".equals(item)){
+                        return true;
+                    }
+                    return false;
+                }).collect(Collectors.toList());
+                if(CollectionUtil.isNotEmpty(ids)){
+                    QueryWrapper<ProgramServiceType> wrapper = new QueryWrapper<ProgramServiceType>()
+                            .in("pst.id",idList);
+                    result = programServiceTypeService.findList (page,wrapper);
+                }
+            }else{
+                result = programServiceTypeService.findList (page,new QueryWrapper<ProgramServiceType>());
+            }
+        }
+        return ResponseEntity.ok (result);
+    }
+
+    /**
+     * 查询业务类型数据
+     * @param id
+     * @return
+     */
+    @PreAuthorize ("hasAnyAuthority('program_service_type:view','program_service_type:add','program_service_type:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam("id") String id) {
+        ProgramServiceTypeDTO programServiceTypeDTO = programServiceTypeService.queryById ( id );
+        return ResponseEntity.ok (programServiceTypeDTO);
+    }
+
+    /**
+     * 保存业务类型
+     * @param programServiceTypeDTO
+     * @return
+     */
+    @PreAuthorize("hasAnyAuthority('program_service_type:add','program_service_type:edit')")
+    @PostMapping("save")
+    public ResponseEntity save(@Valid @RequestBody ProgramServiceTypeDTO programServiceTypeDTO) {
+        programServiceTypeService.saveType(programServiceTypeDTO);
+        return ResponseEntity.ok ("操作成功");
+    }
+
+    /**
+     * 删除业务类型
+     * @param ids
+     * @return
+     */
+    @PreAuthorize ("hasAuthority('program_service_type:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        return programServiceTypeService.deleteByIds(ids);
+    }
+
+    /**
+     * 查询全部一级业务类型
+     * @return
+     */
+    @GetMapping("getList")
+    public ResponseEntity<List<ProgramServiceTypeDTO>> getList() {
+        List<ProgramServiceTypeDTO> list = programServiceTypeService.getList();
+        return ResponseEntity.ok (list);
+    }
+}

+ 46 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/domain/ProgramServiceType.java

@@ -0,0 +1,46 @@
+package com.jeeplus.assess.program.serviceType.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 评估-项目管理-业务类型管理
+ * @TableName program_service_type
+ */
+@Data
+@TableName("program_service_type")
+public class ProgramServiceType extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 分类名称
+     */
+    private String name;
+
+    /**
+     * 父id
+     */
+    private String parentId;
+
+    /**
+     * 等级
+     */
+    private Integer level;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 父ids
+     */
+    private String parentIds;
+
+    private static final long serialVersionUID = 1L;
+}

+ 28 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/mapper/ProgramServiceTypeMapper.java

@@ -0,0 +1,28 @@
+package com.jeeplus.assess.program.serviceType.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.serviceType.domain.ProgramServiceType;
+import com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ProgramServiceTypeMapper extends BaseMapper<ProgramServiceType> {
+
+    IPage<ProgramServiceTypeDTO> findList(Page<ProgramServiceTypeDTO> page, @Param(Constants.WRAPPER) QueryWrapper<ProgramServiceType> queryWrapper);
+
+    ProgramServiceTypeDTO queryById(@Param("id") String id);
+
+    public List<ProgramServiceTypeDTO> getList();
+
+}
+
+
+
+

+ 80 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/mapper/xml/ProgramServiceTypeMapper.xml

@@ -0,0 +1,80 @@
+<?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.serviceType.mapper.ProgramServiceTypeMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+            <result property="level" column="level" jdbcType="INTEGER"/>
+            <result property="sort" column="sort" jdbcType="INTEGER"/>
+            <result property="parentIds" column="parent_ids" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        pst.id,
+        pst.create_by,
+        pst.create_date,
+        pst.update_by,
+        pst.update_date,
+        pst.del_flag,
+        pst.remarks,
+        pst.name,
+        pst.parent_id,
+        pst.level,
+        pst.sort
+    </sql>
+
+    <select id="findList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_service_type pst
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="queryById" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_service_type pst
+        where pst.del_flag = '0' and pst.id = #{id}
+    </select>
+
+    <select id="getList" resultMap="map">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_service_type pst
+        where pst.del_flag = '0' and pst.parent_id = '0'
+    </select>
+
+    <resultMap id="map" type="com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_date" jdbcType="TIMESTAMP"/>
+        <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_date" jdbcType="TIMESTAMP"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+        <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+        <result property="name" column="name" jdbcType="VARCHAR"/>
+        <result property="parentId" column="parent_id" jdbcType="VARCHAR"/>
+        <result property="level" column="level" jdbcType="INTEGER"/>
+        <result property="sort" column="sort" jdbcType="INTEGER"/>
+        <result property="parentIds" column="parent_ids" jdbcType="VARCHAR"/>
+        <collection property="childrenList" column="id" select="getChildList" ofType="com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO"/>
+    </resultMap>
+
+    <select id="getChildList" resultType="com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO">
+        select
+        <include refid="Base_Column_List"></include>
+        from program_service_type pst
+        where pst.del_flag = '0' and pst.parent_id = ${id}
+    </select>
+
+</mapper>

+ 80 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/service/ProgramServiceTypeService.java

@@ -0,0 +1,80 @@
+package com.jeeplus.assess.program.serviceType.service;
+
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.jeeplus.assess.program.serviceType.domain.ProgramServiceType;
+import com.jeeplus.assess.program.serviceType.mapper.ProgramServiceTypeMapper;
+import com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO;
+import com.jeeplus.assess.program.serviceType.service.mapstruct.ProgramServiceTypeWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ProgramServiceTypeService extends ServiceImpl<ProgramServiceTypeMapper, ProgramServiceType> {
+
+    @Resource
+    private ProgramServiceTypeMapper programServiceTypeMapper;
+
+    public IPage<ProgramServiceTypeDTO> findList(Page<ProgramServiceTypeDTO> page, QueryWrapper<ProgramServiceType> queryWrapper){
+        queryWrapper.eq("pst.del_flag","0").orderByAsc("pst.sort");
+        return programServiceTypeMapper.findList(page,queryWrapper);
+    }
+
+    public ProgramServiceTypeDTO queryById(String id) {
+
+        ProgramServiceTypeDTO programServiceTypeDTO = programServiceTypeMapper.queryById(id);
+
+        return programServiceTypeDTO;
+    }
+
+    public ResponseEntity saveType(ProgramServiceTypeDTO programServiceTypeDTO) {
+        ProgramServiceType programServiceType = ProgramServiceTypeWrapper.INSTANCE.toEntity(programServiceTypeDTO);
+        if (ObjectUtil.isNotEmpty(programServiceTypeDTO)) {
+            if (StringUtils.isBlank(programServiceTypeDTO.getId())) {
+                if (StringUtils.isNotBlank(programServiceTypeDTO.getParentId())){
+                    if ("0".equals(programServiceTypeDTO.getParentId())){
+                        programServiceType.setLevel(1);
+                        programServiceType.setParentIds("0,");
+                    }else{
+                        ProgramServiceType byId = this.getById(programServiceTypeDTO.getParentId());
+                        ProgramServiceTypeDTO pbt = ProgramServiceTypeWrapper.INSTANCE.toDTO(byId);
+                        if(ObjectUtil.isNotEmpty(pbt)){
+                            programServiceType.setLevel(pbt.getLevel()+1);
+                            programServiceType.setParentIds(pbt.getParentIds()+pbt.getId()+",");
+                        }
+                    }
+                }
+            }
+        }
+        this.saveOrUpdate(programServiceType);
+        return ResponseEntity.ok("保存成功");
+    }
+
+    public ResponseEntity deleteByIds(String ids) {
+        String idArray[] =ids.split(",");
+        if(CollectionUtil.isNotEmpty(Lists.newArrayList (idArray))){
+            List<String> list = this.list(new QueryWrapper<ProgramServiceType>().lambda().in(ProgramServiceType::getParentId, Lists.newArrayList(idArray))).stream().distinct().map(ProgramServiceType::getId).collect(Collectors.toList());
+            this.removeByIds (list);
+        }
+        this.removeByIds (Lists.newArrayList (idArray));
+        return ResponseEntity.ok ("删除成功");
+    }
+
+    public List<ProgramServiceTypeDTO> getList() {
+        List<ProgramServiceTypeDTO> list = programServiceTypeMapper.getList();
+        return list;
+    }
+
+}

+ 50 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/service/dto/ProgramServiceTypeDTO.java

@@ -0,0 +1,50 @@
+package com.jeeplus.assess.program.serviceType.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 评估-项目管理-业务类型管理
+ */
+@Data
+public class ProgramServiceTypeDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 分类名称
+     */
+    private String name;
+
+    /**
+     * 父id
+     */
+    private String parentId;
+
+    /**
+     * 等级
+     */
+    private Integer level;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 父ids
+     */
+    private String parentIds;
+
+    /**
+     * 子集合
+     */
+    private List<ProgramServiceTypeDTO> childrenList;
+
+    private static final long serialVersionUID = 1L;
+}

+ 15 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/serviceType/service/mapstruct/ProgramServiceTypeWrapper.java

@@ -0,0 +1,15 @@
+package com.jeeplus.assess.program.serviceType.service.mapstruct;
+
+import com.jeeplus.assess.program.serviceType.domain.ProgramServiceType;
+import com.jeeplus.assess.program.serviceType.service.dto.ProgramServiceTypeDTO;
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProgramServiceTypeWrapper extends EntityWrapper<ProgramServiceTypeDTO, ProgramServiceType>{
+
+        ProgramServiceTypeWrapper INSTANCE = Mappers.getMapper(ProgramServiceTypeWrapper.class);
+
+}

+ 60 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/controller/ProofreadInfoController.java

@@ -0,0 +1,60 @@
+package com.jeeplus.assess.proofread.controller;
+
+import com.jeeplus.assess.proofread.domain.ProofreadDetail;
+import com.jeeplus.assess.proofread.domain.ProofreadType;
+import com.jeeplus.assess.proofread.mapper.ProofreadTypeMapper;
+import com.jeeplus.assess.proofread.service.ProofreadInfoService;
+import com.jeeplus.assess.proofread.service.ProofreadTypeService;
+import com.jeeplus.assess.proofread.service.dto.ProofreadInfoDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@Api(tags ="项目登记校对")
+@RequestMapping(value = "/proofread/info")
+public class ProofreadInfoController {
+
+    @Resource
+    private ProofreadInfoService service;
+
+    /**
+     * 新增/修改
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "新增/修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody ProofreadInfoDto dto) {
+        String s = service.save(dto);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 根据项目id查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据项目id查询")
+    @GetMapping("/findById")
+    public ResponseEntity<ProofreadInfoDto> findById(String id, String type) {
+        ProofreadInfoDto info = service.findById(id, type);
+        return ResponseEntity.ok(info);
+    }
+
+    /**
+     * 初始化类型列表查询
+     * @return
+     */
+    @ApiOperation(value = "初始化类型列表查询")
+    @GetMapping("/list")
+    public ResponseEntity<List<ProofreadDetail>> list(String type) {
+        List<ProofreadDetail> list = service.list(type);
+        return ResponseEntity.ok(list);
+    }
+
+}

+ 68 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/controller/ProofreadIssuedController.java

@@ -0,0 +1,68 @@
+package com.jeeplus.assess.proofread.controller;
+
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.assess.proofread.domain.ProofreadIssued;
+import com.jeeplus.assess.proofread.service.ProofreadIssuedService;
+import com.jeeplus.assess.proofread.service.dto.ProofreadInfoDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@Api(tags ="报告签发单")
+@RequestMapping(value = "/proofread/issued")
+public class ProofreadIssuedController {
+
+    @Resource
+    private ProofreadIssuedService service;
+
+    /**
+     * 新增/修改
+     * @param issued
+     * @return
+     */
+    @ApiOperation(value = "新增/修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody ProofreadIssued issued) {
+        String s = service.save(issued);
+        return ResponseUtil.newInstance().add("businessTable", "proofread_issued").add("businessId", s).ok ("操作成功");
+    }
+
+    /**
+     * 根据项目id查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据项目id查询")
+    @GetMapping("/findById")
+    public ResponseEntity<ProofreadIssued> findById(String id) {
+        ProofreadIssued info = service.findById(id);
+        return ResponseEntity.ok(info);
+    }
+
+    /**
+     * 根据项目id查询初始化信息
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据项目id查询初始化信息")
+    @GetMapping("/findProjectInfoById")
+    public ResponseEntity<ProofreadIssued> findProjectInfoById(String id) {
+        ProofreadIssued info = service.findProjectInfoById(id);
+        return ResponseEntity.ok(info);
+    }
+
+    /**
+     * 根据项目id修改状态值
+     * @param issued
+     * @return
+     */
+    @ApiOperation(value = "根据项目id修改状态值")
+    @PostMapping("/updateStatusById")
+    public void updateStatusById(@RequestBody ProofreadIssued issued) {
+        service.updateStatusById(issued);
+    }
+}

+ 90 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/controller/ProofreadTypeController.java

@@ -0,0 +1,90 @@
+package com.jeeplus.assess.proofread.controller;
+
+import com.jeeplus.core.service.TreeService;
+import com.jeeplus.assess.proofread.domain.ProofreadType;
+import com.jeeplus.assess.proofread.mapper.ProofreadTypeMapper;
+import com.jeeplus.assess.proofread.service.ProofreadTypeForTreeDataService;
+import com.jeeplus.assess.proofread.service.ProofreadTypeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@Api(tags ="项目登记校对")
+@RequestMapping(value = "/proofread/type")
+public class ProofreadTypeController {
+
+    @Resource
+    private ProofreadTypeService service;
+
+    @Resource
+    private ProofreadTypeMapper mapper;
+
+    @Resource
+    private ProofreadTypeForTreeDataService treeDataService;
+
+    /**
+     * 列表查询
+     * @param type
+     * @return
+     */
+    @ApiOperation(value = "列表查询")
+    @GetMapping("/list")
+    public ResponseEntity<List<ProofreadType>> list(ProofreadType type) {
+        List<ProofreadType> list = service.list(type);
+        return ResponseEntity.ok(list);
+    }
+
+    /**
+     * 新增/修改
+     * @param info
+     * @return
+     */
+    @ApiOperation(value = "新增/修改")
+    @PostMapping("/save")
+    public ResponseEntity<String> save(@RequestBody ProofreadType info) {
+        String s = service.saveType(info);
+        return ResponseEntity.ok(s);
+    }
+
+    /**
+     * 根据id查询
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id查询")
+    @GetMapping("/findById")
+    public ResponseEntity<ProofreadType> findById(String id) {
+        ProofreadType info = mapper.selectById(id);
+        return ResponseEntity.ok(info);
+    }
+
+    /**
+     * 根据id删除
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id删除")
+    @GetMapping("/deleteById")
+    public ResponseEntity<String> deleteById(String id) {
+        mapper.deleteById(id);
+        return ResponseEntity.ok("操作完成");
+    }
+
+    /**
+     * 查询树形
+     * @param extId 排除的ID
+     * @return
+     */
+    @ApiOperation(value = "查询树形")
+    @GetMapping("/treeData")
+    public ResponseEntity<List<ProofreadType>> treeData(@RequestParam(required = false) String extId, @RequestParam(required = false) String type) throws Exception{
+        List<ProofreadType> infos = treeDataService.treeDataForType(extId, type);
+        return ResponseEntity.ok(infos);
+    }
+
+}

+ 54 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadDetail.java

@@ -0,0 +1,54 @@
+package com.jeeplus.assess.proofread.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName(value = "proofread_detail")
+public class ProofreadDetail extends BaseEntity {
+
+    /**
+     * 序号
+     */
+    private Integer serialNumber;
+
+    /**
+     * 基本信息
+     */
+    private String infoId;
+
+    /**
+     * 类型id
+     */
+    private String typeId;
+
+    /**
+     * 类型名称
+     */
+    @TableField(exist = false)
+    private String typeName;
+
+    /**
+     * 审核意见
+     */
+    private String reviewComments;
+
+    /**
+     * 是否适用
+     */
+    private String isApply;
+
+    /**
+     * 回复意见
+     */
+    private String replyComments;
+
+    /**
+     * 序号
+     */
+    @TableField(exist = false)
+    private String sort;
+
+}

+ 43 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadInfo.java

@@ -0,0 +1,43 @@
+package com.jeeplus.assess.proofread.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName(value = "proofread_info")
+public class ProofreadInfo extends BaseEntity {
+
+    /**
+     * 类型
+     */
+    private String type;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 项目审批人
+     */
+    private String processUserId;
+
+    /**
+     * 审核日期
+     */
+    private Date processDate;
+
+    /**
+     * 保留意见
+     */
+    private String reservations;
+
+    /**
+     * 未修改意见
+     */
+    private String unmodifiedComments;
+    
+}

+ 137 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadIssued.java

@@ -0,0 +1,137 @@
+package com.jeeplus.assess.proofread.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@TableName(value = "proofread_issued")
+public class ProofreadIssued extends BaseEntity {
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 项目名称
+     */
+    @TableField(exist = false)
+    private String projectName;
+
+    /**
+     * 评估基准日
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date assessmentDate;
+
+    /**
+     * 报告文号
+     */
+    @TableField(exist = false)
+    private String reportNo;
+
+    /**
+     * 项目负责人id
+     */
+    @TableField(exist = false)
+    private String projectManager;
+
+    /**
+     * 项目负责人
+     */
+    @TableField(exist = false)
+    private String projectManagerName;
+
+    /**
+     * 所属部门
+     */
+    @TableField(exist = false)
+    private String department;
+
+    /**
+     * 是否填写台账
+     */
+    private String isTxtz;
+
+    /**
+     * 报告电子档是否归档
+     */
+    private String isBgdzdgd;
+
+    /**
+     * 是否需要备案
+     */
+    private String isXyba;
+
+    /**
+     * 是否完成备案
+     */
+    private String isWcba;
+
+    /**
+     * 用印类型
+     */
+    private String sealType;
+
+    /**
+     * 评估报告(份)
+     */
+    private String assessmentReport;
+
+    /**
+     * 评估说明(份)
+     */
+    private String assessmentExplain;
+
+    /**
+     * 评估明细表(份)
+     */
+    private String assessmentDetail;
+
+    /**
+     * 咨询报告(份)
+     */
+    private String consultingReport;
+
+    /**
+     * 审批状态
+     */
+    private String status;
+
+    /**
+     * 审批通过时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+    private Date agreeTime;
+
+    /**
+     * 审批人id
+     */
+    private String agreeUserId;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程类型
+     */
+    private String processDefinitionId;
+
+    /**
+     * 项目-报告类型
+     */
+    @TableField(exist = false)
+    private String reportType;
+
+    private String serviceType;
+}

+ 41 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/domain/ProofreadType.java

@@ -0,0 +1,41 @@
+package com.jeeplus.assess.proofread.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.TreeEntity;
+import lombok.Data;
+
+@Data
+@TableName(value = "proofread_type")
+public class ProofreadType extends TreeEntity<ProofreadType> {
+
+    /**
+     * 类型1自检2浏览审核记录
+     */
+    private String type;
+
+    /**
+     * 父节点id
+     */
+    private String parentId;
+
+    /**
+     * 父节点id集合
+     */
+    private String parentIds;
+
+    /**
+     * 层级
+     */
+    private String level;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+}

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadDetailMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.proofread.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.proofread.domain.ProofreadDetail;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ProofreadDetailMapper extends BaseMapper<ProofreadDetail> {
+
+    List<ProofreadDetail> findByInfoId(@Param("id") String id);
+
+    List<ProofreadDetail> findList(@Param("type")String type);
+
+}

+ 14 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadInfoMapper.java

@@ -0,0 +1,14 @@
+package com.jeeplus.assess.proofread.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.proofread.domain.ProofreadInfo;
+import com.jeeplus.assess.proofread.service.dto.ProofreadInfoDto;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProofreadInfoMapper extends BaseMapper<ProofreadInfo> {
+
+    ProofreadInfoDto findByProjectId(@Param("id") String id, @Param("type") String type);
+
+}

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadIssuedMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.proofread.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.assess.proofread.domain.ProofreadIssued;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProofreadIssuedMapper extends BaseMapper<ProofreadIssued> {
+
+    ProofreadIssued findById(@Param("id")String id);
+
+    ProofreadIssued findProjectInfoById(@Param("id")String id);
+
+    void updateStatusById(@Param("id")String id, @Param("status")String status);
+
+}

+ 17 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/ProofreadTypeMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.assess.proofread.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.core.domain.TreeMapper;
+import com.jeeplus.assess.proofread.domain.ProofreadType;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProofreadTypeMapper extends BaseMapper<ProofreadType>, TreeMapper<ProofreadType> {
+
+    Integer checkNameIsExist(@Param("parentId")String parentId, @Param("name") String name, @Param("type")String type);
+
+    Integer getNo(@Param("parentId") String parentId, @Param("type")String type);
+
+    Integer getLevel(@Param("parentId") String parentId, @Param("type")String type);
+}

+ 48 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadDetailMapper.xml

@@ -0,0 +1,48 @@
+<?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.proofread.mapper.ProofreadDetailMapper">
+
+	<select id="findByInfoId" resultType="com.jeeplus.assess.proofread.domain.ProofreadDetail">
+		SELECT
+			a.id,
+			a.create_by,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.info_id,
+			a.type_id,
+			b.`name` AS type_name,
+			ifnull(a.review_comments,"") as "reviewComments",
+			ifnull(a.reply_comments,"") as "replyComments",
+			ifnull(a.is_apply,"") as "isApply",
+			b.sort
+		FROM proofread_type b
+		LEFT JOIN proofread_detail a ON a.type_id = b.id
+		AND a.del_flag = 0
+		AND a.info_id = #{id}
+		ORDER BY b.sort
+	</select>
+
+	<select id="findList" resultType="com.jeeplus.assess.proofread.domain.ProofreadDetail">
+		SELECT
+			id AS type_id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			del_flag,
+			parent_id,
+			parent_ids,
+			`level`,
+			`name` AS type_name,
+			sort
+		FROM
+			proofread_type
+		WHERE
+			del_flag = 0
+			AND `type` = #{type}
+		ORDER BY sort
+	</select>
+
+</mapper>

+ 33 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadInfoMapper.xml

@@ -0,0 +1,33 @@
+<?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.proofread.mapper.ProofreadInfoMapper">
+
+	<select id="findByProjectId" resultType="com.jeeplus.assess.proofread.service.dto.ProofreadInfoDto">
+		SELECT
+			a.id,
+			a.create_by,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.type,
+			a.project_id,
+			b.`name` AS project_name,
+			b.assessment_date,
+			d.`name` AS project_manager_name,
+			a.process_user_id,
+			c.name AS process_user_name,
+			a.process_date,
+			a.reservations,
+			a.unmodified_comments
+		FROM proofread_info a
+		LEFT JOIN program_project_list_info b ON a.project_id = b.id
+		LEFT JOIN sys_user c ON a.process_user_id = c.id
+		LEFT JOIN sys_user d ON b.project_manager = d.id
+		WHERE
+			a.del_flag = 0
+			AND a.project_id = #{id}
+			AND a.type = #{type}
+	</select>
+
+</mapper>

+ 72 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadIssuedMapper.xml

@@ -0,0 +1,72 @@
+<?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.proofread.mapper.ProofreadIssuedMapper">
+
+	<select id="findById" resultType="com.jeeplus.assess.proofread.domain.ProofreadIssued">
+		SELECT
+			a.id,
+			a.create_by,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.project_id,
+			b.`name` AS project_name,
+			b.assessment_date,
+			b.project_manager,
+			b.report_type,
+			c.report_no,
+			d.`name` AS project_manager_name,
+			e.`name` AS department,
+			a.is_txtz,
+			a.is_bgdzdgd,
+			a.is_xyba,
+			a.is_wcba,
+			a.seal_type,
+			a.assessment_report,
+			a.assessment_explain,
+			a.assessment_detail,
+			a.consulting_report,
+			a.status,
+			a.agree_time,
+			a.agree_user_id,
+			a.proc_ins_id,
+			a.process_definition_id,
+			a.service_type
+		FROM
+			proofread_issued a
+			LEFT JOIN program_project_list_info b ON a.project_id = b.id
+			LEFT JOIN program_report_no c ON b.id = c.program_id
+			LEFT JOIN sys_user d ON b.project_manager = d.id
+			LEFT JOIN sys_office e ON d.office_id = e.id
+		WHERE
+			a.del_flag = 0
+			AND a.project_id = #{id}
+	</select>
+
+	<select id="findProjectInfoById" resultType="com.jeeplus.assess.proofread.domain.ProofreadIssued">
+		SELECT
+			b.id AS project_id,
+			b.`name` AS project_name,
+			b.assessment_date,
+			b.project_manager,
+			c.report_no,
+			d.`name` AS project_manager_name,
+			e.`name` AS department,
+			b.report_type
+		FROM
+			program_project_list_info b
+			LEFT JOIN program_report_no c ON b.id = c.program_id
+			LEFT JOIN sys_user d ON b.project_manager = d.id
+			LEFT JOIN sys_office e ON d.office_id = e.id
+		WHERE
+			b.del_flag = 0
+			AND b.id = #{id}
+	</select>
+
+	<update id="updateStatusById">
+		update proofread_issued set status = #{status}
+		 where del_flag = 0 AND id = #{id}
+	</update>
+
+</mapper>

+ 38 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/mapper/xml/ProofreadTypeMapper.xml

@@ -0,0 +1,38 @@
+<?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.proofread.mapper.ProofreadTypeMapper">
+
+	<select id="checkNameIsExist" resultType="java.lang.Integer">
+		SELECT
+			COUNT( 0 )
+		FROM
+			proofread_type
+		WHERE
+			del_flag = 0
+			AND parent_id = #{parentId}
+			AND `name` = #{name}
+			AND `type` = #{type}
+	</select>
+
+	<select id="getNo" resultType="java.lang.Integer">
+		SELECT
+			(MAX(`sort`) + 1) AS `sort`
+		FROM
+			proofread_type
+		WHERE
+			del_flag = 0
+			AND parent_id = #{parentId}
+			AND `type` = #{type}
+	</select>
+
+	<select id="getLevel" resultType="java.lang.Integer">
+		SELECT
+			(MAX(level) + 1) AS `level`
+		FROM
+			proofread_type
+		WHERE
+			del_flag = 0
+			AND id = #{parentId}
+			AND `type` = #{type}
+	</select>
+</mapper>

+ 113 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadInfoService.java

@@ -0,0 +1,113 @@
+package com.jeeplus.assess.proofread.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jeeplus.assess.proofread.domain.ProofreadDetail;
+import com.jeeplus.assess.proofread.domain.ProofreadInfo;
+import com.jeeplus.assess.proofread.mapper.ProofreadDetailMapper;
+import com.jeeplus.assess.proofread.mapper.ProofreadInfoMapper;
+import com.jeeplus.assess.proofread.service.dto.ProofreadInfoDto;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.UserUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+public class ProofreadInfoService {
+
+    @Resource
+    private ProofreadInfoMapper infoMapper;
+
+    @Resource
+    private ProofreadDetailMapper detailMapper;
+
+    public String save(ProofreadInfoDto dto) {
+        if (StringUtils.isNotEmpty(dto.getProjectId())) {
+            LambdaQueryWrapper<ProofreadInfo> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(ProofreadInfo::getProjectId, dto.getProjectId());
+            wrapper.eq(ProofreadInfo::getDelFlag, 0);
+            wrapper.eq(ProofreadInfo::getType, dto.getType());
+            ProofreadInfo proofreadInfo = infoMapper.selectOne(wrapper);
+            if (proofreadInfo != null) {
+                update(dto);
+            }else {
+                add(dto);
+            }
+        }
+        return "操作成功";
+    }
+
+    public String add(ProofreadInfoDto dto) {
+        //生成主键id值
+        String id = UUID.randomUUID().toString().replace("-", "");
+        //获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        //保存基本信息
+        ProofreadInfo info = new ProofreadInfo();
+        BeanUtils.copyProperties(dto, info);
+        info.setId(id);
+        info.setCreateById(userDTO.getId());
+        info.setCreateTime(new Date());
+        info.setUpdateById(userDTO.getId());
+        info.setUpdateTime(new Date());
+        infoMapper.insert(info);
+        //明细表相关信息
+        if (CollectionUtil.isNotEmpty(dto.getDetails())) {
+            for (ProofreadDetail detail:dto.getDetails()) {
+                String detailId = UUID.randomUUID().toString().replace("-", "");
+                detail.setId(detailId);
+                detail.setInfoId(id);
+                detail.setCreateById(userDTO.getId());
+                detail.setCreateTime(new Date());
+                detail.setUpdateById(userDTO.getId());
+                detail.setUpdateTime(new Date());
+                detailMapper.insert(detail);
+            }
+        }
+        return dto.getProjectId();
+    }
+
+    public String update(ProofreadInfoDto dto) {
+        //获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        //修改基本信息
+        ProofreadInfo info = new ProofreadInfo();
+        BeanUtils.copyProperties(dto, info);
+        info.setUpdateById(userDTO.getId());
+        info.setUpdateTime(new Date());
+        LambdaQueryWrapper<ProofreadInfo> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ProofreadInfo::getProjectId, dto.getProjectId());
+        wrapper.eq(ProofreadInfo::getType, dto.getType());
+        infoMapper.update(info, wrapper);
+        //明细表相关信息修改
+        if (CollectionUtil.isNotEmpty(dto.getDetails())) {
+            for (ProofreadDetail detail:dto.getDetails()) {
+                detail.setUpdateById(userDTO.getId());
+                detail.setUpdateTime(new Date());
+                detailMapper.updateById(detail);
+            }
+        }
+        return dto.getProjectId();
+    }
+
+    public ProofreadInfoDto findById(String id, String type) {
+        //查询基本信息
+        ProofreadInfoDto dto = infoMapper.findByProjectId(id, type);
+        if (dto != null) {
+            //查询扩展信息
+            List<ProofreadDetail> details = detailMapper.findByInfoId(dto.getId());
+            dto.setDetails(details);
+        }
+        return dto;
+    }
+
+    public List<ProofreadDetail> list(String type) {
+        return detailMapper.findList(type);
+    }
+}

+ 67 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadIssuedService.java

@@ -0,0 +1,67 @@
+package com.jeeplus.assess.proofread.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.assess.proofread.domain.ProofreadIssued;
+import com.jeeplus.assess.proofread.mapper.ProofreadIssuedMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.UUID;
+
+@Service
+public class ProofreadIssuedService {
+
+    @Resource
+    private ProofreadIssuedMapper mapper;
+
+    public String save(ProofreadIssued issued){
+        ProofreadIssued byId = findById(issued.getProjectId());
+        if (byId != null) {
+            update(issued);
+            return byId.getId();
+        } else {
+            return add(issued);
+        }
+    }
+
+    public String add(ProofreadIssued issued) {
+        //获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        String id = issued.getProjectId();
+        issued.setId(id);
+        issued.setCreateById(userDTO.getId());
+        issued.setCreateTime(new Date());
+        issued.setUpdateById(userDTO.getId());
+        issued.setUpdateTime(new Date());
+        issued.setDelFlag(0);
+        mapper.insert(issued);
+        return id;
+    }
+
+    public void update(ProofreadIssued issued) {
+        //获取当前登录人信息
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        issued.setUpdateById(userDTO.getId());
+        issued.setUpdateTime(new Date());
+        LambdaQueryWrapper<ProofreadIssued> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(ProofreadIssued::getProjectId, issued.getProjectId());
+        mapper.update(issued, wrapper);
+    }
+
+    public ProofreadIssued findById(String id) {
+        ProofreadIssued issued = mapper.findById(id);
+        return issued;
+    }
+
+    public ProofreadIssued findProjectInfoById(String id) {
+        ProofreadIssued issued = mapper.findProjectInfoById(id);
+        return issued;
+    }
+
+    public void updateStatusById(ProofreadIssued issued) {
+        mapper.updateStatusById(issued.getId(), issued.getStatus());
+    }
+}

+ 105 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadTypeForTreeDataService.java

@@ -0,0 +1,105 @@
+package com.jeeplus.assess.proofread.service;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.jeeplus.core.service.TreeService;
+import com.jeeplus.core.service.dto.TreeDTO;
+import com.jeeplus.assess.proofread.domain.ProofreadType;
+import com.jeeplus.assess.proofread.mapper.ProofreadTypeMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@Service
+public class ProofreadTypeForTreeDataService extends TreeService<ProofreadTypeMapper, ProofreadType> {
+
+    /**
+     * 获取JSON树形数据。
+     *
+     * @param extId 排除的ID
+     * @param type 禁选类型
+     * @return
+     */
+    public List<ProofreadType> treeDataForType(String extId, String type) throws Exception{
+        List <ProofreadType> allList = super.list (new LambdaQueryWrapper<>( (Class <ProofreadType>) entityClass ).eq(ProofreadType::getType, type).orderByAsc ( ProofreadType::getSort ));
+        ProofreadType root = entityClass.getConstructor ( ).newInstance ( );
+        root.setId ( TreeDTO.getRootId () );
+        List <ProofreadType> rootTree = this.formatListToTreeForType ( root, allList, extId );
+        return rootTree;
+    }
+
+    /**
+     * 以root为根节点, 将allList从线性列表转为树形列表
+     *
+     * @param root    根节点, 为空抛出空指针异常
+     * @param allList 所有需要参与构造为树的列表
+     * @param extId   需要排除在树之外的节点(子节点一并被排除)
+     * @return java.util.List<T>
+     * @Author 滕鑫源
+     * @Date 2020/10/23 17:04
+     **/
+    public List <ProofreadType> formatListToTreeForType (ProofreadType root, List <ProofreadType> allList, String extId) {
+        String rootId = root.getId ( );
+        // 最终的树形态
+        List <ProofreadType> trees = Lists.newArrayList ( );
+
+        // 把需要构造树的所有列表, 根据以父id作为key, 整理为列表
+        Map<String, List <ProofreadType>> treeMap = Maps.newHashMap ( );
+        for (ProofreadType entity : allList) {
+            List <ProofreadType> entities = treeMap.get ( entity.getParentId ( ) );
+            if ( entities == null ) {
+                entities = Lists.newLinkedList ( );
+            }
+
+            // 剔除排除项, 构造treeMap, 转递归为线性操作
+            if ( StrUtil.isBlank ( extId ) || (!extId.equals ( entity.getId ( ) ) && entity.getParentIds ( ).indexOf ( "," + extId + "," ) == -1) ) {
+                entities.add ( entity );
+                treeMap.put ( entity.getParentId ( ), entities );
+            }
+
+        }
+
+        // 没有给定的子树, 返回空树
+        if ( treeMap.get ( rootId ) == null || treeMap.get ( rootId ).isEmpty ( ) ) {
+            return trees;
+        }
+
+        // 开始递归格式化
+        List <ProofreadType> children = treeMap.get ( rootId );
+        for (ProofreadType parent : children) {
+            formatFillChildren ( parent, treeMap );
+            trees.add ( parent );
+        }
+        if ( StrUtil.equals ( rootId, TreeDTO.getRootId () ) ) {
+            return children;
+        } else {
+            root.setChildren ( trees );
+            return Lists.newArrayList ( root );
+        }
+    }
+
+    /**
+     * 从treeMap中取出子节点填入parent, 并递归此操作
+     *
+     * @param parent
+     * @param treeMap
+     * @return void
+     * @Author 滕鑫源
+     * @Date 2020/9/30 16:33
+     **/
+    private void formatFillChildren(ProofreadType parent, Map <String, List <ProofreadType>> treeMap) {
+        List <ProofreadType> children = treeMap.get ( parent.getId ( ) );
+        parent.setChildren ( children );
+        if ( children != null && !children.isEmpty ( ) ) {
+            for (ProofreadType child : children) {
+                formatFillChildren ( child, treeMap );
+            }
+        }
+    }
+
+}

+ 132 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/ProofreadTypeService.java

@@ -0,0 +1,132 @@
+package com.jeeplus.assess.proofread.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.TreeService;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.assess.proofread.domain.ProofreadType;
+import com.jeeplus.assess.proofread.mapper.ProofreadTypeMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+@Service
+public class ProofreadTypeService extends TreeService<ProofreadTypeMapper, ProofreadType> {
+
+    @Resource
+    private ProofreadTypeMapper mapper;
+
+    public List<ProofreadType> list(ProofreadType type) {
+        LambdaQueryWrapper<ProofreadType> wrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotEmpty(type.getName())) {
+            wrapper.like(ProofreadType::getName, type.getName());
+        }
+        wrapper.eq(BaseEntity::getDelFlag, 0);
+        wrapper.eq(ProofreadType::getType, type.getType());
+        wrapper.orderByAsc(ProofreadType::getSort);
+        return mapper.selectList(wrapper);
+    }
+
+    public String saveType(ProofreadType type) {
+        // parentId未传值,则表示一级菜单
+        if(StringUtils.isEmpty(type.getParentId())) {
+            type.setParentId("0");
+        }
+        // 判断名称是否已存在
+        Integer isExist = mapper.checkNameIsExist(type.getParentId(), type.getName(), type.getType());
+        if (isExist > 0) {
+            return "该名称已存在";
+        }
+        // 保存数据
+        if (StringUtils.isNotEmpty(type.getId())) {
+            return update(type);
+        }
+        return add(type);
+    }
+
+    /**
+     * 新增
+     * @param type
+     * @return
+     */
+    public String add(ProofreadType type) {
+        // 获取当前登录人信息
+        UserDTO userDto = UserUtils.getCurrentUserDTO();
+        // 生成id值
+        String id = UUID.randomUUID().toString().replace("-", "");
+        type.setId(id);
+        type.setCreateById(userDto.getId());
+        type.setCreateTime(new Date());
+        type.setUpdateById(userDto.getId());
+        type.setUpdateTime(new Date());
+        type.setDelFlag(0);
+        // 生成序号/层级
+        getNo(type);
+        mapper.insert(type);
+        return "操作完成";
+    }
+
+    /**
+     * 修改
+     * @param info
+     * @return
+     */
+    public String update(ProofreadType info) {
+        // 获取当前登录人信息
+        UserDTO userDto = UserUtils.getCurrentUserDTO();
+        info.setUpdateById(userDto.getId());
+        info.setUpdateTime(new Date());
+        mapper.updateById(info);
+        return "操作完成";
+    }
+
+    /**
+     * 生成序号/层级
+     * @param type
+     * @return
+     */
+    public ProofreadType getNo(ProofreadType type) {
+        ProofreadType parentInfo = null;
+        if (!"0".equals(type.getParentId())) {
+            //根据parentId查询父节点信息
+            LambdaQueryWrapper<ProofreadType> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(BaseEntity::getDelFlag, 0);
+            wrapper.eq(BaseEntity::getId, type.getParentId());
+            parentInfo = mapper.selectOne(wrapper);
+        }
+        //查询序号
+        Integer no = mapper.getNo(type.getParentId(), type.getType());
+        // 该层级下有数据,正常返回序号值
+        if (no != null) {
+            type.setSort(no);
+        } else {
+            // 父节点存在,根据父节点序号生成;不存在,则表示无上级层级,从1开始
+            if (parentInfo != null) {
+                String s = parentInfo.getSort() + "01";
+                type.setSort(Integer.parseInt(s));
+            } else {
+                type.setSort(1);
+            }
+        }
+        // 生成层级
+        //查询层级
+        Integer level = mapper.getLevel(type.getParentId(), type.getType());
+        if (level != null) {
+            type.setLevel(level.toString());
+        } else {
+            // 父节点存在,根据父节点level生成,不存在,则表示无上级层级,从1开始
+            if (parentInfo != null) {
+                Integer i = Integer.parseInt(parentInfo.getLevel())+1;
+                type.setLevel(i.toString());
+            } else {
+                type.setLevel("1");
+            }
+        }
+        return type;
+    }
+}

+ 80 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/proofread/service/dto/ProofreadInfoDto.java

@@ -0,0 +1,80 @@
+package com.jeeplus.assess.proofread.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.assess.proofread.domain.ProofreadDetail;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ProofreadInfoDto extends BaseEntity {
+
+    /**
+     * 类型
+     */
+    private String type;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 评估基准日
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date assessmentDate;
+
+    /**
+     * 项目负责人
+     */
+    @TableField(exist = false)
+    private String projectManagerName;
+
+    /**
+     * 项目审批人
+     */
+    private String processUserId;
+
+    /**
+     * 项目审批人
+     */
+    private String processUserName;
+
+    /**
+     * 审核日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date processDate;
+
+    /**
+     * 保留意见
+     */
+    private String reservations;
+
+    /**
+     * 未修改意见
+     */
+    private String unmodifiedComments;
+
+    /**
+     * 明细表
+     */
+    private List<ProofreadDetail> details;
+
+    /**
+     * 序号
+     */
+    @TableField(exist = false)
+    private String serialNumber;
+
+}

+ 25 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/utils/FreemarkerUtil.java

@@ -0,0 +1,25 @@
+package com.jeeplus.assess.utils;
+
+import freemarker.template.Template;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.Map;
+
+public class FreemarkerUtil {
+    public static void generateFile(Map<?, ?> dataMap, Template template, File file){
+
+        Template t = template;
+        try {
+            // 这个地方不能使用FileWriter因为需要指定编码类型否则生成的Word文档会因为有无法识别的编码而无法打开
+            Writer w = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
+            t.process(dataMap, w);
+            w.close();
+        } catch (Exception ex) {
+            ex.printStackTrace();
+            throw new RuntimeException(ex);
+        }
+    }
+}

+ 61 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/utils/ResponseUtil.java

@@ -0,0 +1,61 @@
+package com.jeeplus.assess.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.Calendar;
+
+public class ResponseUtil {
+    private static Logger logger = LoggerFactory.getLogger(ResponseUtil.class);
+
+    public static void docResponse(String fileName, File file, HttpServletResponse response) {
+        ServletOutputStream out = null;
+        FileInputStream fin = null;
+        try {
+            fin = new FileInputStream(file);
+            response.setCharacterEncoding("utf-8");
+            response.setContentType("application/octet-stream; charset=UTF-8");
+            // 设置浏览器以下载的方式处理该文件名
+            response.setHeader("Content-Disposition", "attachment;filename="
+                    .concat(String.valueOf(URLEncoder.encode(fileName, "UTF-8"))));
+            out = response.getOutputStream();
+            byte[] buffer = new byte[1024];  // 缓冲区
+            int bytesToRead = -1;
+            // 通过循环将读入的Word文件的内容输出到浏览器中
+            while ((bytesToRead = fin.read(buffer)) != -1) {
+                out.write(buffer, 0, bytesToRead);
+            }
+        } catch (Exception e) {
+            logger.error("导出模板文件发生错误!",e);
+        } finally {
+            try {
+                out.flush();
+                if (fin != null) fin.close();
+                if (out != null) out.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+
+        }
+    }
+
+
+    /**
+     * 获取当前时间年月日
+     * @return
+     */
+    public static String datePath(){
+        Calendar date = Calendar.getInstance();
+        String year = String.valueOf(date.get(Calendar.YEAR));
+        String month = String.valueOf(date.get(Calendar.MONTH)+1);
+        String day = String.valueOf(date.get(Calendar.DAY_OF_MONTH));
+        String path = "/"+year+"/"+month+"/"+day;
+        return path;
+    }
+}

+ 212 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/controller/WorkClientController.java

@@ -0,0 +1,212 @@
+package com.jeeplus.assess.workClientInfo.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.workClientInfo.domain.WorkClientInfo;
+import com.jeeplus.assess.workClientInfo.domain.dto.WorkClientInfosDto;
+import com.jeeplus.assess.workClientInfo.service.WorkClientService;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.TicketQueryUtils;
+import com.jeeplus.sys.utils.UserUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Api(tags ="workClientInfo")
+@RestController
+@RequestMapping(value = "/workClientInfo/workClientInfo")
+public class WorkClientController {
+
+    @Resource
+    private WorkClientService workClientService;
+
+    /**
+     * 客户信息列表
+     */
+    @ApiOperation(value = "客户信息列表")
+    @GetMapping(value = "list")
+    public ResponseEntity<IPage<WorkClientInfo>> list(WorkClientInfo workClientInfo, Page<WorkClientInfo> page) throws Exception {
+        QueryWrapper<WorkClientInfo> workClientInfoQueryWrapper = QueryWrapperGenerator.buildQueryCondition(workClientInfo, WorkClientInfo.class);
+        if (ObjectUtil.isNotEmpty(workClientInfo)) {
+            if (ObjectUtil.isNotEmpty(workClientInfo.getCreateDates())) {
+                workClientInfoQueryWrapper.between("a.create_date",workClientInfo.getCreateDates()[0], workClientInfo.getCreateDates()[1]);
+            }
+            if (StringUtils.isNotBlank(workClientInfo.getCreateById())) {
+                workClientInfoQueryWrapper.eq("a.create_by",workClientInfo.getCreateById());
+            }
+        }
+        IPage<WorkClientInfo> list = workClientService.list(page,workClientInfoQueryWrapper);
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        for (WorkClientInfo info: list.getRecords()) {
+            if(userDTO.getName().equals(info.getCreateById()) || userDTO.isAdmin()){
+                info.setCreateFlag("1");
+            }else{
+                info.setCreateFlag("0");
+            }
+        }
+        return ResponseEntity.ok (list);
+    }
+
+    /**
+     * 客户信息新增/修改
+     */
+    @ApiOperation(value = "客户信息新增/修改")
+    @PostMapping(value = "save")
+    public ResponseEntity save(@RequestBody WorkClientInfosDto workClientInfosDto) {
+        if(ObjectUtil.isNotEmpty(workClientInfosDto)){
+            if(ObjectUtil.isNotEmpty(workClientInfosDto.getWorkClientInfo())){
+                if(StringUtils.isBlank(workClientInfosDto.getWorkClientInfo().getName())){
+                    return ResponseEntity.badRequest().body("保存信息失败,没有获取到用户名称");
+                }
+                if(!workClientService.haveWorkClient(workClientInfosDto)){
+                    return ResponseEntity.badRequest().body("用户已存在,保存失败");
+                }
+                if(!workClientService.haveUscCode(workClientInfosDto)){
+                    return ResponseEntity.badRequest().body("统一社会信用代码已存在,保存失败");
+                }
+                if(StringUtils.isNotBlank(workClientInfosDto.getWorkClientInfo().getId())){
+                    return ResponseEntity.ok(workClientService.update(workClientInfosDto));
+                }else{
+                    return ResponseEntity.ok(workClientService.save(workClientInfosDto));
+                }
+            }else{
+                return ResponseEntity.badRequest().body("保存信息失败,没有获取到数据");
+            }
+        }
+        return ResponseEntity.badRequest().body("保存信息失败,没有获取到数据");
+    }
+
+    /**
+     * 新建或修改  判断统一社会信用代码是否重复
+     */
+    @ApiOperation(value = "判断统一社会信用代码是否重复")
+    @GetMapping(value = "haveUscCode")
+    public boolean haveUscCode(@RequestParam String id,@RequestParam String uscCode) {
+        WorkClientInfosDto workClientInfosDto = new WorkClientInfosDto();
+        WorkClientInfo workClientInfo = new WorkClientInfo();
+        workClientInfo.setId(id);
+        workClientInfo.setUscCode(uscCode);
+        workClientInfosDto.setWorkClientInfo(workClientInfo);
+        return workClientService.haveUscCode(workClientInfosDto);
+    }
+
+    /**
+     * 新建或修改  判断客户是否重复
+     */
+    @ApiOperation(value = "判断客户是否重复")
+    @GetMapping(value = "haveWorkClient")
+    public boolean haveWorkClient(@RequestParam String id,@RequestParam String name) {
+        WorkClientInfosDto workClientInfosDto = new WorkClientInfosDto();
+        WorkClientInfo workClientInfo = new WorkClientInfo();
+        workClientInfo.setId(id);
+        workClientInfo.setName(name);
+        workClientInfosDto.setWorkClientInfo(workClientInfo);
+        return workClientService.haveWorkClient(workClientInfosDto);
+    }
+
+    /**
+     * 客户信息删除
+     */
+    @ApiOperation(value = "客户信息删除")
+    @GetMapping(value = "remove")
+    public Map<String,Object> remove(@RequestParam String id) {
+        return workClientService.removeById(id);
+    }
+
+    /**
+     * 客户信息查询
+     */
+    @ApiOperation(value = "客户信息查询")
+    @GetMapping(value = "findById")
+    public WorkClientInfosDto findById(@RequestParam String id) {
+        return workClientService.findById(id);
+    }
+
+    /**
+     * 客户信息更新
+     */
+    @ApiOperation(value = "客户信息更新")
+    @PostMapping(value = "update")
+    public String update(@RequestBody WorkClientInfosDto workClientInfosDto) {
+        return workClientService.update(workClientInfosDto);
+    }
+
+    /**
+     * 根据名称模糊搜索客户信息
+     */
+    @ApiOperation(value = "根据名称模糊搜索客户信息")
+    @GetMapping(value = "findListByName")
+    public List<WorkClientInfo> findListByName(@RequestParam String name) {
+        return workClientService.findListByName(name);
+    }
+
+    /**
+     * 根据关键字查询相关企业
+     * @param keyword
+     * @return
+     */
+    @ApiOperation(value = "根据关键字查询相关企业")
+    @PostMapping("enterpriseSearchByName")
+    public String enterpriseSearchByName(@RequestParam String keyword){
+        if(StringUtils.isBlank(keyword)){
+            return null;
+        }
+        return  TicketQueryUtils.enterpriseSearchByName(keyword);
+    }
+
+    /**
+     * 根据id查询企业税号
+     * @param id
+     * @return
+     */
+    @ApiOperation(value = "根据id查询企业税号")
+    @PostMapping("enterpriseTicketInfo")
+    public Object enterpriseTicketInfo(String id){
+        if(StringUtils.isBlank(id)){
+            return null;
+        }
+        return TicketQueryUtils.enterpriseTicketInfoQueryById(id);
+    }
+
+    /**
+     * 根据名称、统一社会信用代码判断是否存在
+     */
+    @ApiOperation(value = "根据名称、统一社会信用代码判断是否存在")
+    @GetMapping(value = "isExist")
+    public Integer isExist(@RequestParam String param) {
+        return workClientService.isExist(param);
+    }
+
+    /**
+     * 客户信息列表-组件使用
+     */
+    @ApiOperation(value = "客户信息列表-组件使用")
+    @GetMapping(value = "componentList")
+    public ResponseEntity<IPage<WorkClientInfo>> componentList(WorkClientInfo workClientInfo, Page<WorkClientInfo> page) throws Exception {
+        QueryWrapper<WorkClientInfo> workClientInfoQueryWrapper = QueryWrapperGenerator.buildQueryCondition(workClientInfo, WorkClientInfo.class);
+        IPage<WorkClientInfo> list = workClientService.componentList(page,workClientInfoQueryWrapper);
+        return ResponseEntity.ok (list);
+    }
+
+    /**
+     * 客户信息查询-组件使用
+     */
+    @ApiOperation(value = "客户信息查询-组件使用")
+    @GetMapping(value = "componentById")
+    public WorkClientInfo componentById(@RequestParam String id) {
+        return workClientService.componentById(id);
+    }
+}

+ 31 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientBank.java

@@ -0,0 +1,31 @@
+package com.jeeplus.assess.workClientInfo.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("work_client_bank")
+public class WorkClientBank extends BaseEntity {
+
+    /**
+     * 开户银行
+     */
+    private String ourBank;
+
+    /**
+     * 开户账号
+     */
+    private String bankNumber;
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 外键关联客户信息表
+     */
+    private String clientId;
+
+}

+ 161 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientInfo.java

@@ -0,0 +1,161 @@
+package com.jeeplus.assess.workClientInfo.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 客户管理Entity
+ */
+@Data
+@TableName("work_client_info")
+public class WorkClientInfo extends BaseEntity {
+
+    /**
+     * 客户名称
+     */
+    @Query(tableColumn = "a.name")
+    private String name;
+
+    /**
+     * 法人代表
+     */
+    private String lawerPresint;
+
+    /**
+     * 组织机构代码
+     */
+    private String orUnicode;
+
+    /**
+     * 客户性质
+     */
+    @Query
+    private String companyType;
+
+    /**
+     * 客户行业
+     */
+    @Query
+    private String companyIndustry;
+
+    /**
+     * 客户类型
+     */
+    @Query
+    private String clientType;
+
+    /**
+     * 信用等级
+     */
+    private String creditRank;
+
+    /**
+     * 地区Id
+     */
+    @Query(type = QueryType.EQ)
+    private String areaId;
+
+    /**
+     * 地区名称
+     */
+    @TableField(exist = false)
+    private String areaName;
+
+    /**
+     * 邮政编码
+     */
+    private String zipCode;
+
+    /**
+     * 传真
+     */
+    private String fax;
+
+    /**
+     * 税务号
+     */
+    private String taxId;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 注册地址
+     */
+    private String registerAddress;
+
+    /**
+     * 公司网址
+     */
+    private String companyUrl;
+
+    /**
+     * 单位简介
+     */
+    private String remarks;
+
+    /**
+     * 创建人所属公司id
+     */
+    private String companyId;
+
+    /**
+     * 创建人所属部门id
+     */
+    private String officeId;
+
+    /**
+     * 地区父节点
+     */
+    private String areaParentIds;
+
+    /**
+     * 公司电话
+     */
+    private String telephone;
+
+    /**
+     * 是否拥有统一社会信用代码  1:有,2无
+     */
+    private Integer hasUscc;
+
+    /**
+     * 统一社会信用代码
+     */
+    @Query
+    private String uscCode;
+
+    /**
+     * 客户编号
+     */
+    private String number;
+
+    /**
+     * 代表方(以逗号分割)
+     */
+    @TableField(exist = false)
+    @Query(type = QueryType.EQ, tableColumn = "f.job_type_id")
+    private String deputy;
+
+    @TableField(exist = false)
+    private String[] createDates;
+
+    @TableField(exist = false)
+    private String createFlag;  //创建状态
+
+    @TableField(exist = false)
+    private List<WorkClientBank> backs;
+}

+ 14 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientJobTypeInfo.java

@@ -0,0 +1,14 @@
+package com.jeeplus.assess.workClientInfo.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+@TableName("work_client_job_type_info")
+public class WorkClientJobTypeInfo {
+
+    private String workClientId;
+
+    private String jobTypeId;
+
+}

+ 56 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/WorkClientLinkman.java

@@ -0,0 +1,56 @@
+package com.jeeplus.assess.workClientInfo.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+@TableName("work_client_linkman")
+public class WorkClientLinkman extends BaseEntity {
+
+    /**
+     * 联系人姓名
+     */
+    private String name;
+
+    /**
+     * 部门
+     */
+    private String office;
+
+    /**
+     * 职务
+     */
+    private String position;
+
+    /**
+     * QQ
+     */
+    private String qq;
+
+    /**
+     * 联系人电话
+     */
+    private String linkPhone;
+
+    /**
+     * 联系人手机
+     */
+    private String linkMobile;
+
+    /**
+     * E-mail
+     */
+    private String email;
+
+    /**
+     * 是否默认联系人
+     */
+    private String isDefault;
+
+    /**
+     * 外键关联客户信息表
+     */
+    private String clientId;
+
+}

+ 12 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/dto/PageInfoDto.java

@@ -0,0 +1,12 @@
+package com.jeeplus.assess.workClientInfo.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class PageInfoDto {
+
+    private String name;
+
+    private String areaId;
+
+}

+ 22 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/domain/dto/WorkClientInfosDto.java

@@ -0,0 +1,22 @@
+package com.jeeplus.assess.workClientInfo.domain.dto;
+
+import com.jeeplus.assess.workClientInfo.domain.WorkClientBank;
+import com.jeeplus.assess.workClientInfo.domain.WorkClientInfo;
+import com.jeeplus.assess.workClientInfo.domain.WorkClientLinkman;
+import com.jeeplus.pubmodules.oss.domain.WorkAttachment;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WorkClientInfosDto {
+
+    private WorkClientInfo workClientInfo;
+
+    private List<WorkClientBank> workClientBank;
+
+    private List<WorkClientLinkman> workClientLinkman;
+
+    private List<WorkAttachment> workAttachments;
+
+}

+ 0 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workClientInfo/mapper/WorkClientBankMapper.java


部分文件因文件數量過多而無法顯示