Browse Source

新增物料规格书获取、审核通过接口

wangyc 7 years ago
parent
commit
f32a94f4d9

+ 25 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/controller/ProductAttachSubmitController.java

@@ -3,10 +3,13 @@ package com.uas.platform.b2c.prod.commodity.controller;
 import com.uas.platform.b2c.prod.commodity.model.ProductAttachSubmit;
 import com.uas.platform.b2c.prod.commodity.service.ProductAttachService;
 import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageParams;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
@@ -25,6 +28,28 @@ public class ProductAttachSubmitController {
         this.productAttachService = productAttachService;
     }
 
+    /**
+     * 分页获取申请列表
+     * @param params 分页参数
+     * @param keywords 关键词
+     * @param status 状态
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.GET, produces = "application/json")
+    public Page<ProductAttachSubmit> getPageInfo(PageParams params, @RequestParam(value = "keywords", required = false) String keywords, @RequestParam(value = "status", defaultValue = "all") String status) {
+        return productAttachService.getPageInfo(params, keywords, status);
+    }
+
+    /**
+     * 获取单条申请信息
+     * @param submitId 申请id
+     * @return
+     */
+    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
+    public ProductAttachSubmit getOne(@RequestParam Long submitId) {
+        return productAttachService.getOne(submitId);
+    }
+
     /**
      * 审核通过
      * @param submit 申请

+ 61 - 8
src/main/java/com/uas/platform/b2c/prod/commodity/model/ProductAttachSubmit.java

@@ -3,13 +3,18 @@ package com.uas.platform.b2c.prod.commodity.model;
 import com.uas.platform.b2c.b2b.model.EnterpriseBaseInfo;
 import com.uas.platform.b2c.common.account.model.UserBaseInfo;
 import com.uas.platform.b2c.core.constant.Status;
+import com.uas.platform.b2c.prod.product.brand.modal.BrandInfo;
+import com.uas.platform.b2c.prod.product.kind.model.KindInfo;
 import java.io.Serializable;
 import java.util.Date;
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToOne;
 import javax.persistence.Table;
 import javax.persistence.Transient;
 
@@ -48,6 +53,11 @@ public class ProductAttachSubmit implements Serializable{
     @Transient
     private Product product;
 
+    /**
+     * 型号
+     */
+    private String code;
+
     /**
      * 创建时间
      */
@@ -69,13 +79,15 @@ public class ProductAttachSubmit implements Serializable{
     /**
      * 提交人信息
      */
-    @Transient
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "as_submituu", insertable = false, updatable = false)
     private UserBaseInfo submiter;
 
     /**
      * 提交企业
      */
-    @Transient
+    @OneToOne(cascade = { CascadeType.REFRESH })
+    @JoinColumn(name = "submitEnuu", insertable = false, updatable = false)
     private EnterpriseBaseInfo submitEn;
 
     /**
@@ -111,9 +123,15 @@ public class ProductAttachSubmit implements Serializable{
     @Column(name = "as_auditenuu")
     private Long auditEnuu;
 
+    /**
+     * 审核人信息
+     */
     @Transient
     private UserBaseInfo auditer;
 
+    /**
+     * 审核企业信息
+     */
     @Transient
     private EnterpriseBaseInfo auditEn;
 
