Browse Source

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

Hu Jie 7 years ago
parent
commit
1b65447bec

+ 13 - 4
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ReleaseProductByBatchDao.java

@@ -32,6 +32,15 @@ public interface ReleaseProductByBatchDao
      */
     List<ReleaseProductByBatch> findByRelbatchidAndReleaseCode(String relbatchid, Integer releaseCode);
 
+	/**
+	 * 通过批号和匹配状态过滤数据
+     *
+	 * @param relbatchid 批号
+	 * @param releaseCode 匹配状态(不等于)
+	 * @return List<ReleaseProductByBatch>
+	 */
+	List<ReleaseProductByBatch> findByRelbatchidAndReleaseCodeNot(String relbatchid, Integer releaseCode);
+
 	@Query("select r from ReleaseProductByBatch r where r.publisherUu =:publisherUu and r.relbatchid =:relbatchid and r.releaseCode in :failCodes")
 	List<ReleaseProductByBatch> findByPublisherUuAndRelbatchidAndFailCode(@Param("publisherUu") Long publisherUu, @Param("relbatchid") String relbatchid, @Param("failCodes") List<Integer> failCodes);
 
@@ -43,7 +52,7 @@ public interface ReleaseProductByBatchDao
      * @author yujia
      * @Description: 查找指定人的所有的信息
      */
-    public List<ReleaseProductByBatch> findByPublisherUu(Long publisherUu);
+    List<ReleaseProductByBatch> findByPublisherUu(Long publisherUu);
 
 	/**
 	 *
@@ -51,7 +60,7 @@ public interface ReleaseProductByBatchDao
 	 * @return List<ReleaseProductByBatch> list
 	 * @author wangdy
 	 */
-	public List<ReleaseProductByBatch> findByRelbatchid(String batch);
+    List<ReleaseProductByBatch> findByRelbatchid(String batch);
 
     /**
      * 获取某一次上传多少的条数据
@@ -62,7 +71,7 @@ public interface ReleaseProductByBatchDao
      * @return the count publisher uu and batch and release code
      */
     @Query("select count(*) from ReleaseProductByBatch r where r.publisherUu =:publisherUu and r.relbatchid =:relbatchid and r.releaseCode =:releaseCode")
-	public Integer getCountPublisherUuAndBatchAndReleaseCode(@Param("publisherUu") Long publisherUu, @Param("relbatchid") String relbatchid, @Param("releaseCode") Integer releaseCode);
+    Integer getCountPublisherUuAndBatchAndReleaseCode(@Param("publisherUu") Long publisherUu, @Param("relbatchid") String relbatchid, @Param("releaseCode") Integer releaseCode);
 
 	/**
 	 * 获取某次上传失败的数,包括必填项错误和已存在
@@ -119,5 +128,5 @@ public interface ReleaseProductByBatchDao
      * @Description: 批量上架的存储过程
      */
     @Procedure(procedureName = "PRODUCT_RELEASE_BATCH_PUBLISH")
-	public String callPublishByBatch(Long enuu, String enterName, String batchid);
+    String callPublishByBatch(Long enuu, String enterName, String batchid);
 }

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

