Browse Source

完成商城平台复制到商城ERP

yujia 7 years ago
parent
commit
6e16eab3dd

+ 1 - 1
pom.xml

@@ -71,7 +71,7 @@
 		<dependency>
 			<groupId>com.uas.api</groupId>
 			<artifactId>b2c-erp-api</artifactId>
-			<version>0.0.2-SNAPSHOT</version>
+			<version>0.0.5-SNAPSHOT</version>
 		</dependency>
 		<dependency>
 			<groupId>com.caucho</groupId>

+ 3 - 0
src/main/java/com/uas/platform/b2c/core/constant/IntegerConstant.java

@@ -24,4 +24,7 @@ public class IntegerConstant {
      * 默认单价的精确小数
      */
     public static final Integer PRICE_FRACTION = 6;
+
+
+    public static final Integer PAGE_COUNT = 1000;
 }

+ 59 - 0
src/main/java/com/uas/platform/b2c/external/erp/prod/service/impl/ProdServiceImpl.java

@@ -6,23 +6,40 @@ import com.uas.platform.b2c.core.constant.IntegerConstant;
 import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.support.log.ErpB2cBufferedLogger;
+import com.uas.platform.b2c.external.erp.prod.util.ModelConvertUtil;
 import com.uas.platform.b2c.external.erp.product.util.ModelConverter;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
 import com.uas.platform.b2c.prod.commodity.dao.ProductPrivateDao;
+import com.uas.platform.b2c.prod.commodity.dao.V_ProductPrivateDao;
 import com.uas.platform.b2c.prod.commodity.model.Product;
 import com.uas.platform.b2c.prod.commodity.model.ProductPrivate;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
 import com.uas.platform.b2c.prod.commodity.service.ProductService;
 import com.uas.platform.b2c.prod.commodity.service.ReleaseProductByBatchService;
 import com.uas.platform.b2c.prod.store.dao.StoreInDao;
 import com.uas.platform.b2c.prod.store.model.StoreIn;
 import com.uas.platform.core.logging.BufferedLoggerManager;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.persistence.criteria.CriterionExpression;
+import com.uas.platform.core.persistence.criteria.LogicalExpression;
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
+import com.uas.platform.core.persistence.criteria.SimpleExpression;
 import org.apache.log4j.Logger;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -46,6 +63,9 @@ public class ProdServiceImpl implements ProdService {
     @Autowired
     private GoodsDao goodsDao;
 
+    @Autowired
+    private V_ProductPrivateDao vProductPrivateDao;
+
     @Autowired
     private ProductPrivateDao productPrivateDao;
 
@@ -185,4 +205,43 @@ public class ProdServiceImpl implements ProdService {
         }
 
     }
+
+    @Override
+    public Page<Prod> findNewProdUploadMallERP(int i) {
+        PageParams pageParams = new PageParams();
+        pageParams.setPage(i);
+        pageParams.setCount(IntegerConstant.PAGE_COUNT);
+        final PageInfo info = new PageInfo(pageParams);
+        info.sorting("id", Sort.Direction.ASC);
+        SimpleExpression b2cEnabled = new SimpleExpression("b2cEnabled", 1, CriterionExpression.Operator.EQ);
+        SimpleExpression pbranden = PredicateUtils.isNotNull("pbranden");
+        SimpleExpression pcmpcode = PredicateUtils.isNotNull("pcmpcode");
+        SimpleExpression erpDown = PredicateUtils.isNull("erpDown");
+        LogicalExpression expression = new LogicalExpression(new SimpleExpression[]{b2cEnabled, pbranden, pcmpcode, erpDown}, CriterionExpression.Operator.AND);
+        info.expression(expression);
+        Page<V_ProductPrivate> productPrivates = vProductPrivateDao.findAll(new Specification<V_ProductPrivate>() {
+            @Override
+            public Predicate toPredicate(Root<V_ProductPrivate> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(info.getPredicates(root, query, cb));
+                return null;
+            }
+        }, info);
+        List<V_ProductPrivate> content = productPrivates.getContent();
+        List<Prod> content1 =  new ArrayList<>();
+        for (V_ProductPrivate v_productPrivate : content) {
+            Prod prod = ModelConvertUtil.vProductPrivateConvertProd(v_productPrivate);
+            if (prod != null) {
+                content1.add(prod);
+            }
+        }
+        PageImpl<Prod> page = new PageImpl<>(content1, new PageInfo(pageParams), productPrivates.getTotalElements());
+        return page;
+    }
+
+    @Override
+    public void updateNewProdDowned(List<String> list) {
+        if (!CollectionUtils.isEmpty(list)) {
+            productDao.updateProductMallERPDowned(list);
+        }
+    }
 }

