Browse Source

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

yangc 7 years ago
parent
commit
4de287b4e6

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

@@ -1,5 +1,7 @@
 package com.uas.platform.b2c.prod.commodity.service.impl;
 
+import static com.uas.platform.core.persistence.criteria.PredicateUtils.like;
+
 import com.alibaba.fastjson.JSONObject;
 import com.uas.api.b2c_erp.core.model.OperateErrorStatus;
 import com.uas.api.b2c_erp.seller.model.GoodsFUas;
@@ -17,16 +19,47 @@ import com.uas.platform.b2c.core.constant.ShortConstant;
 import com.uas.platform.b2c.core.constant.SplitChar;
 import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
-import com.uas.platform.b2c.core.utils.*;
+import com.uas.platform.b2c.core.utils.DoubleArith;
+import com.uas.platform.b2c.core.utils.FastjsonUtils;
+import com.uas.platform.b2c.core.utils.NumberUtil;
+import com.uas.platform.b2c.core.utils.RegexConstant;
+import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.external.erp.commodity.util.ModelConverter;
 import com.uas.platform.b2c.prod.commodity.constant.DoubleConstant;
 import com.uas.platform.b2c.prod.commodity.constant.IntegerConstant;
 import com.uas.platform.b2c.prod.commodity.constant.StringConstant;
 import com.uas.platform.b2c.prod.commodity.constant.UploadConstant;
-import com.uas.platform.b2c.prod.commodity.dao.*;
-import com.uas.platform.b2c.prod.commodity.model.*;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsHistoryDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsModifyInfoDao;
+import com.uas.platform.b2c.prod.commodity.dao.GoodsSimpleDao;
+import com.uas.platform.b2c.prod.commodity.dao.PCBDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductDetailDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.dao.ProductStandardPutOnInfoDao;
+import com.uas.platform.b2c.prod.commodity.model.Goods;
+import com.uas.platform.b2c.prod.commodity.model.GoodsFilter;
+import com.uas.platform.b2c.prod.commodity.model.GoodsHistory;
 import com.uas.platform.b2c.prod.commodity.model.GoodsHistory.OperateType;
-import com.uas.platform.b2c.prod.commodity.service.*;
+import com.uas.platform.b2c.prod.commodity.model.GoodsInfo;
+import com.uas.platform.b2c.prod.commodity.model.GoodsModifyInfo;
+import com.uas.platform.b2c.prod.commodity.model.GoodsPriceInfo;
+import com.uas.platform.b2c.prod.commodity.model.GoodsQtyPrice;
+import com.uas.platform.b2c.prod.commodity.model.GoodsSimple;
+import com.uas.platform.b2c.prod.commodity.model.ModifyInfo;
+import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductAttachSubmit;
+import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.model.ProductStandardPutOnInfo;
+import com.uas.platform.b2c.prod.commodity.service.GoodsHistoryService;
+import com.uas.platform.b2c.prod.commodity.service.GoodsPriceInfoService;
+import com.uas.platform.b2c.prod.commodity.service.GoodsService;
+import com.uas.platform.b2c.prod.commodity.service.ProductAttachService;
+import com.uas.platform.b2c.prod.commodity.service.ProductPrivateService;
+import com.uas.platform.b2c.prod.commodity.service.ProductService;
+import com.uas.platform.b2c.prod.commodity.service.ProductStandardPutOnInfoService;
 import com.uas.platform.b2c.prod.commodity.status.ModifyInfoStatus;
 import com.uas.platform.b2c.prod.commodity.type.ModifyConstant;
 import com.uas.platform.b2c.prod.commodity.util.GoodsUtil;
@@ -64,7 +97,11 @@ 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.*;
+import com.uas.platform.core.model.Constant;
+import com.uas.platform.core.model.EncodingRulesConstant;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.model.Type;
 import com.uas.platform.core.persistence.criteria.CriterionExpression;
 import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
 import com.uas.platform.core.persistence.criteria.LogicalExpression;
@@ -72,6 +109,33 @@ import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.platform.core.persistence.criteria.SimpleExpression;
 import com.uas.platform.core.util.StringUtil;
 import com.uas.platform.core.util.serializer.FlexJsonUtils;
