Browse Source

中车对接实现方法

tjxt 3 months ago
parent
commit
688b4e9ac2

+ 1 - 0
ruoyi-api/ruoyi-api-external/src/main/java/org/dromara/external/api/zhongzhi/domain/Result.java

@@ -29,6 +29,7 @@ public class Result<T> implements Serializable {
     private String desc;
     private T result;
 
+
     public static <T> Result<T> tokenOk(String accessToken,String expires_at) {
         return restResult(SUCCESS, 200,accessToken,expires_at, "",null);
     }

+ 10 - 0
ruoyi-api/ruoyi-api-order/src/main/java/org/dromara/product/api/RemoteExternalOrderService.java

@@ -1,5 +1,6 @@
 package org.dromara.product.api;
 
+import org.dromara.product.api.domain.dto.OrderNoDto;
 import org.dromara.product.api.domain.dto.OrderNoticeDto;
 import org.dromara.product.api.domain.dto.OrderPushDto;
 
@@ -22,4 +23,13 @@ public interface RemoteExternalOrderService {
     * 订单状态通知
     * */
     void notice(OrderNoticeDto bo);
+
+    /**
+     * 获取订单编号
+     * @param ZCorderNo
+     * @return
+     */
+    String getOrderNo(String ZCorderNo);
+
+
 }

+ 15 - 0
ruoyi-api/ruoyi-api-product/src/main/java/org/dromara/product/api/RemoteProductService.java

@@ -1,9 +1,14 @@
 package org.dromara.product.api;
 
+import org.dromara.common.core.domain.zhongche.domain.Prices;
+import org.dromara.product.api.domain.ProductCategoryRemoteVo;
 import org.dromara.product.api.domain.ProductChangeLogApiVo;
+import org.dromara.product.api.domain.ProductPriceInventoryRemoteVo;
 import org.dromara.product.api.domain.ProductVo;
+import org.dromara.product.api.domain.zhongche.dto.StocksResultDto;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  *
@@ -35,4 +40,14 @@ public interface RemoteProductService {
     List<ProductChangeLogApiVo> getProductChangeLogs(Long itemId,String type);
 
     void delMessagePool(Long messageId);
+
+    /**
+     * 获取品目列表
+     */
+    List<ProductCategoryRemoteVo> queryList();
+
+    StocksResultDto queryProductStock(Map<String, Integer> goods, String areaId);
+
+    List<Prices> queryProductPrice(List<String> goodsIds);
+
 }

+ 21 - 0
ruoyi-modules/ruoyi-order/src/main/java/org/dromara/order/dubbo/RemoteExternalOrderServiceImpl.java

@@ -1,11 +1,15 @@
 package org.dromara.order.dubbo;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.order.domain.OrderMain;
 import org.dromara.order.domain.bo.OrderProductBo;
+import org.dromara.order.service.IOrderMainService;
 import org.dromara.order.service.IOrderProductService;
 import org.dromara.product.api.RemoteExternalOrderService;
+import org.dromara.product.api.domain.dto.OrderNoDto;
 import org.dromara.product.api.domain.dto.OrderNoticeDto;
 import org.dromara.product.api.domain.dto.OrderPushDto;
 import org.springframework.stereotype.Service;
@@ -22,6 +26,8 @@ public class RemoteExternalOrderServiceImpl implements RemoteExternalOrderServic
 
      private final IOrderProductService orderProductService;
 
+     private final IOrderMainService orderMainService;
+
     /**
      * 推送订单
      *
@@ -57,4 +63,19 @@ public class RemoteExternalOrderServiceImpl implements RemoteExternalOrderServic
     public void notice(OrderNoticeDto bo) {
 
     }
+
+    /**
+     * 获取订单编号
+     * @param ZCorderNo
+     * @return
+     */
+    @Override
+    public String getOrderNo(String ZCorderNo) {
+        LambdaQueryWrapper<OrderMain> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(OrderMain::getOrderNo, ZCorderNo)
+            .select(OrderMain::getOrderNo);
+        OrderMain orderMain = orderMainService.getOne(queryWrapper);
+        return orderMain.getOrderNo();
+
+    }
 }

