wujianwei
2026-01-13 486b62e149dab20c2bbfcdd6f262dd8f88a317d9
service/src/main/java/com/ruoyi/cwgl/service/impl/InvoiceManageServiceImpl.java
@@ -1,8 +1,6 @@
package com.ruoyi.cwgl.service.impl;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.http.HttpUtil;
@@ -17,6 +15,7 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.cwgl.domain.*;
import com.ruoyi.cwgl.domain.dto.CallbackReceiptDto;
import com.ruoyi.cwgl.service.IInvoiceBillDetailService;
import com.ruoyi.cwgl.service.IInvoiceBusinessService;
import com.ruoyi.system.service.ISystemDataNoService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +32,7 @@
import com.ruoyi.common.core.service.BaseService;
import com.ruoyi.cwgl.mapper.InvoiceManageMapper;
import com.ruoyi.cwgl.mapper.InvoiceBillDetailMapper;
import com.ruoyi.cwgl.service.IInvoiceManageService;
import com.ruoyi.cwgl.service.IInvoiceManageLogService;
import com.ruoyi.common.core.text.Convert;
@@ -51,6 +51,12 @@
    private InvoiceManageMapper invoiceManageMapper;
    @Resource
    private InvoiceBillDetailMapper invoiceBillDetailMapper;
    @Resource
    private IInvoiceBillDetailService invoiceBillDetailService;
    @Resource
    private IInvoiceManageLogService invoiceManageLogService;
    @Autowired
@@ -67,7 +73,8 @@
    private String invoicingAddress;
    @Value("${custom.gdpaasApi.returnAddress}")
    private String returnAddress;
    @Autowired
    private IInvoiceBusinessService invoiceBusinessService;
    /**
     * 查询发票管理
     *
@@ -174,7 +181,11 @@
    @Override
    public int updateInvoiceManage(InvoiceManage invoiceManage) {
        invoiceManage.setUpdateTime(DateUtils.getNowDate());
        // 删除原有的发票明细
        invoiceManageMapper.deleteInvoiceDetailByInvoiceManageId(invoiceManage.getId());
        // 删除原有的发票业务商品明细
        invoiceBillDetailService.deleteInvoiceBillDetailByInvoiceManageId(invoiceManage.getId());
        // 插入新的明细记录
        insertInvoiceDetail(invoiceManage);
        int rows = invoiceManageMapper.updateInvoiceManage(invoiceManage);
@@ -263,6 +274,20 @@
                invoiceManageMapper.batchInvoiceDetail(list);
            }
        }
        // 新增发票业务商品明细信息
        List<InvoiceBillDetail> invoiceBillDetails = invoiceManage.getInvoiceBillDetails();
        if (StringUtils.isNotNull(invoiceBillDetails)) {
            List<InvoiceBillDetail> billDetailList = new ArrayList<InvoiceBillDetail>();
            for (InvoiceBillDetail invoiceBillDetail : invoiceBillDetails) {
                invoiceBillDetail.setInvoiceManageId(id);
                invoiceBillDetail.setCreateTime(new Date());
                billDetailList.add(invoiceBillDetail);
            }
            if (billDetailList.size() > 0) {
                invoiceBillDetailMapper.insertInvoiceBillDetailBatch(billDetailList);
            }
        }
    }
    /**
@@ -310,7 +335,7 @@
    }
    @Override
    public AjaxResult applyInvoice(Integer id, List<InvoiceBillDetail> invoiceBillDetails) {
    public AjaxResult applyInvoice(Integer id) {
        InvoiceManage invoiceManage = selectInvoiceManageById(id);
        if (invoiceManage == null) {
            throw new ServiceException("发票记录不存在");
@@ -319,13 +344,16 @@
            throw new ServiceException("请勿重复开票");
        }
        List<InvoiceDetail> invoiceDetailList = invoiceManage.getInvoiceDetailList();
        if (CollectionUtil.isEmpty(invoiceDetailList)) {
            throw new ServiceException("收费明细无数据");
        List<InvoiceBillDetail> invoiceBillDetails = invoiceManage.getInvoiceBillDetails();
        if (CollectionUtil.isEmpty(invoiceBillDetails)) {
            throw new ServiceException("商品明细无数据无法开发票");
        }
        componentInvoice(invoiceManage.getInvoiceNo(),"FP",invoiceManage,invoiceBillDetails);
        return AjaxResult.success("申请开票成功");
        // 记录申请开票日志
        recordApplyInvoiceLog(invoiceManage);
        return  componentInvoice(invoiceManage.getInvoiceNo(),"FP",invoiceManage,invoiceBillDetails);
    }
    public AjaxResult componentInvoice(String orderNo, String businessType, InvoiceManage invoiceManage, List<InvoiceBillDetail> invoiceBillDetails) {
@@ -358,8 +386,8 @@
        for (InvoiceBillDetail billingDetail : invoiceBillDetails) {
            InvoiceDetailApi invoiceDetail = new InvoiceDetailApi();
            invoiceDetail.setGoodsName(invoiceDetail.getGoodsName());
            invoiceDetail.setGoodsCode(billingDetail.getGoodsCode());
            invoiceDetail.setGoodsName(billingDetail.getGoodsName());
            invoiceDetail.setWithTaxFlag(billingDetail.getWithTaxFlag().toString());
            invoiceDetail.setTaxRate("0.06");
@@ -373,7 +401,10 @@
        order.setInvoiceDetail(invoiceDetailList);
        invoicingVo.setOrder(order);
        String body = JSONObject.toJSONString(invoicingVo);
        String json = HttpUtil.post(invoicingAddress + "?businessType=" + businessType + "&returnUrl=" + returnAddress, body);
        String urlString = invoicingAddress + "?businessType=" + businessType + "&returnUrl=" + returnAddress;
        logger.info("请求body{}",body);
        logger.info("请求地址{}",urlString);
        String json = HttpUtil.post(urlString, body);
        if (json == null) {
            logger.info("开票失败");
@@ -381,7 +412,7 @@
        }
        JSONObject jsonObject = JSONObject.parseObject(json);
        String code = jsonObject.getString("code");
        logger.info("开票返回{}",jsonObject);
        String invoiceSerialNum = null;
        InvoiceBusiness record = new InvoiceBusiness();
        record.setReqData(JSONObject.toJSONString(invoicingVo));
@@ -395,8 +426,11 @@
            logger.info("开票成功发票序列号为{}", invoiceSerialNum);
            record.setInvoiceSerialNum(invoiceSerialNum);
            record.setInvoiceManageId(invoiceManage.getId());
            invoiceBusinessService.insertInvoiceBusiness(record);
            return AjaxResult.success();
        }
        return AjaxResult.error("开票失败");
    }
@@ -470,3 +504,6 @@
        }
    }
}