+import java.math.BigInteger;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.beanutils.ConvertUtils;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.MapUtils;
@@ -96,26 +160,6 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-import javax.servlet.http.HttpServletRequest;
-import java.math.BigInteger;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static com.uas.platform.core.persistence.criteria.PredicateUtils.like;
-
 
 /**
  * @author ChenHao
@@ -2571,20 +2615,10 @@ public class GoodsServiceImpl implements GoodsService {
                     String[] kindIds = kindUuid.split(",");
                     Long[] listkids = (Long[]) ConvertUtils.convert(kindIds,Long.class);
                     if (listkids != null && listkids.length > 0) {
-                        List<Long> productIds = pcbDao.findByKindIds(listkids);
-                        if (!CollectionUtils.isEmpty(productIds)) {
-                            pageInfo.expression(PredicateUtils.in("productid",productIds,false));
-                        } else {
-                            pageInfo.expression(PredicateUtils.in("kindUuid", kindIds, false));
-                        }
+                        pageInfo.expression(PredicateUtils.in("kindUuid", kindIds, false));
                     }
                 } else {
-                    List<Long> productId = pcbDao.findProductIdByKindid(Long.parseLong(kindUuid));
-                    if (!CollectionUtils.isEmpty(productId)) {
-                        pageInfo.expression(PredicateUtils.eq("productid",productId.get(0),false));
-                    } else {
-                        pageInfo.expression(PredicateUtils.eq("kindUuid", kindUuid, false));
-                    }
+                    pageInfo.expression(PredicateUtils.eq("kindUuid", kindUuid, false));
                 }
             }
         }

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/product/component/dao/ComponentDao.java

@@ -89,12 +89,12 @@ public interface ComponentDao extends JpaSpecificationExecutor<Component>, JpaRe
 	public List<Component> findByCodes(@Param("codes") String[] codes);
 
 	/**
-	 * 根据器件的品牌id获取器件的类目列表,按器件数量倒序排序
+	 * 根据器件的品牌id获取器件的类目列表
 	 * 
 	 * @param brandId 品牌id
 	 * @return 器件信息
 	 */
-	@Query("select c.kindid from Component c where c.brandid = :brandId group by c.kindid order by count(c.kindid) desc")
+	@Query("select distinct c.kindid from Component c where c.brandid = :brandId")
 	public List<Long> findKindIdsByBrandId(@Param("brandId") Long brandId);
 
 	/**

+ 2 - 1
src/main/java/com/uas/platform/b2c/prod/product/kind/api/KindController.java

@@ -118,13 +118,14 @@ public class KindController {
 	}
 
 	/**
-	 * 获取类目下器件的品牌列表
+	 * 获取类目下器件的品牌列表(已弃用)
 	 * 
 	 * @param kindId 类目id
 	 * @return 品牌列表
 	 */
 	@RequestMapping(value = "/{kindId}/brands", method = RequestMethod.GET)
 	@ResponseBody
+	@Deprecated
 	public List<BrandInfo> getBrandsByKindIdOrderByCountDesc(@PathVariable("kindId") Long kindId) {
 		return kindService.findBrandsByKindid(kindId);
 	}

+ 5 - 0
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_no_invoice_ctrl.js

@@ -77,6 +77,11 @@ define([ 'app/app' ], function(app) {
                         angular.forEach($scope.orderData, function (item) {
                             item.checked = false;
                         })
+                        setTimeout(function() {
+                            if (docu.scrollTop() + window.height() > docu.height() - 330) {
+                                angular.element('#applyBtn').slideUp(0)
+                            }
+                        },0)
                     }, function (response) {
                         toaster.pop('error', '获取未开票订单信息失败 ', response.data);
                     });

+ 13 - 2
src/main/webapp/resources/js/vendor/app.js