@@ -129,6 +147,17 @@ public class ProductAttachSubmit implements Serializable{
     @Column(name = "as_brandId")
     private Long brandId;
 
+    /**
+     * 商城品牌信息
+     */
+    @Transient
+    private BrandInfo brand;
+
+    /**
+     * 商城类目信息
+     */
+    private KindInfo kind;
+
     /**
      * 商城规格
      */
@@ -179,6 +208,14 @@ public class ProductAttachSubmit implements Serializable{
         this.product = product;
     }
 
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
     public Date getCreateTime() {
         return createTime;
     }
@@ -291,6 +328,22 @@ public class ProductAttachSubmit implements Serializable{
         this.brandId = brandId;
     }
 
+    public BrandInfo getBrand() {
+        return brand;
+    }
+
+    public void setBrand(BrandInfo brand) {
+        this.brand = brand;
+    }
+
+    public KindInfo getKind() {
+        return kind;
+    }
+
+    public void setKind(KindInfo kind) {
+        this.kind = kind;
+    }
+
     public String getSpec() {
         return spec;
     }
@@ -318,11 +371,11 @@ public class ProductAttachSubmit implements Serializable{
     @Override
     public String toString() {
         return "ProductAttachSubmit{" + "id=" + id + ", productId=" + productId
-            + ", uploadAttach='" + uploadAttach + '\'' + ", product=" + product + ", createTime=" + createTime +
-            ", submitUu=" + submitUu + ", submitEnuu=" + submitEnuu + ", submiter=" + submiter
-            + ", submitEn=" + submitEn + ", uuid='" + uuid + '\'' + ", status=" + status + ", auditTime=" + auditTime +
-            ", auditUu=" + auditUu + ", auditEnuu=" + auditEnuu + ", auditer=" + auditer + ", auditEn=" + auditEn +
-            ", kindId=" + kindId + ", brandId=" + brandId + ", spec='" + spec + '\'' +
-            ", mallAttach='" + mallAttach + '\'' + ", reason='" + reason + '\'' + '}';
+            + ", uploadAttach='" + uploadAttach + '\'' + ", product=" + product + ",code=" + code
+            + ", createTime=" + createTime + ", submitUu=" + submitUu + ", submitEnuu=" + submitEnuu
+            + ", submiter=" + submiter + ", submitEn=" + submitEn + ", uuid='" + uuid + '\'' + ", status=" + status
+            + ", auditTime=" + auditTime + ", auditUu=" + auditUu + ", auditEnuu=" + auditEnuu
+            + ", auditer=" + auditer + ", auditEn=" + auditEn + ", kindId=" + kindId + ", brandId=" + brandId
+            + ", spec='" + spec + '\'' + ", mallAttach='" + mallAttach + '\'' + ", reason='" + reason + '\'' + '}';
     }
 }

+ 18 - 0
src/main/java/com/uas/platform/b2c/prod/commodity/service/ProductAttachService.java

@@ -2,6 +2,8 @@ package com.uas.platform.b2c.prod.commodity.service;
 
 import com.uas.platform.b2c.prod.commodity.model.ProductAttachSubmit;
 import com.uas.platform.b2c.trade.support.ResultMap;
+import com.uas.platform.core.model.PageParams;
+import org.springframework.data.domain.Page;
 
 /**
  * 物料规格书接口
@@ -11,6 +13,22 @@ import com.uas.platform.b2c.trade.support.ResultMap;
  */
 public interface ProductAttachService {
 
+    /**
+     * 分页获取申请列表
+     * @param params 分页参数
+     * @param keywords 关键词
+     * @param status 状态
+     * @return
+     */
+    Page<ProductAttachSubmit> getPageInfo(PageParams params, String keywords, String status);
+
+    /**
+     * 获取单条申请信息
+     * @param id 申请id
+     * @return
+     */
+    ProductAttachSubmit getOne(Long id);
+
     /**
      * 物料上传规格书申请
      * @param productId 物料id

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

@@ -1,5 +1,9 @@
 package com.uas.platform.b2c.prod.commodity.service.impl;
 
+import com.uas.platform.b2c.b2b.dao.EnterpriseBaseInfoDao;
+import com.uas.platform.b2c.b2b.model.EnterpriseBaseInfo;
+import com.uas.platform.b2c.common.account.dao.UserBaseInfoDao;
+import com.uas.platform.b2c.common.account.model.UserBaseInfo;
 import com.uas.platform.b2c.core.constant.Status;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.prod.commodity.dao.ProductAttachSubmitDao;
@@ -7,13 +11,39 @@ import com.uas.platform.b2c.prod.commodity.dao.ProductDao;
 import com.uas.platform.b2c.prod.commodity.model.Product;
 import com.uas.platform.b2c.prod.commodity.model.ProductAttachSubmit;
 import com.uas.platform.b2c.prod.commodity.service.ProductAttachService;
+import com.uas.platform.b2c.prod.product.brand.dao.BrandInfoDao;
+import com.uas.platform.b2c.prod.product.brand.modal.BrandInfo;
 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.prod.product.component.service.ComponentService;
+import com.uas.platform.b2c.prod.product.kind.dao.KindDao;
+import com.uas.platform.b2c.prod.product.kind.dao.KindInfoDao;
+import com.uas.platform.b2c.prod.product.kind.model.Kind;
+import com.uas.platform.b2c.prod.product.kind.model.KindInfo;
 import com.uas.platform.b2c.trade.support.CodeType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.exception.IllegalOperatorException;
+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.CriterionExpression.Operator;
+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 java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+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.Direction;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
@@ -31,12 +61,130 @@ public class ProductAttachServiceImpl implements ProductAttachService {
 
     private final ComponentDao componentDao;
 
+    private final BrandInfoDao brandInfoDao;
+
+    private final KindInfoDao kindInfoDao;
+
+    private final ComponentService componentService;
+
+    private final KindDao kindDao;
+
+    private final EnterpriseBaseInfoDao enterpriseBaseInfoDao;
+
+    private final UserBaseInfoDao userBaseInfoDao;
+
     @Autowired
     public ProductAttachServiceImpl(ProductDao productDao, ProductAttachSubmitDao productAttachSubmitDao,
-        ComponentDao componentDao) {
+        ComponentDao componentDao, BrandInfoDao brandInfoDao, KindInfoDao kindInfoDao, ComponentService componentService, KindDao kindDao, EnterpriseBaseInfoDao enterpriseBaseInfoDao, UserBaseInfoDao userBaseInfoDao) {
         this.productDao = productDao;
         this.productAttachSubmitDao = productAttachSubmitDao;
         this.componentDao = componentDao;
+        this.brandInfoDao = brandInfoDao;
+        this.kindInfoDao = kindInfoDao;
+        this.componentService = componentService;
+        this.kindDao = kindDao;
+        this.enterpriseBaseInfoDao = enterpriseBaseInfoDao;
+        this.userBaseInfoDao = userBaseInfoDao;
+    }
+
+    @Override
+    public Page<ProductAttachSubmit> getPageInfo(PageParams params, String keywords, String status) {
+        final PageInfo pageInfo = new PageInfo(params);
+
+        // 过滤状态
+        Integer statusCode = 0;
+        switch (status) {
+            case "all" : break;
+            case "unaudit" : statusCode = Status.UNAUDIT.value(); break;
+            case "audited" : statusCode = Status.AUDITED.value(); break;
+            case "notallow" : statusCode = Status.NOTALLOW.value(); break;
+        }
+
+        if (pageInfo.getSort() == null) {
+            pageInfo.sorting(Direction.DESC, "createTime");
+        }
+
+        if (statusCode != 0) {
+            pageInfo.expression(new SimpleExpression("status", statusCode, Operator.EQ));
+        }
+
+        // 过滤提交人姓名、企业
+        if (!StringUtils.isEmpty(keywords)) {
+            SimpleExpression submiterName = new SimpleExpression("submiter.userName", keywords, CriterionExpression.Operator.LIKE);
+            SimpleExpression submiterEnName = new SimpleExpression("submitEn.enName", keywords, CriterionExpression.Operator.LIKE);
+            SimpleExpression[] simpleExpressions = new SimpleExpression[]{submiterName, submiterEnName};
+            LogicalExpression logicalExpression = PredicateUtils.or(simpleExpressions);
+            pageInfo.expression(logicalExpression);
+        }
+
+        Page<ProductAttachSubmit> page = productAttachSubmitDao.findAll(new Specification<ProductAttachSubmit>() {
+            @Override
+            public Predicate toPredicate(Root<ProductAttachSubmit> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                query.where(pageInfo.getPredicates(root, query, cb));
+                return null;
+            }
+        }, pageInfo);
+
+        List<ProductAttachSubmit> submits = page.getContent();
+        if (!CollectionUtils.isEmpty(submits)) {
+            for (ProductAttachSubmit submit : submits) {
+                submit = completeReturnSubmit(submit);
+            }
+        }
+        return new PageImpl<>(submits, pageInfo, page.getTotalElements());
+    }
+
+    @Override
+    public ProductAttachSubmit getOne(Long id) {
+        ProductAttachSubmit productAttachSubmit = productAttachSubmitDao.findOne(id);
+        if (productAttachSubmit == null) {
+            throw new IllegalOperatorException("申请不存在,请重新确认申请信息");
+        } else {
+            return completeReturnSubmit(productAttachSubmit);
+        }
+    }
+
+    /**
+     * 补全返回的申请信息
+     * @param submit 申请信息
+     * @return
+     */
+    private ProductAttachSubmit completeReturnSubmit(ProductAttachSubmit submit) {
+        if (submit.getAuditEnuu() != null) {
+            EnterpriseBaseInfo enterpriseBaseInfo = enterpriseBaseInfoDao.findOne(submit.getSubmitEnuu());
+            if (enterpriseBaseInfo != null) {
+                submit.setAuditEn(enterpriseBaseInfo);
+            }
+        }
+
+        if (submit.getAuditUu() != null) {
+            UserBaseInfo userBaseInfo = userBaseInfoDao.findUserByUserUU(submit.getSubmitUu());
+            if (userBaseInfo != null) {
+                submit.setAuditer(userBaseInfo);
+            }
+        }
+
+        if (submit.getProductId() != null) {
+            Product product = productDao.findOne(submit.getProductId());
+            if (product != null) {
+                submit.setProduct(product);
+            }
+        }
+
+        if (submit.getKindId() != null) {
+            KindInfo kindInfo = kindInfoDao.findOne(submit.getKindId());
+            if (kindInfo != null) {
+                submit.setKind(kindInfo);
+            }
+        }
+
+        if (submit.getBrandId() != null) {
+            BrandInfo brandInfo = brandInfoDao.findOne(submit.getBrandId());
+            if (brandInfo != null) {
+                submit.setBrand(brandInfo);
+            }
+        }
+        return submit;
     }
 
     @Override
@@ -75,6 +223,7 @@ public class ProductAttachServiceImpl implements ProductAttachService {
         submit.setProductId(product.getId());
         submit.setProduct(product);
         submit.setCreateTime(new Date());
+        submit.setCode(product.getPcmpcode());
         if (SystemSession.getUser().getUserUU() != null && SystemSession.getUser().getEnterprise() != null) {
             submit.setSubmitUu(SystemSession.getUser().getUserUU());
             submit.setSubmitEnuu(SystemSession.getUser().getEnterprise().getUu());
@@ -94,12 +243,98 @@ public class ProductAttachServiceImpl implements ProductAttachService {
 
     @Override
     public ResultMap auditSuccess(ProductAttachSubmit submit) {
-        return null;
+        if (submit.getId() == null) {
+            return new ResultMap(CodeType.NOT_EXiST, "此申请不存在,请重新确认申请信息");
+        }
+
+        ProductAttachSubmit exsitedSubmit = productAttachSubmitDao.findOne(submit.getId());
+        if (exsitedSubmit == null) {
+            return new ResultMap(CodeType.NOT_EXiST, "此申请不存在,请重新确认申请信息");
+        } else {
+            exsitedSubmit.setBrandId(submit.getBrandId());
+            exsitedSubmit.setKindId(submit.getKindId());
+            exsitedSubmit.setSpec(submit.getSpec());
+            if (StringUtils.isEmpty(exsitedSubmit.getUploadAttach())) {
+                return new ResultMap(CodeType.NO_INFO, "此申请规格书为空,请重新确认申请信息");
+            }
+            if (exsitedSubmit.getBrandId() == null || exsitedSubmit.getKindId() == null) {
+                return new ResultMap(CodeType.NO_INFO, "商城类目、品牌不完善,请重新确认申请信息");
+            }
+            BrandInfo brandInfo = brandInfoDao.findOne(exsitedSubmit.getBrandId());
+            if (brandInfo == null) {
+                return new ResultMap(CodeType.PARAMETER_ERROR, "商城品牌不存在,请重新填写商城品牌");
+            }
+            KindInfo kindInfo = kindInfoDao.findOne(exsitedSubmit.getKindId());
+            if (kindInfo == null) {
+                return new ResultMap(CodeType.PARAMETER_ERROR, "商城物料名称(类目)不存在,请重新填写商城物料名称(类目)");
+            }
+
+            // 标准型号
+            if (StringUtils.isEmpty(exsitedSubmit.getUuid())) {
+                Component component = componentDao.findByUuid(exsitedSubmit.getUuid());
+                // 实际为非标物料
+                if (component == null) {
+                    return new ResultMap(CodeType.ERROR_STATE, "该物料匹配的标准器件不存在,请重新确认该物料信息");
+                // 标准物料无规格书,更新规格书
+                } else if (component.getAttach() == null){
+                    component = addComponent(exsitedSubmit, component.getId());
+                    return ResultMap.success(auditSubmit(exsitedSubmit));
+                // 标准物料有规格书,返回两规格书
+                } else {
+                    return ResultMap.success(componentAttachNotNull(exsitedSubmit, component.getAttach()));
+                }
+            // 非标型号
+            } else {
+                List<Component> components = componentDao.findByBrandidAndCode(submit.getBrandId(), submit.getCode());
+                if (!CollectionUtils.isEmpty(components)) {
+                    Component component = components.get(0);
+                    if (component.getAttach() != null) {
+                        return ResultMap.success(componentAttachNotNull(exsitedSubmit, component.getAttach()));
+                    } else {
+                        component = addComponent(exsitedSubmit, component.getId());
+                        return ResultMap.success(auditSubmit(exsitedSubmit));
+                    }
+                } else {
+                    Component component = addComponent(exsitedSubmit, null);
+                    return ResultMap.success(auditSubmit(exsitedSubmit));
+                }
+            }
+        }
+    }
+
+    /**
+     * 完善审核信息
+     * @param submit
+     * @return
+     */
+    private ProductAttachSubmit auditSubmit(ProductAttachSubmit submit) {
+        submit.setStatus(Status.AUDITED.value());
+        submit.setAuditTime(new Date());
+        submit.setAuditUu(SystemSession.getUser().getUserUU());
+        submit.setAuditEnuu(SystemSession.getUser().getEnterprise().getUu());
+        return productAttachSubmitDao.save(submit);
+    }
+
+    /**
+     * 器件规格书不为空时,返回两个规格书
+     * @param submit
+     * @param attach
+     * @return
+     */
+    private Map<String, String> componentAttachNotNull(ProductAttachSubmit submit, String attach) {
+        submit.setMallAttach(attach);
+        productAttachSubmitDao.save(submit);
+
+        // 返回标准器件规格书、用户上传规格书
+        Map<String, String> map = new HashMap<>();
+        map.put("uploadAttach", submit.getUploadAttach());
+        map.put("mallAttach", attach);
+
+        return map;
     }
 
     @Override
     public ResultMap auditFailed(Long submitId, String reason) {
-        ResultMap map = new ResultMap();
         ProductAttachSubmit submit = productAttachSubmitDao.findOne(submitId);
         if (submit == null) {
             return new ResultMap(CodeType.NOT_EXiST, "此申请不存在,请重新确认申请信息");
@@ -125,4 +360,31 @@ public class ProductAttachServiceImpl implements ProductAttachService {
     public ResultMap chooseAttach(String attach, ProductAttachSubmit productAttachSubmit) {
         return null;
     }
+
+    private Component addComponent(ProductAttachSubmit submit, Long componentId) {
+        // 更新器件
+        if (componentId != null) {
+            Component component = componentDao.findOne(componentId);
+            if (component != null) {
+                component.setAttach(submit.getUploadAttach());
+                component.setVersion((short) ((component.getVersion() == null ? 0 : component.getVersion()) + 1));
+                component.setModifyTime(new Date());
+                component.setDescription(submit.getSpec());
+                return componentDao.save(component);
+            }
+            return null;
+        // 新增器件
+        } else {
+            Component component = new Component(submit);
+            component.setUuid(componentService.createUuid(component));
+            component = componentDao.save(component);
+
+            // 更新类目uuid后缀游标,以便之后生成uuid
+            Kind kind = kindDao.findOne(component.getKindid());
+            kind.setComponentsuffix(kind.getComponentsuffix() + 1);
+            kindDao.save(kind);
+
+            return component;
+        }
+    }
 }

+ 9 - 0
src/main/java/com/uas/platform/b2c/prod/product/component/dao/ComponentDao.java

@@ -61,6 +61,15 @@ public interface ComponentDao extends JpaSpecificationExecutor<Component>, JpaRe
 	@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
 	public List<Component> findByCodeAndBrandid(@Param("code") String code, @Param("brandid") Long brandid);
 
+	/**
+	 * 根据品牌id、原厂型号获取器件信息(因联合索引缘故,brandid作为前置索引)
+	 * @param brandid 品牌id
+	 * @param code 原厂型号
+	 * @return
+	 */
+	@Query("select c from Component c where c.brandid = :brandid and c.code = :code")
+	public List<Component> findByBrandidAndCode(@Param("brandid") Long brandid, @Param("code") String code);
+
 	/**
 	 * 根据原厂型号code和类目id(kindId)查找器件
 	 * 

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

@@ -1,5 +1,6 @@
 package com.uas.platform.b2c.prod.product.component.modal;
 
+import com.uas.platform.b2c.prod.commodity.model.ProductAttachSubmit;
 import com.uas.platform.b2c.prod.product.brand.modal.BrandInfo;
 import com.uas.platform.b2c.prod.product.kind.model.KindInfo;
 import com.uas.platform.b2c.prod.product.property.model.PropertyValue;
@@ -783,4 +784,21 @@ public class Component implements Serializable {
 		}
 		this.properties = propertyValues;
 	}
+
+	/**
+	 * 利用物料规格书申请生成器件
+	 * @param submit 申请信息
+	 */
+	public Component(ProductAttachSubmit submit) {
+		Component component = new Component();
+		Date now = new Date();
+		component.setBrandid(submit.getBrandId());
+		component.setAttach(submit.getUploadAttach());
+		component.setCode(submit.getCode());
+		component.setCreateTime(now);
+		component.setDescription(submit.getSpec());
+		component.setKindid(submit.getKindId());
+		component.setModifyTime(now);
+		component.setVersion((short) 1);
+	}
 }

+ 6 - 0
src/main/java/com/uas/platform/b2c/prod/product/component/service/ComponentService.java

@@ -261,4 +261,10 @@ public interface ComponentService {
 	 */
 	Component getComponentBySome(Long brandId, String cmpCode);
 
+	/**
+	 * 创建uuid
+	 * @param component 器件信息
+	 * @return
+	 */
+	String createUuid(Component component);
 }

+ 18 - 0
src/main/java/com/uas/platform/b2c/prod/product/component/service/impl/ComponentServiceImpl.java

@@ -587,4 +587,22 @@ public class ComponentServiceImpl implements ComponentService {
 		}
 		return null;
 	}
+
+	@Override
+	public String createUuid(Component component) {
+		if (component.getKindid() != null) {
+			Kind kind = kindDao.findOne(component.getKindid());
+			if (kind == null) {
+				throw new IllegalOperatorException("类目不存在");
+			} else {
+				String suffixStr = "";
+				for (int i = 0; i < 8 - String.valueOf(kind.getComponentsuffix()).length(); i++) {
+					suffixStr = suffixStr + "0";
+				}
+				return kind.getComponentPrefix() + suffixStr + kind.getComponentsuffix();
+			}
+		} else {
+			throw new IllegalOperatorException("器件类目为空");
+		}
+	}
 }