gaoluyang
3 天以前 d39e4f7d839167c16425086dfa2f8747bccfdff9
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
@@ -24,6 +24,7 @@
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;
@@ -130,6 +131,31 @@
    }
    @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)