diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java index 3d0d421e..472f9416 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/PushInvoiceServiceImpl.java @@ -85,6 +85,7 @@ import java.math.BigDecimal; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * 推送企业数据servcie实现类 @@ -459,6 +460,7 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { || ConfigurerInfo.INTERFACE_VERSION_V6.equals(pushInfo.getVersionIdent())) { DxhyInterfaceResponse dxhyInterfaceResponse = JsonUtils.getInstance().parseObject(result, DxhyInterfaceResponse.class); if (OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_1.getKey().equals(fpTsMqData.getPushType())) { + //TODO 山能易行回传流水号重置 if(OrderInfoEnum.SYS_SOURCE_SAP.getKey().equals(xtly)){ PoCommonResponseParam poCommonResponseParam = JsonUtils.getInstance().parseObject(result, PoCommonResponseParam.class); EsOutput es_output = poCommonResponseParam.getES_OUTPUT(); @@ -634,11 +636,6 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { } } - public static void main(String[] args) { - String salt = "e4b0190b2fadc0adbe54471ffd79a729"; - - } - private OutputInvoiceRequest buildInvoiceRequest(DdfpxxV5 ddfpxx){ @@ -1194,13 +1191,16 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { } private void updatePushErrorMsgToDb(String fpqqlsh, String errorMessage, List shList) { - OrderInvoiceInfo orderQuery = new OrderInvoiceInfo(); - orderQuery.setFpqqlsh(fpqqlsh); - orderQuery.setPushStatus(OrderInfoEnum.PUSH_STATUS_2.getKey()); - orderQuery.setInvoicePushSbyy(errorMessage); - int updateByPrimaryKeySelective = orderInvoiceInfoService.updateOrderInvoiceInfoByFpqqlsh(orderQuery, shList); - if (updateByPrimaryKeySelective <= 0) { - log.error("{}推送状态更新失败", LOGGER_MSG); + String[] split = fpqqlsh.split(","); + for (String fpqqlshItem : split) { + OrderInvoiceInfo orderQuery = new OrderInvoiceInfo(); + orderQuery.setFpqqlsh(fpqqlshItem); + orderQuery.setPushStatus(OrderInfoEnum.PUSH_STATUS_2.getKey()); + orderQuery.setInvoicePushSbyy(errorMessage); + int updateByPrimaryKeySelective = orderInvoiceInfoService.updateOrderInvoiceInfoByFpqqlsh(orderQuery, shList); + if (updateByPrimaryKeySelective <= 0) { + log.error("{}推送状态更新失败", LOGGER_MSG); + } } } @@ -1237,16 +1237,19 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { if (ObjectUtil.isNotEmpty(pushRspBO.getDDFPTS())) { ddfptsBOList.addAll(pushRspBO.getDDFPTS()); } else { - DdfptsBO ddfptsBO = new DdfptsBO(); - ddfptsBO.setDDQQLSH(fpqqlsh); - ddfptsBO.setNSRSBH(nsrsbh); - if (ConfigureConstant.STRING_0000.equals(pushRspBO.getZTDM()) || ConfigureConstant.STRING_000000.equals(pushRspBO.getZTDM())) { - ddfptsBO.setZTDM(ConfigureConstant.STRING_000000); - } else { - ddfptsBO.setZTDM(ConfigureConstant.STRING_009999); - } + String[] split = fpqqlsh.split(","); + for (String fpqqlshSplit : split) { + DdfptsBO ddfptsBO = new DdfptsBO(); + ddfptsBO.setDDQQLSH(fpqqlshSplit); + ddfptsBO.setNSRSBH(nsrsbh); + if (ConfigureConstant.STRING_0000.equals(pushRspBO.getZTDM()) || ConfigureConstant.STRING_000000.equals(pushRspBO.getZTDM())) { + ddfptsBO.setZTDM(ConfigureConstant.STRING_000000); + } else { + ddfptsBO.setZTDM(ConfigureConstant.STRING_009999); + } - ddfptsBOList.add(ddfptsBO); + ddfptsBOList.add(ddfptsBO); + } } for (DdfptsBO ddfptsBO : ddfptsBOList) { @@ -1319,102 +1322,105 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { List gsClients = gsClientMapper.selectByGsdm(orderProcessInfo.getGsdm()); //发票开具推送 - DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class); - DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX(); - List ddmxxx = ddfpzxxV5.getDDMXXX(); + List ddfpzxxV5s = JsonUtils.getInstance().jsonToList(content, DdfpzxxV5.class); + //DdfpzxxV5 ddfpzxxV5 = JsonUtils.getInstance().parseObject(content.substring(1,content.length()-1), DdfpzxxV5.class); List mainList = new ArrayList<>(); - FpkjtsReqSap fpkjtsReqSap = new FpkjtsReqSap(); - List itemList = new ArrayList<>(); - //主信息 - if(!OrderInfoEnum.SYS_SOURCE_FPPAGE.getKey().equals(orderProcessInfo.getXtly())){ - fpkjtsReqSap.setZJSDH(orderProcessInfo.getOriginDdh()); - }else { - fpkjtsReqSap.setZJSDH(""); - } - fpkjtsReqSap.setZFPDM(ddfpxx.getFPDM()); - fpkjtsReqSap.setZFPHM(ddfpxx.getFPHM()); - fpkjtsReqSap.setZFPLX(CommonUtils.transToSnFplxdm(ddfpxx.getFPLXDM())); - fpkjtsReqSap.setZXFBM(ddfpxx.getXHFSBH()); - fpkjtsReqSap.setZGFBH(ddfpxx.getGMFSBH()); - fpkjtsReqSap.setZBHSJEY(ddfpxx.getHJJE()); - fpkjtsReqSap.setZZSEY(ddfpxx.getHJSE()); - fpkjtsReqSap.setZHSJEY(ddfpxx.getJSHJ()); - fpkjtsReqSap.setZZBZ(ddfpxx.getBZ()); - fpkjtsReqSap.setZFPZT(ConfigureConstant.STRING_0);//0-正常、1-作废 - String formatKprq = ""; - try { - Date date = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ddfpxx.getKPRQ()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - formatKprq = sdf.format(date); - }catch (Exception e){ - log.error("{}发票推送SAP格式化开票日期错误:{}",LOGGER_MSG,e); - } - fpkjtsReqSap.setZKPRQ(formatKprq); - fpkjtsReqSap.setZGFMC(ddfpxx.getGMFMC()); - fpkjtsReqSap.setZGFSH(ddfpxx.getGMFSBH()); - fpkjtsReqSap.setZXFMC(ddfpxx.getXHFMC()); - fpkjtsReqSap.setZXFSH(ddfpxx.getXHFSBH()); - fpkjtsReqSap.setZTID(ddfpxx.getFPDM()+ddfpxx.getFPHM()+ddfpxx.getFPLXDM()); - fpkjtsReqSap.setZGFZH(ddfpxx.getGMFZH()); - fpkjtsReqSap.setZGFDH(ddfpxx.getGMFDH()); - fpkjtsReqSap.setZXFDH(ddfpxx.getXHFDH()); - fpkjtsReqSap.setZXFZH(ddfpxx.getXHFZH()); - fpkjtsReqSap.setZGSDM(orderProcessInfo.getGsdm()); - fpkjtsReqSap.setZYWDJ(orderProcessInfo.getBzdh()); - fpkjtsReqSap.setIMGID(orderInvoiceInfo.getDocuId()); - if(OrderInfoEnum.SYS_SOURCE_DSXT01.getKey().equals(orderProcessInfo.getXtly()) || - OrderInfoEnum.SYS_SOURCE_DSXT02.getKey().equals(orderProcessInfo.getXtly())){ - fpkjtsReqSap.setPDFZJL(ddfpxx.getPDFZJL()); - fpkjtsReqSap.setZJLLX(ddfpxx.getZJLLX()); - } - //明细信息 - ddmxxx.stream().forEach(f -> { - FpkjtsMxSap detail = new FpkjtsMxSap(); + for (DdfpzxxV5 ddfpzxxV5 : ddfpzxxV5s) { + DdfpxxV5 ddfpxx = ddfpzxxV5.getDDFPXX(); + List ddmxxx = ddfpzxxV5.getDDMXXX(); + FpkjtsReqSap fpkjtsReqSap = new FpkjtsReqSap(); + List itemList = new ArrayList<>(); //主信息 - detail.setZJSDH(StringUtils.isNotBlank(orderProcessInfo.getOriginDdh())?orderProcessInfo.getOriginDdh():orderProcessInfo.getDdh()); -// detail.setZJSDH(ddfpxx.getDDH()); - detail.setZFPDM(ddfpxx.getFPDM()); - detail.setZFPHM(ddfpxx.getFPHM()); - detail.setZFPHH(f.getXH()); - if(ObjectUtil.isNull(f.getZXBM()) || StrUtil.isBlank(f.getZXBM())){ - detail.setMATNR(""); + if(!OrderInfoEnum.SYS_SOURCE_FPPAGE.getKey().equals(orderProcessInfo.getXtly())){ + fpkjtsReqSap.setZJSDH(orderProcessInfo.getOriginDdh()); }else { -// DecimalFormat g1=new DecimalFormat("000000000000000000"); - detail.setMATNR(f.getZXBM()); + fpkjtsReqSap.setZJSDH(""); } - detail.setZGGXH(f.getGGXH()); - detail.setZSLDW(f.getDW()); - detail.setZZSL(f.getSPSL()); - detail.setZTAX(new BigDecimal(f.getSL()).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString()); - detail.setZBHSJEY(f.getJE()); - detail.setZZSEY(f.getSE()); - detail.setZHSJEY(new BigDecimal(f.getJE()).add(new BigDecimal(f.getSE())).toString()); - if(StrUtil.isBlank(f.getDJ())){ - detail.setZZDJFP(""); - }else { - detail.setZZDJFP(f.getDJ()); -// detail.setZZDJFP(new BigDecimal(f.getDJ()).multiply(new BigDecimal(f.getSL()).add(BigDecimal.ONE)).setScale(ConfigureConstant.INT_8,BigDecimal.ROUND_HALF_EVEN).toString()); + fpkjtsReqSap.setZFPDM(ddfpxx.getFPDM()); + fpkjtsReqSap.setZFPHM(ddfpxx.getFPHM()); + fpkjtsReqSap.setZFPLX(CommonUtils.transToSnFplxdm(ddfpxx.getFPLXDM())); + fpkjtsReqSap.setZXFBM(ddfpxx.getXHFSBH()); + fpkjtsReqSap.setZGFBH(ddfpxx.getGMFSBH()); + fpkjtsReqSap.setZBHSJEY(ddfpxx.getHJJE()); + fpkjtsReqSap.setZZSEY(ddfpxx.getHJSE()); + fpkjtsReqSap.setZHSJEY(ddfpxx.getJSHJ()); + fpkjtsReqSap.setZZBZ(ddfpxx.getBZ()); + fpkjtsReqSap.setZFPZT(ConfigureConstant.STRING_0);//0-正常、1-作废 + String formatKprq = ""; + try { + Date date = (Date) new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(ddfpxx.getKPRQ()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + formatKprq = sdf.format(date); + }catch (Exception e){ + log.error("{}发票推送SAP格式化开票日期错误:{}",LOGGER_MSG,e); } - detail.setINVOICEDATE(ddfpxx.getKPRQ()); - detail.setINVOICETYPE(ddfpxx.getFPLXDM()); - detail.setZHWMC(f.getXMMC()); - detail.setZSM(ObjectUtil.isNull(smMap.get(f.getSL()))?"":smMap.get(f.getSL()).toString()); - itemList.add(detail); - }); - fpkjtsReqSap.setITITEM(itemList); - IsInput isInput = new IsInput(); - isInput.setSYSID(OrderInfoEnum.SYS_SIGN_FP.getKey()); - isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJTS.getKey()); - isInput.setBSKEY(apiInvoiceCommonMapperService.getGenerateShotKey()); - isInput.setZORG(""); - isInput.setZFILED5(gsClients.size()>0?gsClients.get(0).getClient():""); - mainList.add(fpkjtsReqSap); - String jsonString = JsonUtils.getInstance().toJsonString(mainList); - isInput.setZDATA(jsonString); - PoCommonRequestParam poCommonRequestParam = new PoCommonRequestParam(); - poCommonRequestParam.setIS_INPUT(isInput); - - ywxtParam = JsonUtils.getInstance().toJsonString(poCommonRequestParam); + fpkjtsReqSap.setZKPRQ(formatKprq); + fpkjtsReqSap.setZGFMC(ddfpxx.getGMFMC()); + fpkjtsReqSap.setZGFSH(ddfpxx.getGMFSBH()); + fpkjtsReqSap.setZXFMC(ddfpxx.getXHFMC()); + fpkjtsReqSap.setZXFSH(ddfpxx.getXHFSBH()); + fpkjtsReqSap.setZTID(ddfpxx.getFPDM()+ddfpxx.getFPHM()+ddfpxx.getFPLXDM()); + fpkjtsReqSap.setZGFZH(ddfpxx.getGMFZH()); + fpkjtsReqSap.setZGFDH(ddfpxx.getGMFDH()); + fpkjtsReqSap.setZXFDH(ddfpxx.getXHFDH()); + fpkjtsReqSap.setZXFZH(ddfpxx.getXHFZH()); + fpkjtsReqSap.setZGSDM(orderProcessInfo.getGsdm()); + fpkjtsReqSap.setZYWDJ(orderProcessInfo.getBzdh()); + fpkjtsReqSap.setIMGID(orderInvoiceInfo.getDocuId()); + if(OrderInfoEnum.SYS_SOURCE_DSXT01.getKey().equals(orderProcessInfo.getXtly()) || + OrderInfoEnum.SYS_SOURCE_DSXT02.getKey().equals(orderProcessInfo.getXtly())){ + fpkjtsReqSap.setPDFZJL(ddfpxx.getPDFZJL()); + fpkjtsReqSap.setZJLLX(ddfpxx.getZJLLX()); + } + //明细信息 + ddmxxx.stream().forEach(f -> { + FpkjtsMxSap detail = new FpkjtsMxSap(); + //主信息 + detail.setZJSDH(StringUtils.isNotBlank(orderProcessInfo.getOriginDdh())?orderProcessInfo.getOriginDdh():orderProcessInfo.getDdh()); +// detail.setZJSDH(ddfpxx.getDDH()); + detail.setZFPDM(ddfpxx.getFPDM()); + detail.setZFPHM(ddfpxx.getFPHM()); + detail.setZFPHH(f.getXH()); + if(ObjectUtil.isNull(f.getZXBM()) || StrUtil.isBlank(f.getZXBM())){ + detail.setMATNR(""); + }else { +// DecimalFormat g1=new DecimalFormat("000000000000000000"); + detail.setMATNR(f.getZXBM()); + } + detail.setZGGXH(f.getGGXH()); + detail.setZSLDW(f.getDW()); + detail.setZZSL(f.getSPSL()); + detail.setZTAX(new BigDecimal(f.getSL()).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString()); + detail.setZBHSJEY(f.getJE()); + detail.setZZSEY(f.getSE()); + detail.setZHSJEY(new BigDecimal(f.getJE()).add(new BigDecimal(f.getSE())).toString()); + if(StrUtil.isBlank(f.getDJ())){ + detail.setZZDJFP(""); + }else { + detail.setZZDJFP(f.getDJ()); +// detail.setZZDJFP(new BigDecimal(f.getDJ()).multiply(new BigDecimal(f.getSL()).add(BigDecimal.ONE)).setScale(ConfigureConstant.INT_8,BigDecimal.ROUND_HALF_EVEN).toString()); + } + detail.setINVOICEDATE(ddfpxx.getKPRQ()); + detail.setINVOICETYPE(ddfpxx.getFPLXDM()); + detail.setZHWMC(f.getXMMC()); + detail.setZSM(ObjectUtil.isNull(smMap.get(f.getSL()))?"":smMap.get(f.getSL()).toString()); + itemList.add(detail); + }); + fpkjtsReqSap.setITITEM(itemList); + IsInput isInput = new IsInput(); + isInput.setSYSID(OrderInfoEnum.SYS_SIGN_FP.getKey()); + isInput.setIFYWID(OrderInfoEnum.INTERFACE_BUSINESS_ID_FPKJTS.getKey()); + isInput.setBSKEY(apiInvoiceCommonMapperService.getGenerateShotKey()); + isInput.setZORG(""); + isInput.setZFILED5(gsClients.size()>0?gsClients.get(0).getClient():""); + mainList.add(fpkjtsReqSap); + String jsonString = JsonUtils.getInstance().toJsonString(mainList); + isInput.setZDATA(jsonString); + PoCommonRequestParam poCommonRequestParam = new PoCommonRequestParam(); + poCommonRequestParam.setIS_INPUT(isInput); + + ywxtParam = JsonUtils.getInstance().toJsonString(poCommonRequestParam); + } }else if(OrderInfoEnum.INTERFACE_TYPE_INVOICE_PUSH_STATUS_2.getKey().equals(fpTsMqData.getPushType())){ OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoService.selectOrderInvoiceInfoByFpdmAndFphm(fpTsMqData.getZfTsMqData().getFpdm(), fpTsMqData.getZfTsMqData().getFphm(), null); @@ -1479,6 +1485,9 @@ public class PushInvoiceServiceImpl implements PushInvoiceService { return null; } orderProcessInfoList.addAll(orderProcessInfos); + String fpqqlsh = orderProcessInfos.stream().map(t -> t.getFpqqlsh()).collect(Collectors.joining(",")); + fpTsMqData.setFpqqlsh(fpqqlsh); + log.info("山能易行发票回推重置流水号{}",fpqqlsh); }else{ orderProcessInfoList.add(orderProcessInfo); }