Ver Fonte

修改回款,删除回款

xda há 2 anos atrás
pai
commit
03e135074a

+ 16 - 0
src/main/java/com/winhc/repal/controller/RepalBillController.java

@@ -6,6 +6,7 @@ import com.winhc.common.model.base.VOPage;
 import com.winhc.repal.model.dto.*;
 import com.winhc.repal.model.vo.*;
 import com.winhc.repal.service.RepalBillService;
+import com.winhc.repal.service.RepalChangeRecordService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,6 +27,9 @@ public class RepalBillController {
     @Autowired
     private RepalBillService repalBillService;
 
+    @Autowired
+    private RepalChangeRecordService repalChangeRecordService;
+
 
     @ApiOperation("获取账本下的账款列表(应收or应付)")
     @RequestMapping(value = "/page", method = RequestMethod.GET)
@@ -93,6 +97,18 @@ public class RepalBillController {
         return BeanResponse.success(CodeMsg.SUCCESS, repalBillService.getReturnedBillPage(dto));
     }
 
+    @ApiOperation("编辑回款")
+    @RequestMapping(value = "/returned/edit", method = RequestMethod.POST)
+    public BeanResponse<Boolean> updateReturned(@RequestBody ReturnedEditDTO dto) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalChangeRecordService.updateReturned(dto));
+    }
+
+    @ApiOperation("删除回款")
+    @RequestMapping(value = "/returned/del{repalChangeRecordId}", method = RequestMethod.POST)
+    public BeanResponse<Boolean> delReturnedById(@PathVariable("repalChangeRecordId") Long repalChangeRecordId) {
+        return BeanResponse.success(CodeMsg.SUCCESS, repalChangeRecordService.delReturnedById(repalChangeRecordId));
+    }
+
     @ApiOperation("回款管理详情")
     @RequestMapping(value = "/returned/detail/{repalChangeRecordId}", method = RequestMethod.GET)
     public BeanResponse<ReturnedBillDetailVO> getReturnedBillDetail(@PathVariable("repalChangeRecordId") Long repalChangeRecordId) {

+ 23 - 0
src/main/java/com/winhc/repal/model/dto/ReturnedEditDTO.java

@@ -0,0 +1,23 @@
+package com.winhc.repal.model.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: ReturnedEditDTO
+ * @Author: xda
+ * @Date: 2022/6/8 15:40
+ */
+@Data
+@ApiModel("ReturnedEditDTO")
+public class ReturnedEditDTO {
+
+    @ApiModelProperty("金额变动记录id")
+    private Long repalChangeRecordId;
+
+    @ApiModelProperty("金额,string")
+    private BigDecimal money;
+}

+ 3 - 0
src/main/java/com/winhc/repal/model/vo/RepalBillDetailVO.java

@@ -132,6 +132,9 @@ public class RepalBillDetailVO {
         @ApiModelProperty("操作人name")
         private String name;
 
+        @ApiModelProperty("变更记录id")
+        private Long repalChangeRecordId;
+
 
 
     }

+ 41 - 0
src/main/java/com/winhc/repal/service/RepalChangeRecordService.java

@@ -2,8 +2,10 @@ package com.winhc.repal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.winhc.repal.entity.RepalChangeRecord;
+import com.winhc.repal.model.dto.ReturnedEditDTO;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -31,4 +33,43 @@ public interface RepalChangeRecordService extends IService<RepalChangeRecord> {
                                           LocalDate start,
                                           LocalDate end);
 
+
+    /**
+     * 修改回款
+     * @param dto dto
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/6/8 15:43
+     */
+    Boolean updateReturned(ReturnedEditDTO dto);
+
+
+    /**
+     * 删除回款
+     * @param repalBillId repalBillId 
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/6/8 15:49 
+     */
+    Boolean delReturnedByBillId(Long repalBillId);
+
+    /**
+     * 删除账本回款
+     * @param repalBookId repalBookId
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/6/8 16:03
+     */
+    Boolean delReturnedByBookId(Long repalBookId);
+
+    /**
+     * 删除回款记录
+     * @param repalChangeRecordId repalChangeRecordId
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/6/8 16:36
+     */
+    Boolean delReturnedById(Long repalChangeRecordId);
+
+
 }