+ 66 - 0
src/main/java/com/uas/platform/b2c/external/erp/prod/util/ModelConvertUtil.java

@@ -0,0 +1,66 @@
+package com.uas.platform.b2c.external.erp.prod.util;
+
+import com.uas.api.b2c_erp.seller.model.Prod;
+import com.uas.platform.b2c.prod.commodity.model.V_ProductPrivate;
+import com.uas.platform.b2c.prod.product.component.modal.ComponentInfo;
+
+/**
+ * 类型转换
+ *
+ * @author yuj 2018-05-15 18:02
+ */
+public class ModelConvertUtil {
+
+    /**
+     * 物料转化成 prod
+     *
+     * @param v_productPrivate 物料服务
+     * @return Prod
+     */
+   public static Prod vProductPrivateConvertProd(V_ProductPrivate v_productPrivate) {
+       if (v_productPrivate == null) {
+           return null;
+       }
+       Prod prod = new Prod();
+       prod.setPr_orispeccode(v_productPrivate.getPcmpcode());
+       prod.setPr_brand(v_productPrivate.getPbranden());
+       prod.setPcmpcode(v_productPrivate.getPcmpcode());
+       prod.setKind(v_productPrivate.getKind());
+       prod.setKinden(v_productPrivate.getKinden());
+       prod.setPr_detail(v_productPrivate.getKind());
+       prod.setPr_uuid(v_productPrivate.getCmpUuId());
+       prod.setPbrand(v_productPrivate.getPbrand());
+       prod.setPbranden(v_productPrivate.getPbranden());
+       prod.setPr_code(v_productPrivate.getProdNum());
+       prod.setPr_spec(v_productPrivate.getSpec());
+       prod.setPr_unit(v_productPrivate.getUnit());
+       return prod;
+    }
+
+
+    /**
+     * 物料转化成 prod
+     *
+     * @param info 器件信息
+     * @return Prod
+     */
+    public static Prod ComponentInfoConvertProd(ComponentInfo info) {
+        if (info == null) {
+            return null;
+        }
+        Prod prod = new Prod();
+        prod.setPr_orispeccode(info.getCode());
+        prod.setPr_brand(info.getBrand().getNameEn());
+        prod.setPcmpcode(info.getCode());
+        prod.setKind(info.getKind().getNameCn());
+        prod.setKinden(info.getKind().getNameCn());
+        prod.setPr_detail(info.getKind().getNameCn());
+        prod.setPr_uuid(info.getUuid());
+        prod.setPbrand(info.getBrand().getNameEn());
+        prod.setPbranden(info.getBrand().getNameEn());
+        prod.setPr_code(info.getUuid());
+        prod.setPr_spec(info.getDescription());
+        prod.setPr_unit(info.getUnit());
+        return prod;
+    }
+}

+ 40 - 2
src/main/java/com/uas/platform/b2c/external/erp/product/service/impl/ComponentServiceImpl.java

@@ -2,13 +2,16 @@ package com.uas.platform.b2c.external.erp.product.service.impl;
 
 import com.uas.api.b2c_erp.baisc.model.ComponentInfoUas;
 import com.uas.api.b2c_erp.baisc.service.ComponentService;
+import com.uas.api.b2c_erp.seller.model.Prod;
 import com.uas.api.domain.IPage;
+import com.uas.platform.b2c.core.constant.IntegerConstant;
+import com.uas.platform.b2c.core.constant.SplitChar;
+import com.uas.platform.b2c.core.utils.StringUtilB2C;
+import com.uas.platform.b2c.external.erp.prod.util.ModelConvertUtil;
 import com.uas.platform.b2c.external.erp.product.util.ModelConverter;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentInfoDao;
 import com.uas.platform.b2c.prod.product.component.modal.ComponentInfo;
 import com.uas.platform.b2c.prod.product.kind.service.KindService;
-import com.uas.platform.b2c.core.constant.SplitChar;
-import com.uas.platform.b2c.core.utils.StringUtilB2C;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.platform.core.persistence.criteria.CriterionExpression.Operator;
@@ -18,6 +21,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -173,4 +177,38 @@ public class ComponentServiceImpl implements ComponentService {
         //    }
         return mapList;
     }
