Pārlūkot izejas kodu

项目合同 列表和回款里程碑,修改档案外部搜索无法高亮和统计非4个基础文件

qianxb 2 gadi atpakaļ
vecāks
revīzija
be54bbe9dc
19 mainītis faili ar 395 papildinājumiem un 5 dzēšanām
  1. 6 0
      blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java
  2. 20 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ContractReturnedInfoDTO.java
  3. 21 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlContractInfoDTO.java
  4. 1 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlProjectInfoDTO.java
  5. 59 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ContractReturnedInfo.java
  6. 29 0
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ContractReturnedInfoVO.java
  7. 12 2
      blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ControlContractInfoVO.java
  8. 2 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml
  9. 7 1
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  10. 11 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractInfoController.java
  11. 50 0
      blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractReturnedInfoController.java
  12. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.java
  13. 8 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.xml
  14. 24 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractReturnedInfoMapper.java
  15. 16 0
      blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractReturnedInfoMapper.xml
  16. 3 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IContractInfoService.java
  17. 30 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/IContractReturnedInfoService.java
  18. 21 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java
  19. 72 0
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractReturnedInfoServiceImpl.java

+ 6 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java

@@ -148,6 +148,11 @@ public class ArchivesAutoVO extends ArchivesAuto {
 	 */
 	private Integer isSelect;
 
+	/**
+	 * 去除四要素后的文件
+	 */
+	private Integer pageNumber;
+
 	/**
 	 * 柜子内部搜索
 	 */
@@ -221,5 +226,6 @@ public class ArchivesAutoVO extends ArchivesAuto {
 
 		private Long id;
 		private Long fileSize;
+		private Integer isElement;
 	}
 }

+ 20 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ContractReturnedInfoDTO.java

@@ -0,0 +1,20 @@
+package org.springblade.control.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.control.entity.ContractReturnedInfo;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 16:53
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractReturnedInfoDTO extends ContractReturnedInfo{
+    @ApiModelProperty(value = "项目进程集合")
+    private List<ContractReturnedInfo> list;
+}

+ 21 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlContractInfoDTO.java

@@ -0,0 +1,21 @@
+package org.springblade.control.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.control.entity.ContractReturnedInfo;
+import org.springblade.control.entity.ControlContractInfo;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 16:53
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ControlContractInfoDTO extends ControlContractInfo {
+    @ApiModelProperty(value = "搜索值")
+    private String queryValue;
+}

+ 1 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/dto/ControlProjectInfoDTO.java

@@ -17,6 +17,7 @@ import java.util.List;
 @EqualsAndHashCode(callSuper = true)
 public class ControlProjectInfoDTO extends ControlProjectInfo {
     //项目进程集合
+    @ApiModelProperty(value = "项目进程集合")
     private List<ProjectProcess> projectProcessList;
 
     //模糊查询

+ 59 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/entity/ContractReturnedInfo.java

@@ -0,0 +1,59 @@
+package org.springblade.control.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 9:21
+ **/
+@Data
+@TableName("c_contract_returned_info")
+@EqualsAndHashCode(callSuper = true)
+@ApiModel(value = "合同回款信息表", description = "合同回款信息表")
+public class ContractReturnedInfo extends BaseEntity {
+
+    @ApiModelProperty(value = "合同id")
+    private Long contractId;
+
+    @ApiModelProperty(value = "回款条件")
+    private String returnedCondition;
+
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "应回款时间")
+    private LocalDate shouldReturnedTime;
+
+    @ApiModelProperty(value = "应回款金额")
+    private BigDecimal shouldReturnedMoney;
+
+    @DateTimeFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @JsonFormat(
+            pattern = "yyyy-MM-dd"
+    )
+    @ApiModelProperty(value = "实际回款时间")
+    private LocalDate practicalReturnedTime;
+
+    @ApiModelProperty(value = "实际回款金额")
+    private BigDecimal practicalReturnedMoney;
+
+    @ApiModelProperty(value = "催款执行人")
+    private Long reminderUser;
+
+}

+ 29 - 0
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ContractReturnedInfoVO.java

@@ -0,0 +1,29 @@
+package org.springblade.control.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.control.entity.ContractReturnedInfo;
+import org.springblade.core.mp.base.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 9:21
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ContractReturnedInfoVO extends ContractReturnedInfo {
+
+    @ApiModelProperty(value = "催款执行人名称")
+    private String reminderUserName;
+
+
+}

+ 12 - 2
blade-service-api/blade-control-api/src/main/java/org/springblade/control/vo/ControlContractInfoVO.java

@@ -1,9 +1,12 @@
 package org.springblade.control.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.control.entity.ControlContractInfo;
 
