Pārlūkot izejas kodu

财务-合同归档

wangqiang 2 gadi atpakaļ
vecāks
revīzija
fc7eba43d5

+ 19 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/controller/ContractFileController.java

@@ -4,6 +4,7 @@ import com.jeeplus.common.utils.ResponseUtil;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractFile;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractInfo;
 import com.jeeplus.test.cw.contractRegistration.service.ContractFileService;
+import com.jeeplus.test.workContract.domain.WorkContractFile;
 import com.jeeplus.test.workContract.service.dto.WorkContractFileDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -41,4 +42,22 @@ public class ContractFileController {
     public void updateStatusById(@RequestBody ContractFile contractFile) {
         service.updateStatusById(contractFile);
     }
+
+    /**
+     * 根据id查询
+     */
+    @ApiOperation(value = "根据id查询")
+    @GetMapping(value = "findById")
+    public ContractFile findById(@RequestParam String id) {
+        return service.findById(id);
+    }
+
+    /**
+     * 根据contractInfoId查询
+     */
+    @ApiOperation(value = "根据contractInfoId查询")
+    @GetMapping(value = "findByContractInfoId")
+    public ContractFile findByContractInfoId(@RequestParam String id) {
+        return service.findByContractInfoId(id);
+    }
 }

+ 11 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/controller/ContractInfoController.java

@@ -43,9 +43,10 @@ public class ContractInfoController {
     }
 
     /**
-     * 合同登记新增/修改
+     * 合同登记新增/修改    cw:workContract:add
      */
     @ApiOperation(value = "合同登记新增/修改")
