Browse Source

项目报告归档

lizhenhao 2 years ago
parent
commit
1a1b13fc15
26 changed files with 1322 additions and 10 deletions
  1. 42 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/common/flowable/dto/CommitParamDTO.java
  2. 10 2
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectRecords/domain/CwProjectClientInfo.java
  3. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectRecords/mapper/CwProjectClientInfoMapper.java
  4. 16 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectRecords/mapper/xml/CwProjectClientInfoMapper.xml
  5. 116 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/controller/CwProjectReportArchiveController.java
  6. 89 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/domain/CwProjectReportArchive.java
  7. 34 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/domain/CwProjectReportArchiveFile.java
  8. 34 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/domain/CwProjectReportArchiveReport.java
  9. 14 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/CwProjectReportArchiveFileMapper.java
  10. 26 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/CwProjectReportArchiveMapper.java
  11. 14 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/CwProjectReportArchiveReportMapper.java
  12. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/xml/CwProjectReportArchiveFileMapper.xml
  13. 243 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/xml/CwProjectReportArchiveMapper.xml
  14. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/xml/CwProjectReportArchiveReportMapper.xml
  15. 277 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/CwProjectReportArchiveService.java
  16. 117 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/CwProjectReportArchiveDTO.java
  17. 30 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/CwProjectReportArchiveFileDTO.java
  18. 41 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/CwProjectReportArchiveReportDTO.java
  19. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/ReportDTO.java
  20. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/WorkAttachmentArchiveDto.java
  21. 16 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/mapstruct/CwProjectReportArchiveFileWrapper.java
  22. 16 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/mapstruct/CwProjectReportArchiveReportWrapper.java
  23. 16 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/mapstruct/CwProjectReportArchiveWrapper.java
  24. 15 2
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/workClientInfo/service/CwWorkClientService.java
  25. 5 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/workClientInfo/service/dto/CwWorkClientBaseDTO.java
  26. 37 6
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OssService.java

+ 42 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/common/flowable/dto/CommitParamDTO.java

@@ -0,0 +1,42 @@
+package com.jeeplus.test.cw.common.flowable.dto;
+
+import com.jeeplus.flowable.model.TaskComment;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 流程审核通过时需要的参数
+ */
+@Data
+public class CommitParamDTO<T> implements Serializable {
+
+    private String taskId;
+    private String taskDefKey;
+    private String procInsId;
+    private String procDefId;
+    private String assignee;
+    private TaskComment comment;
+    private T vars;
+    private Cope cope; // 抄送的参数,按需使用
+
+    @Data
+    class Cope implements Serializable{
+        private List<String> userIds;
+        private String procDefId;
+        private String procInsId; // 后端自己给,前端没传
+        private String procDefName;
+        private String procInsName;
+        private String taskName;
+    }
+
+//    @Data
+//    class Comment {
+//        private String assignee;
+//        private String message;
+//        private String status;
+//        private String type;
+//        private List<String> userIds;
+//    }
+}

+ 10 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectRecords/domain/CwProjectClientInfo.java

@@ -1,5 +1,6 @@
 package com.jeeplus.test.cw.projectRecords.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;
 import lombok.Data;
@@ -10,13 +11,20 @@ import lombok.Data;
  * @version: 2022-11-10 16:17
  */
 @Data
