Browse Source

Merge branch 'dev-mysql' into erp_batchToGoods_20180117

yujia 8 years ago
parent
commit
e12239c58b

+ 15 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/dao/V_ProductPrivateDao.java

@@ -1,7 +1,5 @@
 package com.uas.platform.b2c.prod.commodity.dao;
 
-import com.uas.platform.b2c.prod.commodity.model.V_ProductPerson;
-import com.uas.platform.b2c.prod.commodity.model.V_ProductPersonId;
 import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -9,6 +7,21 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
 public interface V_ProductPrivateDao extends JpaRepository<V_ProductPrivate, Long>, JpaSpecificationExecutor<V_ProductPrivate> {
+
+    /**
+     * 根据器件型号,品牌 、enuu
+     *
+     * @param pcmpcode the pcmpcode 器件型号
+     * @param pbranden the pbranden 器件品牌
+     * @param enUU     the en uu enuu
+     * @param standard the standard 标准状态
+     * @return list
+     */
+    @Query(value = "select p from V_ProductPrivate p where p.pcmpcode=:pcmpcode and p.pbranden=:pbranden and p.enUU=:enUU and p.standard=:standard and p.b2cEnabled=:enabled")
+    List<V_ProductPrivate> findProductByPcmpcodeAndPbrandenAndEnUUAndStandard(@Param("pcmpcode") String pcmpcode, @Param("pbranden") String pbranden,
+                                                                              @Param("enUU") Long enUU, @Param("standard") Integer standard, @Param("enabled") Integer enabled);
 }

+ 67 - 28
src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductPerson.java

@@ -1,47 +1,78 @@
 package com.uas.platform.b2c.prod.commodity.model;
 
-import com.uas.platform.b2c.common.account.model.UserBaseInfo;
-
 import javax.persistence.*;
+import java.io.Serializable;
 import java.util.Date;
 
 /**
- * 个人物料库
- * @author wangdy
+ * 用户个人产品库
  *
+ * Created by hejq on 2017-11-08.
  */
+@Table(name = "product$users")
 @Entity
