Merge branch 'release' of http://192.168.12.182/invoice/pt into 1007-认证人为空时设置成admin

release
路明慧 2 years ago
commit 0d4663022c
  1. 2
      dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java
  2. 6
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SAPInvoiceInfo.java
  3. 5
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SNInvoice.java
  4. 3
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SdnyTDxSaleRecordInvoice.java
  5. 11
      dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/ZData.java
  6. 2
      dxhy-erp/src/main/java/com/dxhy/erp/enums/TaxRateCodeEnum.java
  7. 50
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java

@ -1500,6 +1500,8 @@ public class SDNYMainProcessController extends AbstractController {
info.setZDJZH(snInvoice.getCertificateNo()); info.setZDJZH(snInvoice.getCertificateNo());
info.setZGFMC(snInvoice.getPurchaserName()); info.setZGFMC(snInvoice.getPurchaserName());
info.setSORT(snInvoice.getSort()); info.setSORT(snInvoice.getSort());
// 文件名
info.setZWJMC(snInvoice.getFileName());
//机打代码 //机打代码
info.setZJDDM(snInvoice.getMachineCode()); info.setZJDDM(snInvoice.getMachineCode());
if (snInvoice.getTotalAmount() != null) { if (snInvoice.getTotalAmount() != null) {

@ -545,4 +545,10 @@ public class SAPInvoiceInfo {
@JSONField(name = "ZTID") @JSONField(name = "ZTID")
private String ZTID = ""; private String ZTID = "";
/**
* 文件名称
*/
@JSONField(name = "ZWJMC")
private String ZWJMC = "";
} }

@ -334,6 +334,11 @@ public class SNInvoice {
*/ */
private String isDeductible; private String isDeductible;
/**
* 文件名
*/
private String fileName;
/** /**
* 明细列表 * 明细列表
*/ */

@ -858,4 +858,7 @@ public class SdnyTDxSaleRecordInvoice implements Serializable {
private String sort; private String sort;
@TableField(exist = false) @TableField(exist = false)
private String fileId; private String fileId;
@TableField(exist = false)
private String fileName;
} }

@ -340,6 +340,11 @@ public class ZData {
* 国税局商品编码 发票信息空则不传 * 国税局商品编码 发票信息空则不传
*/ */
private String ZGSJBM=""; private String ZGSJBM="";
/**
* 文件名称
*/
private String ZWJMC = "";
@JSONField(name = "ZBHSJE_Y") @JSONField(name = "ZBHSJE_Y")
public String getZBHSJE_Y() { public String getZBHSJE_Y() {
return ZBHSJE_Y; return ZBHSJE_Y;
@ -729,6 +734,8 @@ public class ZData {
return RESERVE5; return RESERVE5;
} }
@JSONField(name = "ZWJMC")
public String getZWJMC() {
return ZWJMC;
}
} }

@ -2,6 +2,8 @@ package com.dxhy.erp.enums;
import com.dxhy.common.vo.Tax; import com.dxhy.common.vo.Tax;
import java.math.BigDecimal;
/** /**
* 税率 税码关系表 * 税率 税码关系表
*/ */

@ -121,16 +121,24 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
item.setImageId(params.getImageId()); item.setImageId(params.getImageId());
item.setBzdh(params.getBillNum()); item.setBzdh(params.getBillNum());
item.setBzr(params.getJbrUserName()); item.setBzr(params.getJbrUserName());
item.setCompCode(params.getCompCode());
}); });
List<SdnyTDxSaleRecordInvoice> salesInvoiceList = new ArrayList<>(); List<SdnyTDxSaleRecordInvoice> salesInvoiceList = new ArrayList<>();
invoicesList.stream().forEach(invoice -> { invoicesList.stream().forEach(invoice -> {
SdnyTDxSaleRecordInvoice saleRecordInvoice = sdnyTDxSaleRecordInvoiceDao.selectOne(new QueryWrapper<SdnyTDxSaleRecordInvoice>().eq("uuid", invoice.getUuid())); List<SdnyTDxSaleRecordInvoice> saleRecordInvoices = sdnyTDxSaleRecordInvoiceDao.selectList(new QueryWrapper<SdnyTDxSaleRecordInvoice>().eq("uuid", invoice.getUuid()));
SdnyTDxSaleRecordInvoice saleRecordInvoice = null;
if (saleRecordInvoices!=null && saleRecordInvoices.size()>0) {
saleRecordInvoice = saleRecordInvoices.get(0);
}
List<SdnyTDxRecordInvoiceDetailSales> salesDetailList = new ArrayList<>(); List<SdnyTDxRecordInvoiceDetailSales> salesDetailList = new ArrayList<>();
detailiMap.get(invoice.getUuid()).stream().forEach(item -> { detailiMap.get(invoice.getUuid()).stream().forEach(item -> {
log.info("进项表明细行:{}",JSONObject.toJSONString(item));
SdnyTDxRecordInvoiceDetailSales salesDetail = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(item), SdnyTDxRecordInvoiceDetailSales.class); SdnyTDxRecordInvoiceDetailSales salesDetail = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(item), SdnyTDxRecordInvoiceDetailSales.class);
log.info("销项表明细行:{}",JSONObject.toJSONString(salesDetail));
salesDetail.setId(null); salesDetail.setId(null);
salesDetail.setTaxRate(item.getTaxRate());
salesDetailList.add(salesDetail); salesDetailList.add(salesDetail);
}); });
if (saleRecordInvoice == null) { if (saleRecordInvoice == null) {
@ -138,18 +146,22 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
saleRecordInvoice = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(invoice), SdnyTDxSaleRecordInvoice.class); saleRecordInvoice = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(invoice), SdnyTDxSaleRecordInvoice.class);
saleRecordInvoice.setId(null); saleRecordInvoice.setId(null);
sdnyTDxSaleRecordInvoiceDao.insert(saleRecordInvoice); sdnyTDxSaleRecordInvoiceDao.insert(saleRecordInvoice);
detailSalesDao.deleteByUUid(invoice.getUuid());
detailSalesDao.batchInsert(salesDetailList);
} else { } else {
// 修改 // 修改
saleRecordInvoice.setImageId(invoice.getImageId()); saleRecordInvoice.setImageId(invoice.getImageId());
saleRecordInvoice.setBzdh(invoice.getBzdh()); saleRecordInvoice.setBzdh(invoice.getBzdh());
saleRecordInvoice.setBzr(invoice.getBzr()); saleRecordInvoice.setBzr(invoice.getBzr());
saleRecordInvoice.setCompCode(invoice.getCompCode());
sdnyTDxSaleRecordInvoiceDao.updateById(saleRecordInvoice); sdnyTDxSaleRecordInvoiceDao.updateById(saleRecordInvoice);
} }
detailSalesDao.deleteByUUid(invoice.getUuid());
detailSalesDao.batchInsert(salesDetailList);
saleRecordInvoice.setDetailList(salesDetailList); saleRecordInvoice.setDetailList(salesDetailList);
saleRecordInvoice.setSort(paramsInvoiceMap.get(invoice.getUuid()).getSort()); saleRecordInvoice.setSort(paramsInvoiceMap.get(invoice.getUuid()).getSort());
saleRecordInvoice.setFileId(paramsInvoiceMap.get(invoice.getUuid()).getFileId()); saleRecordInvoice.setFileId(paramsInvoiceMap.get(invoice.getUuid()).getFileId());
saleRecordInvoice.setFileName(paramsInvoiceMap.get(invoice.getUuid()).getFileName());
salesInvoiceList.add(saleRecordInvoice); salesInvoiceList.add(saleRecordInvoice);
}); });
@ -183,6 +195,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
* @return * @return
*/ */
public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, SNRequestObject params) { public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, SNRequestObject params) {
log.info("销项发票推送SAP准备数据:{},影像参数:{}", invoiceList, params);
String dt = DateUtil.now(); String dt = DateUtil.now();
List<ZData> zDataList = new ArrayList<>(); List<ZData> zDataList = new ArrayList<>();
if (invoiceList != null) { if (invoiceList != null) {
@ -192,6 +205,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
if (StringUtils.isBlank(invoiceType)) { if (StringUtils.isBlank(invoiceType)) {
throw new RuntimeException("推送SAP失败,推导发票类型错误,发票代码:"+item.getInvoiceCode()+",发票代码:"+item.getInvoiceNo()); throw new RuntimeException("推送SAP失败,推导发票类型错误,发票代码:"+item.getInvoiceCode()+",发票代码:"+item.getInvoiceNo());
} }
ZData zdata = new ZData(); ZData zdata = new ZData();
zdata.setZFPDM(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()); zdata.setZFPDM(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode());
zdata.setZFPHM(item.getInvoiceNo()); zdata.setZFPHM(item.getInvoiceNo());
@ -203,7 +217,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
zdata.setZZSE_DIF("0"); zdata.setZZSE_DIF("0");
zdata.setZHSJE_DIF("0"); zdata.setZHSJE_DIF("0");
zdata.setZZBZ(item.getRemark()); zdata.setZZBZ(item.getRemark());
zdata.setZFPZT("0"); zdata.setZFPZT("0".equals(item.getInvoiceStatus())?"0":"1");
zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD)); zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD));
zdata.setMANDT(params.getClientNum()); zdata.setMANDT(params.getClientNum());
zdata.setZGFMC(item.getGfName()); zdata.setZGFMC(item.getGfName());
@ -243,11 +257,15 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
zdata.setFPYXBH(item.getFileId()); zdata.setFPYXBH(item.getFileId());
zdata.setIMG_ID(params.getImageId()); zdata.setIMG_ID(params.getImageId());
zdata.setSORT(String.valueOf(item.getSort())); zdata.setSORT(String.valueOf(item.getSort()));
// 增加文件名
zdata.setZWJMC(item.getFileName());
// 处理明细行 // 处理明细行
List<ZData> zDatas=new ArrayList<>(); List<ZData> zDatas=new ArrayList<>();
for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) { for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) {
detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate())); detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate()));
detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).stripTrailingZeros().toPlainString()); detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).setScale(4,BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString());
log.info("明细行数据:{}",JSONObject.toJSONString(detail));
BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount())); BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount()));
zDatas.add(ZData.builder() zDatas.add(ZData.builder()
.ZBHSJE(detail.getDetailAmount()) .ZBHSJE(detail.getDetailAmount())
@ -312,14 +330,14 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
* @param taxRate * @param taxRate
* @return 去掉%的小数 * @return 去掉%的小数
*/ */
public BigDecimal getTaxRate(String taxRate) { public static BigDecimal getTaxRate(String taxRate) {
if (StringUtils.isBlank(taxRate) || Constant.ZERO_TAXRATE_VALUE.contains(taxRate)) { if (StringUtils.isBlank(taxRate) || Constant.ZERO_TAXRATE_VALUE.contains(taxRate)) {
taxRate = "0"; taxRate = "0";
} else { } else {
taxRate = taxRate.replace("%", ""); taxRate = taxRate.replace("%", "");
// 判断是不是数字 不是数字的就给0 // 判断是不是数字 不是数字的就给0
if (!isNumeric(taxRate)) { if (!isNumeric(taxRate)) {
taxRate = "0.00"; taxRate = "0";
} else { } else {
// 不知道库里存的是13% 还是0.13 所以加一个判断 // 不知道库里存的是13% 还是0.13 所以加一个判断
if (new BigDecimal(taxRate).compareTo(BigDecimal.ONE) >= 0) { if (new BigDecimal(taxRate).compareTo(BigDecimal.ONE) >= 0) {
@ -334,17 +352,21 @@ public class ImageSubmitServiceImpl implements ImageSubmitService {
} }
public static boolean isNumeric(String str){ public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){ try {
if (!Character.isDigit(str.charAt(i))){ Double.parseDouble(str);
return false; return true;
} } catch (NumberFormatException e) {
return false;
} }
return true;
} }
public static void main(String[] args) { public static void main(String[] args) {
BigDecimal a = new BigDecimal(13); BigDecimal a = new BigDecimal(0.13);
System.out.println(a.stripTrailingZeros().toPlainString()); String tax = a.multiply(new BigDecimal(100)).setScale(4,BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();
System.out.println(StringUtils.isNumeric("13.00"));
System.out.println(isNumeric("1e1"));
System.out.println(getTaxRate("13.00"));
System.out.println(TaxRateCodeEnum.getCode(tax));
} }
} }

Loading…
Cancel
Save