From 70f70c131ba2d1809b8c2c77943db3a4cca1584b Mon Sep 17 00:00:00 2001 From: liufeilong Date: Thu, 16 Mar 2023 10:06:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=9F=E6=88=90=E9=A2=84=E5=88=B6?= =?UTF-8?q?=E5=8F=91=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/constant/OrderInfoContentEnum.java | 2 +- .../manager/service/InvoiceService.java | 6 +++ .../service/impl/InvoiceServiceImpl.java | 38 +++++++++++++++++++ .../controller/OrderInvoiceController.java | 15 ++++++++ .../consumer/utils/BeanTransitionUtils.java | 1 + 5 files changed, 61 insertions(+), 1 deletion(-) 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 b89d00d0..5d2266fa 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 @@ -160,7 +160,7 @@ public enum OrderInfoContentEnum { ORDER_MERGE_FPLX_DIFFERENT_ERROR("9608", "所选订单发票类型不一致,不允许合并"), ORDER_MERGE_SKSB_DIFFERENT_ERROR("9608", "所选订单税控设备类型不一致,不允许合并"), - ORDER_MERGE_DDH_DIFFERENT_ERROR("9608", "所选结算单号不一致,不允许合并"), + ORDER_MERGE_DDH_DIFFERENT_ERROR("96081", "所选结算单号不一致,不允许合并"), ORDER_MERGE_GFXX_DIFFERENT_ERROR("9609", "所选订单购方信息不一致,不允许合并"), diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java index 6cdfb64b..cf43dfe2 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/InvoiceService.java @@ -18,6 +18,12 @@ import java.util.Map; */ public interface InvoiceService { + /** + * 生成预制发票 + * @param pageInvoiceReq + * @return + */ + R preInvoice(PageInvoiceReq pageInvoiceReq); /** * 根据id查询数据开票 * 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 ef51631c..16fd1c3b 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 @@ -114,6 +114,44 @@ public class InvoiceServiceImpl implements InvoiceService { private TaxSpecialPolicyUtil taxSpecialPolicyUtil; + @Override + public R preInvoice(PageInvoiceReq pageInvoiceReq) { + List pageInvoiceItemList = pageInvoiceReq.getPageInvoiceItemList(); + //查询数据列表 + List commonOrderInfos = orderInfoService.batchQueryOrderInfoByOrderIdsAndNsrsbh(pageInvoiceItemList); + commonOrderInfos.stream().forEach(f -> { + String terminalCode = simsBackService.getTerminalCode(f.getOrderInfo().getXhfNsrsbh(), f.getOrderInfo().getEntId()); + List originalCommonOrderInfo = new ArrayList<>(); + originalCommonOrderInfo.add(f); + List orderSplit = new ArrayList<>(); + // 订单超限额拆分 + try { + orderSplit = generateReadyOpenOrderService.orderSplit(originalCommonOrderInfo, terminalCode, pageInvoiceReq.getUserId()); + log.info("{},{}生成预制发票拆分结果:{}",LOGGER_MSG,f.getOrderInfo().getDdh(),JsonUtils.getInstance().toJsonString(orderSplit)); + } catch (OrderSplitException e) { + log.error("{}生成预制发票拆分异常:",LOGGER_MSG,e); + } + if(orderSplit.size() == 1){ + OrderProcessInfo processInfo = f.getProcessInfo(); + processInfo.setYzfp(ConfigureConstant.STRING_1); + orderProcessService.updateOrderProcessInfoByProcessId(processInfo,null); + }else if(orderSplit.size() > 1){ + List commonOrderInfoSaveResults = new ArrayList<>(); + try { + commonOrderInfoSaveResults = generateReadyOpenOrderService.saveOrderSplitInfo(orderSplit); + } catch (OrderReceiveException e) { + log.error("{}生成预制发票拆分后保存异常:",LOGGER_MSG,e); + } + commonOrderInfoSaveResults.stream().forEach(s -> { + OrderProcessInfo processInfo = s.getProcessInfo(); + processInfo.setYzfp(ConfigureConstant.STRING_1); + orderProcessService.updateOrderProcessInfoByProcessId(processInfo,null); + }); + } + }); + return R.ok("生成预制发票成功,请到开票处理页面查看"); + } + @Override public R batchInvoiceById(PageInvoiceReq pageInvoiceReq) { 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 8b3a4c7a..1a30eaef 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 @@ -131,6 +131,21 @@ public class OrderInvoiceController { } } + /** + * 生成预制发票(非拆分场景) + * @param pageInvoiceReq + * @return + */ + @PostMapping("/preInvoice") + public R preInvoice(@RequestBody PageInvoiceReq pageInvoiceReq) { + try { + return invoiceService.preInvoice(pageInvoiceReq); + } catch (Exception e) { + log.error("{}生成预制发票异常e:{}", LOGGER_MSG, e); + return R.error().put(OrderManagementConstant.MESSAGE, e.getMessage()); + } + } + /** * 订单编辑后开票 * 优税小助手调用 diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java index 5b2f949c..da644225 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/utils/BeanTransitionUtils.java @@ -3487,6 +3487,7 @@ public class BeanTransitionUtils { ddtxxBO.setBZDH(req.getZBZDH()); ddtxxBO.setXTLY(isinput.getSYSID()); ddtxxBO.setGSDM(req.getBUKRS()); + ddtxxBO.setENTID(deptEntity.getDeptId()); ddtxxBO.setBHZT(ConfigureConstant.STRING_0); ddtxxBO.setYGXM(req.getPENAM()); ddtxxBO.setKPPZH(req.getZKPPZH());