+
+    @Override
+    public Page<Prod> findNewComponentUploadMallERP(int i) {
+        PageParams pageParams = new PageParams();
+        pageParams.setPage(i);
+        pageParams.setCount(IntegerConstant.PAGE_COUNT);
+        final PageInfo info = new PageInfo(pageParams);
+        info.sorting("id", Sort.Direction.ASC);
+        SimpleExpression erpDown = PredicateUtils.isNull("erpDown");
+        info.expression(erpDown);
+        Page<ComponentInfo> componentInfos = componentInfoDao.findAll(new Specification<ComponentInfo>() {
+            @Override
+            public Predicate toPredicate(Root<ComponentInfo> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(info.getPredicates(root, query, cb));
+                return null;
+            }
+        }, info);
+        List<ComponentInfo> content = componentInfos.getContent();
+        List<Prod> content1 =  new ArrayList<>();
+        for (ComponentInfo componentInfo : content) {
+            Prod prod = ModelConvertUtil.ComponentInfoConvertProd(componentInfo);
+            if (prod != null) {
+                content1.add(prod);
+            }
+        }
+        return new PageImpl<Prod>(content1, info, componentInfos.getTotalElements());
+    }
+
+    @Override
+    public void updateNewComponentDowned(List<String> list) {
+        if (!CollectionUtils.isEmpty(list)) {
+            componentInfoDao.updateComponentInfoMallERPDowned(list);
+        }
+    }
 }

+ 9 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/dao/ProductDao.java

@@ -3,6 +3,7 @@ package com.uas.platform.b2c.prod.commodity.dao;
 import com.uas.platform.b2c.prod.commodity.model.Product;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
@@ -177,6 +178,14 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
     @Query(value = "select p.id from Product p where p.enUU = :enuu and p.standard = :standard")
     List<Long> findPridsByEnuuAndStardand(@Param("enuu") Long enuu, @Param("standard") Integer standard);
 
+    /**
+     * 更新物料信息为已上传
+     * @param list
+     */
+    @Modifying
+    @Query(value = "update Product p set p.erpDown = \'已上传\' where p.prodNum in (:list)")
+    void updateProductMallERPDowned(@Param("list") List<String> list);
+
     /**
      * 通过型号查询物料信息
      * @param cmpCode

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

@@ -434,6 +434,12 @@ public class Product {
 	@Column(name = "pr_taxprecon")
 	private String taxPreCon;
 
+	/**
+	 * 商城erp是否下载
+	 */
+	@Column(name = "pr_erpdown")
+	private String erpDown;
+
 	@Transient
 	private Enterprise enterprise;
 
@@ -980,4 +986,13 @@ public class Product {
 	public void setTaxPreCon(String taxPreCon) {
 		this.taxPreCon = taxPreCon;
 	}
+
+	public String getErpDown() {
+		return erpDown;
+	}
+
+	public Product setErpDown(String erpDown) {
+		this.erpDown = erpDown;
+		return this;
+	}
 }

+ 2 - 2
src/main/java/com/uas/platform/b2c/prod/commodity/model/ReleaseProductByBatch.java

