Преглед на файлове

b2b更新物料接口会设置pcmpcode和pbranden;增加单个物料新增及加入个人库接口

dongbw преди 7 години
родител
ревизия
e7471639bf

+ 24 - 0
src/main/java/com/uas/ps/product/controller/ProductController.java

@@ -1,5 +1,6 @@
 package com.uas.ps.product.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.ps.core.logging.BufferedLoggerManager;
 import com.uas.ps.core.util.CollectionUtils;
@@ -498,4 +499,27 @@ public class ProductController {
             logger.log("失败", "单个设置物料买卖属性失败", "物料id:" + id + "类型:" + switchType + ",属性:" + switchStatus,  null, null, null);
         }
     }
+
+    /**
+     * 报价之后保存到个人库操作接口
+     *
+     * @param product 物料信息
+     * @return 处理结果
+     */
+    @HttpLog
+    @RequestMapping(value = "/save/inquiry", method = RequestMethod.POST)
+    @ResponseBody
+    public ModelMap saveInquiryProducts(@RequestBody Product product) {
+        ModelMap map = new ModelMap();
+        try {
+            map = productService.saveInquiryProducts(product);
+            logger.log("成功", "报价之后保存到个人库成功", "物料信息" + JSON.toJSONString(product), null, null, null);
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.log("失败", "报价之后保存到个人库失败", "物料信息" + JSON.toJSONString(product),  null, null, null);
+            map.put("success", false);
+            map.put("message", e.getMessage());
+        }
+        return map;
+    }
 }

+ 12 - 0
src/main/java/com/uas/ps/product/repository/ProductDao.java

@@ -71,6 +71,18 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      */
     List<Product> findByTitleAndCmpCodeAndBrandAndEnUU(String title, String cmpcode, String brand, Long enUU);
 
+    /**
+     * 通过企业UU,规格、品牌(非标准)、型号
+     *
+     * @param enUU 企业UU
+     * @param spec 物料规格
+     * @param cmpCode 规格C
+     * @param brand 品牌
+     * @return
+     */
+    List<Product> findByEnUUAndCmpCodeAndBrandAndSpec(Long enUU, String cmpCode, String brand, String spec);
+
+
     /**
      * 通过企业UU,物料名称、规格、品牌(标准)
      *

+ 15 - 0
src/main/java/com/uas/ps/product/repository/ProductPrivateDao.java

@@ -0,0 +1,15 @@
+package com.uas.ps.product.repository;
+
+import com.uas.ps.entity.ProductPrivate;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 物料商城私有属性
+ *
+ * @author dongbw 2018年4月4日 11:57:12
+ */
+@Repository
+public interface ProductPrivateDao extends JpaRepository<ProductPrivate, Long>, JpaSpecificationExecutor<ProductPrivate> {
+}

+ 8 - 0
src/main/java/com/uas/ps/product/service/ProductService.java

@@ -224,4 +224,12 @@ public interface ProductService {
      * @return
      */
     List<Product> findAll(List<Long> ids);
+
+    /**
+     * 报价之后保存到个人库操作接口
+     *
+     * @param product 物料信息
+     * @return 处理结果
+     */
+    ModelMap saveInquiryProducts(Product product);
 }

+ 88 - 54
src/main/java/com/uas/ps/product/service/impl/ProductServiceImpl.java

@@ -1,10 +1,12 @@
 package com.uas.ps.product.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.uas.platform.core.util.StringUtil;
 import com.uas.ps.brand.entity.BrandInfo;
 import com.uas.ps.component.entity.ComponentInfo;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductMatchResult;
+import com.uas.ps.entity.ProductPrivate;
 import com.uas.ps.entity.ProductUsers;
 import com.uas.ps.entity.Status;
 import com.uas.ps.product.ProductConstant;
@@ -13,6 +15,7 @@ import com.uas.ps.product.entity.Prod;
 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.ProductUsersDao;
 import com.uas.ps.product.service.ProductService;
 import com.uas.ps.product.sync.WaitSyncHelper;
