Explorar o código

Merge remote-tracking branch 'origin/feature-201806-suntg' into feature-201806-suntg

suntg %!s(int64=7) %!d(string=hai) anos
pai
achega
1a07b1a4e6

+ 107 - 0
src/main/java/com/uas/platform/b2b/erp/service/ObjectEvaluate.java

@@ -0,0 +1,107 @@
+package com.uas.platform.b2b.erp.service;
+
+import com.alibaba.fastjson.JSON;
+import com.uas.platform.b2b.model.Product;
+import com.uas.platform.b2b.model.PurcOrderInfoItem;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+
+/**
+ * 对象转换赋值
+ *
+ * @author hejq
+ * @date 2018-07-17 11:19
+ */
+public class ObjectEvaluate {
+
+    /**
+     * 给物料编号赋值方法
+     */
+    static final String EVALUTE_CODE = "setProductCode";
+
+    /**
+     * 给物料名称赋值方法
+     */
+    static final String EVALUTE_TITLE = "setProductTitle";
+
+    /**
+     * 给物料规格赋值方法
+     */
+    static final String EVALUTE_SPEC = "setProductSpec";
+
+    /**
+     * 给物料品牌赋值方法
+     */
+    static final String EVALUTE_BRAND = "setProductBrand";
+
+    /**
+     * 给物料单位赋值方法
+     */
+    static final String EVALUTE_UNIT = "setProductUnit";
+
+    /**
+     * 给物料ID赋值方法
+     */
+    static final String EVALUTE_ID = "setProductId";
+
+    /**
+     * 给物料型号赋值方法
+     */
+    static final String EVALUTE_CMP_CODE = "setProductCmpCode";
+
+    /**
+     * 物料数据赋值给其他实体
+     *
+     * @param targetObject 目标实体
+     * @param product 物料信息
+     * @param <T>
+     * @return
+     * @throws InvocationTargetException
+     * @throws IllegalAccessException
+     */
+    public static <T> T covert(T targetObject, Product product) {
+        Class<T> cls = (Class<T>) targetObject.getClass();
+        Method[] methods = cls.getMethods();
+        if (methods.length > 0) {
+            Arrays.asList(methods).stream().forEach(method -> {
+                try {
+                    if (EVALUTE_BRAND.equals(method.getName())) {
+                        method.invoke(targetObject, product.getBrand());
+                    } else if (EVALUTE_CODE.equals(method.getName())) {
+                        method.invoke(targetObject, product.getCode());
+                    } else if (EVALUTE_ID.equals(method.getName())) {
+                        method.invoke(targetObject, product.getId());
+                    } else if (EVALUTE_CMP_CODE.equals(method.getName())) {
+                        method.invoke(targetObject, product.getCmpCode());
+                    } else if (EVALUTE_SPEC.equals(method.getName())) {
+                        method.invoke(targetObject, product.getSpec());
+                    } else if (EVALUTE_TITLE.equals(method.getName())) {
+                        method.invoke(targetObject, product.getTitle());
+                    } else if (EVALUTE_UNIT.equals(method.getName())) {
+                        method.invoke(targetObject, product.getUnit());
+                    }
+                } catch (IllegalAccessException e) {
+                    e.printStackTrace();
+                } catch (InvocationTargetException e) {
+                    e.printStackTrace();
+                }
+            });
+        }
+        return targetObject;
+    }
+
+    public static void main(String[] args) {
+        Product product = new Product();
+        product.setId(1L);
+        product.setBrand("brand001");
+        product.setCmpCode("cmpCode001");
+        product.setTitle("title001");
+        product.setUnit("PCS");
+        product.setSpec("spec001");
+        PurcOrderInfoItem orderItem = new PurcOrderInfoItem();
+        orderItem = ObjectEvaluate.covert(orderItem, product);
+        System.out.println(JSON.toJSONString(orderItem));
+    }
+}

+ 104 - 0
src/main/java/com/uas/platform/b2b/model/AbstractProduct.java

@@ -0,0 +1,104 @@
+package com.uas.platform.b2b.model;
+
+import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
+
+/**
+ * 通用物料信息
+ * <pre>
+ *     采取冗余字段替代以前的product表数据
+ * </pre>
+ *
+ * @author hejq
+ * @date 2018-07-18 13:37
+ */
+@MappedSuperclass
+public abstract class AbstractProduct {
+
+    /**
+     * 编号
+     */
+    @Column(name = "pr_code")
+    protected String productCode;
+
+    /**
+     * 名称
+     */
+    @Column(name = "pr_title")
+    protected String productTitle;
+
+    /**
+     * 规格
+     */
+    @Column(name = "pr_spec")
+    protected String productSpec;
+
+    /**
+     * 品牌
+     */
+    @Column(name = "pr_brand")
+    protected String productBrand;
+
+    /**
+     * 单位
+     */
+    @Column(name = "pr_unit")
+    protected String productUnit;
+
+    /**
+     * 原厂型号(erp)
+     *
+     * @return
+     */
+    @Column(name = "pr_cmpcode")
+    protected String productCmpCode;
+
+    public String getProductCode() {
+        return productCode;
+    }
+
+    public void setProductCode(String productCode) {
+        this.productCode = productCode;
+    }
+
+    public String getProductTitle() {
+        return productTitle;
+    }
+
+    public void setProductTitle(String productTitle) {
+        this.productTitle = productTitle;
+    }
+
+    public String getProductSpec() {
+        return productSpec;
+    }
+
+    public void setProductSpec(String productSpec) {
+        this.productSpec = productSpec;
+    }
+
+    public String getProductBrand() {
+        return productBrand;
+    }
+
+    public void setProductBrand(String productBrand) {
+        this.productBrand = productBrand;
+    }
+
+    public String getProductUnit() {
+        return productUnit;
+    }
+
+    public void setProductUnit(String productUnit) {
+        this.productUnit = productUnit;
+    }
+
+    public String getProductCmpCode() {
+        return productCmpCode;
+    }
+
+    public void setProductCmpCode(String productCmpCode) {
+        this.productCmpCode = productCmpCode;
+    }
+
+}

+ 7 - 1
src/main/java/com/uas/platform/b2b/model/PurcOrderInfoItem.java

@@ -6,9 +6,15 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import javax.persistence.*;
 import java.util.*;
 
+/**
+ * 采购单明细
+ * 
+ * @author hejq
+ * @date 2018-07-18 14:06
+ */
 @Table(name = "purc$orderitems")
 @Entity
-public class PurcOrderInfoItem {
+public class PurcOrderInfoItem extends AbstractProduct {
 
 	@Id
 	@GeneratedValue(strategy = GenerationType.AUTO)