李白
2026-06-02 08095d9847f0cd612c3007f860e57e967278562e
platformx-business-finance-biz/src/main/java/com/by4cloud/platformx/business/service/impl/InvoiceServiceImpl.java
@@ -12,6 +12,8 @@
import com.by4cloud.platformx.business.entity.ContractOutBound;
import com.by4cloud.platformx.business.entity.SaleCredit;
import com.by4cloud.platformx.business.entity.invoice.*;
import com.by4cloud.platformx.business.entity.invoice.vo.InvoicingVo;
import com.by4cloud.platformx.business.entity.invoice.vo.RedConfirmVo;
import com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultItemMapper;
import com.by4cloud.platformx.business.invoice.mapper.FpInvoiceResultMapper;
import com.by4cloud.platformx.business.invoice.service.BipInvoiceService;
@@ -19,11 +21,11 @@
import com.by4cloud.platformx.business.invoice.service.FpInvoiceResultService;
import com.by4cloud.platformx.business.service.InvoiceService;
import com.by4cloud.platformx.business.service.SaleCreditService;
import com.by4cloud.platformx.business.vo.ContractOutBoundVo;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
@@ -86,6 +88,11 @@
    @Override
    public InvoicingVo toGetByCompare(SaleCredit saleCredit, List<ContractOutBound> contractOutBoundList) {
        return getByCompare(saleCredit,contractOutBoundList);
    }
    @Override
    public InvoicingVo toGetByCompareByVo(SaleCredit saleCredit, List<ContractOutBoundVo> contractOutBoundList) {
        return getByCompareVo(saleCredit,contractOutBoundList);
    }
    /**
@@ -409,6 +416,62 @@
        return invoicingVo;
    }
    private InvoicingVo getByCompareVo(SaleCredit saleCredit, List<ContractOutBoundVo> contractOutBoundList){
        InvoicingVo invoicingVo = new InvoicingVo();
        invoicingVo.setSaleCreditId(saleCredit.getId());
        invoicingVo.setEntrustCode(saleCredit.getEntrustCode());
        //销方
        invoicingVo.setTaxNo(saleCredit.getCreditCodeB());
        invoicingVo.setLedgerName(saleCredit.getPartyB());
        invoicingVo.setOrgCode(saleCredit.getCreditCodeB());
        invoicingVo.setFormatGenerate(false);
        invoicingVo.setIsSplit(false);
        invoicingVo.setFormatPushType(false);
        invoicingVo.setTaxUserName(saleCredit.getContactPhoneB());
        InvoicingVo.InvoicingVoInfo invoicingVoInfo = new InvoicingVo.InvoicingVoInfo();
        invoicingVoInfo.setInvoiceTypeCode("01");
        invoicingVoInfo.setSerialNo("MX_ZPP_" + System.currentTimeMillis());
        invoicingVoInfo.setDrawer(saleCredit.getContactPhoneB());
        Map<String, Object> ext = new HashMap<>();
        ext.put("htbh",saleCredit.getContractNo());
        invoicingVoInfo.setExt(ext);
        invoicingVoInfo.setSystemName("xx销售管理信息系统");
        List<InvoicingVo.InvoiceDetail> details = new ArrayList<>();
        int i = 0;
        for (ContractOutBound outBoundVo : contractOutBoundList){
            i++;
            InvoicingVo.InvoiceDetail invoiceDetail = new InvoicingVo.InvoiceDetail();
            invoiceDetail.setGoodsLineNo(i);
            invoiceDetail.setGoodsTaxRate(outBoundVo.getTaxRate());
            invoiceDetail.setGoodsType(outBoundVo.getSubjectMatterName());
            invoiceDetail.setGoodsUnit(outBoundVo.getUnit());
            invoiceDetail.setGoodsQuantity(outBoundVo.getOutBoundNum());
            invoiceDetail.setGoodsPrice(outBoundVo.getUnitPrice());
            invoiceDetail.setGoodsTotalPrice(outBoundVo.getTotalPrice());
            invoiceDetail.setGoodsTotalTax(outBoundVo.getTotalTax());
            details.add(invoiceDetail);
        }
        //购方
        invoicingVoInfo.setBuyerTaxNo(saleCredit.getCreditCodeA());
        invoicingVoInfo.setBuyerName(saleCredit.getPartyA());
        invoicingVoInfo.setInvoiceTotalPrice(saleCredit.getTotalAmount());
        //invoicingVoInfo.setInvoiceTotalTax(new BigDecimal(allTax).setScale(2,BigDecimal.ROUND_HALF_UP));
        invoicingVoInfo.setInvoiceTotalPriceTax(saleCredit.getTotalTax());
        invoicingVoInfo.setBuyerBankName(saleCredit.getBankNameB());
        invoicingVoInfo.setBuyerBankNumber(saleCredit.getBankAccountB());
        //invoicingVoInfo.setBuyerAddress(.getBuyerAddress());
        invoicingVoInfo.setBuyerTelphone(saleCredit.getContactPhoneA());
        invoicingVoInfo.setInvoiceDetailsList(details);
        invoicingVo.setData(invoicingVoInfo);
        return invoicingVo;
    }
    //@Async("myExecutor")
    public Map<String, Object> redTicket(SaleCredit saleCredit) {
        System.out.println("进入异步方法");