-@TableName("cw_project_client_id")
-public class CwProjectClientInfo extends BaseEntity {
+@TableName("cw_project_client_info")
+public class CwProjectClientInfo {
     private static final long serialVersionUID = 1L;
 
     private String projectId;       //项目id
+
     private String clientId;        //客户id
+
+    @TableField(exist = false)
     private String clientNumber;    //客户编号
+
+    @TableField(exist = false)
     private String clientName;      //客户名称
+
+    @TableField(exist = false)
     private String companyLevel;    //客户层级
 }

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectRecords/mapper/CwProjectClientInfoMapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.cw.projectRecords.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.cw.projectRecords.domain.CwProjectClientInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Entity generator.domain.CwProjectClientInfo
+ */
+@Mapper
+public interface CwProjectClientInfoMapper extends BaseMapper<CwProjectClientInfo> {
+
+}
+
+
+
+

+ 16 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectRecords/mapper/xml/CwProjectClientInfoMapper.xml

@@ -0,0 +1,16 @@
+<?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.test.cw.projectRecords.mapper.CwProjectClientInfoMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.cw.projectRecords.service.dto.CwProjectClientInfoDTO">
+            <id property="projectId" column="project_id" jdbcType="VARCHAR"/>
+            <id property="clientId" column="client_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        project_id,
+        client_id
+    </sql>
+</mapper>

+ 116 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/controller/CwProjectReportArchiveController.java

@@ -0,0 +1,116 @@
+package com.jeeplus.test.cw.projectReportArchive.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.sys.constant.enums.LogTypeEnum;
+import com.jeeplus.test.cw.projectReportArchive.service.CwProjectReportArchiveService;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.ReportDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+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;
+
+/**
+ * 财务项目报告归档
+ */
+@RestController
+@Api("财务项目报告归档")
+@RequestMapping(value = "/cwProjectReportArchive")
+public class CwProjectReportArchiveController {
+
+    @Resource
+    private CwProjectReportArchiveService cwProjectReportArchiveService;
+
+    /**
+     * 查询财务项目报告归档信息列表
+     * @param cwProjectReportArchiveDTO
+     * @param page
+     * @return
+     */
+    @ApiLog("查询财务项目报告归档信息列表")
+    @PreAuthorize("hasAuthority('cwProjectReportArchive:list')")
+    @GetMapping("list")
+    public ResponseEntity<IPage<CwProjectReportArchiveDTO>> data(CwProjectReportArchiveDTO cwProjectReportArchiveDTO, Page<CwProjectReportArchiveDTO> page) throws Exception {
+        IPage<CwProjectReportArchiveDTO> result = new Page<CwProjectReportArchiveDTO>();
+        result = cwProjectReportArchiveService.findList (page, cwProjectReportArchiveDTO);
+        return ResponseEntity.ok (result);
+    }
+
+    @GetMapping("reportList")
+    public ResponseEntity<IPage<ReportDTO>> findReportList(ReportDTO reportDTO, Page<ReportDTO> page) throws Exception {
+        IPage<ReportDTO> result = new Page<ReportDTO>();
+        result = cwProjectReportArchiveService.findReportList (page, reportDTO);
+        return ResponseEntity.ok (result);
+    }
+
+    /**
+     * 查询财务项目报告归档详情
+     * @param id
+     * @return
+     */
+    @ApiLog("查询财务项目报告归档详情")
+    @PreAuthorize ("hasAnyAuthority('cwProjectReportArchive:view','cwProjectReportArchive:add','cwProjectReportArchive:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam("id") String id) {
+        CwProjectReportArchiveDTO cwProjectReportArchiveDTO = cwProjectReportArchiveService.queryById ( id );
+        return ResponseEntity.ok (cwProjectReportArchiveDTO);
+    }
+
+    /**
+     * 保存财务项目报告归档信息
+     * @param cwProjectReportArchiveDTO
+     * @return
+     */
+    @ApiLog(value = "修改/新增财务项目报告归档信息", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('cwProjectReportArchive:add','cwProjectReportArchive:edit')")
+    @PostMapping("save")
+    public ResponseEntity save(@Valid @RequestBody CwProjectReportArchiveDTO cwProjectReportArchiveDTO) throws Exception {
+        cwProjectReportArchiveService.save(cwProjectReportArchiveDTO);
+        return ResponseEntity.ok ("操作成功");
+    }
+
+    /**
+     * 保存财务项目报告归档信息-流程
+     * @param cwProjectReportArchiveDTO
+     * @return
+     */
+    @ApiLog(value = "保存财务项目报告归档信息-流程", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('cwProjectReportArchive:add','cwProjectReportArchive:edit')")
+    @PostMapping("saveForm")
+    public ResponseEntity saveForm(@Valid @RequestBody CwProjectReportArchiveDTO cwProjectReportArchiveDTO) throws Exception {
+        String id = cwProjectReportArchiveService.saveForm(cwProjectReportArchiveDTO);
+        return ResponseUtil.newInstance().add("businessTable", "cw_project_report_archive").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 删除财务项目报告归档信息
+     * @param ids
+     * @return
+     */
+    @ApiLog(value = "删除财务项目报告归档信息", type = LogTypeEnum.SAVE)
+    @PreAuthorize ("hasAuthority('cwProjectReportArchive:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids) {
+        return cwProjectReportArchiveService.deleteByIds(ids);
+    }
+
+    /**
+     * 根据id修改状态值status
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "根据id修改状态值status")
+    @PostMapping(value = "/updateStatusById")
+    public ResponseEntity<String> updateStatusById(@RequestBody CwProjectReportArchiveDTO dto) {
+        String s = cwProjectReportArchiveService.updateStatusById(dto);
+        return ResponseEntity.ok(s);
+    }
+
+}

+ 89 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/domain/CwProjectReportArchive.java

@@ -0,0 +1,89 @@
+package com.jeeplus.test.cw.projectReportArchive.domain;
+
+import java.util.Date;
+
+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;
+
+/**
+ * 财务-项目报告归档-项目归档
+ * @TableName cw_project_report_archive
+ */
+@Data
+@TableName("cw_project_report_archive")
+public class CwProjectReportArchive extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 档案名称
+     */
+    @Query(tableColumn = "cw_pa.name",type = QueryType.LIKE)
+    private String name;
+
+    /**
+     * 被审计单位
+     */
+    private String auditedUnits;
+
+    /**
+     * 报告册数
+     */
+    private String reportNum;
+
+    /**
+     * 底稿册数
+     */
+    private String papersNum;
+
+    /**
+     * 档案年度
+     */
+    @Query(tableColumn = "cw_pa.year",type = QueryType.EQ)
+    private String year;
+
+    /**
+     * 案卷号
+     */
+    @Query(tableColumn = "cw_pa.number",type = QueryType.LIKE)
+    private String number;
+
+    /**
+     * 确认案卷号
+     */
+    private String isNumber;
+
+    /**
+     * 归档时间
+     */
+    private Date auditDate;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    @Query(tableColumn = "cw_pa.status",type = QueryType.EQ)
+    private String status;
+
+    private static final long serialVersionUID = 1L;
+}

+ 34 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/domain/CwProjectReportArchiveFile.java

@@ -0,0 +1,34 @@
+package com.jeeplus.test.cw.projectReportArchive.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 财务-项目报告归档-其他附件
+ * @TableName cw_project_report_archive_file
+ */
+@Data
+@TableName("cw_project_report_archive_file")
+public class CwProjectReportArchiveFile extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 文件id
+     */
+    private String workAttachmentId;
+
+    /**
+     * 文件类型
+     */
+    private String fileType;
+
+    private static final long serialVersionUID = 1L;
+}

+ 34 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/domain/CwProjectReportArchiveReport.java

@@ -0,0 +1,34 @@
+package com.jeeplus.test.cw.projectReportArchive.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * 财务-项目报告归档-审计报告
+ * @TableName cw_project_report_archive_report
+ */
+@Data
+@TableName("cw_project_report_archive_report")
+public class CwProjectReportArchiveReport extends BaseEntity {
+
+    /**
+     * 审计意见
+     */
+    private String remarks;
+
+    /**
+     * 项目归档id
+     */
+    private String archiveId;
+
+    /**
+     * 报告id
+     */
+    private String reportId;
+
+    private static final long serialVersionUID = 1L;
+}

+ 14 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/CwProjectReportArchiveFileMapper.java

@@ -0,0 +1,14 @@
+package com.jeeplus.test.cw.projectReportArchive.mapper;
+
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchiveFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CwProjectReportArchiveFileMapper extends BaseMapper<CwProjectReportArchiveFile> {
+
+}
+
+
+
+

+ 26 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/CwProjectReportArchiveMapper.java

@@ -0,0 +1,26 @@
+package com.jeeplus.test.cw.projectReportArchive.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.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchive;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.ReportDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface CwProjectReportArchiveMapper extends BaseMapper<CwProjectReportArchive> {
+
+    IPage<CwProjectReportArchiveDTO> findList(Page<CwProjectReportArchiveDTO> page, @Param(Constants.WRAPPER) QueryWrapper<CwProjectReportArchive> queryWrapper);
+
+    CwProjectReportArchiveDTO queryById(@Param("id") String id);
+
+    IPage<ReportDTO> findReportList(Page<ReportDTO> page, @Param(Constants.WRAPPER) QueryWrapper<ReportDTO> queryWrapper);
+}
+
+
+
+

+ 14 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/CwProjectReportArchiveReportMapper.java

@@ -0,0 +1,14 @@
+package com.jeeplus.test.cw.projectReportArchive.mapper;
+
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchiveReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CwProjectReportArchiveReportMapper extends BaseMapper<CwProjectReportArchiveReport> {
+
+}
+
+
+
+

+ 30 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/xml/CwProjectReportArchiveFileMapper.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.test.cw.projectReportArchive.mapper.CwProjectReportArchiveFileMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveFileDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="workAttachmentId" column="work_attachment_id" jdbcType="VARCHAR"/>
+            <result property="fileType" column="file_type" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Archive_File_Column_List">
+        cw_paf.id,
+        cw_paf.create_by,
+        cw_paf.create_date,
+        cw_paf.update_by,
+        cw_paf.update_date,
+        cw_paf.del_flag,
+        cw_paf.remarks,
+        cw_paf.work_attachment_id,
+        cw_paf.file_type
+    </sql>
+</mapper>

+ 243 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/xml/CwProjectReportArchiveMapper.xml

@@ -0,0 +1,243 @@
+<?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.test.cw.projectReportArchive.mapper.CwProjectReportArchiveMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateDate" 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="name" column="name" jdbcType="VARCHAR"/>
+            <result property="auditedUnits" column="audited_units" jdbcType="VARCHAR"/>
+            <result property="reportNum" column="report_num" jdbcType="VARCHAR"/>
+            <result property="papersNum" column="papers_num" jdbcType="VARCHAR"/>
+            <result property="year" column="year" jdbcType="VARCHAR"/>
+            <result property="number" column="number" jdbcType="VARCHAR"/>
+            <result property="isNumber" column="is_number" jdbcType="VARCHAR"/>
+            <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="auditedUnitsName" column="audited_units_name" jdbcType="VARCHAR"/>
+            <result property="createBy.name" column="user_name" jdbcType="VARCHAR"/>
+        <association property="cwProjectRecordsDTO" column="project_id" select="getProject" javaType="com.jeeplus.test.cw.projectRecords.service.dto.CwProjectRecordsDTO"></association>
+        <collection property="workAttachmentDtoList" ofType="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto" column="id" select="getFileList"></collection>
+        <collection property="cwProjectReportArchiveReportDTOList" ofType="com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveReportDTO" column="id" select="getReportList"></collection>
+    </resultMap>
+    <resultMap id="AttachmentMap" type="com.jeeplus.test.cw.projectReportArchive.service.dto.WorkAttachmentArchiveDto">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+        <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+        <result property="createBy.name" column="create_name" jdbcType="VARCHAR"/>
+        <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+        <result property="delFlag" column="del_flag" jdbcType="VARCHAR"/>
+        <result property="url" column="url" jdbcType="VARCHAR"/>
+        <result property="name" column="attachment_name" jdbcType="VARCHAR"/>
+        <result property="size" column="file_size" jdbcType="VARCHAR"/>
+        <result property="fileType" column="file_type" jdbcType="VARCHAR"/>
+        <result property="remarks" column="cw_remarks" jdbcType="VARCHAR"/>
+    </resultMap>
+    <resultMap id="ProjectResultMap" type="com.jeeplus.test.cw.projectRecords.service.dto.CwProjectRecordsDTO">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+        <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+        <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+        <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+        <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+        <result property="projectNumber" column="project_number" jdbcType="VARCHAR"/>
+        <result property="projectName" column="project_name" jdbcType="VARCHAR"/>
+        <result property="officeId" column="office_id" jdbcType="VARCHAR"/>
+        <result property="projectMoney" column="project_money" jdbcType="VARCHAR"/>
+        <result property="auditYear" column="audit_year" jdbcType="VARCHAR"/>
+        <result property="planStartDate" column="plan_start_date" jdbcType="TIMESTAMP"/>
+        <result property="planEndDate" column="plan_end_date" jdbcType="TIMESTAMP"/>
+        <result property="projectMasterId" column="project_master_id" jdbcType="VARCHAR"/>
+        <result property="projectLeaderId" column="project_leader_id" 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"/>
+        <result property="createBy.name" column="user_name" jdbcType="VARCHAR"/>
+        <result property="projectMasterName" column="project_master_name" jdbcType="VARCHAR"/>
+        <result property="contractId" column="contract_id" jdbcType="VARCHAR"/>
+        <result property="contractName" column="contract_name" jdbcType="VARCHAR"/>
+        <result property="contractAmount" column="contract_amount" jdbcType="VARCHAR"/>
+        <result property="contractNum" column="contract_num" jdbcType="VARCHAR"/>
+        <result property="payerSubject" column="payer_subject" jdbcType="VARCHAR"/>
+        <result property="paymentMethod" column="payment_method" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        cw_pa.id,
+        cw_pa.create_by,
+        cw_pa.create_date,
+        cw_pa.update_by,
+        cw_pa.update_date,
+        cw_pa.del_flag,
+        cw_pa.remarks,
+        cw_pa.project_id,
+        cw_pa.name,
+        cw_pa.audited_units,
+        cw_pa.report_num,
+        cw_pa.papers_num,
+        cw_pa.year,
+        cw_pa.number,
+        cw_pa.is_number,
+        cw_pa.audit_date,
+        cw_pa.proc_ins_id,
+        cw_pa.process_definition_id,
+        cw_pa.status
+    </sql>
+    <sql id="Archive_File_Column_List">
+        cw_paf.id,
+        cw_paf.create_by,
+        cw_paf.create_date,
+        cw_paf.update_by,
+        cw_paf.update_date,
+        cw_paf.del_flag,
+        cw_paf.remarks,
+        cw_paf.work_attachment_id,
+        cw_paf.file_type
+    </sql>
+    <sql id="Archive_Report_Column_List">
+        cw_par.id,
+        cw_par.create_by,
+        cw_par.create_date,
+        cw_par.update_by,
+        cw_par.update_date,
+        cw_par.del_flag,
+        cw_par.remarks,
+        cw_par.archive_id,
+        cw_par.report_id
+    </sql>
+    <sql id="File_Column_List">
+        wa.id,
+        wa.create_by,
+        wa.create_date,
+        wa.update_by,
+        wa.update_date,
+        wa.remarks,
+        wa.del_flag,
+        wa.url,
+        wa.type,
+        wa.attachment_id,
+        wa.attachment_name,
+        wa.attachment_flag,
+        wa.module_type,
+        wa.attachment_type,
+        wa.file_size,
+        wa.sort,
+        wa.description
+    </sql>
+    <sql id="Project_Column_List">
+        cw_pr.id,
+        cw_pr.create_by,
+        cw_pr.create_date,
+        cw_pr.update_by,
+        cw_pr.update_date,
+        cw_pr.del_flag,
+        cw_pr.remarks,
+        cw_pr.project_number,
+        cw_pr.project_name,
+        cw_pr.office_id,
+        cw_pr.project_money,
+        cw_pr.audit_year,
+        cw_pr.plan_start_date,
+        cw_pr.plan_end_date,
+        cw_pr.project_master_id,
+        cw_pr.project_leader_id,
+        cw_pr.proc_ins_id,
+        cw_pr.status,
+        cw_pr.process_definition_id,
+        cw_pr.contract_id
+    </sql>
+
+    <select id="getProject" resultMap="ProjectResultMap">
+        select
+        <include refid="Project_Column_List"></include>,
+        cw_wci.contract_name,
+        cw_wci.contract_amount,
+        cw_wci.contract_num,
+        cw_wci.payer_subject,
+        cw_wci.payment_method,
+        su.name as user_name,
+        su2.name as project_master_name
+        from cw_project_records cw_pr
+        left join cw_work_contract_info cw_wci on cw_wci.id = cw_pr.contract_id and cw_wci.del_flag = '0'
+        left join sys_user su on su.id = cw_pr.create_by and su.del_flag = '0'
+        left join sys_user su2 on su2.id = cw_pr.project_master_id and su2.del_flag = '0'
+        where cw_pr.del_flag = '0' and cw_pr.id = #{id}
+    </select>
+    <select id="getReportList" resultType="com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveReportDTO">
+        select
+        <include refid="Archive_Report_Column_List"></include>,
+        cw_pr.signature_annotator1,
+        cw_pr.signature_annotator2,
+        su1.name as signature_annotator1_name,
+        su2.name as signature_annotator2_name,
+        cw_prnl.report_date,
+        cw_prnl.report_no
+        from cw_project_report_archive_report cw_par
+        left join cw_project_report_new_line cw_prnl on cw_par.report_id = cw_prnl.id and cw_prnl.del_flag = '0'
+        left join cw_project_report cw_pr on cw_pr.id = cw_prnl.report_id and cw_pr.del_flag = '0'
+        left join sys_user su1 on su1.id = cw_pr.signature_annotator1 and su1.del_flag = '0'
+        left join sys_user su2 on su2.id = cw_pr.signature_annotator2 and su2.del_flag = '0'
+        where cw_par.del_flag = '0' and cw_par.archive_id = #{id}
+    </select>
+    <select id="getFileList" resultMap="AttachmentMap">
+        select
+        <include refid="File_Column_List"></include>,
+        su.name as create_name,
+        cw_paf.file_type,
+        cw_paf.remarks as cw_remarks
+        from work_attachment wa
+        left join cw_project_report_archive_file cw_paf on cw_paf.work_attachment_id = wa.id and cw_paf.del_flag = '0'
+        left join sys_user su on su.id = wa.create_by and su.del_flag = '0'
+        where wa.del_flag = '0' and wa.attachment_id = #{id}
+    </select>
+
+    <select id="findList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>,
+        cw_wcb.name as audited_units_name,
+        su.name as user_name
+        from cw_project_report_archive cw_pa
+        left join cw_work_client_base cw_wcb on cw_pa.audited_units = cw_wcb.id and cw_wcb.del_flag = '0'
+        left join sys_user su on su.id = cw_pa.create_by and su.del_flag = '0'
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="queryById" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"></include>,
+        cw_wcb.name as audited_units_name,
+        su.name as user_name
+        from cw_project_report_archive cw_pa
+        left join cw_work_client_base cw_wcb on cw_pa.audited_units = cw_wcb.id and cw_wcb.del_flag = '0'
+        left join sys_user su on su.id = cw_pa.create_by and su.del_flag = '0'
+        where cw_pa.del_flag = '0' and cw_pa.id = ${id}
+    </select>
+
+    <select id="findReportList" resultType="com.jeeplus.test.cw.projectReportArchive.service.dto.ReportDTO">
+        select
+            cw_pr.signature_annotator1,
+            cw_pr.signature_annotator2,
+            su1.name as signature_annotator1_name,
+            su2.name as signature_annotator2_name,
+            cw_prnl.report_date,
+            cw_prnl.report_no,
+            cw_prnl.id as new_line_id
+        from cw_project_report cw_pr
+        left join cw_project_report_new_line cw_prnl on cw_prnl.report_id = cw_pr.id and cw_prnl.del_flag = '0'
+        left join sys_user su1 on su1.id = cw_pr.signature_annotator1 and su1.del_flag = '0'
+        left join sys_user su2 on su2.id = cw_pr.signature_annotator2 and su2.del_flag = '0'
+        ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 30 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/mapper/xml/CwProjectReportArchiveReportMapper.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.test.cw.projectReportArchive.mapper.CwProjectReportArchiveReportMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveReportDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="archiveId" column="archive_id" jdbcType="VARCHAR"/>
+            <result property="reportId" column="report_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Archive_Report_Column_List">
+        cw_par.id,
+        cw_par.create_by,
+        cw_par.create_date,
+        cw_par.update_by,
+        cw_par.update_date,
+        cw_par.del_flag,
+        cw_par.remarks,
+        cw_par.archive_id,
+        cw_par.report_id
+    </sql>
+</mapper>

+ 277 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/CwProjectReportArchiveService.java

@@ -0,0 +1,277 @@
+package com.jeeplus.test.cw.projectReportArchive.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ArrayUtil;
+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.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.domain.User;
+import com.jeeplus.sys.mapper.UserMapper;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.cw.projectRecords.domain.CwProjectRecords;
+import com.jeeplus.test.cw.projectReport.domain.CwProjectInfoData;
+import com.jeeplus.test.cw.projectReport.mapper.CwProjectInfoMapper;
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchive;
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchiveFile;
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchiveReport;
+import com.jeeplus.test.cw.projectReportArchive.mapper.CwProjectReportArchiveFileMapper;
+import com.jeeplus.test.cw.projectReportArchive.mapper.CwProjectReportArchiveMapper;
+import com.jeeplus.test.cw.projectReportArchive.mapper.CwProjectReportArchiveReportMapper;
+import com.jeeplus.test.cw.projectRecords.mapper.CwProjectRecordsMapper;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveReportDTO;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.ReportDTO;
+import com.jeeplus.test.cw.projectReportArchive.service.mapstruct.CwProjectReportArchiveReportWrapper;
+import com.jeeplus.test.cw.projectReportArchive.service.mapstruct.CwProjectReportArchiveWrapper;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
+import com.jeeplus.test.oss.service.OssService;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
+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.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+@Service
+@Transactional
+public class CwProjectReportArchiveService extends ServiceImpl<CwProjectReportArchiveMapper, CwProjectReportArchive> {
+
+    @Resource
+    private CwProjectReportArchiveMapper cwProjectReportArchiveMapper;
+    @Resource
+    private CwProjectReportArchiveReportMapper cwProjectReportArchiveReportMapper;
+    @Resource
+    private CwProjectReportArchiveFileMapper cwProjectReportArchiveFileMapper;
+    @Resource
+    private CwProjectRecordsMapper cwProjectRecordsMapper;
+    @Resource
+    private OssService ossService;
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private CwProjectInfoMapper cwProjectInfoMapper;
+
+    /**
+     * 项目归档列表信息
+     * @param page
+     * @param cwProjectReportArchiveDTO
+     * @return
+     * @throws Exception
+     */
+    public IPage<CwProjectReportArchiveDTO> findList(Page<CwProjectReportArchiveDTO> page, CwProjectReportArchiveDTO cwProjectReportArchiveDTO) throws Exception{
+        QueryWrapper<CwProjectReportArchive> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( CwProjectReportArchiveWrapper.INSTANCE.toEntity(cwProjectReportArchiveDTO), CwProjectReportArchive.class );
+        queryWrapper.eq("cw_pa.del_flag","0");
+        queryWrapper.orderByDesc("cw_pa.create_date");
+        if (ObjectUtil.isNotEmpty(cwProjectReportArchiveDTO)) {
+            if (ObjectUtil.isNotEmpty(cwProjectReportArchiveDTO.getCwProjectRecordsDTO())){
+                // 项目名称
+                if (StringUtils.isNotBlank(cwProjectReportArchiveDTO.getCwProjectRecordsDTO().getProjectName())){
+                    List<CwProjectRecords> cwProjectRecords = cwProjectRecordsMapper.selectList(new QueryWrapper<CwProjectRecords>().lambda().like(CwProjectRecords::getProjectName, cwProjectReportArchiveDTO.getCwProjectRecordsDTO().getProjectName()));
+                    List<String> ids = cwProjectRecords.stream().distinct().map(CwProjectRecords::getId).collect(Collectors.toList());
+                    if(CollectionUtil.isNotEmpty(ids)) {
+                        queryWrapper.in("cw_pa.project_id",ids);
+                    }else{
+                        return new Page<>();
+                    }
+                }
+                // 项目经理
+                if (StringUtils.isNotBlank(cwProjectReportArchiveDTO.getCwProjectRecordsDTO().getProjectMasterName())){
+                    List<User> userList = userMapper.selectList(new QueryWrapper<User>().lambda().like(User::getName, cwProjectReportArchiveDTO.getCwProjectRecordsDTO().getProjectMasterName()));
+                    List<String> userIdList = userList.stream().distinct().map(User::getId).collect(Collectors.toList());
+                    if (CollectionUtil.isNotEmpty(userIdList)){
+                        List<CwProjectRecords> cwProjectRecords = cwProjectRecordsMapper.selectList(new QueryWrapper<CwProjectRecords>().lambda().in(CwProjectRecords::getProjectMasterId, userIdList));
+                        List<String> projectIds = cwProjectRecords.stream().distinct().map(CwProjectRecords::getId).collect(Collectors.toList());
+                        if (CollectionUtil.isNotEmpty(projectIds)){
+                            queryWrapper.in("cw_pa.project_id",projectIds);
+                        }else{
+                            return new Page<>();
+                        }
+                    }else{
+                        return new Page<>();
+                    }
+                }
+                // 创建时间
+                if (ArrayUtil.isNotEmpty(cwProjectReportArchiveDTO.getCreateDates())){
+                    queryWrapper.between("cw_pa.create_date", cwProjectReportArchiveDTO.getCreateDates()[0], cwProjectReportArchiveDTO.getCreateDates()[1]);
+                }
+                // 归档时间
+                if (ArrayUtil.isNotEmpty(cwProjectReportArchiveDTO.getAuditDates())){
+                    queryWrapper.between("cw_pa.audit_date", cwProjectReportArchiveDTO.getAuditDates()[0], cwProjectReportArchiveDTO.getAuditDates()[1]);
+                }
+                // 创建人
+                if (ObjectUtil.isNotEmpty(cwProjectReportArchiveDTO.getCreateBy())){
+                    if (StringUtils.isNotBlank(cwProjectReportArchiveDTO.getCreateBy().getName())){
+                        List<User> userList = userMapper.selectList(new QueryWrapper<User>().lambda().like(User::getName, cwProjectReportArchiveDTO.getCreateBy().getName()));
+                        List<String> ids = userList.stream().distinct().map(User::getId).collect(Collectors.toList());
+                        if (CollectionUtil.isNotEmpty(ids)){
+                            queryWrapper.in("cw_pa.create_by",ids);
+                        }else{
+                            return new Page<>();
+                        }
+                    }
+                }
+                // 报告文号
+                if (StringUtils.isNotBlank(cwProjectReportArchiveDTO.getReportNo())){
+                    List<CwProjectInfoData> cwProjectInfoData = cwProjectInfoMapper.selectList(new QueryWrapper<CwProjectInfoData>().lambda().like(CwProjectInfoData::getReportNo, cwProjectReportArchiveDTO.getReportNo()));
+                    List<String> ids = cwProjectInfoData.stream().distinct().map(CwProjectInfoData::getId).collect(Collectors.toList());
+                    if (CollectionUtil.isNotEmpty(ids)){
+                        List<CwProjectReportArchiveReport> cwProjectReportArchiveReports = cwProjectReportArchiveReportMapper.selectList(new QueryWrapper<CwProjectReportArchiveReport>().lambda().in(CwProjectReportArchiveReport::getReportId, ids));
+                        List<String> collect = cwProjectReportArchiveReports.stream().distinct().map(CwProjectReportArchiveReport::getArchiveId).collect(Collectors.toList());
+                        if (CollectionUtil.isNotEmpty(collect)) {
+                            queryWrapper.in("cw_pa.id",collect);
+                        }else {
+                            return new Page<>();
+                        }
+                    }else{
+                        return new Page<>();
+                    }
+                }
+            }
+        }
+        return cwProjectReportArchiveMapper.findList(page, queryWrapper);
+    }
+
+    /**
+     * 查询审计报告信息列表
+     * @param page
+     * @param reportDTO
+     * @return
+     * @throws Exception
+     */
+    public IPage<ReportDTO> findReportList(Page<ReportDTO> page, ReportDTO reportDTO) throws Exception{
+        QueryWrapper<ReportDTO> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("cw_pr.del_flag","0");
+        queryWrapper.orderByDesc("cw_pr.create_date");
+        queryWrapper.eq("cw_pr.status", "5");
+        if (ObjectUtil.isNotEmpty(reportDTO)) {
+            if (StringUtils.isNotBlank(reportDTO.getProjectId())) {
+                queryWrapper.eq("cw_pr.project_id",reportDTO.getProjectId());
+            }
+            if (StringUtils.isNotBlank(reportDTO.getReportNo())) {
+                queryWrapper.like("cw_prnl.report_no",reportDTO.getReportNo());
+            }
+        }
+        return cwProjectReportArchiveMapper.findReportList(page, queryWrapper);
+    }
+
+    /**
+     * 根据id查询项目详情
+     * @param id
+     * @return
+     */
+    public CwProjectReportArchiveDTO queryById(String id) {
+        return cwProjectReportArchiveMapper.queryById(id);
+    }
+
+    /**
+     * 保存项目归档信息以及其他相关信息
+     * @param cwProjectReportArchiveDTO
+     * @return
+     * @throws Exception
+     */
+    public String saveForm(CwProjectReportArchiveDTO cwProjectReportArchiveDTO) throws Exception{
+        UserDTO userDTO = UserUtils.getCurrentUserDTO();
+        CwProjectReportArchive cwProjectReportArchive = CwProjectReportArchiveWrapper.INSTANCE.toEntity(cwProjectReportArchiveDTO);
+        if (ObjectUtil.isNotEmpty(cwProjectReportArchive)) {
+            if (StringUtils.isBlank(cwProjectReportArchive.getCreateBy())) {
+                cwProjectReportArchive.setCreateBy(UserUtils.getCurrentUserDTO().getId());
+            }
+        }
+        this.saveOrUpdate(cwProjectReportArchive);
+        if (ObjectUtil.isNotEmpty(cwProjectReportArchiveDTO)) {
+            // 附件
+            ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda().eq(WorkAttachment::getAttachmentId, cwProjectReportArchive.getId()));
+            AtomicInteger sort = new AtomicInteger(1);
+            cwProjectReportArchiveDTO.getWorkAttachmentDtoList().stream().forEach(item->{
+                WorkAttachmentDto workAttachmentDto = new WorkAttachmentDto();
+                workAttachmentDto.setName(item.getName());
+                workAttachmentDto.setSize(item.getSize());
+                workAttachmentDto.setUrl(item.getUrl());
+                String fileId = ossService.saveFile(workAttachmentDto,userDTO, cwProjectReportArchive.getId(),"cw_project_report_archive",sort.get());
+                sort.getAndIncrement();
+                CwProjectReportArchiveFile cwProjectReportArchiveFile = new CwProjectReportArchiveFile();
+                cwProjectReportArchiveFile.setWorkAttachmentId(fileId);
+                cwProjectReportArchiveFile.setRemarks(item.getRemarks());
+                cwProjectReportArchiveFile.setFileType(item.getFileType());
+                cwProjectReportArchiveFileMapper.insert(cwProjectReportArchiveFile);
+            });
+            // 审计报告
+            if(CollectionUtil.isNotEmpty(cwProjectReportArchiveDTO.getCwProjectReportArchiveReportDTOList())){
+                List<String> ids = cwProjectReportArchiveDTO.getCwProjectReportArchiveReportDTOList().stream().filter(item -> {
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        return true;
+                    }
+                    return false;
+                }).distinct().map(CwProjectReportArchiveReportDTO::getId).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(ids)) {
+                    cwProjectReportArchiveReportMapper.delete(new QueryWrapper<CwProjectReportArchiveReport>().lambda()
+                            .eq(CwProjectReportArchiveReport::getArchiveId, cwProjectReportArchive.getId())
+                            .notIn(CwProjectReportArchiveReport::getId, ids)
+                    );
+                } else {
+                    cwProjectReportArchiveReportMapper.delete(new QueryWrapper<CwProjectReportArchiveReport>().lambda().eq(CwProjectReportArchiveReport::getArchiveId, cwProjectReportArchive.getId()));
+                }
+                cwProjectReportArchiveDTO.getCwProjectReportArchiveReportDTOList().stream().forEach(item->{
+                    if (StringUtils.isNotBlank(item.getId())) {
+                        CwProjectReportArchiveReport cwProjectReportArchiveReport = CwProjectReportArchiveReportWrapper.INSTANCE.toEntity(item);
+                        cwProjectReportArchiveReport.setArchiveId(cwProjectReportArchive.getId());
+                        cwProjectReportArchiveReportMapper.updateById(cwProjectReportArchiveReport);
+                    } else {
+                        CwProjectReportArchiveReport cwProjectReportArchiveReport = CwProjectReportArchiveReportWrapper.INSTANCE.toEntity(item);
+                        cwProjectReportArchiveReport.setArchiveId(cwProjectReportArchive.getId());
+                        cwProjectReportArchiveReportMapper.insert(cwProjectReportArchiveReport);
+                    }
+                });
+            } else {
+                cwProjectReportArchiveReportMapper.delete(new QueryWrapper<CwProjectReportArchiveReport>().lambda().eq(CwProjectReportArchiveReport::getArchiveId, cwProjectReportArchive.getId()));
+            }
+        }
+        return cwProjectReportArchive.getId();
+    }
+
+    /**
+     * 保存项目归档信息
+     * @param cwProjectReportArchiveDTO
+     * @return
+     * @throws Exception
+     */
+    public ResponseEntity save(CwProjectReportArchiveDTO cwProjectReportArchiveDTO) throws Exception{
+        this.saveForm(cwProjectReportArchiveDTO);
+        return ResponseEntity.ok("保存成功");
+    }
+
+    /**
+     * 根据id删除项目归档信息
+     * @param ids
+     * @return
+     */
+    public ResponseEntity deleteByIds(String ids) {
+        String idArray[] =ids.split(",");
+        this.removeByIds (Lists.newArrayList (idArray));
+        return ResponseEntity.ok ("删除成功");
+    }
+
+    /**
+     * 修改状态
+     * @param cwProjectReportArchiveDTO
+     * @return
+     */
+    public String updateStatusById(CwProjectReportArchiveDTO cwProjectReportArchiveDTO) {
+        CwProjectReportArchive cwProjectReportArchive = CwProjectReportArchiveWrapper.INSTANCE.toEntity(cwProjectReportArchiveDTO);
+        this.update(cwProjectReportArchive, new QueryWrapper<CwProjectReportArchive>().lambda().eq(CwProjectReportArchive::getId, cwProjectReportArchive.getId()));
+        return "操作成功";
+    }
+}

