Ver código fonte

查验单还原库存2

lhm 3 anos atrás
pai
commit
89103be5ce
22 arquivos alterados com 646 adições e 18 exclusões
  1. 23 0
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java
  2. 1 1
      kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java
  3. 6 0
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java
  4. 1 1
      kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java
  5. 18 0
      kmall-admin/src/main/java/com/kmall/admin/dao/record/NewRetailOrderRestoreStockRecordDao.java
  6. 168 0
      kmall-admin/src/main/java/com/kmall/admin/entity/record/NewRetailOrderRestoreStockRecordEntity.java
  7. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java
  8. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java
  9. 2 2
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  10. 28 5
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  11. 2 2
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java
  12. 107 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/record/NewRetailOrderRestoreStockRecordServiceImpl.java
  13. 69 0
      kmall-admin/src/main/java/com/kmall/admin/service/record/NewRetailOrderRestoreStockRecordService.java
  14. 1 1
      kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml
  15. 5 2
      kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml
  16. 1 1
      kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml
  17. 131 0
      kmall-admin/src/main/resources/mybatis/mapper/record/NewRetailOrderRestoreStockRecordDao.xml
  18. 1 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/offilineOrderList.html
  19. 20 1
      kmall-admin/src/main/webapp/js/shop/offilineOrderList.js
  20. 33 0
      kmall-api/src/main/java/com/kmall/api/entity/OrderGoodsRestoreVo.java
  21. 25 0
      kmall-common/src/main/java/com/kmall/common/constant/Dict.java
  22. 2 0
      kmall-manager/src/main/java/com/kmall/manager/manager/redis/JedisPropertiesBuilder.java

+ 23 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -705,6 +705,29 @@ public class OrderController {
         return R.ok().put("page", pageUtil);
     }
 