-@Table(name = "products_person")
-public class ProductPerson {
+public class ProductPerson implements Serializable {
 
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
     @Id
-    @GeneratedValue
-    @Column(name = "pp_id")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "pu_id")
     private Long id;
 
-    @Column(name = "user_uu")
+    /**
+     * 用户uu
+     */
+    @Column(name = "pu_useruu")
     private Long userUU;
 
-    @Column(name = "pr_id")
-    private Long productId;
-
-    @Column(name = "up_time")
-    private Date time;
+    /**
+     * 企业uu,方便统计处理
+     */
+    @Column(name = "pu_enuu")
+    private Long enuu;
 
     /**
-     * 物料拥有者
+     * 物料id
      */
-    @OneToOne(cascade = { CascadeType.REFRESH })
-    @JoinColumn(name = "user_uu", insertable = false, updatable = false)
-    private UserBaseInfo user;
+    @Column(name = "pu_prid")
+    private Long productId;
 
     /**
-     * 物料明细
+     * 产品
      */
     @OneToOne(cascade = { CascadeType.REFRESH })
-    @JoinColumn(name = "pr_id", insertable = false, updatable = false)
+    @JoinColumn(name = "pu_prid", insertable = false, updatable = false)
     private Product product;
 
+    /**
+     * 日期
+     */
+    @Column(name = "pu_date")
+    private Date time;
+
+    /**
+     * 存在ERP同步过来数据的情况,记录id
+     */
+    @Column(name = "pu_erpid")
+    private Long erpid;
+
+    public ProductPerson() {
+
+    }
+
+    public ProductPerson(Long enUU, Long userUU, Long productId) {
+        this.setEnuu(enUU);
+        this.setUserUU(userUU);
+        this.setProductId(productId);
+    }
+
     public Long getId() {
         return id;
     }
@@ -58,20 +89,20 @@ public class ProductPerson {
         this.userUU = userUU;
     }
 
-    public Long getProductId() {
-        return productId;
+    public Long getEnuu() {
+        return enuu;
     }
 
-    public void setProductId(Long productId) {
-        this.productId = productId;
+    public void setEnuu(Long enuu) {
+        this.enuu = enuu;
     }
 
-    public UserBaseInfo getUser() {
-        return user;
+    public Long getProductId() {
+        return productId;
     }
 
-    public void setUser(UserBaseInfo user) {
-        this.user = user;
+    public void setProductId(Long productId) {
+        this.productId = productId;
     }
 
     public Product getProduct() {
@@ -89,4 +120,12 @@ public class ProductPerson {
     public void setTime(Date time) {
         this.time = time;
     }
+
+    public Long getErpid() {
+        return erpid;
+    }
+
+    public void setErpid(Long erpid) {
+        this.erpid = erpid;
+    }
 }

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

@@ -68,7 +68,6 @@ import org.springframework.jdbc.core.StatementCallback;
 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 
@@ -725,6 +724,7 @@ public class ProductServiceImpl implements ProductService {
      */
     @Override
     public ResultMap matchNonStandardProduct() {
+        Map<String, Object> map = new HashMap<>();
         final Long uu = SystemSession.getUser().getUserUU();
         final Long enUU = SystemSession.getUser().getEnterprise().getUu();
         ProductStoreStatus status = productStoreStatusDao.findByEnuu(enUU);
@@ -751,16 +751,25 @@ public class ProductServiceImpl implements ProductService {
             status = productStoreStatusDao.save(storeStatus);
         }
 
-//        int total = productDao.getCountByEnuuAndStatusAndEnabled(enUU, ShortConstant.NO_SHORT, IntegerConstant.YES_SHORT);
-        int total = productDao.getCountByEnuuAndStatus(enUU, ShortConstant.NO_SHORT);
+        int total = productDao.getCountByEnuuAndStatusAndEnabled(enUU, ShortConstant.NO_SHORT, IntegerConstant.YES_SHORT);
         int success = 0;
         int fail = 0;
-        Map<String, Long> queryMap = new HashMap<>();
-        queryMap.put("enUU", enUU);
-        String successUrl = productServiceIp + "/product/match/nonProduct";
-        String result = restTemplate.postForEntity(successUrl, queryMap, String.class).getBody();
-        ModelMap map = FastjsonUtils.fromJson(result, ModelMap.class);
-        fail = total - (int) map.get("success");
+
+        String sql = "/*#mycat:db_type=master*/ call PRODUCT_MATCHES_V1(%s, %s, @out); select @out";
+        final String formatSql = String.format(sql, enUU, uu);
+        success = jdbcTemplate.execute(new StatementCallback<Integer>() {
+            @Override
+            public Integer doInStatement(Statement statement) throws SQLException, DataAccessException {
+                statement.execute(formatSql);
+                ResultSet rs = statement.getResultSet();
+                if (null != rs) {
+                    rs.next();
+                    return rs.getInt(1);
+                }
+                return 0;
+            }
+        });
+        fail = total - success;
 
         status.setStatus(Status.FINISH.value());
         productStoreStatusDao.save(status);
@@ -819,10 +828,10 @@ public class ProductServiceImpl implements ProductService {
         if (result == null) {
             return new ResultMap(CodeType.NO_INFO, "匹配结果信息丢失");
         }
-        List<Product> standardList = productDao.findProductByPcmpcodeAndPbrandenAndEnUUAndStandard(result.getCmpcode(), result.getBranden(), enUU, IntegerConstant.YES_SHORT);
+        List<V_ProductPrivate> standardList = v_productPrivateDao.findProductByPcmpcodeAndPbrandenAndEnUUAndStandard(result.getCmpcode(), result.getBranden(), enUU, IntegerConstant.YES_SHORT, IntegerConstant.YES_SHORT);
         Product standardProduct = null;
         if (!CollectionUtils.isEmpty(standardList)) {
-            standardProduct = standardList.get(0);
+            standardProduct = productDao.findOne(standardList.get(0).getId());
         }
         List<List<Goods>> repeatList = new ArrayList<>();
         // 已有对应标准信息,需要判断在售商品是否重复
@@ -864,7 +873,8 @@ public class ProductServiceImpl implements ProductService {
             productPrivate.setBatchCount(0);
             productPrivateDao.save(productPrivate);
         }
-        restTemplate.postForEntity(productServiceIp + "/product/update", afterProduct, String.class);
+//        restTemplate.postForEntity(productServiceIp + "/product/update", afterProduct, String.class);
+        productDao.save(afterProduct);
         updateInfoAfterTurnStandard(matchId, standardProduct);
         return ResultMap.success(null);
     }

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

@@ -1160,10 +1160,8 @@ public class ReleaseProductByBatchServiceImpl implements ReleaseProductByBatchSe
             // TODO 什么接口
 			String result = restTemplate.postForEntity(productServiceIp + "/product/update", products, String.class).getBody();
             List<Long> productIds = JSON.parseArray(result, Long.class);
-            Map<String,Object> requestMap = new HashMap<>();
-            requestMap.put("userUU",SystemSession.getUser().getUserUU());
             //添加个人关系
-            String res  = restTemplate.postForEntity(productServiceIp + "/product/assign/batch", productIds, String.class, requestMap).getBody();
+            String res  = restTemplate.postForEntity(productServiceIp + "/product/assign/batch?userUU=" + SystemSession.getUser().getUserUU(), productIds, String.class).getBody();
             // 默认为b2c Enable开启
             List<ProductPrivate> productPrivates = new ArrayList<>();
             for (Long prId : productIds) {

+ 3 - 1
src/main/webapp/resources/css/common.css

@@ -953,7 +953,9 @@ textarea{resize:none}
 
 .modal-content {
 	overflow-y: auto;
-	max-height: 500px;
+	max-height: 520px;
+	overflow-x: hidden;
+	height: auto !important;
 }
 .form-control:focus {
 	border: 1px solid #4272d3;

+ 11 - 11
src/main/webapp/resources/css/commonComponent.css

@@ -13,7 +13,7 @@
     </div>
 </div>
 */
-.com-del-box{
+.com-mall-del-box{
     position: fixed;
     z-index: 10;
     height: 152px;
@@ -26,14 +26,14 @@
     top: 55%;
     left: 50%;
 }
-.com-del-box .title{
+.com-mall-del-box .title{
     height: 30px;
     background-color: #5078cb;
     text-align: right;
     padding-right: 15px;
     line-height: 30px;
 }
-.com-del-box .title i{
+.com-mall-del-box .title i{
     background: url(../img/icon/close.png) no-repeat;
     display: inline-block;
     width: 9px;
@@ -41,27 +41,27 @@
     cursor: pointer;
     margin: 0;
 }
-.com-del-box .content{
+.com-mall-del-box .content{
     width: 100%;
     text-align: center;
     margin: 0 auto;
 }
-.com-del-box .content p{
+.com-mall-del-box .content p{
     line-height: 50px;
     font-size: 14px;
     padding-top: 10px;
 }
-.com-del-box .content p i{
+.com-mall-del-box .content p i{
     color: #5078cb;
     font-size: 16px;
     margin-right: 10px;
 }
-.com-del-box .content div{
+.com-mall-del-box .content div{
     width: 100%;
     text-align: center;
     margin: 0 auto;
 }
-.com-del-box .content div a{
+.com-mall-del-box .content div a{
     width: 55px;
     height: 26px;
     line-height: 26px;
@@ -70,16 +70,16 @@
     font-size: 14px;
     cursor: pointer;
 }
-.com-del-box .content div a:first-child{
+.com-mall-del-box .content div a:first-child{
     background: #b4b5b9;
     color: #333;
     margin-right: 10px;
 }
-.com-del-box .content div a:last-child{
+.com-mall-del-box .content div a:last-child{
     background: #5078cb;
     color: #fff;
 }
-.com-del-box .content div a:hover{
+.com-mall-del-box .content div a:hover{
     background: #3f7ae3;
     color: #fff;
 }

+ 2 - 3
src/main/webapp/resources/css/erp/align.css

@@ -13,10 +13,9 @@
 /*btnSize*/
 .com-btn-level1 {
     display: inline-block;
-    height: 25px;
-    width:64px;
+    padding: 0 17px;
     text-align: center;
-    line-height: 23px;
+    line-height: 25px;
     font-size: 14px;
     cursor: pointer;
     vertical-align: middle;

+ 1 - 2
src/main/webapp/resources/css/pay.css

@@ -315,8 +315,7 @@
     margin-top: 0;
 }
 .down-payment .pay-price div.stage .content{
-    width: 250px;
-    float: right;
+    text-align: right;
     border: none;
     margin-top: 0;
     padding-bottom: 0;

+ 3 - 2
src/main/webapp/resources/js/usercenter/controllers/forstore/buyer_invoice_ctrl.js

@@ -91,8 +91,9 @@ define(['app/app'], function(app) {
         //上传发票许可证
         $scope.onUploadPermission = function () {
             $scope.isDoUpload = true;
-            if (event.target.files[0].size < 3*1024*1024) {
-                $scope.bill.attachUrl = event.target.files[0].name;
+            // console.log($scope.bill.billInfo);
+            if ($scope.bill.billInfo[0].size < 3*1024*1024) {
+                $scope.bill.attachUrl = $scope.bill.billInfo[0].name;
             } else {
                 $scope.bill.attachUrl = '';
             }

+ 5 - 4
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js

@@ -212,9 +212,9 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
         UASBatchPutOnPropertyServices.get(null, function (data) {
             if (data) {
                 $scope.uasBatchPutOnProperty = data;
-                $scope.uasBatchPutOnProperty.editFluctuateRate = $scope.uasBatchPutOnProperty.fluctuateRate * 100;
-                $scope.uasBatchPutOnProperty.editMaxDelivery = $scope.uasBatchPutOnProperty.maxDelivery;
-                $scope.uasBatchPutOnProperty.editMinDelivery = $scope.uasBatchPutOnProperty.minDelivery;
+                $scope.uasBatchPutOnProperty.editFluctuateRate = NumberService.mul($scope.uasBatchPutOnProperty.fluctuateRate, 100) || 100;
+                $scope.uasBatchPutOnProperty.editMaxDelivery = $scope.uasBatchPutOnProperty.maxDelivery || 1;
+                $scope.uasBatchPutOnProperty.editMinDelivery = $scope.uasBatchPutOnProperty.minDelivery || 1;
             } else {
 				$scope.uasBatchPutOnProperty = {};
                 $scope.uasBatchPutOnProperty.editFluctuateRate = 100;
@@ -2053,10 +2053,11 @@ define([ 'app/app', 'jquery-uploadify' ], function(app) {
 			UASBatchPutOnPropertyServices.save(null, $scope.uasBatchPutOnProperty, function (data) {
 				if (data.code == 1) {
 					$scope.uasBatchPutOnProperty = data.data;
-					$scope.uasBatchPutOnProperty.editFluctuateRate =  $scope.uasBatchPutOnProperty.fluctuateRate * 100;
+					$scope.uasBatchPutOnProperty.editFluctuateRate =  NumberService.mul($scope.uasBatchPutOnProperty.fluctuateRate, 100);
 					$scope.uasBatchPutOnProperty.editMinDelivery = $scope.uasBatchPutOnProperty.minDelivery;
 					$scope.uasBatchPutOnProperty.editMaxDelivery = $scope.uasBatchPutOnProperty.maxDelivery;
 					toaster.pop('success', '成功', "保存成功");
+					$scope.isBatch = false;
 				} else {
 					toaster.pop('error', '失败', data.message);
 				}

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

@@ -432,7 +432,7 @@
 				<div style="text-align: right;margin-right:25px;margin-top:-30px;">
 					<span class="count-tip">显示 {{$$bankInfo.start}}-{{$$bankInfo.end}} 条,共 <em ng-bind="$$bankInfo.totalElements" style="color: #5078cb">2506</em> 条</span>
 				</div>
-				<div class="com-del-box" ng-if="showDelete">
+				<div class="com-mall-del-box" ng-if="showDelete">
 					<div class="title">
 						<i ng-click="cancelDelete()"></i>
 					</div>

+ 9 - 4
src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_erp.html

@@ -253,6 +253,9 @@
 		font-weight: normal;
 		height: 40px;
 	}
+	.search-check .batch-operate .operate-head .red-text {
+		color: #ee4312;
+	}
 	.search-check .batch-operate .operate-content {
 		height: 70px;
 		line-height: 30px;
@@ -293,8 +296,9 @@
 		height: 25px;
 	}
 	.search-check .batch-operate .operate-content .batch-sale input {
-		width: 42px;
+		width: 60px;
 		margin-right: 10px;
+		padding-right: 12px;
 	}
 	.search-check .batch-operate .operate-content .batch-sale div .com-btn-submit {
 		margin-right: 10px;
@@ -304,7 +308,7 @@
 	}
 	.search-check .batch-operate .operate-content .batch-sale div i {
 		position: absolute;
-		left: 216px;
+		left: 234px;
 		top: 2px;
 	}
 	.search-check .batch-operate .operate-content .batch-date input {
@@ -1619,7 +1623,8 @@
 							<span>全选</span>
 						</label>
 						<div class="fr">
-							<span class="com-btn-level1 com-btn-submit" ng-click="batchPutOn()">上架</span>
+							<span class="red-text">批量上架仅作用于未上架的产品,已上架的不再重复上架!</span>
+							<span class="com-btn-level1 com-btn-submit" ng-click="batchPutOn()">批量上架</span>
 							<span class="com-btn-level1 com-btn-submit" ng-mouseenter="enterBatchPutOnPropertySaveButton()" ng-mouseleave="leaveBatchPutOnPropertySaveButton()" ng-click="saveBatchPutOnProperty()">保存</span>
 							<span class="com-btn-level1 com-btn-red" ng-click="deleteBatch()">删除</span>
 							<span class="com-btn-level1 com-btn-cancel" ng-click="exitBatch()">取消</span>
@@ -1821,7 +1826,7 @@
 														<div class="content margin10">
 															<!--<p class="title">自营 / 寄售</p>-->
 															<div class="input-list">
-																<select ng-disabled="$$nonProduct.canSelfSale" name="selfSale" class="wid56 select-adder form-control" ng-model="goods.editSelfSale" ng-disabled="$$nonProduct.canSelfSale">
+																<select ng-disabled="!$$nonProduct.canSelfSale" name="selfSale" class="wid56 select-adder form-control" ng-model="goods.editSelfSale">
 																	<option value="1">自营</option>
 																	<option value="2">寄售</option>
 																</select>

+ 10 - 5
src/main/webapp/resources/view/vendor/forstore/erp/vendor_material_unstandard_erp.html

@@ -253,6 +253,9 @@
 		font-weight: normal;
 		height: 40px;
 	}
+	.search-check .batch-operate .operate-head .red-text {
+		color: #ee4312;
+	}
 	.search-check .batch-operate .operate-content {
 		height: 70px;
 		line-height: 30px;
@@ -293,8 +296,9 @@
 		height: 25px;
 	}
 	.search-check .batch-operate .operate-content .batch-sale input {
-		width: 42px;
+		width: 60px;
 		margin-right: 10px;
+		padding-right: 12px;
 	}
 	.search-check .batch-operate .operate-content .batch-sale div .com-btn-submit {
 		margin-right: 10px;
@@ -304,7 +308,7 @@
 	}
 	.search-check .batch-operate .operate-content .batch-sale div i {
 		position: absolute;
-		left: 216px;
+		left: 234px;
 		top: 2px;
 	}
 	.search-check .batch-operate .operate-content .batch-date input {
@@ -1608,7 +1612,7 @@
 					<a ng-click="download()">批量导出</a>
 				</div>
 				<div class="check fr">
-					<a ng-click="matchAll()"><span>一键匹配</span></a>
+					<a ng-click="matchAll()" ng-show="!isBatch"><span>一键匹配</span></a>
 					<a ng-click="enterBatch()" ng-show="!isBatch"><span>批量操作</span></a>
 					<!--<span class="check-btn" ng-show="isBatch">-->
 						<!--<label class="check-active">-->
@@ -1629,7 +1633,8 @@
 							<span>全选</span>
 						</label>
 						<div class="fr">
-							<span class="com-btn-level1 com-btn-submit" ng-click="batchPutOn()">上架</span>
+							<span class="red-text">批量上架仅作用于未上架的产品,已上架的不再重复上架!</span>
+							<span class="com-btn-level1 com-btn-submit" ng-click="batchPutOn()">批量上架</span>
 							<span class="com-btn-level1 com-btn-submit" ng-mouseenter="enterBatchPutOnPropertySaveButton()" ng-mouseleave="leaveBatchPutOnPropertySaveButton()" ng-click="saveBatchPutOnProperty()">保存</span>
 							<span class="com-btn-level1 com-btn-red" ng-click="deleteBatch()">删除</span>
 							<span class="com-btn-level1 com-btn-cancel" ng-click="exitBatch()">取消</span>
@@ -1834,7 +1839,7 @@
 														<div class="content margin10">
 															<!--<p class="title">自营 / 寄售</p>-->
 															<div class="input-list">
-																<select ng-disabled="$$nonProduct.canSelfSale" name="selfSale" class="wid56 select-adder form-control" ng-model="goods.editSelfSale" ng-disabled="$$nonProduct.canSelfSale">
+																<select ng-disabled="!$$nonProduct.canSelfSale" name="selfSale" class="wid56 select-adder form-control" ng-model="goods.editSelfSale">
 																	<option value="1">自营</option>
 																	<option value="2">寄售</option>
 																</select>

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

@@ -1585,7 +1585,7 @@
 						</td>
 						<!--<td ng-bind="material.unit || 'PCS'" title="{{material.unit  || 'PCS'}}"></td>-->
 						<td>
-							<span ng-bind="material.packaging || '-'" title="{{material.packaging || '-'}}"></span>
+							<span ng-bind="material.spec || '-'" title="{{material.spec || '-'}}"></span>
 						</td>
 						<td class="edit">
 							<span name="delete-material" ng-show="!isBatch && !material.exPandOper && !material.addGoodsOper" ng-click="deleteMaterial(material)"><span>删除</span></span>

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

@@ -570,7 +570,7 @@
                     <!--</div>-->
                 <!--</div>-->
                 <div class="com-modal-wrap" ng-if="result && result.total != 0 && !hadImport && $$productOn.tab == 'bathOnPerson' && personMedol">
-                    <div class="com-del-box">
+                    <div class="com-del-box com-mall-del-box">
                         <div class="title">
                             <i ng-click="setPersonMedol()"></i>
                         </div>