Browse Source

增加ERP物料交易信息获取匹配接口

wangyc 8 years ago
parent
commit
8e2307f77d

+ 2 - 1
src/main/java/com/uas/platform/b2c/external/erp/commodity/service/impl/ProductDetailERPServiceImpl.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2c.external.erp.commodity.service.impl;
 
 import com.uas.api.b2c_erp.seller.model.ProductDetailERP;
 import com.uas.api.b2c_erp.seller.service.ProductDetailERPService;
+import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.external.erp.commodity.util.ModelConverter;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
@@ -62,7 +63,7 @@ public class ProductDetailERPServiceImpl implements ProductDetailERPService {
             if (!CollectionUtils.isEmpty(products)) {
                 ProductDetail productDetail = productDetailDao.findByProductId(products.get(0).getId());// 获取商城物料信息
                 if (products.get(0).getCmpUuId() != null) {// 如果为标准器件,更新在售商品信息
-                    Double b2cReserve = goodsDao.getSumReserveByEnUUAndUuid(enuu, products.get(0).getCmpUuId());
+                    Double b2cReserve = goodsDao.getSumReserveByEnUUAndUuidAndStatus(enuu, products.get(0).getCmpUuId(), Status.AVAILABLE.value());
                     Double erpReserve = productDetailERP.getReserve();
                     if (Double.compare(b2cReserve, erpReserve) > 0) {// 如果商城已上架数量大于erp空闲库存,下架部分在售商品
                         BigDecimal b2cDecimal = BigDecimal.valueOf(b2cReserve);

+ 11 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductController.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2c.prod.commodity.controller;
 import com.uas.platform.b2c.prod.commodity.facade.ProductFacade;
 import com.uas.platform.b2c.prod.commodity.model.Goods;
 import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
 import com.uas.platform.b2c.prod.commodity.service.ProductService;
 import com.uas.platform.b2c.core.constant.SplitChar;
 import com.uas.platform.b2c.core.support.view.JxlsExcelView;
@@ -212,4 +213,14 @@ public class ProductController {
 	private ResultMap deleteStandardByBatch() {
 		return productService.deleteBatch(ProductConstant.STANDARD);
 	}
+
+	/**
+	 * 通过物料id获取物料交易详情
+	 * @param id
+	 * @return
+	 */
+	@RequestMapping(value = "/detail/{id}", method = RequestMethod.GET)
+	private ProductDetail getbyProductId(@PathVariable("id") Long id) {
+		return productService.findByProductId(id);
+	}
 }

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

@@ -508,6 +508,17 @@ public interface GoodsDao extends JpaSpecificationExecutor<Goods>, JpaRepository
      * @param uuid
      * @return
      */
+    @Deprecated
     @Query(value = "select sum(go_reserve) from trade$goods where go_enuu=:enuu and cmp_uuid=:uuid", nativeQuery = true)
     Double getSumReserveByEnUUAndUuid(@Param("enuu") Long enuu, @Param("uuid") String uuid);
+
+
+    /**
+     * 根据企业uu和器件uuid和状态获取商品总库存
+     * @param enuu
+     * @param uuid
+     * @return
+     */
+    @Query(value = "select sum(go_reserve) from trade$goods where go_enuu=:enuu and cmp_uuid=:uuid and go_status=:status ", nativeQuery = true)
+    Double getSumReserveByEnUUAndUuidAndStatus(@Param("enuu") Long enuu, @Param("uuid") String uuid, @Param("status") Integer status);
 }

+ 5 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/facade/impl/ProductFacadeImpl.java

@@ -81,7 +81,11 @@ public class ProductFacadeImpl implements ProductFacade {
 		goods.setStoreName(store.getStoreName());
 
 		// 发布商品
-		goods = goodsService.publish(goods, "NORMAL");
+		if ("ERP".equals(product.getSourceApp())) {
+			goods = goodsService.publish(goods, "NORMAL", product);
+		} else {
+			goods = goodsService.publish(goods, "NORMAL");
+		}
 
 		return ResultMap.success(goods);
 	}

+ 0 - 1
src/main/java/com/uas/platform/b2c/prod/commodity/model/Product.java

@@ -129,7 +129,6 @@ public class Product {
 	private String sourceApp;
 
 
-
 	/**
 	 * 类目(平台)(中文)
 	 */

+ 34 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductDetail.java

@@ -97,6 +97,12 @@ public class ProductDetail implements Serializable{
     @Column(name = "go_isbreakup", columnDefinition = "TINYINT(1)")
     private Boolean breakUp;
 
+    /**
+     * 商城已上架库存
+     */
+    @Column(name = "prd_b2creserve")
+    private Double b2cReserve;
+
     public Long getId() {
         return id;
     }
@@ -208,4 +214,32 @@ public class ProductDetail implements Serializable{
     public void setBreakUp(Boolean breakUp) {
         this.breakUp = breakUp;
     }
+
+    public Double getB2cReserve() {
+        return b2cReserve;
+    }
+
+    public void setB2cReserve(Double b2cReserve) {
+        this.b2cReserve = b2cReserve;
+    }
+
+    public ProductDetail() {
+
+    }
+
+    public ProductDetail convertFromGoods(Goods goods, Product product) {
+        this.code = product.getProdNum();
+        this.productId = product.getId();
+        this.produceDate = goods.getProduceDate();
+        this.minPackQty = goods.getMinPackQty();
+        this.minBuyQty = goods.getMinBuyQty();
+        this.maxDelivery = goods.getMaxDelivery();
+        this.minDelivery = goods.getMinDelivery();
+        this.b2cMaxDelivery = goods.getB2cMaxDelivery();
+        this.b2cMinDelivery = goods.getB2cMinDelivery();
+        this.packaging = goods.getPackaging();
+        this.price = goods.getMinPrice();
+        this.breakUp = goods.getBreakUp();
+        return this;
+    }
 }

+ 8 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductService.java

@@ -1,6 +1,7 @@
 package com.uas.platform.b2c.prod.commodity.service;
 
 import com.uas.platform.b2c.prod.commodity.model.Product;
+import com.uas.platform.b2c.prod.commodity.model.ProductDetail;
 import com.uas.platform.b2c.prod.commodity.model.ProductStandardPutOnInfo;
 import com.uas.platform.b2c.trade.order.model.Purchase;
 import com.uas.platform.b2c.trade.support.ResultMap;
@@ -116,4 +117,11 @@ public interface ProductService {
      * @return
      */
     List<Product> save(List<Product> products);
+
+    /**
+     * 通过product id获取物料交易详情
+     * @param id
+     * @return
+     */
+    ProductDetail findByProductId(Long id);
 }

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

@@ -180,6 +180,9 @@ public class GoodsServiceImpl implements GoodsService {
 	@Autowired
 	private OrderDetailService detailService;
 
+	@Autowired
+	private ProductDetailDao productDetailDao;
+
 	private final Logger logger = Logger.getLogger(getClass());
 
 	@Autowired
@@ -567,7 +570,14 @@ public class GoodsServiceImpl implements GoodsService {
 	@Override
 	@Transactional
 	public Goods publish(Goods goods, String deviceInfo, Product product) {
-		return null;
+		Goods saveGoods = publish(goods, deviceInfo);
+		ProductDetail productDetail = productDetailDao.findByProductId(product.getId());
+		if (productDetail == null) {
+			productDetail = new ProductDetail();
+		}
+		productDetail.convertFromGoods(goods, product);
+		productDetailDao.save(productDetail);
+		return goods;
 	}
 
 	@Override

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

@@ -16,6 +16,7 @@ import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
 import com.uas.platform.b2c.prod.product.brand.modal.Brand;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
 import com.uas.platform.b2c.prod.product.component.modal.Component;
+import com.uas.platform.b2c.trade.order.dao.OrderDetailDao;
 import com.uas.platform.b2c.trade.order.model.Order;
 import com.uas.platform.b2c.trade.order.model.Purchase;
 import com.uas.platform.b2c.trade.order.model.PurchaseDetail;
@@ -111,6 +112,12 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private OrderService orderService;
 
+    @Autowired
+    private ProductDetailDao productDetailDao;
+
+    @Autowired
+    private OrderDetailDao orderDetailDao;
+
     private ConcurrentHashMap<String, Field> sortFields = new ConcurrentHashMap<String, Field>();
 
     @Override
@@ -597,5 +604,25 @@ public class ProductServiceImpl implements ProductService {
     public List<Product> save(List<Product> products) {
         return productDao.save(products);
     }
+
+    @Override
+    public ProductDetail findByProductId(Long id) {
+        Product product = productDao.findOne(id);
+        if (product == null) {
+            throw new IllegalOperatorException("此产品不存在,请重新确认产品信息");
+        }
+        ProductDetail productDetail = productDetailDao.findByProductId(id);
+        if (productDetail != null) {
+            Double b2cReserve = 0d;
+            if (product.getCmpUuId() != null) {// 获取当前商城已上架数量(含锁库存)
+                b2cReserve = goodsDao.getSumReserveByEnUUAndUuidAndStatus(SystemSession.getUser().getEnterprise().getUu(), product.getCmpUuId(), Status.AVAILABLE.value());
+                Double lockReserve = orderDetailDao.getSumReserveBySupEnUuAndUuidAndStatus(SystemSession.getUser().getEnterprise().getUu(), product.getCmpUuId(), Status.TOBEPAID.value());
+                b2cReserve = b2cReserve + (lockReserve == null ? 0d :lockReserve);
+            }
+            productDetail.setB2cReserve(b2cReserve);
+        }
+
+        return productDetail;
+    }
 }
 

+ 3 - 0
src/main/java/com/uas/platform/b2c/trade/order/dao/OrderDetailDao.java

@@ -42,4 +42,7 @@ public interface OrderDetailDao extends JpaSpecificationExecutor<OrderDetail>, J
 	 */
 	@Query(value = "select d from OrderDetail d where d.batchCode =:batchCode and d.status =:status")
 	List<OrderDetail> findByBatchCodeAndStatus(@Param("batchCode") String batchCode, @Param("status") Integer status);
+
+	@Query(value = "select sum(detail_number) from trade$order_detail where detail_sup_en_uu=:enuu and cmp_uuid=:uuid and detail_status=:status", nativeQuery = true)
+	Double getSumReserveBySupEnUuAndUuidAndStatus(@Param("enuu") Long enuu, @Param("uuid") String uuid, @Param("status") Integer status);
 }

+ 5 - 0
src/main/webapp/resources/js/common/query/material.js

@@ -42,6 +42,11 @@ define([ 'ngResource' ], function() {
             updateProduct : {
                 url: 'trade/products/update',
                 method: 'POST'
+            },
+            // 获取物料交易信息
+            getProductDetail : {
+                url: 'trade/products/detail/:id',
+                method: 'GET'
             }
         });
     }]);

+ 6 - 0
src/main/webapp/resources/js/vendor/controllers/forstore/vendor_materialCtrl.js

@@ -673,6 +673,12 @@ define([ 'app/app' ], function(app) {
 					$scope.goods.isSelfSupport = $scope.store.status == 'OPENED' ? 1 : 0;
 					product.img = component.img || null;
 					product.selected = true;
+					if ('ERP' == product.sourceApp) {// 如果是erp上传物料获取物料交易信息
+						Material.getProductDetail({id : product.id}, function (data) {
+							$scope.goods.erpReserve = typeof data.reserve == 'undefined' ? 0 : data.reserve;
+							$scope.goods.b2cReserve = typeof data.b2cReserve == 'undefined' ? 0 : data.b2cReserve;
+						});
+					}
 				} else {
 					toaster.pop('error', '当前产品对应的器件[' + product.cmpUuId + ']已失效');
 				}

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

@@ -512,11 +512,11 @@
 								<p class="title">&nbsp;</p>
 								<img ng-src="{{material.img || 'static/img/store/common/default.png'}}" alt="img"/>
 							</div>
-							<div class="content">
+							<div class="content" ng-show="material.sourceApp == 'ERP'">
 								<p class="title">ERP空闲库存</p>
-								<div class="input-list">8888</div>
-								<p>库存</p>
-								<div class="input-list">9999</div>
+								<div class="input-list" ng-bind="goods.erpReserve"></div>
+								<p>已上架库存</p>
+								<div class="input-list" ng-bind="goods.b2cReserve"></div>
 							</div>
 							<div class="content">
 								<p class="title">上架数量</p>