diff --git a/dxhy-common/src/main/java/com/dxhy/common/utils/DateUtils.java b/dxhy-common/src/main/java/com/dxhy/common/utils/DateUtils.java index c6ac9c49..4ddb00ab 100644 --- a/dxhy-common/src/main/java/com/dxhy/common/utils/DateUtils.java +++ b/dxhy-common/src/main/java/com/dxhy/common/utils/DateUtils.java @@ -10,6 +10,9 @@ import java.util.*; */ @SuppressWarnings({"AlibabaLowerCamelCaseVariableNaming", "AlibabaUndefineMagicConstant"}) public class DateUtils { + + public static final String YYYYMMDD = "yyyyMMdd"; + /** * 获取现在时间,这个好用 * @@ -128,6 +131,11 @@ public class DateUtils { return formatter.format(dateDate); } + public static String dateToStr(java.util.Date dateDate, String format) { + SimpleDateFormat formatter = new SimpleDateFormat(format); + return formatter.format(dateDate); + } + /** * 日期格式化到月份 * diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SdnyTDxSaleRecordInvoice.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SdnyTDxSaleRecordInvoice.java index cf49d253..be8139e7 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SdnyTDxSaleRecordInvoice.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/sdny/SdnyTDxSaleRecordInvoice.java @@ -854,4 +854,6 @@ public class SdnyTDxSaleRecordInvoice implements Serializable { @TableField(exist = false) private List detailList; + @TableField(exist = false) + private String sort; } \ No newline at end of file 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 660a3ffb..a015b02a 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 @@ -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 uuidList = new ArrayList<>(); Map 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 invoiceMap = invoicesList.stream().collect(Collectors.toMap(SdnyTDxRecordInvoice::getUuid, v->v)); - uuidList.stream().forEach(uuid->{ + Map 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 detailList = detailDao.selectList(detailQueryWrapper); Map> detailiMap = new HashMap<>(); - detailList.stream().forEach(item->{ + detailList.stream().forEach(item -> { List 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 salesInvoiceList = new ArrayList<>(); - invoicesList.stream().forEach(invoice->{ + invoicesList.stream().forEach(invoice -> { DynamicContextHolder.push(DbConstant.BUSINESS_WRITE); SdnyTDxSaleRecordInvoice saleRecordInvoice = sdnyTDxSaleRecordInvoiceDao.selectOne(new QueryWrapper().eq("uuid", invoice.getUuid())); List 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 invoiceList, Boolean flag) { - + 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())); + + 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) { + + } }