wujianwei
2025-12-23 880fc56d1342d873a8ed17de3a61afcb194c365e
service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableBillManagementServiceImpl.java
@@ -17,8 +17,11 @@
import com.ruoyi.cwgl.mapper.ReceivableBillManagementMapper;
import com.ruoyi.cwgl.domain.ReceivableBillManagement;
import com.ruoyi.cwgl.domain.ReceivableFeeManagement;
import com.ruoyi.cwgl.service.IReceivableBillManagementService;
import com.ruoyi.cwgl.service.IReceivableFeeManagementService;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.ServiceException;
/**
 * 应收账单管理Service业务层处理
@@ -33,6 +36,9 @@
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    @Resource
    private ReceivableBillManagementMapper receivableBillManagementMapper;
    @Resource
    private IReceivableFeeManagementService receivableFeeManagementService;
    /**
@@ -179,4 +185,48 @@
    {
        return receivableBillManagementMapper.deleteReceivableBillManagementById(id);
    }
    /**
     * 作废应收账单管理记录
     *
     * @param id 应收账单管理ID
     * @return 结果
     */
    @Override
    public int voidReceivableBillManagement(Integer id) {
        // 1. 查询应收账单记录
        ReceivableBillManagement billManagement = receivableBillManagementMapper.selectReceivableBillManagementById(id);
        if (billManagement == null) {
            throw new ServiceException("应收账单记录不存在");
        }
        // 2. 判断状态是否为0(未结算),只有状态为0才能作废
        if (!"0".equals(billManagement.getStatus())) {
            throw new ServiceException("只有状态为未结算的账单才能作废");
        }
        // 3. 设置状态为作废
        billManagement.setStatus("2");
        billManagement.setUpdateTime(DateUtils.getNowDate());
        // 4. 更新应收账单记录
        int result = receivableBillManagementMapper.updateReceivableBillManagement(billManagement);
        // 5. 如果更新成功,清除关联应收费用的账单编号并更新状态
        if (result > 0) {
            // 获取账单系统编号
            String billSystemNo = billManagement.getSystemNo();
            if (billSystemNo != null && !billSystemNo.trim().isEmpty()) {
                // 查询关联该账单的应收费用记录
                ReceivableFeeManagement queryFee = new ReceivableFeeManagement();
                queryFee.setRelatedBillNo(billSystemNo);
                List<ReceivableFeeManagement> feeList = receivableFeeManagementService.selectReceivableFeeManagementList(queryFee);
                // 清除关联账单编号并将状态改为0(待生成账单)
                receivableFeeManagementService.updateReceivableFeeManagementByRelatedBillNo(billSystemNo);
            }
        }
        return result;
    }
}