销项发票提交

release
王琦 2 years ago
parent f0583953f8
commit a5f5243697
  1. 24
      dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java
  2. 211
      dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ImageSubmitServiceImpl.java

@ -24,6 +24,7 @@ import com.dxhy.erp.utils.Base64;
import com.dxhy.erp.utils.HmacSHA1Util; import com.dxhy.erp.utils.HmacSHA1Util;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -112,6 +113,9 @@ public class SDNYMainProcessController extends AbstractController {
@Resource @Resource
private RequestRecordService requestRecordService; private RequestRecordService requestRecordService;
@Autowired
private ImageSubmitService imageSubmitService;
/** /**
* 查验发票 * 查验发票
*/ */
@ -1207,15 +1211,21 @@ public class SDNYMainProcessController extends AbstractController {
@SysLog("影像系统提交销项发票") @SysLog("影像系统提交销项发票")
public ResponseEntity<String> imageSubmitSalesInvoice(@RequestBody SNRequestObject params) { public ResponseEntity<String> imageSubmitSalesInvoice(@RequestBody SNRequestObject params) {
log.info("影像系统提交销项发票 params:{}", JSONObject.toJSONString(params)); log.info("影像系统提交销项发票 params:{}", JSONObject.toJSONString(params));
if (params.getInvoiceInfoList() == null || params.getInvoiceInfoList().size() == 0) { try {
// 撤回 R rs = null;
} else { 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()));
} }

@ -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")

Loading…
Cancel
Save