Bladeren bron

合同、付款

别傲 5 jaren geleden
bovenliggende
commit
ddf66d9bdb

+ 17 - 5
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/controller/ContractController.java

@@ -78,6 +78,22 @@ public class ContractController {
         return contractService.add(request);
     }
 
+    /**
+     * @param request 续签合同数据项
+     * @return 1.成功, 0.失败, 消息描述
+     * @description 续签合同
+     * @date 2020/5/3 10:46 上午
+     */
+    @PostMapping("renew")
+    @Validation(fields = {"mtCompanyId", "contractId"})
+    public RestResponse renew(@Val @RequestBody ContractRequest request) {
+        Contracts contracts = request.getContracts();
+        Validator.valid(contracts, "liftNum", "moneys", "type", "givenDate", "givenUser", "starDate", "endDate");
+        boolean result = contracts.getStarDate().isAfter(contracts.getEndDate());
+        if (result) return RestResponse.success(null, MessageUtils.get("msg.time.error"));
+        return contractService.renew(request);
+    }
+
 
     /**
      * @param request 修改合同数据项
@@ -100,11 +116,7 @@ public class ContractController {
     @PostMapping("check")
     @Validation(fields = {"id"})
     public RestResponse check(@Val @RequestBody ContractRequest request) {
-        boolean result = contractService.check(request);
-        if (result) {
-            return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
-        }
-        return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
+        return contractService.check(request);
     }
 
     /**

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

@@ -102,12 +102,7 @@ public class PaymentController {
     @PostMapping("batch/modify")
     @Validation(fields = {"paymentList"})
     public RestResponse batchModify(@Val @RequestBody PaymentRequest request) {
-        boolean result = paymentService.modifyBatchById(request.getPaymentList());
-        if (result) {
-            return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
-        } else {
-            return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
-        }
+        return paymentService.modifyBatchById(request);
     }
 
     /**

+ 1 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/entity/Contracts.java

@@ -124,7 +124,7 @@ public class Contracts extends BaseEntity {
     /**
      * 签约合同编号
      */
-    private String nextId;
+    private Long nextId;
 
     /**
      * 合同附件

+ 7 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/dao/entity/model/request/PaymentRequest.java

@@ -41,6 +41,13 @@ public class PaymentRequest extends PageRequest {
     @Min(value = 1, message = "合同ID有误")
     private Long contractId;
 
+    /**
+     * 合同类型
+     */
+    @NotNull(message = "合同类型不能为空")
+    @Min(value = 1, message = "合同类型有误")
+    private Integer contractType;
+
     /**
      * 付款列表
      */

+ 81 - 31
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/service/ContractService.java

@@ -56,6 +56,7 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
      * @date 2019/12/7 11:53 AM
      */
     public IPage<ContractResponse> list(ContractRequest request) {
+        request.addDesc("end_date");
         return contractsMapper.findByCondition(request.getPage(), request);
     }
 
@@ -113,20 +114,76 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
         return RestResponse.success(null, MessageUtils.get("msg.add.success"));
     }
 