+import java.math.BigDecimal;
+
 /**
  * @Param
  * @Author wangwl
@@ -12,8 +15,15 @@ import org.springblade.control.entity.ControlContractInfo;
 @Data
 @EqualsAndHashCode(callSuper = true)
 public class ControlContractInfoVO extends ControlContractInfo {
-    //合同类型值
+    @ApiModelProperty(value = "合同类型值")
     private String contractTypeValue;
-    //项目名称
+
+    @ApiModelProperty(value = "项目名称")
     private String projectName;
+
+    @ApiModelProperty(value = "合同已回款")
+    private BigDecimal returnedMoney;
+
+    @ApiModelProperty(value = "合同未回款")
+    private BigDecimal unreturnedMoney;
 }

+ 2 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -478,7 +478,8 @@
     </select>
 
     <select id="pageByArchivesAuto3" resultMap="archivesAutoResultMap">
-        select uaa.* from
+        select uaa.*,(select COUNT(1) from u_archive_file af WHERE af.archive_id = uaa.id AND af.is_element = 0 and af.is_deleted = 0) as pageNumber
+        from
         (SELECT id FROM m_archive_tree_contract WHERE project_id =#{vo.projectId}
         and  ancestors like concat('%',#{vo.nodeId},'%')
         ) matc left join u_archives_auto uaa on matc.id = uaa.node_id left join u_archive_file uaf on uaa.id =

+ 7 - 1
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -186,7 +186,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//根据单位查询出当前箱子所有档案,最大为160条
 		List<ArchivesAutoVO> archivesAutos = baseMapper.pageByArchivesAuto3(page, vo);
 		//根据条件筛选
-		if (vo.getInnerSearch() != null){
+		if (StringUtils.isNotBlank(vo.getInnerSearch())){
 			vo.setQueryValue(vo.getInnerSearch());
 			vo.setSearchType(1);
 			vo.setStorageTimes(null);
@@ -204,11 +204,17 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		}
 		if (archivesAutos != null && archivesAutos.size() >0) {
 			for (ArchivesAutoVO aa : archivesAutos) {
+				//是否选中
 				if (ids.contains(aa.getId())){
 					aa.setIsSelect(1);
 				}else {
 					aa.setIsSelect(0);
 				}
+				//柜子里面侧面编号
+				if (aa.getFileNumber() != null && aa.getFileNumber() != "") {
+					String[] split = aa.getFileNumber().split("_");
+					aa.setFileNumber(split[split.length - 1]);
+				}
 				if (StringUtils.isNotBlank(aa.getStorageTime())) {
 					aa.setStorageTimeValue("3".equals(aa.getStorageTime()) ? "永久" : ("2".equals(aa.getStorageTime()) ? "30年" : "10年"));
 				}

+ 11 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractInfoController.java

@@ -4,6 +4,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.springblade.control.dto.ControlContractInfoDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlContractInfo;
 import org.springblade.control.service.IContractInfoService;
@@ -67,6 +68,16 @@ public class ContractInfoController {
         return R.data(contractInfoService.getContractInfoById(id));
     }
 
+    /**
+     * 合同列表,分页查询
+     */
+    @GetMapping("/getPage")
+    @ApiOperationSupport(order = 3)
+    @ApiOperation(value = "合同列表,分页查询")
+    public R getPage(ControlContractInfoDTO dto,Query query) {
+        return R.data(contractInfoService.getPage(dto,query));
+    }
+
     /**
      * 获取合同类型字典
      */

+ 50 - 0
blade-service/blade-control/src/main/java/org/springblade/control/controller/ContractReturnedInfoController.java

@@ -0,0 +1,50 @@
+package org.springblade.control.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springblade.control.dto.ContractReturnedInfoDTO;
+import org.springblade.control.entity.ContractReturnedInfo;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.service.IContractInfoService;
+import org.springblade.control.service.IContractReturnedInfoService;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/6/6 16:03
+ **/
+@RestController
+@AllArgsConstructor
+@RequestMapping("/contractReturnedInfo")
+@Api(value = "合同回款接口", tags = "合同回款接口")
+public class ContractReturnedInfoController {
+
+    private final IContractReturnedInfoService contractReturnedInfoService;
+
+    /**
+     * 批量新增或修改回款信息
+     */
+    @PostMapping("/saveOrUpdateBatchReturned")
+    @ApiOperationSupport(order = 1)
+    @ApiOperation(value = "批量新增或修改回款信息")
+    public R saveOrUpdateBatchReturned(@RequestBody ContractReturnedInfoDTO dto) {
+        contractReturnedInfoService.saveOrUpdateBatchReturned(dto);
+        return R.success("保存成功");
+    }
+
+    /**
+     * 获取合同回款列表
+     */
+    @GetMapping("/getContractReturnList")
+    @ApiOperationSupport(order = 2)
+    @ApiOperation(value = "获取合同回款列表")
+    public R getContractReturnList(Long contractId){
+        return R.data(contractReturnedInfoService.getContractReturnList(contractId));
+    }
+}

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.java