+    /**
+     * 当查验单从保税仓发货时, 会导致门店库存不还原
+     * 还原查验单库存
+     * @param orderSns  查验单单号
+     * @return          请求结果
+     */
+    @RequestMapping(value = "/restore", method = RequestMethod.POST)
+    public R restore (@RequestBody String orderSns) {
+
+        if (StringUtils.isEmpty(orderSns)) {
+            return R.error("订单编号不能为空!");
+        }
+        try {
+            Boolean restore = orderService.restore(orderSns);
+            if (restore) {
+                return R.ok();
+            }
+        } catch (Exception e) {
+            return R.error("恢复【 " + orderSns + " 】这些查验订单的库存失败!");
+        }
+        return R.error("恢复【 " + orderSns + " 】这些查验订单的库存失败!");
+    }
+
     @RequestMapping("/offlineInfos/{id}")
     @RequiresPermissions("order:offlineInfos")
     public R queryObjectBySysUser(@PathVariable("id") Long id) {

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

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

+ 6 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java

@@ -177,4 +177,10 @@ public interface OrderDao extends BaseDao<OrderEntity> {
     List<OrderEntity> queryAll201Order(@Param("date") String date);
 
     int updateOrderRefunding(Long id);
+
+    /**
+     *
+     * @param orderIdList
+     */
+    List<OrderEntity> queryListByOrderIdList(List<Integer> orderIdList);
 }

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

@@ -100,5 +100,5 @@ public interface ProductStoreRelaDao extends BaseDao<ProductStoreRelaEntity> {
      *
      * @param productStoreRelaEntities 门店库存信息
      */
-    void restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
+    int restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
 }

+ 18 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/record/NewRetailOrderRestoreStockRecordDao.java

@@ -0,0 +1,18 @@
+package com.kmall.admin.dao.record;
+
+import com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity;
+import com.kmall.manager.dao.BaseDao;
+
+
+/**
+ * 新零售订单还原库存操作记录Mapper
+ * @author lhm
+ * @version 1.0
+ * 2021-09-29 17:09
+ */
+
+public interface NewRetailOrderRestoreStockRecordDao extends BaseDao<NewRetailOrderRestoreStockRecordEntity> {
+
+    Integer queryTotalByCondition(NewRetailOrderRestoreStockRecordEntity entity);
+
+}

+ 168 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/record/NewRetailOrderRestoreStockRecordEntity.java

@@ -0,0 +1,168 @@
+package com.kmall.admin.entity.record;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 新零售订单还原库存操作记录
+ * @author lhm
+ * @version 1.0
+ * 2021-09-29 17:11
+ */
+public class NewRetailOrderRestoreStockRecordEntity implements Serializable {
+
+    private static final long serialVersionUID = -6790974379204075094L;
+    /**
+     * 自增id
+     */
+    private Integer id;
+
+    /**
+     * 订单表自增id
+     */
+    private Integer orderId;
+
+    /**
+     * 订单编号
+     */
+    private String orderSn;
+
+    /**
+     * 门店表自增id
+     */
+    private Integer storeId;
+
+    /**
+     * 门店名称
+     */
+    private String shopName;
+
+    /**
+     * sku
+     */
+    private String sku;
+
+    /**
+     * 还原数量
+     */
+    private Integer restoreNum;
+
+    /**
+     * 状态, 0: 成功, 1: 失败
+     */
+    private String status;
+
+    private String createSn;
+
+    private Date createTime;
+
+    private String updateSn;
+
+    private Date updateTime;
+
+    private Date tstm;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
+    public String getSku() {
+        return sku;
+    }
+
+    public void setSku(String sku) {
+        this.sku = sku;
+    }
+
+    public Integer getRestoreNum() {
+        return restoreNum;
+    }
+
+    public void setRestoreNum(Integer restoreNum) {
+        this.restoreNum = restoreNum;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getCreateSn() {
+        return createSn;
+    }
+
+    public void setCreateSn(String createSn) {
+        this.createSn = createSn;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateSn() {
+        return updateSn;
+    }
+
+    public void setUpdateSn(String updateSn) {
+        this.updateSn = updateSn;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Date getTstm() {
+        return tstm;
+    }
+
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+}

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

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

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

@@ -156,5 +156,5 @@ public interface ProductStoreRelaService {
      * 批量还原门店库存
      * @param productStoreRelaEntities  门店库存信息
      */
-    void restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
+    int restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
 }

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

@@ -2156,8 +2156,8 @@ public class GoodsServiceImpl implements GoodsService {
      * @param goodsEntities 数据
      */
     @Override
-    public void restoreBatch(List<GoodsEntity> goodsEntities) {
-        goodsDao.restoreBatch(goodsEntities);
+    public int restoreBatch(List<GoodsEntity> goodsEntities) {
+        return goodsDao.restoreBatch(goodsEntities);
     }
 
     /**

+ 28 - 5
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -22,6 +22,7 @@ import com.kmall.admin.dto.*;
 import com.kmall.admin.entity.*;
 import com.kmall.admin.entity.kmall2eccs.KtoEccsEntity;
 import com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity;
+import com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity;
 import com.kmall.admin.entity.vip.Mall2MemberConsumptionRecordsEntity;
 import com.kmall.admin.entity.vip.Mall2MemberPointsEntity;
 import com.kmall.admin.entity.vip.Mall2PointsRulesEntity;
@@ -31,6 +32,7 @@ import com.kmall.admin.service.*;
 import com.kmall.admin.service.kmall2eccs.KtoEccsService;
 import com.kmall.admin.service.mk.store.MkStoreCampMinusService;
 import com.kmall.admin.service.mk.store.MkStoreTicketDiscountService;
+import com.kmall.admin.service.record.NewRetailOrderRestoreStockRecordService;
 import com.kmall.admin.utils.CalculateTax;
 import com.kmall.admin.utils.ShiroUtils;
 import com.kmall.admin.utils.data.response.ResponseMessage;
@@ -61,6 +63,7 @@ import com.kmall.manager.manager.merch.OmsMerchProperties;
 import com.kmall.manager.manager.merch.OmsMerchPropertiesBuilder;
 import com.kmall.manager.manager.print.ticket.PrintTicketPropertiesBuilder;
 import com.kmall.manager.manager.print.ticket.TicketPrintUtil;
+import com.kmall.manager.manager.redis.JedisCacheManager;
 import com.kmall.manager.manager.redis.JedisUtil;
 import com.kmall.manager.manager.wechat.WechatUtil;
 import com.kmall.manager.manager.wechat.wxglobal.dto.WechatGlobalRefundApiResult;
@@ -71,20 +74,15 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.InetAddress;
 import java.net.URLDecoder;
-import java.nio.charset.Charset;
 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;
 
 
@@ -107,6 +105,8 @@ public class OrderServiceImpl implements OrderService {
     @Autowired
     private ProductStoreRelaService productStoreRelaService;
     @Autowired
+    private NewRetailOrderRestoreStockRecordService newRetailOrderRestoreStockRecordService;
+    @Autowired
     private SysPrinterDao printerDao;
     @Autowired
     private UserDao userDao;
@@ -1680,6 +1680,29 @@ public class OrderServiceImpl implements OrderService {
         return true;
     }
 
+    /**
+     * 组装查验单库存还原记录实体
+     * @param orderGoodsRestoreVo   实体
+     * @return  查验单库存还原记录
+     */
+    private NewRetailOrderRestoreStockRecordEntity wrapRestoreRecord(OrderGoodsRestoreVo orderGoodsRestoreVo){
+        NewRetailOrderRestoreStockRecordEntity entity = new NewRetailOrderRestoreStockRecordEntity();
+        SysUserEntity user = ShiroUtils.getUserEntity();
+
+        entity.setOrderId(orderGoodsRestoreVo.getOrderId());
+        entity.setOrderSn(orderGoodsRestoreVo.getOrderSn());
+        entity.setRestoreNum(orderGoodsRestoreVo.getNumber());
+        entity.setStoreId(orderGoodsRestoreVo.getStoreId());
+        entity.setShopName(orderGoodsRestoreVo.getShopName());
+        entity.setSku(orderGoodsRestoreVo.getSku());
+        entity.setCreateSn(String.valueOf(user.getUserId()));
+        entity.setCreateTime(new Date());
+        entity.setUpdateSn(String.valueOf(user.getUserId()));
+        entity.setUpdateTime(new Date());
+        entity.setStatus(Dict.stockRestoreEnum.SUCCESS.getCode());
+
+        return entity;
+    }
 
     /**
      * 组装成ProductStoreRelaEntity, 还原操作

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

@@ -885,8 +885,8 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
      * @param productStoreRelaEntities 门店库存信息
      */
     @Override
-    public void restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities) {
-        productStoreRelaDao.restoreBatch(productStoreRelaEntities);
+    public int restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities) {
+        return productStoreRelaDao.restoreBatch(productStoreRelaEntities);
     }
 
 

+ 107 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/record/NewRetailOrderRestoreStockRecordServiceImpl.java

@@ -0,0 +1,107 @@
+package com.kmall.admin.service.impl.record;
+
+import com.kmall.admin.dao.record.NewRetailOrderRestoreStockRecordDao;
+import com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity;
+import com.kmall.admin.service.record.NewRetailOrderRestoreStockRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author lhm
+ * @version 1.0
+ * 2021-09-29 17:46
+ */
+@Service("newRetailOrderRestoreStockRecordServiceImpl")
+public class NewRetailOrderRestoreStockRecordServiceImpl implements NewRetailOrderRestoreStockRecordService {
+
+    @Autowired
+    NewRetailOrderRestoreStockRecordDao newRetailOrderRestoreStockRecordDao;
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param id 主键
+     * @return 实体
+     */
+    @Override
+    public NewRetailOrderRestoreStockRecordEntity queryObject(Integer id) {
+        return newRetailOrderRestoreStockRecordDao.queryObject(id);
+    }
+
+    /**
+     * 根据参数查询列表
+     *
+     * @param map 参数
+     * @return 记录
+     */
+    @Override
+    public List<NewRetailOrderRestoreStockRecordEntity> queryList(Map<String, Object> map) {
+        return newRetailOrderRestoreStockRecordDao.queryList(map);
+    }
+
+    /**
+     * 根据条件查询总数
+     *
+     * @param entity 条件
+     * @return 总数
+     */
+    @Override
+    public Integer queryTotalByCondition(NewRetailOrderRestoreStockRecordEntity entity) {
+        return newRetailOrderRestoreStockRecordDao.queryTotalByCondition(entity);
+    }
+
+    /**
+     * 总数
+     *
+     * @return 总数
+     */
+    @Override
+    public Integer queryTotal() {
+        return newRetailOrderRestoreStockRecordDao.queryTotal();
+    }
+
+    /**
+     * 新增
+     *
+     * @param entity 记录
+     * @return 更新行数
+     */
+    @Override
+    public Integer save(NewRetailOrderRestoreStockRecordEntity entity) {
+        return newRetailOrderRestoreStockRecordDao.save(entity);
+    }
+
+    /**
+     * 删除
+     *
+     * @param entity 实体
+     * @return 删除行数
+     */
+    @Override
+    public Integer update(NewRetailOrderRestoreStockRecordEntity entity) {
+        return newRetailOrderRestoreStockRecordDao.update(entity);
+    }
+
+    /**
+     * 批量删除
+     *
+     * @return 删除行数
+     */
+    @Override
+    public Integer deleteBatch(Integer[] ids) {
+        return newRetailOrderRestoreStockRecordDao.deleteBatch(ids);
+    }
+
+    /**
+     * 批量保存
+     *
+     * @param entities 记录
+     */
+    @Override
+    public void saveBatch(List<NewRetailOrderRestoreStockRecordEntity> entities) {
+        newRetailOrderRestoreStockRecordDao.saveBatch(entities);
+    }
+}

+ 69 - 0
kmall-admin/src/main/java/com/kmall/admin/service/record/NewRetailOrderRestoreStockRecordService.java

@@ -0,0 +1,69 @@
+package com.kmall.admin.service.record;
+
+import com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 新零售订单还原库存操作记录业务类
+ * @author lhm
+ * @version 1.0
+ * 2021-09-29 17:38
+ */
+public interface NewRetailOrderRestoreStockRecordService {
+
+    /**
+     * 根据主键查询实体
+     * @param id    主键
+     * @return      实体
+     */
+    NewRetailOrderRestoreStockRecordEntity queryObject(Integer id);
+
+    /**
+     * 根据参数查询列表
+     * @param map   参数
+     * @return      记录
+     */
+    List<NewRetailOrderRestoreStockRecordEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 根据条件查询总数
+     * @param entity    entity
+     * @return          总数
+     */
+    Integer queryTotalByCondition(NewRetailOrderRestoreStockRecordEntity entity);
+
+    /**
+     * 总数
+     * @return          总数
+     */
+    Integer queryTotal();
+
+    /**
+     * 新增
+     * @param entity    记录
+     * @return          更新行数
+     */
+    Integer save(NewRetailOrderRestoreStockRecordEntity entity);
+
+    /**
+     * 删除
+     * @param entity    实体
+     * @return      删除行数
+     */
+    Integer update(NewRetailOrderRestoreStockRecordEntity entity);
+
+    /**
+     * 批量删除
+     * @param ids   id数组
+     * @return      删除行数
+     */
+    Integer deleteBatch(Integer[] ids);
+
+    /**
+     * 批量保存
+     * @param entities  记录
+     */
+    void saveBatch(List<NewRetailOrderRestoreStockRecordEntity> entities);
+}

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

@@ -1084,7 +1084,7 @@
         <trim prefix="set" suffixOverrides=",">
             goods_number=
             <foreach collection="list" item="item" open="case" close=" end,">
-                when sku=#{item.sku} then goods_number-#{item.goodsNumber}
+                when sku=#{item.sku} then goods_number+#{item.goodsNumber}
             </foreach>
         </trim>
         where

+ 5 - 2
kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml

@@ -296,12 +296,15 @@
             mog.sku as sku,
             mog.number as number,
             mo.id as orderId,
-            mo.store_id as StoreId
+            mo.store_id as storeId,
+            mo.order_sn as orderSn,
+            mo.merch_sn as merchSn,
+            mo.address as shopName
         from mall_order_goods mog
         left join mall_order mo on mog.order_id=mo.id
         where
             1=1
-            <if test="orderIdList != null">
+            <if test="list != null">
                 and mo.id in
                 <foreach collection="list" item="item" open="(" separator="," close=")">
                     #{item}

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

@@ -900,7 +900,7 @@
         <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}
+                when sku=#{item.sku} and store_id=#{item.storeId} then stock_num+#{item.stockNum}
             </foreach>
         </trim>
         where

+ 131 - 0
kmall-admin/src/main/resources/mybatis/mapper/record/NewRetailOrderRestoreStockRecordDao.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.record.NewRetailOrderRestoreStockRecordDao">
+
+    <resultMap type="com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity" id="resultMap">
+        <result property="id" column="id"/>
+        <result property="order_id" column="orderId"/>
+        <result property="order_sn" column="orderSn"/>
+        <result property="store_id" column="storeId"/>
+        <result property="shop_name" column="shopName"/>
+        <result property="sku" column="sku"/>
+        <result property="restore_num" column="restoreNum"/>
+        <result property="status" column="status"/>
+        <result property="create_sn" column="createSn"/>
+        <result property="create_time" column="createTime"/>
+        <result property="update_sn" column="updateSn"/>
+        <result property="update_time" column="updateTime"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+    <sql id="allField">
+        id,order_id,order_sn,store_id,shop_name,sku,restore_num,status,create_sn,create_time,update_sn,update_time,tstm
+    </sql>
+
+    <select id="queryObject" resultMap="resultMap">
+        select
+            <include refid="allField"/>
+        from mall_new_retail_order_restore_stock_record
+        where id = #{id}
+    </select>
+
+    <select id="queryList" resultMap="resultMap">
+        select
+        <include refid="allField"/>
+        from mall_new_retail_order_restore_stock_record
+        WHERE 1=1
+        <if test="map != null">
+            <if test="map.merchSn != null">
+                and merch_sn=#{map.merchSn}
+            </if>
+            <if test="map.orderSn != null">
+                and order_sn=#{map.orderSn}
+            </if>
+            <if test="map.sku != null">
+                and sku=#{map.sku}
+            </if>
+            <if test="map.status != null">
+                and status=#{map.status}
+            </if>
+        </if>
+    </select>
+
+    <select id="queryTotal" resultType="int">
+        select count(*) from mall_new_retail_order_restore_stock_record
+    </select>
+
+    <select id="queryTotalByCondition" parameterType="com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity" resultType="int">
+        select count(*) from mall_new_retail_order_restore_stock_record
+        where 1=1
+        <if test="merchSn != null">
+            and merch_sn=#{merchSn}
+        </if>
+        <if test="orderSn != null">
+            and order_sn=#{orderSn}
+        </if>
+        <if test="sku != null">
+            and sku=#{sku}
+        </if>
+        <if test="status != null">
+            and status=#{status}
+        </if>
+    </select>
+
+    <insert id="save" parameterType="com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity" useGeneratedKeys="true" keyProperty="id">
+        insert into mall_new_retail_order_restore_stock_record
+            (
+                order_id,order_sn,store_id,shop_name,sku,restore_num,status,create_sn,create_time,update_sn,update_time
+            )
+        values
+            (
+                #{orderId},#{orderSn},#{storeId},#{shopName},#{sku},#{restoreNum},
+                #{status},#{createSn},#{createTime},#{updateSn},#{updateTime}
+            )
+    </insert>
+
+    <update id="update" parameterType="com.kmall.admin.entity.record.NewRetailOrderRestoreStockRecordEntity">
+        update mall_new_retail_order_restore_stock_record
+        <set>
+            <if test="orderId != null">`order_id` = #{orderId}, </if>
+            <if test="orderSn != null">`order_sn` = #{orderSn}, </if>
+            <if test="storeId != null">`store_id` = #{storeId}, </if>
+            <if test="shopName != null">`shop_name` = #{shopName}, </if>
+            <if test="sku != null">`sku` = #{sku}, </if>
+            <if test="restoreNum != null">`restore_num` = #{restoreNum}, </if>
+            <if test="status != null">`status` = #{status}, </if>
+            <if test="updateTime != null">`update_time` = #{updateTime}, </if>
+            <if test="updateSn != null">`update_sn` = #{updateSn}</if>
+        </set>
+        where id = #{id}
+    </update>
+
+    <delete id="delete">
+        delete from mall_new_retail_order_restore_stock_record where id = #{value}
+    </delete>
+
+    <delete id="deleteBatch">
+        delete from mall_new_retail_order_restore_stock_record where id in
+        <foreach item="kteId" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+    <insert id="saveBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+
+
+        insert into mall_new_retail_order_restore_stock_record
+            (
+                order_id,order_sn,store_id,shop_name,sku,restore_num,status,create_sn,create_time,update_sn,update_time
+            )
+        values
+        <foreach collection="list" index="index" item="item" separator=",">
+            (
+                #{orderId},#{orderSn},#{storeId},#{shopName},#{sku},#{restoreNum},
+                #{status},#{createSn},#{createTime},#{updateSn},#{updateTime}
+            )
+        </foreach>
+
+    </insert>
+
+</mapper>

+ 1 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/offilineOrderList.html

@@ -44,6 +44,7 @@
                 </i-col>-->
                 <i-button @click="query">查询</i-button>
                 <i-button @click="reloadSearch">重置</i-button>
+                <i-button type="primary" @click="checkOrderRestore"></i>&nbsp;查验单恢复库存</i-button>
                 #if($shiro.hasPermission("order:exportOffilineOrder"))
                 <i-button type="primary" @click="exportOffilineOrder"><i class="fa fa-cloud-download"></i>&nbsp;导出</i-button>
                 #end

+ 20 - 1
kmall-admin/src/main/webapp/js/shop/offilineOrderList.js

@@ -487,11 +487,30 @@ let vm = new Vue({
                 });
             });
         },
+        checkOrderRestore : function () {
+            var ids = $("#jqGrid").jqGrid("getGridParam", "selarrrow");
+            var param = ids.toString();
+            $.ajax({
+                type: "post",
+                url: "../order/restore",
+                data: param,
+                contentType: "application/json;charset=utf-8",
+                success: function (res) {
+                    if (r.code === 0) {
+                        alert('恢复库存成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+            })
+        },
         exportOffilineOrder : function () {
 
 
             var params = {};
-            params.orderSn=vm.q.orderSn,
+            params.orderSn=vm.q.orderSn;
             params.orderStatus=vm.q.orderStatus;
             params.startTime=vm.q.startTime;
             params.endTime=vm.q.endTime;

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

@@ -13,6 +13,15 @@ public class OrderGoodsRestoreVo {
     // 订单id
     private Integer orderId;
 
+    // 订单编号
+    private String orderSn;
+
+    // 商户编号
+    private String merchSn;
+
+    // 门店名称
+    private String shopName;
+
     // 门店id
     private Integer storeId;
 
@@ -30,6 +39,30 @@ public class OrderGoodsRestoreVo {
         this.orderId = orderId;
     }
 
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    public String getMerchSn() {
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    public String getShopName() {
+        return shopName;
+    }
+
+    public void setShopName(String shopName) {
+        this.shopName = shopName;
+    }
+
     public Integer getStoreId() {
         return storeId;
     }

+ 25 - 0
kmall-common/src/main/java/com/kmall/common/constant/Dict.java

@@ -1921,5 +1921,30 @@ public class Dict {
 
     }
 
+    /**
+     * 查验单还原库存枚举
+     */
+    public enum stockRestoreEnum {
+
+        SUCCESS("0", "还原查验单库存成功"),
+        FAILED("1", "还原查验单库存失败")
+        ;
+
+        private String code;
+        private String msg;
+
+        stockRestoreEnum(String code, String msg) {
+            this.code = code;
+            this.msg = msg;
+        }
+
+        public String getCode() {
+            return code;
+        }
+
+        public String getMsg() {
+            return msg;
+        }
+    }
 
 }

+ 2 - 0
kmall-manager/src/main/java/com/kmall/manager/manager/redis/JedisPropertiesBuilder.java

@@ -27,8 +27,10 @@ public class JedisPropertiesBuilder {
      */
     @PostConstruct
     private void init(){
+        long start = System.currentTimeMillis();
         logger.info("JedisProperties初始化开始......");
         jedisProp = jedisProperties;
+        logger.info("初始化Jedis连接池耗时: {} ms", System.currentTimeMillis() - start);
     }
 
     public static JedisProperties instance(){