Browse Source

Merge remote-tracking branch 'origin/release-201827-wangcz' into release-201827-wangcz

shenjj 7 years ago
parent
commit
3616b063e2

+ 0 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductPrivateDao.java

@@ -12,7 +12,6 @@ public interface ProductPrivateDao  extends JpaRepository<ProductPrivate, Long>,
 
     public List<ProductPrivate> findByPrId(Long prId);
 
-
     /**
      * 根据物料的id 获取私有信息
      *

+ 66 - 35
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ProductServiceImpl.java

@@ -51,6 +51,7 @@ import com.uas.platform.b2c.trade.presale.model.GoodsBrowsingHistory;
 import com.uas.platform.b2c.trade.presale.service.CartService;
 import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.b2c.trade.util.BoundedExecutor;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.model.Constant;
 import com.uas.platform.core.model.PageInfo;
@@ -91,6 +92,8 @@ import java.sql.Statement;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * Created by wangyc on 2017/5/26.
@@ -208,6 +211,11 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private UserDao userDao;
 
+    /**
+     * 控制任务提交速度的线程池
+     */
+    private final BoundedExecutor executor;
+
     @Autowired
     private SearchService searchService;
 
@@ -220,12 +228,18 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private ProductPrivateService productPrivateService;
 
-    @Autowired
-    private CommonDao commonDao;
+    private final CommonDao commonDao;
 
     @Autowired
     private InOutboundDetailService inOutboundDetailService;
 
+    @Autowired
+    public ProductServiceImpl(CommonDao commonDao) {
+        this.commonDao = commonDao;
+        ExecutorService executorService = Executors.newCachedThreadPool();
+        executor = new BoundedExecutor(executorService, 1600);
+    }
+
     private ConcurrentHashMap<String, Field> sortFields = new ConcurrentHashMap<String, Field>();
 
     @Override
@@ -1973,11 +1987,8 @@ public class ProductServiceImpl implements ProductService {
                 productPrivate.setAttach(component.getAttach());
                 productPrivateDao.save(productPrivate);
             } else {
-                ProductPrivate productPrivate = new ProductPrivate();
+                ProductPrivate productPrivate = new ProductPrivate(product.getId());
                 productPrivate.setAttach(component.getAttach());
-                productPrivate.setPrId(product.getId());
-                productPrivate.setB2cEnabled(IntegerConstant.YES_SHORT);
-                productPrivate.setBatchCount(IntegerConstant.NO_SHORT);
                 productPrivateDao.save(productPrivate);
             }
         }
