wujianwei
19 小时以前 3ca3c9dba442c5fbf02b3f8bf6b649d077207983
api/src/main/java/com/ruoyi/api/third/controller/ReceivableBillApiController.java
@@ -2,12 +2,8 @@
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.cwgl.domain.PayableBillManagement;
import com.ruoyi.cwgl.domain.PayableFeeDetail;
import com.ruoyi.cwgl.domain.PayableFeeManagement;
import com.ruoyi.cwgl.domain.ReceivableBillManagement;
import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
import com.ruoyi.cwgl.domain.ReceivableFeeManagement;
import com.ruoyi.cwgl.domain.*;
import com.ruoyi.cwgl.domain.dto.BillAuditDto;
import com.ruoyi.cwgl.domain.dto.PayableBillApiDto;
import com.ruoyi.cwgl.domain.dto.ReceivableBillApiDto;
import com.ruoyi.cwgl.service.IPayableBillManagementService;
@@ -82,9 +78,9 @@
            
            result.put("status", "0000");
            result.put("message", "应收账单添加成功");
            result.put("billNo", billManagement.getSystemNo());
            result.put("sourceSystemId", billManagement.getId().toString());
            
            logger.info("应收账单添加成功,账单编号:{}", billManagement.getSystemNo());
            logger.info("应收账单添加成功,来源账单id:{}", billManagement.getId());
            
        } catch (Exception e) {
            logger.error("应收账单添加失败:", e);
@@ -185,6 +181,8 @@
        billManagement.setSettlementCategory(billDto.getSettlementCategory());
        billManagement.setSettlementPeriod(billDto.getSettlementPeriod());
        billManagement.setStatus(billDto.getStatus() != null ? billDto.getStatus() : "draft");
        billManagement.setAuditStatus(billDto.getAuditStatus() != null ? billDto.getAuditStatus() : 0);
        billManagement.setSourceSystemId(billDto.getSourceSystemId());
        billManagement.setRemark(billDto.getRemark());
        billManagement.setCreateTime(DateUtils.getNowDate());
        billManagement.setCreateBy("api_system");
@@ -272,25 +270,35 @@
            // 使用Map存储系统编号和ID的映射关系
            Map<String, Integer> systemNoToIdMap = new HashMap<>();
            
            // 批量插入后,ID已经自动设置到对象的id属性中
            for (ReceivableFeeManagement feeManagement : feeManagementList) {
                    // 假设插入后可以通过某种方式获取ID,这里简化处理
                    // 实际项目中可能需要根据业务逻辑获取ID
                    systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
                systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
            }
            
            // 设置费用明细的关联ID
            // 重新构建费用明细列表,正确设置关联ID
            List<ReceivableFeeDetail> finalFeeDetailList = new ArrayList<>();
            for (int i = 0; i < feeManagementList.size(); i++) {
                ReceivableFeeManagement feeManagement = feeManagementList.get(i);
            int detailIndex = 0;
            for (ReceivableFeeManagement feeManagement : feeManagementList) {
                Integer feeId = systemNoToIdMap.get(feeManagement.getSystemNo());
                
                if (feeId != null && i < feeDetailList.size()) {
                    ReceivableFeeDetail feeDetail = feeDetailList.get(i);
                    feeDetail.setReceivableFeeId(feeId);
                    finalFeeDetailList.add(feeDetail);
                if (feeId != null) {
                    // 获取该费用管理记录对应的费用明细数量
                    int detailCount = 0;
                    for (ReceivableBillApiDto.ReceivableFeeDto feeDto : fees) {
                        if (feeDto.getDocumentNo().equals(feeManagement.getDocumentNo())) {
                            detailCount = feeDto.getFeeDetails() != null ? feeDto.getFeeDetails().size() : 0;
                            break;
                        }
                    }
                    // 设置对应数量的费用明细的关联ID
                    for (int i = 0; i < detailCount && detailIndex < feeDetailList.size(); i++) {
                        ReceivableFeeDetail feeDetail = feeDetailList.get(detailIndex);
                        feeDetail.setReceivableFeeId(feeId);
                        finalFeeDetailList.add(feeDetail);
                        detailIndex++;
                    }
                }
            }
            
@@ -326,9 +334,9 @@
            
            result.put("status", "0000");
            result.put("message", "应付账单添加成功");
            result.put("billNo", billManagement.getSystemNo());
            result.put("sourceSystemId", billManagement.getId().toString());
            
            logger.info("应付账单添加成功,账单编号:{}", billManagement.getSystemNo());
            logger.info("应付账单添加成功,来源账单id:{}", billManagement.getId());
            
        } catch (Exception e) {
            logger.error("应付账单添加失败:", e);
@@ -420,6 +428,8 @@
        
        // 设置其他信息
        billManagement.setStatus(billDto.getStatus() != null ? billDto.getStatus() : "draft");
        billManagement.setAuditStatus(billDto.getAuditStatus() != null ? billDto.getAuditStatus() : 0);
        billManagement.setSourceSystemId(billDto.getSourceSystemId());
        billManagement.setRemark(billDto.getRemark());
        billManagement.setCreateTime(DateUtils.getNowDate());
        billManagement.setCreateBy("api_system");
@@ -461,6 +471,7 @@
            feeManagement.setBusinessTime(feeDto.getBusinessTime());
            feeManagement.setPayableConfirmTime(feeDto.getPayableConfirmTime());
            feeManagement.setPayableAmount(feeDto.getPayableAmount());
            feeManagement.setPayableAmountStr(feeDto.getPayableAmountStr());
            feeManagement.setStatus(feeDto.getStatus() != null ? feeDto.getStatus() : "confirmed");
            feeManagement.setRemark(feeDto.getRemark());
            feeManagement.setCreateTime(DateUtils.getNowDate());
@@ -504,25 +515,35 @@
            // 使用Map存储系统编号和ID的映射关系
            Map<String, Integer> systemNoToIdMap = new HashMap<>();
            
            // 批量保存费用管理信息并获取ID
            // 批量插入后,ID已经自动设置到对象的id属性中
            for (PayableFeeManagement feeManagement : feeManagementList) {
                    // 假设插入后可以通过某种方式获取ID,这里简化处理
                    // 实际项目中可能需要根据业务逻辑获取ID
                    systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
                systemNoToIdMap.put(feeManagement.getSystemNo(), feeManagement.getId());
            }
            
            // 设置费用明细的关联ID
            // 重新构建费用明细列表,正确设置关联ID
            List<PayableFeeDetail> finalFeeDetailList = new ArrayList<>();
            for (int i = 0; i < feeManagementList.size(); i++) {
                PayableFeeManagement feeManagement = feeManagementList.get(i);
            int detailIndex = 0;
            for (PayableFeeManagement feeManagement : feeManagementList) {
                Integer feeId = systemNoToIdMap.get(feeManagement.getSystemNo());
                
                if (feeId != null && i < feeDetailList.size()) {
                    PayableFeeDetail feeDetail = feeDetailList.get(i);
                    feeDetail.setPayableFeeId(feeId);
                    finalFeeDetailList.add(feeDetail);
                if (feeId != null) {
                    // 获取该费用管理记录对应的费用明细数量
                    int detailCount = 0;
                    for (PayableBillApiDto.PayableFeeDto feeDto : fees) {
                        if (feeDto.getDocumentNo().equals(feeManagement.getDocumentNo())) {
                            detailCount = feeDto.getFeeDetails() != null ? feeDto.getFeeDetails().size() : 0;
                            break;
                        }
                    }
                    // 设置对应数量的费用明细的关联ID
                    for (int i = 0; i < detailCount && detailIndex < feeDetailList.size(); i++) {
                        PayableFeeDetail feeDetail = feeDetailList.get(detailIndex);
                        feeDetail.setPayableFeeId(feeId);
                        finalFeeDetailList.add(feeDetail);
                        detailIndex++;
                    }
                }
            }
            
@@ -535,6 +556,86 @@
    }
    /**
     * 应收账单作废接口
     * 其他系统调用此接口作废应收账单
     * @param request 请求数据
     * @return 操作结果
     */
    @PostMapping("/cancelBill")
    public Map<String, String> cancelReceivableBill(@RequestBody Map<String, Integer> request) {
        logger.info("接收应收账单作废请求:{}", request);
        Map<String, String> result = new HashMap<>();
        try {
            Integer sourceSystemId = request.get("sourceSystemId");
            if (sourceSystemId == null) {
                throw new IllegalArgumentException("sourceSystemId不能为空");
            }
            // 调用作废方法
            int rows = receivableBillManagementService. voidReceivableBillManagement(sourceSystemId);
            if (rows > 0) {
                result.put("status", "0000");
                result.put("message", "应收账单作废成功");
                logger.info("应收账单作废成功,sourceSystemId:{}", sourceSystemId);
            } else {
                result.put("status", "9999");
                result.put("message", "应收账单作废失败,未找到对应记录");
                logger.warn("应收账单作废失败,未找到对应记录,sourceSystemId:{}", sourceSystemId);
            }
        } catch (Exception e) {
            logger.error("应收账单作废失败:", e);
            result.put("status", "9999");
            result.put("message", "应收账单作废失败:" + e.getMessage());
        }
        return result;
    }
    /**
     * 应付账单作废接口
     * 其他系统调用此接口作废应付账单
     * @param request 请求数据
     * @return 操作结果
     */
    @PostMapping("/cancelPayableBill")
    public Map<String, String> cancelPayableBill(@RequestBody Map<String, Integer> request) {
        logger.info("接收应付账单作废请求:{}", request);
        Map<String, String> result = new HashMap<>();
        try {
            Integer sourceSystemId = request.get("sourceSystemId");
            if (sourceSystemId == null) {
                throw new IllegalArgumentException("sourceSystemId不能为空");
            }
            // 调用作废方法
            int rows = payableBillManagementService.voidPayableBillManagement(sourceSystemId);
            if (rows > 0) {
                result.put("status", "0000");
                result.put("message", "应付账单作废成功");
                logger.info("应付账单作废成功,sourceSystemId:{}", sourceSystemId);
            } else {
                result.put("status", "9999");
                result.put("message", "应付账单作废失败,未找到对应记录");
                logger.warn("应付账单作废失败,未找到对应记录,sourceSystemId:{}", sourceSystemId);
            }
        } catch (Exception e) {
            logger.error("应付账单作废失败:", e);
            result.put("status", "9999");
            result.put("message", "应付账单作废失败:" + e.getMessage());
        }
        return result;
    }
    /**
     * 健康检查接口
     * @return 健康状态
     */