diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java index ff3be8ee..3e06420a 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java @@ -24,6 +24,7 @@ import com.dxhy.erp.utils.Base64; import com.dxhy.erp.utils.HmacSHA1Util; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -112,6 +113,9 @@ public class SDNYMainProcessController extends AbstractController { @Resource private RequestRecordService requestRecordService; + @Autowired + private ImageSubmitService imageSubmitService; + /** * 查验发票 */ @@ -1207,15 +1211,21 @@ public class SDNYMainProcessController extends AbstractController { @SysLog("影像系统提交销项发票") public ResponseEntity imageSubmitSalesInvoice(@RequestBody SNRequestObject params) { log.info("影像系统提交销项发票 params:{}", JSONObject.toJSONString(params)); - if (params.getInvoiceInfoList() == null || params.getInvoiceInfoList().size() == 0) { - // 撤回 - } else { - // 提交 + try { + R rs = null; + if (params.getInvoiceInfoList() == null || params.getInvoiceInfoList().size() == 0) { + // 撤回 + rs = imageSubmitService.salesInvoiceRollback(params); + } else { + // 提交 + rs = imageSubmitService.salesInvoiceSubmit(params); + } + return ResponseEntity.ok(JSONObject.toJSONString(rs)); + }catch (Exception e) { + log.error("影像系统提交销项发票失败", e); + return ResponseEntity.ok(JSONObject.toJSONString(R.error(500, e.getMessage()))); } - - - return ResponseEntity.ok(JSONObject.toJSONString(R.success())); } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java index 7292c03a..636c8866 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java @@ -142,7 +142,18 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { @Override public R salesInvoiceRollback(SNRequestObject params) { - return null; + List uuidList = new ArrayList<>(); + params.getInvoiceInfoList().stream().forEach(item -> { + String uuid = (StringUtils.isBlank(item.getInvoiceCode()) ? "" : item.getInvoiceCode()) + item.getInvoiceNumber(); + uuidList.add(uuid); + }); + UpdateWrapper 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 invoiceList, SNRequestObject params) { String dt = DateUtil.now(); List zDataList = new ArrayList<>(); - invoiceList.stream().forEach(item -> { - String invoiceType = FplxEnum.getSapFplxdm(item.getInvoiceType()); - if (StringUtils.isBlank(invoiceType)) { - throw new RuntimeException("推送SAP失败,推导发票类型错误,发票代码:"+item.getInvoiceCode()+",发票代码:"+item.getInvoiceNo()); - } - ZData zdata = new ZData(); - zdata.setZFPDM(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()); - zdata.setZFPHM(item.getInvoiceNo()); - zdata.setZFPLX(invoiceType); - zdata.setZXFBM(item.getXfTaxNo()); - zdata.setZGFBH(item.getGfTaxNo()); - zdata.setZHSJE(item.getTaxAmount().toPlainString()); - zdata.setZBHSJE_DIF("0"); - zdata.setZZSE_DIF("0"); - zdata.setZHSJE_DIF("0"); - zdata.setZZBZ(item.getRemark()); - zdata.setZFPZT("0"); - zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD)); - zdata.setMANDT(params.getClientNum()); - zdata.setZGFMC(item.getGfName()); - zdata.setZGFSH(item.getGfTaxNo()); - zdata.setZXFMC(item.getXfName()); - zdata.setZXFSH(item.getXfTaxNo()); - zdata.setZTID(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()+item.getInvoiceNo()+invoiceType); - zdata.setZJYM(item.getCheckCode()); - zdata.setZGFZH(item.getGfBankAndNo()); - zdata.setZGFDH(item.getGfAddressAndPhone()); - zdata.setZXFDH(item.getXfAddressAndPhone()); - zdata.setZXFZH(item.getXfBankAndNo()); - zdata.setZPJLY("1"); - zdata.setZYGC(params.getJbrUserNum()); - zdata.setZYHM(params.getJbrUserName()); - zdata.setZQM("opentext"); - zdata.setZGSDM(params.getCompCode()); - if(!StringUtils.isBlank(params.getBillNum())){ - zdata.setZYWDJ(params.getBillNum()); - zdata.setZYWZT("1"); - zdata.setZBZDH(params.getBillNum()); - }else{ - zdata.setZYWZT("0"); - } - zdata.setZPJZT("2"); - zdata.setZCJSJ(dt); - zdata.setZCJR(params.getJbrUserNum()); - zdata.setZGXSJ(dt); - zdata.setZGXR(params.getJbrUserNum()); - zdata.setZCYZT("1"); - zdata.setZCYJG("查验成功"); - zdata.setZCYRQ(dt); - zdata.setZBHSJE_Y(item.getInvoiceAmount().toPlainString()); - zdata.setZZSE_Y(item.getTaxAmount().toPlainString()); - zdata.setZHSJE_Y(item.getTotalAmount().toPlainString()); - zdata.setZBHSJE(item.getInvoiceAmount().toPlainString()); - zdata.setFPYXBH(params.getImageId()); - zdata.setIMG_ID(params.getImageId()); - zdata.setSORT(String.valueOf(item.getSort())); - // 处理明细行 - List zDatas=new ArrayList<>(); - for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) { - detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate())); - detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).toPlainString()); - BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount())); - zDatas.add(ZData.builder() - .ZBHSJE(detail.getDetailAmount()) - .ZBHSJE_DIF("0") - .ZBHSJE_Y(detail.getDetailAmount()) - .ZFPDM(item.getInvoiceCode()) - .ZFPHM(item.getInvoiceNo()) - .ZFPHH(detail.getDetailNo()) - .ZGGXH(Optional.ofNullable(detail.getModel()).orElse("").replaceAll("\\.{3}|/|<|>", "")) //去掉包含...和/、<、>的特殊字符 - .ZHSJE(totalAmount.toPlainString()) - .ZHSJE_Y(totalAmount.toPlainString()) - .ZZSE_Y(detail.getTaxAmount()) - .ZSLDW(detail.getUnit()) - .ZTAX(detail.getTaxRate()) - .ZZDJ(detail.getUnitPrice()) - .ZZDJFP(detail.getUnitPrice()) - .ZZSL(detail.getNum()) - .MANDT(params.getClientNum()) - .INVOICEDATE(zdata.getZKPRQ()) - .INVOICETYPE(invoiceType) - .ZHWMC(detail.getGoodsName()) - .ZTID(zdata.getZTID()) - .ZSM(TaxRateCodeEnum.getCode(detail.getTaxRate())) - .build()); - } - String taxRate = ""; - if (item.getDetailList().size() > 0) { - taxRate = item.getDetailList().stream().max(Comparator.comparing(SdnyTDxRecordInvoiceDetailSales::getTaxRateOfSap)).get().getTaxRate(); - } - zdata.setIT_ITEM(zDatas); + if (invoiceList != null) { + // 影像提交 + invoiceList.stream().forEach(item -> { + String invoiceType = FplxEnum.getSapFplxdm(item.getInvoiceType()); + if (StringUtils.isBlank(invoiceType)) { + throw new RuntimeException("推送SAP失败,推导发票类型错误,发票代码:"+item.getInvoiceCode()+",发票代码:"+item.getInvoiceNo()); + } + ZData zdata = new ZData(); + zdata.setZFPDM(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()); + zdata.setZFPHM(item.getInvoiceNo()); + zdata.setZFPLX(invoiceType); + zdata.setZXFBM(item.getXfTaxNo()); + zdata.setZGFBH(item.getGfTaxNo()); + zdata.setZHSJE(item.getTaxAmount().toPlainString()); + zdata.setZBHSJE_DIF("0"); + zdata.setZZSE_DIF("0"); + zdata.setZHSJE_DIF("0"); + zdata.setZZBZ(item.getRemark()); + zdata.setZFPZT("0"); + zdata.setZKPRQ(DateUtils.dateToStr(item.getInvoiceDate(),DateUtils.YYYYMMDD)); + zdata.setMANDT(params.getClientNum()); + zdata.setZGFMC(item.getGfName()); + zdata.setZGFSH(item.getGfTaxNo()); + zdata.setZXFMC(item.getXfName()); + zdata.setZXFSH(item.getXfTaxNo()); + zdata.setZTID(StringUtils.isBlank(item.getInvoiceCode())?"":item.getInvoiceCode()+item.getInvoiceNo()+invoiceType); + zdata.setZJYM(item.getCheckCode()); + zdata.setZGFZH(item.getGfBankAndNo()); + zdata.setZGFDH(item.getGfAddressAndPhone()); + zdata.setZXFDH(item.getXfAddressAndPhone()); + zdata.setZXFZH(item.getXfBankAndNo()); + zdata.setZPJLY("1"); + zdata.setZYGC(params.getJbrUserNum()); + zdata.setZYHM(params.getJbrUserName()); + zdata.setZQM("opentext"); + zdata.setZGSDM(params.getCompCode()); + if(!StringUtils.isBlank(params.getBillNum())){ + zdata.setZYWDJ(params.getBillNum()); + zdata.setZYWZT("1"); + zdata.setZBZDH(params.getBillNum()); + }else{ + zdata.setZYWZT("0"); + } + zdata.setZPJZT("2"); + zdata.setZCJSJ(dt); + zdata.setZCJR(params.getJbrUserNum()); + zdata.setZGXSJ(dt); + zdata.setZGXR(params.getJbrUserNum()); + zdata.setZCYZT("1"); + zdata.setZCYJG("查验成功"); + zdata.setZCYRQ(dt); + zdata.setZBHSJE_Y(item.getInvoiceAmount().toPlainString()); + zdata.setZZSE_Y(item.getTaxAmount().toPlainString()); + zdata.setZHSJE_Y(item.getTotalAmount().toPlainString()); + zdata.setZBHSJE(item.getInvoiceAmount().toPlainString()); + zdata.setFPYXBH(params.getImageId()); + zdata.setIMG_ID(params.getImageId()); + zdata.setSORT(String.valueOf(item.getSort())); + // 处理明细行 + List zDatas=new ArrayList<>(); + for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) { + detail.setTaxRateOfSap(getTaxRate(detail.getTaxRate())); + detail.setTaxRate(detail.getTaxRateOfSap().multiply(new BigDecimal(100)).toPlainString()); + BigDecimal totalAmount = new BigDecimal(detail.getDetailAmount()).add(new BigDecimal(detail.getTaxAmount())); + zDatas.add(ZData.builder() + .ZBHSJE(detail.getDetailAmount()) + .ZBHSJE_DIF("0") + .ZBHSJE_Y(detail.getDetailAmount()) + .ZFPDM(item.getInvoiceCode()) + .ZFPHM(item.getInvoiceNo()) + .ZFPHH(detail.getDetailNo()) + .ZGGXH(Optional.ofNullable(detail.getModel()).orElse("").replaceAll("\\.{3}|/|<|>", "")) //去掉包含...和/、<、>的特殊字符 + .ZHSJE(totalAmount.toPlainString()) + .ZHSJE_Y(totalAmount.toPlainString()) + .ZZSE_Y(detail.getTaxAmount()) + .ZSLDW(detail.getUnit()) + .ZTAX(detail.getTaxRate()) + .ZZDJ(detail.getUnitPrice()) + .ZZDJFP(detail.getUnitPrice()) + .ZZSL(detail.getNum()) + .MANDT(params.getClientNum()) + .INVOICEDATE(zdata.getZKPRQ()) + .INVOICETYPE(invoiceType) + .ZHWMC(detail.getGoodsName()) + .ZTID(zdata.getZTID()) + .ZSM(TaxRateCodeEnum.getCode(detail.getTaxRate())) + .build()); + } + String taxRate = ""; + if (item.getDetailList().size() > 0) { + 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() .SYSID("FPXT") .IFYWID("FI889")