Browse Source

查验单还原库存1

lhm 3 năm trước cách đây
mục cha
commit
1e24b0421e

+ 5 - 1
kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java

@@ -88,5 +88,9 @@ public interface GoodsDao extends BaseDao<GoodsEntity> {
 
     List<GoodsEntity> syncGoodsRateGoode(List<Integer> ids);
 
-
+    /**
+     * 还原查验单库存
+     * @param goodsEntities 查验单订单数据
+     */
+    void restoreBatch(List<GoodsEntity> goodsEntities);
 }

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderGoodsDao.java

@@ -2,6 +2,7 @@ package com.kmall.admin.dao;
 
 import com.kmall.admin.dto.OrderGoodsDto;
 import com.kmall.admin.entity.OrderGoodsEntity;
+import com.kmall.api.entity.OrderGoodsRestoreVo;
 import com.kmall.api.entity.OrderGoodsVo;
 import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
@@ -31,4 +32,12 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsEntity> {
     Integer queryHistoryPriceTotal(Map<String, Object> map);
 
     List<OrderGoodsDto> queryYesterdayTax(@Param("date") String date);
+
+    /**
+     * 查询订单的详情
+     *
+     * @param orderIdList 订单id
+     * @return 订单详情
+     */
+    List<OrderGoodsRestoreVo> queryListByOrderIds(List<Integer> orderIdList);
 }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java

@@ -94,4 +94,11 @@ public interface ProductStoreRelaDao extends BaseDao<ProductStoreRelaEntity> {
     void transferOutGoods(@Param("shopSn") String shopSn, @Param("list") List<StoreTransferInventoryOrderDetailEntity> list);
 
     ProductStoreRelaEntity getByStoreSnAndSku(@Param("storeSn") String storeSn, @Param("sku") String sku);
+
+    /**
+     * 批量还原门店库存
+     *
+     * @param productStoreRelaEntities 门店库存信息
+     */
+    void restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
 }

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java

@@ -212,4 +212,9 @@ public interface GoodsService {
 
     void syncGoodsRateTask();
 
+    /**
+     * 批量还原园区库存
+     * @param goodsEntities 数据
+     */
+    void restoreBatch(List<GoodsEntity> goodsEntities);
 }

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderGoodsService.java

@@ -2,6 +2,7 @@ package com.kmall.admin.service;
 
 import com.kmall.admin.dto.OrderGoodsDto;
 import com.kmall.admin.entity.OrderGoodsEntity;
+import com.kmall.api.entity.OrderGoodsRestoreVo;
 
 import java.util.List;
 import java.util.Map;
@@ -37,4 +38,12 @@ public interface OrderGoodsService {
 	 * @return
 	 */
 	List<OrderGoodsDto> queryYesterdayTax(String format);
+
+	/**
+	 * 查询订单的详情
+	 * @param orderIdList	订单id
+	 * @return				订单详情
+	 */
+	List<OrderGoodsRestoreVo> queryListByOrderIds(List<Integer> orderIdList);
+
 }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java

@@ -33,6 +33,13 @@ public interface OrderService {
 
     List<OrderEntity> queryOffilineOrderList(Map<String, Object> map);
 
+    /**
+     * 还原查验单库存方法
+     * @param orderSns  查验单订单编号
+     * @return          是否还原成功, true: 成功,false: 失败
+     */
+    Boolean restore(String orderSns);
+
     List<OrderEntity> queryPickUpCodeList(Map<String, Object> map);
 
     int save(OrderEntity order);

+ 6 - 0
kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java

@@ -151,4 +151,10 @@ public interface ProductStoreRelaService {
     List<ProductStoreRelaEntity> queryAllList(Integer page, Integer pageSize);
 
     void handleTransfer(String transferType, String wayBillResponse, List<StoreTransferInventoryOrderDetailEntity> list);
+
+    /**
+     * 批量还原门店库存
+     * @param productStoreRelaEntities  门店库存信息
+     */
+    void restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
 }

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -2151,6 +2151,16 @@ public class GoodsServiceImpl implements GoodsService {
     }
 
     /**
+     * 还原园区库存
+     *
+     * @param goodsEntities 数据
+     */
+    @Override
+    public void restoreBatch(List<GoodsEntity> goodsEntities) {
+        goodsDao.restoreBatch(goodsEntities);
+    }
+
+    /**
      * 选择拉取
      * @param ids
      */

+ 12 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderGoodsServiceImpl.java

@@ -4,6 +4,7 @@ import com.kmall.admin.dao.OrderGoodsDao;
 import com.kmall.admin.dto.OrderGoodsDto;
 import com.kmall.admin.entity.OrderGoodsEntity;
 import com.kmall.admin.service.OrderGoodsService;
+import com.kmall.api.entity.OrderGoodsRestoreVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -70,4 +71,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
 		return orderGoodsDao.queryYesterdayTax(format);
 	}
 
