From 137434eb0c06d6de2dae0e20b85c24d6d588344e Mon Sep 17 00:00:00 2001 From: zhenghaoyu Date: Sat, 24 Jun 2023 12:31:32 +0800 Subject: [PATCH] =?UTF-8?q?1.mq=E6=8E=A5=E6=94=B6=E6=B6=88=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E5=AD=98=E5=85=A5=E5=9C=A8=E5=BA=93=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=BF=A1=E6=81=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feign/IDistributionParcelListClient.java | 10 +- .../IDistributionStockArticleClient.java | 6 +- .../logpm/oldproject/entity/OrderEntity.java | 155 ++++++++++++++++++ .../feign/IAdvanceDetailClient.java | 9 + .../logpm/oldproject/feign/IOrderClient.java | 43 +++++ .../vo/DistributionParcelListEntityVO.java | 67 ++++++++ .../feign/DistributionParcelListClient.java | 16 ++ .../feign/DistributionStockArticleClient.java | 10 ++ blade-service/logpm-factory/pom.xml | 6 + .../factory/receiver/DealWithDataHandler.java | 70 ++++++++ .../controller/PanFactoryDataController.java | 6 +- .../snm/service/IPanFactoryDataService.java | 3 + .../impl/PanFactoryDataServiceImpl.java | 103 +++++++++++- .../oldproject/feign/AdvanceDetailClient.java | 14 ++ .../logpm/oldproject/feign/OrderClient.java | 44 +++++ .../mapper/AdvanceDetailMapper.java | 4 + .../oldproject/mapper/AdvanceDetailMapper.xml | 23 ++- .../logpm/oldproject/mapper/OrderMapper.java | 31 ++++ .../logpm/oldproject/mapper/OrderMapper.xml | 7 + .../service/IAdvanceDetailService.java | 7 + .../oldproject/service/IOrderService.java | 11 ++ .../impl/AdvanceDetailServiceImpl.java | 15 ++ .../service/impl/OrderServiceImpl.java | 25 +++ 23 files changed, 676 insertions(+), 9 deletions(-) create mode 100644 blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/entity/OrderEntity.java create mode 100644 blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IOrderClient.java create mode 100644 blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/vo/DistributionParcelListEntityVO.java create mode 100644 blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java create mode 100644 blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/OrderClient.java create mode 100644 blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.java create mode 100644 blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.xml create mode 100644 blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IOrderService.java create mode 100644 blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/OrderServiceImpl.java diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java index 5b2b38963..ba7f33a9e 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java @@ -16,12 +16,15 @@ */ package com.logpm.distribution.feign; -import org.springblade.core.mp.support.BladePage; import com.logpm.distribution.entity.DistributionParcelListEntity; +import org.springblade.core.mp.support.BladePage; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.List; + /** * 在库订单包件清单 Feign接口类 * @@ -46,4 +49,9 @@ public interface IDistributionParcelListClient { @GetMapping(TOP) BladePage top(@RequestParam("current") Integer current, @RequestParam("size") Integer size); + @GetMapping(API_PREFIX+"/findByPacketBarCode") + DistributionParcelListEntity findByPacketBarCode(String unitNo); + + @GetMapping(API_PREFIX+"/addBatch") + boolean addBatch(@RequestBody List parcelListEntityList); } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java index 125dde48d..c13476c35 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java @@ -16,10 +16,12 @@ */ package com.logpm.distribution.feign; -import org.springblade.core.mp.support.BladePage; import com.logpm.distribution.entity.DistributionStockArticleEntity; +import org.springblade.core.mp.support.BladePage; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; /** @@ -46,4 +48,6 @@ public interface IDistributionStockArticleClient { @GetMapping(TOP) BladePage top(@RequestParam("current") Integer current, @RequestParam("size") Integer size); + @PostMapping(API_PREFIX + "/addData") + Long addData(@RequestBody DistributionStockArticleEntity distributionStockArticleEntity); } diff --git a/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/entity/OrderEntity.java b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/entity/OrderEntity.java new file mode 100644 index 000000000..d338be7d3 --- /dev/null +++ b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/entity/OrderEntity.java @@ -0,0 +1,155 @@ +package com.logpm.oldproject.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("ht_order") +@ApiModel(value = "Order对象", description = "订单信息") +public class OrderEntity { + + @TableId( + value = "id", + type = IdType.AUTO + ) + private Integer id; + + private Integer test; + + @ApiModelProperty(value = "订单号") + @TableField("number") + private String number; + + @ApiModelProperty(value = "服务号") + @TableField("servicenum") + private String servicenum; + + @ApiModelProperty(value = "仓库id") + @TableField("warehouse_id") + private Integer warehouseId; + + @ApiModelProperty(value = "货区id") + @TableField("cargo_id") + private Integer cargoId; + + @ApiModelProperty(value = "货架id") + @TableField("shelf_id") + private Integer shelfId; + + @ApiModelProperty(value = "货位id") + @TableField("location_id") + private String locationId; + + @ApiModelProperty(value = "订单来源") + @TableField("source") + private String source; + + @ApiModelProperty(value = "紧急程度:0=正常,1=加急") + @TableField("emergency") + private Integer emergency; + + @ApiModelProperty(value = "订单自编号") + @TableField("selfnumber") + private String selfnumber; + + @ApiModelProperty(value = "客户姓名") + @TableField("contact") + private String contact; + + @ApiModelProperty(value = "联系方式") + @TableField("phone") + private String phone; + + @ApiModelProperty(value = "收货地址") + @TableField("address") + private String address; + + @ApiModelProperty(value = "上门提货:0=否,1=是") + @TableField("door") + private Integer door; + + @ApiModelProperty(value = "总订单数量【未使用】") + @TableField("total") + private Integer total; + + @ApiModelProperty(value = "付款方式") + @TableField("payment") + private String payment; + + @ApiModelProperty(value = "入库状态") + @TableField("status") + private Integer status; + + @ApiModelProperty(value = "入库数量【未使用】") + @TableField("in_num") + private Integer inNum; + + @ApiModelProperty(value = "装车数量【未使用】") + @TableField("trans_num") + private Integer transNum; + + @ApiModelProperty(value = "分拣数量【未使用】") + @TableField("sorting") + private Integer sorting; + + @ApiModelProperty(value = "出库数量【未使用】") + @TableField("out_num") + private Integer outNum; + + @ApiModelProperty(value = "配送数量【未使用】") + @TableField("delive_num") + private Integer deliveNum; + + @ApiModelProperty(value = "签收数量【未使用】") + @TableField("sign_num") + private Integer signNum; + + @ApiModelProperty(value = "创建时间") + @TableField("create_time") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + @TableField("update_time") + private Date updateTime; + + @ApiModelProperty(value = "删除时间") + @TableField("delete_time") + private Integer deleteTime; + + @ApiModelProperty(value = "创建人") + @TableField("administrators_id") + private Integer administratorsId; + + @ApiModelProperty(value = "是否异常") + @TableField("abnormal") + private Integer abnormal; + + @ApiModelProperty(value = "寄件人") + @TableField("sender") + private String sender; + + @ApiModelProperty(value = "寄件人电话") + @TableField("sender_tel") + private String senderTel; + + @ApiModelProperty(value = "寄件人地址") + @TableField("sender_address") + private String senderAddress; + + @ApiModelProperty(value = "上架状态:0未上架,1已上架,2部分上架,3已下架") + @TableField("on_shelf_type") + private Integer onShelfType; + + @ApiModelProperty(value = "旧id") + @TableField("old_id") + private Integer oldId; + + +} diff --git a/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IAdvanceDetailClient.java b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IAdvanceDetailClient.java index 6a37d05fc..ec3198c37 100644 --- a/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IAdvanceDetailClient.java +++ b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IAdvanceDetailClient.java @@ -17,12 +17,14 @@ package com.logpm.oldproject.feign; import com.logpm.oldproject.entity.AdvanceDetailEntity; +import com.logpm.oldproject.vo.DistributionParcelListEntityVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; +import java.util.List; import java.util.Map; /** @@ -66,4 +68,11 @@ public interface IAdvanceDetailClient { */ @GetMapping(API_PREFIX + "/getSupplyData") Map getSupplyData(@RequestParam String unitNo); + + @GetMapping(API_PREFIX + "/getOneByUnitNo") + AdvanceDetailEntity getOneByUnitNo(@RequestParam String unitNo); + + @GetMapping(API_PREFIX + "/getListByOrderSelfNum") + List getListByOrderSelfNum(@RequestParam String orderSelfNum); + } diff --git a/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IOrderClient.java b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IOrderClient.java new file mode 100644 index 000000000..2725b5fae --- /dev/null +++ b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/feign/IOrderClient.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.oldproject.feign; + +import com.logpm.oldproject.entity.OrderEntity; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * 订单 Feign接口类 + * + * @author zhy + * @since 2023-06-24 + */ +@FeignClient( + value = "logpm-old-project" +) +public interface IOrderClient { + + String API_PREFIX = "/client"; + + @GetMapping(API_PREFIX + "/getOrderByOrderSelfNum") + List getOrderByOrderSelfNum(@RequestParam String orderSelfNum); + + +} diff --git a/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/vo/DistributionParcelListEntityVO.java b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/vo/DistributionParcelListEntityVO.java new file mode 100644 index 000000000..eff4d0a1a --- /dev/null +++ b/blade-service-api/logpm-old-project-api/src/main/java/com/logpm/oldproject/vo/DistributionParcelListEntityVO.java @@ -0,0 +1,67 @@ +package com.logpm.oldproject.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class DistributionParcelListEntityVO { + + @ApiModelProperty(value = "仓库") + private String warehouse; + /** + * 状态 + */ + @ApiModelProperty(value = "状态") + private Integer conditions; + /** + * 包条码 + */ + @ApiModelProperty(value = "包条码") + private String packetBarCode; + /** + * 货位信息 + */ + @ApiModelProperty(value = "货位信息") + private String goodsAllocation; + /** + * 所在托盘 + */ + @ApiModelProperty(value = "所在托盘") + private String pallet; + /** + * 一级品 + */ + @ApiModelProperty(value = "一级品") + private String firsts; + /** + * 二级品 + */ + @ApiModelProperty(value = "二级品") + private String second; + /** + * 三级品 + */ + @ApiModelProperty(value = "三级品") + private String thirdProduct; + /** + * 物料 + */ + @ApiModelProperty(value = "物料") + private String material; + /** + * 数量 + */ + @ApiModelProperty(value = "数量") + private Integer quantity; + /** + * 车次号 + */ + @ApiModelProperty(value = "车次号") + private String trainNumber; + /** + * 在库订单ID + */ + @ApiModelProperty(value = "在库订单ID") + private String stockArticleId; + +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java index 7252708ce..25ea5fc26 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java @@ -16,6 +16,7 @@ */ package com.logpm.distribution.feign; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.AllArgsConstructor; import org.springblade.core.mp.support.BladePage; @@ -27,6 +28,8 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; +import java.util.List; + /** * 在库订单包件清单 Feign实现类 * @@ -50,4 +53,17 @@ public class DistributionParcelListClient implements IDistributionParcelListClie return BladePage.of(page); } + @Override + @GetMapping(API_PREFIX+"/findByPacketBarCode") + public DistributionParcelListEntity findByPacketBarCode(String unitNo) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("packet_bar_code",unitNo); + return distributionParcelListService.getOne(queryWrapper); + } + + @Override + public boolean addBatch(List parcelListEntityList) { + return distributionParcelListService.saveBatch(parcelListEntityList); + } + } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java index 353567e33..03637f1f4 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java @@ -50,4 +50,14 @@ public class DistributionStockArticleClient implements IDistributionStockArticle return BladePage.of(page); } + @Override + public Long addData(DistributionStockArticleEntity distributionStockArticleEntity) { + boolean saveFlag = distributionStockArticleService.save(distributionStockArticleEntity); + if(saveFlag){ + return distributionStockArticleEntity.getId(); + }else{ + return 0L; + } + } + } diff --git a/blade-service/logpm-factory/pom.xml b/blade-service/logpm-factory/pom.xml index 9e830d9f2..e77c72afa 100644 --- a/blade-service/logpm-factory/pom.xml +++ b/blade-service/logpm-factory/pom.xml @@ -80,6 +80,12 @@ org.springframework.boot spring-boot-starter-amqp + + org.springblade + logpm-distribution-api + 3.1.0.RELEASE + compile + diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java new file mode 100644 index 000000000..5c7314161 --- /dev/null +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/receiver/DealWithDataHandler.java @@ -0,0 +1,70 @@ +package com.logpm.factory.receiver; + +import com.logpm.factory.snm.dto.OrderStatusDTO; +import com.logpm.factory.snm.service.IPanFactoryDataService; +import com.logpm.oldproject.feign.IAdvanceDetailClient; +import com.rabbitmq.client.Channel; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.RabbitConstant; +import org.springblade.common.exception.CustomerException; +import org.springblade.core.tool.utils.StringUtil; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitHandler; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.Map; + + +/** + * 获取订单数据 处理器 + * + * @author yangkai.shen + */ +@Slf4j +@RabbitListener(queues = RabbitConstant.DEAL_WITH_QUEUE) +@Component +public class DealWithDataHandler { + + @Autowired + private IAdvanceDetailClient advanceDetailClient; + @Autowired + private IPanFactoryDataService panFactoryDataService; + + private Integer retryCount = 1; + + @RabbitHandler + public void dealWithDataHandler(Map map, Message message, Channel channel) throws IOException { + // 如果手动ACK,消息会被监听消费,但是消息在队列中依旧存在,如果 未配置 acknowledge-mode 默认是会在消费完毕后自动ACK掉 + final long deliveryTag = message.getMessageProperties().getDeliveryTag(); + log.info("##################我进入这里了 retryCount={}",retryCount++); + OrderStatusDTO orderStatusDTO = (OrderStatusDTO) map.get("messageData"); + String status = orderStatusDTO.getStatus(); + String unitNo = orderStatusDTO.getUnitNo(); + if("4".equals(status)){ + //继续判断是否到达目的仓 + String currentWarehouseId = orderStatusDTO.getCurrentWarehouse();//当前仓Id + //查询destinationWarehouse logiBillNo plantId数据 + Map supplyData = advanceDetailClient.getSupplyData(unitNo); + String destinationWarehouseId = supplyData.get("destinationWarehouseId");//目的仓id + if(StringUtil.isBlank(currentWarehouseId)||StringUtil.isBlank(destinationWarehouseId)){ + log.warn("##############dealWithDataHandler: 仓库数据有问题currentWarehouseId={} destinationWarehouseId={}",currentWarehouseId,destinationWarehouseId); + throw new CustomerException(405,"仓库数据有误"); + }else{ + if(!currentWarehouseId.equals(destinationWarehouseId)){ + log.info("##############dealWithDataHandler: 不用处理的状态 currentWarehouseId={} destinationWarehouseId={}",currentWarehouseId,destinationWarehouseId); + channel.basicAck(deliveryTag,false); + }else{ + //真正的处理需要的数据 + panFactoryDataService.handleDataToPlatform(unitNo); + } + } + + }else{ + log.info("##############dealWithDataHandler: 不用处理的状态 status={}",status); + channel.basicAck(deliveryTag,false); + } + } +} diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java index 85ac72f3f..f47057ded 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/controller/PanFactoryDataController.java @@ -202,11 +202,13 @@ public class PanFactoryDataController extends BladeController { Map map=new HashMap<>(); map.put("messageId", CommonUtil.getUUID()); map.put("logId", panOrderStatusLog.getId()); + map.put("type", "Push"); map.put("messageData",orderStatusDTO); map.put("createTime",new Date().getTime()); //将消息携带绑定键值 - rabbitTemplate.convertAndSend(RabbitConstant.ORDER_STATUS_EXCHANGE, RabbitConstant.ORDER_STATUS_ROUTING, map,new CorrelationData(String.valueOf(panOrderStatusLog.getId()))); - rabbitTemplate.convertAndSend(RabbitConstant.DEAL_WITH_EXCHANGE, RabbitConstant.DEAL_WITH_ROUTING, map,new CorrelationData(String.valueOf(panOrderStatusLog.getId()))); + rabbitTemplate.convertAndSend(RabbitConstant.ORDER_STATUS_EXCHANGE, RabbitConstant.ORDER_STATUS_ROUTING, map); + map.put("type", "DealWith"); + rabbitTemplate.convertAndSend(RabbitConstant.DEAL_WITH_EXCHANGE, RabbitConstant.DEAL_WITH_ROUTING,map); // R r = factoryDataService.handleStatusData(orderStatusDTO); diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/IPanFactoryDataService.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/IPanFactoryDataService.java index 09bd2788a..003238c1d 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/IPanFactoryDataService.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/IPanFactoryDataService.java @@ -14,4 +14,7 @@ public interface IPanFactoryDataService { R handleData(OrderInfoDTO orderInfoDTO); R handleStatusData(OrderStatusDTO orderStatusDTO); + + void handleDataToPlatform(String unitNo); + } diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java index 8d4196e51..66b22e945 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/snm/service/impl/PanFactoryDataServiceImpl.java @@ -1,10 +1,15 @@ package com.logpm.factory.snm.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.shaded.com.google.gson.Gson; import com.alibaba.nacos.shaded.com.google.gson.GsonBuilder; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.logpm.distribution.entity.DistributionParcelListEntity; +import com.logpm.distribution.entity.DistributionStockArticleEntity; +import com.logpm.distribution.feign.IDistributionParcelListClient; +import com.logpm.distribution.feign.IDistributionStockArticleClient; import com.logpm.factory.props.PanFactoryProperties; import com.logpm.factory.snm.bean.Resp; import com.logpm.factory.snm.dto.OrderInfoDTO; @@ -15,8 +20,14 @@ import com.logpm.factory.snm.service.IPanFactoryDataService; import com.logpm.factory.snm.service.IPanFactoryOrderService; import com.logpm.factory.snm.service.IPanOrderStatusLogService; import com.logpm.factory.snm.service.IPanPackageInfoService; +import com.logpm.oldproject.entity.AdvanceDetailEntity; +import com.logpm.oldproject.entity.AdvanceEntity; +import com.logpm.oldproject.entity.OrderEntity; +import com.logpm.oldproject.feign.IAdvanceClient; import com.logpm.oldproject.feign.IAdvanceDetailClient; +import com.logpm.oldproject.feign.IOrderClient; import com.logpm.oldproject.feign.IWarehouseClient; +import com.logpm.oldproject.vo.DistributionParcelListEntityVO; import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,9 +37,7 @@ import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; +import java.util.*; @AllArgsConstructor @Service @@ -47,6 +56,11 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { private final IPanFactoryOrderService panFactoryOrderService; private final IAdvanceDetailClient advanceDetailClient; private final IWarehouseClient warehouseClient; + private final IOrderClient orderClient; + private final IAdvanceClient advanceClient; + + private final IDistributionParcelListClient distributionParcelListClient; + private final IDistributionStockArticleClient distributionStockArticleClient; // @Override // public FactoryTokenVO getToken(String corpId, String appKey, String appSecret) throws NoSuchAlgorithmException { @@ -234,7 +248,6 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { return Resp.success("SUCCESS"); } - private String getPanToken(){ Map map = new HashMap<>(); map.put("client_id",panFactoryProperties.getClientId()); @@ -260,4 +273,86 @@ public class PanFactoryDataServiceImpl implements IPanFactoryDataService { } + @Transactional + @Override + public void handleDataToPlatform(String unitNo) { + logger.info("############handleDataToPlatform: 处理数据到platform unitNo={}",unitNo); + //先查询包件是否已存入到新系统数据库 + DistributionParcelListEntity distributionParcelListEntity = distributionParcelListClient.findByPacketBarCode(unitNo); + if(Objects.isNull(distributionParcelListEntity)){ + //未找到包件信息那就去新增 + //1.根据包条码去老系统数据库找到对应的包条信息 + AdvanceDetailEntity advanceDetailEntity = advanceDetailClient.getOneByUnitNo(unitNo); + if(Objects.isNull(advanceDetailEntity)){ + logger.warn("#################handleDataToPlatform: 未找到对应的包条信息 unitNo={}",unitNo); + throw new CustomerException(405,"未找到对应的包条信息"); + } + //2.根据包条信息拿到订单信息 + String orderSelfNum = advanceDetailEntity.getOrderSelfNum();//订单自编码 + //2.1如果订单信息出现两条,就正序排列取时间最早的一条,并在存入platform的时候打上标记 + List orderEntityList = orderClient.getOrderByOrderSelfNum(orderSelfNum); + AdvanceEntity advanceEntity = advanceClient.getQueryDataOne(orderSelfNum); + if(Objects.isNull(advanceEntity)){ + logger.warn("#################handleDataToPlatform: 未找到对应的订单信息 orderSelfNum={}",orderSelfNum); + throw new CustomerException(405,"未找到对应的订单信息"); + } + int size = orderEntityList.size();//数据数量 + if(size < 1){ + logger.warn("#################handleDataToPlatform: 未找到对应的订单信息 orderSelfNum={}",orderSelfNum); + throw new CustomerException(405,"未找到对应的订单信息"); + } + OrderEntity orderEntity = orderEntityList.get(0); + Integer warehouseId = orderEntity.getWarehouseId();//仓库id + //根据仓库id查询仓库 + String warehouseName = warehouseClient.selectNameById(warehouseId); + + DistributionStockArticleEntity distributionStockArticleEntity = new DistributionStockArticleEntity(); + distributionStockArticleEntity.setServiceNumber(orderEntity.getServicenum()); + distributionStockArticleEntity.setOrderSelfNumbering(orderEntity.getSelfnumber()); + distributionStockArticleEntity.setMallName(advanceEntity.getStoreName()); + distributionStockArticleEntity.setDescriptionGoods(advanceEntity.getFirstPackName()); + distributionStockArticleEntity.setWarehouse(warehouseName); + distributionStockArticleEntity.setWarehouseEntryTime(null);//TODO 入库时间没找到 + distributionStockArticleEntity.setStoreTime(0);//TODO + distributionStockArticleEntity.setTotalNumber(advanceEntity.getTotal()); + distributionStockArticleEntity.setHandQuantity(0);//TODO + distributionStockArticleEntity.setCompleteSet(1);//TODO + distributionStockArticleEntity.setBrand(advanceEntity.getType()); + distributionStockArticleEntity.setTypeService(orderEntity.getDoor()); + distributionStockArticleEntity.setCustomerName(orderEntity.getContact()); + distributionStockArticleEntity.setCustomerTelephone(orderEntity.getPhone()); + distributionStockArticleEntity.setCustomerAddress(orderEntity.getAddress()); + distributionStockArticleEntity.setGenre(2); + distributionStockArticleEntity.setState(2); + if(size > 1){ + distributionStockArticleEntity.setReserve1("multiple"); + } + Long id = distributionStockArticleClient.addData(distributionStockArticleEntity); + if(id == 0){ + logger.warn("#################handleDataToPlatform: 保存订单信息失败 orderSelfNum={}",orderSelfNum); + throw new CustomerException(405,"保存订单信息失败"); + } + //通过订单自编号查询包件信息 + List detailList = advanceDetailClient.getListByOrderSelfNum(orderSelfNum); + + List parcelListEntityList = new ArrayList<>(); + for (DistributionParcelListEntityVO vo:detailList){ + DistributionParcelListEntity entity = new DistributionParcelListEntity(); + BeanUtil.copyProperties(vo,entity); + entity.setStockArticleId(id+""); + parcelListEntityList.add(entity); + } + boolean b = distributionParcelListClient.addBatch(parcelListEntityList); + if(!b){ + logger.warn("#################handleDataToPlatform: 保存包件信息失败 orderSelfNum={}",orderSelfNum); + throw new CustomerException(405,"保存包件信息失败"); + } + + logger.info("#################handleDataToPlatform: 数据处理完成"); + }else{ + //已存在包件信息那就不处理 + logger.info("#################handleDataToPlatform: 包件信息已存在,不用处理 unitNo={}",unitNo); + } + } + } diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/AdvanceDetailClient.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/AdvanceDetailClient.java index 60097cf6e..c62a7d50a 100644 --- a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/AdvanceDetailClient.java +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/AdvanceDetailClient.java @@ -18,12 +18,14 @@ package com.logpm.oldproject.feign; import com.logpm.oldproject.entity.AdvanceDetailEntity; import com.logpm.oldproject.service.IAdvanceDetailService; +import com.logpm.oldproject.vo.DistributionParcelListEntityVO; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; +import java.util.List; import java.util.Map; /** @@ -66,4 +68,16 @@ public class AdvanceDetailClient implements IAdvanceDetailClient { return map; } + @Override + @GetMapping(API_PREFIX + "/getOneByUnitNo") + public AdvanceDetailEntity getOneByUnitNo(String unitNo) { + //查询对应的包件信息 + return advanceDetailService.getOneByUnitNo(unitNo); + } + + @Override + public List getListByOrderSelfNum(String orderSelfNum) { + return advanceDetailService.getListByOrderSelfNum(orderSelfNum); + } + } diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/OrderClient.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/OrderClient.java new file mode 100644 index 000000000..be6e55042 --- /dev/null +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/feign/OrderClient.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.oldproject.feign; + +import com.logpm.oldproject.entity.OrderEntity; +import com.logpm.oldproject.service.IOrderService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +import java.util.List; + +/** + * order Feign实现类 + * + * @author zhy + * @since 2023-06-24 + */ +@ApiIgnore() +@RestController +@AllArgsConstructor +public class OrderClient implements IOrderClient { + + private IOrderService orderService; + + @Override + public List getOrderByOrderSelfNum(String orderSelfNum) { + return orderService.getOrderByOrderSelfNum(orderSelfNum); + } +} diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.java index d4f3eb109..c37da4ec0 100644 --- a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.java +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.oldproject.entity.AdvanceDetailEntity; import com.logpm.oldproject.vo.AdvanceDetailVO; +import com.logpm.oldproject.vo.DistributionParcelListEntityVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -50,4 +51,7 @@ public interface AdvanceDetailMapper extends BaseMapper { Boolean addAll(@Param("param") AdvanceDetailEntity advanceDetailEntity); Map getSupplyData(@Param("unitNo") String unitNo); + + List getListByOrderSelfNum(@Param("orderSelfNum") String orderSelfNum); + } diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.xml b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.xml index 5f3f110ae..2598c9b97 100644 --- a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.xml +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/AdvanceDetailMapper.xml @@ -78,7 +78,8 @@ + + + diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.java new file mode 100644 index 000000000..4fc4849f1 --- /dev/null +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.oldproject.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.logpm.oldproject.entity.OrderEntity; + +/** + * 订单 Mapper 接口 + * + * @author zhy + * @since 2023-06-24 + */ +public interface OrderMapper extends BaseMapper { + + +} diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.xml b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.xml new file mode 100644 index 000000000..ebb7cb43e --- /dev/null +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/mapper/OrderMapper.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IAdvanceDetailService.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IAdvanceDetailService.java index a17098c74..ef9ea212a 100644 --- a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IAdvanceDetailService.java +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IAdvanceDetailService.java @@ -17,7 +17,9 @@ package com.logpm.oldproject.service; import com.logpm.oldproject.entity.AdvanceDetailEntity; +import com.logpm.oldproject.vo.DistributionParcelListEntityVO; +import java.util.List; import java.util.Map; /** @@ -32,4 +34,9 @@ public interface IAdvanceDetailService { Boolean addAdvanceDetail(AdvanceDetailEntity advanceDetailEntity); Map getSupplyData(String unitNo); + + AdvanceDetailEntity getOneByUnitNo(String unitNo); + + List getListByOrderSelfNum(String orderSelfNum); + } diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IOrderService.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IOrderService.java new file mode 100644 index 000000000..ba76f2798 --- /dev/null +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/IOrderService.java @@ -0,0 +1,11 @@ +package com.logpm.oldproject.service; + +import com.logpm.oldproject.entity.OrderEntity; + +import java.util.List; + +public interface IOrderService { + + List getOrderByOrderSelfNum(String orderSelfNum); + +} diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/AdvanceDetailServiceImpl.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/AdvanceDetailServiceImpl.java index 2d4257d82..fbc6f6779 100644 --- a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/AdvanceDetailServiceImpl.java +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/AdvanceDetailServiceImpl.java @@ -16,12 +16,15 @@ */ package com.logpm.oldproject.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.logpm.oldproject.entity.AdvanceDetailEntity; import com.logpm.oldproject.mapper.AdvanceDetailMapper; import com.logpm.oldproject.service.IAdvanceDetailService; +import com.logpm.oldproject.vo.DistributionParcelListEntityVO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; /** @@ -49,5 +52,17 @@ public class AdvanceDetailServiceImpl implements IAdvanceDetailService { return map; } + @Override + public AdvanceDetailEntity getOneByUnitNo(String unitNo) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("unitNo",unitNo); + return advanceDetailMapper.selectOne(queryWrapper); + } + + @Override + public List getListByOrderSelfNum(String orderSelfNum) { + return advanceDetailMapper.getListByOrderSelfNum(orderSelfNum); + } + } diff --git a/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/OrderServiceImpl.java b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/OrderServiceImpl.java new file mode 100644 index 000000000..c6fee8115 --- /dev/null +++ b/blade-service/logpm-old-project/src/main/java/com/logpm/oldproject/service/impl/OrderServiceImpl.java @@ -0,0 +1,25 @@ +package com.logpm.oldproject.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.logpm.oldproject.entity.OrderEntity; +import com.logpm.oldproject.mapper.OrderMapper; +import com.logpm.oldproject.service.IOrderService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@AllArgsConstructor +public class OrderServiceImpl implements IOrderService { + + private OrderMapper orderMapper; + + @Override + public List getOrderByOrderSelfNum(String orderSelfNum) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("selfnumber",orderSelfNum) + .orderByAsc("create_time"); + return orderMapper.selectList(queryWrapper); + } +}