From b5b3fefe055a7b73e7c9474cd9b0e4caaece3f3d Mon Sep 17 00:00:00 2001 From: gaorl Date: Thu, 10 Aug 2023 11:52:15 +0800 Subject: [PATCH] =?UTF-8?q?feature=EF=BC=9A=E5=B1=B1=E8=83=BD=E6=98=93?= =?UTF-8?q?=E8=A1=8C=E5=BC=80=E7=A5=A8=E3=80=81=E5=86=B2=E7=BA=A2=E3=80=81?= =?UTF-8?q?=E4=BD=9C=E5=BA=9F=E6=A0=A1=E9=AA=8C=E6=98=AF=E5=90=A6=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E5=90=8C=E4=B8=80=E6=8A=A5=E8=B4=A6=E5=8D=95=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E7=9A=84=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumer/dao/OrderProcessInfoMapper.java | 4 + .../service/impl/OrderInfoServiceImpl.java | 92 +++++++++++++++++-- .../mybatis/mapper/OrderProcessInfoMapper.xml | 57 ++++++++++++ .../invoice/dao/OrderInvoiceInfoMapper.java | 2 + .../mybatis/mapper/OrderInvoiceInfoMapper.xml | 12 +++ 5 files changed, 160 insertions(+), 7 deletions(-) diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java index 8926b375..cb349596 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/dao/OrderProcessInfoMapper.java @@ -164,4 +164,8 @@ public interface OrderProcessInfoMapper { @Param("shList") List shList, @Param("entList") List entList); List getOrderMessageByMap(@Param("map") Map map); + + List selectOrderProcessByFpqqlshs(@Param("fpqqlshs") List fpqqlshs, @Param("shList") List shList); + + List selectOrderProcessByYFpdmHm(@Param("yFpdmHms") List yFpdmHms, @Param("shList") List shList); } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java index 470d9ad6..fe51f94a 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java @@ -177,7 +177,7 @@ public class OrderInfoServiceImpl implements OrderInfoService { @Resource private GsClientMapper gsClientMapper; - @Autowired + @Resource private BuyerMapper buyerMapper; @Resource @@ -2117,12 +2117,15 @@ public class OrderInfoServiceImpl implements OrderInfoService { */ @Override public R checkInvoiceSync(String operation,String nsrsbh,String params){ + // TODO 过滤一层系统来源 + List orderProcessInfos = null; + Map> collect = null; switch (operation){ case "0": - //根据报账单号查询未开发票数,且有效 param:发票请求流水号集合 - List orderProcessInfos = orderProcessInfoMapper.queryOrderProcessInfoByBzdhs(Arrays.asList(params), Arrays.asList(nsrsbh)); + //根据报账单号查询未开发票数,且有效 param:发票请求流水号集合,是否需要添加来源校验 + orderProcessInfos = orderProcessInfoMapper.queryOrderProcessInfoByBzdhs(Arrays.asList(params), Arrays.asList(nsrsbh)); //按照报账单分组统计 - Map> collect = orderProcessInfos.stream().collect(Collectors.groupingBy(t -> t.getBzdh())); + collect = orderProcessInfos.stream().collect(Collectors.groupingBy(t -> t.getBzdh())); Map> collect1 = Arrays.stream(params.split(",")).collect(Collectors.groupingBy(t -> t)); StringBuffer sb = new StringBuffer(); for (String s : collect1.keySet()) { @@ -2130,17 +2133,92 @@ public class OrderInfoServiceImpl implements OrderInfoService { sb.append("报账单号:").append(s).append("存在多笔未开订单,"); } } + if(StringUtils.isNotBlank(sb.toString())){ + return R.error(sb.toString()); + } break; case "1": - //根据报账单号查询未作废发票数,且有效 param:发票请求流水号集合 + //根据根据发票流水号查询报账单号,报账单号查询未作废发票数,且有效 param:发票请求流水号集合 + //1、根据流水号查询报账单号对应的流水号,如果查为1条,则过滤跳过,如果存在多条且有未开具提示 + // 2、如果存在多条且有未作废的提示,如果存在已冲红提示 + //AND ( oii.zf_bz = '0' OR oii.ch_bz = '0' ) + List paramList = Arrays.asList(params); + orderProcessInfos = orderProcessInfoMapper.selectOrderProcessByFpqqlshs(paramList, Arrays.asList(nsrsbh)); + collect = orderProcessInfos.stream().collect(Collectors.groupingBy(t -> t.getBzdh())); + StringBuffer sb1 = new StringBuffer(); + List fpqqlsh = new ArrayList<>(); + for (String s : collect.keySet()) { + List orderProcessInfos1 = collect.get(s); + if(orderProcessInfos1.size() > 1){ + //如果全部开具成功再添加否则返回报错信息 + List collect2 = orderProcessInfos1.stream() + .filter(t -> OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) || OrderInfoEnum.ORDER_STATUS_7.getKey().equals(t.getDdzt())) + .map(t -> t.getFpqqlsh()).collect(Collectors.toList()); + if(!collect2.isEmpty()){ + fpqqlsh.addAll(collect2); + }else{ + sb1.append("本次作废存在商旅发票,,存在未开具成功结算单:" + collect2.stream().collect(Collectors.joining(",")));//结算单号 + } + + } + } + //直接return ,存在未开具情况不查作废情况了 + if(StringUtils.isNotBlank(sb1.toString())){ + return R.error(sb1.toString()); + } + if(!fpqqlsh.isEmpty()){ + List invoiceInfos = orderInvoiceInfoMapper.selectInvoiceInfoByFpqqlshs(fpqqlsh); + List collect2 = invoiceInfos.stream().filter(t -> !paramList.contains(t.getFpqqlsh())).map(t -> t.getFphm()).collect(Collectors.toList()); + if(!collect2.isEmpty()){ + return R.error("本次作废存在商旅发票,以下发票号码未作废:"+collect2.stream().collect(Collectors.joining(","))+",请注意"); + } + } break; case "2": //根据信息表编号查询到原发票号码的报账单 查询此报账单号是否存在多笔发票 param:信息表编号集合 + //通过原发票号码 查询报账单号,查到对应流水号,在通过流水号查找 另外一张发票的状态 + /** + * 原发票号码 查询order_invoice_info 表,在联查 order_process_info 查报账单号,再通过报账单号反查 发票请求流水号 + * 查到流水号,在查红字冲红 + */ + List list = Arrays.asList(params); + List yFpdmHm = list.stream().map(t->{ + String[] split = t.split("-"); + return "('" + split[0] + "','" + split[1] + "')"; + }).collect(Collectors.toList()); + orderProcessInfos = orderProcessInfoMapper.selectOrderProcessByYFpdmHm(yFpdmHm, Arrays.asList(nsrsbh)); + collect = orderProcessInfos.stream().collect(Collectors.groupingBy(t -> t.getBzdh())); + StringBuffer sb2 = new StringBuffer(); + List yfpqqlsh = new ArrayList<>(); + for (String s : collect.keySet()) { + List orderProcessInfos1 = collect.get(s); + if(orderProcessInfos1.size() > 1){ + //如果全部开具成功再添加否则返回报错信息 + List collect2 = orderProcessInfos1.stream() + .filter(t -> OrderInfoEnum.ORDER_STATUS_5.getKey().equals(t.getDdzt()) || OrderInfoEnum.ORDER_STATUS_7.getKey().equals(t.getDdzt())) + .map(t -> t.getFpqqlsh()).collect(Collectors.toList()); + if(!collect2.isEmpty()){ + yfpqqlsh.addAll(collect2); + }else{ + sb2.append("本次冲红存在商旅发票,,存在未开具成功结算单:" + collect2.stream().collect(Collectors.joining(",")));//结算单号 + } + + } + } + //直接return ,存在未开具情况不查作废情况了 + if(StringUtils.isNotBlank(sb2.toString())){ + return R.error(sb2.toString()); + } + if(!yfpqqlsh.isEmpty()){ + List invoiceInfos = orderInvoiceInfoMapper.selectInvoiceInfoByFpqqlshs(yfpqqlsh); + List collect2 = invoiceInfos.stream().filter(t -> !list.contains(t.getFpdm() + "-" + t.getFphm())).map(t -> t.getFphm()).collect(Collectors.toList()); + if(!collect2.isEmpty()){ + return R.error("本次冲红存在商旅发票,以下发票号码未冲红:"+collect2.stream().collect(Collectors.joining(","))+",请注意"); + } + } break; } - - return R.ok(); } diff --git a/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml b/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml index 3c047bfe..1772ce58 100644 --- a/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml +++ b/order-management-consumer/src/main/resources/mybatis/mapper/OrderProcessInfoMapper.xml @@ -1380,6 +1380,63 @@ + + + SELECT + oii.fpqqlsh,oii.fpdm,oii.fphm,oii.ddh + FROM + order_invoice_info oii + WHERE + oii.fpqqlsh IN + + #{fpqqlsh} + + AND ( oii.zf_bz = '0' OR oii.ch_bz = '0' ) +