瀏覽代碼

报告借用

wangqiang 1 年之前
父節點
當前提交
1c8b32a74c
共有 17 個文件被更改,包括 766 次插入9 次删除
  1. 5 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectInfoData.java
  2. 3 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectInfoMapper.xml
  3. 21 4
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java
  4. 94 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/controller/CwProjectReportBorrowController.java
  5. 49 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/domain/CwProjectReportBorrow.java
  6. 42 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/domain/CwProjectReportBorrowMessage.java
  7. 8 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportArchiveMapper.java
  8. 36 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportBorrowMapper.java
  9. 11 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportBorrowMessageMapper.java
  10. 24 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportArchiveMapper.xml
  11. 77 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportBorrowMapper.xml
  12. 16 2
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportArchiveService.java
  13. 274 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportBorrowService.java
  14. 53 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/CwProjectReportArchiveDTO.java
  15. 48 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/CwProjectReportBorrowDto.java
  16. 4 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/WorkAttachmentArchiveDto.java
  17. 1 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reportCancellApplyArchived/service/ReportCancellApplyArchivedService.java

+ 5 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectInfoData.java

@@ -21,6 +21,11 @@ import java.util.List;
 public class CwProjectInfoData extends BaseEntity {
 
     /**
+     * 报告主办人
+     */
+    private String reportCreateName;
+
+    /**
      * 报告作废标记
      */
     private String deleteSign;

+ 3 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/mapper/xml/CwProjectInfoMapper.xml

@@ -40,7 +40,9 @@
         SELECT DISTINCT report_number FROM `cw_project_report_new_line` WHERE report_number like CONCAT('%',#{projectNo},'%') ORDER BY report_number desc limit 1
     </select>
     <select id="getById" resultType="com.jeeplus.finance.projectReport.domain.CwProjectInfoData">
-        select * from cw_project_report_new_line where id = #{id}
+        select a.*,su.name as reportCreateName from cw_project_report_new_line a
+        left join sys_user su on a.create_by_id = su.id and su.del_flag = '0'
+        where a.id = #{id}
     </select>
     <select id="getId" resultType="java.lang.String">
         select id from cw_project_report_new_line where report_id = #{id} and del_flag = '0'

+ 21 - 4
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/service/CwProjectReportService.java

@@ -755,7 +755,10 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
                 if ( null != reportData){
                     List<ProjectReportWorkAttachmentDTO> dtos = attachmentMapper.selectByInfoId(reportData.getId());
                     if (null != dtos){
-                        dtos.forEach(d->{
+
+                        Iterator<ProjectReportWorkAttachmentDTO> it = dtos.iterator();
+                        while(it.hasNext()){
+                            ProjectReportWorkAttachmentDTO d = it.next();
                             //根据id查出cw_project_report_file文件表的其他信息
                             //未签章附件
                             CwProjectReportFile file = attachmentMapper.selectInfoByFileId(d.getId(),"0");
@@ -774,6 +777,7 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
                                 d.setCreateBy(userDTO);
                                 d.setCreateTime(file.getCreateTime());
                                 dtoList.add(d);
+                                it.remove();
                             }
 
                             //已签章附件
@@ -793,19 +797,32 @@ public class CwProjectReportService extends ServiceImpl<CwProjectReportMapper, C
                                 d.setCreateBy(userDTO2);
                                 d.setCreateTime(signatureFile.getCreateTime());
                                 signatureList.add(d);
+                                it.remove();
                             }
-                        });
+                        }
                         reportData.setCwFileInfoList(dtoList);
                         reportData.setSignatureFileList(signatureList);
                     }
+                    //将附件信息查出
                     // 查询附件信息
                     List<WorkAttachmentInfo> fileInfo2 = reportMapper.findDtos(reportData.getId());
+                    List<WorkAttachmentInfo> reportFileList = Lists.newArrayList();
+                    if(CollectionUtils.isNotEmpty(dtos) && CollectionUtils.isNotEmpty(fileInfo2)){
+                        for (ProjectReportWorkAttachmentDTO dto : dtos) {
+                            for (WorkAttachmentInfo workAttachmentDto : fileInfo2) {
+                                if(dto.getId().equals(workAttachmentDto.getId())){
+                                    reportFileList.add(workAttachmentDto);
+                                }
+                            }
+                        }
+                    }
+
                     if (CollectionUtils.isNotEmpty(dtos)) {
-                        for (WorkAttachmentInfo i : fileInfo2) {
+                        for (WorkAttachmentInfo i : reportFileList) {
                             i.setCreateBy(SpringUtil.getBean ( IUserApi.class ).getById(i.getBy()));
                         }
                     }
-                    reportData.setCwFileInfoList2(fileInfo2);
+                    reportData.setCwFileInfoList2(reportFileList);
                     //设置历史报告列表
                     //根据项目id查出所有的信息
                     List<CwProjectReportData> byProjectList = reportMapper.getByProjectId(reportData.getProjectId());

+ 94 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/controller/CwProjectReportBorrowController.java

@@ -0,0 +1,94 @@
+package com.jeeplus.finance.projectReportArchive.controller;
+
+import com.jeeplus.common.utils.ResponseUtil;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrow;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrowMessage;
+import com.jeeplus.finance.projectReportArchive.service.CwProjectReportBorrowService;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportBorrowDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2022-11-27 13:50
+ **/
+@Api(tags ="财务-报告借用")
+@RestController
+@RequestMapping(value = "/project/report/borrow")
+public class CwProjectReportBorrowController {
+
+    @Resource
+    private CwProjectReportBorrowService borrowService;
+
+    /**
+     * 合同登记新增/修改
+     */
+    @ApiOperation(value = "报告借用新增/修改")
+    @PostMapping(value = "save")
+    public ResponseEntity<String> save(@RequestBody CwProjectReportBorrowDto workContractBorrowDto) throws Exception{
+        String id = borrowService.saveInfo(workContractBorrowDto);
+        return ResponseUtil.newInstance().add("businessTable", "cw_project_report_borrow").add("businessId", id).ok ("操作成功");
+    }
+
+    /**
+     * 根据id修改状态status
+     */
+    @ApiOperation(value = "根据id修改状态status")
+    @PostMapping(value = "updateStatusById")
+    public void updateStatusById(@RequestBody CwProjectReportBorrowDto workContractBorrowDto) {
+        borrowService.updateStatusById(workContractBorrowDto);
+    }
+
+    /**
+     * 根据contractInfoId修改状态status
+     */
+    @ApiOperation(value = "根据id修改状态status")
+    @PostMapping(value = "updateStatusByContractInfoId")
+    public void updateStatusByContractInfoId(@RequestBody CwProjectReportBorrowDto workContractBorrowDto) {
+        borrowService.updateStatusByContractInfoId(workContractBorrowDto);
+    }
+
+    /**
+     * 根据id查询
+     */
+    @ApiOperation(value = "根据id查询")
+    @GetMapping(value = "findById")
+    public CwProjectReportBorrow findById(@RequestParam String id) {
+        return borrowService.findById(id);
+    }
+
+    /**
+     * 根据contractInfoId查询
+     */
+    @ApiOperation(value = "根据contractInfoId查询")
+    @GetMapping(value = "findByContractInfoId")
+    public CwProjectReportBorrow findByContractInfoId(@RequestParam String id) {
+        return borrowService.findByContractInfoId(id);
+    }
+
+    /**
+     * 根据id修改状态status
+     */
+    @ApiOperation(value = "根据id修改状态借用表status")
+    @PostMapping(value = "updateMessageStatusById")
+    public void updateMessageStatusById(@RequestBody CwProjectReportBorrowDto workContractBorrowDto) {
+        borrowService.updateMessageByBorrowId(workContractBorrowDto, workContractBorrowDto.getType());
+    }
+
+    @ApiOperation(value = "根据id删除借用表信息")
+    @GetMapping(value = "deleteById")
+    public void deleteById(@RequestParam String id) {
+        borrowService.deleteById(id);
+    }
+
+    @ApiOperation(value = "根据id查询借用表信息")
+    @GetMapping(value = "findMessageList")
+    public List<CwProjectReportBorrowMessage> findMessageList(@RequestParam String id) {
+        return borrowService.findMessageList(id);
+    }
+}

+ 49 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/domain/CwProjectReportBorrow.java

@@ -0,0 +1,49 @@
+package com.jeeplus.finance.projectReportArchive.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.finance.projectReportArchive.service.dto.WorkAttachmentArchiveDto;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2022-11-27 13:53
+ **/
+@Data
+@TableName("cw_project_report_borrow")
+public class CwProjectReportBorrow extends BaseEntity {
+
+    /**
+     * 附件
+     */
+    @TableField(exist = false)
+    private List<WorkAttachmentArchiveDto> WorkAttachmentDtoList;
+
+    private String archiveId;
+
+    private String procInsId;
+
+    private String processDefinitionId;
+
+    private String projectName;
+
+    private String reportNo;
+
+    private String clientName;
+
+    private String borrowName;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date borrowData;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date borrowRetData;
+
+    private String remarks;
+
+    private String borrowType;
+
+}

+ 42 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/domain/CwProjectReportBorrowMessage.java

@@ -0,0 +1,42 @@
+package com.jeeplus.finance.projectReportArchive.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author: 王强
+ * @create: 2022-11-27 13:54
+ **/
+@Data
+@TableName("cw_project_report_borrow_message")
+public class CwProjectReportBorrowMessage extends BaseEntity {
+
+    private String projectReportBorrowId;
+
+    private String projectName;
+
+    private String borrowName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date borrowData;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date borrowRetData;
+
+    private String borrowType;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date retData;
+
+    private String contractId;  //合同id
+
+    private String contractCreateById;  //合同创建人id
+
+    private String processDefinitionId;  //流程defId
+    private String procInsId;  //流程procInsId
+
+}

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

@@ -9,14 +9,22 @@ import com.jeeplus.finance.invoice.domain.CwFinanceInvoice;
 import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportArchive;
 import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
 import com.jeeplus.finance.projectReportArchive.service.dto.ReportDTO;
+import com.jeeplus.finance.projectReportArchive.service.dto.WorkAttachmentArchiveDto;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
 import com.jeeplus.sys.service.dto.UserDTO;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 //@InterceptorIgnore(tenantLine = "true")
 public interface CwProjectReportArchiveMapper extends BaseMapper<CwProjectReportArchive> {
+    @InterceptorIgnore(tenantLine = "true")
+    List<WorkAttachmentArchiveDto> findDtos(@Param("id") String id);
+
+    void updateBorrowTypeById(@Param("id") String id, @Param("status")String status);
     //@InterceptorIgnore(tenantLine = "true")
     IPage<CwProjectReportArchiveDTO> findList(Page<CwProjectReportArchiveDTO> page, @Param("currentUser") UserDTO currentUser, @Param("isBmzr") String isBmzr, @Param("officeIds") String officeIds, @Param(Constants.WRAPPER) QueryWrapper<CwProjectReportArchive> queryWrapper, @Param("sta") String sta);
 

+ 36 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportBorrowMapper.java

@@ -0,0 +1,36 @@
+package com.jeeplus.finance.projectReportArchive.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrow;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrowMessage;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author: 王强
+ * @create: 2022-11-27 13:52
+ **/
+public interface CwProjectReportBorrowMapper extends BaseMapper<CwProjectReportBorrow> {
+
+    void updateStatusById(@Param("id") String id, @Param("borrowType")String borrowType);
+
+    void updateStatusByContractInfoId(@Param("id") String id, @Param("borrowType")String borrowType);
+
+    CwProjectReportBorrow selectFileByContractInfoId (@Param("id") String id);
+
+    void updateMessageByBorrowId(@Param("id") String id, @Param("borrowType")String borrowType, @Param("type")String type);
+
+    void deleteMessageById(@Param("id") String id);
+
+    List<CwProjectReportBorrowMessage> findMessageList(@Param("id") String id);
+
+    CwProjectReportBorrow selectByInfoId(String id);
+
+    /**
+     * 查询临期合同借用信息
+     * @param adventDay
+     * @return
+     */
+    List<CwProjectReportBorrowMessage> getAdventMessageList(@Param("adventDay") String adventDay);
+}

+ 11 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/CwProjectReportBorrowMessageMapper.java

@@ -0,0 +1,11 @@
+package com.jeeplus.finance.projectReportArchive.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrowMessage;
+
+/**
+ * @author: 王强
+ * @create: 2022-11-27 13:59
+ **/
+public interface CwProjectReportBorrowMessageMapper extends BaseMapper<CwProjectReportBorrowMessage> {
+}

+ 24 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportArchiveMapper.xml

@@ -236,8 +236,12 @@
         cw_prnl.report_no,
         date_format(cw_prnl.report_date,'%Y-%m-%d') as report_date,
         art.ID_ as task_id,
+        crb.borrow_type,
+        crb.create_by_id as borrowUserId,
+        crb.proc_ins_id as procInsId2,
         (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'
         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_id and su.del_flag = '0'
         left join sys_office so on so.id = su.office_id and so.del_flag ='0'
@@ -303,7 +307,7 @@
             left join sys_user su2 on su2.id = cw_pr.signature_annotator2 and su2.del_flag = '0'
             where cw_prnl.del_flag = '0'
         ) b on b.report_id = cw_pa.report_id
-        where cw_pa.del_flag = '0' and cw_pa.id = ${id}
+        where cw_pa.del_flag = '0' and cw_pa.id = #{id}
     </select>
 
     <select id="findReportList" resultType="com.jeeplus.finance.projectReportArchive.service.dto.ReportDTO">
@@ -354,6 +358,22 @@
         from cw_project_report_archive cw_pa
         where cw_pa.del_flag = '0' and cw_pa.report_id = #{reportId}
     </select>
+    <select id="findDtos" resultType="com.jeeplus.finance.projectReportArchive.service.dto.WorkAttachmentArchiveDto">
+        SELECT
+			wa.id,
+			wa.url,
+			wa.attachment_name AS `name`,
+			wa.create_by_id AS `by`,
+			wa.create_time,
+			cw_paf.file_type,
+            cw_paf.remarks as 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'
+		WHERE
+			wa.del_flag = 0
+			AND wa.attachment_id = #{id}
+    </select>
 
     <update id="updateInfoById">
         update
@@ -411,4 +431,7 @@
         update_time = #{updateTime}
         where id = #{id} ;
     </update>
+    <update id="updateBorrowTypeById">
+        UPDATE cw_project_report_archive SET `borrow_type` = #{status} WHERE del_flag = 0 AND id = #{id}
+    </update>
 </mapper>

+ 77 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/mapper/xml/CwProjectReportBorrowMapper.xml

@@ -0,0 +1,77 @@
+<?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.CwProjectReportBorrowMapper">
+
+    <update id="updateStatusById">
+        UPDATE cw_project_report_borrow SET borrow_type = #{borrowType} WHERE del_flag = 0 AND id = #{id}
+    </update>
+    <update id="updateStatusByContractInfoId">
+        UPDATE cw_project_report_borrow SET borrow_type = #{borrowType} WHERE del_flag = 0 AND archive_id = #{id}
+    </update>
+    <update id="updateMessageByBorrowId">
+        UPDATE cw_project_report_borrow_message SET borrow_type = #{borrowType}
+        <if test="type != null and type != ''">
+            ,ret_data = NOW()
+        </if>
+        WHERE del_flag = 0 AND project_report_borrow_id = #{id} order by create_time desc limit 1
+    </update>
+    <update id="deleteMessageById">
+        UPDATE cw_project_report_borrow_message SET del_flag = 1
+		WHERE del_flag = 0 AND project_report_borrow_id = #{id} order by create_time desc limit 1
+    </update>
+    <select id="selectFileByContractInfoId"
+            resultType="com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrow">
+        SELECT * FROM `cw_project_report_borrow` WHERE del_flag = 0 AND archive_id = #{id}
+    </select>
+    <select id="findMessageList"
+            resultType="com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrowMessage">
+        SELECT
+			id,
+			create_by_id,
+			create_time,
+			update_by_id,
+			update_time,
+			del_flag,
+			project_report_borrow_id,
+			project_name,
+			borrow_name,
+			DATE_FORMAT(borrow_data,'%Y-%m-%d') as borrow_data,
+			DATE_FORMAT(borrow_ret_data,'%Y-%m-%d') as borrow_ret_data,
+			borrow_type,
+			DATE_FORMAT( ret_data, '%Y-%m-%d' ) AS ret_data
+		 FROM cw_project_report_borrow_message WHERE del_flag = 0 AND project_report_borrow_id = #{id}
+		 order by create_time desc
+    </select>
+    <select id="selectByInfoId"
+            resultType="com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrow">
+        select * from cw_project_report_borrow where archive_id = #{id}
+    </select>
+
+
+    <select id="getAdventMessageList" resultType="com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrowMessage">
+        SELECT
+			a.id,
+			a.create_by_id,
+			wci.create_by_id as "contractCreateById",
+			wcb.archive_id as "contractId",
+			wcb.proc_ins_id as "procInsId",
+			wcb.process_definition_id as "processDefinitionId",
+			a.create_time,
+			a.update_by_id,
+			a.update_time,
+			a.del_flag,
+			a.project_report_borrow_id,
+			a.contract_name,
+			a.borrow_name,
+			DATE_FORMAT(a.borrow_data,'%Y-%m-%d') as borrow_data,
+			DATE_FORMAT(a.borrow_ret_data,'%Y-%m-%d') as borrow_ret_data,
+			a.borrow_type,
+			DATE_FORMAT( a.ret_data, '%Y-%m-%d' ) AS ret_data
+		 FROM cw_project_report_borrow_message a
+		 left join cw_project_report_borrow wcb on wcb.id = a.project_report_borrow_id
+		 left join cw_project_report_archive wci on wci.id = wcb.archive_id
+		 WHERE a.del_flag = 0 and a.ret_data is null
+			and now() > date_add(a.borrow_ret_data,interval #{adventDay} day)
+		 order by a.create_time desc
+    </select>
+</mapper>

+ 16 - 2
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportArchiveService.java

@@ -25,6 +25,7 @@ import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveMap
 import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveReportMapper;
 import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
 import com.jeeplus.finance.projectReportArchive.service.dto.ReportDTO;
+import com.jeeplus.finance.projectReportArchive.service.dto.WorkAttachmentArchiveDto;
 import com.jeeplus.finance.projectReportArchive.service.mapstruct.CwProjectReportArchiveWrapper;
 import com.jeeplus.flowable.feign.IFlowableApi;
 //import com.jeeplus.pubmodules.oss.domain.WorkAttachment;
@@ -335,7 +336,20 @@ public class CwProjectReportArchiveService extends ServiceImpl<CwProjectReportAr
      * @return
      */
     public CwProjectReportArchiveDTO queryById(String id) {
-        return cwProjectReportArchiveMapper.queryById(id);
+        CwProjectReportArchiveDTO d = cwProjectReportArchiveMapper.queryById(id);
+        if (null != d){
+            List<WorkAttachmentArchiveDto> fileList = Lists.newArrayList();
+            // 查询附件信息
+            List<WorkAttachmentArchiveDto> dtos = cwProjectReportArchiveMapper.findDtos(id);
+            if (CollectionUtils.isNotEmpty(dtos)) {
+                for (WorkAttachmentArchiveDto i : dtos) {
+                    i.setCreateBy(SpringUtil.getBean ( IUserApi.class ).getById(i.getBy()));
+                }
+            }
+            fileList.addAll(dtos);
+            d.setWorkAttachmentDtoList(fileList);
+        }
+        return d;
     }
 
     /**
@@ -362,7 +376,7 @@ public class CwProjectReportArchiveService extends ServiceImpl<CwProjectReportAr
         }else{  //新增
             cwProjectReportArchiveMapper.insert(cwProjectReportArchive);
         }
-        //this.saveOrUpdate(cwProjectReportArchive);
+//        this.saveOrUpdate(cwProjectReportArchive);
         if (ObjectUtil.isNotEmpty(cwProjectReportArchiveDTO)) {
             // 附件
 //            ossServiceMapper.delete(new QueryWrapper<WorkAttachment>().lambda().eq(WorkAttachment::getAttachmentId, cwProjectReportArchive.getId()));

+ 274 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/CwProjectReportBorrowService.java

@@ -0,0 +1,274 @@
+package com.jeeplus.finance.projectReportArchive.service;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.TokenProvider;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrow;
+import com.jeeplus.finance.projectReportArchive.domain.CwProjectReportBorrowMessage;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportArchiveMapper;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportBorrowMapper;
+import com.jeeplus.finance.projectReportArchive.mapper.CwProjectReportBorrowMessageMapper;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportArchiveDTO;
+import com.jeeplus.finance.projectReportArchive.service.dto.CwProjectReportBorrowDto;
+import com.jeeplus.finance.projectReportArchive.service.dto.WorkAttachmentArchiveDto;
+import com.jeeplus.flowable.feign.IFlowableApi;
+import com.jeeplus.sys.feign.IDictApi;
+import com.jeeplus.sys.feign.ITenantApi;
+import com.jeeplus.sys.feign.IUserApi;
+import com.jeeplus.sys.service.dto.UserDTO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author: 王强
+ * @create: 2022-11-27 13:51
+ **/
+@Service
+public class CwProjectReportBorrowService {
+
+    @Resource
+    private CwProjectReportArchiveMapper cwProjectReportArchiveMapper;
+
+    @Resource
+    private CwProjectReportBorrowMapper borrowMapper;
+
+    @Resource
+    private CwProjectReportBorrowMessageMapper messageMapper;
+
+    @Resource
+    private CwProjectReportArchiveMapper infoMapper;
+
+    @Resource
+    private IFlowableApi flowTaskService;
+
+    public String saveInfo(CwProjectReportBorrowDto workContractBorrowDto) throws Exception {
+        if (StringUtils.isNotEmpty(workContractBorrowDto.getId())) {
+            CwProjectReportBorrow info = borrowMapper.selectById( workContractBorrowDto.getId());
+            if (info != null) {
+                infoMapper.updateBorrowTypeById(info.getArchiveId(),workContractBorrowDto.getBorrowType());
+                return update(workContractBorrowDto, info.getArchiveId());
+            }
+        }
+        return add(workContractBorrowDto);
+    }
+
+    /**
+     * 报告借用新增
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String add(CwProjectReportBorrowDto workContractBorrowDto) throws Exception{
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        String id = UUID.randomUUID().toString().replace("-", "");
+        CwProjectReportBorrow borrow = new CwProjectReportBorrow();
+        BeanUtils.copyProperties(workContractBorrowDto, borrow);
+        borrow.setId(id);
+        borrow.setArchiveId(workContractBorrowDto.getId());
+        borrow.setCreateById(userDTO.getId());
+        borrow.setCreateTime(new Date());
+        borrow.setUpdateById(userDTO.getId());
+        borrow.setUpdateTime(new Date());
+        borrowMapper.insert(borrow);
+        //借用记录信息
+        this.saveMessage(workContractBorrowDto, id);
+        return id;
+    }
+
+    /**
+     * 合同登记修改
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public String update(CwProjectReportBorrowDto workContractBorrowDto, String id) {
+        //获取当前登录人信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        CwProjectReportBorrow borrow = new CwProjectReportBorrow();
+        BeanUtils.copyProperties(workContractBorrowDto, borrow);
+        borrow.setArchiveId(id);
+        borrow.setUpdateById(userDTO.getId());
+        borrow.setUpdateTime(new Date());
+        borrowMapper.updateById(borrow);
+        //借用记录信息
+        this.saveMessage(workContractBorrowDto, workContractBorrowDto.getId());
+        return borrow.getId();
+    }
+    /**
+     * 根据id修改status
+     */
+    public void updateStatusById(CwProjectReportBorrowDto workContractBorrowDto) {
+        borrowMapper.updateStatusById(workContractBorrowDto.getId(), workContractBorrowDto.getBorrowType());
+    }
+
+    public void updateStatusByContractInfoId(CwProjectReportBorrowDto workContractBorrowDto) {
+        infoMapper.updateBorrowTypeById(workContractBorrowDto.getId(),workContractBorrowDto.getBorrowType());
+        borrowMapper.updateStatusByContractInfoId(workContractBorrowDto.getId(), workContractBorrowDto.getBorrowType());
+    }
+
+    public CwProjectReportBorrow findById(String id) {
+        CwProjectReportBorrow borrow = borrowMapper.selectById(id);
+        if (borrow == null) {
+            LambdaQueryWrapper<CwProjectReportBorrow> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(CwProjectReportBorrow::getArchiveId, id);
+            borrow = borrowMapper.selectOne(wrapper);
+        }
+        if (null != borrow){
+            List<WorkAttachmentArchiveDto> fileList = Lists.newArrayList();
+            // 查询附件信息
+            List<WorkAttachmentArchiveDto> dtos = cwProjectReportArchiveMapper.findDtos(borrow.getArchiveId());
+            if (CollectionUtils.isNotEmpty(dtos)) {
+                for (WorkAttachmentArchiveDto i : dtos) {
+                    i.setCreateBy(SpringUtil.getBean ( IUserApi.class ).getById(i.getBy()));
+                }
+            }
+            fileList.addAll(dtos);
+            borrow.setWorkAttachmentDtoList(fileList);
+        }
+        return borrow;
+    }
+
+    public CwProjectReportBorrow findByContractInfoId(String id) {
+        return borrowMapper.selectFileByContractInfoId(id);
+    }
+
+    /**
+     * 借用记录保存
+     * @param workContractBorrowDto
+     * @param id
+     * @return
+     */
+    public void saveMessage (CwProjectReportBorrowDto workContractBorrowDto, String id) {
+        //保存借用信息
+        UserDTO userDTO = SpringUtil.getBean ( IUserApi.class ).getByToken(TokenProvider.getCurrentToken());
+        CwProjectReportBorrowMessage message = new CwProjectReportBorrowMessage();
+        BeanUtils.copyProperties(workContractBorrowDto, message);
+        String messageId = UUID.randomUUID().toString().replace("-", "");
+        message.setId(messageId);
+        message.setCreateById(userDTO.getId());
+        message.setCreateTime(new Date());
+        message.setUpdateById(userDTO.getId());
+        message.setUpdateTime(new Date());
+        message.setProjectReportBorrowId(id);
+        message.setBorrowType(workContractBorrowDto.getBorrowType());
+        messageMapper.insert(message);
+    }
+
+    /**
+     * 根据contractBorrowId修改borrowType
+     */
+    public void updateMessageByBorrowId(CwProjectReportBorrowDto workContractBorrowDto, String type) {
+        if ("reture".equals(type)) {
+            CwProjectReportBorrow borrow = borrowMapper.selectFileByContractInfoId(workContractBorrowDto.getId());
+            if (borrow != null) {
+                borrowMapper.updateMessageByBorrowId(borrow.getId(), workContractBorrowDto.getBorrowType(), type);
+            }
+        } else {
+            borrowMapper.updateMessageByBorrowId(workContractBorrowDto.getId(), workContractBorrowDto.getBorrowType(), null);
+        }
+    }
+
+    public void deleteById(String id) {
+        LambdaQueryWrapper<CwProjectReportBorrow> wrapper = new LambdaQueryWrapper<CwProjectReportBorrow>();
+        wrapper.eq(CwProjectReportBorrow::getArchiveId, id);
+        CwProjectReportBorrow borrow = borrowMapper.selectOne(wrapper);
+        if (borrow != null) {
+            borrowMapper.deleteMessageById(borrow.getId());
+        }
+    }
+
+    public List<CwProjectReportBorrowMessage> findMessageList(String id) {
+        CwProjectReportBorrow borrow = findByContractInfoId(id);
+        if (borrow != null) {
+            return borrowMapper.findMessageList(borrow.getId());
+        }
+        return null;
+    }
+
+    /**
+     * 查询临期合同借用信息
+     * @return
+     */
+    public List<CwProjectReportBorrowMessage> getAdventMessageList() {
+        String adventDay = SpringUtil.getBean ( IDictApi.class ).getDictLabel("advent_day", "cw_borrow_advent", "");
+//        String adventDay = DictUtils.getDictLabel("advent_day", "cw_borrow_advent", "");
+        adventDay = "-" + adventDay;
+        List<CwProjectReportBorrowMessage> adventMessageList = borrowMapper.getAdventMessageList(adventDay);
+        if(null != adventMessageList && adventMessageList.size()>0){
+            for (CwProjectReportBorrowMessage info : adventMessageList) {
+                String taskName = null;
+                String titleStr = null;
+
+                //如果当前时间大于过期时间
+                //Date类的一个方法,如果info.getAdventDateDate()早于 new Date() 返回true,否则返回false
+                if(info.getBorrowRetData().before(new Date())){
+                    taskName = "合同【"+ info.getProjectName()+"】借用已超期";
+                    titleStr = "合同【"+ info.getProjectName()+"】借用已超期。超期时间:"+dateToString(info.getBorrowRetData()) +"。";
+                }else{
+                    taskName = "合同【"+ info.getProjectName()+"】即将借用超期";
+                    titleStr = "合同【"+ info.getProjectName()+"】即将借用超期。超期时间:"+dateToString(info.getBorrowRetData());
+                }
+
+
+                //计算两日期之间的天数
+                Integer interval = Integer.valueOf(this.getInterval(info.getBorrowRetData(), new Date()));
+                if(interval > 0){
+                    titleStr = titleStr + "已超期:" + interval + "天。请尽快归还";
+                }
+
+                Set<String> noticeUserSet = new HashSet<String>();
+                if(StringUtils.isNotBlank(info.getBorrowName())){
+                    String tenantId = SpringUtil.getBean ( ITenantApi.class ).getCurrentTenantId ( );
+                    UserDTO borrowUser = SpringUtil.getBean ( IUserApi.class ).getByLoginName(info.getBorrowName(),tenantId);
+                    if(null != borrowUser && StringUtils.isNotBlank(borrowUser.getId())){
+                        noticeUserSet.add(borrowUser.getId());
+                    }
+                }
+                if(StringUtils.isNotBlank(info.getContractCreateById())){
+                    noticeUserSet.add(info.getContractCreateById());
+                }
+            }
+        }
+        return null;
+    }
+
+
+    /**
+     * 计算两日期相差天数
+     * @param beginDate
+     * @param endDate
+     * @return
+     * @throws Exception
+     */
+    public String getInterval(Date beginDate, Date endDate){
+        long day = 0;
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        try {
+            if(beginDate != null){
+                String begin = sdf.format(beginDate);
+                beginDate  = sdf.parse(begin);
+            }
+            if(endDate!= null){
+                String end= sdf.format(endDate);
+                endDate= sdf.parse(end);
+            }
+        } catch (Exception e){
+            e.getMessage();
+        }
+        day = (endDate.getTime()-beginDate.getTime())/(24*60*60*1000);
+        return String.valueOf(day);
+    }
+    public static String dateToString(Date date) {
+        SimpleDateFormat sformat = new SimpleDateFormat("yyyy-MM-dd");//日期格式
+
+        String s = sformat.format(date);
+
+        return s;
+    }
+
+}

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

@@ -1,6 +1,7 @@
 package com.jeeplus.finance.projectReportArchive.service.dto;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.jeeplus.core.service.dto.BaseDTO;
 import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
 import lombok.Data;
@@ -14,6 +15,26 @@ import java.util.List;
 
 public class CwProjectReportArchiveDTO extends BaseDTO {
 
+    @TableField(exist = false)
+    private String taskBorrowId;
+
+    /**
+     * 借用状态
+     */
+    private String borrowType;
+
+    /**
+     * 借用人id
+     */
+    @TableField(exist = false)
+    private String borrowUserId;
+
+    /**
+     * 借用流程id
+     */
+    @TableField(exist = false)
+    private String procInsId2;
+
     public static final String BIZ_CODE = "15";
 
     /**
@@ -227,6 +248,38 @@ public class CwProjectReportArchiveDTO extends BaseDTO {
 
     private static final long serialVersionUID = 1L;
 
+    public String getTaskBorrowId() {
+        return taskBorrowId;
+    }
+
+    public void setTaskBorrowId(String taskBorrowId) {
+        this.taskBorrowId = taskBorrowId;
+    }
+
+    public String getProcInsId2() {
+        return procInsId2;
+    }
+
+    public void setProcInsId2(String procInsId2) {
+        this.procInsId2 = procInsId2;
+    }
+
+    public String getBorrowType() {
+        return borrowType;
+    }
+
+    public void setBorrowType(String borrowType) {
+        this.borrowType = borrowType;
+    }
+
+    public String getBorrowUserId() {
+        return borrowUserId;
+    }
+
+    public void setBorrowUserId(String borrowUserId) {
+        this.borrowUserId = borrowUserId;
+    }
+
     public String getRemarks() {
         return remarks;
     }

+ 48 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/CwProjectReportBorrowDto.java

@@ -0,0 +1,48 @@
+package com.jeeplus.finance.projectReportArchive.service.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author: 王强
+ * @create: 2022-11-27 14:00
+ **/
+@Data
+public class CwProjectReportBorrowDto extends BaseDTO {
+
+    private String reportId;
+
+    private String procInsId;
+
+    private String processDefinitionId;
+
+    private String projectName;
+
+    private String reportNo;
+
+    private String clientName;
+
+    private String borrowName;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date borrowData;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date borrowRetData;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    private String remarks;
+
+    private String borrowType;
+
+    private String type;
+
+}

+ 4 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReportArchive/service/dto/WorkAttachmentArchiveDto.java

@@ -7,6 +7,10 @@ import lombok.Data;
 @Data
 public class WorkAttachmentArchiveDto extends BaseDTO {
 
+    private String cwRemarks;
+
+    private String by;
+
     private String name; // 文件名称
 
     private String size; // 文件大小

+ 1 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/reportCancellApplyArchived/service/ReportCancellApplyArchivedService.java

@@ -256,7 +256,7 @@ public class ReportCancellApplyArchivedService extends ServiceImpl<ReportCancell
             CwProjectReport report = reportMapper.getByNewLineId(byId.getReportId());
             reportDTO.setReportNo(byId.getReportNo());
             reportDTO.setReportDate(byId.getReportDate());
-            reportDTO.setReportCreateName(byId.getCreateById());
+            reportDTO.setReportCreateName(byId.getReportCreateName());
             reportDTO.setSignatureAnnotator1Name(report.getSignatureAnnotator1Name());
             reportDTO.setSignatureAnnotator2Name(report.getSignatureAnnotator2Name());
         } else {