Browse Source

会计项目添加流程、报告阶段进允许项目经理操作,归档阶段项目组其他成员可申请代归档,成功后方可进行归档操作

徐滕 2 weeks ago
parent
commit
cb5e256a9b
32 changed files with 967 additions and 16 deletions
  1. 27 0
      jeeplus-api/jeeplus-finance-api/pom.xml
  2. 28 0
      jeeplus-api/jeeplus-finance-api/src/main/java/com/jeeplus/sys/factory/CwProjectReportApiFallbackFactory.java
  3. 24 0
      jeeplus-api/jeeplus-finance-api/src/main/java/com/jeeplus/sys/feign/ICwProjectReportApi.java
  4. 5 0
      jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/domain/Office.java
  5. 8 0
      jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/service/dto/OfficeDTO.java
  6. 1 0
      jeeplus-api/pom.xml
  7. 28 0
      jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/approvalInfo/mapper/xml/ZsReimbursementInfoMapper.xml
  8. 15 2
      jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/approvalInfo/service/dto/ZsRetureListDto.java
  9. 1 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/invoice/config/OmsConfig.java
  10. 10 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/controller/CwProjectRecordsController.java
  11. 7 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/CwProjectRecordsMapper.java
  12. 18 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/CwProjectRecordsMapper.xml
  13. 17 2
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/CwProjectRecordsService.java
  14. 5 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/dto/CwProjectRecordsDTO.java
  15. 11 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportReviewController.java
  16. 8 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/CwProjectReportReviewMapper.java
  17. 15 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportReviewMapper.xml
  18. 10 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportReviewService.java
  19. 108 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/controller/CwProjectReportArchiveApplyController.java
  20. 51 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/domain/CwProjectReportArchiveApply.java
  21. 42 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportArchiveApplyMapper.java
  22. 16 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportArchiveMapper.java
  23. 198 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportArchiveApplyMapper.xml
  24. 8 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportArchiveMapper.xml
  25. 131 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportArchiveApplyService.java
  26. 24 4
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportArchiveService.java
  27. 81 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/CwProjectReportArchiveApplyDTO.java
  28. 28 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/CwProjectReportArchiveDTO.java
  29. 18 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/mapstruct/CwProjectReportArchiveApplyWrapper.java
  30. 6 0
      jeeplus-modules/jeeplus-flowable/pom.xml
  31. 14 6
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/modules/flowable/listener/MyExecutionListener.java
  32. 4 0
      jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/mapper/xml/OfficeMapper.xml

+ 27 - 0
jeeplus-api/jeeplus-finance-api/pom.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>jeeplus-api</artifactId>
+        <groupId>org.jeeplus</groupId>
+        <version>9.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>jeeplus-finance-api</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.jeeplus</groupId>
+            <artifactId>jeeplus-common-core</artifactId>
+            <version>${project.parent.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jeeplus</groupId>
+            <artifactId>jeeplus-system-api</artifactId>
+            <version>9.0</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+</project>

+ 28 - 0
jeeplus-api/jeeplus-finance-api/src/main/java/com/jeeplus/sys/factory/CwProjectReportApiFallbackFactory.java

@@ -0,0 +1,28 @@
+package com.jeeplus.sys.factory;
+
+import com.jeeplus.sys.feign.ICwProjectReportApi;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * 会计服务降级处理
+ *
+ * @author jeeplus
+ */
+@Slf4j
+@Component
+public class CwProjectReportApiFallbackFactory implements FallbackFactory <ICwProjectReportApi> {
+    @Override
+    public ICwProjectReportApi create(Throwable throwable) {
+        log.error ( "会计服务调用失败:{}", throwable.getMessage ( ) );
+        throwable.printStackTrace ( );
+        return new ICwProjectReportApi( ) {
+
+            @Override
+            public String getReportReviewUserIdByProcInsId(String procInsId, String userId) {
+                return "";
+            }
+        };
+    }
+}

+ 24 - 0
jeeplus-api/jeeplus-finance-api/src/main/java/com/jeeplus/sys/feign/ICwProjectReportApi.java

@@ -0,0 +1,24 @@
+package com.jeeplus.sys.feign;
+
+import com.jeeplus.common.constant.AppNameConstants;
+import com.jeeplus.sys.factory.CwProjectReportApiFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+
+
+@FeignClient(contextId = "cwProjectReportApi", name = AppNameConstants.APP_FINANCE_MODULES, fallbackFactory = CwProjectReportApiFallbackFactory.class)
+public interface ICwProjectReportApi {
+
+    /**
+     * 查询签字注师是否包含指定人员信息
+     * @param procInsId 流程id
+     * @param userId    用户id
+     */
+    @RequestMapping(value = "/projectReport/review/getReportReviewUserIdByProcInsId", method = RequestMethod.POST)
+    String getReportReviewUserIdByProcInsId(@RequestParam(value = "procInsId")String procInsId ,@RequestParam(value = "userId")String userId);
+
+
+}
+
+

+ 5 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/domain/Office.java

@@ -91,6 +91,11 @@ public class Office extends TreeEntity <Office> {
      */
     private String administrator;
 
+    /**
+     * 项目分配人员(一般为所长)
+     */
+    private String projectPersonnelAllocation;
+
 
     /**
      * 构造函数

+ 8 - 0
jeeplus-api/jeeplus-system-api/src/main/java/com/jeeplus/sys/service/dto/OfficeDTO.java

@@ -119,4 +119,12 @@ public class OfficeDTO extends TreeDTO <OfficeDTO> {
     //分管领导名称
     private String adminName;
 
+    /**
+     * 项目分配人员(一般为所长)
+     */
+    private String projectPersonnelAllocation;
+
+    //项目分配人员(一般为所长)
+    private String projectPersonnelAllocationName;
+
 }

+ 1 - 0
jeeplus-api/pom.xml

@@ -14,6 +14,7 @@
     <modules>
         <module>jeeplus-system-api</module>
         <module>jeeplus-public-modules-api</module>
+        <module>jeeplus-finance-api</module>
         <module>jeeplus-file-api</module>
     </modules>
 

+ 28 - 0
jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/approvalInfo/mapper/xml/ZsReimbursementInfoMapper.xml

@@ -116,6 +116,34 @@
 						zs1.`number`
 					END
 				) AS `number`,