@@ -1999,39 +2010,59 @@ public class ProductServiceImpl implements ProductService {
             return new ResultMap(CodeType.OK, "");
         } else {
             if ((!StringUtils.isEmpty(component.getSpec())) || (!StringUtils.isEmpty(component.getAttach()))) {
-                List<Product> productList = productDao.findByCmpUuId(component.getUuid());
-                List<ProductPrivate> productPrivatelist = new ArrayList<>();
-                List<Product> list = new ArrayList<>();
-                for (Product product : productList) {
-                    if (!StringUtils.isEmpty(component.getAttach())) {
-                        List<ProductPrivate> productPrivates = productPrivateDao.findByPrId(product.getId());
-                        if (CollectionUtils.isNotEmpty(productPrivates)) {
-                            ProductPrivate productPrivate = productPrivates.get(0);
-                            productPrivate.setAttach(component.getAttach());
-                            productPrivatelist.add(productPrivate);
-                        } else {
-                            ProductPrivate productPrivate = new ProductPrivate();
-                            productPrivate.setAttach(component.getAttach());
-                            productPrivate.setPrId(product.getId());
-                            productPrivate.setB2cEnabled(IntegerConstant.YES_SHORT);
-                            productPrivate.setBatchCount(IntegerConstant.NO_SHORT);
-                            productPrivatelist.add(productPrivate);
-                        }
-                    }
 
-                    if (StringUtils.isEmpty(product.getSpec()) && !StringUtils.isEmpty(component.getSpec())) {
-                        product.setSpec(component.getSpec());
-                        list.add(product);
+                final Runnable runnable = new Runnable() {
+                    @Override
+                    public void run() {
+                        List<Product> productList = productDao.findByCmpUuId(component.getUuid());
+                        List<Product> list = new ArrayList<>();
+                        List<Long> ids = new ArrayList<>();
+                        for (Product product : productList) {
+                            if (!StringUtils.isEmpty(component.getAttach())) {
+                                ids.add(product.getId());
+                            }
+                            if (StringUtils.isEmpty(product.getSpec()) && !StringUtils.isEmpty(component.getSpec())) {
+                                product.setSpec(component.getSpec());
+                                list.add(product);
+                            }
+                        }
+                        if (CollectionUtils.isNotEmpty(ids)) {
+                            List<ProductPrivate> productPrivates = productPrivateDao.findByPrIds(ids);
+                            boolean isExist = false;
+                            List<ProductPrivate> productPrivatelist = new ArrayList<>();
+                            for (Long id : ids) {
+                                isExist = false;
+                                for (ProductPrivate productPrivate : productPrivates) {
+                                    if (id.longValue() == productPrivate.getPrId().longValue()) {
+                                        productPrivate.setAttach(component.getAttach());
+                                        productPrivatelist.add(productPrivate);
+                                        isExist = true;
+                                        break;
+                                    }
+                                }
+                                if (!isExist) {
+                                    ProductPrivate productPrivate = new ProductPrivate(id);
+                                    productPrivate.setAttach(component.getAttach());
+                                    productPrivatelist.add(productPrivate);
+                                }
+                            }
+                            if (CollectionUtils.isNotEmpty(productPrivatelist)) {
+                                productPrivateDao.save(productPrivatelist);
+                            }
+                        }
+                        if (CollectionUtils.isNotEmpty(list)) {
+                            productDao.save(list);
+                        }
+                        goodsService.updateGoodsByComponent(component);
                     }
+                };
+                try {
+                    executor.submitTask(runnable);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
                 }
-                if (CollectionUtils.isNotEmpty(productPrivatelist)) {
-                    productPrivateDao.save(productPrivatelist);
-                }
-                if (CollectionUtils.isNotEmpty(list)) {
-                    productDao.save(list);
-                }
 
-                goodsService.updateGoodsByComponent(component);
+
                 return ResultMap.success("");
             } else {
                 return ResultMap.success("");

+ 1 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/service/impl/ReleaseProductByBatchServiceImpl.java

@@ -301,7 +301,7 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
                 success = releaseProductByBatchDao.getCountPublisherUuAndBatchAndReleaseCode(userUU, batch, ReleaseStatus.success.value());
             }
 		}
-		if (!isAPerson) {
+		if (!isAPerson && !isPcb) {
 			String publish = publishByBatch(batch, isPcb, ignoreImport);
 			modelMap.put("publish", publish);
 		}

+ 0 - 20
src/main/webapp/resources/js/admin/app.js

@@ -842,26 +842,6 @@
             title: '数据统计数据'
 		}));
 		
