|
@@ -9,6 +9,7 @@ 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.enums.RepalBillStatusEnum;
|
|
|
import com.winhc.repal.model.dto.ReturnedEditDTO;
|
|
|
import com.winhc.repal.repository.RepalChangeRecordMapper;
|
|
|
import com.winhc.repal.service.RepalBillService;
|
|
@@ -50,6 +51,7 @@ public class RepalChangeRecordServiceImpl extends ServiceImpl<RepalChangeRecordM
|
|
|
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean updateReturned(ReturnedEditDTO dto) {
|
|
|
if (dto.getMoney().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
throw new CommonException(CodeMsg.FAILED, "金额必须大于0");
|
|
@@ -58,13 +60,21 @@ public class RepalChangeRecordServiceImpl extends ServiceImpl<RepalChangeRecordM
|
|
|
if (Objects.isNull(repalChangeRecord)) {
|
|
|
throw new CommonException(CodeMsg.FAILED, "未查到对应的账款");
|
|
|
}
|
|
|
+ if (repalChangeRecord.getTransMoney().compareTo(dto.getMoney()) == 0) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
RepalBill repalBill = repalBillService.getById(repalChangeRecord.getRepalBillId());
|
|
|
+ if (dto.getMoney().compareTo(repalChangeRecord.getTransMoney()) > 0) {
|
|
|
+ if (dto.getMoney().subtract(repalChangeRecord.getTransMoney()).compareTo(repalBill.getReceivable()) > 0) {
|
|
|
+ throw new CommonException(CodeMsg.FAILED, "金额错误");
|
|
|
+ }
|
|
|
+ }
|
|
|
List<RepalChangeRecord> recordList = this.list(Wrappers.lambdaQuery(RepalChangeRecord.class)
|
|
|
.eq(RepalChangeRecord::getRepalBillId, repalBill.getId())
|
|
|
.eq(RepalChangeRecord::getDeleted, DeletedStatusEnum.NORMAL.getCode())
|
|
|
.ge(RepalChangeRecord::getId, repalChangeRecord.getId()));
|
|
|
if (CollUtil.isEmpty(recordList)) {
|
|
|
- return true;
|
|
|
+ throw new CommonException(CodeMsg.FAILED, "未查到对应的账款");
|
|
|
}
|
|
|
// 单独修改一条,后续的重新计算
|
|
|
RepalGroupMember member = repalGroupMemberService.getMemberByUserId(UserContextUtil.getUser().getUserId());
|
|
@@ -80,6 +90,34 @@ public class RepalChangeRecordServiceImpl extends ServiceImpl<RepalChangeRecordM
|
|
|
recordList.get(i).setAfterMoney(recordList.get(i).getPreMoney().subtract(recordList.get(i).getTransMoney()));
|
|
|
}
|
|
|
this.saveOrUpdateBatch(recordList);
|
|
|
+ // 修改账款状态或者金额
|
|
|
+ if (dto.getMoney().compareTo(repalChangeRecord.getTransMoney()) > 0) {
|
|
|
+ // 应收金额调小
|
|
|
+ BigDecimal changeMoney = dto.getMoney().subtract(repalChangeRecord.getTransMoney());
|
|
|
+ repalBill.setReceivable(repalBill.getReceivable().subtract(changeMoney));
|
|
|
+ repalBill.setReceipt(repalBill.getReceipt().add(changeMoney));
|
|
|
+ if (BigDecimal.ZERO.compareTo(repalBill.getReceivable()) == 0) {
|
|
|
+ repalBill.setRepalBillStatus(RepalBillStatusEnum.SUCCESS.getCode());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 应收金额调大
|
|
|
+ BigDecimal changeMoney = repalChangeRecord.getTransMoney().subtract(dto.getMoney());
|
|
|
+ repalBill.setReceivable(repalBill.getReceivable().add(changeMoney));
|
|
|
+ repalBill.setReceipt(repalBill.getReceipt().subtract(changeMoney));
|
|
|
+ if (RepalBillStatusEnum.SUCCESS.getCode().equals(repalBill.getRepalBillStatus())) {
|
|
|
+ if (LocalDate.now().isBefore(repalBill.getEndDate())) {
|
|
|
+ repalBill.setRepalBillStatus(RepalBillStatusEnum.OVERDUE.getCode());
|
|
|
+ }
|
|
|
+ if (LocalDate.now().isAfter(repalBill.getEndDate())) {
|
|
|
+ repalBill.setRepalBillStatus(RepalBillStatusEnum.PROGRESSING.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ repalBillService.update(Wrappers.lambdaUpdate(RepalBill.class)
|
|
|
+ .eq(RepalBill::getId, repalBill.getId())
|
|
|
+ .set(RepalBill::getRepalBillStatus, repalBill.getRepalBillStatus())
|
|
|
+ .set(RepalBill::getReceivable, repalBill.getReceivable())
|
|
|
+ .set(RepalBill::getReceipt, repalBill.getReceipt()));
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -107,10 +145,20 @@ public class RepalChangeRecordServiceImpl extends ServiceImpl<RepalChangeRecordM
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean delReturnedById(Long repalChangeRecordId) {
|
|
|
RepalChangeRecord repalChangeRecord = this.getById(repalChangeRecordId);
|
|
|
RepalBill repalBill = repalBillService.getById(repalChangeRecord.getRepalBillId());
|
|
|
this.calculateMoney(repalChangeRecordId, repalBill.getId());
|
|
|
+ repalBill.setRepalBillStatus(LocalDate.now().isBefore(repalBill.getEndDate()) ? RepalBillStatusEnum.OVERDUE.getCode() : RepalBillStatusEnum.PROGRESSING.getCode());
|
|
|
+ repalBill.setReceipt(repalBill.getReceipt().subtract(repalChangeRecord.getTransMoney()));
|
|
|
+ repalBill.setReceivable(repalBill.getReceivable().add(repalChangeRecord.getTransMoney()));
|
|
|
+ // 删除后一定是进行中或者已逾期
|
|
|
+ repalBillService.update(Wrappers.lambdaUpdate(RepalBill.class)
|
|
|
+ .eq(RepalBill::getId, repalBill.getId())
|
|
|
+ .set(RepalBill::getRepalBillStatus, repalBill.getRepalBillStatus())
|
|
|
+ .set(RepalBill::getReceivable, repalBill.getReceivable())
|
|
|
+ .set(RepalBill::getReceipt, repalBill.getReceipt()));
|
|
|
return true;
|
|
|
}
|
|
|
|