@@ -28,6 +31,7 @@ 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;
@@ -62,6 +66,14 @@ public class ProductServiceImpl implements ProductService {
     @Autowired
     private WaitSyncHelper waitSyncHelper;
 
+    @Autowired
+    private ProductPrivateDao productPrivateDao;
+
+    /**
+     * B2C物料可用属性
+     */
+    private final static Integer B2C_PRODUCT_ENABLED = 1;
+
     /**
      * 保存物料
      *
@@ -221,6 +233,8 @@ public class ProductServiceImpl implements ProductService {
                 existedProd.setCmpCode(product.getCmpCode());
                 existedProd.setUnit(product.getUnit());
                 existedProd.setBrand(product.getBrand());
+                existedProd.setpCmpCode(product.getCmpCode());
+                existedProd.setpBrandEn(product.getBrand());
                 if (null != product.getMinOrder()) {
                     existedProd.setMinOrder(product.getMinOrder());
                 }
@@ -291,6 +305,55 @@ public class ProductServiceImpl implements ProductService {
         return productDao.findAll(ids);
     }
 
+    /**
+     * 报价之后保存到个人库操作接口
+     *
+     * @param product 物料信息
+     * @return 处理结果
+     */
+    @Override
+    public ModelMap saveInquiryProducts(Product product) {
+        ModelMap map = new ModelMap();
+        Long userUU = product.getUserUU();
+        if (null == userUU) {
+            map.put("success", false);
+            map.put("message", "已存在对应个人产品记录");
+            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.findByEnUUAndCmpCodeAndBrandAndSpec(product.getEnUU(), product.getCmpCode(), product.getBrand(), product.getSpec());
+        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());
+        } else {
+            product = existedProds.get(0);
+            List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(product.getEnUU(), product.getUserUU(), product.getId());
+            if (!CollectionUtils.isEmpty(productUsers)) {
+                map.put("success", false);
+                map.put("message", "已存在对应个人产品记录");
+                return map;
+            }
+        }
+        ProductUsers productUser = new ProductUsers(product.getEnUU(), userUU, product.getId());
+        productUsersDao.save(productUser);
+        map.put("success", true);
+        return map;
+    }
+
     /**
      * 更新物料信息
      * @param data 物料资料
@@ -331,7 +394,7 @@ public class ProductServiceImpl implements ProductService {
     @Override
     public void updateExisted(List<Product> updateList) {
         jdbcTemplate.batchUpdate("update products set pr_enuu=?,pr_useruu=?,pr_code=?,pr_title=?,pr_spec=?,pr_cmpcode=?,pr_brand=?," +
-                        "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=? " +
+                        "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=?,pr_pcmpcode=?,pr_pbranden=? " +
                         "where pr_id=?",
                 updateList, updateList.size(), new ParameterizedPreparedStatementSetter<Product>() {
                     @Override
@@ -351,7 +414,9 @@ public class ProductServiceImpl implements ProductService {
                         ps.setObject(13, product.getIsSale());
                         ps.setObject(14, product.getIsPurchase());
                         ps.setObject(15, product.getSourceApp());
-                        ps.setLong(16, product.getId());
+                        ps.setObject(16, product.getCmpCode());
+                        ps.setObject(17, product.getBrand());
+                        ps.setLong(18, product.getId());
                     }
                 });
     }
@@ -364,9 +429,9 @@ public class ProductServiceImpl implements ProductService {
     @Override
     public List<Long> insertAndReturnKey(final List<Product> newList) {
         return jdbcTemplate.batchInsert("insert into products(pr_enuu,pr_useruu,pr_code,pr_title,pr_spec,pr_cmpcode,pr_brand," +
-                "pr_unit,pr_minorder,pr_minpack,pr_leadtime,pr_ltinstock,pr_issale,pr_ispurchase,pr_sourceapp) " +
-                "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) on duplicate key update pr_useruu=?,pr_title=?,pr_spec=?,pr_cmpcode=?,pr_brand=?," +
-                "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=?", new BatchPreparedStatementSetter() {
+                "pr_unit,pr_minorder,pr_minpack,pr_leadtime,pr_ltinstock,pr_issale,pr_ispurchase,pr_sourceapp,pr_pcmpcode,pr_pbranden) " +
+                "values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) on duplicate key update pr_useruu=?,pr_title=?,pr_spec=?,pr_cmpcode=?,pr_brand=?," +
+                "pr_unit=?,pr_minorder=?,pr_minpack=?,pr_leadtime=?,pr_ltinstock=?,pr_issale=?,pr_ispurchase=?,pr_sourceapp=?,pr_pcmpcode=?,pr_pbranden=?", new BatchPreparedStatementSetter() {
             @Override
             public void setValues(PreparedStatement ps, int i) throws SQLException {
                 Product product = newList.get(i);
@@ -385,19 +450,24 @@ public class ProductServiceImpl implements ProductService {
                 ps.setObject(13, product.getIsSale());
                 ps.setObject(14, product.getIsPurchase());
                 ps.setObject(15, product.getSourceApp());
-                ps.setLong(16, product.getUserUU());
-                ps.setObject(17, product.getTitle());
-                ps.setObject(18, product.getSpec());
-                ps.setObject(19, product.getCmpCode());
-                ps.setObject(20, product.getBrand());
-                ps.setObject(21, product.getUnit());
-                ps.setObject(22, product.getMinOrder());
-                ps.setObject(23, product.getMinPack());
-                ps.setObject(24, product.getLeadTime());
-                ps.setObject(25, product.getLtinstock());
-                ps.setObject(26, product.getIsSale());
-                ps.setObject(27, product.getIsPurchase());
-                ps.setObject(28, product.getSourceApp());
+                ps.setObject(16, product.getCmpCode());
+                ps.setObject(17, product.getBrand());
+
+                ps.setLong(18, product.getUserUU());
+                ps.setObject(19, product.getTitle());
+                ps.setObject(20, product.getSpec());
+                ps.setObject(21, product.getCmpCode());
+                ps.setObject(22, product.getBrand());
+                ps.setObject(23, product.getUnit());
+                ps.setObject(24, product.getMinOrder());
+                ps.setObject(25, product.getMinPack());
+                ps.setObject(26, product.getLeadTime());
+                ps.setObject(27, product.getLtinstock());
+                ps.setObject(28, product.getIsSale());
+                ps.setObject(29, product.getIsPurchase());
+                ps.setObject(30, product.getSourceApp());
+                ps.setObject(31, product.getCmpCode());
+                ps.setObject(32, product.getBrand());
             }
 
             @Override
@@ -407,42 +477,6 @@ public class ProductServiceImpl implements ProductService {
         });
     }
 
-
-//    /**
-//     * 新增物料上传 -- 只能返回保存数量,得不到已保存物料信息,无法满足个人库新增需要
-//     * @param products 新增物料列表
-//     * @return
-//     */
-//    private Collection<? extends Product> saveNewProduct(List<Product> products) {
-//        int[][] i = jdbcTemplate.batchUpdate("INSERT INTO products(pr_title,pr_code,pr_spec,pr_cmpcode,pr_brand,pr_unit,pr_enuu,pr_useruu," +
-//                        "pr_minpack,pr_minorder,pr_leadtime,pr_ltinstock,pr_erpdate,pr_sourceapp,pr_issale,pr_ispurchase) SELECT ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? FROM DUAL " +
-//                        "WHERE NOT EXISTS(SELECT pr_id FROM products WHERE pr_enuu = ? and pr_code = ?);",
-//                products, products.size(), new ParameterizedPreparedStatementSetter<Product>() {
-//                    @Override
-//                    public void setValues(PreparedStatement ps, Product t) throws SQLException {
-//                        ps.setObject(1, t.getTitle());
-//                        ps.setObject(2, t.getCode());
-//                        ps.setObject(3, t.getSpec());
-//                        ps.setObject(4, t.getCmpCode());
-//                        ps.setObject(5, t.getBrand());
-//                        ps.setObject(6, t.getUnit());
-//                        ps.setObject(7, t.getEnUU());
-//                        ps.setObject(8, t.getUserUU());
-//                        ps.setObject(9, t.getMinPack());
-//                        ps.setObject(10, t.getMinOrder());
-//                        ps.setObject(11, t.getLeadTime());
-//                        ps.setObject(12, t.getLtinstock());
-//                        ps.setObject(13, new Date());
-//                        ps.setObject(14, t.getSourceApp());
-//                        ps.setObject(15, t.getIsSale());
-//                        ps.setObject(16, t.getIsPurchase());
-//                        ps.setObject(17, t.getEnUU());
-//                        ps.setObject(18, t.getCode());
-//                    }
-//                });
-//        return new ArrayList<>();
-//    }
-
     /**
      * 更新个人产品库
      * @param products 物料信息

+ 1 - 1
src/main/resources/config/application-test.properties

@@ -1,4 +1,4 @@
-datasource.url=jdbc:mysql://192.168.253.6:3306/mall_test_dev?characterEncoding=utf-8&useSSL=false
+datasource.url=jdbc:mysql://192.168.253.12:3306/mall_test_dev?characterEncoding=utf-8&useSSL=false
 datasource.username=root
 datasource.password=select111***
 datasource.driverClassName=com.mysql.jdbc.Driver