|
|
|
@ -1,21 +1,26 @@ |
|
|
|
|
package com.dxhy.erp.service.impl; |
|
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
|
|
|
|
import com.dxhy.common.constant.DbConstant; |
|
|
|
|
import com.dxhy.common.datasource.config.DynamicContextHolder; |
|
|
|
|
import com.dxhy.common.enums.FplxEnum; |
|
|
|
|
import com.dxhy.common.utils.DateUtils; |
|
|
|
|
import com.dxhy.common.utils.R; |
|
|
|
|
import com.dxhy.erp.dao.*; |
|
|
|
|
import com.dxhy.erp.entity.sdny.*; |
|
|
|
|
import com.dxhy.erp.service.ImageSubmitService; |
|
|
|
|
import com.dxhy.erp.service.SdnyTDxRecordInvoiceDetailSalesService; |
|
|
|
|
import com.dxhy.erp.utils.Constant; |
|
|
|
|
import com.dxhy.erp.utils.JsonUtils; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
@ -43,7 +48,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
public R salesInvoiceSubmit(SNRequestObject params) { |
|
|
|
|
List<String> uuidList = new ArrayList<>(); |
|
|
|
|
Map<String, SNInvoice> paramsInvoiceMap = new HashMap<>(); |
|
|
|
|
params.getInvoiceInfoList().stream().forEach(item->{ |
|
|
|
|
params.getInvoiceInfoList().stream().forEach(item -> { |
|
|
|
|
String uuid = (StringUtils.isBlank(item.getInvoiceCode()) ? "" : item.getInvoiceCode()) + item.getInvoiceNumber(); |
|
|
|
|
uuidList.add(uuid); |
|
|
|
|
paramsInvoiceMap.put(uuid, item); |
|
|
|
@ -57,16 +62,16 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
} |
|
|
|
|
if (invoicesList.size() != uuidList.size()) { |
|
|
|
|
StringBuffer msg = new StringBuffer(); |
|
|
|
|
Map<String, SdnyTDxRecordInvoice> invoiceMap = invoicesList.stream().collect(Collectors.toMap(SdnyTDxRecordInvoice::getUuid, v->v)); |
|
|
|
|
uuidList.stream().forEach(uuid->{ |
|
|
|
|
Map<String, SdnyTDxRecordInvoice> invoiceMap = invoicesList.stream().collect(Collectors.toMap(SdnyTDxRecordInvoice::getUuid, v -> v)); |
|
|
|
|
uuidList.stream().forEach(uuid -> { |
|
|
|
|
if (!invoiceMap.containsKey(uuid)) { |
|
|
|
|
SNInvoice invoice = paramsInvoiceMap.get(uuid); |
|
|
|
|
String errorMsg = "发票代码:"+invoice.getInvoiceCode()+",发票号码:"+invoice.getInvoiceNumber()+";"; |
|
|
|
|
String errorMsg = "发票代码:" + invoice.getInvoiceCode() + ",发票号码:" + invoice.getInvoiceNumber() + ";"; |
|
|
|
|
msg.append(errorMsg); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
String errorMsg = msg.toString(); |
|
|
|
|
return R.error(500, "未查询到如下发票,请重新查验"+errorMsg); |
|
|
|
|
return R.error(500, "未查询到如下发票,请重新查验," + errorMsg); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
DynamicContextHolder.push(DbConstant.DETAIL_WRITE); |
|
|
|
@ -74,7 +79,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
detailQueryWrapper.in("uuid", uuidList); |
|
|
|
|
List<SdnyTDxRecordInvoiceDetail> detailList = detailDao.selectList(detailQueryWrapper); |
|
|
|
|
Map<String, List<SdnyTDxRecordInvoiceDetail>> detailiMap = new HashMap<>(); |
|
|
|
|
detailList.stream().forEach(item->{ |
|
|
|
|
detailList.stream().forEach(item -> { |
|
|
|
|
List<SdnyTDxRecordInvoiceDetail> list = null; |
|
|
|
|
if (detailiMap.containsKey(item.getUuid())) { |
|
|
|
|
list = detailiMap.get(item.getUuid()); |
|
|
|
@ -86,19 +91,19 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
detailiMap.put(item.getUuid(), list); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
invoicesList.stream().forEach(item->{ |
|
|
|
|
invoicesList.stream().forEach(item -> { |
|
|
|
|
item.setImageId(params.getImageId()); |
|
|
|
|
item.setBzdh(params.getBillNum()); |
|
|
|
|
item.setBzr(params.getJbrUserName()); |
|
|
|
|
}); |
|
|
|
|
List<SdnyTDxSaleRecordInvoice> salesInvoiceList = new ArrayList<>(); |
|
|
|
|
invoicesList.stream().forEach(invoice->{ |
|
|
|
|
invoicesList.stream().forEach(invoice -> { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DynamicContextHolder.push(DbConstant.BUSINESS_WRITE); |
|
|
|
|
SdnyTDxSaleRecordInvoice saleRecordInvoice = sdnyTDxSaleRecordInvoiceDao.selectOne(new QueryWrapper<SdnyTDxSaleRecordInvoice>().eq("uuid", invoice.getUuid())); |
|
|
|
|
List<SdnyTDxRecordInvoiceDetailSales> salesDetailList = new ArrayList<>(); |
|
|
|
|
detailiMap.get(invoice.getUuid()).stream().forEach(item->{ |
|
|
|
|
detailiMap.get(invoice.getUuid()).stream().forEach(item -> { |
|
|
|
|
SdnyTDxRecordInvoiceDetailSales salesDetail = JsonUtils.getInstance().parseObject(JSONObject.toJSONString(item), SdnyTDxRecordInvoiceDetailSales.class); |
|
|
|
|
salesDetail.setId(null); |
|
|
|
|
salesDetailList.add(salesDetail); |
|
|
|
@ -121,6 +126,7 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
sdnyTDxSaleRecordInvoiceDao.updateById(saleRecordInvoice); |
|
|
|
|
} |
|
|
|
|
saleRecordInvoice.setDetailList(salesDetailList); |
|
|
|
|
saleRecordInvoice.setSort(paramsInvoiceMap.get(invoice.getUuid()).getSort()); |
|
|
|
|
salesInvoiceList.add(saleRecordInvoice); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
@ -134,14 +140,93 @@ public class ImageSubmitServiceImpl implements ImageSubmitService { |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 推送SAP |
|
|
|
|
* |
|
|
|
|
* @param invoiceList |
|
|
|
|
* @param flag true提交 false撤回 |
|
|
|
|
* @param flag true提交 false撤回 |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, Boolean flag) { |
|
|
|
|
|
|
|
|
|
public R pushSap(List<SdnyTDxSaleRecordInvoice> invoiceList, SNRequestObject params) { |
|
|
|
|
String dt = DateUtil.now(); |
|
|
|
|
List<ZData> 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())); |
|
|
|
|
|
|
|
|
|
BigDecimal taxRate = BigDecimal.ZERO; |
|
|
|
|
for (SdnyTDxRecordInvoiceDetailSales detail : item.getDetailList()) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
S4Request request = S4Request.builder() |
|
|
|
|
.SYSID("FPXT") |
|
|
|
|
.IFYWID("FI889") |
|
|
|
|
.BSKEY(params.getBillNum()) |
|
|
|
|
.ZORG(params.getCompCode()) |
|
|
|
|
.ZFILED4(params.getImageId()) |
|
|
|
|
.ZFILED5(params.getClientNum()).build(); |
|
|
|
|
|
|
|
|
|
return R.success(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 处理税率 |
|
|
|
|
* @param taxRate |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
public BigDecimal getTaxRate(String taxRate) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|