@@ -2169,12 +2169,12 @@ public class ProductServiceImpl implements ProductService {
             return new ArrayList<>();
         }
         if (sysConf.getProfile().equals("prod")) {
-            String sql = "/*#mycat:db_type=master*/ select p.pr_id, p.pr_code from products p where p.pr_code in (:prodNums);";
+            String sql = "/*#mycat:db_type=master*/ select p.pr_id, p.pr_code, p.pr_attachment from products p where p.pr_code in (:prodNums);";
             Map<String, Object> map = new HashedMap();
             map.put("prodNums", prodNums);
             List<Map<String, Object>> maps = namedParameterJdbcTemplate.queryForList(sql, map);
             List<Product> list = new ArrayList<>();
-            Product product = null;
+            Product product;
             for (Map<String, Object> stringObjectMap : maps) {
                 product = new Product();
                 Object pr_id = stringObjectMap.get("pr_id");
@@ -2185,6 +2185,10 @@ public class ProductServiceImpl implements ProductService {
                 if (pr_code != null) {
                     product.setProdNum((String) pr_code);
                 }
+                Object pr_attachment = stringObjectMap.get("pr_attachment");
+                if (pr_attachment != null) {
+                    product.setAttachment((String) pr_attachment);
+                }
                 if ((pr_code != null) && (pr_id != null)) {
                     list.add(product);
                 }

+ 68 - 65
src/main/java/com/uas/platform/b2c/trade/order/service/impl/PurchaseProductServiceImpl.java

@@ -1,15 +1,15 @@
 package com.uas.platform.b2c.trade.order.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.core.constant.ReleaseStatus;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.b2c.prod.commodity.constant.ErrorInfoConstant;
-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.ProductPrivateDao;
 import com.uas.platform.b2c.prod.commodity.dao.ReleaseProductByBatchDao;
+import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.model.ReleaseProductByBatch;
+import com.uas.platform.b2c.prod.commodity.service.ProductService;
 import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
 import com.uas.platform.b2c.prod.commodity.util.SheetUtil;
 import com.uas.platform.b2c.prod.product.common.service.CreateNumberService;
@@ -17,8 +17,6 @@ import com.uas.platform.b2c.trade.order.service.PurchaseProductService;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.exception.IllegalOperatorException;
 import com.uas.platform.core.util.HttpUtil;
-import com.uas.platform.core.util.serializer.FlexJsonUtils;
-import com.uas.ps.entity.Product;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
@@ -31,8 +29,10 @@ import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
-import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 买家中心物料相关
@@ -52,22 +52,18 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
     @Autowired
     private ReleaseProductByBatchDao releaseProductByBatchDao;
 
+    @Autowired
+    private ProductService productService;
+
+    @Autowired
+    private ProductPrivateDao productPrivateDao;
+
     /**
      * 物料服务访问路径
      */
     @Value("#{sys.productServiceIp}")
     private String productServiceIp;
 
-    /**
-     * HTTP请求成功标志
-     */
-    static final String TRUE_SIGN = "true";
-
-    /**
-     * HTTP请求成功返回值
-     */
-    static final String SUCCESS_CODE = "success";
-
     /**
      * 程序执行日志
      */
@@ -144,7 +140,7 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
             // 验证成功后进行绑定处理
             Integer assignNumber = 0;
             // 去重后的数据
-            List<ReleaseProductByBatch> uniqueBatchList = releaseProductByBatchDao.findByRelbatchidAndReleaseCode(batch, ReleaseStatus.unreleased.value());
+            List<ReleaseProductByBatch> uniqueBatchList = releaseProductByBatchDao.findByRelbatchidAndReleaseCodeNot(batch, ReleaseStatus.lack_info.value());
             if (!CollectionUtils.isEmpty(uniqueBatchList)) {
                 assignNumber = assignBatch(uniqueBatchList);
             }
@@ -266,19 +262,66 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
      * @return 保存成功的数量
      */
     private Integer assignBatch(List<ReleaseProductByBatch> uniqueBatchList) {
-        List<Product> productList = covert(uniqueBatchList);
-        try {
-            String res = HttpUtil.doPost(productServiceIp + "/product/update/addToProductUser", FlexJsonUtils.toJsonDeep(productList));
-            JSONObject response = JSON.parseObject(res);
-            if (TRUE_SIGN.equals(response.get(SUCCESS_CODE))) {
-                return Integer.valueOf(response.get("result").toString());
+        Set<Long> idSet = getProductIdSet(uniqueBatchList);
+        if (CollectionUtils.isNotEmpty(idSet)) {
+            HashMap<String, Object> params = new HashMap<>(5);
+            ModelMap data = new ModelMap();
+            data.put("ids",  idSet.toString());
+            data.put("enUU", SystemSession.getUser().getEnterprise().getUu());
+            data.put("userUU", SystemSession.getUser().getUserUU());
+            params.put("data", data);
+            HttpUtil.Response res = null;
+            try {
+                res = HttpUtil.sendPostRequest(productServiceIp + "/productuser/coverToUserByIds", params);
+                return Integer.valueOf(res.getResponseText());
+            } catch (Exception e) {
+                String resultCode = null != res ? String.valueOf(res.getStatusCode()) : "access error";
+                LOGGER.error("coverToUserProd http response status error: " + resultCode);
             }
-        } catch (Exception e) {
-            LOGGER.info("访问接口失败", e);
         }
         return 0;
     }
 
+    /**
+     * 获取物料id字段
+     *
+     * @param uniqueBatchList 去重后的物料信息
+     * @return 物料id集合
+     */
+    private Set<Long> getProductIdSet(List<ReleaseProductByBatch> uniqueBatchList) {
+        List<String> productCodeList = new ArrayList<>();
+        Set<Long> idSet = new HashSet<>();
+        List<ReleaseProductByBatch> batchList = new ArrayList<>();
+        uniqueBatchList.forEach(batch -> {
+            if (null != batch.getProductid()) {
+                idSet.add(batch.getProductid());
+            } else {
+                if (StringUtilB2C.isEmpty(batch.getProductNum())) {
+                    String code = "PNUM" + StringUtilB2C.getRandomNumber(6);
+                    batch.setProductNum(code);
+                }
+                productCodeList.add(batch.getProductNum());
+                batchList.add(batch);
+            }
+        });
+        // 新增到物料库
+        productService.saveByJdbcTemplate(batchList);
+        List<com.uas.platform.b2c.prod.commodity.model.Product> productList = productService.findProductIdAndProdnumsByProdNums(productCodeList);
+        List<ProductPrivate> privateList = new ArrayList<>();
+        productList.forEach(product -> {
+            ProductPrivate productPrivate = new ProductPrivate(product.getId());
+            privateList.add(productPrivate);
+            idSet.add(product.getId());
+        });
+
+        // 保存到私有库
+        if (CollectionUtils.isNotEmpty(privateList)) {
+            productPrivateDao.save(privateList);
+            LOGGER.info("批量上传个人物料库,同步新增到商城私有库: " + privateList.size());
+        }
+        return idSet;
+    }
+
     /**
      * 处理验证后的数据
      *
@@ -312,49 +355,9 @@ public class PurchaseProductServiceImpl implements PurchaseProductService {
                     if (aBatch.getErrmsg().substring(0, 1).equals(",")) {
                         aBatch.setErrmsg(aBatch.getErrmsg().substring(1));
                     }
-                } else {
-                    aBatch.setReleaseStatus(ReleaseStatus.unreleased.getPhrase());
-                    aBatch.setReleaseCode(ReleaseStatus.unreleased.value());
                 }
             }
         }
     }
 
-    /**
-     * 将去重的数据转换成Product数据并进行保存处理
-     *
-     * @param uniqueBatchList 上传后去重的数据
-     * @return List<Product>
-     */
-    private List<Product> covert(List<ReleaseProductByBatch> uniqueBatchList) {
-        List<Product> productList = new ArrayList<>();
-        uniqueBatchList.forEach(batch -> {
-            Product product = new Product();
-            product.setSpec(batch.getSpec());
-            String brand = batch.getBrandNameEn() != null ? batch.getBrandNameEn() : batch.getBrandNameCn();
-            product.setBrand(brand);
-            product.setpBrand(brand);
-            product.setUserUU(SystemSession.getUser().getUserUU());
-            product.setCmpCode(batch.getCode());
-            product.setpCmpCode(batch.getCode());
-            // 没有编号设置编号
-            if (null == product.getCode()) {
-                String code = "PNUM" + StringUtilB2C.getRandomNumber(6);
-                product.setCode(code);
-            }
-            // 交期默认赋值为0
-            Double leadTime = 0D;
-            product.setLeadTime(leadTime);
-            product.setCmpUuid(batch.getComponentUuId());
-            product.setCreateTime(new Date(System.currentTimeMillis()));
-            product.setEnUU(SystemSession.getUser().getEnterprise().getUu());
-            product.setKind(batch.getKindName());
-            product.setUnit(batch.getUnit());
-            product.setTitle(batch.getKindName());
-            product.setId(batch.getProductid());
-            product.setSourceApp(StringConstant.SOURCE);
-            productList.add(product);
-        });
-        return productList;
-    }
 }

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

@@ -29,14 +29,14 @@ define(['app/app'], function(app) {
 	          }
             var _data = data.data.invoiceDetails
             var _details = $scope.order.orderDetails
-	          $scope.order.logistics = data.data.logistics
+			  $scope.order.logistics = data.data.logistics
             $scope.logistics = data.data.logistics
 
-            for (var j = 0; j < _data.length; j++) {
+            for (var j = 0; j < _details.length; j++) {
               _details[j].receiveCount = ''
-              for (var k = 0; k < _details.length; k++) {
-                if (_data[j].orderDetailId === _details[k].id) {
-                  _details[k].receiveCount = _data[j].qty
+              for (var k = 0; k < _data.length; k++) {
+                if (_data[k].orderDetailId === _details[j].id) {
+                  _details[j].receiveCount = _data[k].qty
                 }
               }
             }

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

@@ -41,10 +41,11 @@ define(['app/app'], function(app) {
                     var _details = $scope.purchase.purchaseDetails;
                     $scope.purchase.logistics = data.logistics;
                     $scope.logistics = data.logistics;
-                    for (var j = 0; j < _data.length; j++) {
-                        for (var k = 0; k < _details.length; k++) {
-                            if (_data[j].purchaseDetailId === _details[k].id) {
-                                _details[k].receiveCount = _data[j].qty
+                    for (var j = 0; j < _details.length; j++) {
+                        _details[j].receiveCount = ''
+                        for (var k = 0; k < _data.length; k++) {
+                            if (_data[k].purchaseDetailId === _details[j].id) {
+                                _details[j].receiveCount = _data[k].qty
                             }
                         }
                     }

+ 28 - 14
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js

@@ -3797,13 +3797,16 @@ define(['app/app', 'jquery-uploadify'], function(app) {
 
         // $scope.productAddFragment($scope.productUpOff.goods.prices)
       }
+      if (!$scope.productUpOff.goods.prices) {
+        $scope.productUpOff.goods.prices = [{'start': $scope.productUpOff.minPackQty || 1, rMBPrice: ''}]
+      }
       if ($scope.productUpOff.goods.prices.length === 0) {
         $scope.productUpOff.goods.prices = [{'start': $scope.productUpOff.minPackQty || 1, rMBPrice: ''}]
       }
       _item = $scope.productUpOff.goods.prices[0].start
       // $scope.productUpOff.goods.prices[0].start = $scope.productUpOff.minPackQty || 1
 
-      $scope.productUpOff.goods.selfSale = ($scope.storeInfo.uuid != 'undefind' && $scope.productUpOff.goods.storeid == $scope.storeInfo.uuid && $scope.storeInfo.storeName.indexOf('优软测试二') < 0 && $scope.storeInfo.storeName.indexOf('优软商城') < 0) ? 1: 0
+      $scope.productUpOff.goods.selfSale = ($scope.storeInfo.uuid != 'undefind' && $scope.productUpOff.goods.storeid == $scope.storeInfo.uuid && ($scope.storeInfo.storeName && $scope.storeInfo.storeName.indexOf('优软测试二') < 0 && $scope.storeInfo.storeName.indexOf('优软商城') < 0)) ? 1: 0
       // $scope.productUpOff.dateArea = $scope.productUpOff.goods.selfSale === 1 ? 'formMe' : 'autoMonth' // 自营还是销售
       commodity.dateArea = $scope.productUpOff.goods.selfSale === 1 ? 'formMe' : 'autoMonth' // 自营还是销售
       if (!$scope.productUpOff.goods.storeid) {
@@ -3877,6 +3880,10 @@ define(['app/app', 'jquery-uploadify'], function(app) {
         }
         return;
       }
+      if ($scope.productUpOff.goods.minDelivery > $scope.productUpOff.goods.maxDelivery) {
+        toaster.pop('warning','提示','最小交期不能大于最大交期')
+        return;
+      }
       var flag = true
       for (var i = 0; i < $scope.productUpOff.goods.prices.length; i++) {
         if (!$scope.productUpOff.goods.prices[i].start
@@ -4022,6 +4029,11 @@ define(['app/app', 'jquery-uploadify'], function(app) {
       }
       window.open('vendor#/vendor_storage?storage_tab=outBound&ids=' + ids, '_top')
     }
+    // 物料修改确认按钮
+    $scope.updateMaterialSave = function () {
+      $scope.modifyResult = false
+      loadDataReload()
+    }
   }
   ]);
 
@@ -4030,25 +4042,25 @@ define(['app/app', 'jquery-uploadify'], function(app) {
     $scope.actives = actives;
     $scope.kinds = [[], [], [], []];
     // 获取子类目
-    var getChildren = function(pid, deep) {
+    var getChildren = function (pid, deep) {
       KindAPI.getChildren({
         parentId: pid
-      }, function(data) {
+      }, function (data) {
         $scope.kinds[deep] = data;
-      }, function(response) {
+      }, function (response) {
         toaster.pop('error', '获取子类目失败', response.data);
       });
     };
 
     // 改变节点选中状态
-    var changeStatus = function(item, deep) {
+    var changeStatus = function (item, deep) {
       var actives = []
           , level = 0;
-      angular.forEach($scope.kinds, function(ks, i) {
+      angular.forEach($scope.kinds, function (ks, i) {
         if (i > deep) {
           $scope.kinds[i] = [];
         } else {
-          angular.forEach(ks, function(k, j) {
+          angular.forEach(ks, function (k, j) {
             if (i == deep) {
               if (k.id == item.id) {
                 $scope.kinds[i][j].$active = true;
@@ -4074,7 +4086,7 @@ define(['app/app', 'jquery-uploadify'], function(app) {
     };
 
     // 节点点击后获取子类目,节点被选中
-    $scope.onItemClick = function(item, deep) {
+    $scope.onItemClick = function (item, deep) {
       changeStatus(item, deep);
       if (!item.isLeaf) {
         getChildren(item.id, deep + 1);
@@ -4096,18 +4108,18 @@ define(['app/app', 'jquery-uploadify'], function(app) {
 
     // 初始加载数据,获取第一层的类目
     if ($scope.actives) {
-      angular.forEach($scope.actives, function(v, k) {
+      angular.forEach($scope.actives, function (v, k) {
         KindAPI.getChildren({
           parentId: v.parentid
-        }, function(data) {
+        }, function (data) {
           $scope.kinds[k] = data;
-          angular.forEach($scope.kinds[k], function(kind, i) {
+          angular.forEach($scope.kinds[k], function (kind, i) {
             if (kind.id == v.id) {
               $scope.kinds[k][i].$active = true;
               $scope.actives[k] = $scope.kinds[k][i];
             }
           })
-        }, function(response) {
+        }, function (response) {
           toaster.pop('error', '获取子类目失败', response.data);
         });
       });
@@ -4116,13 +4128,13 @@ define(['app/app', 'jquery-uploadify'], function(app) {
     }
 
     // 取消
-    $scope.cancel = function() {
+    $scope.cancel = function () {
       $modalInstance.dismiss();
     }
     ;
 
     // 确认选择
-    $scope.check = function() {
+    $scope.check = function () {
       var a = {
         active: $scope.active,
         actives: $scope.actives
@@ -4130,7 +4142,9 @@ define(['app/app', 'jquery-uploadify'], function(app) {
       $modalInstance.close(a);
     }
     ;
+
   }
+
   ]);
 
   //批量删除信息

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

@@ -1760,7 +1760,7 @@
 			<p><i class="fa fa-exclamation-circle"></i><span ng-bind="modifyData.success">583</span>个产品修改成功,</p>
 			<h5><span class="red" ng-bind="modifyData.filter">5</span>个产品修改失败!</h5>
 			<div>
-				<a ng-click="modifyResult=false">确定</a>
+				<a ng-click="updateMaterialSave">确定</a>
 				<span ng-if="modifyData.filter" ng-click="downloadExcel()">下载失败列表</span>
 				<form id="load-error" style="display: none;" method="get">
 					<input type="hidden" name="batch" ng-value="modifyData.batch">