@@ -3,6 +3,7 @@ package org.springblade.control.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
+import org.springblade.control.dto.ControlContractInfoDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlContractInfo;
 import org.springblade.control.entity.ControlProjectInfo;
@@ -25,4 +26,6 @@ public interface ContractInfoMapper extends BaseMapper<ControlContractInfo> {
     List<ControlProjectInfo> getNoConnectionProject();
 
     ControlContractInfoVO getContractInfoById(@Param("id") Long id);
+
+    List<ControlContractInfoVO> getPage(IPage page,@Param("dto") ControlContractInfoDTO dto);
 }

+ 8 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractInfoMapper.xml

@@ -18,4 +18,12 @@
             (select name  from c_control_project_info WHERE id = ci.project_id) as projectName
         FROM c_control_contract_info ci WHERE ci.id = #{id}
     </select>
+    <select id="getPage" resultType="org.springblade.control.vo.ControlContractInfoVO">
+        SELECT
+            ci.*,
+            (select dict_name  from c_dict_info WHERE code = 'contract_type' AND dict_value= ci.contract_type) as contractTypeValue,
+            IFNULL((select SUM(practical_returned_money) from c_contract_returned_info WHERE contract_id = ci.id),0)  as returnedMoney,
+            (ci.contract_money - IFNULL((select SUM(practical_returned_money) from c_contract_returned_info WHERE contract_id = ci.id),0)) as unreturnedMoney
+        FROM c_control_contract_info ci
+    </select>
 </mapper>

+ 24 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractReturnedInfoMapper.java

@@ -0,0 +1,24 @@
+package org.springblade.control.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.springblade.control.entity.ContractReturnedInfo;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.ContractReturnedInfoVO;
+import org.springblade.control.vo.ControlContractInfoVO;
+
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/5/12 9:38
+ **/
+public interface ContractReturnedInfoMapper extends BaseMapper<ContractReturnedInfo> {
+
+    void deleteOldInfo(@Param("contractId") Long contractId);
+
+    List<ContractReturnedInfoVO> getContractReturnList(@Param("contractId") Long contractId);
+}

+ 16 - 0
blade-service/blade-control/src/main/java/org/springblade/control/mapper/ContractReturnedInfoMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.control.mapper.ContractReturnedInfoMapper">
+
+
+    <delete id="deleteOldInfo">
+        delete from c_contract_returned_info
+        where contract_id = #{contractId} and  practical_returned_time is null and practical_returned_money is null
+    </delete>
+    <select id="getContractReturnList" resultType="org.springblade.control.vo.ContractReturnedInfoVO">
+        select
+            ri.*,
+            (select name from blade_user WHERE id = ri.reminder_user) as reminderUserName
+        from c_contract_returned_info ri where ri.contract_id = #{contractId}
+    </select>
+</mapper>

+ 3 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IContractInfoService.java

@@ -1,6 +1,7 @@
 package org.springblade.control.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.control.dto.ControlContractInfoDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlContractInfo;
 import org.springblade.control.entity.ControlProjectInfo;
@@ -32,4 +33,6 @@ public interface IContractInfoService extends BaseService<ControlContractInfo> {
     void updateContractInfo(ControlContractInfo contractInfo);
 
     ControlContractInfoVO getContractInfoById(Long id);
+
+    List<ControlContractInfoVO> getPage(ControlContractInfoDTO dto,Query query);
 }

+ 30 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/IContractReturnedInfoService.java

@@ -0,0 +1,30 @@
+package org.springblade.control.service;
+
+import org.springblade.control.dto.ContractReturnedInfoDTO;
+import org.springblade.control.entity.ContractReturnedInfo;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.vo.ContractReturnedInfoVO;
+import org.springblade.control.vo.ControlContractInfoVO;
+import org.springblade.core.mp.base.BaseService;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/5/12 9:41
+ **/
+public interface IContractReturnedInfoService extends BaseService<ContractReturnedInfo> {
+
+    void saveOrUpdateBatchReturned(ContractReturnedInfoDTO dto);
+
+    /**
+     * 根据合同id获取合同已回款金额
+     */
+    BigDecimal getContractReturnedMoney(Long contractId);
+
+    List<ContractReturnedInfoVO> getContractReturnList(Long contractId);
+}