+   /**
+    * @param request 续签合同数据项
+    * @return 1.成功, 0.失败, 消息描述
+    * @description 续签合同
+    * @date 2020/5/3 10:48 上午
+    */
+    @Transactional(rollbackFor = Exception.class)
+    public RestResponse renew(ContractRequest request) {
+        Contracts contracts = request.getContracts();
+        //查询原有合同是否存在
+        Long contractId = request.getContractId();
+        Contracts oldContract = getOne(contractId);
+        if (Objects.isNull(oldContract))
+            return RestResponse.fail(MessageUtils.get("msg.contract.not.exist"));
+        if (ObjectUtil.isEmpty(contracts.getCode())) {
+            //按当前日期时间戳自动生成合同编号
+            String contractCode = DateUtils.generateCode();
+            contracts.setCode("HT" + contractCode);
+        }
+        contracts.setProjectId(request.getProjectId());
+        List<Payment> paymentList = request.getPaymentList();
+        if (CollUtil.isNotEmpty(paymentList)) {
+            //应收金额总计
+            BigDecimal planMoneyTotal = paymentList.stream().map(Payment::getPlanMoney).reduce(ZERO, BigDecimal::add);
+            contracts.setPlanMoneyTotal(planMoneyTotal);
+            //实收金额总计
+            BigDecimal workMoneyTotal = paymentList.stream().map(Payment::getWorkMoney).reduce(ZERO, BigDecimal::add);
+            contracts.setWorkMoneyTotal(workMoneyTotal);
+            //开票金额总计
+            BigDecimal invoiceTotal = paymentList.stream().map(Payment::getAmountInvoice).reduce(ZERO, BigDecimal::add);
+            contracts.setInvoiceMoneyTotal(invoiceTotal);
+        }
+        //插入新合同信息
+        boolean result = save(contracts);
+        if (!result)
+            return RestResponse.fail(MessageUtils.get("msg.add.fail"));
+
+        //修改原有合同
+        oldContract.setNextId(contracts.getId());
+        boolean ret = updateById(oldContract);
+        if (!ret) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return RestResponse.fail(MessageUtils.get("msg.add.fail"));
+        }
+        //查询原有付款列表
+        List<Payment> oldPaymentList = paymentService.paymentList(contractId);
+        paymentList.forEach(entry -> {
+            entry.setContractsId(contracts.getId());
+            entry.setCode("PA" + DateUtils.generateCode());
+            entry.setType(contracts.getType());
+        });
+        //修改或删除付款列表
+        return paymentService.modifyPayment(oldPaymentList, paymentList);
+    }
+
     /**
      * @param request 合同复核
      * @return 1.成功, 0.失败, 消息描述
      * @description 合同复核
      * @date 2020/2/11 12:55 下午
      */