+ 117 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/CwProjectReportArchiveDTO.java

@@ -0,0 +1,117 @@
+package com.jeeplus.test.cw.projectReportArchive.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.test.cw.projectRecords.service.dto.CwProjectRecordsDTO;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 财务-项目报告归档-项目归档
+ */
+@Data
+public class CwProjectReportArchiveDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+
+    /**
+     * 档案名称
+     */
+    private String name;
+
+    /**
+     * 被审计单位
+     */
+    private String auditedUnits;
+
+    /**
+     * 报告册数
+     */
+    private String reportNum;
+
+    /**
+     * 底稿册数
+     */
+    private String papersNum;
+
+    /**
+     * 档案年度
+     */
+    private String year;
+
+    /**
+     * 案卷号
+     */
+    private String number;
+
+    /**
+     * 确认案卷号
+     */
+    private String isNumber;
+
+    /**
+     * 归档时间
+     */
+    private Date auditDate;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 项目信息
+     */
+    private CwProjectRecordsDTO cwProjectRecordsDTO;
+
+    /**
+     * 其他附件
+     */
+    private List<WorkAttachmentArchiveDto> WorkAttachmentDtoList;
+
+    /**
+     * 审计报告
+     */
+    private List<CwProjectReportArchiveReportDTO> cwProjectReportArchiveReportDTOList;
+
+    /**
+     * 被审计单位名称
+     */
+    private String auditedUnitsName;
+
+    /**
+     * 归档时间区间
+     */
+    private String[] auditDates;
+
+    /**
+     * 创建时间区间
+     */
+    private String[] createDates;
+
+    /**
+     * 报告文号
+     */
+    private String reportNo;
+
+    private static final long serialVersionUID = 1L;
+}