+	/**
+	 * 查询订单的详情
+	 *
+	 * @param orderIdList 订单id
+	 * @return 订单详情
+	 */
+	@Override
+	public List<OrderGoodsRestoreVo> queryListByOrderIds(List<Integer> orderIdList) {
+		return orderGoodsDao.queryListByOrderIds(orderIdList);
+	}
+
 }

+ 79 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -38,6 +38,7 @@ import com.kmall.admin.utils.data.response.ResponseMessageData;
 import com.kmall.admin.utils.oms.OmsSign;
 import com.kmall.admin.utils.pdf.BarcodeUtil;
 import com.kmall.admin.websocket.WebSocketServer;
+import com.kmall.api.entity.OrderGoodsRestoreVo;
 import com.kmall.api.entity.OrderGoodsVo;
 import com.kmall.api.entity.OrderVo;
 import com.kmall.api.util.CommonUtil;
@@ -83,6 +84,8 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 
 @Service("orderService")
@@ -100,6 +103,10 @@ public class OrderServiceImpl implements OrderService {
     @Autowired
     private OrderGoodsDao orderGoodsDao;
     @Autowired
+    private OrderGoodsService orderGoodsService;
+    @Autowired
+    private ProductStoreRelaService productStoreRelaService;
+    @Autowired
     private SysPrinterDao printerDao;
     @Autowired
     private UserDao userDao;
@@ -1627,6 +1634,78 @@ public class OrderServiceImpl implements OrderService {
         return orderDao.queryOffilineOrderList(map);
     }
 
+    /**
+     * 还原查验单库存方法
+     *
+     * @param orderSns  查验单订单编号
+     * @return          是否还原成功, true: 成功,false: 失败
+     */
+    @Override
+    public Boolean restore(String orderSns) {
+
+        if (org.springframework.util.StringUtils.isEmpty(orderSns)) {
+            return false;
+        }
+        List<String> orderIdStrList = new ArrayList<>();
+        if (orderSns.contains(",")) {
+            String[] split = orderSns.split(",");
+            orderIdStrList.addAll(Arrays.asList(split));
+        } else {
+            orderIdStrList.add(orderSns);
+        }
+        List<Integer> orderIdList = orderIdStrList.parallelStream().map(Integer::valueOf).collect(Collectors.toList());
+        // 查询订单详细信息
+        List<OrderGoodsRestoreVo> orderGoodsRestoreVos = orderGoodsService.queryListByOrderIds(orderIdList);
+
+        // 需要更新门店商品库存(mall_product_store_rela)和园区库存(mall_goods)
+        // 园区库存, 无门店概念
+        List<GoodsEntity> goodsEntities = new ArrayList<>();
+        // 门店商品库存
+        List<ProductStoreRelaEntity> productStoreRelaEntities = new ArrayList<>();
+        // 组装数据
+        orderGoodsRestoreVos.forEach(orderGoodsRestoreVo -> {
+            goodsEntities.add(wrapGoods(orderGoodsRestoreVo));
+            productStoreRelaEntities.add(wrapProductStoreRela(orderGoodsRestoreVo));
+        });
+
+        try {
+            // 还原园区库存
+            goodsService.restoreBatch(goodsEntities);
+            // 还原门店库存
+            productStoreRelaService.restoreBatch(productStoreRelaEntities);
+        } catch (Exception e) {
+            return false;
+        }
+
+        return true;
+    }
+
+
+    /**
+     * 组装成ProductStoreRelaEntity, 还原操作
+     * @param orderGoodsRestoreVo   订单详细数据
+     * @return  门店库存
+     */
+    private ProductStoreRelaEntity wrapProductStoreRela(OrderGoodsRestoreVo orderGoodsRestoreVo) {
+        ProductStoreRelaEntity productStoreRelaEntity = new ProductStoreRelaEntity();
+        productStoreRelaEntity.setStoreId(orderGoodsRestoreVo.getStoreId().longValue());
+        productStoreRelaEntity.setSku(orderGoodsRestoreVo.getSku());
+        productStoreRelaEntity.setStockNum(orderGoodsRestoreVo.getNumber());
+        return productStoreRelaEntity;
+    }
+
+    /**
+     * 组装成GoodsEntity, 还原操作
+     * @param orderGoodsRestoreVo   订单详细数据
+     * @return  库存
+     */
+    private GoodsEntity wrapGoods(OrderGoodsRestoreVo orderGoodsRestoreVo) {
+        GoodsEntity goodsEntity = new GoodsEntity();
+        goodsEntity.setGoodsNumber(orderGoodsRestoreVo.getNumber());
+        goodsEntity.setSku(orderGoodsRestoreVo.getSku());
+        return goodsEntity;
+    }
+
     @Override
     public List<OrderEntity> queryPickUpCodeList(Map<String, Object> map) {
         return orderDao.queryPickUpCodeList(map);

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java

@@ -879,6 +879,16 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
 
     }
 
+    /**
+     * 批量还原门店库存
+     *
+     * @param productStoreRelaEntities 门店库存信息
+     */
+    @Override
+    public void restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities) {
+        productStoreRelaDao.restoreBatch(productStoreRelaEntities);
+    }
+
 
     @Override
     @Transactional

