diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/controller/OrderHandleController.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/controller/OrderHandleController.java index 90412f2..5aaa859 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/controller/OrderHandleController.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/controller/OrderHandleController.java @@ -3,12 +3,16 @@ package com.dxhy.order.consumer.modules.bespoke.controller; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson2.JSON; import com.dxhy.base.common.model.R; +import com.dxhy.base.common.utils.JsonUtils; +import com.dxhy.base.common.utils.NsrsbhUtils; import com.dxhy.management.common.constant.ConfigureConstant; import com.dxhy.order.baseservice.annotation.SysLog; import com.dxhy.order.baseservice.constant.OrderValidateEnum; +import com.dxhy.order.baseservice.exception.OrderReceiveException; import com.dxhy.order.consumer.modules.bespoke.config.datasource.config.DynamicContextHolder; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam; import com.dxhy.order.consumer.modules.bespoke.service.OrderHandleService; +import com.dxhy.order.invoice.module.invoice.model.OrderListQuery; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -20,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.Date; +import java.util.List; @Slf4j @RestController @@ -195,5 +200,37 @@ public class OrderHandleController { } + @PostMapping("/createOrderByCopyInvoice") + @ApiOperation(value = "发票复制生成订单", notes = "订单发票管理-发票复制生成订单") + @SysLog(operation = "发票复制生成订单", operationDesc = "发票复制生成订单", key = "发票复制生成订单") + public R createOrderByCopyInvoice(@RequestBody OrderListQuery orderBatchQuery) { + try { + log.debug("发票复制生成订单:{}", JsonUtils.getInstance().toJsonString(orderBatchQuery)); + + if (StringUtils.isBlank(orderBatchQuery.getXhfNsrsbh())) { + log.error("请求税号为空!"); + return R.error(OrderValidateEnum.TAXCODE_ISNULL.getKey(), OrderValidateEnum.TAXCODE_ISNULL.getMessage()); + } + + //数据转化 + List shList = NsrsbhUtils.transShListByXhfNsrsbh(orderBatchQuery.getXhfNsrsbh()); + List entList = NsrsbhUtils.transShListByXhfNsrsbh(orderBatchQuery.getEntList()); + List fpqqlshList = JSON.parseArray(orderBatchQuery.getFpqqlshList(), String.class); + if (fpqqlshList == null || fpqqlshList.isEmpty()) { + return R.error("发票请求流水号不能为空"); + } + int count = orderHandleService.createOrderByCopyInvoice(fpqqlshList.get(ConfigureConstant.INT_0), shList, entList,orderBatchQuery.getFpzldm()); + + return R.ok().put(ConfigureConstant.MSG, "订单复制成功"); + } catch (OrderReceiveException e) { + log.error("发票复制订单异常", e); + return R.error(e.getMessage()); + } catch (Exception e) { + log.error("发票复制订单异常", e); + return R.error(); + } + + } + } diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/OrderHandleService.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/OrderHandleService.java index a54ef5d..5e89290 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/OrderHandleService.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/OrderHandleService.java @@ -1,8 +1,11 @@ package com.dxhy.order.consumer.modules.bespoke.service; import com.dxhy.base.common.model.R; +import com.dxhy.order.baseservice.exception.OrderReceiveException; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam; +import java.util.List; + public interface OrderHandleService { /** * 订单读入 @@ -31,4 +34,14 @@ public interface OrderHandleService { * @return */ R orderExtract(ReqParam reqParam); + + /** + * 发票复制生成订单 + * @param fpqqlsh + * @param shList + * @param entList + * @return + * @throws OrderReceiveException + */ + int createOrderByCopyInvoice(String fpqqlsh, List shList, List entList,String fpzldm) throws OrderReceiveException; } diff --git a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java index 957a5a2..727abfc 100644 --- a/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java +++ b/order-management-order/src/main/java/com/dxhy/order/consumer/modules/bespoke/service/impl/OrderHandleServiceImpl.java @@ -1,15 +1,61 @@ package com.dxhy.order.consumer.modules.bespoke.service.impl; import cn.hutool.extra.spring.SpringUtil; +import com.dxhy.base.common.constant.ConfigureConstant; +import com.dxhy.base.common.model.OrderInfo; +import com.dxhy.base.common.model.OrderItemInfo; +import com.dxhy.base.common.model.OrderProcessInfo; import com.dxhy.base.common.model.R; +import com.dxhy.base.common.model.qd.OrderInfoQd; +import com.dxhy.base.common.utils.DistributedKeyMaker; +import com.dxhy.base.thirdservice.module.base.service.BaseService; +import com.dxhy.order.baseservice.exception.OrderReceiveException; +import com.dxhy.order.baseservice.model.OrderInvoiceInfo; +import com.dxhy.order.baseservice.model.OrderOriginExtendInfo; +import com.dxhy.order.consumer.dao.OrderOriginExtendInfoMapper; +import com.dxhy.order.consumer.dao.OrderProcessInfoMapper; import com.dxhy.order.consumer.modules.bespoke.config.ServiceConfig; import com.dxhy.order.consumer.modules.bespoke.model.req.ReqParam; import com.dxhy.order.consumer.modules.bespoke.service.OrderHandleService; import com.dxhy.order.consumer.modules.bespoke.service.OrderService; +import com.dxhy.order.invoice.module.invoice.dao.OrderInfoMapper; +import com.dxhy.order.invoice.module.invoice.dao.OrderInfoQdMapper; +import com.dxhy.order.invoice.module.invoice.dao.OrderInvoiceInfoMapper; +import com.dxhy.order.invoice.module.invoice.dao.OrderItemInfoMapper; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; - +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; +@Slf4j @Service public class OrderHandleServiceImpl implements OrderHandleService { + + @Resource + private OrderInvoiceInfoMapper orderInvoiceInfoMapper; + + @Resource + private OrderInfoMapper orderInfoMapper; + + @Resource + private OrderItemInfoMapper orderItemInfoMapper; + + @Resource + private OrderProcessInfoMapper orderProcessInfoMapper; + + @Resource + private OrderOriginExtendInfoMapper orderOriginExtendInfoMapper; + + @Resource + private OrderInfoQdMapper orderInfoQdMapper; + + @Resource + private BaseService baseService; + + @Override public R readOrder(ReqParam reqParam) { //获取对应服务bean @@ -34,4 +80,143 @@ public class OrderHandleServiceImpl implements OrderHandleService { OrderService orderService = SpringUtil.getBean(ServiceConfig.getService(reqParam.getNsrsbh()), OrderService.class); return orderService.orderExtract(reqParam); } + + @Override + public int createOrderByCopyInvoice(String fpqqlsh, List shList, List entList,String fpzldm) throws OrderReceiveException { + //查询发票信息 + OrderInvoiceInfo orderInvoiceInfoParam = new OrderInvoiceInfo(); + orderInvoiceInfoParam.setFpqqlsh(fpqqlsh); + OrderInvoiceInfo orderInvoiceInfo = orderInvoiceInfoMapper.selectOrderInvoiceInfo(orderInvoiceInfoParam, shList); + if (orderInvoiceInfo == null) { + throw new OrderReceiveException(ConfigureConstant.STRING_9999, "未能查询到发票信息"); + } + if (!ConfigureConstant.STRING_3.equals(orderInvoiceInfo.getFply())) { + throw new OrderReceiveException(ConfigureConstant.STRING_9999, "非接口导入数据不允许复制"); + } + //查询order + OrderInfo orderInfo = orderInfoMapper.selectOrderInfoByOrderId(orderInvoiceInfo.getOrderInfoId(), shList); + if (orderInfo == null) { + throw new OrderReceiveException(ConfigureConstant.STRING_9999, "未能查询到订单信息"); + } + String oldOrderId = orderInfo.getId(); + //查询订单明细 + List orderItemInfos = orderItemInfoMapper.selectOrderItemInfoByOrderId(orderInfo.getId(), shList); + if (orderItemInfos == null || orderItemInfos.isEmpty()) { + throw new OrderReceiveException(ConfigureConstant.STRING_9999, "未能查询到明细信息"); + } + //查询order_process_info + OrderProcessInfo orderProcessInfoParam = new OrderProcessInfo(); + orderProcessInfoParam.setId(orderInfo.getProcessId()); + OrderProcessInfo orderProcessInfo = orderProcessInfoMapper.selectOrderProcessInfo(orderProcessInfoParam, shList); + if (orderProcessInfo == null) { + throw new OrderReceiveException(ConfigureConstant.STRING_9999, "未能查询到订单过程信息"); + } + //处理订单信息 + String orderId = baseService.getGenerateShotKey(); + String orderProcessId = baseService.getGenerateShotKey(); + String fpqqlshNew = DistributedKeyMaker.generateShotKey(); + String ddh = orderInfo.getDdh().concat("copy"); + log.info("订单号:{},长度{}",ddh,ddh.length()); + if (ddh.length()>50){ + log.info("ddh长度大于50,截取后50位"); + ddh = ddh.substring(ddh.length()-50); + log.info("截取后50位ddh:"+ddh); + } + Date now = new Date(); + //订单信息修改 + orderInfo.setId(orderId); + orderInfo.setProcessId(orderProcessId); + orderInfo.setFpqqlsh(fpqqlshNew); + orderInfo.setDdh(ddh); + orderInfo.setDdlx(ConfigureConstant.STRING_0); + orderInfo.setDdrq(now); + orderInfo.setFpzlDm(fpzldm); + orderInfo.setByzd1(fpqqlsh); + orderInfo.setUpdateTime(now); + orderInfo.setCreateTime(now); + orderInfoMapper.insertOrderInfo(orderInfo); + //订单明细处理和入库 + for (OrderItemInfo orderItemInfo : orderItemInfos) { + orderItemInfo.setId(baseService.getGenerateShotKey()); + orderItemInfo.setOrderInfoId(orderId); + orderItemInfo.setCreateTime(now); + orderItemInfoMapper.insertOrderItemInfo(orderItemInfo); + } + //order_invoice_Info + orderInvoiceInfo.setId(baseService.getGenerateShotKey()); + orderInvoiceInfo.setOrderInfoId(orderId); + orderInvoiceInfo.setOrderProcessInfoId(orderProcessId); + orderInvoiceInfo.setFpqqlsh(fpqqlshNew); + orderInvoiceInfo.setDdh(ddh); + orderInvoiceInfo.setFply(ConfigureConstant.STRING_3); + orderInvoiceInfo.setKpzt(ConfigureConstant.STRING_0); + orderInvoiceInfo.setKprq(null); + orderInvoiceInfo.setFphm(""); + orderInvoiceInfo.setFpdm(""); + orderInvoiceInfo.setSdfphm(""); + orderInvoiceInfo.setJym(""); + orderInvoiceInfo.setSbdm(""); + orderInvoiceInfo.setSbyy(""); + orderInvoiceInfo.setSkcwms(""); + orderInvoiceInfo.setSkcwdm(""); + orderInvoiceInfo.setCreateTime(now); + orderInvoiceInfo.setUpdateTime(now); + orderInvoiceInfo.setFwm(""); + orderInvoiceInfo.setEwm(""); + orderInvoiceInfo.setJqbh(""); + orderInvoiceInfo.setPdfUrl(""); + orderInvoiceInfo.setRzZt(""); + orderInvoiceInfo.setZfyy(""); + orderInvoiceInfo.setFpzlDm(fpzldm); + String kplsh = baseService.getGenerateShotKey(); + orderInvoiceInfo.setKplsh(kplsh); + orderInvoiceInfoMapper.insertOrderInvoiceInfo(orderInvoiceInfo); + //order_process_info + orderProcessInfo.setId(orderProcessId); + orderProcessInfo.setOrderInfoId(orderId); + orderProcessInfo.setFpqqlsh(fpqqlshNew); + orderProcessInfo.setDdh(ddh); + orderProcessInfo.setDdcjsj(now); + orderProcessInfo.setDdlx(ConfigureConstant.STRING_0); + orderProcessInfo.setDdzt(ConfigureConstant.STRING_0); + orderProcessInfo.setDdly(ConfigureConstant.STRING_3); + orderProcessInfo.setSbyy(""); + orderProcessInfo.setFpzlDm(fpzldm); + orderProcessInfo.setOrderStatus(ConfigureConstant.STRING_0); + orderProcessInfo.setDdqqpch(fpqqlshNew); + orderProcessInfoMapper.insertOrderProcessInfo(orderProcessInfo); + //扩展表 + OrderOriginExtendInfo orderOriginExtendInfoSelect = new OrderOriginExtendInfo(); + orderOriginExtendInfoSelect.setOrderId(oldOrderId); + List orderOriginExtendInfos = orderOriginExtendInfoMapper.queryOriginOrderByOrder(orderOriginExtendInfoSelect, shList); + if (CollectionUtils.isNotEmpty(orderOriginExtendInfos)){ + for (OrderOriginExtendInfo orderOriginExtendInfo : orderOriginExtendInfos) { + OrderOriginExtendInfo orderOrginOrder = new OrderOriginExtendInfo(); + orderOrginOrder.setCreateTime(now); + orderOrginOrder.setUpdateTime(now); + orderOrginOrder.setId(baseService.getGenerateShotKey()); + orderOrginOrder.setOrderId(orderId); + orderOrginOrder.setFpqqlsh(fpqqlshNew); + orderOrginOrder.setOriginFpqqlsh(orderOriginExtendInfo.getOriginFpqqlsh()); + orderOrginOrder.setOriginOrderId(orderOriginExtendInfo.getOriginOrderId()); + orderOrginOrder.setOriginDdh(orderOriginExtendInfo.getOriginDdh()); + orderOrginOrder.setXhfNsrsbh(orderInfo.getXhfNsrsbh()); + orderOrginOrder.setStatus(ConfigureConstant.STRING_0); + orderOriginExtendInfoMapper.insertOrderOriginExtend(orderOrginOrder); + } + } + + //全电表 + OrderInfoQd orderInfoQd = orderInfoQdMapper.queryOrderInfoQdByFpqqlsh(fpqqlsh, shList); + if (ObjectUtils.isNotEmpty(orderInfoQd)) { + orderInfoQd.setId(baseService.getGenerateShotKey()); + orderInfoQd.setOrderId(orderId); + orderInfoQd.setProcessId(orderProcessId); + orderInfoQd.setFpqqlsh(fpqqlshNew); + orderInfoQd.setCreateTime(now); + orderInfoQd.setUpdateTime(now); + orderInfoQdMapper.insertOrderInfoQd(orderInfoQd); + } + return ConfigureConstant.INT_1; + } }