|
@@ -1,15 +1,29 @@
|
|
package com.winhc.repal.service.impl;
|
|
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.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.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.repository.RepalChangeRecordMapper;
|
|
|
|
+import com.winhc.repal.service.RepalBillService;
|
|
import com.winhc.repal.service.RepalChangeRecordService;
|
|
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.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @description RepalChangeRecord 接口实现类
|
|
* @description RepalChangeRecord 接口实现类
|
|
@@ -22,8 +36,98 @@ public class RepalChangeRecordServiceImpl extends ServiceImpl<RepalChangeRecordM
|
|
@Autowired
|
|
@Autowired
|
|
private RepalChangeRecordMapper repalChangeRecordMapper;
|
|
private RepalChangeRecordMapper repalChangeRecordMapper;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private RepalBillService repalBillService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private RepalGroupMemberService repalGroupMemberService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<RepalChangeRecord> getHomeRecord(Long userId, Long repalBookId, LocalDate start, LocalDate end) {
|
|
public List<RepalChangeRecord> getHomeRecord(Long userId, Long repalBookId, LocalDate start, LocalDate end) {
|
|
return repalChangeRecordMapper.getHomeRecord(userId, repalBookId, start, 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;
|
|
|
|
+ }
|
|
}
|
|
}
|