+    @PreAuthorize("hasAnyAuthority('cw:workContract:add')")
     @PostMapping(value = "save")
     public ResponseEntity<String> save(@RequestBody ContractInfo info) throws Exception{
         String id = service.saveInfo(info);
@@ -71,6 +72,15 @@ public class ContractInfoController {
     }
 
     /**
+     * 合同登记查询
+     */
+    @ApiOperation(value = "根据归档id查询")
+    @GetMapping(value = "findByContractId")
+    public ContractInfo findByContractId(@RequestParam String id) {
+        return service.findByContractId(id);
+    }
+
+    /**
      * 根据id修改状态status
      */
     @ApiOperation(value = "根据id修改状态status")

+ 22 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/domain/ContractFile.java

@@ -1,10 +1,15 @@
 package com.jeeplus.test.cw.contractRegistration.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.core.query.Query;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import lombok.Data;
 
+import java.util.List;
+
 /**
  * @author: 王强
  * @create: 2022-11-10 16:06
@@ -13,6 +18,9 @@ import lombok.Data;
 @TableName(value = "cw_work_contract_file")
 public class ContractFile extends BaseEntity {
 
+    @TableField(exist = false)
+    private String fileId;
+
     /**
      * 合同登记主键值
      */
@@ -44,4 +52,18 @@ public class ContractFile extends BaseEntity {
      */
     private String confirmFiledNo;
 
+    @TableField(exist = false)
+    private String createId;       //创建人id
+
+    /**
+     * 附件信息
+     */
+    @TableField(exist = false)
+    private List<WorkAttachmentDto> contractProperList;
+
+    /**
+     * 附件信息
+     */
+    @TableField(exist = false)
+    private List<WorkAttachmentDto> contractInfoList;
 }

+ 28 - 3
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/domain/ContractInfo.java

@@ -7,9 +7,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jeeplus.core.domain.BaseEntity;
 import com.jeeplus.core.query.Query;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author: 王强
@@ -29,9 +31,8 @@ public class ContractInfo extends BaseEntity {
 
     private String payerSubject;            //付款主体
     private String paymentMethod;           //付款方式
-    @Query(tableColumn = "a.signing_date")
     @JsonFormat(pattern = "yyyy-MM-dd")
-    private String signingDate;             //签约日期
+    private Date signingDate;             //签约日期
     @Query(tableColumn = "a.contract_amount")
     private Double contractAmount;          //合同金额(元)
     private Double actualContractAmount;    //合同实际金额
@@ -58,10 +59,16 @@ public class ContractInfo extends BaseEntity {
     @TableField(exist = false)
     private String contractStatus;          //合同状态
 
+    @TableField(exist = false)
+    private String taskFiledId;
+
+    @TableField(exist = false)
+    private String taskFiledProcInsId;
+
     /**
      * 归档状态
      */
-    @Query(tableColumn = "b.filed_type")
+    @Query(tableColumn = "a.filed_type")
     private String filedType;
 
     @TableField(exist = false)
@@ -69,4 +76,22 @@ public class ContractInfo extends BaseEntity {
 
     @TableField(exist = false)
     private String[] contractDates;
+
+    /**
+     * 附件信息
+     */
+    @TableField(exist = false)
+    private List<WorkAttachmentDto> contractProperList;
+
+    /**
+     * 客户名称
+     */
+    @TableField(exist = false)
+    private String customerName;
+
+    /**
+     * 客户编号
+     */
+    @TableField(exist = false)
+    private String customerNo;
 }

+ 15 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/mapper/ContractFileMapper.java

@@ -2,15 +2,30 @@ package com.jeeplus.test.cw.contractRegistration.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractFile;
+import com.jeeplus.test.cw.contractRegistration.domain.ContractInfo;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * @author: 王强
  * @create: 2022-11-10 16:10
  **/
 public interface ContractFileMapper extends BaseMapper<ContractFile> {
 
+    List<WorkAttachmentDto> findDtos(@Param("id") String id);
+
+    ContractFile findById (@Param("id") String id);
+
+    ContractFile findByInfoId (@Param("id") String id);
+
     void updateStatusById(@Param("id") String id, @Param("filedType")String filedType);
 
     ContractFile selectFileByContractInfoId (@Param("id") String id);
+
+    List<WorkAttachment> findList(@Param("id") String id);
+
+    Integer findIsExit(@Param("id") String id, @Param("name")String name);
 }

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/mapper/ContractInfoMapper.java

@@ -6,8 +6,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.cw.contractRegistration.domain.ContractFile;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractInfo;
+import com.jeeplus.test.oss.domain.WorkAttachment;
 import com.jeeplus.test.workContract.domain.WorkContractInfo;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -18,9 +21,23 @@ import java.util.List;
  **/
 public interface ContractInfoMapper extends BaseMapper<ContractInfo> {
 
+
+
+    ContractFile getById(String id);
+
+    List<WorkAttachmentDto> findDtos(@Param("id") String id);
+
     IPage<ContractInfo> findPageList(Page<ContractInfo> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
 
     ContractInfo findById (@Param("id") String id);
 
+    ContractInfo findByContractId (@Param("id") String id);
+
     void updateStatusById(@Param("id") String id, @Param("status")String status);
+
+    void updatefiledTypeById(@Param("id") String id, @Param("status")String status);
+
+    List<WorkAttachment> findList(@Param("id") String id);
+
+    Integer findIsExit(@Param("id") String id, @Param("name")String name);
 }

+ 101 - 4
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/mapper/xml/ContractFileMapper.xml

@@ -3,14 +3,111 @@
 <mapper namespace="com.jeeplus.test.cw.contractRegistration.mapper.ContractFileMapper">
     <update id="updateStatusById">
         UPDATE cw_work_contract_file SET filed_type = #{filedType}, filed_data = NOW()
-        <if test="filedType == '4'.toString()">
-            ,proc_ins_id = null
-            ,process_definition_id = null
-        </if>
+<!--        <if test="filedType == '4'.toString()">-->
+<!--            ,proc_ins_id = null-->
+<!--            ,process_definition_id = null-->
+<!--        </if>-->
         WHERE del_flag = 0 AND contract_info_id = #{id}
     </update>
     <select id="selectFileByContractInfoId"
             resultType="com.jeeplus.test.cw.contractRegistration.domain.ContractFile">
         SELECT * FROM `cw_work_contract_file` WHERE del_flag = 0 AND contract_info_id = #{id}
     </select>
+    <select id="findList" resultType="com.jeeplus.test.oss.domain.WorkAttachment">
+        SELECT * FROM work_attachment WHERE del_flag = 0 AND attachment_id = #{id}
+    </select>
+    <select id="findIsExit" resultType="java.lang.Integer">
+         SELECT
+			COUNT( 0 )
+		FROM
+			work_attachment
+		WHERE
+			del_flag = 0
+			AND attachment_id = #{id}
+			AND attachment_name = #{name}
+    </select>
+    <select id="findById" resultType="com.jeeplus.test.cw.contractRegistration.domain.ContractFile">
+        SELECT
+			a.id,
+			b.id as fileId,
+			c.`name` AS createBy,
+			c.`id` AS createId,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.contract_no as contractNo,
+			a.contract_name as contractName,
+			a.payer_subject as payerSubject,
+			a.payment_method as paymentMethod,
+			DATE_FORMAT(a.signing_date,'%Y-%m-%d') as signingDate,
+            a.contract_amount as contractAmount,
+            a.actual_contract_amount as actualContractAmount,
+            a.contract_num as contractNum,
+            a.payment_agreement as paymentAgreement,
+            a.change_num as changeNum,
+            a.department,
+            a.client_contacts as clientContacts,
+            a.client_contacts_phone as clientContactsPhone,
+            a.contract_approval_type as contractApprovalType,
+            a.proc_ins_id as procInsId,
+            a.status,
+            b.filed_type as filedType,
+            b.contract_info_id as contractInfoId
+		FROM
+			cw_work_contract_info a
+            LEFT JOIN cw_work_contract_file b on a.id = b.contract_info_id
+            LEFT JOIN sys_user c ON a.create_by = c.id
+        WHERE
+			a.id = #{id}
+			AND a.del_flag = 0
+    </select>
+    <select id="findDtos" resultType="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto">
+        SELECT
+			id,
+			url,
+			attachment_name AS `name`,
+			create_by AS `by`,
+			create_date
+		FROM
+			work_attachment
+		WHERE
+			del_flag = 0
+			AND attachment_id = #{id}
+    </select>
+    <select id="findByInfoId" resultType="com.jeeplus.test.cw.contractRegistration.domain.ContractFile">
+        SELECT
+			b.id as fileId,
+			c.`name` AS createBy,
+			c.`id` AS createId,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.contract_no as contractNo,
+			a.contract_name as contractName,
+			a.payer_subject as payerSubject,
+			a.payment_method as paymentMethod,
+			DATE_FORMAT(a.signing_date,'%Y-%m-%d') as signingDate,
+            a.contract_amount as contractAmount,
+            a.actual_contract_amount as actualContractAmount,
+            a.contract_num as contractNum,
+            a.payment_agreement as paymentAgreement,
+            a.change_num as changeNum,
+            a.department,
+            a.client_contacts as clientContacts,
+            a.client_contacts_phone as clientContactsPhone,
+            a.contract_approval_type as contractApprovalType,
+            a.proc_ins_id as procInsId,
+            a.status,
+            b.filed_type as filedType,
+            b.contract_info_id as contractInfoId
+		FROM
+			cw_work_contract_file b
+            LEFT JOIN cw_work_contract_info a on a.id = b.contract_info_id
+            LEFT JOIN sys_user c ON a.create_by = c.id
+        WHERE
+			b.id = #{id}
+			AND b.del_flag = 0
+    </select>
 </mapper>

+ 70 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/mapper/xml/ContractInfoMapper.xml

@@ -4,6 +4,9 @@
     <update id="updateStatusById">
         UPDATE cw_work_contract_info SET `status` = #{status} WHERE del_flag = 0 AND id = #{id}
     </update>
+    <update id="updatefiledTypeById">
+        UPDATE cw_work_contract_info SET `filed_type` = #{status} WHERE del_flag = 0 AND id = #{id}
+    </update>
     <select id="findPageList" resultType="com.jeeplus.test.cw.contractRegistration.domain.ContractInfo">
         SELECT
 			a.id,
@@ -30,11 +33,14 @@
             a.proc_ins_id as procInsId,
             a.process_definition_id as processDefinitionId,
             a.status,
-            b.filed_type as filedType
+            b.filed_type as filedType,
+            e.ID_ as taskFiledId,
+            b.proc_ins_id as taskFiledProcInsId
 		FROM
 			cw_work_contract_info a
             LEFT JOIN cw_work_contract_file b on a.id = b.contract_info_id
             LEFT JOIN sys_user c ON a.create_by = c.id
+            LEFT JOIN act_ru_task e ON b.proc_ins_id = e.PROC_INST_ID_
 		${ew.customSqlSegment}
 		ORDER BY a.update_date DESC
     </select>
@@ -72,4 +78,67 @@
 			a.id = #{id}
 			AND a.del_flag = 0
     </select>
+    <select id="findList" resultType="com.jeeplus.test.oss.domain.WorkAttachment">
+        SELECT * FROM work_attachment WHERE del_flag = 0 AND attachment_id = #{id}
+    </select>
+    <select id="findIsExit" resultType="java.lang.Integer">
+        SELECT
+			COUNT( 0 )
+		FROM
+			work_attachment
+		WHERE
+			del_flag = 0
+			AND attachment_id = #{id}
+			AND attachment_name = #{name}
+    </select>
+    <select id="findDtos" resultType="com.jeeplus.test.workContract.service.dto.WorkAttachmentDto">
+        SELECT
+			id,
+			url,
+			attachment_name AS `name`,
+			create_by AS `by`,
+			create_date
+		FROM
+			work_attachment
+		WHERE
+			del_flag = 0
+			AND attachment_id = #{id}
+    </select>
+    <select id="findByContractId" resultType="com.jeeplus.test.cw.contractRegistration.domain.ContractInfo">
+        SELECT
+			a.id,
+			c.`name` AS createBy,
+			c.`id` AS createId,
+			a.create_date,
+			a.update_by,
+			a.update_date,
+			a.del_flag,
+			a.contract_no as contractNo,
+			a.contract_name as contractName,
+			a.payer_subject as payerSubject,
+			a.payment_method as paymentMethod,
+			DATE_FORMAT(a.signing_date,'%Y-%m-%d') as signingDate,
+            a.contract_amount as contractAmount,
+            a.actual_contract_amount as actualContractAmount,
+            a.contract_num as contractNum,
+            a.payment_agreement as paymentAgreement,
+            a.change_num as changeNum,
+            a.department,
+            a.client_contacts as clientContacts,
+            a.client_contacts_phone as clientContactsPhone,
+            a.contract_approval_type as contractApprovalType,
+            a.proc_ins_id as procInsId,
+            a.status,
+            b.filed_type as filedType
+		FROM
+			cw_work_contract_info a
+            LEFT JOIN cw_work_contract_file b on a.id = b.contract_info_id
+            LEFT JOIN sys_user c ON a.create_by = c.id
+        WHERE
+			b.id = #{id}
+			AND a.del_flag = 0
+    </select>
+    <select id="getById" resultType="com.jeeplus.test.cw.contractRegistration.domain.ContractFile">
+        select * from cw_work_contract_file where id = #{id}
+    </select>
 </mapper>

+ 142 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/service/ContractFileService.java

@@ -6,14 +6,21 @@ import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractFile;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractInfo;
 import com.jeeplus.test.cw.contractRegistration.mapper.ContractFileMapper;
+import com.jeeplus.test.cw.contractRegistration.mapper.ContractInfoMapper;
+import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
 import com.jeeplus.test.workContract.domain.WorkContractFile;
+import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
 import com.jeeplus.test.workContract.service.dto.WorkContractFileDto;
+import org.flowable.editor.language.json.converter.util.CollectionUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.Date;
+import java.util.List;
 import java.util.UUID;
 
 /**
@@ -26,10 +33,17 @@ public class ContractFileService {
     @Resource
     private ContractFileMapper mapper;
 
+    @Resource
+    private ContractInfoMapper infoMapper;
+
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+
     /**
      * 根据id修改status
      */
     public void updateStatusById(ContractFile contractFile) {
+        infoMapper.updatefiledTypeById(contractFile.getId(),contractFile.getFiledType());
         mapper.updateStatusById(contractFile.getId(), contractFile.getFiledType());
     }
 
@@ -37,6 +51,9 @@ public class ContractFileService {
         if (StringUtils.isNotEmpty(contractFile.getId())) {
             ContractFile info = mapper.selectFileByContractInfoId(contractFile.getId());
             if (info != null) {
+                contractFile.setFileCreateName(contractFile.getCreateBy());
+                contractFile.setCreateBy(contractFile.getCreateId());
+                infoMapper.updatefiledTypeById(contractFile.getContractInfoId(),contractFile.getFiledType());
                 return update(contractFile, info.getId());
             }
         }
@@ -59,6 +76,10 @@ public class ContractFileService {
         file.setUpdateBy(userDTO.getId());
         file.setUpdateDate(new Date());
         mapper.insert(file);
+        List<WorkAttachmentDto> list = contractFile.getContractInfoList();
+        if (CollectionUtils.isNotEmpty(list)) {
+            saveFiles(list, userDTO, id);
+        }
         return id;
     }
 
@@ -75,6 +96,127 @@ public class ContractFileService {
         file.setUpdateBy(userDTO.getId());
         file.setUpdateDate(new Date());
         mapper.updateById(file);
+        List<WorkAttachmentDto> list = contractFile.getContractInfoList();
+        if (CollectionUtils.isNotEmpty(list)) {
+            updateFiles(list, userDTO, contractFile.getId());
+        }
         return file.getId();
     }
+
+    public ContractFile findById(String id) {
+        ContractFile dto = mapper.findById(id);
+        if (dto == null){
+            dto = mapper.findByInfoId(id);
+        }
+        if (dto != null){
+            // 查询附件信息
+            List<WorkAttachmentDto> dtos = mapper.findDtos(dto.getFileId());
+            List<WorkAttachmentDto> contractInfoList = mapper.findDtos(dto.getContractInfoId());
+
+            if (CollectionUtils.isNotEmpty(dtos)) {
+                for (WorkAttachmentDto i : dtos) {
+                    i.setCreateBy(UserUtils.get(i.getBy()));
+                }
+                dto.setContractProperList(dtos);
+            }
+            if (CollectionUtils.isNotEmpty(contractInfoList)){
+                for (WorkAttachmentDto i : contractInfoList){
+                    i.setCreateBy(UserUtils.get(i.getBy()));
+                }
+                dto.setContractInfoList(contractInfoList);
+            }
+
+        }
+        return dto;
+    }
+
+    public ContractFile findByContractInfoId(String id) {
+        return mapper.selectFileByContractInfoId(id);
+    }
+
+    /**
+     * 修改附件信息
+     * @param list 待修改的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateFiles(List<WorkAttachmentDto> list, UserDTO userDTO, String id) {
+        int j = 1;
+        String names = new String();
+        //表中存在,但是传过来不存在,说明已删除,表中数据也要删除
+        for (WorkAttachmentDto dto : list) {
+            names = names + "," +dto.getUrl();
+        }
+        //查询保存的附件信息
+        List<WorkAttachment> infoList = mapper.findList(id);
+        if (CollectionUtils.isNotEmpty(infoList)) {
+            for (WorkAttachment i : infoList) {
+                if (!names.contains(i.getUrl())) {
+                    ossServiceMapper.deleteById(i.getId());
+                }
+            }
+        }
+        //保存信息
+        for (WorkAttachmentDto dto : list) {
+            //判断是否存在
+            Integer isExit = mapper.findIsExit(id, dto.getName());
+            if (isExit == 0) {
+                WorkAttachment i = new WorkAttachment();
+                //包含了url、size、name
+                i.setId(UUID.randomUUID().toString().replace("-", ""));
+//                i.getCreateBy().setId(userDTO.getId());
+                i.setCreateDate(new Date());
+//                i.getUpdateBy().setId(userDTO.getId());
+                i.setUpdateDate(new Date());
+                i.setDelFlag(0);
+                i.setUrl(dto.getUrl());
+                //文件类型处理
+                List<String> strings = Arrays.asList(dto.getName().split("\\."));
+                if (CollectionUtils.isNotEmpty(strings)) {
+                    i.setType(strings.get(1));
+                }
+                i.setAttachmentId(id);
+                i.setAttachmentName(dto.getName());
+                i.setAttachmentFlag("cwWorkContract");
+                i.setFileSize(dto.getSize());
+                i.setSort(j);
+                ossServiceMapper.insertWorkAttachment(i, userDTO);
+                j++;
+            }
+        }
+    }
+    /**
+     * 保存附件信息
+     * @param list 待保存的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveFiles(List<WorkAttachmentDto> list, UserDTO userDTO, String id) {
+        int j = 1;
+        for (WorkAttachmentDto dto : list) {
+            WorkAttachment i = new WorkAttachment();
+            //包含了url、size、name
+            i.setId(UUID.randomUUID().toString().replace("-", ""));
+//            i.getCreateBy().setId(userDTO.getId());
+            i.setCreateDate(new Date());
+//            i.getUpdateBy().setId(userDTO.getId());
+            i.setUpdateDate(new Date());
+            i.setDelFlag(0);
+            i.setUrl(dto.getUrl());
+            //文件类型处理
+            List<String> strings = Arrays.asList(dto.getName().split("\\."));
+            if (CollectionUtils.isNotEmpty(strings)) {
+                i.setType(strings.get(1));
+            }
+            i.setAttachmentId(id);
+            i.setAttachmentName(dto.getName());
+            i.setAttachmentFlag("cwWorkContract");
+            i.setFileSize(dto.getSize());
+            i.setSort(j);
+            ossServiceMapper.insertWorkAttachment(i, userDTO);
+            j++;
+        }
+    }
 }

+ 139 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/cw/contractRegistration/service/ContractInfoService.java

@@ -8,10 +8,12 @@ import com.jeeplus.core.domain.BaseEntity;
 import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
+import com.jeeplus.test.cw.contractRegistration.domain.ContractFile;
 import com.jeeplus.test.cw.contractRegistration.domain.ContractInfo;
 import com.jeeplus.test.cw.contractRegistration.mapper.ContractInfoMapper;
 import com.jeeplus.test.mould.service.SerialnumTplService;
 import com.jeeplus.test.oss.domain.WorkAttachment;
+import com.jeeplus.test.oss.mapper.OssServiceMapper;
 import com.jeeplus.test.reimbursement.reimbursementType.domain.ReimbursementTypeInfo;
 import com.jeeplus.test.workContract.domain.WorkContractInfo;
 import com.jeeplus.test.workContract.service.dto.WorkAttachmentDto;
@@ -23,6 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.UUID;
@@ -40,6 +43,9 @@ public class ContractInfoService {
     @Resource
     private SerialnumTplService serialnumTplService;
 
+    @Resource
+    private OssServiceMapper ossServiceMapper;
+
     /**
      * 根据id修改status
      */
@@ -89,7 +95,7 @@ public class ContractInfoService {
         }
         //8、归档状态
         if (StringUtils.isNotEmpty(info.getFiledType())) {
-            wrapper.like("b.filed_type", info.getFiledType());
+            wrapper.like("a.filed_type", info.getFiledType());
         }
         wrapper.eq("a.del_flag","0");
         IPage<ContractInfo> pageList = mapper.findPageList(page, wrapper);
@@ -100,11 +106,48 @@ public class ContractInfoService {
     /**
      * 合同登记查询
      */
+    public ContractInfo findByContractId(String id) {
+
+        //根据id判断是file表的id,还是info表的id
+//        ContractFile byId = mapper.getById(id);
+//        ContractInfo dto = null;
+//        if (byId != null){
+//            dto = mapper.findByContractId(id);
+//        }else {
+//            dto = mapper.findById(id);
+//        }
+        ContractInfo dto = mapper.findById(id);
+        if (dto != null){
+            dto.setContractStatus("新创建");
+            // 查询附件信息
+            List<WorkAttachmentDto> dtos = mapper.findDtos(id);
+            if (CollectionUtils.isNotEmpty(dtos)) {
+                for (WorkAttachmentDto i : dtos) {
+                    i.setCreateBy(UserUtils.get(i.getBy()));
+                }
+            }
+            dto.setContractProperList(dtos);
+        }
+
+        return dto;
+    }
+
+    /**
+     * 合同登记查询
+     */
     public ContractInfo findById(String id) {
 
         ContractInfo dto = mapper.findById(id);
         if (dto != null){
             dto.setContractStatus("新创建");
+            // 查询附件信息
+            List<WorkAttachmentDto> dtos = mapper.findDtos(id);
+            if (CollectionUtils.isNotEmpty(dtos)) {
+                for (WorkAttachmentDto i : dtos) {
+                    i.setCreateBy(UserUtils.get(i.getBy()));
+                }
+            }
+            dto.setContractProperList(dtos);
         }
 
         return dto;
@@ -147,6 +190,10 @@ public class ContractInfoService {
         int num = Integer.parseInt(contractInfo.getChangeNum()) + 1;
         contractInfo.setChangeNum(num + "");
         mapper.updateById(contractInfo);
+        List<WorkAttachmentDto> list = info.getContractProperList();
+        if (CollectionUtils.isNotEmpty(list)) {
+            updateFiles(list, userDTO, info.getId());
+        }
 
         return info.getId();
     }
@@ -169,10 +216,100 @@ public class ContractInfoService {
         info.setCreateBy(userDTO.getId());
         info.setCreateDate(new Date());
         info.setUpdateBy(userDTO.getId());
-
         info.setUpdateDate(new Date());
         mapper.insert(info);
+        List<WorkAttachmentDto> list = contractInfo.getContractProperList();
+        if (CollectionUtils.isNotEmpty(list)) {
+            saveFiles(list, userDTO, id);
+        }
 
         return id;
     }
+
+    /**
+     * 保存附件信息
+     * @param list 待保存的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveFiles(List<WorkAttachmentDto> list, UserDTO userDTO, String id) {
+        int j = 1;
+        for (WorkAttachmentDto dto : list) {
+            WorkAttachment i = new WorkAttachment();
+            //包含了url、size、name
+            i.setId(UUID.randomUUID().toString().replace("-", ""));
+//            i.getCreateBy().setId(userDTO.getId());
+            i.setCreateDate(new Date());
+//            i.getUpdateBy().setId(userDTO.getId());
+            i.setUpdateDate(new Date());
+            i.setDelFlag(0);
+            i.setUrl(dto.getUrl());
+            //文件类型处理
+            List<String> strings = Arrays.asList(dto.getName().split("\\."));
+            if (CollectionUtils.isNotEmpty(strings)) {
+                i.setType(strings.get(1));
+            }
+            i.setAttachmentId(id);
+            i.setAttachmentName(dto.getName());
+            i.setAttachmentFlag("cwWorkContract");
+            i.setFileSize(dto.getSize());
+            i.setSort(j);
+            ossServiceMapper.insertWorkAttachment(i, userDTO);
+            j++;
+        }
+    }
+
+    /**
+     * 修改附件信息
+     * @param list 待修改的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void updateFiles(List<WorkAttachmentDto> list, UserDTO userDTO, String id) {
+        int j = 1;
+        String names = new String();
+        //表中存在,但是传过来不存在,说明已删除,表中数据也要删除
+        for (WorkAttachmentDto dto : list) {
+            names = names + "," +dto.getUrl();
+        }
+        //查询保存的附件信息
+        List<WorkAttachment> infoList = mapper.findList(id);
+        if (CollectionUtils.isNotEmpty(infoList)) {
+            for (WorkAttachment i : infoList) {
+                if (!names.contains(i.getUrl())) {
+                    ossServiceMapper.deleteById(i.getId());
+                }
+            }
+        }
+        //保存信息
+        for (WorkAttachmentDto dto : list) {
+            //判断是否存在
+            Integer isExit = mapper.findIsExit(id, dto.getName());
+            if (isExit == 0) {
+                WorkAttachment i = new WorkAttachment();
+                //包含了url、size、name
+                i.setId(UUID.randomUUID().toString().replace("-", ""));
+//                i.getCreateBy().setId(userDTO.getId());
+                i.setCreateDate(new Date());
+//                i.getUpdateBy().setId(userDTO.getId());
+                i.setUpdateDate(new Date());
+                i.setDelFlag(0);
+                i.setUrl(dto.getUrl());
+                //文件类型处理
+                List<String> strings = Arrays.asList(dto.getName().split("\\."));
+                if (CollectionUtils.isNotEmpty(strings)) {
+                    i.setType(strings.get(1));
+                }
+                i.setAttachmentId(id);
+                i.setAttachmentName(dto.getName());
+                i.setAttachmentFlag("cwWorkContract");
+                i.setFileSize(dto.getSize());
+                i.setSort(j);
+                ossServiceMapper.insertWorkAttachment(i, userDTO);
+                j++;
+            }
+        }
+    }
 }