|
|
@ -142,7 +142,18 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public R salesInvoiceRollback(SNRequestObject params) { |
|
|
|
public R salesInvoiceRollback(SNRequestObject params) { |
|
|
|
return null; |
|
|
|
List<String> uuidList = new ArrayList<>(); |
|
|
|
|
|
|
|
params.getInvoiceInfoList().stream().forEach(item -> { |
|
|
|
|
|
|
|
String uuid = (StringUtils.isBlank(item.getInvoiceCode()) ? "" : item.getInvoiceCode()) + item.getInvoiceNumber(); |
|
|
|
|
|
|
|
uuidList.add(uuid); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
UpdateWrapper<SdnyTDxRecordInvoiceDetailSales> updateWrapper = new UpdateWrapper<>(); |
|
|
|
|
|
|
|
updateWrapper.set(true, "image_id", null); |
|
|
|
|
|
|
|
updateWrapper.set(true, "bzdh", null); |
|
|
|
|
|
|
|
updateWrapper.set(true, "bzr", null); |
|
|
|
|
|
|
|
updateWrapper.in("uuid", uuidList); |
|
|
|
|
|
|
|
sdnyTDxRecordInvoiceDetailSalesService.update(updateWrapper); |
|
|
|
|
|
|
|
return pushSap(null, params); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
@ -155,104 +166,108 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, SNRequestObject params) { |
|
|
|
public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, SNRequestObject params) { |
|
|
|
String dt = DateUtil.now(); |
|
|
|
String dt = DateUtil.now(); |
|
|
|
List<ZData> zDataList = new ArrayList<>(); |
|
|
|
List<ZData> zDataList = new ArrayList<>(); |
|
|
|
invoiceList.stream().forEach(item -> { |
|
|
|
if (invoiceList != null) { |
|
|
|
String invoiceType = FplxEnum.getSapFplxdm(item.getInvoiceType()); |
|
|
|
// 影像提交
|
|
|
|
if (StringUtils.isBlank(invoiceType)) { |
|
|
|
invoiceList.stream().forEach(item -> { |
|
|
|
throw new RuntimeException("推送SAP失败,推导发票类型错误,发票代码:"+item.getInvoiceCode()+",发票代码:"+item.getInvoiceNo()); |
|
|
|
String invoiceType = FplxEnum.getSapFplxdm(item.getInvoiceType()); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(invoiceType)) { |
|
|
|
ZData zdata = new ZData(); |
|
|
|
throw new RuntimeException("推送SAP失败,推导发票类型错误,发票代码:"+item.getInvoiceCode()+",发票代码:"+item.getInvoiceNo()); |
|
|
|
zdata.setZFPDM(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()); |
|
|
|
} |
|
|
|
zdata.setZFPHM(item.getInvoiceNo()); |
|
|
|
ZData zdata = new ZData(); |
|
|
|
zdata.setZFPLX(invoiceType); |
|
|
|
zdata.setZFPDM(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()); |
|
|
|
zdata.setZXFBM(item.getXfTaxNo()); |
|
|
|
zdata.setZFPHM(item.getInvoiceNo()); |
|
|
|
zdata.setZGFBH(item.getGfTaxNo()); |
|
|
|
zdata.setZFPLX(invoiceType); |
|
|
|
zdata.setZHSJE(item.getTaxAmount().toPlainString()); |
|
|
|
zdata.setZXFBM(item.getXfTaxNo()); |
|
|
|
zdata.setZBHSJE_DIF("0"); |
|
|
|
zdata.setZGFBH(item.getGfTaxNo()); |
|
|
|
zdata.setZZSE_DIF("0"); |
|
|
|
zdata.setZHSJE(item.getTaxAmount().toPlainString()); |
|
|
|
zdata.setZHSJE_DIF("0"); |
|
|
|
zdata.setZBHSJE_DIF("0"); |
|
|
|
zdata.setZZBZ(item.getRemark()); |
|
|
|
zdata.setZZSE_DIF("0"); |
|
|
|
zdata.setZFPZT("0"); |
|
|
|
zdata.setZHSJE_DIF("0"); |
|
|
|
zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD)); |
|
|
|
zdata.setZZBZ(item.getRemark()); |
|
|
|
zdata.setMANDT(params.getClientNum()); |
|
|
|
zdata.setZFPZT("0"); |
|
|
|
zdata.setZGFMC(item.getGfName()); |
|
|
|
zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD)); |
|
|
|
zdata.setZGFSH(item.getGfTaxNo()); |
|
|
|
zdata.setMANDT(params.getClientNum()); |
|
|
|
zdata.setZXFMC(item.getXfName()); |
|
|
|
zdata.setZGFMC(item.getGfName()); |
|
|
|
zdata.setZXFSH(item.getXfTaxNo()); |
|
|
|
zdata.setZGFSH(item.getGfTaxNo()); |
|
|
|
zdata.setZTID(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()+item.getInvoiceNo()+invoiceType); |
|
|
|
zdata.setZXFMC(item.getXfName()); |
|
|
|
zdata.setZJYM(item.getCheckCode()); |
|
|
|
zdata.setZXFSH(item.getXfTaxNo()); |
|
|
|
zdata.setZGFZH(item.getGfBankAndNo()); |
|
|
|
zdata.setZTID(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()+item.getInvoiceNo()+invoiceType); |
|
|
|
zdata.setZGFDH(item.getGfAddressAndPhone()); |
|
|
|
zdata.setZJYM(item.getCheckCode()); |
|
|
|
zdata.setZXFDH(item.getXfAddressAndPhone()); |
|
|
|
zdata.setZGFZH(item.getGfBankAndNo()); |
|
|
|
zdata.setZXFZH(item.getXfBankAndNo()); |
|
|
|
zdata.setZGFDH(item.getGfAddressAndPhone()); |
|
|
|
zdata.setZPJLY("1"); |
|
|
|
zdata.setZXFDH(item.getXfAddressAndPhone()); |
|
|
|
zdata.setZYGC(params.getJbrUserNum()); |
|
|
|
zdata.setZXFZH(item.getXfBankAndNo()); |
|
|
|
zdata.setZYHM(params.getJbrUserName()); |
|
|
|
zdata.setZPJLY("1"); |
|
|
|
zdata.setZQM("opentext"); |
|
|
|
zdata.setZYGC(params.getJbrUserNum()); |
|
|
|
zdata.setZGSDM(params.getCompCode()); |
|
|
|
zdata.setZYHM(params.getJbrUserName()); |
|
|
|
if(!StringUtils.isBlank(params.getBillNum())){ |
|
|
|
zdata.setZQM("opentext"); |
|
|
|
zdata.setZYWDJ(params.getBillNum()); |
|
|
|
zdata.setZGSDM(params.getCompCode()); |
|
|
|
zdata.setZYWZT("1"); |
|
|
|
if(!StringUtils.isBlank(params.getBillNum())){ |
|
|
|
zdata.setZBZDH(params.getBillNum()); |
|
|
|
zdata.setZYWDJ(params.getBillNum()); |
|
|
|
}else{ |
|
|
|
zdata.setZYWZT("1"); |
|
|
|
zdata.setZYWZT("0"); |
|
|
|
zdata.setZBZDH(params.getBillNum()); |
|
|
|
} |
|
|
|
}else{ |
|
|
|
zdata.setZPJZT("2"); |
|
|
|
zdata.setZYWZT("0"); |
|
|
|
zdata.setZCJSJ(dt); |
|
|
|
} |
|
|
|
zdata.setZCJR(params.getJbrUserNum()); |
|
|
|
zdata.setZPJZT("2"); |
|
|
|
zdata.setZGXSJ(dt); |
|
|
|
zdata.setZCJSJ(dt); |
|
|
|
zdata.setZGXR(params.getJbrUserNum()); |
|
|
|
zdata.setZCJR(params.getJbrUserNum()); |
|
|
|
zdata.setZCYZT("1"); |
|
|
|
zdata.setZGXSJ(dt); |
|
|
|
zdata.setZCYJG("查验成功"); |
|
|
|
zdata.setZGXR(params.getJbrUserNum()); |
|
|
|
zdata.setZCYRQ(dt); |
|
|
|
zdata.setZCYZT("1"); |
|
|
|
zdata.setZBHSJE_Y(item.getInvoiceAmount().toPlainString()); |
|
|
|
zdata.setZCYJG("查验成功"); |
|
|
|
zdata.setZZSE_Y(item.getTaxAmount().toPlainString()); |
|
|
|
zdata.setZCYRQ(dt); |
|
|
|
zdata.setZHSJE_Y(item.getTotalAmount().toPlainString()); |
|
|
|
zdata.setZBHSJE_Y(item.getInvoiceAmount().toPlainString()); |
|
|
|
zdata.setZBHSJE(item.getInvoiceAmount().toPlainString()); |
|
|
|
zdata.setZZSE_Y(item.getTaxAmount().toPlainString()); |
|
|
|
zdata.setFPYXBH(params.getImageId()); |
|
|
|
zdata.setZHSJE_Y(item.getTotalAmount().toPlainString()); |
|
|
|
zdata.setIMG_ID(params.getImageId()); |
|
|
|
zdata.setZBHSJE(item.getInvoiceAmount().toPlainString()); |
|
|
|
zdata.setSORT(String.valueOf(item.getSort())); |
|
|
|
zdata.setFPYXBH(params.getImageId()); |
|
|
|
// 处理明细行
|
|
|
|
zdata.setIMG_ID(params.getImageId()); |
|
|
|
List<ZData> zDatas=new ArrayList<>(); |
|
|
|
zdata.setSORT(String.valueOf(item.getSort())); |
|
|
|
for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) { |
|
|
|
// 处理明细行
|
|
|
|
detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate())); |
|
|
|
List<ZData> zDatas=new ArrayList<>(); |
|
|
|
detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).toPlainString()); |
|
|
|
for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) { |
|
|
|
BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount())); |
|
|
|
detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate())); |
|
|
|
zDatas.add(ZData.builder() |
|
|
|
detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).toPlainString()); |
|
|
|
.ZBHSJE(detail.getDetailAmount()) |
|
|
|
BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount())); |
|
|
|
.ZBHSJE_DIF("0") |
|
|
|
zDatas.add(ZData.builder() |
|
|
|
.ZBHSJE_Y(detail.getDetailAmount()) |
|
|
|
.ZBHSJE(detail.getDetailAmount()) |
|
|
|
.ZFPDM(item.getInvoiceCode()) |
|
|
|
.ZBHSJE_DIF("0") |
|
|
|
.ZFPHM(item.getInvoiceNo()) |
|
|
|
.ZBHSJE_Y(detail.getDetailAmount()) |
|
|
|
.ZFPHH(detail.getDetailNo()) |
|
|
|
.ZFPDM(item.getInvoiceCode()) |
|
|
|
.ZGGXH(Optional.ofNullable(detail.getModel()).orElse("").replaceAll("\\.{3}|/|<|>", "")) //去掉包含...和/、<、>的特殊字符
|
|
|
|
.ZFPHM(item.getInvoiceNo()) |
|
|
|
.ZHSJE(totalAmount.toPlainString()) |
|
|
|
.ZFPHH(detail.getDetailNo()) |
|
|
|
.ZHSJE_Y(totalAmount.toPlainString()) |
|
|
|
.ZGGXH(Optional.ofNullable(detail.getModel()).orElse("").replaceAll("\\.{3}|/|<|>", "")) //去掉包含...和/、<、>的特殊字符
|
|
|
|
.ZZSE_Y(detail.getTaxAmount()) |
|
|
|
.ZHSJE(totalAmount.toPlainString()) |
|
|
|
.ZSLDW(detail.getUnit()) |
|
|
|
.ZHSJE_Y(totalAmount.toPlainString()) |
|
|
|
.ZTAX(detail.getTaxRate()) |
|
|
|
.ZZSE_Y(detail.getTaxAmount()) |
|
|
|
.ZZDJ(detail.getUnitPrice()) |
|
|
|
.ZSLDW(detail.getUnit()) |
|
|
|
.ZZDJFP(detail.getUnitPrice()) |
|
|
|
.ZTAX(detail.getTaxRate()) |
|
|
|
.ZZSL(detail.getNum()) |
|
|
|
.ZZDJ(detail.getUnitPrice()) |
|
|
|
.MANDT(params.getClientNum()) |
|
|
|
.ZZDJFP(detail.getUnitPrice()) |
|
|
|
.INVOICEDATE(zdata.getZKPRQ()) |
|
|
|
.ZZSL(detail.getNum()) |
|
|
|
.INVOICETYPE(invoiceType) |
|
|
|
.MANDT(params.getClientNum()) |
|
|
|
.ZHWMC(detail.getGoodsName()) |
|
|
|
.INVOICEDATE(zdata.getZKPRQ()) |
|
|
|
.ZTID(zdata.getZTID()) |
|
|
|
.INVOICETYPE(invoiceType) |
|
|
|
.ZSM(TaxRateCodeEnum.getCode(detail.getTaxRate())) |
|
|
|
.ZHWMC(detail.getGoodsName()) |
|
|
|
.build()); |
|
|
|
.ZTID(zdata.getZTID()) |
|
|
|
} |
|
|
|
.ZSM(TaxRateCodeEnum.getCode(detail.getTaxRate())) |
|
|
|
String taxRate = ""; |
|
|
|
.build()); |
|
|
|
if (item.getDetailList().size() > 0) { |
|
|
|
} |
|
|
|
taxRate = item.getDetailList().stream().max(Comparator.comparing(SdnyTDxRecordInvoiceDetailSales::getTaxRateOfSap)).get().getTaxRate(); |
|
|
|
String taxRate = ""; |
|
|
|
} |
|
|
|
if (item.getDetailList().size() > 0) { |
|
|
|
zdata.setIT_ITEM(zDatas); |
|
|
|
taxRate = item.getDetailList().stream().max(Comparator.comparing(SdnyTDxRecordInvoiceDetailSales::getTaxRateOfSap)).get().getTaxRate(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
zdata.setIT_ITEM(zDatas); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//税率
|
|
|
|
|
|
|
|
zdata.setZTAX(taxRate); |
|
|
|
|
|
|
|
//税码
|
|
|
|
|
|
|
|
zdata.setZSM(TaxRateCodeEnum.getCode(taxRate)); |
|
|
|
|
|
|
|
zDataList.add(zdata); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//税率
|
|
|
|
|
|
|
|
zdata.setZTAX(taxRate); |
|
|
|
|
|
|
|
//税码
|
|
|
|
|
|
|
|
zdata.setZSM(TaxRateCodeEnum.getCode(taxRate)); |
|
|
|
|
|
|
|
zDataList.add(zdata); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
S4Request request = S4Request.builder() |
|
|
|
S4Request request = S4Request.builder() |
|
|
|
.SYSID("FPXT") |
|
|
|
.SYSID("FPXT") |
|
|
|
.IFYWID("FI889") |
|
|
|
.IFYWID("FI889") |
|
|
|