-    public boolean check(ContractRequest request) {
-        Optional<Contracts> optional = getOne(request.getId());
-        if (optional.isPresent()) {
-            Contracts contracts = optional.get();
-            contracts.setIsCheck(1);
-            return updateById(contracts);
-        }
-        return false;
+    public RestResponse check(ContractRequest request) {
+        Contracts contracts = getOne(request.getId());
+        if (Objects.isNull(contracts))
+            return RestResponse.fail(MessageUtils.get("msg.contract.not.exist"));
+        contracts.setIsCheck(1);
+        boolean result = updateById(contracts);
+        if (!result)
+            return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
+        return RestResponse.success(MessageUtils.get("msg.modify.success"));
     }
 
     /**
@@ -135,11 +192,11 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
      * @description 查询合同
      * @date 2019/12/20 11:04 AM
      */
-    public Optional<Contracts> getOne(Long id) {
+    public Contracts getOne(Long id) {
         QueryWrapper<Contracts> queryWrapper = new QueryWrapper<>();
         LambdaQueryWrapper<Contracts> lambdaQueryWrapper = queryWrapper.lambda();
         lambdaQueryWrapper.eq(Contracts::getId, id);
-        return Optional.ofNullable(getOne(lambdaQueryWrapper));
+        return getOne(lambdaQueryWrapper);
     }
 
     /**
@@ -151,8 +208,9 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
     @Transactional(rollbackFor = Exception.class)
     public RestResponse modify(ContractRequest request) {
         Contracts contracts = request.getContracts();
-        Optional<Contracts> oldContract = getOne(contracts.getId());
-        if (!oldContract.isPresent())
+        Long contractId = contracts.getId();
+        Contracts oldContract = getOne(contractId);
+        if (Objects.isNull(oldContract))
             return RestResponse.fail(MessageUtils.get("msg.contract.not.exist"));
         //修改合同信息
         contracts.setIsCheck(0);
@@ -171,9 +229,8 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
         if (!contractResult)
             return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
 
-        Contracts entry = oldContract.get();
         //生成合同操作记录
-        ContractsHistory history = contractHistoryService.createOperaHistory(entry, contracts);
+        ContractsHistory history = contractHistoryService.createOperaHistory(oldContract, contracts);
         if (Objects.nonNull(history)) {
             //保存合同操作记录
             boolean historyResult = contractHistoryService.save(history);
@@ -182,23 +239,16 @@ public class ContractService extends ServiceImpl<ContractsMapper, Contracts> {
                 return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
             }
         }
-
-        if (CollUtil.isNotEmpty(paymentList)) {
-            //修改付款信息
-            boolean paymentResult = paymentService.modifyBatchById(paymentList);
-            if (!paymentResult) {
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return RestResponse.fail(MessageUtils.get("msg.modify.fail"));
-            }
-        } else {
-            //批量插入收款信息
-            boolean ret = paymentService.insertBatch(paymentList, contracts);
-            if (!ret) {
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return RestResponse.fail(MessageUtils.get("msg.add.batch.fail"));
-            }
-        }
-        return RestResponse.success(null, MessageUtils.get("msg.modify.success"));
+        //查询原有付款列表
+        List<Payment> oldPaymentList = paymentService.paymentList(contractId);
+        //设置合同付款的合同id
+        paymentList.forEach(entry -> {
+            entry.setContractsId(contracts.getId());
+            entry.setCode("PA" + DateUtils.generateCode());
+            entry.setType(contracts.getType());
+        });
+        //修改或删除付款列表
+        return paymentService.modifyPayment(oldPaymentList, paymentList);
     }
 
     /**

+ 84 - 9
lift-business-service/src/main/java/cn/com/ty/lift/business/contract/service/PaymentService.java

@@ -7,13 +7,18 @@ import cn.com.ty.lift.business.contract.dao.entity.model.response.PaymentDetailR
 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.mapper.PaymentMapper;
+import cn.com.ty.lift.business.framework.util.MessageUtils;
 import cn.com.ty.lift.common.utils.DateUtils;
+import cn.com.xwy.boot.web.dto.RestResponse;
+import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author bieao
@@ -29,7 +34,8 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
      * @description 查询付款列表
      * @date 2020/2/20 3:10 下午
      */
-    public IPage<PaymentListResponse> maintenanceList(PaymentRequest request){
+    public IPage<PaymentListResponse> maintenanceList(PaymentRequest request) {
+        request.addDesc("work_date");
         return baseMapper.findProjectByCondition(request.getPage(), request);
     }
 
@@ -39,7 +45,8 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
      * @description 查询大修付款列表
      * @date 2020/4/27 11:15 上午
      */
-    public IPage<PaymentListResponse> capitalList(PaymentRequest request){
+    public IPage<PaymentListResponse> capitalList(PaymentRequest request) {
+        request.addDesc("work_date");
         return baseMapper.findCapitalByCondition(request.getPage(), request);
     }
 
@@ -64,7 +71,7 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
      * @description 查询大修付款详情
      * @date 2020/2/24 10:47 上午
      */
-    public PaymentResponse capitalDetail(PaymentRequest request){
+    public PaymentResponse capitalDetail(PaymentRequest request) {
         PaymentResponse response = new PaymentResponse();
         PaymentDetailResponse detail = baseMapper.queryCapitalDetailById(request);
         List<Payment> paymentList = paymentList(request.getId());
@@ -74,9 +81,9 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
     }
 
     /**
-     * @param payments 付款信息
+     * @param payments  付款信息
      * @param contracts 合同信息
-     * @return  是否成功
+     * @return 是否成功
      * @description 批量插入收款信息
      * @date 2019/12/11 4:34 PM
      */
@@ -92,13 +99,81 @@ public class PaymentService extends ServiceImpl<PaymentMapper, Payment> {
     }
 
     /**
-     * @param paymentList 收款信息列表
+     * @param oldPaymentList 原有付款列表
+     * @param paymentList    修改的付款列表
+     * @return 操作是否成功
+     * @description 新增、删除、修改付款列表
+     * @date 2020/4/29 2:11 下午
+     */
+    public RestResponse modifyPayment(Collection<Payment> oldPaymentList, List<Payment> paymentList) {
+        List<Payment> updateList = new ArrayList<>();
+        List<Payment> deleteList = new ArrayList<>();
+        //新增付款项
+        List<Payment> insertList = paymentList.stream().filter(entry -> Objects.isNull(entry.getId())).collect(Collectors.toList());
+        //比较原有收款项
+        for (Payment payment : oldPaymentList) {
+            Optional<Payment> optional = paymentList.stream().filter(entry -> payment.getId().equals(entry.getId())).findFirst();
+            if (optional.isPresent()) {
+                updateList.add(payment);
+            } else {
+                deleteList.add(payment);
+            }
+        }
+        if (CollUtil.isNotEmpty(deleteList)) {
+            boolean deleteResult = removeByIds(deleteList.stream().map(Payment::getId).collect(Collectors.toList()));
+            if (!deleteResult) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return RestResponse.fail(MessageUtils.get("msg.delete.batch.fail"));
+            }
+        }
+        if (CollUtil.isNotEmpty(updateList)) {
+            boolean updateResult = updateBatchById(updateList, updateList.size());
+            if (!updateResult) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return RestResponse.fail(MessageUtils.get("msg.modify.batch.fail"));
+            }
+        }
+        if (CollUtil.isNotEmpty(insertList)) {
+            boolean save = saveBatch(insertList, insertList.size());
+            if (!save) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return RestResponse.fail(MessageUtils.get("msg.add.batch.fail"));
+            }
+        }
+        return RestResponse.fail(MessageUtils.get("msg.modify.success"));
+    }
+
+    /**
+     * @param request 收款信息列表
      * @return 1.成功, 0.失败, 消息描述
      * @description 批量修改收款信息
      * @date 2019/12/11 3:50 PM
      */
-    public boolean modifyBatchById(List<Payment> paymentList) {
-        return updateBatchById(paymentList);
+    public RestResponse modifyBatchById(PaymentRequest request) {
+        List<Payment> paymentList = request.getPaymentList();
+        List<Long> paymentIdList = paymentList.stream().map(Payment::getId).collect(Collectors.toList());
+        //查询原有付款列表
+        Collection<Payment> oldPaymentList = paymentList(paymentIdList);
+        //设置合同付款的合同id
+        paymentList.forEach(entry -> {
+            entry.setContractsId(request.getContractId());
+            entry.setCode("PA" + DateUtils.generateCode());
+            entry.setType(request.getContractType());
+        });
+        return modifyPayment(oldPaymentList, paymentList);
+    }
+
+
+    /**
+     * @param paymentIdList 付款id列表
+     * @return Collection<Payment> 付款列表
+     * @description 根据付款id列表查询付款列表
+     * @date 2020/4/30 1:55 下午
+     */
+    public Collection<Payment> paymentList(List<Long> paymentIdList) {
+        QueryWrapper<Payment> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("id", paymentIdList);
+        return listByIds(paymentIdList);
     }
 
     /**

+ 1 - 0
lift-business-service/src/main/resources/locale/response.properties

@@ -10,6 +10,7 @@ msg.add.batch.success=\u6279\u91CF\u65B0\u589E\u6210\u529F
 msg.add.batch.fail=\u6279\u91CF\u65B0\u589E\u5931\u8D25
 msg.modify.batch.success=\u6279\u91CF\u4FEE\u6539\u6210\u529F
 msg.modify.batch.fail=\u6279\u91CF\u4FEE\u6539\u5931\u8D25
+msg.delete.batch.fail=\u6279\u91CF\u5220\u9664\u5931\u8D25
 msg.limit.num=\u5F53\u524D\u7535\u68AF\u53F0\u91CF\u5927\u4E8E\u4F01\u4E1A\u8BBE\u7F6E\u7535\u68AF\u53F0\u91CF
 msg.param.empty=\u53C2\u6570\u4E0D\u80FD\u4E3A\u7A7A
 msg.lift.exist=\u516C\u53F8\u4E0B\u5DF2\u6709\u6B64\u7535\u68AF\uFF0C\u4E0D\u80FD\u91CD\u590D\u6DFB\u52A0