+ 14 - 0
kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml

@@ -1079,6 +1079,20 @@
         </foreach>
     </update>
 
+    <update id="restoreBatch" parameterType="java.util.List">
+        update mall_goods
+        <trim prefix="set" suffixOverrides=",">
+            goods_number=
+            <foreach collection="list" item="item" open="case" close=" end,">
+                when sku=#{item.sku} then goods_number-#{item.goodsNumber}
+            </foreach>
+        </trim>
+        where
+        <foreach collection="list" item="item" open="( " separator=" ) or ( " close=" )">
+            sku=#{item.sku}
+        </foreach>
+    </update>
+
     <select id="syncOmsHsCodeGoode" resultType="java.lang.String">
         select sku from mall_goods where id in
         <foreach collection="list" item="id" index="index"

+ 18 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml

@@ -291,5 +291,23 @@
             order_id
     </select>
 
+    <select id="queryListByOrderIds" resultType="com.kmall.api.entity.OrderGoodsRestoreVo">
+        select
+            mog.sku as sku,
+            mog.number as number,
+            mo.id as orderId,
+            mo.store_id as StoreId
+        from mall_order_goods mog
+        left join mall_order mo on mog.order_id=mo.id
+        where
+            1=1
+            <if test="orderIdList != null">
+                and mo.id in
+                <foreach collection="list" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+    </select>
+
 
 </mapper>

+ 14 - 0
kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml

@@ -895,6 +895,20 @@
         </foreach>
     </update>
 
+    <update id="restoreBatch" parameterType="java.util.List">
+        update mall_product_store_rela
+        <trim prefix="set" suffixOverrides=",">
+            stock_num=
+            <foreach collection="list" item="item" open="case" close=" end,">
+                when sku=#{item.sku} and store_id=#{item.storeId} then stock_num-#{item.stockNum}
+            </foreach>
+        </trim>
+        where
+        <foreach collection="list" item="item" open="( " separator=" ) or ( " close=" )">
+            sku=#{item.sku} and store_id=#{item.storeId}
+        </foreach>
+    </update>
+
 
     <select id="getByStoreSnAndSku" resultType="com.kmall.admin.entity.ProductStoreRelaEntity">
         select p.* from mall_product_store_rela p , mall_store s

+ 56 - 0
kmall-api/src/main/java/com/kmall/api/entity/OrderGoodsRestoreVo.java

@@ -0,0 +1,56 @@
+package com.kmall.api.entity;
+
+import java.util.List;
+
+/**
+ * 恢复查验单库存用
+ * @author lhm
+ * @version 1.0
+ * 2021-09-28 16:39
+ */
+public class OrderGoodsRestoreVo {
+
+    // 订单id
+    private Integer orderId;
+
+    // 门店id
+    private Integer storeId;
+
+    // 数量
+    private Integer number;
+
+    // sku
+    private String sku;
+
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public String getSku() {
+        return sku;
+    }
+
+    public void setSku(String sku) {
+        this.sku = sku;
+    }
+}