@@ -694,8 +694,8 @@ public class ReleaseProductByBatch implements Serializable {
 
 	@Override
 	public int hashCode() {
-		int result = brandNameEn.hashCode();
-		result = 31 * result + code.hashCode();
+		int result = (brandNameEn == null ? 0 : brandNameEn.hashCode());
+		result = 31 * result + (code == null ? 0 : code.hashCode());
 		result = 31 * result + (minBuyQtyStr == null ? 0 : minBuyQtyStr.hashCode());
 		result = 31 * result + (productDate == null ? 0 : productDate.hashCode());
 		result = 31 * result + (minPackageStr == null ? 0 : minPackageStr.hashCode());

+ 15 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/model/V_ProductPrivate.java

@@ -284,6 +284,12 @@ public class V_ProductPrivate implements Serializable {
     @Column(name = "pr_batchcount")
     private Integer batchCount;
 
+    /**
+     * 商城erp是否下载
+     */
+    @Column(name = "pr_erpdown")
+    private String erpDown;
+
     public Long getId() {
         return id;
     }
@@ -611,4 +617,13 @@ public class V_ProductPrivate implements Serializable {
     public void setAddProductPerson(Boolean addProductPerson) {
         isAddProductPerson = addProductPerson;
     }
+
+    public String getErpDown() {
+        return erpDown;
+    }
+
+    public V_ProductPrivate setErpDown(String erpDown) {
+        this.erpDown = erpDown;
+        return this;
+    }
 }

+ 11 - 3
src/main/java/com/uas/platform/b2c/prod/product/component/dao/ComponentInfoDao.java

@@ -1,7 +1,6 @@
 package com.uas.platform.b2c.prod.product.component.dao;
 
-import java.util.List;
-
+import com.uas.platform.b2c.prod.product.component.modal.ComponentInfo;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
@@ -11,7 +10,7 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import com.uas.platform.b2c.prod.product.component.modal.ComponentInfo;
+import java.util.List;
 
 @Repository
 public interface ComponentInfoDao extends JpaSpecificationExecutor<ComponentInfo>, JpaRepository<ComponentInfo, Long> {
@@ -108,4 +107,13 @@ public interface ComponentInfoDao extends JpaSpecificationExecutor<ComponentInfo
 	@Modifying
 	@Query(value = "update ComponentInfo b set b.searchWeight = :increaseNum where b.uuid = :uuid")
 	public int setWeight(@Param("uuid") String uuid, @Param("increaseNum") Double increaseNum);
+
+
+	/**
+	 * 更新物料信息为已上传
+	 * @param uuids
+	 */
+	@Modifying
+	@Query(value = "update ComponentInfo c set c.erpDown = \'已上传\' where c.uuid in (:uuids)")
+	void updateComponentInfoMallERPDowned(@Param("uuids") List<String> uuids);
 }

+ 15 - 0
src/main/java/com/uas/platform/b2c/prod/product/component/modal/Component.java

@@ -313,6 +313,12 @@ public class Component implements Serializable {
 	@Column(name = "cmp_search_count")
 	private Long searchCount;
 
+	/**
+	 * 商城erp是否下载
+	 */
+	@Column(name = "pr_erpdown")
+	private String erpDown;
+
 	/**
 	 * 废料数量
 	 */
@@ -716,6 +722,15 @@ public class Component implements Serializable {
 				+ inactionStockQty + "]";
 	}
 
+	public String getErpDown() {
+		return erpDown;
+	}
+
+	public Component setErpDown(String erpDown) {
+		this.erpDown = erpDown;
+		return this;
+	}
+
 	public Component() {
 
 	}

+ 32 - 0
src/main/java/com/uas/platform/b2c/prod/product/component/modal/ComponentInfo.java

@@ -191,6 +191,19 @@ public class ComponentInfo implements Serializable {
 	@Column(name = "cmp_inastockqty")
 	private Double inactionStockQty;
 
+
+	/**
+	 * 商城erp是否下载
+	 */
+	@Column(name = "pr_erpdown")
+	private String erpDown;
+
+	/**
+	 * 器件描述
+	 */
+	@Column(name = "cmp_description", length = 4000)
+	private String description;
+
 	/**
 	 * 废料数量
 	 */
@@ -414,6 +427,15 @@ public class ComponentInfo implements Serializable {
 		this.goods = goods;
 	}
 
+	public String getErpDown() {
+		return erpDown;
+	}
+
+	public ComponentInfo setErpDown(String erpDown) {
+		this.erpDown = erpDown;
+		return this;
+	}
+
 	// 构造函数
 	public ComponentInfo() {
 
@@ -469,6 +491,16 @@ public class ComponentInfo implements Serializable {
 		this.reserve = component.getReserve();
 		this.reserveType = component.getReserveType();
 	}
+
+	public String getDescription() {
+		return description;
+	}
+
+	public ComponentInfo setDescription(String description) {
+		this.description = description;
+		return this;
+	}
+
 	/*
 	 * public ComponentInfoUas convertUas(ComponentInfo info){ ComponentInfoUas uas = new ComponentInfoUas(); uas.setAttach(info.getAttach()); uas.setBrandid(info.getBrandid()); uas.setCode(info.getCode()); uas.setExcessQty(info.getExcessQty()); uas.setId(info.getId()); uas.setImg(info.getImg()); uas.setKindid(info.getKindid()); uas.setMaxDelivery(info.getMaxDelivery()); uas.setMinBuyQty(info.getMinBuyQty()); uas.setMinDelivery(info.getMinDelivery()); uas.setMinPrice(info.getMinPrice());
 	 * uas.setOrderNumber(info.getOrderNumber()); uas.setOrderQty(info.getOrderQty()); uas.setOriginalQty(info.getOriginalQty()); uas.setPackaging(info.getPackaging()); uas.setReserve(info.getReserve()); uas.setReserveType(info.getReserveType()); uas.setSampleQty(info.getSampleQty()); uas.setSpec(info.getSpec()); uas.setUnit(info.getUnit()); uas.setUuid(info.getUuid()); uas.setWeight(info.getWeight());; return uas; }