+ 21 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractInfoServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.springblade.common.utils.SnowFlakeUtil;
+import org.springblade.control.dto.ControlContractInfoDTO;
 import org.springblade.control.dto.ControlProjectInfoDTO;
 import org.springblade.control.entity.ControlContractInfo;
 import org.springblade.control.entity.ControlProjectInfo;
@@ -12,6 +13,7 @@ import org.springblade.control.entity.DictInfo;
 import org.springblade.control.mapper.ContractInfoMapper;
 import org.springblade.control.mapper.ProjectInfoMapper;
 import org.springblade.control.service.IContractInfoService;
+import org.springblade.control.service.IContractReturnedInfoService;
 import org.springblade.control.service.IProjectInfoService;
 import org.springblade.control.service.IProjectProcessService;
 import org.springblade.control.vo.ControlContractInfoVO;
@@ -23,6 +25,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -34,6 +37,8 @@ import java.util.List;
 @AllArgsConstructor
 public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper, ControlContractInfo> implements IContractInfoService {
 
+    private final IContractReturnedInfoService returnedInfoService;
+
     /**
      * 添加合同信息
      * @param contractInfo
@@ -88,6 +93,21 @@ public class ContractInfoServiceImpl extends BaseServiceImpl<ContractInfoMapper,
      */
     @Override
     public ControlContractInfoVO getContractInfoById(Long id) {
-        return baseMapper.getContractInfoById(id);
+        ControlContractInfoVO contractInfo = baseMapper.getContractInfoById(id);
+        BigDecimal returnedMoney = returnedInfoService.getContractReturnedMoney(id);
+        contractInfo.setReturnedMoney(returnedMoney);
+        contractInfo.setUnreturnedMoney(contractInfo.getContractMoney().subtract(returnedMoney));
+        return contractInfo;
+    }
+
+    /**
+     * 获取合同列表
+     * @param dto
+     * @return
+     */
+    @Override
+    public List<ControlContractInfoVO> getPage(ControlContractInfoDTO dto,Query query) {
+        IPage<ControlContractInfoVO> page = new Page<>(query.getCurrent(),query.getSize());
+        return baseMapper.getPage(page,dto);
     }
 }

+ 72 - 0
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/ContractReturnedInfoServiceImpl.java

@@ -0,0 +1,72 @@
+package org.springblade.control.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.AllArgsConstructor;
+import org.springblade.control.dto.ContractReturnedInfoDTO;
+import org.springblade.control.entity.ContractReturnedInfo;
+import org.springblade.control.entity.ControlContractInfo;
+import org.springblade.control.entity.ControlProjectInfo;
+import org.springblade.control.entity.DictInfo;
+import org.springblade.control.mapper.ContractInfoMapper;
+import org.springblade.control.mapper.ContractReturnedInfoMapper;
+import org.springblade.control.service.IContractInfoService;
+import org.springblade.control.service.IContractReturnedInfoService;
+import org.springblade.control.vo.ContractReturnedInfoVO;
+import org.springblade.control.vo.ControlContractInfoVO;
+import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2023/5/12 9:43
+ **/
+@Service
+@AllArgsConstructor
+public class ContractReturnedInfoServiceImpl extends BaseServiceImpl<ContractReturnedInfoMapper, ContractReturnedInfo> implements IContractReturnedInfoService {
+
+
+    /**
+     * 批量新增或保存合同回款信息
+     * @param dto
+     */
+    @Override
+    @Transactional
+    public void saveOrUpdateBatchReturned(ContractReturnedInfoDTO dto) {
+        baseMapper.deleteOldInfo(dto.getContractId());
+        this.saveOrUpdateBatch(dto.getList());
+    }
+
+    /**
+     * 根据合同id获取合同已回款
+     * @param contractId
+     * @return
+     */
+    @Override
+    public BigDecimal getContractReturnedMoney(Long contractId) {
+        BigDecimal money = new BigDecimal(0);
+        List<ContractReturnedInfo> list = this.list(new LambdaQueryWrapper<ContractReturnedInfo>().eq(ContractReturnedInfo::getContractId, contractId));
+        if (list != null && list.size() >0){
+            for (ContractReturnedInfo info : list) {
+                if (info.getPracticalReturnedMoney() != null){
+                    money = money.add(info.getPracticalReturnedMoney());
+                }
+            }
+        }
+        return money;
+    }
+
+    /**
+     * 获取合同回款列表
+     * @param contractId
+     * @return
+     */
+    @Override
+    public List<ContractReturnedInfoVO> getContractReturnList(Long contractId) {
+        return baseMapper.getContractReturnList(contractId);
+    }
+}