-		$httpProvider.interceptors.push(['Loading', '$q', function(Loading, $q) {
-			return {
-				request: function(cfg){
-					Loading.show();
-					return cfg;
-				},
-				requestError: function(rejection) {
-					Loading.hide();
-					return $q.reject(rejection);
-				},
-				response: function(res) {
-					Loading.hide();
-					return res;
-				},
-				responseError: function(rejection) {
-					Loading.hide();
-					return $q.reject(rejection);
-				}
-			}
-		}]);
 	}]);
 
 	app.run(['$rootScope', 'BaseService', '$location',  function($rootScope, BaseService, $location) {

+ 106 - 58
src/main/webapp/resources/js/admin/controllers/statsDataCtrl.js

@@ -1,6 +1,6 @@
 define([ 'app/app' ], function(app) {
     //在售商品信息统计
-    app.register.controller('statsDataCtrl', ['$scope', 'Goods', 'toaster', 'ComponentActive', 'BrandActive', 'CommonCountAPI', 'User', '$http', function($scope, Goods, toaster, ComponentActive, BrandActive, CommonCountAPI, User, $http) {
+    app.register.controller('statsDataCtrl', ['$scope', 'Goods', 'toaster', 'ComponentActive', 'BrandActive', 'CommonCountAPI', 'User', '$http', '$q', 'Loading', function($scope, Goods, toaster, ComponentActive, BrandActive, CommonCountAPI, User, $http, $q, Loading) {
         $scope.dateArea = 'oneMonth';
         var _formatDate = function (date, fmt) {
             if (!date) {
@@ -102,76 +102,124 @@ define([ 'app/app' ], function(app) {
             }
             initData();
         };
+        var getSeekInfo = function (commonUrl) {
+            // 询价信息
+            var defer = $q.defer();
+            $http({
+                method: 'get',
+                dataType: 'json',
+                url: commonUrl + '/inquiry/public/getInquiryCountData',
+                params: {startDate: $scope.startFormatDate, endDate: $scope.endFormatDate}
+            }).success(function (data) {
+                defer.resolve(data);
+            }).error(function (err) {
+                defer.reject(err);
+            });
+            return defer.promise;
+        }
+        var getAddEnUserCount = function (ssoUrl) {
+            // 新增企业用户数
+            var defer = $q.defer();
+            $http({
+                method: 'get',
+                dataType: 'json',
+                url: ssoUrl + '/api/userspace/inputTime/count/apps',
+                params: {start: $scope.addStartFormatDate, end: $scope.addEndFormatDate, fromApps:'mall,b2b'}
+            }).success(function (data) {
+                defer.resolve(data);
+            }).error(function (err) {
+                defer.reject(err);
+            });
+            return defer.promise;
+        }
+        var getAddUserCount = function (ssoUrl) {
+            // 新增个人用户
+            var defer = $q.defer();
+            $http({
+                method: 'get',
+                dataType: 'json',
+                url: ssoUrl + '/api/user/inputTime/count/apps',
+                params: {start: $scope.addStartFormatDate, end: $scope.addEndFormatDate, fromApps:'mall,b2b'}
+            }).success(function (data) {
+                defer.resolve(data);
+            }).error(function (err) {
+                defer.reject(err);
+            });
+            return defer.promise;
+        }
+
+        var getNoLoginInfo = function (ssoUrl) {
+            // 半年未登录用户数
+            var defer = $q.defer();
+            $http({
+                method: 'get',
+                dataType: 'json',
+                url: ssoUrl + '/api/user/count/notlgoin/month',
+                params: {start: $scope.addStartFormatDate, end: $scope.addEndFormatDate, months: '6,12,24'}
+            }).success(function (data) {
+                defer.resolve(data);
+            }).error(function (err) {
+                defer.reject(err);
+            });
+            return defer.promise;
+        }
+
+        var getProductData = function () {
+            // 上传产品个数
+            var defer = $q.defer();
+            Goods.getProductsCmp({fromDate: $scope.startDate.getTime(), toDate: $scope.endDate.getTime()}, function (data) {
+                defer.resolve(data.data);
+            }, function (err) {
+                defer.reject(err);
+                toaster.pop('error', '数据获取失败,请重试')
+            });
+            return defer.promise;
+        }
 
         // 获取帐户中心数据和询价接口数据
-        var getDevOrProdData = function () {
+        var getAllData = function (addStartFormatDate, addEndFormatDate, startFormatDate, endFormatDate) {
+            var defer = $q.defer();
             User.isDevOrProd(null, function (data) {
-                $scope.ssoUrl = data.data == 'success' ? 'https://sso.ubtob.com' : 'http://192.168.253.6:32323';
-                $scope.uasUrl = data.data == 'success' ? 'http://uas.ubtob.com' : 'http://192.168.253.12:9000/b2b-test';
-                $scope.commonUrl = data.data == 'success' ? 'https://api-inquiry.usoftmall.com' : 'http://218.17.158.219:24000';
-                // 询价信息
-                $http({
-                    method: 'get',
-                    dataType: 'json',
-                    url: $scope.commonUrl + '/inquiry/public/getInquiryCountData',
-                    params: {startDate: $scope.startFormatDate, endDate: $scope.endFormatDate}
-                }).success(function (data) {
-                    $scope.inquiryData = data
-                }).error(function () {
-                    toaster.pop('error', '获取未处理审批数据失败');
-                });
-                // 新增企业用户数
-                $http({
-                    method: 'get',
-                    dataType: 'json',
-                    url: $scope.ssoUrl + '/api/userspace/inputTime/count/apps',
-                    params: {start: $scope.addStartFormatDate, end: $scope.addEndFormatDate, fromApps:'mall,b2b'}
-                }).success(function (data) {
-                    $scope.newAddUserSpaceData = data.content
-                }).error(function () {
-                    toaster.pop('error', '获取未处理审批数据失败');
-                });
-                // 新增个人用户
-                $http({
-                    method: 'get',
-                    dataType: 'json',
-                    url: $scope.ssoUrl + '/api/user/inputTime/count/apps',
-                    params: {start: $scope.addStartFormatDate, end: $scope.addEndFormatDate, fromApps:'mall,b2b'}
-                }).success(function (data) {
-                    $scope.newAddUserData = data.content
-                }).error(function () {
-                    toaster.pop('error', '获取未处理审批数据失败');
-                });
-                // 半年未登录用户数
-                $http({
-                    method: 'get',
-                    dataType: 'json',
-                    url: $scope.ssoUrl + '/api/user/count/notlgoin/month',
-                    params: {start: $scope.addStartFormatDate, end: $scope.addEndFormatDate, months: '6,12,24'}
-                }).success(function (data) {
-                    $scope.monthLogoData = data
-                }).error(function () {
-                    toaster.pop('error', '获取未处理审批数据失败');
-                });
+                var ssoUrl = data.data == 'success' ? 'https://sso.ubtob.com' : 'http://192.168.253.6:32323',
+                // uasUrl = data.data == 'success' ? 'http://uas.ubtob.com' : 'http://192.168.253.12:9000/b2b-test',
+                commonUrl = data.data == 'success' ? 'https://api-inquiry.usoftmall.com' : 'http://218.17.158.219:24000';
+                defer.resolve([
+                    getSeekInfo(commonUrl),
+                    getAddEnUserCount(ssoUrl),
+                    getAddUserCount(ssoUrl),
+                    getNoLoginInfo(ssoUrl),
+                    getProductData()
+                ]);
             }, function (response) {
                 toaster.pop('error', '获取运行环境失败');
+                defer.reject(response);
             });
+            return defer.promise;
         };
         // 获取不同时间阶段的相关数据
         var initData = function () {
-            var addStartDate = new Date($scope.startDate.getTime() + 24 * 60 * 60 * 1000)
-            var addEndDate = new Date($scope.endDate.getTime() + 24 * 60 * 60 * 1000)
+            var addStartDate = new Date($scope.startDate.getTime() + 24 * 60 * 60 * 1000),
+            addEndDate = new Date($scope.endDate.getTime() + 24 * 60 * 60 * 1000);
             $scope.addStartFormatDate = _formatDate(addStartDate, 'yyyy-MM-dd');
             $scope.addEndFormatDate = _formatDate(addEndDate, 'yyyy-MM-dd');
             $scope.startFormatDate = _formatDate($scope.startDate, 'yyyy-MM-dd');
             $scope.endFormatDate =  _formatDate($scope.endDate, 'yyyy-MM-dd');
-            getDevOrProdData();
-            // 上传产品个数
-            Goods.getProductsCmp({fromDate: $scope.startDate.getTime(), toDate: $scope.endDate.getTime()}, function (data) {
-                $scope.productsCount = data.data
-            }, function (res) {
-                toaster.pop('error', '数据获取失败,请重试')
-            });
+            $q.all([getAllData()]).then(function (resolve) {
+                Loading.show();
+                $q.all(resolve[0]).then(function (dataListResolve) {
+                    $scope.inquiryData = dataListResolve[0];
+                    $scope.newAddUserSpaceData = dataListResolve[1].content;
+                    $scope.newAddUserData = dataListResolve[2].content;
+                    $scope.monthLogoData = dataListResolve[3];
+                    $scope.productsCount = dataListResolve[4];
+                    Loading.hide();
+                }, function (dataListReject) {
+                    console.log(dataListReject);
+                    Loading.hide();
+                })
+            }, function (reject) {
+                console.log(reject);
+            })
         };
         initData();
 

+ 1 - 1
src/main/webapp/resources/js/admin/main.js

@@ -75,6 +75,6 @@ require.config({
 		'big' : ['jquery']
 	}
 });
-require([ 'app/app' ], function(app) {
+require([ 'app/app', 'common/controllers/commonCtrls' ], function(app) {
 	app.init();
 });

+ 1 - 1
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_storageCtrl.js

@@ -118,7 +118,7 @@ define([ 'app/app' ], function(app) {
                 enName: '',
                 detail: []
             }
-            $scope.newDate = _formatDate(new Date(), 'yyyy-MM-dd hh-mm-ss')
+            $scope.newDate = _formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss')
             $scope.otherData = [];
             if($stateParams.ids){
                 Goods.findAllProduct({ids: $stateParams.ids}, function(data) {

+ 1 - 1
src/main/webapp/resources/view/usercenter/left_nav.html

@@ -41,7 +41,7 @@
                     <li ng-class="{'active' : active == 'buyer_order'}"><a  ui-sref="buyer_order">采购订单</a></li>
                     <li ng-class="{'active' : active == 'buyer_pay_center'}"><a  ui-sref="pay_center">应付对账</a></li>
                     <li ng-class="{'active' : active == 'buyer_invoice'}"><a  ui-sref="buyer_no_invoice">发票管理</a></li>
-                    <li ng-class="{'active' : active == 'vendor_productOn'}" ng-if="personage && !isPcbStore"><a  ui-sref="vendor_upload">产品导入</a></li>
+                    <!--<li ng-class="{'active' : active == 'vendor_productOn'}" ng-if="personage && !isPcbStore"><a  ui-sref="vendor_upload">产品导入</a></li>-->
                 </div>
                 <!--<div ng-hide="!(userInfo.pwdEnable && userInfo.haveUserQuestion &&  userInfo.emailValidCode && userInfo.emailValidCode == 2)">-->
                     <!--<li ng-class="{'active' : active == 'buyer_order'}"><a  ui-sref="buyer_order">订单中心</a></li>-->