浏览代码

增加批量新增物料、个人物料及替代料接口

dongbw 7 年之前
父节点
当前提交
afde1ba584

+ 27 - 4
src/main/java/com/uas/ps/product/controller/ProductController.java

@@ -8,7 +8,6 @@ import com.uas.ps.entity.Product;
 import com.uas.ps.entity.Status;
 import com.uas.ps.httplog.annotation.HttpLog;
 import com.uas.ps.product.data.MyJdbcTemplate;
-import com.uas.ps.product.entity.Constant;
 import com.uas.ps.product.entity.Prod;
 import com.uas.ps.product.entity.ProductSaler;
 import com.uas.ps.product.service.ProductService;
@@ -16,7 +15,6 @@ import com.uas.ps.product.support.ProductBufferedLogger;
 import com.uas.ps.product.sync.WaitSyncHelper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
-import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -507,17 +505,21 @@ public class ProductController {
 
     /**
      * 报价之后保存到个人库操作接口
+     * 替代料报价及采纳之后,将替代料添加到对应企业对应物料 2018年6月26日 16:47:16 dongbw
      *
      * @param product 物料信息
+     * @param replaceCmpCode  替代型号
+     * @param replaceBrand  替代品牌
      * @return 处理结果
      */
     @HttpLog
     @RequestMapping(value = "/save/inquiry", method = RequestMethod.POST)
     @ResponseBody
-    public ModelMap saveInquiryProducts(@RequestBody Product product) {
+    public ModelMap saveInquiryProducts(@RequestBody Product product, String replaceCmpCode, String replaceBrand) {
+        System.out.println("参数:" + replaceCmpCode  + "--" + replaceBrand);
         ModelMap map = new ModelMap();
         try {
-            map = productService.saveInquiryProducts(product);
+            map = productService.saveInquiryProducts(product, replaceCmpCode, replaceBrand);
             logger.log("成功", "报价之后保存到个人库成功", "物料信息" + JSON.toJSONString(product), null, null, null);
         } catch (Exception e) {
             e.printStackTrace();
@@ -528,6 +530,27 @@ public class ProductController {
         return map;
     }
 
+    /**
+     * 保存询价单后,询价物料批量保存到个人库操作接口
+     *
+     * @param products 物料信息
+     * @return 处理结果
+     */
+    @HttpLog
+    @RequestMapping(value = "/save/inquiry/batch", method = RequestMethod.POST)
+    @ResponseBody
+    public ModelMap saveInquiryProductsByBatch(@RequestBody List<Product> products) {
+        ModelMap map = new ModelMap();
+        try {
+            map = productService.saveInquiryProductsByBatch(products);
+        } catch (Exception e) {
+            e.printStackTrace();
+            map.put("success", false);
+            map.put("message", e.getMessage());
+        }
+        return map;
+    }
+
     /**
      * 根据企业UU和物料原厂型号cmpCode和品牌获取其他有相同物料的企业号
      *

+ 251 - 0
src/main/java/com/uas/ps/product/entity/ProductReplace.java

@@ -0,0 +1,251 @@
+package com.uas.ps.product.entity;
+
+
+import com.uas.ps.entity.Product;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 存贮商城替代物料
+ * @author dongbw
+ * @version 2018年6月26日 15:45:25
+ */
+@Entity
+@Table(name = "product$replace")
+public class ProductReplace implements Serializable{
+
+    @Id
+    @GeneratedValue
+    @Column(name = "id")
+    private Long id;
+
+    /**
+     * erp数据库主键id
+     */
+    @Column(name = "ptr_erpid")
+    private Long erpId;
+
+    /**
+     * 替代关系状态
+     * ON/OFF
+     */
+    @Column(name = "ptr_status")
+    private String status;
+
+    /**
+     * 下载状态
+     */
+    @Column(name="ptr_downstatus")
+    private String downStatus;
+
+
+    /**
+     * 用户uu
+     */
+    @Column(name = "ptr_useruu")
+    private Long userUU;
+
+    /**
+     * 物料id
+     */
+    @Column(name = "ptr_prid")
+    private Long productId;
+
+    /***
+     * 替代料号
+     */
+    @Column(name = "ptr_replaceid")
+    private String replaceId;
+
+    /**
+     * 原型号型号
+     */
+    @Column(name = "p_cmpcode" ,length = 800)
+    private String pCmpcode;
+
+    /**
+     * 原品牌品牌
+     */
+    @Column(name = "p_pbranden")
+    private String pBranden;
+
+    /**
+     * 可替代型号
+     */
+    @Column(name = "ptr_cmpcode" ,length = 800)
+    private String ptrCmpcode;
+
+    /**
+     * 可替代品牌
+     */
+    @Column(name = "ptr_pbranden")
+    private String ptrBranden;
+
+    /**
+     * UUID 标准料号
+     * @return
+     */
+    @Column(name = "ptr_cmpuuid")
+    private String ptrCmpUuId;
+
+    /**
+     * 可替代品牌(uuid)
+     */
+    @Column(name = "ptr_pbranduuid")
+    private String ptrBrandUuid;
+
+    /**
+     * 创建时间
+     */
+    @Temporal(TemporalType.TIMESTAMP)
+    @org.hibernate.annotations.CreationTimestamp
+    @Column(name = "ptr_createtime")
+    private Date time;
+
+    /**
+     * 序号
+     */
+    @Column(name = "ptr_detno", nullable = false)
+    private Short detno;
+
+    public ProductReplace() {
+
+    }
+
+    public ProductReplace(Product product) {
+        this.pBranden = product.getpBrandEn();
+        this.pCmpcode = product.getpCmpCode();
+        this.productId = product.getId();
+        this.userUU = product.getUserUU();
+        this.time = new Date();
+    }
+
+    public String getReplaceId() {
+        return replaceId;
+    }
+
+    public void setReplaceId(String replaceId) {
+        this.replaceId = replaceId;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getErpId() {
+        return erpId;
+    }
+
+    public void setErpId(Long erpId) {
+        this.erpId = erpId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getDownStatus() {
+        return downStatus;
+    }
+
+    public void setDownStatus(String downStatus) {
+        this.downStatus = downStatus;
+    }
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+    public Long getProductId() {
+        return productId;
+    }
+
+    public void setProductId(Long productId) {
+        this.productId = productId;
+    }
+
+    public String getpCmpcode() {
+        return pCmpcode;
+    }
+
+    public void setpCmpcode(String pCmpcode) {
+        this.pCmpcode = pCmpcode;
+    }
+
+    public String getpBranden() {
+        return pBranden;
+    }
+
+    public void setpBranden(String pBranden) {
+        this.pBranden = pBranden;
+    }
+
+    public String getPtrCmpcode() {
+        return ptrCmpcode;
+    }
+
+    public void setPtrCmpcode(String ptrCmpcode) {
+        this.ptrCmpcode = ptrCmpcode;
+    }
+
+    public String getPtrBranden() {
+        return ptrBranden;
+    }
+
+    public void setPtrBranden(String ptrBranden) {
+        this.ptrBranden = ptrBranden;
+    }
+
+    public String getPtrCmpUuId() {
+        return ptrCmpUuId;
+    }
+
+    public void setPtrCmpUuId(String ptrCmpUuId) {
+        this.ptrCmpUuId = ptrCmpUuId;
+    }
+
+    public String getPtrBrandUuid() {
+        return ptrBrandUuid;
+    }
+
+    public void setPtrBrandUuid(String ptrBrandUuid) {
+        this.ptrBrandUuid = ptrBrandUuid;
+    }
+
+    public Date getTime() {
+        return time;
+    }
+
+    public void setTime(Date time) {
+        this.time = time;
+    }
+
+    public Short getDetno() {
+        return detno;
+    }
+
+    public void setDetno(Short detno) {
+        this.detno = detno;
+    }
+
+}

+ 32 - 0
src/main/java/com/uas/ps/product/repository/ProductReplaceDao.java

@@ -0,0 +1,32 @@
+package com.uas.ps.product.repository;
+
+import com.uas.ps.product.entity.ProductReplace;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @author dongbw
+ * @since 2018年6月26日 15:56:26
+ */
+@Repository
+public interface ProductReplaceDao extends JpaSpecificationExecutor<ProductReplace>, JpaRepository<ProductReplace, Long> {
+
+    /**
+     * 根据物料id查找替代料
+     * @param id  物料id
+     * @return 替代料list
+     */
+    List<ProductReplace> findByProductId(Long id);
+
+    /**
+     * 根据物料id
+     * @param id 物料id
+     * @param replaceCmpCode  替代型号
+     * @param replaceBrand  替代品牌
+     * @return
+     */
+    List<ProductReplace> findByProductIdAndPtrCmpcodeAndPtrBranden(Long id, String replaceCmpCode, String replaceBrand);
+}

+ 12 - 1
src/main/java/com/uas/ps/product/service/ProductService.java

@@ -236,9 +236,20 @@ public interface ProductService {
      * 报价之后保存到个人库操作接口
      *
      * @param product 物料信息
+     * @param replaceCmpCode  替代型号
+     * @param replaceBrand  替代品牌
      * @return 处理结果
      */
-    ModelMap saveInquiryProducts(Product product);
+    ModelMap saveInquiryProducts(Product product, String replaceCmpCode, String replaceBrand);
+
+
+    /**
+     * 保存询价单后,批量将询价物料存入个人库接口
+     *
+     * @param products
+     * @return
+     */
+    ModelMap saveInquiryProductsByBatch(List<Product> products);
 
     /**
      * 根据品牌和型号,返回类目

+ 150 - 33
src/main/java/com/uas/ps/product/service/impl/ProductServiceImpl.java

@@ -14,23 +14,18 @@ import com.uas.ps.product.ProductConstant;
 import com.uas.ps.product.data.MyJdbcTemplate;
 import com.uas.ps.product.entity.Constant;
 import com.uas.ps.product.entity.Prod;
+import com.uas.ps.product.entity.ProductReplace;
 import com.uas.ps.product.entity.ProductSaler;
 import com.uas.ps.product.repository.ProductDao;
 import com.uas.ps.product.repository.ProductMatchResultDao;
 import com.uas.ps.product.repository.ProductPrivateDao;
+import com.uas.ps.product.repository.ProductReplaceDao;
 import com.uas.ps.product.repository.ProductUsersDao;
 import com.uas.ps.product.service.ProductService;
 import com.uas.ps.product.sync.WaitSyncHelper;
 import com.uas.ps.properties.UrlProperties;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
 import org.apache.commons.collections.CollectionUtils;
+import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.jdbc.core.BatchPreparedStatementSetter;
 import org.springframework.jdbc.core.ParameterizedPreparedStatementSetter;
@@ -39,6 +34,15 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.client.RestTemplate;
 
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 /**
  * @author sunyj
  * @since 2018/1/6 17:19
@@ -70,6 +74,9 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private ProductPrivateDao productPrivateDao;
 
+    @Autowired
+    private ProductReplaceDao productReplaceDao;
+
     /**
      * B2C物料可用属性
      */
@@ -80,6 +87,8 @@ public class ProductServiceImpl implements ProductService {
      */
     private final static Integer B2C_PRODUCT_DISABLED = 0;
 
+    private static final Logger log = Logger.getLogger(Logger.class);
+
     /**
      * 保存物料
      *
@@ -377,38 +386,55 @@ public class ProductServiceImpl implements ProductService {
      * 报价之后保存到个人库操作接口
      *
      * @param product 物料信息
+     * @param replaceCmpCode  替代型号
+     * @param replaceBrand  替代品牌
      * @return 处理结果
      */
     @Override
-    public ModelMap saveInquiryProducts(Product product) {
+    public ModelMap saveInquiryProducts(Product product, String replaceCmpCode, String replaceBrand) {
         ModelMap map = new ModelMap();
-        Long userUU = product.getUserUU();
-        if (null == userUU) {
-            map.put("success", false);
-            map.put("message", "新增物料用户UU为空");
-            return map;
-        }
-        SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
-        if (null == product.getCode()) {
-            String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
-            product.setCode(code);
-        }
-        List<Product> existedProds = productDao.findByEnUUAndPCmpCodeAndPBrandEn(product.getEnUU(), product.getpCmpCode(), product.getpBrandEn());
-        if (CollectionUtils.isEmpty(existedProds)) {
-            List<Product> products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
-            while (!CollectionUtils.isEmpty(products)) {
+        if (null == product.getId()) {
+            Long userUU = product.getUserUU();
+            if (null == userUU) {
+                map.put("success", false);
+                map.put("message", "新增物料用户UU为空");
+                return map;
+            }
+            SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
+            if (null == product.getCode()) {
                 String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
                 product.setCode(code);
-                products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
             }
-            product = productDao.save(product);
-            ProductPrivate productPrivate = new ProductPrivate();
-            productPrivate.setB2cEnabled(B2C_PRODUCT_ENABLED);
-            productPrivate.setPrId(product.getId());
-            productPrivateDao.save(productPrivate);
-            matchOne(product, product.getEnUU());
+            List<Product> existedProds = productDao.findByEnUUAndPCmpCodeAndPBrandEn(product.getEnUU(), product.getpCmpCode(), product.getpBrandEn());
+            if (CollectionUtils.isEmpty(existedProds)) {
+                List<Product> products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
+                while (!CollectionUtils.isEmpty(products)) {
+                    String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
+                    product.setCode(code);
+                    products = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
+                }
+                product = productDao.save(product);
+                ProductPrivate productPrivate = new ProductPrivate();
+                productPrivate.setB2cEnabled(B2C_PRODUCT_ENABLED);
+                productPrivate.setPrId(product.getId());
+                productPrivateDao.save(productPrivate);
+                matchOne(product, product.getEnUU());
+                // 如果存在替代型号和替代品牌参数,增加到对应物料的替代物料中
+                addReplaceProduct(product, replaceCmpCode, replaceBrand);
+            } else {
+                product = existedProds.get(0);
+                // 如果存在替代型号和替代品牌参数,增加到对应物料的替代物料中
+                addReplaceProduct(product, replaceCmpCode, replaceBrand);
+                List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
+                if (!CollectionUtils.isEmpty(productUsers)) {
+                    map.put("success", false);
+                    map.put("message", "已存在对应个人产品记录");
+                    return map;
+                }
+            }
         } else {
-            product = existedProds.get(0);
+            // 存在id,直接添加个人库和替代物料处理
+            addReplaceProduct(product, replaceCmpCode, replaceBrand);
             List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
             if (!CollectionUtils.isEmpty(productUsers)) {
                 map.put("success", false);
@@ -416,12 +442,103 @@ public class ProductServiceImpl implements ProductService {
                 return map;
             }
         }
-        ProductUsers productUser = new ProductUsers(product.getEnUU(), userUU, product.getId());
+        ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
         productUsersDao.save(productUser);
         map.put("success", true);
         return map;
     }
 
+    /**
+     * 新增替代物料
+     * @param product  物料
+     * @param replaceCmpCode  替代型号
+     * @param replaceBrand  替代品牌
+     */
+    private void addReplaceProduct(Product product, String replaceCmpCode, String replaceBrand) {
+        if (null != product.getId() && !StringUtils.isEmpty(product.getpCmpCode()) && !StringUtils.isEmpty(product.getpBrandEn())
+                && !StringUtils.isEmpty(replaceCmpCode) && !StringUtils.isEmpty(replaceBrand)) {
+            List<ProductReplace> replaces = productReplaceDao.findByProductIdAndPtrCmpcodeAndPtrBranden(product.getId(), replaceCmpCode, replaceBrand);
+            if (CollectionUtils.isEmpty(replaces)) {
+                ProductReplace replace = new ProductReplace(product);
+                replace.setPtrBranden(replaceBrand);
+                replace.setPtrCmpcode(replaceCmpCode);
+                List<ProductReplace> existedReplace = productReplaceDao.findByProductId(product.getId());
+                replace.setDetno((short) (existedReplace.size() + 1));
+                replace = productReplaceDao.save(replace);
+                log.info("保存替代料,id为" + replace.getId());
+            }
+        }
+    }
+
+    /**
+     * 保存询价单后,批量将询价物料存入个人库接口
+     *
+     * @param products
+     * @return
+     */
+    @Override
+    public ModelMap saveInquiryProductsByBatch(List<Product> products) {
+        List<ProductPrivate> productPrivates = new ArrayList<>();
+        List<ProductUsers> saveProductUsers = new ArrayList<>();
+        List<Product> saveProducts = new ArrayList<>();
+        ModelMap map = new ModelMap();
+        for (Product product : products) {
+            if (null == product.getId()) {
+                if (null != product.getUserUU()) {
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
+                    if (null == product.getCode()) {
+                        String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
+                        product.setCode(code);
+                    }
+                    List<Product> existedProds = productDao.findByEnUUAndPCmpCodeAndPBrandEn(product.getEnUU(), product.getpCmpCode(), product.getpBrandEn());
+                    if (CollectionUtils.isEmpty(existedProds)) {
+                        List<Product> oldProducts = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
+                        while (!CollectionUtils.isEmpty(oldProducts)) {
+                            String code = sdf.format(new Date()) + StringUtil.getRandomString(3);
+                            product.setCode(code);
+                            oldProducts = productDao.findByEnUUAndCode(product.getEnUU(), product.getCode());
+                        }
+                        saveProducts.add(product);
+                    } else {
+                        product = existedProds.get(0);
+                        List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
+                        if (CollectionUtils.isEmpty(productUsers)) {
+                            ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
+                            saveProductUsers.add(productUser);
+                        }
+                    }
+                }
+            } else {
+                List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
+                if (CollectionUtils.isEmpty(productUsers)) {
+                    ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
+                    saveProductUsers.add(productUser);
+                }
+            }
+        }
+        try {
+            saveProducts = productDao.save(saveProducts);
+            for (Product product : saveProducts) {
+                // 添加B2C私有属性
+                ProductPrivate productPrivate = new ProductPrivate();
+                productPrivate.setB2cEnabled(B2C_PRODUCT_ENABLED);
+                productPrivate.setPrId(product.getId());
+                productPrivates.add(productPrivate);
+                // 添加个人库记录
+                ProductUsers productUser = new ProductUsers(product.getEnUU(), product.getUserUU(), product.getId());
+                saveProductUsers.add(productUser);
+            }
+            productPrivateDao.save(productPrivates);
+            productUsersDao.save(saveProductUsers);
+            map.put("success", true);
+        } catch (Exception e) {
+            e.printStackTrace();
+            map.put("success", false);
+            map.put("message", e.getMessage());
+        }
+        return map;
+    }
+
     /**
      * 根据品牌和型号,返回类目
      *