浏览代码

付款操作记录

别傲 5 年之前
父节点
当前提交
8bf2d0ac20

+ 2 - 2
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/controller/PaymentController.java

@@ -1,7 +1,7 @@
 package cn.com.ty.lift.business.contract.controller;
 package cn.com.ty.lift.business.contract.controller;
 
 
-import cn.com.ty.lift.business.contract.dao.entity.PaymentHistory;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.PaymentRequest;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.PaymentRequest;
+import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentHistoryResponse;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentListResponse;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentListResponse;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentResponse;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentResponse;
 import cn.com.ty.lift.business.contract.service.PaymentHistoryService;
 import cn.com.ty.lift.business.contract.service.PaymentHistoryService;
@@ -114,7 +114,7 @@ public class PaymentController {
     @PostMapping("history/list")
     @PostMapping("history/list")
     @Validation(fields = {"contractId"})
     @Validation(fields = {"contractId"})
     public RestResponse historyList(@Valid @RequestBody PaymentRequest request) {
     public RestResponse historyList(@Valid @RequestBody PaymentRequest request) {
-        IPage<PaymentHistory> page = paymentHistoryService.list(request);
+        IPage<PaymentHistoryResponse> page = paymentHistoryService.list(request);
         return RestResponse.success(page, MessageUtils.get("msg.query.success"));
         return RestResponse.success(page, MessageUtils.get("msg.query.success"));
     }
     }
 }
 }

+ 0 - 3
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/entity/PaymentHistory.java

@@ -54,7 +54,4 @@ public class PaymentHistory {
      * 操作时间
      * 操作时间
      */
      */
     private LocalDateTime operateDate;
     private LocalDateTime operateDate;
-
-
-    private Integer pid;
 }
 }

+ 59 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/entity/model/response/PaymentHistoryResponse.java

@@ -0,0 +1,59 @@
+package cn.com.ty.lift.business.contract.dao.entity.model.response;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author bieao
+ * @date 2020/5/12
+ * @description 付款操作记录返回
+ */
+@Data
+public class PaymentHistoryResponse {
+
+    /**
+     * 记录ID
+     */
+    private Long id;
+
+    /**
+     * 合同ID
+     */
+    private Long contractsId;
+
+    /**
+     * 付款ID
+     */
+    private Long paymentId;
+
+    /**
+     * 操作项
+     */
+    private String description;
+
+    /**
+     * 操作前内容
+     */
+    private String beforeContent;
+
+    /**
+     * 操作后内容
+     */
+    private String afterContent;
+
+    /**
+     * 操作人id
+     */
+    private Long operatorId;
+
+    /**
+     * 操作人
+     */
+    private String operatorName;
+
+    /**
+     * 操作时间
+     */
+    private LocalDateTime operateDate;
+}

+ 6 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/mapper/PaymentHistoryMapper.java

@@ -1,7 +1,10 @@
 package cn.com.ty.lift.business.contract.dao.mapper;
 package cn.com.ty.lift.business.contract.dao.mapper;
 
 
 import cn.com.ty.lift.business.contract.dao.entity.PaymentHistory;
 import cn.com.ty.lift.business.contract.dao.entity.PaymentHistory;
+import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentHistoryResponse;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 
 
 /**
 /**
  * @author bieao
  * @author bieao
@@ -9,4 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @description 付款操作记录数据层
  * @description 付款操作记录数据层
  */
  */
 public interface PaymentHistoryMapper extends BaseMapper<PaymentHistory> {
 public interface PaymentHistoryMapper extends BaseMapper<PaymentHistory> {
+
+    IPage<PaymentHistoryResponse> queryPaymentHistory(IPage<PaymentHistoryResponse> page, @Param("contractId") Long contractId);
+
 }
 }

+ 5 - 9
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/service/PaymentHistoryService.java

@@ -2,9 +2,8 @@ package cn.com.ty.lift.business.contract.service;
 
 
 import cn.com.ty.lift.business.contract.dao.entity.PaymentHistory;
 import cn.com.ty.lift.business.contract.dao.entity.PaymentHistory;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.PaymentRequest;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.PaymentRequest;