+ 30 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/CwProjectReportArchiveFileDTO.java

@@ -0,0 +1,30 @@
+package com.jeeplus.test.cw.projectReportArchive.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+/**
+ * 财务-项目报告归档-其他附件
+ */
+@Data
+public class CwProjectReportArchiveFileDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 文件id
+     */
+    private String workAttachmentId;
+
+    /**
+     * 文件类型
+     */
+    private String fileType;
+
+    private static final long serialVersionUID = 1L;
+}

+ 41 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/CwProjectReportArchiveReportDTO.java

@@ -0,0 +1,41 @@
+package com.jeeplus.test.cw.projectReportArchive.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 财务-项目报告归档-审计报告
+ */
+@Data
+public class CwProjectReportArchiveReportDTO extends BaseDTO {
+
+    /**
+     * 审计意见
+     */
+    private String remarks;
+
+    /**
+     * 项目归档id
+     */
+    private String archiveId;
+
+    /**
+     * 报告id
+     */
+    private String reportId;
+
+    private String signatureAnnotator1; // 签字注师1id
+    private String signatureAnnotator2; // 签字注师2id
+    private String signatureAnnotator1Name; // 签字注师1姓名
+    private String signatureAnnotator2Name; // 签字注师2姓名
+    private Date reportDate;// 报告日期
+    private String reportNo;// 报告文号
+    private String projectId;// 项目id
+
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/ReportDTO.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.cw.projectReportArchive.service.dto;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ReportDTO {
+    private String signatureAnnotator1; // 签字注师1id
+    private String signatureAnnotator2; // 签字注师2id
+    private String signatureAnnotator1Name; // 签字注师1姓名
+    private String signatureAnnotator2Name; // 签字注师2姓名
+    private Date reportDate;// 报告日期
+    private String reportNo;// 报告文号
+    private String projectId;// 项目id
+    private String newLineId;// 报告文号数据的id
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/dto/WorkAttachmentArchiveDto.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.cw.projectReportArchive.service.dto;
+
+import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.sys.service.dto.UserDTO;
+import lombok.Data;
+
+@Data
+public class WorkAttachmentArchiveDto extends BaseDTO {
+
+    private String name; // 文件名称
+
+    private String size; // 文件大小
+
+    private String url; // 文件路径
+
+    private String remarks; // 备注
+
+    private String fileType; // 文件类型
+
+}

+ 16 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/mapstruct/CwProjectReportArchiveFileWrapper.java

@@ -0,0 +1,16 @@
+package com.jeeplus.test.cw.projectReportArchive.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchiveFile;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveFileDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface CwProjectReportArchiveFileWrapper extends EntityWrapper<CwProjectReportArchiveFileDTO, CwProjectReportArchiveFile> {
+
+    CwProjectReportArchiveFileWrapper INSTANCE = Mappers.getMapper(CwProjectReportArchiveFileWrapper.class);
+
+}

+ 16 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/mapstruct/CwProjectReportArchiveReportWrapper.java

@@ -0,0 +1,16 @@
+package com.jeeplus.test.cw.projectReportArchive.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchiveReport;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveReportDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface CwProjectReportArchiveReportWrapper extends EntityWrapper<CwProjectReportArchiveReportDTO, CwProjectReportArchiveReport> {
+
+    CwProjectReportArchiveReportWrapper INSTANCE = Mappers.getMapper(CwProjectReportArchiveReportWrapper.class);
+
+}

+ 16 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/projectReportArchive/service/mapstruct/CwProjectReportArchiveWrapper.java

@@ -0,0 +1,16 @@
+package com.jeeplus.test.cw.projectReportArchive.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.cw.projectReportArchive.domain.CwProjectReportArchive;
+import com.jeeplus.test.cw.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface CwProjectReportArchiveWrapper extends EntityWrapper<CwProjectReportArchiveDTO, CwProjectReportArchive> {
+
+    CwProjectReportArchiveWrapper INSTANCE = Mappers.getMapper(CwProjectReportArchiveWrapper.class);
+
+}

+ 15 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/workClientInfo/service/CwWorkClientService.java

@@ -12,6 +12,8 @@ import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.cw.projectRecords.domain.CwProjectClientInfo;
+import com.jeeplus.test.cw.projectRecords.mapper.CwProjectClientInfoMapper;
 import com.jeeplus.test.cw.workClientInfo.domain.CwWorkClientBase;
 import com.jeeplus.test.cw.workClientInfo.domain.CwWorkClientBilling;
 import com.jeeplus.test.cw.workClientInfo.domain.CwWorkClientContact;
@@ -55,6 +57,9 @@ public class CwWorkClientService extends ServiceImpl<CwWorkClientBaseMapper, CwW
     private SerialnumTplService serialnumTplService;
     @Resource
     private OssService ossService;
+    @Resource
+    private CwProjectClientInfoMapper cwProjectClientInfoMapper;
+
 
     public IPage<CwWorkClientBaseDTO> findList(Page<CwWorkClientBaseDTO> page, CwWorkClientBaseDTO cwWorkClientBaseDTO) throws Exception{
         QueryWrapper<CwWorkClientBase> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( CwWorkClientBaseWrapper.INSTANCE.toEntity(cwWorkClientBaseDTO), CwWorkClientBase.class );
@@ -69,9 +74,17 @@ public class CwWorkClientService extends ServiceImpl<CwWorkClientBaseMapper, CwW
                     queryWrapper.eq("cw_wct.ownership_type",cwWorkClientBaseDTO.getCwWorkClientTypeDTO().getOwnershipType());
                 }
             }
+            if (StringUtils.isNotBlank(cwWorkClientBaseDTO.getProjectId())){
+                List<CwProjectClientInfo> cwProjectClientInfos = cwProjectClientInfoMapper.selectList(new QueryWrapper<CwProjectClientInfo>().lambda().eq(CwProjectClientInfo::getProjectId, cwWorkClientBaseDTO.getProjectId()));
+                List<String> ids = cwProjectClientInfos.stream().distinct().map(CwProjectClientInfo::getClientId).collect(Collectors.toList());
+                if (CollectionUtil.isNotEmpty(ids)) {
+                    queryWrapper.in("cw_wcb.id",ids);
+                } else {
+                    return new Page<>();
+                }
+            }
         }
