1
0
Prechádzať zdrojové kódy

收银端操作库存优化,页面刷新光标定位在扫条码输入框

lhm 3 rokov pred
rodič
commit
997e49e764

+ 12 - 70
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java

@@ -1,6 +1,7 @@
 package com.kmall.admin.controller;
 
 import com.alibaba.fastjson.JSON;
+import com.kmall.admin.dto.GoodsDetailsDto;
 import com.kmall.admin.dto.GoodsDto;
 import com.kmall.admin.dto.GoodsPanoramaDto;
 import com.kmall.admin.entity.GoodsEntity;
@@ -569,9 +570,9 @@ public class GoodsController {
         return R.ok().put("goods", goods);
     }
 
-    @RequestMapping("/details/{prodBarcode}/{storeId}/{sku}")
+    @RequestMapping("/details/{prodBarcode}/{storeId}/{sku}/{sellVolume}")
 //    @RequiresPermissions("goods:details") http://127.0.0.1:8080/goods/details/11111
-    public R details(@PathVariable("prodBarcode")String prodBarcode,@PathVariable("storeId")String storeId,@PathVariable("sku")String sku) {
+    public R details(@PathVariable("prodBarcode")String prodBarcode,@PathVariable("storeId")String storeId,@PathVariable("sku")String sku, @PathVariable("sellVolume") Integer sellVolume) {
         SysUserEntity user = ShiroUtils.getUserEntity();
         if(user == null) {
             return R.error("用户登录超时,请重新登录");
@@ -581,7 +582,7 @@ public class GoodsController {
         }
         Map<String,Object> map = null;
         try {
-            map = goodsService.calculateGoodsDetail(prodBarcode,storeId,sku);
+            map = goodsService.calculateGoodsDetail(prodBarcode,storeId,sku, sellVolume);
         } catch (ServiceException e) {
             log.error("查询订单详情出现异常!", e);
             return R.error(e.getMessage());
@@ -595,9 +596,9 @@ public class GoodsController {
         return R.ok().put("goodsDetails", map.get("goods")).put("map",map);
     }
 
-    @RequestMapping("/detailsOld/{prodBarcode}/{storeId}")
+    @RequestMapping("/detailsOld/{prodBarcode}/{storeId}/{sellVolume}")
 //    @RequiresPermissions("goods:details") http://127.0.0.1:8080/goods/details/11111
-    public R details(@PathVariable("prodBarcode")String prodBarcode,@PathVariable("storeId")String storeId) {
+    public R details(@PathVariable("prodBarcode")String prodBarcode,@PathVariable("storeId")String storeId, @PathVariable("sellVolume") Integer sellVolume) {
         SysUserEntity user = ShiroUtils.getUserEntity();
         if(user == null) {
             return R.error("用户登录超时,请重新登录");
@@ -607,7 +608,7 @@ public class GoodsController {
         }
         Map<String,Object> map = null;
         try {
-            map = goodsService.calculateGoodsDetail(prodBarcode,storeId,null);
+            map = goodsService.calculateGoodsDetail(prodBarcode,storeId,null, sellVolume);
         } catch (ServiceException e) {
             log.error("查询订单详情出现异常!", e);
             return R.error(e.getMessage());
@@ -621,83 +622,24 @@ public class GoodsController {
         return R.ok().put("goodsDetails", map.get("goods")).put("map",map);
     }
 
-    // storeId + sku + prodBarcode
-    @RequestMapping(value = "/number/minus/{storeId}/{sku}/{prodBarcode}", method = RequestMethod.GET)
-    public R minus(@PathVariable("storeId") String storeId, @PathVariable("sku") String sku, @PathVariable("prodBarcode") String prodBarcode) {
-        String key = Constants.WAREHOUSE_STOCK_MAP_KEY + "_" + storeId;
-        String itemKey = storeId + sku + prodBarcode;
-
-        try {
-            String cartNumber = JedisUtil.hget(key, itemKey);
-            int number = Integer.parseInt(cartNumber);
-            JedisUtil.hset(key, itemKey, String.valueOf(++number));
-        } catch (Exception e) {
-            log.error("storeId:【{}】,sku:【{}】,prodBarcode:【{}】,扣减购物篮商品数量失败!", storeId, sku, prodBarcode);
-            return R.error("扣减购物篮商品数量失败!请删除购物篮商品后重试!");
-        }
-
-        return R.ok();
-    }
-
     @RequestMapping(value = "/number/add/{storeId}/{sku}/{prodBarcode}/{sellVolume}", method = RequestMethod.GET)
     public R add(@PathVariable("storeId") String storeId,
                  @PathVariable("sku") String sku,
                  @PathVariable("prodBarcode") String prodBarcode,
                  @PathVariable("sellVolume") Integer sellVolume) {
-        String key = Constants.WAREHOUSE_STOCK_MAP_KEY + "_" + storeId;
-        String itemKey = storeId + sku + prodBarcode;
-
-        try {
-            GoodsEntity goodsEntity = goodsService.queryGoodsStockByBarcodeAndStoreIdAndSku(prodBarcode, Integer.parseInt(storeId), sku);
-            Integer exitRegionNumber = goodsEntity.getExitRegionNumber();
-            Integer stockNum = goodsEntity.getStockNum();
-            String number = JedisUtil.hget(key, itemKey);
-            int cartNumber = Integer.parseInt(number);
-            if (stockNum + cartNumber - exitRegionNumber >= sellVolume) {
-                JedisUtil.hset(key, itemKey, String.valueOf(--cartNumber));
-            } else {
-                log.error("增加商品数量失败!保税仓库存不足!storeId:【{}】,sku:【{}】,prodBarcode:【{}】,stockNum:【{}】,exitRegionNumber:【{}】,wareStockNumber:【{}】"
-                , storeId, sku, prodBarcode, stockNum, exitRegionNumber, cartNumber);
-                return R.error("增加商品数量失败!保税仓库存不足!");
-            }
-        } catch (Exception e) {
-            log.error("storeId:【{}】,sku:【{}】,prodBarcode:【{}】,增加购物篮商品数量失败!", storeId, sku, prodBarcode);
-            return R.error("增加购物篮商品数量失败!请删除购物篮商品后重试!");
-        }
-
-        return R.ok();
-    }
-
-    @RequestMapping(value = "/number/del/{storeId}/{sku}/{prodBarcode}", method = RequestMethod.GET)
-    public R del(@PathVariable("storeId") String storeId, @PathVariable("sku") String sku, @PathVariable("prodBarcode") String prodBarcode) {
-        String key = Constants.WAREHOUSE_STOCK_MAP_KEY + "_" + storeId;
-        String itemKey = storeId + sku + prodBarcode;
 
         try {
-            JedisUtil.hdel(key, itemKey);
+            GoodsDetailsDto goodsDetailsDto = goodsService.queryGoodsDetailsByProdBarcode(prodBarcode, storeId, sku);
+            goodsDetailsDto.setSellVolume(sellVolume);
+            goodsService.validateWarehouseStock(goodsDetailsDto, prodBarcode, sku, storeId);
         } catch (Exception e) {
-            log.error("storeId:【{}】,sku:【{}】,prodBarcode:【{}】,删除购物篮商品失败!", storeId, sku, prodBarcode);
-            return R.error("删除购物篮商品失败!请刷新收银端页面!");
+            log.error("storeId:【{}】,sku:【{}】,prodBarcode:【{}】,增加购物篮商品数量失败!", storeId, sku, prodBarcode, e);
+            return R.error("校验库存===>" + e.getMessage());
         }
 
         return R.ok();
     }
 
-    @RequestMapping(value = "/number/clear/{storeId}", method = RequestMethod.GET)
-    public R clear(@PathVariable("storeId") String storeId) {
-        String key = Constants.WAREHOUSE_STOCK_MAP_KEY + "_" + storeId;
-
-        try {
-            JedisUtil.del(key);
-        } catch (Exception e) {
-            log.error("storeId:【{}】,清空购物篮商品失败!", storeId);
-            return R.error("清空购物篮商品失败!请刷新收银端页面!");
-        }
-
-        return R.ok();
-    }
-
-
     /**
      * 多sku可选
      * @param prodBarcode

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

@@ -170,7 +170,7 @@ public interface GoodsService {
      * @param storeId
      * @return
      */
-    Map<String,Object> calculateGoodsDetail(String prodBarcode, String storeId,String sku);
+    Map<String,Object> calculateGoodsDetail(String prodBarcode, String storeId,String sku, Integer sellVolume);
 
     /**
      * 根据条形码查询商品
@@ -250,4 +250,6 @@ public interface GoodsService {
      * @return              更新数
      */
     int updateStockNumberByProductCodeAndSku(GoodsEntity goodsEntity);
+
+    void validateWarehouseStock(GoodsDetailsDto goods, String prodBarcode, String sku, String storeId);
 }

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

@@ -1555,7 +1555,7 @@ public class GoodsServiceImpl implements GoodsService {
      */
     @Override
     @Transactional
-    public synchronized Map<String,Object> calculateGoodsDetail(String prodBarcode, String storeId, String sku) {
+    public synchronized Map<String,Object> calculateGoodsDetail(String prodBarcode, String storeId, String sku, Integer sellVolume) {
         /**
          * 1.首先根据商品条码跟门店id查询是否有库存,没库存直接返回
          */
@@ -1563,101 +1563,17 @@ public class GoodsServiceImpl implements GoodsService {
         if(goods == null) {
             return null;
         }
-
-        String env = environment.getProperty("haikong.env");
+        goods.setSellVolume(sellVolume);
 
         /*
         * 2. 查询海仓仓库系统,判断库存是否足够
         * */
-        sku = org.springframework.util.StringUtils.isEmpty(sku) ? goods.getSku() : sku;
+        /*sku = org.springframework.util.StringUtils.isEmpty(sku) ? goods.getSku() : sku;
         String wareStockNumberKey = storeId + sku + prodBarcode;
         String warehouseStockMapKey = Constants.WAREHOUSE_STOCK_MAP_KEY + "_" + storeId;
-        String redisCacheWareQuantity = JedisUtil.hget(warehouseStockMapKey, wareStockNumberKey);
-        // 保税仓或缓存中的保税仓库存
-        Integer wareQuantity = 0;
-        // 保税仓库存
-        Integer realWareQuantity = 0;
-        Integer exitRegionNumber = goods.getExitRegionNumber();
-        String stockNum = goods.getStockNum();
-        Integer sellVolume = Objects.isNull(goods.getSellVolume()) ? 1 : goods.getSellVolume();
-        if (org.springframework.util.StringUtils.isEmpty(redisCacheWareQuantity)) {
-            WareQueryStockResponseDTO wareQueryStockResponseDTO = null;
-            String queryWarehouseStockResponse = null;
-            // 环境配置
-            if (!org.springframework.util.StringUtils.isEmpty(env) && Constants.PROD.equals(env)) {
-                WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO();
-                List<Criteria> criteriaList = new ArrayList<>();
-                Criteria criteria = new Criteria();
-                criteria.setItemId(goods.getWarehouseSysGoodId());
-                criteria.setItemCode(goods.getSku());
-                criteria.setOwnerCode(haiKongProperties.getWareCompanyCode());
-                criteria.setInventoryType(Constants.InventoryType.ZP.getType());
-                criteria.setWarehouseCode(goods.getWarehouseSn());
-                criteriaList.add(criteria);
-                wareQueryStockParamDTO.setCriteriaList(criteriaList);
-                try {
-                    queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO);
-                } catch (Exception e) {
-                    log.error("sku:【{}】,调用海控仓库系统查询库存出现异常!", sku, e);
-                    throw new ServiceException(String.format("sku:【%s】,调用海控仓库系统查询库存出现异常!", sku));
-                }
-                log.info("调用海控仓库系统,请求参数,门店:{}、商品条码:{}、商品编码:{},响应数据:{}", storeId, prodBarcode, sku, queryWarehouseStockResponse);
-                if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) {
-                    log.error("调用库存系统接口出现错误!返回结果为空!");
-                    throw new ServiceException("调用库存系统接口出现错误!");
-                }
-                try {
-                    wareQueryStockResponseDTO = (WareQueryStockResponseDTO) XmlUtils.toObject(queryWarehouseStockResponse, WareQueryStockResponseDTO.class);
-                } catch (Exception e) {
-                    log.error("解析一步达库存系统响应数据出现错误!出现异常:", e);
-                }
-                if (Objects.isNull(wareQueryStockResponseDTO)) {
-                    log.error("解析一步达库存系统响应数据出现错误!请求响应结果:{}", queryWarehouseStockResponse);
-                    throw new ServiceException("解析一步达库存系统响应数据出现错误!");
-                }
-                if ("failure".equals(wareQueryStockResponseDTO.getFlag())) {
-                    log.error("请求一步达库存系统返回错误响应!响应数据:{}", queryWarehouseStockResponse);
-                    throw new ServiceException(String.format("请求一步达库存系统查询库存错误!响应数据:%s", wareQueryStockResponseDTO.getMessage()));
-                }
-            } else {
-                wareQueryStockResponseDTO = new WareQueryStockResponseDTO();
-                wareQueryStockResponseDTO.setCode("0");
-                wareQueryStockResponseDTO.setFlag("success");
-                wareQueryStockResponseDTO.setMessage("");
-                WareQueryStockResponseDTO.WareQueryStockResponseItemDTO wareQueryStockResponseItemDTO = new WareQueryStockResponseDTO.WareQueryStockResponseItemDTO();
-                wareQueryStockResponseItemDTO.setQuantity(3);
-                wareQueryStockResponseItemDTO.setItemCode(sku);
-                wareQueryStockResponseItemDTO.setProduceCode(prodBarcode);
-                List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> wareQueryStockResponseItemDTOS = new ArrayList<>();
-                wareQueryStockResponseItemDTOS.add(wareQueryStockResponseItemDTO);
-                wareQueryStockResponseDTO.setItems(wareQueryStockResponseItemDTOS);
-            }
+        String redisCacheWareQuantity = JedisUtil.hget(warehouseStockMapKey, wareStockNumberKey);*/
 
-            // 校验库存
-            List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems();
-            if (CollectionUtils.isEmpty(items)) {
-                log.error("查询商品时:【{}】,仓库不存在该商品!", prodBarcode);
-                throw new ServiceException(String.format("查询商品时:【%s】,仓库不存在该商品!", prodBarcode));
-            }
-            WareQueryStockResponseDTO.WareQueryStockResponseItemDTO itemDTO = items.get(0);
-            // 仓库可用库存
-            wareQuantity = itemDTO.getQuantity();
-            realWareQuantity = wareQuantity;
-            JedisUtil.hset(warehouseStockMapKey, wareStockNumberKey, String.valueOf(wareQuantity));
-        } else {
-            wareQuantity = Integer.parseInt(redisCacheWareQuantity);
-            // 如果是缓存中有该商品保税仓的库存可用数缓存,因为这个可用数已经是经过计算的,所以这里需要加上购买数
-            // 避免下面提示的是计算过后的库存可用数,以致于出现误解
-            realWareQuantity = wareQuantity + sellVolume;
-        }
-        // 保税仓库存 + 展销店库存 - 出区数 >= 购买数
-        if (!((wareQuantity + Integer.parseInt(stockNum) - exitRegionNumber) > sellVolume)) {
-            // 库存不足
-            log.error("商品条码:【{}】,sku:【{}】,门店库存:【{}】,保税仓库存:【{}】,出区数:【{}】,该商品仓库库存不足!", prodBarcode, sku, stockNum, realWareQuantity, exitRegionNumber);
-            throw new ServiceException(String.format("商品条码:【%s】,sku:【%s】,门店库存:【%s】,保税仓库存:【%s】,出区数:【%s】,该商品仓库库存不足!", prodBarcode, sku, stockNum, realWareQuantity, exitRegionNumber));
-        } else {
-            JedisUtil.hset(warehouseStockMapKey, wareStockNumberKey, String.valueOf(wareQuantity - sellVolume));
-        }
+        validateWarehouseStock(goods, prodBarcode, sku, storeId);
 
         goods.setDiscountedPrice(new BigDecimal(0));
         BigDecimal retailPrice = goods.getRetailPrice();
@@ -1677,6 +1593,85 @@ public class GoodsServiceImpl implements GoodsService {
     }
 
     @Override
+    public void validateWarehouseStock(GoodsDetailsDto goods, String prodBarcode, String sku, String storeId) {
+        // 保税仓库存
+        Integer wareQuantity = 0;
+
+        String env = environment.getProperty("haikong.env");
+        // 保税仓库存
+        Integer exitRegionNumber = goods.getExitRegionNumber();
+        String stockNum = goods.getStockNum();
+        Integer sellVolume = Objects.isNull(goods.getSellVolume()) ? 1 : goods.getSellVolume();
+        WareQueryStockResponseDTO wareQueryStockResponseDTO = null;
+        String queryWarehouseStockResponse = null;
+        // 环境配置
+        if (!org.springframework.util.StringUtils.isEmpty(env) && Constants.PROD.equals(env)) {
+            WareQueryStockParamDTO wareQueryStockParamDTO = new WareQueryStockParamDTO();
+            List<Criteria> criteriaList = new ArrayList<>();
+            Criteria criteria = new Criteria();
+            criteria.setItemId(goods.getWarehouseSysGoodId());
+            criteria.setItemCode(goods.getSku());
+            criteria.setOwnerCode(haiKongProperties.getWareCompanyCode());
+            criteria.setInventoryType(Constants.InventoryType.ZP.getType());
+            criteria.setWarehouseCode(goods.getWarehouseSn());
+            criteriaList.add(criteria);
+            wareQueryStockParamDTO.setCriteriaList(criteriaList);
+            try {
+                queryWarehouseStockResponse = haiKongWarehouseTemplate.queryWarehouseStock(wareQueryStockParamDTO);
+            } catch (Exception e) {
+                log.error("sku:【{}】,调用海控仓库系统查询库存出现异常!", sku, e);
+                throw new ServiceException(String.format("sku:【%s】,调用海控仓库系统查询库存出现异常!", sku));
+            }
+            log.info("调用海控仓库系统,请求参数,门店:{}、商品条码:{}、商品编码:{},响应数据:{}", storeId, prodBarcode, sku, queryWarehouseStockResponse);
+            if (org.springframework.util.StringUtils.isEmpty(queryWarehouseStockResponse)) {
+                log.error("调用库存系统接口出现错误!返回结果为空!");
+                throw new ServiceException("调用库存系统接口出现错误!");
+            }
+            try {
+                wareQueryStockResponseDTO = (WareQueryStockResponseDTO) XmlUtils.toObject(queryWarehouseStockResponse, WareQueryStockResponseDTO.class);
+            } catch (Exception e) {
+                log.error("解析一步达库存系统响应数据出现错误!出现异常:", e);
+            }
+            if (Objects.isNull(wareQueryStockResponseDTO)) {
+                log.error("解析一步达库存系统响应数据出现错误!请求响应结果:{}", queryWarehouseStockResponse);
+                throw new ServiceException("解析一步达库存系统响应数据出现错误!");
+            }
+            if ("failure".equals(wareQueryStockResponseDTO.getFlag())) {
+                log.error("请求一步达库存系统返回错误响应!响应数据:{}", queryWarehouseStockResponse);
+                throw new ServiceException(String.format("请求一步达库存系统查询库存错误!响应数据:%s", wareQueryStockResponseDTO.getMessage()));
+            }
+        } else {
+            wareQueryStockResponseDTO = new WareQueryStockResponseDTO();
+            wareQueryStockResponseDTO.setCode("0");
+            wareQueryStockResponseDTO.setFlag("success");
+            wareQueryStockResponseDTO.setMessage("");
+            WareQueryStockResponseDTO.WareQueryStockResponseItemDTO wareQueryStockResponseItemDTO = new WareQueryStockResponseDTO.WareQueryStockResponseItemDTO();
+            wareQueryStockResponseItemDTO.setQuantity(3);
+            wareQueryStockResponseItemDTO.setItemCode(sku);
+            wareQueryStockResponseItemDTO.setProduceCode(prodBarcode);
+            List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> wareQueryStockResponseItemDTOS = new ArrayList<>();
+            wareQueryStockResponseItemDTOS.add(wareQueryStockResponseItemDTO);
+            wareQueryStockResponseDTO.setItems(wareQueryStockResponseItemDTOS);
+        }
+
+        // 校验库存
+        List<WareQueryStockResponseDTO.WareQueryStockResponseItemDTO> items = wareQueryStockResponseDTO.getItems();
+        if (CollectionUtils.isEmpty(items)) {
+            log.error("查询商品时:【{}】,仓库不存在该商品!", prodBarcode);
+            throw new ServiceException(String.format("查询商品时:【%s】,仓库不存在该商品!", prodBarcode));
+        }
+        WareQueryStockResponseDTO.WareQueryStockResponseItemDTO itemDTO = items.get(0);
+        // 仓库可用库存
+        wareQuantity = itemDTO.getQuantity();
+        // 保税仓库存 + 展销店库存 - 出区数 >= 购买数
+        if (!((wareQuantity + Integer.parseInt(stockNum) - exitRegionNumber) > sellVolume)) {
+            // 库存不足
+            log.error("商品条码:【{}】,sku:【{}】,门店库存:【{}】,保税仓库存:【{}】,出区数:【{}】,该商品仓库库存不足!", prodBarcode, sku, stockNum, wareQuantity, exitRegionNumber);
+            throw new ServiceException(String.format("商品条码:【%s】,sku:【%s】,门店库存:【%s】,保税仓库存:【%s】,出区数:【%s】,该商品仓库库存不足!", prodBarcode, sku, stockNum, wareQuantity, exitRegionNumber));
+        }
+    }
+
+    @Override
     public List<Map<String,Object>> selectSkuDetails(String prodBarcode, String storeId) {
         /**
          * 1.首先根据商品条码跟门店id查询是否有库存,没库存直接返回

+ 1 - 1
kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html

@@ -138,7 +138,7 @@
         <div id="content" class="row-fluid">
             <div class="col-md-3">
                 <div>
-                    <i-input class="search" placeholder="输入或扫码商品条形码" id="saomiao" v-model.trim='prodBarcode' @on-enter="searchQuery(prodBarcode)"/>
+                    <i-input class="search" placeholder="输入或扫码商品条形码" ref="saomiao" id="saomiao" v-model.trim='prodBarcode' @on-enter="searchQuery(prodBarcode)"/>
                 </div>
                 <div v-show="prodBarcode" class="search_menu">
                     <ul>

+ 43 - 39
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -496,6 +496,13 @@ const delay = (function () {
 });
 
 let vm = new Vue({
+    created : function () {
+        this.$nextTick(() => {
+            setTimeout(() => {
+                this.$refs.saomiao.focus();
+            }, 200);
+        })
+    },
     el: '#rrapp',
     data: {
         showList: true,
@@ -685,7 +692,9 @@ let vm = new Vue({
             vm.storeId = sessionStorage.getItem("storeId");
             var thisGoods = {};
             var overflowLi = this.$refs.overflowLi;
-            $.get("../goods/details/"+vm.prodBarcode+"/"+vm.storeId+"/"+vm.prodBarcode, function (r) {
+            console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
+            let scanSellVolume = calScanSellVolume(vm.$refs.saomiao.value);
+            $.get("../goods/details/"+vm.prodBarcode+"/"+vm.storeId+"/"+vm.prodBarcode+"/"+scanSellVolume, function (r) {
                 if (r.code == 0) {
                     if(r.goodsDetails.length>1) {
                         r.goodsDetails.sellVolume = 1;
@@ -735,7 +744,9 @@ let vm = new Vue({
         saveOld:function(){
             vm.storeId = sessionStorage.getItem("storeId");
             var overflowLi = this.$refs.overflowLi;
-                $.get("../goods/detailsOld/"+vm.prodBarcode+"/"+vm.storeId, function (r) {
+            console.log("vm.$refs.saomiao.value===>" + vm.$refs.saomiao.value);
+            let scanSellVolume = calScanSellVolume(vm.$refs.saomiao.value);
+                $.get("../goods/detailsOld/"+vm.prodBarcode+"/"+vm.storeId+"/"+scanSellVolume, function (r) {
                     if (r.code == 0) {
                         r.goodsDetails.sellVolume = 1;
                         vm.goodsMap.set(r.goodsDetails.goodsSn,JSON.parse(JSON.stringify(r.goodsDetails)));
@@ -857,16 +868,6 @@ let vm = new Vue({
                     // console.log(goods);
                     // console.log(vm.totalPrice);
 
-                    $.get("../goods/number/del/" + sessionStorage.getItem("storeId") + "/" + goods.sku + "/" + goods.prodBarcode, function (res) {
-                        if (res.code === 0) {
-                            alert("删除成功!");
-                        } else if (res.code === 500) {
-                            alert(res.msg);
-                        } else {
-                            alert("未知异常!请联系管理员!");
-                        }
-                    });
-
                     if(vm.freeBardcode.get(goods.prodBarcode) || vm.freeBardcode.get(goods.prodBarcode) == 0){
                         var nnum = (((goods.retailPrice * goods.sellVolume) - goods.actualPaymentAmount)/goods.retailPrice);
                         vm.freeBardcode.set(goods.prodBarcode, nnum);
@@ -891,19 +892,11 @@ let vm = new Vue({
         },
         clearGoodsList:function(){
             confirm('确认清空吗?', function () {
-                $.get("../goods/number/clear/" + sessionStorage.getItem("storeId"), function (res) {
-                    if (res.code === 0) {
-                        layer.confirm("清空成功", {
-                                skin: 'layui-layer-molv', btn: ['确定'], title: "提示"
-                            }, function () {
-                                location.reload();
-                            });
-                    } else if (res.code === 500) {
-                        alert(res.msg);
-                    } else {
-                        alert("未知异常!请联系管理员!");
-                    }
-                })
+                layer.confirm("清空成功", {
+                    skin: 'layui-layer-molv', btn: ['确定'], title: "提示"
+                }, function () {
+                    location.reload();
+                });
             })
 
         },
@@ -2089,6 +2082,25 @@ function toRefund(){
     })
 }
 
+calScanSellVolume = function (prodBarcode) {
+    let goodsList = vm.goodsList;
+
+    console.log("prodBarcode typeof===>" + typeof prodBarcode);
+    console.log("prodBarcode===>" + prodBarcode);
+    if (goodsList === null || goodsList.length === 0) {
+        return 1;
+    }
+    let sellVolume = 0;
+    goodsList.forEach(goods => {
+        if (prodBarcode === goods.prodBarcode) {
+            sellVolume = sellVolume + goods.sellVolume;
+        }
+    });
+
+    return sellVolume;
+
+}
+
 /**
  * 计算当前购物栏商品优惠价格
  */
@@ -2186,20 +2198,12 @@ handleSellVolume = function (currentGoodsDetail, type) {
             }
         });
     } else {
-        $.get("../goods/number/minus/"+ storeId +"/" + sku + "/" + prodBarcode, function (res) {
-            if (res.code === 0) {
-                currentGoodsDetail.sellVolume -= 1;
-                currentGoodsDetail.goodstaxes = currentGoodsTax.subtract(singleTax).toString();
-                currentGoodsDetail.actualPaymentAmount = currentActualPaymentAmount.subtract(singleActualPaymentAmount).toString();
-                vm.totalCount -= 1;
-                vm.totalPrice = currentTotalPrice.subtract(retailPrice).toString();
-                vm.actualPrice = currentActualPrice.subtract(singleActualPaymentAmount).toString();
-            } else if (res.code === 500) {
-                alert(res.msg);
-            } else {
-                alert("未知异常!请联系管理员!");
-            }
-        });
+        currentGoodsDetail.sellVolume -= 1;
+        currentGoodsDetail.goodstaxes = currentGoodsTax.subtract(singleTax).toString();
+        currentGoodsDetail.actualPaymentAmount = currentActualPaymentAmount.subtract(singleActualPaymentAmount).toString();
+        vm.totalCount -= 1;
+        vm.totalPrice = currentTotalPrice.subtract(retailPrice).toString();
+        vm.actualPrice = currentActualPrice.subtract(singleActualPaymentAmount).toString();
     }
 
     for (let i = 0; i < vm.goodsList.length; i++) {