diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java index 82861c3f..835a0840 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java @@ -477,4 +477,6 @@ public class BaseTDxRecordInvoice implements Serializable { private String compCode; private String outResource; + private String taxRate; + } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceDetail.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceDetail.java index ae0d8db9..cc9c72af 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceDetail.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceDetail.java @@ -115,4 +115,6 @@ public class BaseTDxRecordInvoiceDetail implements Serializable { */ private String spfwjc; + private String taxCode; + } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java index 3ed04e4e..9531cd34 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java @@ -11,6 +11,7 @@ import com.dxhy.common.enums.FplxEnum; import com.dxhy.common.enums.SNFplxEnum; import com.dxhy.common.util.InvoiceUtil; import com.dxhy.common.util.StringHelper; +import com.dxhy.common.utils.DateUtils; import com.dxhy.common.utils.R; import com.dxhy.common.vo.UserInfo; import com.dxhy.erp.dao.*; @@ -22,6 +23,7 @@ import com.dxhy.erp.entity.kfpt.TokenResponse; import com.dxhy.erp.entity.sdny.InvoiceDetail; import com.dxhy.erp.entity.sdny.InvoiceInfo; import com.dxhy.erp.entity.sdny.SNInvoice; +import com.dxhy.erp.entity.sdny.SNInvoiceDetail; import com.dxhy.erp.entity.sdny.area.Area; import com.dxhy.erp.utils.Base64; import com.dxhy.erp.utils.*; @@ -758,13 +760,30 @@ public class SNPushCheckRecordService extends AbstractServiceAdapter { log.error("补充查验失败,errormsg:{}", e.getMessage()); } - if (checkInvoiceResult != null && !checkInvoiceResult.containsKey("code")) { - if (!checkInvoiceResult.containsKey("cyjg")) { - checkInvoiceResult.put("invoiceNo", checkInvoiceResult.getString("invoiceNumber")); - log.info("补充查验的结果为:{}", checkInvoiceResult); - signSaveInvoiceInfoService.saveQueryInvoiceResult(checkInvoiceResult, "", "1", "business"); + + if (checkInvoiceResult != null && !checkInvoiceResult.containsKey("code") && !checkInvoiceResult.containsKey("cyjg")) { + checkInvoiceResult.put("invoiceNo", checkInvoiceResult.getString("invoiceNumber")); + log.info("补充查验的结果为:{}", checkInvoiceResult); + signSaveInvoiceInfoService.saveQueryInvoiceResult(checkInvoiceResult, "", "1", "business"); + } else if (invoice != null && "3".equals(invoice.getCheckStatus())) { + try { + BaseTDxRecordInvoice invoiceInfo = convertToEleInvoiceInfo(invoice); + baseTDxRecordInvoiceDao.insert(invoiceInfo); + + if (invoice.getInvoiceLineList() != null && invoice.getInvoiceLineList().size() > 0) { + List tDxRecordInvoiceDetails = convertToEleInvoiceDetail(invoice); + + if (tDxRecordInvoiceDetails != null && tDxRecordInvoiceDetails.size() > 0) { + for (BaseTDxRecordInvoiceDetail tDxRecordInvoiceDetail : tDxRecordInvoiceDetails) { + baseTDxRecordInvoiceDetailDao.insert(tDxRecordInvoiceDetail); + } + } + } + } catch (Exception e) { + log.error("查验失败区块链发票入库异常:{}", e); } } + } //可查验发票,已入库,更新票池 @@ -780,6 +799,133 @@ public class SNPushCheckRecordService extends AbstractServiceAdapter { return result; } + public BaseTDxRecordInvoice convertToEleInvoiceInfo(SNInvoice invoice) { + BaseTDxRecordInvoice invoiceInfo = new BaseTDxRecordInvoice(); + + if (invoice != null){ + + invoiceInfo.setInvoiceCode(invoice.getInvoiceCode()); + invoiceInfo.setInvoiceNo(invoice.getInvoiceNumber()); + invoiceInfo.setGfTaxNo(invoice.getPurchaserTaxNo()); + invoiceInfo.setGfName(invoice.getPurchaserName()); + invoiceInfo.setGfAddressAndPhone(invoice.getPurchaserAddressPhone()); + invoiceInfo.setGfBankAndNo(invoice.getPurchaserBank()); + invoiceInfo.setXfTaxNo(invoice.getSalesTaxNo()); + invoiceInfo.setXfName(invoice.getSalesName()); + invoiceInfo.setXfAddressAndPhone(invoice.getSalesAddressPhone()); + invoiceInfo.setXfBankAndNo(invoice.getSalesBank()); + + + BigDecimal invoiceAmount = strToBigDecimal(invoice.getTotalAmount()); + if (invoiceAmount != null){ + invoiceInfo.setInvoiceAmount(invoiceAmount); + } + + BigDecimal totalAmout = strToBigDecimal(invoice.getAmountTax()); + if (totalAmout != null){ + invoiceInfo.setTotalAmount(totalAmout); + } + + BigDecimal taxAmount = strToBigDecimal(invoice.getTotalTax()); + if (taxAmount != null){ + invoiceInfo.setTaxAmount(taxAmount); + } + + invoiceInfo.setRemark(invoice.getRemarks()); + invoiceInfo.setInvoiceStatus(invoice.getState()); + invoiceInfo.setStatusUpdateDate(new Date()); + invoiceInfo.setLastUpdateDate(new Date()); + invoiceInfo.setQsDate(new Date()); + invoiceInfo.setRzhYesorno("0"); + invoiceInfo.setSourceSystem("3"); + invoiceInfo.setValid("1"); + invoiceInfo.setUuid((StringUtils.isBlank(invoice.getInvoiceCode())?"":invoice.getInvoiceCode())+invoice.getInvoiceNumber()); + invoiceInfo.setCreateDate(new Date()); + invoiceInfo.setSfygx("0"); + invoiceInfo.setDetailYesorno("0"); + invoiceInfo.setAuthStatus("0"); + invoiceInfo.setQsStatus("0"); + invoiceInfo.setCheckCode(invoice.getCheckCode()); + invoiceInfo.setLslbz(invoice.getZeroTaxRateSign()); + invoiceInfo.setTxfbz(invoice.getTollSign()); + invoiceInfo.setOutStatus("0"); + invoiceInfo.setCxrzStatus("0"); + invoiceInfo.setBdkStatus("0"); + invoiceInfo.setCxbdkStatus("0"); + invoiceInfo.setCompany("SDNYJTJX"); + invoiceInfo.setTaxRate(invoice.getTaxRate()); + invoiceInfo.setMachinecode(invoice.getMachineCode()); + + //影像号 + invoiceInfo.setImageId(invoice.getFileId()); + + if (StringUtils.isNotBlank(invoice.getBillingDate())){ + Date invoiceDate = DateUtils.strToDateLong(invoice.getBillingDate()); + invoiceInfo.setInvoiceDate(invoiceDate); + } + + if (StringUtils.isNotBlank(invoice.getInvoiceType())){ + String fplxDm = SNFplxEnum.getFplxDm(invoice.getInvoiceType()); + if (StringUtils.isNotBlank(fplxDm)){ + invoiceInfo.setInvoiceType(fplxDm); + } + } + + + if (invoice.getInvoiceLineList() != null && invoice.getInvoiceLineList().size() > 0){ + invoiceInfo.setDetailYesorno("1"); + } + } + return invoiceInfo; + } + + public List convertToEleInvoiceDetail(SNInvoice invoice) { + + List invoiceLineList = invoice.getInvoiceLineList(); + + List invoiceDetailList = new ArrayList<>(); + + if (invoiceLineList != null && invoiceLineList.size() > 0){ + + for (SNInvoiceDetail invoiceDetail : invoiceLineList) { + BaseTDxRecordInvoiceDetail invoiceDetailInfo = new BaseTDxRecordInvoiceDetail(); + invoiceDetailInfo.setUuid((StringUtils.isBlank(invoice.getInvoiceCode())?"":invoice.getInvoiceCode())+invoice.getInvoiceNumber()); + invoiceDetailInfo.setInvoiceNo(invoice.getInvoiceNumber()); + invoiceDetailInfo.setInvoiceCode(invoice.getInvoiceCode()); + invoiceDetailInfo.setDetailNo(invoiceDetail.getRowNo()); + invoiceDetailInfo.setGoodsName(invoiceDetail.getCommodityName()); + invoiceDetailInfo.setModel(invoiceDetail.getSpecificationModel()); + invoiceDetailInfo.setUnit(invoiceDetail.getUnit()); + invoiceDetailInfo.setNum(invoiceDetail.getQuantity()); + invoiceDetailInfo.setUnitPrice(invoiceDetail.getUnitPrice()); + invoiceDetailInfo.setDetailAmount(invoiceDetail.getAmount()); + invoiceDetailInfo.setTaxRate(invoiceDetail.getTaxRate()); + invoiceDetailInfo.setTaxAmount(invoiceDetail.getTax()); + invoiceDetailInfo.setCph(invoiceDetail.getLicensePlateNum()); + invoiceDetailInfo.setLx(invoiceDetail.getType()); + invoiceDetailInfo.setTxrqq(invoiceDetail.getCurrentDateStart()); + invoiceDetailInfo.setTxrqz(invoiceDetail.getCurrentDateEnd()); + invoiceDetailInfo.setTaxCode(invoiceDetail.getTaxCode()); + invoiceDetailInfo.setGoodsName(invoiceDetail.getCommodityName()); + invoiceDetailList.add(invoiceDetailInfo); + } + + } + + return invoiceDetailList; + } + + + public static BigDecimal strToBigDecimal(String str) { + BigDecimal decimal = null; + try { + decimal = new BigDecimal(str); + } catch (Exception e) { + log.error("转换Bigdecimal失败,传入参数为{}", str); + } + return decimal; + } + private TDxInvoiceReimburse convertToReimburse(SNInvoice invoice, TDxInvoiceReimburse reimburse, String fplxdm, String company) { reimburse.setId(IdUtils.nextId()); reimburse.setInvoiceType(fplxdm);