+import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentHistoryResponse;
 import cn.com.ty.lift.business.contract.dao.mapper.PaymentHistoryMapper;
 import cn.com.ty.lift.business.contract.dao.mapper.PaymentHistoryMapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -19,14 +18,11 @@ public class PaymentHistoryService extends ServiceImpl<PaymentHistoryMapper, Pay
 
 
     /**
     /**
      * @param request 付款编号
      * @param request 付款编号
-     * @return IPage<PaymentHistory> 付款历史记录
-     * @description 根据付款编号查询合同历史记录
+     * @return IPage<PaymentHistoryResponse> 付款历史记录
+     * @description 根据合同编号查询付款历史记录
      * @date 2020/2/26 5:24 下午
      * @date 2020/2/26 5:24 下午
      */
      */
-    public IPage<PaymentHistory> list(PaymentRequest request) {
-        QueryWrapper<PaymentHistory> queryWrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<PaymentHistory> lambdaQueryWrapper = queryWrapper.lambda();
-        lambdaQueryWrapper.eq(PaymentHistory::getContractsId, request.getContractId());
-        return page(request.getPage(), lambdaQueryWrapper);
+    public IPage<PaymentHistoryResponse> list(PaymentRequest request) {
+      return baseMapper.queryPaymentHistory(request.getPage(),request.getContractId());
     }
     }
 }
 }

+ 47 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/service/PaymentService.java

@@ -2,6 +2,7 @@ package cn.com.ty.lift.business.contract.service;
 
 
 import cn.com.ty.lift.business.contract.dao.entity.Contracts;
 import cn.com.ty.lift.business.contract.dao.entity.Contracts;
 import cn.com.ty.lift.business.contract.dao.entity.Payment;
 import cn.com.ty.lift.business.contract.dao.entity.Payment;
+import cn.com.ty.lift.business.contract.dao.entity.PaymentHistory;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.PaymentRequest;
 import cn.com.ty.lift.business.contract.dao.entity.model.request.PaymentRequest;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentDetailResponse;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentDetailResponse;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentListResponse;
 import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentListResponse;
@@ -11,6 +12,7 @@ import cn.com.ty.lift.business.framework.util.MessageUtils;
 import cn.com.ty.lift.common.utils.DateUtils;
 import cn.com.ty.lift.common.utils.DateUtils;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.IterUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,6 +20,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
@@ -29,6 +33,9 @@ import java.util.stream.Collectors;
 @Service
 @Service
 public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
 public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
 
 
