Browse Source

在售产品批量删除调整

hulh 8 years ago
parent
commit
7778cbebb5

+ 30 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/controller/GoodsController.java

@@ -668,12 +668,41 @@ public class GoodsController {
 	 * @param tag 自定义标签
 	 * @return
 	 */
-    @RequestMapping(value = "repeat/tag", method = RequestMethod.GET)
+    @RequestMapping(value = "/repeat/tag", method = RequestMethod.GET)
     public ResultMap getCountByTag(Long goodId, Long productId, String tag) {
 		logger.log("自定义标签", "查询标签是否重复");
 		return goodsService.getCountByTag(goodId, productId, tag);
 	}
 
+	/**
+	 * 批量删除指定在售产品
+	 * @param idList
+	 * @return
+	 */
+	@RequestMapping(value = "/delete/batch", method = RequestMethod.PUT)
+	public ResultMap batchDeleteGoods(@RequestBody List<Long> idList) {
+		logger.log("删除商品", "根据id删除指定商品");
+		return goodsService.batchDeleteGoods(idList);
+	}
+
+	@RequestMapping(value = "/delete/enUU", method = RequestMethod.PUT)
+	public ResultMap deleteAllOnSaleGoods() {
+		Long enUU = SystemSession.getUser().getEnterprise().getUu();
+		logger.log("下架商品", "下架该enUU" + enUU + "所有商品");
+		return goodsService.deleteGoodsByEnUU(enUU);
+	}
+
+	/**
+	 * 下架当前企业的所有在售商品
+	 * @return
+	 */
+	@RequestMapping(value = "/down/enUU", method = RequestMethod.PUT)
+	public ResultMap downNowEnterpriseGoods() {
+		Long enUU = SystemSession.getUser().getEnterprise().getUu();
+		logger.log("下架商品", "下架该enUU" + enUU + "所有商品");
+		return goodsService.downNowEnterpriseGoods(enUU);
+	}
+
     /**
      * 下架当前企业的所有的商品信息
      *

+ 17 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/GoodsDao.java

@@ -184,6 +184,23 @@ public interface GoodsDao extends JpaSpecificationExecutor<Goods>, JpaRepository
      */
     List<Goods> findByEnUUAndStatus(Long enUU, Integer status);
 
+    /**
+     * 根据企业enUU获取指定状态的产品列表
+     * @param enUU  企业euUU
+     * @param statusList 指定状态
+     * @return
+     */
+    @Query(value = "select g from Goods g where g.enUU = :enUU and status in :statusList")
+    List<Goods> findByEnUUAndInStatus(@Param("enUU") Long enUU, @Param("statusList") List<Integer> statusList);
+
+    /**
+     * 根据id列表查询所有的在售商品
+     * @param idList
+     * @return
+     */
+    @Query(value = "select g from Goods g where id in :idList")
+    List<Goods> findGoodsInIdList(@Param("idList") List<Long> idList);
+
     /**
      * 根据企业UU、商品型号和库存类型获取产品
      *

+ 21 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/service/GoodsService.java

@@ -525,6 +525,27 @@ public interface GoodsService {
      */
     ResultMap getCountByTag(Long goodId, Long productId, String tag);
 
+    /**
+     *下架当前企业的所有在售商品
+     * @param enUU  enUU
+     * @return
+     */
+    ResultMap downNowEnterpriseGoods(Long enUU);
+
+    /**
+     * 根据指定id列表删除在售产品
+     * @param idList
+     * @return
+     */
+    ResultMap batchDeleteGoods(List<Long> idList);
+
+    /**
+     * 根据企业enUU删除该产品
+     * @param enUU
+     * @return
+     */
+    ResultMap deleteGoodsByEnUU(Long enUU);
+
     /**
      * 批量获取相似商品的个数
      *

+ 135 - 45
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/GoodsServiceImpl.java

@@ -2457,10 +2457,10 @@ public class GoodsServiceImpl implements GoodsService {
         goods.setStatus(Status.REMOVED.value());
 
         //检查对应产品库信息
-        Product product = productDao.findOne(goods.getProductid());
-        if (product == null) {
-            throw new IllegalOperatorException("产品库信息丢失");
-        }
+//        Product product = productDao.findOne(goods.getProductid());
+//        if (product == null) {
+//            throw new IllegalOperatorException("产品库信息丢失");
+//        }
 
         logger.info(String.format("%s 商城测试下架时间记录 转历史库存 开始", dateFormat.format(new Date())));
         GoodsHistory goodsHist = goodsHistoryService.converTGoodsHist(goods,
@@ -2469,19 +2469,6 @@ public class GoodsServiceImpl implements GoodsService {
         goodsHist.setMessage(goodsHist.getMessage() + "该批次下架");
         goodsHistoryService.save(goodsHist);
 
-//		ProductStandardPutOnInfo standardPutOnInfo = productStandardPutOnInfoDao.findOne(goods.getStandprodid());
-//		if(standardPutOnInfo != null) {
-//			standardPutOnInfo.setStatus(Status.REMOVED.value());
-//			standardPutOnInfo.setAvailableOnSale(NumberUtil.add(standardPutOnInfo.getAvailableOnSale(), standardPutOnInfo.getOnSaleQty()));
-//			standardPutOnInfo.setOnSaleQty(0.0d);
-//			productStandardPutOnInfoDao.save(standardPutOnInfo);
-//
-//			Product product = productDao.findOne(standardPutOnInfo.getProductid());
-//			product.setAvailableOnSale(standardPutOnInfo.getAvailableOnSale());
-//			product.setOnSaleQty(standardPutOnInfo.getOnSaleQty());
-//			productDao.save(product);
-//		}
-
         Goods updateGoods = goodsDao.save(goods);
 		//下架对应的批次 目前确定下架之后不做删除动作。
 		// goodsDao.deleteByBatchCode(goods.getBatchCode());
@@ -2796,6 +2783,110 @@ public class GoodsServiceImpl implements GoodsService {
         return ResultMap.success(false);
     }
 
+    @Override
+    public ResultMap downNowEnterpriseGoods(Long enUU) {
+        List<Integer> statusList = Arrays.asList(Status.AVAILABLE.value(), Status.UNAVAILABLE.value());
+        List<Goods> goodsList = goodsDao.findByEnUUAndInStatus(enUU, statusList);
+        List<GoodsHistory> histories = new ArrayList<>(goodsList.size());
+        List<Goods> goodsUpdate = new ArrayList<>(goodsList.size());
+        List<String> uuids = new ArrayList<>(goodsList.size());
+        for (Goods goods : goodsList) {
+            goods.setStatus(Status.REMOVED.value());
+
+            GoodsHistory goodsHistory = goodsHistoryService.converTGoodsHist(goods, "批量下架公司产品");
+            goodsHistory.setMessage(goodsHistory.getMessage() + "该批次下架");
+            goodsHistoryService.save(goodsHistory);
+            histories.add(goodsHistory);
+            goodsUpdate.add(goods);
+
+            uuids.add(goods.getUuid());
+        }
+
+        goodsDao.save(goodsUpdate);
+        goodsHistoryDao.save(histories);
+        for (String uuid : uuids) {
+            updateComponentTradeInfos(uuid);
+        }
+        return ResultMap.success(goodsUpdate.size());
+    }
+
+    private Map<Object, Object> deleteGoodsList(List<Goods> goodsList) {
+        Map<Object, Object> map = new HashMap<>();
+        int fail = 0;
+        // 保存批次号,以便下架推荐产品
+        Set<String> set = new HashSet<>();
+        String storeId = null;
+        for (Goods goods : goodsList) {
+            boolean isExistOrder = validateExistOrder(goods.getBatchCode());
+
+            if (isExistOrder) {
+                fail++;
+                continue;
+            }
+            if (storeId == null) {
+                storeId = goods.getStoreid();
+            }
+            set.add(goods.getBatchCode());
+
+            List<Order> orders = detailService.updateOrderDetailsByGoods(goods);
+            orderService.save(orders);
+
+            Boolean aBoolean = floorsService.updateHomeInfo(goods.getBatchCode());
+            List<GoodsHistory> histories = new ArrayList<>();
+            if (goods.getStatus().equals(Status.AVAILABLE.value()) || goods.getStatus().equals(Status.UNAVAILABLE.value())) {
+                //先做下架记录
+                goods.setStatus(Status.REMOVED.value());
+                GoodsHistory goodsHistoryRemoved = goodsHistoryService.converTGoodsHist(goods, OperateType.Down.getPhrase());
+                histories.add(goodsHistoryRemoved);
+            }
+
+            goods.setStatus(Status.GOODS_DELETE.value());
+            //删除库存信息
+            GoodsHistory goodsHistoryDelete = goodsHistoryService.converTGoodsHist(goods, OperateType.DELETE.getPhrase());
+            histories.add(goodsHistoryDelete);
+            goodsHistoryService.save(histories);
+
+            goodsDao.deleteByBatchCode(goods.getBatchCode());
+            if (goods.getProductid() != null) {
+                Product product = productDao.findOne(goods.getProductid());
+                if (product != null) {
+                    ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
+                    if (productPrivate == null) {
+                        productPrivate = new ProductPrivate();
+                    }
+                    Integer count = productPrivate.getBatchCount();
+                    productPrivate.setBatchCount(--count);
+                    productPrivateDao.save(productPrivate);
+                }
+            }
+
+            //统计器件的信息
+            if (!StringUtils.isEmpty(goods.getUuid())) {
+                updateComponentTradeInfos(goods.getUuid());
+            }
+        }
+        recommendProductService.deleteProductsWhenSellerUpdateReserve(storeId, set);
+        map.put("total", goodsList.size());
+        map.put("fail", fail);
+        return map;
+    }
+
+    @Override
+    @Transactional
+    public ResultMap batchDeleteGoods(List<Long> idList) {
+        List<Goods> goodsList = goodsDao.findGoodsInIdList(idList);
+        Map<Object, Object> map = deleteGoodsList(goodsList);
+        return ResultMap.success(map);
+    }
+
+    @Override
+    public ResultMap deleteGoodsByEnUU(Long enUU) {
+        List<Integer> statusList = Arrays.asList(Status.AVAILABLE.value(), Status.UNAVAILABLE.value());
+        List<Goods> goodsList = goodsDao.findByEnUUAndInStatus(enUU, statusList);
+        Map<Object, Object> map = deleteGoodsList(goodsList);
+        return ResultMap.success(map);
+    }
+
     /**
      * 下架该公司所有的商品信息
      *
@@ -3018,19 +3109,8 @@ public class GoodsServiceImpl implements GoodsService {
         if(goods == null) {
             return null;
         }
-        boolean isExistOrder = false;
-        List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(goods.getBatchCode());
-        String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
-        for (OrderDetail detail : orderList) {
-            Order order = detail.getOrder();
-            int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
-            if (codes.indexOf(String.valueOf(status)) < 0) {
-                if (StringUtils.isEmpty(order.getOrderids())) {
-                    isExistOrder = true;
-                    break;
-                }
-            }
-        }
+        boolean isExistOrder = validateExistOrder(goods.getBatchCode());
+
         if (isExistOrder) {
             throw new IllegalOperatorException("该商品已经被购买了,不能删除");
         }
@@ -3057,9 +3137,9 @@ public class GoodsServiceImpl implements GoodsService {
         goodsHistoryService.save(histories);
 
         goodsDao.deleteByBatchCode(goods.getBatchCode());
-        if(goods.getProductid() != null) {
+        if (goods.getProductid() != null) {
             Product product = productDao.findOne(goods.getProductid());
-            if(product != null) {
+            if (product != null) {
                 ProductPrivate productPrivate = releaseProductByBatchService.findByPrId(product.getId());
                 if (productPrivate == null) {
                     productPrivate = new ProductPrivate();
@@ -3077,6 +3157,28 @@ public class GoodsServiceImpl implements GoodsService {
         return goods;
     }
 
+    /**
+     * 根据批次号查询是否有订单
+     * @param batchCode
+     * @return
+     */
+    private boolean validateExistOrder(String batchCode) {
+        boolean isExistOrder = false;
+        List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(batchCode);
+        String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
+        for (OrderDetail detail : orderList) {
+            Order order = detail.getOrder();
+            int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
+            if (codes.indexOf(String.valueOf(status)) < 0) {
+                if (StringUtils.isEmpty(order.getOrderids())) {
+                    isExistOrder = true;
+                    break;
+                }
+            }
+        }
+        return isExistOrder;
+    }
+
     @Override
     public List<Goods> deleteGoods(List<Goods> goodses) {
         List<Order> orders = new ArrayList<>();
@@ -3090,19 +3192,7 @@ public class GoodsServiceImpl implements GoodsService {
             if (goods == null) {
                 return null;
             }
-            boolean isExistOrder = false;
-            List<OrderDetail> orderList = orderDetailService.findOrderDetailByBatchCode(goods.getBatchCode());
-            String codes = OrderStatus.UNAVAILABLE.getCodes() + "-" + Status.TOBECONFIRMED.value();
-            for (OrderDetail detail : orderList) {
-                Order order = detail.getOrder();
-                int status = order.getStatus() == null ? detail.getStatus() : order.getStatus();
-                if (codes.indexOf(String.valueOf(status)) < 0) {
-                    if (StringUtils.isEmpty(order.getOrderids())) {
-                        isExistOrder = true;
-                        break;
-                    }
-                }
-            }
+            boolean isExistOrder = validateExistOrder(goods.getBatchCode());
             if (isExistOrder) {
                 throw new IllegalOperatorException("存在商品已经被购买了,不能删除");
             }

+ 15 - 1
src/main/webapp/resources/js/common/query/goods.js

@@ -133,9 +133,23 @@ define([ 'ngResource' ], function() {
 				url : 'trade/goods/putOn/:id',
 				method: 'PUT'
 			},
+			downNowEnterpriseGoods: {
+				url : 'trade/goods/down/enUU',
+				method: 'PUT'
+			},
+			// 删除列表
+			deleteGoodsByIdList: {
+				url : 'trade/goods/delete/batch',
+				method: 'PUT'
+			},
+			// 删除企业下在售
+			deleteGoodsByEnUU: {
+				url : 'trade/goods/delete/enUU',
+				method: 'PUT'
+			},
 			// 卖家下架已上架商品
 			offShelfGoodsByProvider : {
-				url : rootPath + '/trade/goods/provider/off/shelf',
+				url : 'trade/goods/provider/off/shelf',
 				method : 'PUT'
 			},
 			// 卖家下架已上架商品

+ 54 - 19
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_onSaleCtrl.js

@@ -307,6 +307,41 @@ define([ 'app/app' ], function(app) {
             });
         };
 
+        //获取选中之后的信息
+        var getChooseBatch = function () {
+            $scope.choosedBatch = [];
+            angular.forEach($scope.currenctGoods, function (goods) {
+                if (goods.isChoosed) {
+                    $scope.choosedBatch.push(goods.batchCode);
+                }
+            });
+        };
+
+        //获取选中之后的信息
+        var getChooseInfo = function () {
+            $scope.choosedIds = [];
+            angular.forEach($scope.currenctGoods, function (goods) {
+                if (goods.isChoosed) {
+                    $scope.choosedIds.push(goods.id);
+                }
+            });
+        };
+
+        /**
+         * 批量删除
+         */
+        $scope.batchDelete = function () {
+            if ($scope.chooseAllPage) {
+
+            } else {
+                getChooseInfo();
+                if (!$scope.choosedIds || $scope.choosedIds.length == 0) {
+                    toaster.pop("info", "您尚未选中任何产品");
+                    return ;
+                }
+
+            }
+        };
 
 
         /**
@@ -315,9 +350,25 @@ define([ 'app/app' ], function(app) {
          * @param commodity		待修改商品信息
          * @param isDischarge	是否下架商品
          */
-        $scope.updateCommodityInfo = function (commodity, isDischarge) {
-            if (isDischarge) {
-                Goods.offShelfGoodsByProvider({batchCodes : commodity.batchCode}, {}, function(map){
+        $scope.updateCommodityInfo = function () {
+            if ($scope.chooseAllPage) {
+                Goods.downNowEnterpriseGoods({}, {}, function(result) {
+                    if (result.success) {
+                        toaster.pop('success', '下架成功');
+                        $scope.isSoldOut = false;
+                        loadDataReload();
+                    } else {
+                        toaster.pop('error', result.message);
+                    }
+                });
+            } else {
+                getChooseBatch();
+                if (!$scope.choosedBatch || $scope.choosedBatch.length == 0) {
+                    toaster.pop("info", "您尚未选中任何产品");
+                    return ;
+                }
+                var batchs = $scope.choosedBatch.join(",");
+                Goods.offShelfGoodsByProvider({batchCodes : batchs}, {}, function(map){
                     if (map.success) {
                         toaster.pop('success', '下架成功');
                         $scope.isSoldOut = false;
@@ -328,22 +379,6 @@ define([ 'app/app' ], function(app) {
                 }, function(){
                     toaster.pop('error', '下架失败');
                 });
-            } else {
-                var modalInstance = $modal.open({
-                    templateUrl : $rootScope.rootPath + "/static/view/vendor/modal/discharge_commodity_modal.html",
-                    controller : "GoodsDischargeCtrl",
-                    size : "lg",
-                    resolve : {
-                        goods : function() {
-                            console.log(commodity);
-                            return angular.copy(commodity);
-                        }
-                    }
-                });
-                modalInstance.result.then(function() {
-                    loadDataReload();
-                }, function() {
-                });
             }
         };
 

+ 1 - 1
src/main/webapp/resources/view/vendor/forstore/vendor_onSale.html

@@ -1234,7 +1234,7 @@
     </div>
     <div class="content">
         <p><i class="fa fa-exclamation-circle"></i>确认下架?</p>
-        <div><a ng-click="cancleSoldOut()">取消</a><a ng-click="updateCommodityInfo(soldOutCommodity, true)">确认</a></div>
+        <div><a ng-click="cancleSoldOut()">取消</a><a ng-click="updateCommodityInfo()">确认</a></div>
     </div>
 </div>