From 367e0d9a3edf9071bb75fb138a4637423745f8a1 Mon Sep 17 00:00:00 2001 From: gaorl Date: Tue, 2 May 2023 21:27:14 +0800 Subject: [PATCH] =?UTF-8?q?feature=EF=BC=9A=E8=AE=A2=E5=8D=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4=E5=8C=85=E6=8B=AC?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=8B=86=E5=88=86=E5=90=8E=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E3=80=81=E5=8F=91=E7=A5=A8=E5=BC=80=E5=85=B7=E6=8A=A5=E9=94=99?= =?UTF-8?q?redis=E9=94=81=E9=87=8A=E6=94=BE=E3=80=81=E5=8F=91=E7=A5=A8?= =?UTF-8?q?=E5=BC=80=E5=85=B7=E8=B0=83=E7=94=A8=E7=A8=8E=E6=8E=A7=E5=89=8D?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=AE=A2=E5=8D=95=E7=9A=84=E6=9C=89=E6=95=88?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/constant/OrderInfoContentEnum.java | 2 + .../consumer/model/page/PageRequestVO.java | 6 +- .../service/impl/InvoiceServiceImpl.java | 34 ++--------- .../controller/OrderInvoiceController.java | 1 + .../order/service/OrderInfoService.java | 5 ++ .../service/impl/OrderInfoServiceImpl.java | 56 +++++++++++++++++++ .../service/impl/PollInvoiceServiceImpl.java | 7 ++- .../service/impl/InterfaceServiceImplV6.java | 18 ++++-- 8 files changed, 94 insertions(+), 35 deletions(-) diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java index c4c0e8aa..c7440507 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/OrderInfoContentEnum.java @@ -56,6 +56,8 @@ public enum OrderInfoContentEnum { RECEIVE_FAILD("9999", "订单处理失败"), + INVALID_ORDER_STATUS("9644", "无效订单"), + MORE_NSRSBH_ERROR("9999", "请选择明确的销方信息进行操作"), COMMON_ERROR("9999", "企业未配置税控设备"), QD_FW_ERROR("9999", "未开通全电业务,请联系运维人员"), diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/model/page/PageRequestVO.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/model/page/PageRequestVO.java index 2cec2608..b55a2241 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/model/page/PageRequestVO.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/model/page/PageRequestVO.java @@ -21,7 +21,11 @@ public class PageRequestVO implements Serializable { * 订单处理表id */ private String orderProcessId; - + /** + * + */ + private String orderInfoId; + /** * 发票请求流水号 */ diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java index ee671c01..c9d80d3b 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java @@ -620,38 +620,16 @@ public class InvoiceServiceImpl implements InvoiceService { } - /** - * 根据税号发票种类代码分组 - */ - List commonOrderInfos = new ArrayList<>(); - - /** - * 数据补全 拆分 合并 开票数据校验 - */ - try { - commonOrderInfos = completeOrderInvoiceInfo(commonList, userId); - } catch (OrderSplitException e) { - return R.error().put(OrderManagementConstant.CODE, e.getCode()) - .put(OrderManagementConstant.MESSAGE, e.getMessage()); - } finally { - //业务完成后删除redis中的key值 - for (CommonOrderInfo common : commonList) { - String cacheFpqqlsh = String.format(RedisConstant.REDIS_ORDER_LOCK_INVOICE_KEY, common.getOrderInfo().getFpqqlsh()); - if (uuid.equals(redisService.get(cacheFpqqlsh))) { - redisService.del(cacheFpqqlsh); - } - } - } - - /** - * 调用发票开具接口 - */ + /** 数据补全 拆分 合并 开票数据校验*/ + List commonOrderInfos = completeOrderInvoiceInfo(commonList, userId); + /**调用发票开具接口*/ r = makeOutAnInvoiceService.makeOutAnInovice(commonOrderInfos, map); - + } catch (OrderSplitException e) { + r = R.error().put(OrderManagementConstant.CODE, e.getCode()).put(OrderManagementConstant.MESSAGE, e.getMessage()); } catch (Exception e) { log.error("{}发票开具异常,异常信息为:{}", LOGGER_MSG, e); - return R.error().put(OrderManagementConstant.MESSAGE, "发票开具异常"); + r = R.error().put(OrderManagementConstant.MESSAGE, "发票开具异常"); } finally { //业务完成后删除redis中的key值 for (CommonOrderInfo common : commonList) { diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java index 591d29b6..5020e224 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java @@ -447,6 +447,7 @@ public class OrderInvoiceController { orderProcessInfo1.setOrderStatus(ConfigureConstant.STRING_1); if("back".equals(ly)){ orderProcessInfo1.setBhzt(ConfigureConstant.STRING_1); + orderProcessInfo1.setFpqqlsh(pageRequest.getFpqqlsh() + "-bh" ); } int success = orderProcessService.updateOrderProcessInfoByProcessId(orderProcessInfo1, shList); if (success < 0) { diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java index df05ca67..760bca53 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java @@ -1,5 +1,6 @@ package com.dxhy.order.consumer.modules.order.service; +import com.dxhy.order.consumer.model.page.PageRequestVO; import com.dxhy.order.exception.OrderReceiveException; import com.dxhy.order.model.*; import com.dxhy.base.constant.OrderSeparationException; @@ -8,6 +9,7 @@ import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem; import com.dxhy.order.consumer.modules.order.model.PageKySlReq; import com.dxhy.order.consumer.modules.order.model.PageKySlRsp; import com.dxhy.order.consumer.modules.order.model.bo.YwlxCountTotalBO; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -209,4 +211,7 @@ public interface OrderInfoService { R ratioConversion(List orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit); int updateBillNumber(String bzdh,String orderInfoId); + + @Transactional + R logicalDeleteByOrderInfoId(List pageRequestList); } 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 5c6b8949..ded94c75 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 @@ -18,9 +18,11 @@ import com.dxhy.order.constant.ConfigureConstant; import com.dxhy.order.constant.OrderInfoContentEnum; import com.dxhy.order.constant.OrderInfoEnum; import com.dxhy.order.constant.OrderManagementConstant; +import com.dxhy.order.consumer.dao.OrderBatchRequestMapper; import com.dxhy.order.consumer.dao.OrderProcessInfoMapper; import com.dxhy.order.consumer.model.OderDetailInfo; import com.dxhy.order.consumer.model.PageOrderExt; +import com.dxhy.order.consumer.model.page.PageRequestVO; import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem; import com.dxhy.order.consumer.modules.order.model.PageKySlReq; import com.dxhy.order.consumer.modules.order.model.PageKySlRsp; @@ -48,6 +50,7 @@ import com.dxhy.order.model.newsk.taxpayerinfo.TaxpayerInfoResponse; import com.dxhy.order.model.qd.OrderInfoQd; import com.dxhy.order.model.qdsk.taxpayerinfo.Kysl; import com.dxhy.order.model.qdsk.taxpayerinfo.Qdjcxx; +import com.dxhy.order.model.sk.kp.CommonInvoiceStatus; import com.dxhy.order.utils.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -151,6 +154,9 @@ public class OrderInfoServiceImpl implements OrderInfoService { @Resource private SpecialInvoiceReversalMapper specialInvoiceReversalMapper; + @Resource + private OrderBatchRequestMapper orderBatchRequestMapper; + @Override public PageUtils selectOrderInfo(Map map, List shList, List entList) { return orderProcessService.selectOrderInfo(map, shList, entList); @@ -1695,6 +1701,56 @@ public class OrderInfoServiceImpl implements OrderInfoService { orderProcessInfo.setOrderInfoId(orderInfoId); return orderProcessInfoMapper.updateOrderProcessInfoByFpqqlsh(orderProcessInfo,null); } + + @Override + public R logicalDeleteByOrderInfoId(List pageRequestList){ + + StringBuilder errorMsgList = new StringBuilder(); + for (int i = 0; i < pageRequestList.size(); i++) { + + String preStr = ""; + try { + PageRequestVO pageRequest = pageRequestList.get(i); + + if (pageRequestList.size() > 1) { + preStr = "第" + (i + 1) + "行:"; + } + String orderInfoId = pageRequest.getOrderInfoId(); + List shList = Arrays.asList(pageRequest.getXhfNsrsbh()); + int i1 = new Random().nextInt(100); + OrderProcessInfo orderProcessInfo = new OrderProcessInfo(); + orderProcessInfo.setOrderInfoId(orderInfoId); + orderProcessInfo.setOrderStatus(ConfigureConstant.STRING_1); + orderProcessInfo.setBhzt(ConfigureConstant.STRING_1); + orderProcessInfo.setFpqqlsh(pageRequest.getFpqqlsh() + "-bh" + i1); + orderProcessInfo.setDdqqpch(pageRequest.getFpqqlsh() + "-bh" + i1); + orderProcessInfo.setUpdateTime(new Date()); + int success = orderProcessService.updateOrderProcessInfoByProcessId(orderProcessInfo, shList); + OrderInfo orderInfo = new OrderInfo(); + orderInfo.setId(orderInfoId); + orderInfo.setFpqqlsh(pageRequest.getFpqqlsh() + "-bh"+ i1); + orderInfo.setUpdateTime(new Date()); + + orderMapper.updateOrderInfoByOrderId(orderInfo,shList); + //orderBatchRequestMapper.updateByPrimaryKeySelective(); + if (success < 0) { + errorMsgList.append(preStr).append("数据删除失败").append("\r\n"); + continue; + } + + } catch (Exception e) { + log.error("{}数据删除失败:{}", LOGGER_MSG, e); + errorMsgList.append(preStr).append("数据删除失败").append("\r\n"); + continue; + } + + } + if (ObjectUtil.isNotEmpty(errorMsgList)) { + return R.error(errorMsgList.toString()); + } + return R.ok(); + } + @Override public R ratioConversion(List orderInfoIds,String ratio,String xhfNsrsbh,String originUnit,String newUnit){ //校验是否为同一税号 校验开票情况 diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/PollInvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/PollInvoiceServiceImpl.java index a7aaef1a..bec02a1d 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/PollInvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/PollInvoiceServiceImpl.java @@ -184,7 +184,12 @@ public class PollInvoiceServiceImpl implements PollInvoiceService { log.error("{}发票开具轮训查询订单信息为空!", LOGGER_MSG); throw new OrderReceiveException(OrderInfoContentEnum.INVOICE_AUTO_ERROR); } - + /**避免并发开票和逻辑删除的使用*/ + OrderProcessInfo orderProcessInfo = orderProcessInfoMapper.selectOrderProcessInfoByDdqqlsh(fpkjMqData.getFpqqlsh(), shList); + if("1".equals(orderProcessInfo.getOrderStatus())){ + log.error("{}当前订单无效,请检查", LOGGER_MSG); + throw new OrderReceiveException(OrderInfoContentEnum.INVALID_ORDER_STATUS); + } //暂停开票功能,如果企业暂停开票,并且暂停开票的原因为不需要继续请求开票code,数据不请求底层开票 TaxEquipmentInfo taxEquipmentInfo = simsBackService.queryTaxEquipment(fpkjMqData.getNsrsbh(), fpkjMqData.getEntId()); log.debug("{}查询销项后台销方开票状态,返回结果:{}",LOGGER_MSG, JsonUtils.getInstance().toJsonString(taxEquipmentInfo)); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java index 1d148f5d..76bfd6d3 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/openapi/service/impl/InterfaceServiceImplV6.java @@ -11,6 +11,7 @@ import com.dxhy.order.consumer.dao.InterfaceRequestDataMapper; import com.dxhy.order.consumer.dao.OrderProcessInfoMapper; import com.dxhy.order.consumer.model.page.PageRequestVO; import com.dxhy.order.consumer.modules.order.controller.OrderInvoiceController; +import com.dxhy.order.consumer.modules.order.service.OrderInfoService; import com.dxhy.order.consumer.modules.order.service.OrderProcessService; import com.dxhy.order.consumer.openapi.protocol.po.EsOutput; import com.dxhy.order.consumer.openapi.protocol.po.IsInput; @@ -74,7 +75,7 @@ public class InterfaceServiceImplV6 implements InterfaceServiceV6 { @Resource private OrderProcessInfoMapper orderProcessInfoMapper; @Resource - private OrderInvoiceController orderInvoiceController; + private OrderInfoService orderInfoService; @Override public DdpcxxRspV5 generateQdInvoiceV6(DdpcxxReqBO ddpcxxReq, String secretId, String kpjh) { @@ -156,20 +157,27 @@ public class InterfaceServiceImplV6 implements InterfaceServiceV6 { poCommonResponseParam.setES_OUTPUT(esOutput); return poCommonResponseParam; } - List pageRequestList = collect.stream().filter(t -> "0".contains(t.getDdzt())).map(t->{ + List collect1 = collect.stream().filter(t -> "3".equals(t.getDdly())).collect(Collectors.toList()); + if(collect.isEmpty()){ + esOutput.setZMESSAGE("此账单为非接口数据,不允许驳回"); + poCommonResponseParam.setES_OUTPUT(esOutput); + return poCommonResponseParam; + } + List pageRequestList = collect1.stream().filter(t -> "0,1,3".contains(t.getDdzt())).map(t->{ PageRequestVO pageRequestVO = new PageRequestVO(); pageRequestVO.setOrderProcessId(t.getId()); + pageRequestVO.setOrderInfoId(t.getOrderInfoId()); pageRequestVO.setXhfNsrsbh(t.getXhfNsrsbh()); pageRequestVO.setFpqqlsh(t.getFpqqlsh()); return pageRequestVO; }).collect(Collectors.toList()); - if(pageRequestList.size() != collect.size()){ + if(pageRequestList.size() != collect1.size()){ esOutput.setZMESSAGE("账单号已在发票系统处理,不允许驳回"); poCommonResponseParam.setES_OUTPUT(esOutput); return poCommonResponseParam; } - - R back = orderInvoiceController.updateOrderStatus(pageRequestList, "back"); + R back = orderInfoService.logicalDeleteByOrderInfoId(pageRequestList); + //R back = orderInvoiceController.updateOrderStatus(pageRequestList, "back"); if(!"0000".equals(back.get(OrderManagementConstant.CODE))){ esOutput.setZMESSAGE(back.get(OrderManagementConstant.MESSAGE).toString()); poCommonResponseParam.setES_OUTPUT(esOutput);