+ 3 - 0
src/main/java/com/winhc/repal/service/impl/RepalBillServiceImpl.java

@@ -425,6 +425,7 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
                 billMoneyChange.setChangeTime(t.getTimeCreated());
                 billMoneyChange.setName(t.getOperUserName());
                 billMoneyChange.setChangeAmt(t.getTransMoney().setScale(2).toString());
+                billMoneyChange.setRepalChangeRecordId(t.getId());
                 return billMoneyChange;
             }).collect(Collectors.toList()));
         } else {
@@ -445,6 +446,8 @@ public class RepalBillServiceImpl extends ServiceImpl<RepalBillMapper, RepalBill
                 .set(RepalBill::getDeleted, DeletedStatusEnum.DELETE.getCode()));
         // 删除关联人
         repalResponsiblePersonService.deletePersonByBillId(dto.getRepalBillId());
+        // 删除回款记录
+        repalChangeRecordService.delReturnedByBillId(dto.getRepalBillId());
         return true;
     }
 

+ 2 - 0
src/main/java/com/winhc/repal/service/impl/RepalBookServiceImpl.java

@@ -117,6 +117,8 @@ public class RepalBookServiceImpl extends ServiceImpl<RepalBookMapper, RepalBook
         }
         // 账款和账款关联责任人也删掉
         repalBillService.deleteRepalBillByBookId(dto.getRepalBookId());
+        // 删除账本回款记录
+        repalChangeRecordService.delReturnedByBookId(dto.getRepalBookId());
         return true;
     }
 

+ 104 - 0
src/main/java/com/winhc/repal/service/impl/RepalChangeRecordServiceImpl.java

@@ -1,15 +1,29 @@
 package com.winhc.repal.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.winhc.common.enums.CodeMsg;
+import com.winhc.common.exception.CommonException;
+import com.winhc.repal.entity.RepalBill;
 import com.winhc.repal.entity.RepalChangeRecord;
+import com.winhc.repal.entity.RepalGroupMember;
+import com.winhc.repal.enums.DeletedStatusEnum;
+import com.winhc.repal.model.dto.ReturnedEditDTO;
 import com.winhc.repal.repository.RepalChangeRecordMapper;
+import com.winhc.repal.service.RepalBillService;
 import com.winhc.repal.service.RepalChangeRecordService;
+import com.winhc.repal.service.RepalGroupMemberService;
+import com.winhc.repal.util.UserContextUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @description RepalChangeRecord 接口实现类
@@ -22,8 +36,98 @@ public class RepalChangeRecordServiceImpl extends ServiceImpl<RepalChangeRecordM
     @Autowired
     private RepalChangeRecordMapper repalChangeRecordMapper;
 
+    @Autowired
+    private RepalBillService repalBillService;
+
+    @Autowired
+    private RepalGroupMemberService repalGroupMemberService;
+
     @Override
     public List<RepalChangeRecord> getHomeRecord(Long userId, Long repalBookId, LocalDate start, LocalDate end) {
         return repalChangeRecordMapper.getHomeRecord(userId, repalBookId, start, end);
     }