+    @Resource
+    private PaymentHistoryService paymentHistoryService;
+
     /**
     /**
      * @param request 付款列表查询条件
      * @param request 付款列表查询条件
      * @return RestResponse 付款分页列表结果
      * @return RestResponse 付款分页列表结果
@@ -99,6 +106,10 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
         return saveBatch(payments);
         return saveBatch(payments);
     }
     }
 
 
+    private String formatPaymentContent(Payment payment){
+        return String.format("应收:%.2f, 实收:%.2f, 开票:%.2f", payment.getPlanMoney(), payment.getWorkMoney(), payment.getAmountInvoice());
+    }
+
     /**
     /**
      * @param oldPaymentList 原有付款列表
      * @param oldPaymentList 原有付款列表
      * @param paymentList    修改的付款列表
      * @param paymentList    修改的付款列表
@@ -109,17 +120,47 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
     public RestResponse modifyPayment(Collection<Payment> oldPaymentList, List<Payment> paymentList) {
     public RestResponse modifyPayment(Collection<Payment> oldPaymentList, List<Payment> paymentList) {
         List<Payment> updateList = new ArrayList<>();
         List<Payment> updateList = new ArrayList<>();
         List<Payment> deleteList = new ArrayList<>();
         List<Payment> deleteList = new ArrayList<>();
+        List<PaymentHistory> histories = new ArrayList<>();
         //新增付款项
         //新增付款项
         List<Payment> insertList = paymentList.stream().filter(entry -> Objects.isNull(entry.getId())).collect(Collectors.toList());
         List<Payment> insertList = paymentList.stream().filter(entry -> Objects.isNull(entry.getId())).collect(Collectors.toList());
+        if (IterUtil.isNotEmpty(insertList)) {
+            for (Payment payment : insertList) {
+                PaymentHistory history = new PaymentHistory();
+                history.setContractsId(payment.getContractsId());
+                history.setDescription("新增收款项");
+                history.setBeforeContent("--");
+                String afterContent = formatPaymentContent(payment);
+                history.setAfterContent(afterContent);
+                history.setOperatorId(payment.getUpdateId());
+                history.setOperateDate(LocalDateTime.now());
+                histories.add(history);
+            }
+        }
         if (CollUtil.isEmpty(oldPaymentList)) {
         if (CollUtil.isEmpty(oldPaymentList)) {
             updateList.addAll(paymentList);
             updateList.addAll(paymentList);
         } else {
         } else {
             //比较原有收款项
             //比较原有收款项
             for (Payment payment : oldPaymentList) {
             for (Payment payment : oldPaymentList) {
+                PaymentHistory history = new PaymentHistory();
+                history.setContractsId(payment.getContractsId());
+                String before = formatPaymentContent(payment);
+                history.setBeforeContent(before);
+                history.setOperatorId(payment.getUpdateId());
+                history.setOperateDate(LocalDateTime.now());
                 Optional<Payment> newPayment = paymentList.stream().filter(entry -> payment.getId().equals(entry.getId())).findFirst();
                 Optional<Payment> newPayment = paymentList.stream().filter(entry -> payment.getId().equals(entry.getId())).findFirst();
                 if (newPayment.isPresent()) {
                 if (newPayment.isPresent()) {
-                    updateList.add(newPayment.get());
+                    history.setDescription("修改收费项");
+                    Payment p = newPayment.get();
+                    String after = formatPaymentContent(p);
+                    if (!Objects.equals(before, after)) {
+                        history.setAfterContent(after);
+                        histories.add(history);
+                        updateList.add(p);
+                    }
                 } else {
                 } else {
+                    history.setDescription("删除付款项");
+                    history.setAfterContent("--");
+                    histories.add(history);
                     deleteList.add(payment);
                     deleteList.add(payment);
                 }
                 }
             }
             }
@@ -142,6 +183,11 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
                 return RestResponse.fail(MessageUtils.get("msg.add.batch.fail"));
                 return RestResponse.fail(MessageUtils.get("msg.add.batch.fail"));
             }
             }
         }
         }
+        boolean history = paymentHistoryService.saveBatch(histories, histories.size());
+        if (!history) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return RestResponse.fail("插入付款操作记录失败");
+        }
         return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
         return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
     }
     }
 
 

+ 34 - 0
lift-business-service/src/main/resources/mapper/contract/PaymentHistoryMapper.xml

@@ -0,0 +1,34 @@
+<?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="cn.com.ty.lift.business.contract.dao.mapper.PaymentHistoryMapper">
+    <resultMap id="BaseResultMap" type="cn.com.ty.lift.business.contract.dao.entity.PaymentHistory">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="contracts_id" property="contractsId" jdbcType="BIGINT"/>
+        <result column="payment_id" property="paymentId" jdbcType="BIGINT"/>
+        <result column="description" property="description" jdbcType="VARCHAR"/>
+        <result column="before_content" property="beforeContent" jdbcType="LONGVARCHAR"/>
+        <result column="after_content" property="afterContent" jdbcType="LONGVARCHAR"/>
+        <result column="operator_id" property="operatorId" jdbcType="BIGINT"/>
+        <result column="operate_date" property="operateDate" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+		id, contracts_id, payment_id, description,before_content, after_content, operator_id, operate_date
+	</sql>
+
+    <select id="queryPaymentHistory" parameterType="java.lang.Long"
+            resultType="cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentHistoryResponse">
+        SELECT ph.id,
+               ph.contract_id,
+               ph.description,
+               ph.before_content,
+               ph.after_content,
+               ph.operator_id,
+               ph.operate_date,
+               ui.name AS operatorName
+        FROM payment_history ph
+                 LEFT JOIN user_info ui ON ph.operator_id = ui.user_id
+        WHERE contract_id = #{contractId}
+    </select>
+
+</mapper>