+ 82 - 3
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/dubbo/RemoteProductServiceImpl.java

@@ -1,22 +1,31 @@
 package org.dromara.product.dubbo;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboService;
+import org.dromara.common.core.domain.zhongche.domain.Prices;
 import org.dromara.product.api.RemoteProductService;
+import org.dromara.product.api.domain.ProductCategoryRemoteVo;
 import org.dromara.product.api.domain.ProductChangeLogApiVo;
 import org.dromara.product.api.domain.ProductVo;
-import org.dromara.product.domain.bo.ProductBaseBo;
+import org.dromara.product.api.domain.zhongche.dto.StocksResult;
+import org.dromara.product.api.domain.zhongche.dto.StocksResultDto;
+import org.dromara.product.domain.ProductPriceInventory;
+import org.dromara.product.domain.bo.ProductCategoryBo;
 import org.dromara.product.domain.bo.ProductChangeLogBo;
 import org.dromara.product.domain.vo.ProductBaseVo;
+import org.dromara.product.domain.vo.ProductCategoryVo;
 import org.dromara.product.domain.vo.ProductChangeLogVo;
 import org.dromara.product.service.IProductBaseService;
+import org.dromara.product.service.IProductCategoryService;
 import org.dromara.product.service.IProductChangeLogService;
+import org.dromara.product.service.IProductPriceInventoryService;
 import org.springframework.stereotype.Service;
 
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -34,6 +43,10 @@ public class RemoteProductServiceImpl implements RemoteProductService {
 
     private final IProductChangeLogService productChangeLogService;
 
+    private final IProductCategoryService productCategoryService;
+
+    private final IProductPriceInventoryService productPriceInventoryService;
+
     /**
      * 获取商品详情
      *
@@ -89,4 +102,70 @@ public class RemoteProductServiceImpl implements RemoteProductService {
     public void delMessagePool(Long messageId) {
         productBaseService.removeById(messageId);
     }
+
+    @Override
+    public List<ProductCategoryRemoteVo> queryList() {
+        List<ProductCategoryVo> productCategoryVos = productCategoryService.queryList(new ProductCategoryBo());
+        return BeanUtil.copyToList(productCategoryVos, ProductCategoryRemoteVo.class);
+    }
+
+
+    @Override
+    public StocksResultDto queryProductStock(Map<String, Integer> goods, String areaId) {
+        List<String> goodsIds = goods.keySet().stream()
+            .collect(Collectors.toList());
+
+        List<ProductPriceInventory> productPriceInventories= productPriceInventoryService.queryProductStock(goodsIds);
+
+        StocksResultDto stocksResultDto = new StocksResultDto();
+        productPriceInventories.forEach(productPriceInventory -> {
+            StocksResult stocksResult= new StocksResult();
+            stocksResult.setGoodsId(productPriceInventory.getProductId().toString());
+            stocksResult.setAreaId(areaId);
+            stocksResult.setStockState("1");
+            stocksResult.setStockStateDesc("有货");
+
+            //TODO 支持无库存下单商品返回(-999)
+            //当值为-1时,为未查询到。
+            //stockState=1或stockState=2时,入参goodsNum<50,该值为实际库存。
+            //入参50<=goodsNum<=100时,该值为-1。
+            //入参goodsNum>100,该值等于goodsNum。(这种情况并未返回真实库存)
+            long nowInventory   = productPriceInventory.getNowInventory()+productPriceInventory.getVirtualInventory();
+            Integer goodsNum = goods.get(productPriceInventory.getProductId().toString());
+            if (goodsNum<50){
+                stocksResult.setRemainNum((int)nowInventory);
+            }else if(goodsNum<=100){
+                stocksResult.setRemainNum(-1);
+            }else if (goodsNum>100){
+                stocksResult.setRemainNum(goodsNum);
+            }
+            //DateTime now = DateTime.now();
+            //DateTime after15Days = DateUtil.offsetDay(now, 15);
+            //stocksResult.setEstimatedShippingTime("");
+            if (stocksResultDto.getStocks() == null) {
+                stocksResultDto.setStocks(new ArrayList<>());
+            }
+            stocksResultDto.getStocks().add(stocksResult);
+        });
+
+        return stocksResultDto;
+    }
+
+    @Override
+    public List<Prices> queryProductPrice(List<String> goodsIds) {
+        List<ProductPriceInventory> productPriceInventories= productPriceInventoryService.queryProductPrice(goodsIds);
+        return productPriceInventories.stream().map(productPriceInventory -> {
+            Prices prices = new Prices();
+            prices.setGoodsId(productPriceInventory.getProductId().toString());
+            prices.setPrice(productPriceInventory.getMemberPrice());
+            prices.setDsPrice(productPriceInventory.getMarketPrice());
+            prices.setTaxFreePrice(null);
+            prices.setTax(productPriceInventory.getTaxRate());
+            prices.setTaxCode(null);
+            return prices;
+        }).collect(Collectors.toList());
+
+    }
+
+
 }

+ 7 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/IProductPriceInventoryService.java

@@ -1,6 +1,9 @@
 package org.dromara.product.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.apache.dubbo.common.logger.FluentLogger;
+import org.dromara.product.api.domain.zhongche.dto.StocksResult;
+import org.dromara.product.api.domain.zhongche.dto.StocksResultDto;
 import org.dromara.product.domain.ProductPriceInventory;
 import org.dromara.product.domain.vo.ProductPriceInventoryVo;
 import org.dromara.product.domain.bo.ProductPriceInventoryBo;
@@ -67,4 +70,8 @@ public interface IProductPriceInventoryService extends IService<ProductPriceInve
      * @return 是否删除成功
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+    List<ProductPriceInventory> queryProductStock(List<String> goodsIds);
+
+    List<ProductPriceInventory> queryProductPrice(List<String> goodsIds);
 }

+ 24 - 0
ruoyi-modules/ruoyi-product/src/main/java/org/dromara/product/service/impl/ProductPriceInventoryServiceImpl.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.dromara.product.api.domain.zhongche.dto.StocksResultDto;
 import org.springframework.stereotype.Service;
 import org.dromara.product.domain.bo.ProductPriceInventoryBo;
 import org.dromara.product.domain.vo.ProductPriceInventoryVo;
@@ -141,4 +142,27 @@ public class ProductPriceInventoryServiceImpl  extends ServiceImpl<ProductPriceI
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+    /**
+     * 获取商品库存
+     * @param goodsIds
+     * @return
+     */
+    @Override
+    public List<ProductPriceInventory> queryProductStock(List<String> goodsIds) {
+        List<ProductPriceInventory> productPriceInventories = this.listByIds(goodsIds);
+        return productPriceInventories;
+
+    }
+
+    /**
+     * 获取商品价格
+     * @param goodsIds
+     * @return
+     */
+    @Override
+    public List<ProductPriceInventory> queryProductPrice(List<String> goodsIds) {
+        List<ProductPriceInventory> productPriceInventories = this.listByIds(goodsIds);
+        return productPriceInventories;
+    }
 }

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -98,7 +98,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
         lqw.eq(SysDept::getDelFlag, SystemConstants.NORMAL);
         lqw.eq(ObjectUtil.isNotNull(bo.getDeptId()), SysDept::getDeptId, bo.getDeptId());
         lqw.eq(ObjectUtil.isNotNull(bo.getParentId()), SysDept::getParentId, bo.getParentId());
-        lqw.eq(ObjectUtil.isNotNull(bo.getCustomerId()), SysDept::getCustomerId, bo.getCustomerId());
+        //lqw.eq(ObjectUtil.isNotNull(bo.getCustomerId()), SysDept::getCustomerId, bo.getCustomerId());
         lqw.like(StringUtils.isNotBlank(bo.getDeptName()), SysDept::getDeptName, bo.getDeptName());
         lqw.like(StringUtils.isNotBlank(bo.getDeptCategory()), SysDept::getDeptCategory, bo.getDeptCategory());
         lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysDept::getStatus, bo.getStatus());