+
+
+    @Override
+    public Boolean updateReturned(ReturnedEditDTO dto) {
+        if (dto.getMoney().compareTo(BigDecimal.ZERO) <= 0) {
+            throw new CommonException(CodeMsg.FAILED, "金额必须大于0");
+        }
+        RepalChangeRecord repalChangeRecord = this.getById(dto.getRepalChangeRecordId());
+        if (Objects.isNull(repalChangeRecord)) {
+            throw new CommonException(CodeMsg.FAILED, "未查到对应的账款");
+        }
+        RepalBill repalBill = repalBillService.getById(repalChangeRecord.getRepalBillId());
+        List<RepalChangeRecord> recordList = this.list(Wrappers.lambdaQuery(RepalChangeRecord.class)
+                .eq(RepalChangeRecord::getRepalBillId, repalBill.getId())
+                .eq(RepalChangeRecord::getDeleted, DeletedStatusEnum.NORMAL.getCode())
+                .ge(RepalChangeRecord::getId, dto.getRepalChangeRecordId()));
+        RepalGroupMember member = repalGroupMemberService.getMemberByUserId(UserContextUtil.getUser().getUserId());
+        // 重新计算金额
+        for (int i = 0; i < recordList.size(); i++) {
+            if (i == 0) {
+                recordList.get(i).setOperUserName(member.getMemberUserName());
+                recordList.get(i).setOperUserId(member.getUserId());
+                recordList.get(i).setTransMoney(dto.getMoney());
+            } else {
+                recordList.get(i).setPreMoney(recordList.get(i - 1).getAfterMoney());
+            }
+            recordList.get(i).setAfterMoney(recordList.get(i).getPreMoney().subtract(recordList.get(i).getTransMoney()));
+        }
+        this.saveOrUpdateBatch(recordList);
+        return true;
+    }
+
+
+
+    @Override
+    public Boolean delReturnedByBillId(Long repalBillId) {
+        this.update(Wrappers.lambdaUpdate(RepalChangeRecord.class)
+                .eq(RepalChangeRecord::getId, repalBillId)
+                .set(RepalChangeRecord::getDeleted, DeletedStatusEnum.DELETE.getCode()));
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delReturnedByBookId(Long repalBookId) {
+        List<Long> billIdList = repalBillService.getBillIdListByBookId(repalBookId, null);
+        if (CollUtil.isEmpty(billIdList)) {
+            return true;
+        }
+        for (Long aLong : billIdList) {
+            this.delReturnedByBillId(aLong);
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean delReturnedById(Long repalChangeRecordId) {
+        RepalChangeRecord repalChangeRecord = this.getById(repalChangeRecordId);
+        RepalBill repalBill = repalBillService.getById(repalChangeRecord.getRepalBillId());
+        List<RepalChangeRecord> recordList = this.list(Wrappers.lambdaQuery(RepalChangeRecord.class)
+                .eq(RepalChangeRecord::getRepalBillId, repalBill.getId())
+                .eq(RepalChangeRecord::getDeleted, DeletedStatusEnum.NORMAL.getCode())
+                .ge(RepalChangeRecord::getId, repalChangeRecordId));
+        if (CollUtil.isEmpty(recordList)) {
+            return true;
+        }
+        RepalGroupMember member = repalGroupMemberService.getMemberByUserId(UserContextUtil.getUser().getUserId());
+        // 重新计算金额
+        for (int i = 0; i < recordList.size(); i++) {
+            if (i == 0) {
+                recordList.get(i).setOperUserName(member.getMemberUserName());
+                recordList.get(i).setOperUserId(member.getUserId());
+                recordList.get(i).setDeleted(DeletedStatusEnum.DELETE.getCode());
+            } else if (i == 1) {
+                recordList.get(i).setPreMoney(recordList.get(0).getPreMoney());
+                recordList.get(i).setAfterMoney(recordList.get(i).getPreMoney().subtract(recordList.get(i).getTransMoney()));
+            } else {
+                recordList.get(i).setPreMoney(recordList.get(i - 1).getAfterMoney());
+                recordList.get(i).setAfterMoney(recordList.get(i).getPreMoney().subtract(recordList.get(i).getTransMoney()));
+            }
+        }
+        this.saveOrUpdateBatch(recordList);
+        return true;
+    }
 }

+ 1 - 0
src/main/java/com/winhc/repal/service/impl/RepalCustomerServiceImpl.java

@@ -483,6 +483,7 @@ public class RepalCustomerServiceImpl extends ServiceImpl<RepalCustomerMapper, R
                     billMoneyChange.setChangeTime(t.getTimeCreated());
                     billMoneyChange.setName(t.getOperUserName());
                     billMoneyChange.setChangeAmt(t.getTransMoney().setScale(2).toString());
+                    billMoneyChange.setRepalChangeRecordId(t.getId());
                     return billMoneyChange;
                 }).collect(Collectors.toList()));
             }