-        IPage<CwWorkClientBaseDTO> list = cwWorkClientBaseMapper.findList(page, queryWrapper);
-        return list;
+        return cwWorkClientBaseMapper.findList(page, queryWrapper);
     }
 
     public CwWorkClientBaseDTO queryById(String id) {

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/workClientInfo/service/dto/CwWorkClientBaseDTO.java

@@ -179,5 +179,10 @@ public class CwWorkClientBaseDTO extends BaseDTO {
      */
     private String[] createDates;
 
+    /**
+     * 项目id
+     */
+    private String projectId;
+
     private static final long serialVersionUID = 1L;
 }

+ 37 - 6
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OssService.java

@@ -384,10 +384,10 @@ public class OssService extends ServiceImpl<OssServiceMapper,WorkAttachment> {
      * 保存附件信息
      * @param list 待保存的附件列表
      * @param userDTO 当前登录用户
-     * @param id 关联id
+     * @param attachmentId 关联id
      */
-    public void saveFileList(List<WorkAttachmentDto> list, UserDTO userDTO, String id,String attachmentFlag) {
-        int j = 1;
+    public void saveFileList(List<WorkAttachmentDto> list, UserDTO userDTO, String attachmentId,String attachmentFlag) {
+        int sort = 1;
         for (WorkAttachmentDto dto : list) {
             WorkAttachment i = new WorkAttachment();
             //包含了url、size、name
@@ -403,14 +403,45 @@ public class OssService extends ServiceImpl<OssServiceMapper,WorkAttachment> {
             if (CollectionUtils.isNotEmpty(strings)) {
                 i.setType(strings.get(1));
             }
-            i.setAttachmentId(id);
+            i.setAttachmentId(attachmentId);
             i.setAttachmentName(dto.getName());
             i.setAttachmentFlag(attachmentFlag);
             i.setFileSize(dto.getSize());
-            i.setSort(j);
+            i.setSort(sort);
             ossServiceMapper.insertWorkAttachment(i, userDTO);
-            j++;
+            sort++;
         }
     }
 
+    /**
+     * 保存附件信息
+     * @param workAttachmentDto 待保存的附件信息
+     * @param userDTO 当前登录用户
+     * @param attachmentId 关联id
+     * @param attachmentFlag
+     * @param sort
+     */
+    public String saveFile(WorkAttachmentDto workAttachmentDto, UserDTO userDTO, String attachmentId,String attachmentFlag, Integer sort) {
+        WorkAttachment i = new WorkAttachment();
+        //包含了url、size、name
+        i.setId(UUID.randomUUID().toString().replace("-", ""));
+        i.setCreateDate(new Date());
+        i.setUpdateDate(new Date());
+        i.setDelFlag(0);
+        i.setUrl(workAttachmentDto.getUrl());
+        //文件类型处理
+        List<String> strings = Arrays.asList(workAttachmentDto.getName().split("\\."));
+        if (CollectionUtils.isNotEmpty(strings)) {
+            i.setType(strings.get(1));
+        }
+        i.setAttachmentId(attachmentId);
+        i.setAttachmentName(workAttachmentDto.getName());
+        i.setAttachmentFlag(attachmentFlag);
+        i.setFileSize(workAttachmentDto.getSize());
+        i.setSort(sort);
+        ossServiceMapper.insertWorkAttachment(i, userDTO);
+        return i.getId();
+    }
+
+
 }