| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.annotation.Validated; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void updateReceivablePlanReceipted(Long id, java.math.BigDecimal receiptPrice, |
| | | java.time.LocalDateTime actualTime) { |
| | | CrmReceivablePlanDO plan = validateReceivablePlanExists(id); |
| | | BigDecimal receiptedPrice = plan.getReceiptedPrice() == null ? java.math.BigDecimal.ZERO : plan.getReceiptedPrice(); |
| | | receiptedPrice = receiptedPrice.add(receiptPrice == null ? java.math.BigDecimal.ZERO : receiptPrice); |
| | | // 状态:0未回款 10部分回款 20已回清 |
| | | int status = receiptedPrice.compareTo(plan.getPrice()) >= 0 ? 20 : (receiptedPrice.signum() > 0 ? 10 : 0); |
| | | receivablePlanMapper.updateById(new CrmReceivablePlanDO().setId(id) |
| | | .setReceiptedPrice(receiptedPrice).setStatus(status) |
| | | .setActualTime(actualTime != null ? actualTime : java.time.LocalDateTime.now())); |
| | | } |
| | | |
| | | @Override |
| | | public void resetReceivablePlanReceipted(Long id) { |
| | | validateReceivablePlanExists(id); |
| | | // updateById 会忽略 null,需显式清空实际回款时间 |
| | | receivablePlanMapper.update(null, |
| | | new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper<CrmReceivablePlanDO>() |
| | | .eq(CrmReceivablePlanDO::getId, id) |
| | | .set(CrmReceivablePlanDO::getReceiptedPrice, java.math.BigDecimal.ZERO) |
| | | .set(CrmReceivablePlanDO::getStatus, 0) |
| | | .set(CrmReceivablePlanDO::getActualTime, null)); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @LogRecord(type = CRM_RECEIVABLE_PLAN_TYPE, subType = CRM_RECEIVABLE_PLAN_DELETE_SUB_TYPE, bizNo = "{{#id}}", |
| | | success = CRM_RECEIVABLE_PLAN_DELETE_SUCCESS) |