+
+			(
+				CASE
+
+					WHEN a.source_type = 1 THEN
+						b.`ordinary_number`
+					WHEN a.source_type = 3 THEN
+						r4.`ordinary_number`
+					WHEN a.source_type = 4 THEN
+						b4.`ordinary_number`
+					WHEN a.source_type = 8 THEN
+						zs1.`ordinary_number`
+					END
+				) AS `ordinaryNumber`,
+
+			(
+				CASE
+
+					WHEN a.source_type = 1 THEN
+						b.`subsidy`
+					WHEN a.source_type = 3 THEN
+						r4.`subsidy`
+					WHEN a.source_type = 4 THEN
+						b4.`subsidy`
+					WHEN a.source_type = 8 THEN
+						zs1.`subsidy`
+					END
+				) AS `subsidy`,
 			(
 				CASE
 

+ 15 - 2
jeeplus-modules/jeeplus-centrecareful/src/main/java/com/jeeplus/centrecareful/approvalInfo/service/dto/ZsRetureListDto.java

@@ -84,11 +84,24 @@ public class ZsRetureListDto {
     private Date reimDate;
 
     /**
-     * 报销金额
+     * 报销金额(数电)
      */
+    @Excel(name = "报销金额(数电)", width = 30, orderNum = "11",type = 10)
     private BigDecimal number;
 
     /**
+     * 报销金额(非数电)
+     */
+    @Excel(name = "报销金额(非数电)", width = 30, orderNum = "11",type = 10)
+    private BigDecimal ordinaryNumber;
+
+    /**
+     * 报销金额(其他)
+     */
+    @Excel(name = "报销金额(其他)", width = 30, orderNum = "11",type = 10)
+    private BigDecimal subsidy;
+
+    /**
      * 报销状态
      */
     @Excel(name = "报销状态", width = 30, orderNum = "12")
@@ -101,7 +114,7 @@ public class ZsRetureListDto {
     /**
      * 报销金额汇总
      */
-    @Excel(name = "报销金额", width = 30, orderNum = "11",type = 10)
+    @Excel(name = "报销金额", width = 30, orderNum = "11",type = 10)
     private String numberCount;
 
 

+ 1 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/invoice/config/OmsConfig.java

@@ -14,7 +14,7 @@ public class OmsConfig {
     public static  final String appKey = "JSXGXM";
 
     /** 组织编码 */
-    public static  final String deptCode = "JSXGZC";
+    public static  final String deptCode = "JSXGKJ";
 
     /** 销方名称 */
     public static  final String sellerName = "江苏兴光会计师事务所有限责任公司";

+ 10 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/controller/CwProjectRecordsController.java

@@ -356,6 +356,16 @@ public class CwProjectRecordsController {
         return cwProjectRecordsService.getHaveProjectIds();
     }
 
+    /**
+     * 查询当前登录人是否有可能是项目经理(即是否可以被选择为项目经理,也就是注会)
+     * @return
+     */
+    @ApiOperation(value = "查询当前登录人是否有可能是项目经理(即是否可以被选择为项目经理,也就是注会)")
+    @GetMapping(value = "/getUserWhereIsCpaById")
+    public ResponseEntity<List<String>> getUserWhereIsCpaById() {
+        return cwProjectRecordsService.getUserWhereIsCpaById();
+    }
+
 
     /**
      * 查找该报告及报告对应项目下的开票列表

+ 7 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/CwProjectRecordsMapper.java

@@ -77,6 +77,13 @@ public interface CwProjectRecordsMapper extends BaseMapper<CwProjectRecords> {
 
     List<String> getHaveProjectIds(@Param("currentUser") UserDTO currentUser);
 
+    /**
+     * 根据人员id查询是否是注册会计师
+     * @param currentUser
+     * @return
+     */
+    List<String> getUserWhereIsCpaById(@Param("currentUser") UserDTO currentUser);
+
     List<String> isUseByReport(@Param("idArray")List<String> idArray);
 
     List<String> isUseByReim(@Param("idArray")List<String> idArray);

+ 18 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/CwProjectRecordsMapper.xml

@@ -287,6 +287,7 @@
         cw_wci.payment_method,
         cw_wcb.name as client_contacts_name,
         cw_pbt.name as business_type_name,
+        e.ID_ as taskId,
         b.member_count
         from cw_project_records a
         left join sys_user su on su.id = a.create_by_id and su.del_flag = '0'
@@ -305,6 +306,7 @@
         left join sys_user_manage_office sumo on sumo.office_id = sub.office_id
         LEFT JOIN cw_project_report pr on a.id = pr.project_id and pr.del_flag = '0'
         LEFT JOIN cw_project_report_new_line  nl on pr.id = nl.report_id and nl.del_flag = '0'
+        LEFT JOIN act_ru_task e ON a.proc_ins_id = e.PROC_INST_ID_
         ${ew.customSqlSegment}
         ORDER BY a.create_time DESC
     </select>
@@ -564,6 +566,22 @@
         where cw_pr.create_by_id = #{currentUser.id} and cw_pr.del_flag = '0') a
     </select>
 
+    <select id="getUserWhereIsCpaById" resultType="string">
+        SELECT
+            a.id,
+            a.`name`,
+            a.office_id AS parent_id,
+            b.`name` AS office_name,
+            true AS is_user
+        FROM
+            sys_user a
+                LEFT JOIN sys_office b ON a.office_id = b.id
+                left join sys_cert sc on a.id = sc.user_id and sc.del_flag = '0' and (sc.status = '5' or sc.status IS NULL)
+        WHERE
+            a.del_flag = 0 and a.is_admin is null and a.login_flag = 1 and sc.type = '6'
+          and a.id = #{currentUser.id}
+    </select>
+
     <select id="isUseByReport" resultType="string">
         select distinct cw_pro.project_name
         from cw_project_report cw_pr

+ 17 - 2
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/CwProjectRecordsService.java

@@ -231,10 +231,15 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
         UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
         QueryWrapper<CwProjectRecords> queryWrapper = QueryWrapperGenerator.buildQueryCondition(CwProjectRecordsWrapper.INSTANCE.toEntity(cwProjectRecordsDTO), CwProjectRecords.class);
         queryWrapper.eq("a.del_flag", "0");
-        queryWrapper.nested(wrapper -> {
+        /*queryWrapper.nested(wrapper -> {
             wrapper.eq("a.create_by_id", userDTO.getId())  // 条件1:创建人是当前用户
                     .or()                                   // 逻辑OR
                     .eq("b.user_id", userDTO.getId());      // 条件2:项目成员是当前用户(b是关联表别名)
+        });*/
+        queryWrapper.nested(wrapper -> {
+            wrapper.eq("a.project_master_id", userDTO.getId())  // 条件1:创建人是项目经理1
+                    .or()                                   // 逻辑OR
+                    .eq("a.real_header", userDTO.getId());      // 条件2:创建人是项目经理2
         });
         if (ObjectUtil.isNotEmpty(cwProjectRecordsDTO)) {
             if (ArrayUtil.isNotEmpty(cwProjectRecordsDTO.getCreateDates())) {
@@ -653,7 +658,7 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
             String serialNum = SpringUtil.getBean(IWorkAttachmentApi.class).genSerialNum(userDTO.getCompanyDTO().getId(), CwProjectRecordsDTO.BIZ_CODE, TokenProvider.getCurrentToken());
 //            String serialNum = serialnumTplService.genSerialNum(userDTO.getCompanyDTO().getId(), CwProjectRecordsDTO.BIZ_CODE);
             cwProjectRecordsDTO.setProjectNumber(serialNum);
-            cwProjectRecordsDTO.setStatus("5");
+            //cwProjectRecordsDTO.setStatus("5");
         } else {
             //把原项目关联的客户联系人从客户表删除
             CwProjectRecords project = this.getById(cwProjectRecordsDTO.getId());
@@ -1047,6 +1052,16 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
         return ResponseEntity.ok(cwProjectRecordsMapper.getHaveProjectIds(userDTO));
     }
 
+    /**
+     * 查询当前登录人创建的项目以及所属项目组的项目
+     *
+     * @return
+     */
+    public ResponseEntity<List<String>> getUserWhereIsCpaById() {
+        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
+        return ResponseEntity.ok(cwProjectRecordsMapper.getUserWhereIsCpaById(userDTO));
+    }
+
 
     public List<CwProjectRecordsDTO> getReportById(String id, CwProjectRecordsDTO cwProjectRecordsDTO) throws Exception {
         List<CwProjectRecordsDTO> reportById = cwProjectRecordsMapper.getReportById(id, cwProjectRecordsDTO);

+ 5 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/service/dto/CwProjectRecordsDTO.java

@@ -278,6 +278,11 @@ public class CwProjectRecordsDTO extends BaseDTO {
      */
     private String cwReportType;
 
+    /**
+     * 流程taskId
+     */
+    private String taskId;
+
 
     /**
      * 报告日期

+ 11 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/controller/CwProjectReportReviewController.java

@@ -14,7 +14,6 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.lang.reflect.InvocationTargetException;
-import java.util.List;
 
 /**
  * @author: 王强
@@ -98,4 +97,15 @@ public class CwProjectReportReviewController {
         service.saveReportNo(reportId);
         return ResponseEntity.ok ("驳回成功");
     }
+
+
+    /**
+     * 查询签字注师是否包含指定人员信息
+     * @param procInsId 流程id
+     * @param userId    用户id
+     */
+    @RequestMapping(value = "getReportReviewUserIdByProcInsId", method = RequestMethod.POST)
+    public String savegetReportReviewUserIdByProcInsIdFile(@RequestParam(value = "procInsId")String procInsId ,@RequestParam(value = "userId")String userId){
+        return service.getReportReviewUserIdByProcInsId(procInsId,userId);
+    }
 }

+ 8 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/CwProjectReportReviewMapper.java

@@ -75,4 +75,12 @@ public interface CwProjectReportReviewMapper extends BaseMapper<CwProjectReview>
      * @param id
      */
     Integer updateNumberById(@Param("replaceNumber") String replaceNumber, @Param("id") String id);
+
+
+    /**
+     * 查询签字注师是否包含指定人员信息
+     * @param procInsId 流程id
+     * @param userId    用户id
+     */
+    String getReportReviewUserIdByProcInsId(@Param(value = "procInsId")String procInsId , @Param(value = "userId")String userId);
 }

+ 15 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectReportReviewMapper.xml

@@ -158,4 +158,19 @@
         update cw_project_report_new_line set report_no = #{replaceNumber} where id = #{id}
     </update>
 
+    <select id="getReportReviewUserIdByProcInsId" resultType="java.lang.String">
+        SELECT
+            CASE
+                WHEN a.signature_annotator1 LIKE CONCAT('%', #{userId}, '%')
+                    OR a.signature_annotator2 LIKE CONCAT('%', #{userId}, '%')
+                    THEN a.id
+                ELSE NULL
+                END AS id
+        FROM cw_project_report a
+                 LEFT JOIN cw_project_report_review b ON a.id = b.report_id
+        WHERE b.proc_ins_id = #{procInsId} and a.del_flag = 0 and b.del_flag = 0
+            order by b.update_time desc
+            LIMIT 1
+    </select>
+
 </mapper>

+ 10 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportReviewService.java

@@ -545,4 +545,14 @@ public class CwProjectReportReviewService extends ServiceImpl<CwProjectReportRev
         // 保存报告文号
         infoMapper.updateReportNoByReportId(reportId,documentNo);
     }
+
+
+    /**
+     * 查询签字注师是否包含指定人员信息
+     * @param procInsId 流程id
+     * @param userId    用户id
+     */
+    public String getReportReviewUserIdByProcInsId(String procInsId ,String userId) {
+        return mapper.getReportReviewUserIdByProcInsId(procInsId,userId);
+    }
 }

+ 108 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/controller/CwProjectReportArchiveApplyController.java

@@ -0,0 +1,108 @@
+package com.jeeplus.finance.projectReportArchive.controller;
+
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.common.excel.ExcelOptions;
+import com.jeeplus.common.excel.annotation.ExportMode;
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.finance.invoice.util.EasyPoiUtil;
+import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
+import com.jeeplus.finance.projectReportArchive.service.CwProjectReportArchiveApplyService;
+import com.jeeplus.finance.projectReportArchive.service.CwProjectReportArchiveService;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveApplyDTO;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveExportDTO;
+import com.jeeplus.finance.projectReportArchive.service.dto.ReportDTO;
+import com.jeeplus.logging.annotation.ApiLog;
+import com.jeeplus.logging.constant.enums.LogTypeEnum;
+import com.jeeplus.sys.feign.IDictApi;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+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 javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+/**
+ * 财务项目报告归档
+ */
+@RestController
+@Api("财务项目报告归档")
+@RequestMapping(value = "/cwProjectReportArchiveApply")
+public class CwProjectReportArchiveApplyController {
+
+    @Resource
+    private CwProjectReportArchiveApplyService service;
+
+
+    /**
+     * 查询报告信息数据
+     *
+     * @param id
+     * @return
+     */
+    @ApiLog("查询财务报告数据")
+    // @PreAuthorize ("hasAnyAuthority('cwProjectReport:view','cwProjectReport:add','cwProjectReport:edit')")
+    @GetMapping("queryReportById")
+    public ResponseEntity queryReportById(@RequestParam("id") String id) {
+        CwProjectReportArchiveApplyDTO projectReportData = service.queryReportById(id);
+        return ResponseEntity.ok(projectReportData);
+    }
+
+    /**
+     * 查询报告信息数据
+     *
+     * @param reportId
+     * @return
+     */
+    /*@ApiLog("查询财务报告数据")
+    // @PreAuthorize ("hasAnyAuthority('cwProjectReport:view','cwProjectReport:add','cwProjectReport:edit')")
+    @GetMapping("queryReportById")
+    public ResponseEntity queryReportById(@RequestParam("id") String reportId) {
+        CwProjectReportArchiveApplyDTO projectReportData = service.queryReportByReportId(reportId);
+        return ResponseEntity.ok(projectReportData);
+    }*/
+
+    /**
+     * 保存代归档申请-流程
+     * @param cwProjectReportArchiveApplyDTO
+     * @return
+     */
+    @ApiLog(value = "保存代归档申请-流程", type = LogTypeEnum.SAVE)
+    @PostMapping("applySave")
+    public ResponseEntity applySave(@Valid @RequestBody CwProjectReportArchiveApplyDTO cwProjectReportArchiveApplyDTO) throws Exception {
+        String id = service.applySave(cwProjectReportArchiveApplyDTO);
+        return ResponseUtil.newInstance().add("businessTable", "cw_project_report_archive_apply").add("businessId", id).ok ("操作成功");
+    }
+
+
+    /**
+     * 根据id修改状态值status
+     * @param dto
+     * @return
+     */
+    @ApiOperation(value = "根据id修改状态值status")
+    @PostMapping(value = "/updateStatusById")
+    public ResponseEntity<String> updateStatusById(@RequestBody CwProjectReportArchiveApplyDTO dto) {
+        String s = service.updateStatusById(dto);
+        return ResponseEntity.ok(s);
+    }
+
+}

+ 51 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/domain/CwProjectReportArchiveApply.java

@@ -0,0 +1,51 @@
+package com.jeeplus.finance.projectReportArchive.domain;
+
+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
+@TableName("cw_project_report_archive_apply")
+public class CwProjectReportArchiveApply extends BaseEntity {
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 报告文号
+     */
+    private String reportNo;
+
+    /**
+     * 报告id
+     */
+    private String reportId;
+
+    /**
+     * 审核时间
+     */
+    private Date auditDate;
+
+}

+ 42 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportArchiveApplyMapper.java

@@ -0,0 +1,42 @@
+package com.jeeplus.finance.projectReportArchive.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchiveApply;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveApplyDTO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+//@InterceptorIgnore(tenantLine = "true")
+public interface CwProjectReportArchiveApplyMapper extends BaseMapper<CwProjectReportArchiveApply> {
+
+    @InterceptorIgnore(tenantLine = "true")
+    CwProjectReportArchiveApplyDTO get(String id);
+
+    @InterceptorIgnore(tenantLine = "true")
+    CwProjectReportArchiveApplyDTO queryReportById(String id);
+
+    @InterceptorIgnore(tenantLine = "true")
+    CwProjectReportArchiveApplyDTO queryReportByReportId(String id);
+    /**
+     * 修改归档信息
+     * @param cwProjectReportArchive
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    void updateApplyInfoById(CwProjectReportArchiveApply cwProjectReportArchive);
+
+
+    /**
+     * 根据项目id查询项目的非所长级别的项目经理Id(只取其一)
+     * @param projectId
+     * @return
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    String getProjectManagerByProjectId(String projectId);
+
+}
+
+
+
+

+ 16 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportArchiveMapper.java

@@ -6,6 +6,7 @@ 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.finance.projectReportArchive.domain.CwProjectReportArchive;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchiveApply;
 import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
 import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveExportDTO;
 import com.jeeplus.finance.projectReportArchive.service.dto.ReportDTO;
@@ -104,6 +105,21 @@ public interface CwProjectReportArchiveMapper extends BaseMapper<CwProjectReport
      * @param cwProjectReportArchive
      */
     Integer updatePlaceByYear(CwProjectReportArchive cwProjectReportArchive);
+
+
+    /**
+     * 修改归档信息
+     * @param cwProjectReportArchive
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    void updateApplyInfoById(CwProjectReportArchiveApply cwProjectReportArchive);
+
+    /**
+     * 新增归档信息
+     * @param cwProjectReportArchive
+     */
+    @InterceptorIgnore(tenantLine = "true")
+    void insertApply(CwProjectReportArchiveApply cwProjectReportArchive);
 }
 
 

+ 198 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportArchiveApplyMapper.xml

@@ -0,0 +1,198 @@
+<?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.finance.projectReportArchive.mapper.CwProjectReportArchiveApplyMapper">
+
+
+    <sql id="Archive_File_Column_List">
+        a.id as "id",
+        a.create_by_id as "createBy.id",
+        a.create_time as "createTime",
+        a.update_by_id as "updateBy.id",
+        a.update_time as "updateTime",
+        a.del_flag as "delFlag",
+        a.remarks as "remarks",
+        a.report_id as "reportId",
+        a.report_no as "reportNo",
+        a.audit_date as "auditDate",
+        a.proc_ins_id as "procInsId",
+        a.process_definition_id as "processDefinitionId",
+        a.status as "status",
+        a.tenant_id as "tenantId"
+    </sql>
+
+    <update id="updateApplyInfoById">
+        update
+        cw_project_report_archive_apply
+        set
+        <if test="remarks != null and remarks != ''">
+            remarks = #{remarks},
+        </if>
+
+        <if test="auditDate != null">
+            audit_date = #{auditDate},
+        </if>
+        <if test="procInsId != null and procInsId != ''">
+            proc_ins_id = #{procInsId},
+        </if>
+        <if test="processDefinitionId != null and processDefinitionId != ''">
+            process_definition_id = #{processDefinitionId},
+        </if>
+
+        <if test="status != null and status != ''">
+            status = #{status},
+        </if>
+
+        <if test="reportId != null and reportId != ''">
+            report_id = #{reportId},
+        </if>
+
+        <if test="reportNo != null and reportNo != ''">
+            report_no = #{reportNo},
+        </if>
+
+        update_by_id = #{updateById},
+        update_time = #{updateTime}
+        where id = #{id} ;
+    </update>
+
+    <select id="get"
+            resultType="com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveApplyDTO">
+
+        SELECT
+            <include refid="Archive_File_Column_List"></include>
+        FROM cw_project_report_archive_apply a
+         <where>
+             WHERE a.del_flag = 0
+             <if test="id != null and id != ''">
+                 AND a.id = #{id}
+             </if>
+         </where>
+
+    </select>
+
+    <select id="queryReportById" resultType="com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveApplyDTO">
+        SELECT
+            a.id as "reportId",
+            a.document_no as "documentNo",
+            a.project_report_number as "projectReportNumber",
+            a.signature_type as "signatureType",
+            a.signature_annotator1 as "signatureAnnotator1",
+            a.signature_annotator2 as "signatureAnnotator2",
+            a.signature_contract_id as "signatureContractId",
+            a.create_time as "createTime",
+            a.real_create as "realCreate",
+            a.business_type as "businessType",
+            a.audit_business_type as "auditBusinessType",
+            a.report_name as "reportName",
+            a.industry as "industry",
+            b.id as projectId,
+            b.project_number as projectNumber,
+            b.project_name as projectName,
+            e.name as projectMasterName,
+            ifnull(cw_pa.audit_money,"") as "auditFees",
+            new_line.report_no as reportNo,
+            new_line.opinion_type as opinionType,
+            new_line.report_type as reportType,
+            new_line.approved_no_including_tax as approvedNoIncludingTax,
+            new_line.approved_including_tax as approvedIncludingTax,
+            new_line.bank_letters_count as bankLettersCount,
+            new_line.digital_letter_count as digitalLetterCount,
+            su3.name as realCreateName,
+            cpraa.id as id,
+            cpraa.status as status,
+            cpraa.proc_ins_id as procInsId,
+            cpraa.process_definition_id as processDefinitionId,
+            cpraa.remarks as remarks
+        FROM cw_project_report a
+                 left join cw_project_records b on a.project_id = b.id
+                 LEFT JOIN sys_office c on a.office_id = c.id
+                 LEFT JOIN sys_user d on a.create_by_id = d.id
+                 LEFT JOIN sys_user e on b.project_master_id = e.id
+                 LEFT JOIN sys_user suser on b.real_header = suser.id
+                 LEFT JOIN cw_project_report_signature cw_prs1 on cw_prs1.report_id = a.id and cw_prs1.type = '1' and cw_prs1.del_flag = '0'
+                 LEFT JOIN cw_project_report_signature cw_prs2 on cw_prs2.report_id = a.id and cw_prs2.type = '2' and cw_prs2.del_flag = '0'
+                 LEFT JOIN cw_project_report_signature cw_prs3 on cw_prs3.report_id = a.id and cw_prs3.type = '3' and cw_prs3.del_flag = '0'
+                 left join cw_project_report_new_line new_line on a.id = new_line.report_id
+                 left join cw_project_report_review cw_re on a.id = cw_re.report_id and cw_re.del_flag = '0'
+                 LEFT JOIN cw_project_report_number_apply cw_na on  a.id = cw_na.report_id and cw_na.del_flag = '0'
+                 LEFT JOIN cw_project_report_number_review_apply cw_nra on  a.id = cw_nra.report_id and cw_nra.del_flag = '0'
+                 LEFT JOIN cw_project_report_archive cw_pa on  a.id = cw_pa.report_id and cw_pa.del_flag = '0'
+                 LEFT JOIN sys_user su3 on a.real_create = su3.id
+                 LEFT JOIN cw_project_report_archive_apply cpraa on a.id = cpraa.report_id
+        where cpraa.id = #{id}
+    </select>
+
+    <select id="queryReportByReportId" resultType="com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveApplyDTO">
+        SELECT
+            a.id as "reportId",
+            a.document_no as "documentNo",
+            a.project_report_number as "projectReportNumber",
+            a.signature_type as "signatureType",
+            a.signature_annotator1 as "signatureAnnotator1",
+            a.signature_annotator2 as "signatureAnnotator2",
+            a.signature_contract_id as "signatureContractId",
+            a.create_time as "createTime",
+            a.real_create as "realCreate",
+            a.business_type as "businessType",
+            a.audit_business_type as "auditBusinessType",
+            a.report_name as "reportName",
+            a.industry as "industry",
+            b.id as projectId,
+            b.project_number as projectNumber,
+            b.project_name as projectName,
+            e.name as projectMasterName,
+            ifnull(cw_pa.audit_money,"") as "auditFees",
+            new_line.report_no as reportNo,
+            new_line.opinion_type as opinionType,
+            new_line.report_type as reportType,
+            new_line.approved_no_including_tax as approvedNoIncludingTax,
+            new_line.approved_including_tax as approvedIncludingTax,
+            new_line.bank_letters_count as bankLettersCount,
+            new_line.digital_letter_count as digitalLetterCount,
+            su3.name as realCreateName
+        FROM cw_project_report a
+                 left join cw_project_records b on a.project_id = b.id
+                 LEFT JOIN sys_office c on a.office_id = c.id
+                 LEFT JOIN sys_user d on a.create_by_id = d.id
+                 LEFT JOIN sys_user e on b.project_master_id = e.id
+                 LEFT JOIN sys_user suser on b.real_header = suser.id
+                 LEFT JOIN cw_project_report_signature cw_prs1 on cw_prs1.report_id = a.id and cw_prs1.type = '1' and cw_prs1.del_flag = '0'
+                 LEFT JOIN cw_project_report_signature cw_prs2 on cw_prs2.report_id = a.id and cw_prs2.type = '2' and cw_prs2.del_flag = '0'
+                 LEFT JOIN cw_project_report_signature cw_prs3 on cw_prs3.report_id = a.id and cw_prs3.type = '3' and cw_prs3.del_flag = '0'
+                 left join cw_project_report_new_line new_line on a.id = new_line.report_id
+                 left join cw_project_report_review cw_re on a.id = cw_re.report_id and cw_re.del_flag = '0'
+                 LEFT JOIN cw_project_report_number_apply cw_na on  a.id = cw_na.report_id and cw_na.del_flag = '0'
+                 LEFT JOIN cw_project_report_number_review_apply cw_nra on  a.id = cw_nra.report_id and cw_nra.del_flag = '0'
+                 LEFT JOIN cw_project_report_archive cw_pa on  a.id = cw_pa.report_id and cw_pa.del_flag = '0'
+                 LEFT JOIN sys_user su3 on a.real_create = su3.id
+        where a.id = #{id}
+    </select>
+
+
+
+    <select id="getProjectManagerByProjectId" resultType="java.lang.String">
+        SELECT
+        CASE
+        WHEN project_master_id IS NOT NULL
+        AND project_master_id != ''
+        AND project_master_id NOT IN ('1602914026461380610', '1602914995043614722', '1614824803453370370')
+        THEN project_master_id
+        WHEN real_header IS NOT NULL
+        AND real_header != ''
+        AND real_header NOT IN ('1602914026461380610', '1602914995043614722', '1614824803453370370')
+        THEN real_header
+        ELSE NULL
+        END AS project_manager_id
+        FROM cw_project_records
+        <where>
+            del_flag = 0
+            <if test="id != null and id != ''">
+                AND id = #{id}
+            </if>
+        </where>
+        LIMIT 1
+
+    </select>
+</mapper>

+ 8 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportArchiveMapper.xml

@@ -288,6 +288,11 @@
         art.ID_ as task_id,
         crb.create_by_id as borrowUserId,
         crb.proc_ins_id as procInsId2,
+        cw_praa.id as praaId,
+        IFNULL(cw_praa.status, 0) AS praaStatus,
+        e.ID_ as praaTaskId,
+        cw_praa.proc_ins_id as procInsIdApplyForRight,
+        cw_praa.process_definition_id as processDefinitionAuditIdApplyForRight,
         (case when cw_pa.audit_date is null then timestampdiff(day,cw_prnl.report_date,now()) when cw_pa.audit_date is not null then timestampdiff(day,cw_prnl.report_date,cw_pa.audit_date) end) as archiveDay
         from cw_project_report_archive cw_pa
         left join cw_project_report_borrow crb on crb.archive_id = cw_pa.id and crb.del_flag = '0'
@@ -299,11 +304,14 @@
         left join sys_user su2 on cw_pr.real_header = su2.id and su2.del_flag = '0'
         left join cw_project_report_new_line cw_prnl on cw_prnl.report_id = cw_pa.report_id and cw_prnl.del_flag = '0'
 
+        left join cw_project_report_archive_apply cw_praa on cw_praa.report_id = cw_pa.report_id and cw_praa.del_flag = '0'
+
         left join cw_project_members cpm on cw_pr.id = cpm.project_id
         left join sys_user sub on cpm.user_id = sub.id
         left join sys_user_manage_office sumo on sumo.office_id = sub.office_id
 
         left join act_ru_task art ON cw_pa.proc_ins_id = art.PROC_INST_ID_
+        LEFT JOIN act_ru_task e ON cw_praa.proc_ins_id = e.PROC_INST_ID_
 
         ${ew.customSqlSegment}
         and cw_prnl.report_number is not null and cw_prnl.report_date is not null and cw_pa.del_flag = '0'

+ 131 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportArchiveApplyService.java

@@ -0,0 +1,131 @@
+package com.jeeplus.finance.projectReportArchive.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
+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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
+import com.jeeplus.finance.projectRecords.mapper.CwProjectRecordsMapper;
+import com.jeeplus.finance.projectReport.domain.*;
+import com.jeeplus.finance.projectReport.mapper.CwProjectInfoMapper;
+import com.jeeplus.finance.projectReport.mapper.CwProjectReportMapper;
+import com.jeeplus.finance.projectReport.service.dto.ProjectReportWorkAttachmentDTO;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchive;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchiveApply;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchiveFile;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveApplyMapper;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveFileMapper;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveMapper;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveReportMapper;
+import com.jeeplus.finance.projectReportArchive.service.dto.*;
+import com.jeeplus.finance.projectReportArchive.service.mapstruct.CwProjectReportArchiveApplyWrapper;
+import com.jeeplus.finance.projectReportArchive.service.mapstruct.CwProjectReportArchiveWrapper;
+import com.jeeplus.flowable.feign.IFlowableApi;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import com.jeeplus.sys.feign.IRoleApi;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.feign.IWorkAttachmentApi;
+import com.jeeplus.sys.service.dto.RoleDTO;
+import com.jeeplus.sys.service.dto.UserDTO;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional
+public class CwProjectReportArchiveApplyService extends ServiceImpl<CwProjectReportArchiveApplyMapper, CwProjectReportArchiveApply> {
+
+    @Resource
+    private CwProjectReportArchiveApplyMapper cwProjectReportArchiveApplyMapper;
+
+    @Resource
+    private CwProjectReportMapper reportMapper;
+
+    @Resource
+    private CwProjectInfoMapper infoMapper;
+
+    @Resource
+    private CwProjectReportMapper cwProjectReportMapper;
+
+    @Resource
+    private IFlowableApi flowTaskService;
+
+
+    public CwProjectReportArchiveApplyDTO queryReportById(String id) {
+
+        CwProjectReportArchiveApplyDTO reportData = cwProjectReportArchiveApplyMapper.queryReportById(id);
+        if (null == reportData) {
+            reportData = cwProjectReportArchiveApplyMapper.queryReportByReportId(id);
+        }
+        if(reportData != null) {
+            if(StringUtils.isNotBlank(reportData.getProjectId())){
+                //查询项目对应的项目经理是谁(排除张宁、孙闻报、范百顺以外的另一个项目经理(只取一个))
+                String projectManagerByProjectId = cwProjectReportArchiveApplyMapper.getProjectManagerByProjectId(reportData.getProjectId());
+                reportData.setApplyAuditById(projectManagerByProjectId);
+            }
+        }
+
+        return reportData;
+    }
+
+    public CwProjectReportArchiveApplyDTO queryReportByReportId(String reportId) {
+
+        CwProjectReportArchiveApplyDTO reportData = cwProjectReportArchiveApplyMapper.queryReportByReportId(reportId);
+
+        return reportData;
+    }
+
+
+
+    /**
+     * 保存项目归档信息以及其他相关信息
+     * @param cwProjectReportArchiveDTO
+     * @return
+     * @throws Exception
+     */
+    public String applySave(CwProjectReportArchiveApplyDTO cwProjectReportArchiveDTO) throws Exception{
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        cwProjectReportArchiveDTO.setCreateBy(userDTO);
+        CwProjectReportArchiveApply cwProjectReportArchive = CwProjectReportArchiveApplyWrapper.INSTANCE.toEntity(cwProjectReportArchiveDTO);
+
+        if(StringUtils.isNotBlank(cwProjectReportArchive.getId())){ //修改
+            cwProjectReportArchiveApplyMapper.updateApplyInfoById(cwProjectReportArchive);
+        }else{  //新增
+            cwProjectReportArchiveApplyMapper.insert(cwProjectReportArchive);
+        }
+
+        return cwProjectReportArchive.getId();
+    }
+
+
+
+    /**
+     * 修改状态
+     * @param cwProjectReportArchiveDTO
+     * @return
+     */
+    public String updateStatusById(CwProjectReportArchiveApplyDTO cwProjectReportArchiveDTO) {
+        CwProjectReportArchiveApply cwProjectReportArchive = CwProjectReportArchiveApplyWrapper.INSTANCE.toEntity(cwProjectReportArchiveDTO);
+        this.update(cwProjectReportArchive, new QueryWrapper<CwProjectReportArchiveApply>().lambda().eq(CwProjectReportArchiveApply::getId, cwProjectReportArchive.getId()));
+        return "操作成功";
+    }
+}

+ 24 - 4
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportArchiveService.java

@@ -23,14 +23,14 @@ import com.jeeplus.finance.projectReport.domain.CwProjectReport;
 import com.jeeplus.finance.projectReport.mapper.CwProjectInfoMapper;
 import com.jeeplus.finance.projectReport.mapper.CwProjectReportMapper;
 import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchive;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchiveApply;
 import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchiveFile;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveApplyMapper;
 import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveFileMapper;
 import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveMapper;
 import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveReportMapper;
-import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
-import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveExportDTO;
-import com.jeeplus.finance.projectReportArchive.service.dto.ReportDTO;
-import com.jeeplus.finance.projectReportArchive.service.dto.WorkAttachmentArchiveDto;
+import com.jeeplus.finance.projectReportArchive.service.dto.*;
+import com.jeeplus.finance.projectReportArchive.service.mapstruct.CwProjectReportArchiveApplyWrapper;
 import com.jeeplus.finance.projectReportArchive.service.mapstruct.CwProjectReportArchiveWrapper;
 import com.jeeplus.flowable.feign.IFlowableApi;
 import com.jeeplus.sys.domain.WorkAttachmentInfo;
@@ -58,6 +58,8 @@ public class CwProjectReportArchiveService extends ServiceImpl<CwProjectReportAr
     @Resource
     private CwProjectReportArchiveMapper cwProjectReportArchiveMapper;
     @Resource
+    private CwProjectReportArchiveApplyMapper cwProjectReportArchiveApplyMapper;
+    @Resource
     private CwProjectReportArchiveReportMapper cwProjectReportArchiveReportMapper;
     @Resource
     private CwProjectReportArchiveFileMapper cwProjectReportArchiveFileMapper;
@@ -944,5 +946,23 @@ public class CwProjectReportArchiveService extends ServiceImpl<CwProjectReportAr
         return list;
     }
 
+    /**
+     * 保存项目归档信息以及其他相关信息
+     * @param cwProjectReportArchiveDTO
+     * @return
+     * @throws Exception
+     */
+    public String applySave(CwProjectReportArchiveApplyDTO cwProjectReportArchiveDTO) throws Exception{
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        cwProjectReportArchiveDTO.setCreateBy(userDTO);
+        CwProjectReportArchiveApply cwProjectReportArchive = CwProjectReportArchiveApplyWrapper.INSTANCE.toEntity(cwProjectReportArchiveDTO);
+
+        if(StringUtils.isNotBlank(cwProjectReportArchive.getId())){ //修改
+            cwProjectReportArchiveApplyMapper.updateApplyInfoById(cwProjectReportArchive);
+        }else{  //新增
+            cwProjectReportArchiveApplyMapper.insert(cwProjectReportArchive);
+        }
 
+        return cwProjectReportArchive.getId();
+    }
 }

+ 81 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/CwProjectReportArchiveApplyDTO.java

@@ -0,0 +1,81 @@
+package com.jeeplus.finance.projectReportArchive.service.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.service.dto.BaseDTO;
+import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 财务-项目报告归档-项目归档
+ */
+@Data
+public class CwProjectReportArchiveApplyDTO extends BaseDTO {
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 流程id
+     */
+    private String procInsId;
+
+    /**
+     * 流程信息
+     */
+    private String processDefinitionId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 报告文号
+     */
+    private String reportNo;
+
+    /**
+     * 报告id
+     */
+    private String reportId;
+
+    /**
+     * 审核时间
+     */
+    private Date auditDate;
+
+
+    private String documentNo;
+    private String projectReportNumber;
+    private String signatureType;
+    private String signatureAnnotator1;
+    private String signatureAnnotator2;
+    private String signatureContractId;
+    private String realCreate;
+    private String businessType;
+    private String auditBusinessType;
+    private String reportName;
+    private String industry;
+    private String projectNumber;
+    private String projectId;
+    private String projectName;
+    private String projectMasterName;
+    private String auditFees;
+    private String opinionType;
+    private String reportType;
+    private String approvedNoIncludingTax;
+    private String approvedIncludingTax;
+    private String bankLettersCount;
+    private String digitalLetterCount;
+    private String realCreateName;
+
+    private String applyAuditById;  //项目经理审核人
+
+}

+ 28 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/CwProjectReportArchiveDTO.java

@@ -409,6 +409,33 @@ public class CwProjectReportArchiveDTO extends BaseDTO {
     private String cprrProcDefId;
 
     /**
+     * 代归档申请表id
+     */
+    private String praaId;
+
+    /**
+     * 代归档申请表流程状态
+     */
+    private String praaStatus;
+
+    /**
+     * 流程praaTaskId
+     */
+    private String praaTaskId;
+
+
+
+    /**
+     * 报告复核流程id
+     */
+    private String procInsIdApplyForRight;
+
+    /**
+     * 报告复核流程id
+     */
+    private String processDefinitionAuditIdApplyForRight;
+
+    /**
      * 流程发起人姓名
      */
     private String userName;
@@ -839,4 +866,5 @@ public class CwProjectReportArchiveDTO extends BaseDTO {
     public void setApprovedIncludingTax(String approvedIncludingTax) {
         this.approvedIncludingTax = approvedIncludingTax;
     }
+
 }

+ 18 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/mapstruct/CwProjectReportArchiveApplyWrapper.java

@@ -0,0 +1,18 @@
+package com.jeeplus.finance.projectReportArchive.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchive;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchiveApply;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveApplyDTO;
+import com.jeeplus.finance.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 CwProjectReportArchiveApplyWrapper extends EntityWrapper<CwProjectReportArchiveApplyDTO, CwProjectReportArchiveApply> {
+
+    CwProjectReportArchiveApplyWrapper INSTANCE = Mappers.getMapper(CwProjectReportArchiveApplyWrapper.class);
+
+}

+ 6 - 0
jeeplus-modules/jeeplus-flowable/pom.xml

@@ -163,6 +163,12 @@
             <artifactId>weixin-java-mp</artifactId>
             <version>2.7.0</version>
         </dependency>
+        <dependency>
+            <groupId>org.jeeplus</groupId>
+            <artifactId>jeeplus-finance-api</artifactId>
+            <version>9.0</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

+ 14 - 6
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/modules/flowable/listener/MyExecutionListener.java

@@ -7,6 +7,7 @@ import com.jeeplus.flowable.model.Flow;
 import com.jeeplus.flowable.service.FlowTaskService;
 import com.jeeplus.flowable.service.MyNoticeService;
 import com.jeeplus.flowable.utils.StringUtils;
+import com.jeeplus.sys.feign.ICwProjectReportApi;
 import com.jeeplus.sys.feign.IOfficeApi;
 import com.jeeplus.sys.feign.IUserApi;
 import com.jeeplus.sys.service.dto.OfficeDTO;
@@ -90,13 +91,20 @@ public class MyExecutionListener implements ExecutionListener {
                         OfficeDTO parentOffice = SpringUtil.getBean(IOfficeApi.class).getOfficeById(officeById.getParentId());
                         //如果是苏州分部发送的签章申请,则会给徐珊发送通知
                         if(null != parentOffice && "苏州分公司".equals(parentOffice.getName())){
-                            //获取角色为“苏州报告签字盖章代办”的角色对应人员信息
-                            List<UserDTO> userDTOList = SpringUtil.getBean(IUserApi.class).getUserInfoByEnName("szbgqzgzdb");
-                            for (UserDTO dto : userDTOList) {
-                                SpringUtil.getBean(MyNoticeService.class).add(task.getProcInstId(),titleName,task.getProcDefId(),actName,
-                                        flow.getAssigneeName(),format.format(flow.getHistIns().getEndTime()),
-                                        dto.getName(),dto.getId(),userDTO.getId());
+                            //需要判定 报告中的签字注师1或者签字注师2 必须含有潘中 才需要通知
+                            //1602912511302615042  潘中的id
+                            String reportId = SpringUtil.getBean(ICwProjectReportApi.class).getReportReviewUserIdByProcInsId(delegateExecution.getProcessInstanceId(), "1602912511302615042");
+
+                            if(StringUtils.isNotBlank(reportId)){
+                                //获取角色为“苏州报告签字盖章代办”的角色对应人员信息
+                                List<UserDTO> userDTOList = SpringUtil.getBean(IUserApi.class).getUserInfoByEnName("szbgqzgzdb");
+                                for (UserDTO dto : userDTOList) {
+                                    SpringUtil.getBean(MyNoticeService.class).add(task.getProcInstId(),titleName,task.getProcDefId(),actName,
+                                            flow.getAssigneeName(),format.format(flow.getHistIns().getEndTime()),
+                                            dto.getName(),dto.getId(),userDTO.getId());
+                                }
                             }
+
                         }
                     }
                 }

+ 4 - 0
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/mapper/xml/OfficeMapper.xml

@@ -29,6 +29,7 @@
         a.del_flag as "delFlag",
         a.is_public as "isPublic",
         a.administrator as "administrator",
+        a.project_personnel_allocation as "projectPersonnelAllocation",
         a.tenant_id
     </sql>
 
@@ -69,10 +70,13 @@
                a.tenant_id    AS "tenantDTO.id",
                a.administrator,
                su.name as adminName,
+               a.project_personnel_allocation as "projectPersonnelAllocation",
+               sup.name as projectPersonnelAllocationName,
                p.name         AS "parent.name"
         FROM sys_office a
                  LEFT JOIN sys_office p ON p.id = a.parent_id
                  LEFT JOIN sys_user su ON su.id = a.administrator
+                 LEFT JOIN sys_user sup ON sup.id = a.project_personnel_allocation
             ${ew.customSqlSegment}
     </select>