@@ -1,4 +1,4 @@
-define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'common/query/brand', 'common/query/kind', 'common/query/component', 'common/query/goods', 'common/query/rate','common/query/cart', 'common/query/order', 'common/query/address', 'common/query/invoice', 'common/query/property', 'common/query/kindAdvice', 'common/query/propertyAdvice', 'common/query/return' , 'common/query/change', 'common/query/logistics', 'ui.router', 'ui-bootstrap', 'ui-form', 'ui-jquery','angular-toaster', 'ngDraggable', 'angular-sanitize', 'ngTable', 'dynamicInput', 'jquery-imagezoom', 'file-upload', 'file-upload-shim', 'common/query/urlencryption' , 'common/query/purchase', 'common/query/vendor', 'common/query/goods', 'common/query/bankTransfer', 'common/query/enterprise', 'common/query/bill', 'common/query/receipt', 'common/query/collection', 'common/query/express', 'common/query/bankInfo','common/query/charge', 'common/query/statistics', 'common/query/currency', 'jquery-chart', 'common/query/responseLogistics', 'common/query/goodsPrice', 'common/query/address' , 'common/query/search', 'common/query/urlencryption', 'common/query/releaseProInfo', 'common/query/makerDemand', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/logistics', 'common/query/storeInfo', 'common/query/recommendation', 'common/query/user', 'common/query/logisticsPort', 'common/query/cms', 'common/query/material', 'common/query/storeCms', 'common/query/productImport', 'common/query/stockInOut', 'common/module/store_recommend_product', 'common/module/chat_web_module', 'common/query/standardPutOnAdmin', 'common/query/storeViolations', 'common/query/internalMessage', 'common/query/installments','common/query/product','common/query/seekPurchase','common/query/UASBatchPutOnProperty', 'common/query/authority', 'common/query/attendtion', 'onFinishRender'], function(angularAMD) {
+define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'common/query/brand', 'common/query/kind', 'common/query/component', 'common/query/goods', 'common/query/rate','common/query/cart', 'common/query/order', 'common/query/address', 'common/query/invoice', 'common/query/property', 'common/query/kindAdvice', 'common/query/propertyAdvice', 'common/query/return' , 'common/query/change', 'common/query/logistics', 'ui.router', 'ui-bootstrap', 'ui-form', 'ui-jquery','angular-toaster', 'ngDraggable', 'angular-sanitize', 'ngTable', 'dynamicInput', 'jquery-imagezoom', 'file-upload', 'file-upload-shim', 'common/query/urlencryption' , 'common/query/purchase', 'common/query/vendor', 'common/query/goods', 'common/query/bankTransfer', 'common/query/enterprise', 'common/query/bill', 'common/query/receipt', 'common/query/collection', 'common/query/express', 'common/query/bankInfo','common/query/charge', 'common/query/statistics', 'common/query/currency', 'jquery-chart', 'common/query/responseLogistics', 'common/query/goodsPrice', 'common/query/address' , 'common/query/search', 'common/query/urlencryption', 'common/query/releaseProInfo', 'common/query/makerDemand', 'common/query/afterSale', 'common/query/messageBoard', 'common/query/logistics', 'common/query/storeInfo', 'common/query/recommendation', 'common/query/user', 'common/query/logisticsPort', 'common/query/cms', 'common/query/material', 'common/query/storeCms', 'common/query/productImport', 'common/query/stockInOut', 'common/module/store_recommend_product', 'common/module/chat_web_module', 'common/query/standardPutOnAdmin', 'common/query/storeViolations', 'common/query/internalMessage', 'common/query/installments','common/query/product','common/query/seekPurchase','common/query/UASBatchPutOnProperty', 'common/query/authority', 'common/query/attendtion'], function(angularAMD) {
 	'use strict';
 	/**
 	 * 自定义Array对象的属性last 方法
@@ -9,7 +9,18 @@ define([ 'angularAMD', 'ngLocal', 'common/services', 'common/directives', 'commo
 	};
 
 	var app = angular.module('myApp', [ 'ui.router', 'ui.bootstrap', 'ng.local', 'ui.form', 'ui.jquery', 'toaster', 'ngDraggable', 'tool.directives', 'ngSanitize', 'common.query.kind', 'common.services', 'brandServices', 'componentServices', 'goodsServices',  'rateServices','cartServices', 'orderServices', 'addressServices', 'invoiceServices', 'common.query.propertyAdvice', 'propertyServices', 'returnServices' , 'changeServices',  'logisticsServices', 'common.query.kindAdvice', 'ngTable', 'ngDynamicInput', 'common.directives', 'angularFileUpload', 'urlencryptionServices', 'purchaseServices', 'vendorServices', 'goodsServices', 'bankTransfer', 'common.query.enterprise', 'billServices', 'receiptServices', 'collection', 'expressServices', 'bankInfo','Charge', 'statisticsServices', 'currencyService', 'responseLogisticsService', 'PriceServices', 'addressServices', 'searchService', 'urlencryptionServices', 'ReleaseProductByBatchService', 'makerDemand', 'afterSaleService', 'messageBoardServices', 'logisticsServices', 'table.directives', 'storeInfoServices', 'recommendation', 'common.query.user', 'logisticsPortService', 'cmsService', 'materialServices', 'StoreCmsServices', 'productImportModule', 'stockInOutModule', 'StoreCmsModule', 'WebChatModule', 'StandardPutOnAdminModule', 'StoreViolationsServices', 'internalMessageServices', 'installmentServices','common.query.product', 'ui.tour', 'seekPurchaseServices', 'UASBatchPutOnPropertyModule', 'authorityServices', 'AttendtionServices'])
-
+    app.directive('onFinishRenderFilters', function ($timeout) {
+        return {
+            restrict: 'A',
+            link: function(scope, element, attr) {
+                if (scope.$last === true) {
+                    $timeout(function() {
+                        scope.$emit('ngRepeatFinished');
+                    });
+                }
+            }
+        };
+    });
 	//初始化,启动时载入app
 	app.init = function() {
 		angularAMD.bootstrap(app);

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

@@ -1,6 +1,6 @@
 define([ 'app/app' ], function(app) {
     'use strict';
-    app.register.controller('vendorInvoiceCtrl', ['$scope','$rootScope','$modal','BillSubmit','BaseService', 'toaster','ngTableParams','$state','$filter','$window', '$document',  function ($scope, $rootScope, $modal, BillSubmit, BaseService, toaster, ngTableParams, $state, $filter, $window, $document) {
+    app.register.controller('vendorInvoiceCtrl', ['$scope','$rootScope','$modal','BillSubmit','BaseService', 'toaster','ngTableParams','$state','$filter','$window', '$document', function ($scope, $rootScope, $modal, BillSubmit, BaseService, toaster, ngTableParams, $state, $filter, $window, $document) {
         $rootScope.active = 'vendor_invoice';
         // 切换tab
         document.title = '卖家发票管理-优软商城';
@@ -76,6 +76,11 @@ define([ 'app/app' ], function(app) {
                         })
                         //划分数据
                         $scope.billData = page.content;
+                        setTimeout(function() {
+                            if (docu.scrollTop() + window.height() > docu.height() - 330) {
+                                angular.element('#applyBtn').slideUp(0)
+                            }
+                        },0)
                     }, function (response) {
                         toaster.pop('error', '获取开票记录失败 ', response.data);
                     });
@@ -222,4 +227,5 @@ define([ 'app/app' ], function(app) {
         });
 
     }]);
+
 });

+ 2 - 4
src/main/webapp/resources/js/vendor/main.js

@@ -28,8 +28,7 @@ require.config({
 		'file-upload-shim': 'lib/angular/angular-file-upload-shim.min',
 		'showdown' : 'lib/showdown/showdown.min',
 		'calendar': 'lib/calendar/calendar',
-		'big': 'lib/decimal/big.min',
-    'onFinishRender' : 'js/common/directives/onFinishRender'
+		'big': 'lib/decimal/big.min' 
 	},
 	shim : {
 		'angular' : {
@@ -66,8 +65,7 @@ require.config({
 		},
 		'file-upload': ['angular', 'file-upload-shim'],
 		'calendar': ['jquery'],
-		'big' : ['jquery'],
-		'onFinishRender': ['angular']
+		'big' : ['jquery']
 	}
 });
 require([ 'app/app', 'common/controllers/commonCtrls' ], function(app) {

+ 1 - 1
src/main/webapp/resources/view/sso/ssoInvoice.html

@@ -715,7 +715,7 @@
               <a href="/help/helpList/19" target="_blank" style="color: #5078cb; font-size: 14px; position: relative;top: 2px;">《发票须知》</a>
             </div>
             <div class="form-btn">
-              <input type="button" value="取消" class="btn" ng-click="setChangeBillStatusFlag(false)">
+              <input type="button" value="取消" class="btn" ng-if="invoices.length > 0" ng-click="setChangeBillStatusFlag(false)">
               <input type="submit" value="保存" class="btn"
                      ng-click="saveBill(form.$invalid)">
             </div>

+ 3 - 2
src/main/webapp/resources/view/usercenter/forstore/bomDetail.html

@@ -857,8 +857,9 @@
                                                     <span>{{of.currency + of.replies[0].price | currencyStr}}</span>-->
                                                 </div>
                                                 <ul class="red-text">
-                                                    <li ng-repeat="re in of.replies">
-                                                        <span ng-bind="re.lapQty" title="{{re.lapQty}}">1+</span>
+                                                    <li ng-repeat="re in of.replies track by $Rekey">
+                                                        <span title="{{re.lapQty}}" ng-if="$Rekey === 0">{{re.lapQty}}+</span>
+                                                        <span title="{{re.lapQty}}" ng-if="$Rekey > 0">{{re.lapQty}}</span>
                                                         <span title="{{of.currency + re.price | currencyStr}}">{{of.currency + re.price | currencyStr}}</span>
                                                     </li>
                                                 </ul>

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

@@ -425,7 +425,7 @@
                 </tr>
                 </thead>
                 <tbody>
-                    <tr ng-repeat="item in billData track by $index" on-finish-render >
+                    <tr ng-repeat="item in billData track by $index" on-finish-render>
                         <td  style="width: 60px;">
                             <lable class="check-act">
                                 <input type="checkbox" id={{$index+1}} ng-checked="item.checked" ng-click="checkInvoice(item)" />