Merge branch 'blockChain' into 'release'

Block chain

See merge request invoice/pt!86
release
刘振 1 year ago
commit b85115de35
  1. 3
      dxhy-core/src/main/java/com/dxhy/core/util/InvoiceTypeUtils.java
  2. 2
      dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java
  3. 2
      dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceDetail.java
  4. 162
      dxhy-erp/src/main/java/com/dxhy/erp/service/SNPushCheckRecordService.java
  5. 3
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/SignSaveInvoiceInfoServiceImpl.java
  6. 3
      dxhy-extend/src/main/java/com/dxhy/extend/util/InvoiceTypeUtils.java

@ -111,6 +111,9 @@ public class InvoiceTypeUtils {
case "186":
invoiceName = "全电纸质发票(增值税普通发票)";
break;
case "16":
invoiceName = "区块链发票";
break;
// case "85":
// invoiceName = "可报销其他发票";
// break;

@ -477,4 +477,6 @@ public class BaseTDxRecordInvoice implements Serializable {
private String compCode;
private String outResource;
private String taxRate;
}

@ -115,4 +115,6 @@ public class BaseTDxRecordInvoiceDetail implements Serializable {
*/
private String spfwjc;
private String taxCode;
}

@ -4,13 +4,16 @@ import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.dxhy.common.constant.DbConstant;
import com.dxhy.common.datasource.config.DynamicContextHolder;
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 +25,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,14 +762,42 @@ public class SNPushCheckRecordService extends AbstractServiceAdapter {
log.error("补充查验失败,errormsg:{}", e.getMessage());
}
if (checkInvoiceResult != null && !checkInvoiceResult.containsKey("code")) {
if (!checkInvoiceResult.containsKey("cyjg")) {
//库里没有补充查验
if (checkInvoiceResult != null && !checkInvoiceResult.containsKey("code") && !checkInvoiceResult.containsKey("cyjg")) {
checkInvoiceResult.put("invoiceNo", checkInvoiceResult.getString("invoiceNumber"));
if ("3".equals(invoice.getCheckStatus())){
checkInvoiceResult.put("checkStatus","3");
}
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<BaseTDxRecordInvoiceDetail> tDxRecordInvoiceDetails = convertToEleInvoiceDetail(invoice);
if (tDxRecordInvoiceDetails != null && tDxRecordInvoiceDetails.size() > 0) {
LambdaQueryWrapper<BaseTDxRecordInvoiceDetail> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BaseTDxRecordInvoiceDetail::getUuid,invoiceInfo.getUuid());
//先删除明细
baseTDxRecordInvoiceDetailDao.delete(queryWrapper);
//插入明细
for (BaseTDxRecordInvoiceDetail tDxRecordInvoiceDetail : tDxRecordInvoiceDetails) {
baseTDxRecordInvoiceDetailDao.insert(tDxRecordInvoiceDetail);
}
}
}
} catch (Exception e) {
log.error("查验失败区块链发票入库异常:{}", e);
}
}
}
//可查验发票,已入库,更新票池
Integer integer = this.pushInvoiceToRecordInvoice2(invoice, imageId, compCode);
@ -780,6 +812,132 @@ public class SNPushCheckRecordService extends AbstractServiceAdapter {
return result;
}
public BaseTDxRecordInvoice convertToEleInvoiceInfo(SNInvoice invoice) {
BaseTDxRecordInvoice invoiceInfo = new BaseTDxRecordInvoice();
if (invoice != null){
invoiceInfo.setInvoiceType("16");
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.strToDate(invoice.getBillingDate());
invoiceInfo.setInvoiceDate(invoiceDate);
}
if (invoice.getInvoiceLineList() != null && invoice.getInvoiceLineList().size() > 0){
invoiceInfo.setDetailYesorno("1");
}
}
return invoiceInfo;
}
public List<BaseTDxRecordInvoiceDetail> convertToEleInvoiceDetail(SNInvoice invoice) {
List<SNInvoiceDetail> invoiceLineList = invoice.getInvoiceLineList();
List<BaseTDxRecordInvoiceDetail> 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.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());
BigDecimal taxRate = strToBigDecimal(invoiceDetail.getTaxRate());
if (taxRate != null){
invoiceDetailInfo.setTaxRate(taxRate.multiply(new BigDecimal("100")).stripTrailingZeros().toPlainString());
}else if (StringUtils.isNotBlank(invoiceDetail.getTaxRate())){
invoiceDetailInfo.setTaxRate(invoiceDetail.getTaxRate().replace("%",""));
}
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);

@ -550,6 +550,9 @@ public class SignSaveInvoiceInfoServiceImpl extends MpBaseServiceImpl<SignRecord
invoice.setInvoiceCode(invoiceCode);
invoice.setInvoiceNo(invoiceNo);
}
if ("3".equals(queryInvoiceResult.getString("checkStatus"))){
invoice.setInvoiceType("16");
}
invoice.setUuid(uuid);

@ -95,6 +95,9 @@ public class InvoiceTypeUtils {
case "32":
invoiceName = "电子发票(普通发票)";
break;
case "16":
invoiceName = "区块链发票";
break;
// case "85":
// invoiceName = "可报销其他发票";
// break;

Loading…
Cancel
Save