Browse Source

新增加B2B物料销售开关接口

dongbw 8 years ago
parent
commit
d1cd55854d

+ 5 - 0
pom.xml

@@ -86,6 +86,11 @@
             <artifactId>jxls-reader</artifactId>
             <version>1.0.4</version>
         </dependency>
+        <dependency>
+            <groupId>com.uas.platform</groupId>
+            <artifactId>platform-core</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 63 - 57
src/main/java/com/uas/ps/product/controller/ProductController.java

@@ -4,22 +4,20 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.ps.core.util.CollectionUtils;
 import com.uas.ps.entity.Product;
+import com.uas.ps.entity.ProductMatchResult;
 import com.uas.ps.entity.Status;
-import com.uas.ps.product.entity.FileUpload;
 import com.uas.ps.product.entity.Prod;
 import com.uas.ps.product.entity.ProductSaler;
-import com.uas.ps.product.exception.IllegalOperatorException;
 import com.uas.ps.product.service.ProductService;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
+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.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.ArrayList;
@@ -31,7 +29,7 @@ import java.util.List;
  * @author sunyj
  * @since 2018/1/6 16:49
  */
-@Controller
+@RestController
 @RequestMapping("/product")
 public class ProductController {
 
@@ -50,7 +48,7 @@ public class ProductController {
      * @throws UnsupportedEncodingException
      */
     @RequestMapping(value = "/erp/save", method = RequestMethod.POST)
-    public void saveProducts(@RequestParam("data") String data, @RequestParam("enUU") Long enUU) throws UnsupportedEncodingException {
+    public void saveProducts(@RequestParam("data") String data, Long enUU) throws UnsupportedEncodingException {
         String jsonStr = URLDecoder.decode(data, "UTF-8");
         List<Prod> prods = JSONObject.parseArray(jsonStr, Prod.class);
         productService.save(productService.convertProduct(prods, enUU));
@@ -82,7 +80,7 @@ public class ProductController {
      */
     @RequestMapping(value = "/cycleupdate", method = RequestMethod.POST)
     @ResponseBody
-    public void updateProducts(@RequestParam("data") String data, @RequestParam("enUU") Long enUU) throws UnsupportedEncodingException {
+    public void updateProducts(@RequestParam("data") String data, Long enUU) throws UnsupportedEncodingException {
         String jsonStr = URLDecoder.decode(data, "UTF-8");
         List<Prod> prods = JSONObject.parseArray(jsonStr, Prod.class);
         productService.save(productService.convertProduct(prods, enUU));
@@ -125,20 +123,6 @@ public class ProductController {
 //        logger.log(enUU, userUU, user.getIp(), "物料资料", message, prods.size());
     }
 
-    /**
-     * 一键匹配
-     *
-     * @param enUU 企业UU
-     * @param userUU 用户UU
-     * @param type 匹配类型(在B2B中为all(全部)、sale(销售)、purc(采购))
-     * @return
-     */
-    @RequestMapping(value = "/match", method = RequestMethod.POST)
-    @ResponseBody
-    public ModelMap match(@RequestParam Long enUU, @RequestParam Long userUU, @RequestParam String type) {
-        return productService.match(enUU, userUU, type);
-    }
-
     /**
      * 商城一键匹配
      * @param json
@@ -213,7 +197,7 @@ public class ProductController {
      */
     @RequestMapping(value = "/backtouas", method = RequestMethod.GET)
     @ResponseBody
-    public List<Prod> getProds(@RequestParam Long enUU) {
+    public List<Prod> getProds(Long enUU) {
         List<Prod> prods = new ArrayList<Prod>();
         List<Product> products = productService.findByEnUUAndSourceAppAndDownloadStatus(enUU, "ERP", Status.NOT_UPLOAD.value());
         if (!CollectionUtils.isEmpty(products)) {
@@ -275,37 +259,59 @@ public class ProductController {
     }
 
     /**
-     * 通过excel批量导入物料
+     * 根据id删除物料匹配结果和个人物料(子应用禁用物料时调用)
      *
-     * @param data excel文件及企业uu与用户uu(uploadItem, enUU, userUU)
-     * @return
+     * @author dongbw
+     * @date 2018-01-23 19:23
+     * @param id 物料id
+     * @throws UnsupportedEncodingException
      */
-    @RequestMapping(value = "/import/excel", method = RequestMethod.POST)
-    public ModelMap releaseByExcel(@RequestParam("data") String data) throws UnsupportedEncodingException {
-        String json = URLDecoder.decode(data, "utf-8");
-        JSONObject jsonObject = JSONObject.parseObject(json, JSONObject.class);
-        FileUpload uploadItem = JSON.parseObject(String.valueOf(jsonObject.get("uploadItem")), FileUpload.class);
-        Long enUU = (Long) jsonObject.get("enUU");
-        Long userUU = (Long) jsonObject.get("userUU");
-        ModelMap map = new ModelMap();
-        String fileName = uploadItem.getFile().getOriginalFilename();
-        String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
-        InputStream is = null;
-        Workbook workbook = null;
-        try {
-            is = uploadItem.getFile().getInputStream();
-            if ("xls".equals(suffix)) {
-                workbook = new HSSFWorkbook(is);
-            } else if ("xlsx".equals(suffix)) {
-                workbook = new XSSFWorkbook(is);
-            } else {
-                throw new IllegalOperatorException("文件格不正确,请上传.xls或.xlsx的文件");
-            }
-            map = productService.releaseByWorkbook(workbook, enUU, userUU);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-//        logger.log("商品批次", "[" + userUU + "]通过excel导入了物料,数量为" + map.size());
-        return map;
+    @RequestMapping(value = "/matchResultAndProductUser/delete", method = RequestMethod.POST)
+    @ResponseBody
+    public void deleteMatchResultAndProductUser(@RequestParam("id") Long id) throws UnsupportedEncodingException {
+        productService.deleteMatchResultAndProductUser(id);
+//        logger.log("物料资料", "ERP取消个人物料同步到公共物料库", productSalers.size());
+    }
+
+    /**
+     * 一键开启/关闭 销售/采购
+     *
+     * @param enUU 企业UU
+     * @param switchType  开关类型(销售/采购)  sale or purc
+     * @param switchStatus 开关状态 1 或 0
+     */
+    @RequestMapping(value = "/saleAndPurchase/edit/toggle", method = RequestMethod.POST)
+    @ResponseBody
+    public void switchProductByEnUU(@RequestParam("enUU") Long enUU,
+                              @RequestParam("switchType") String switchType,
+                              @RequestParam("switchStatus") Integer switchStatus) {
+        productService.switchProductByEnuuAndTypeAndStatus(enUU, switchType, switchStatus);
+    }
+
+    /**
+     * 单个开启/关闭 销售/采购
+     *
+     * @param id 物料id
+     * @param switchType  开关类型(销售/采购)  sale or purc
+     * @param switchStatus 开关状态 1 或 0
+     */
+    @RequestMapping(value = "/edit/toggle/one", method = RequestMethod.POST)
+    @ResponseBody
+    public void switchProductById(@RequestParam("id") Long id,
+                              @RequestParam("switchType") String switchType,
+                              @RequestParam("switchStatus") Integer switchStatus) {
+        productService.switchProductByIdAndTypeAndStatus(id, switchType, switchStatus);
+    }
+
+    /**
+     * 保存单个物料的匹配结果
+     *
+     * @param data 匹配结果List的JSON串
+     */
+    @RequestMapping(value = "/matchResult/save", method = RequestMethod.POST)
+    @ResponseBody
+    public void saveProductMatchResult(@RequestParam("data") String data) throws Exception {
+        List<ProductMatchResult> results = JSON.parseArray(URLDecoder.decode(data, "utf-8"), ProductMatchResult.class);
+        productService.saveMatchResults(results);
     }
 }

+ 2 - 1
src/main/java/com/uas/ps/product/controller/ProductUsersController.java

@@ -47,6 +47,7 @@ public class ProductUsersController {
         List<ProductUsers> productUsers = JSONObject.parseArray(json, ProductUsers.class);
         productUsersService.save(productUsers);
         ModelMap map = new ModelMap();
+        map.put("success", "true");
 //        logger.log("商品批次", "[" + SystemSession.getUser().getUserName() + "]通过excel导入了个人物料,数量为" + map.size());
         return map;
     }
@@ -120,7 +121,7 @@ public class ProductUsersController {
     }
 
     /**
-     * 通过id删除
+     * 通过id删除(批量)
      *
      * @param ids 个人物料信息的ids
      * @return

+ 50 - 1
src/main/java/com/uas/ps/product/repository/ProductDao.java

@@ -1,11 +1,14 @@
 package com.uas.ps.product.repository;
 
 import com.uas.ps.entity.Product;
-import com.uas.ps.product.entity.Prod;
 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;
 
+import javax.transaction.Transactional;
 import java.util.List;
 
 /**
@@ -80,6 +83,52 @@ public interface ProductDao extends JpaSpecificationExecutor<Product>, JpaReposi
      */
     List<Product> findProductByPCmpCodeAndPBrandEnAndEnUU(String pcmpcode, String pbranden, Long enUU);
 
+    /**
+     * 根据enUU和cmpCode获取其他企业相同物料id
+     * @param enUU 企业UU
+     * @param cmpCode 物料原厂型号
+     * @return
+     */
+    @Query("select p.id from Product p where p.cmpCode = :cmpCode and p.enUU <> :enUU")
+    List<Long> getSameProdIdsByEnUUAndCmpCode(@Param("enUU") Long enUU, @Param("cmpCode") String cmpCode);
+
+    /**
+     * 更新销售状态(企业)
+     * @param switchStatus 开关状态 1 or 0
+     */
+    @Transactional
+    @Modifying
+    @Query("update Product p set p.isSale = :switchStatus where p.enUU = :enUU")
+    void updateSaleStatusByEnUU(@Param("enUU") Long enUU, @Param("switchStatus") Integer switchStatus);
+
+    /**
+     * 更新采购状态(企业)
+     * @param switchStatus 开关状态 1 or 0
+     */
+    @Transactional
+    @Modifying
+    @Query("update Product p set p.isPurchase = :switchStatus where p.enUU = :enUU")
+    void updatePurchaseStatusByEnUU(@Param("enUU") Long enUU, @Param("switchStatus") Integer switchStatus);
+
+    /**
+     * 更新销售状态(单个)
+     * @param switchStatus 开关状态 1 or 0
+     */
+    @Transactional
+    @Modifying
+    @Query("update Product p set p.isSale = :switchStatus where p.id = :id")
+    void updateSaleStatusById(@Param("id") Long id, @Param("switchStatus") Integer switchStatus);
+
+
+    /**
+     * 更新采购状态(单个)
+     * @param switchStatus 开关状态 1 or 0
+     */
+    @Transactional
+    @Modifying
+    @Query("update Product p set p.isPurchase = :switchStatus where p.id = :id")
+    void updatePurchaseStatusById(@Param("id") Long id, @Param("switchStatus") Integer switchStatus);
+
 //    /**
 //     * 通过uu查询非标准器件进行存储
 //     *

+ 9 - 0
src/main/java/com/uas/ps/product/repository/ProductMatchResultDao.java

@@ -6,6 +6,8 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 /**
  * @author sunyj
  * @since 2018/1/9 15:11
@@ -19,4 +21,11 @@ public interface ProductMatchResultDao extends JpaSpecificationExecutor<ProductM
      */
     @Modifying
     void deleteByEnUU(Long enUU);
+
+    /**
+     * 根据物料id查找所有匹配结果
+     * @param id
+     * @return
+     */
+    List<ProductMatchResult> findByProductId(Long id);
 }

+ 7 - 0
src/main/java/com/uas/ps/product/repository/ProductUsersDao.java

@@ -72,4 +72,11 @@ public interface ProductUsersDao extends JpaSpecificationExecutor<ProductUsers>,
      */
     @Procedure(procedureName = "prid_covertouser")
     void coverToUserByPrid(Long prid, Long enuu, Long useruu);
+
+    /**
+     * 根据物料id查找个人物料库记录
+     * @param id
+     * @return
+     */
+    List<ProductUsers> findByPrid(Long id);
 }

+ 29 - 22
src/main/java/com/uas/ps/product/service/ProductService.java

@@ -1,11 +1,10 @@
 package com.uas.ps.product.service;
 
 import com.uas.ps.entity.Product;
+import com.uas.ps.entity.ProductMatchResult;
 import com.uas.ps.product.entity.Prod;
 import com.uas.ps.product.entity.ProductSaler;
-import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -49,16 +48,6 @@ public interface ProductService {
      */
     Product convertProductOne(Prod prod, Long enUU);
 
-    /**
-     * 通过 enUU 查询非标准器件进行存储
-     *
-     * @param enUU 企业UU
-     * @param userUU 用户UU
-     * @param type 匹配类型
-     * @return
-     */
-    ModelMap match(Long enUU, Long userUU, String type);
-
     /**
      * 通过 enUU 查询非标准器件进行匹配
      *
@@ -131,16 +120,6 @@ public interface ProductService {
      */
     void quitProdSaler(List<ProductSaler> productSalers);
 
-    /**
-     * 批量导入物料信息
-     *
-     * @param workbook excel解析的物料信息
-     * @param enUU 企业UU
-     * @param userUU 用户UU
-     * @return
-     */
-    ModelMap releaseByWorkbook(Workbook workbook, Long enUU, Long userUU);
-
     /**
      * 匹配选中的物料
      * @param enUU
@@ -148,4 +127,32 @@ public interface ProductService {
      * @return
      */
     ModelMap batchMatch(Long enUU, List<Long> idList);
+
+    /**
+     * 根据id删除匹配结果和私人物料
+     * @param id 物料id
+     */
+    void deleteMatchResultAndProductUser(Long id);
+
+    /**
+     * 根据企业UU 开关状态,开关类型一键操作
+     * @param enUU 企业UU
+     * @param switchType 开关类型 purc or sale
+     * @param switchStatus 开关状态 1 or 0
+     */
+    void switchProductByEnuuAndTypeAndStatus(Long enUU, String switchType, Integer switchStatus);
+
+    /**
+     * 根据物料id 开关状态,开关类型一键操作
+     * @param id 物料id
+     * @param switchType 开关类型 purc or sale
+     * @param switchStatus 开关状态 1 or 0
+     */
+    void switchProductByIdAndTypeAndStatus(Long id, String switchType, Integer switchStatus);
+
+    /**
+     * 保存匹配结果
+     * @param results 匹配结果
+     */
+    void saveMatchResults(List<ProductMatchResult> results);
 }

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

@@ -73,4 +73,12 @@ public interface ProductUsersService {
      * @param useruu
      */
     void coverToMyProduct(Long id, Long enuu, Long useruu, String method);
+
+    /**
+     * 根据企业UU和物料原厂型号cmpCode获取个人产品库信息
+     * @param enUU 企业UU
+     * @param cmpCode 物料原厂型号
+     * @return
+     */
+    List<ProductUsers> getProductUsersByEnUUAndCmpCode(Long enUU, String cmpCode);
 }

+ 68 - 156
src/main/java/com/uas/ps/product/service/impl/ProductServiceImpl.java

@@ -8,7 +8,6 @@ import com.uas.ps.entity.ProductMatchResult;
 import com.uas.ps.entity.ProductUsers;
 import com.uas.ps.entity.Status;
 import com.uas.ps.product.ProductConstant;
-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.repository.ProductDao;
@@ -18,18 +17,17 @@ import com.uas.ps.product.repository.ProductUsersDao;
 import com.uas.ps.product.service.ProductService;
 import com.uas.ps.properties.UrlProperties;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.client.RestTemplate;
 
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * @author sunyj
@@ -111,12 +109,6 @@ public class ProductServiceImpl implements ProductService {
         }
     }
 
-    @Override
-    public ModelMap match(Long enUU, Long userUU, String matchtype) {
-        ModelMap map = new ModelMap();
-        return map;
-    }
-
     @Override
     @Transactional
     public ModelMap matchB2cAll(Long enUU) {
@@ -149,6 +141,69 @@ public class ProductServiceImpl implements ProductService {
         return map;
     }
 
+    /**
+     * 根据id删除匹配结果
+     *
+     * @param id 匹配结果id
+     */
+    @Override
+    public void deleteMatchResultAndProductUser(Long id) {
+        if (productDao.exists(id)) {
+            // 先删除匹配结果的id
+            List<ProductMatchResult> results = productMatchResultDao.findByProductId(id);
+            if (!CollectionUtils.isEmpty(results)) {
+                productMatchResultDao.delete(results);
+            }
+            // 需要删除个人物料库的数据
+            List<ProductUsers> productUsers = productUsersDao.findByPrid(id);
+            if (!CollectionUtils.isEmpty(productUsers)) {
+                productUsersDao.delete(productUsers);
+            }
+        }
+    }
+
+    /**
+     * 根据企业UU 开关状态,开关类型一键操作
+     *
+     * @param enUU         企业UU
+     * @param switchType   开关类型 purc or sale
+     * @param switchStatus 开关状态 1 or 0
+     */
+    @Override
+    public void switchProductByEnuuAndTypeAndStatus(Long enUU, String switchType, Integer switchStatus) {
+        if ("sale".equals(switchType)) {
+            productDao.updateSaleStatusByEnUU(enUU, switchStatus);
+        } else if ("purc".equals(switchType)) {
+            productDao.updatePurchaseStatusByEnUU(enUU, switchStatus);
+        }
+    }
+
+    /**
+     * 根据物料id 开关状态,开关类型一键操作
+     *
+     * @param id           物料id
+     * @param switchType   开关类型 purc or sale
+     * @param switchStatus 开关状态 1 or 0
+     */
+    @Override
+    public void switchProductByIdAndTypeAndStatus(Long id, String switchType, Integer switchStatus) {
+        if ("sale".equals(switchType)) {
+            productDao.updateSaleStatusById(id, switchStatus);
+        } else if ("purc".equals(switchType)) {
+            productDao.updatePurchaseStatusById(id, switchStatus);
+        }
+    }
+
+    /**
+     * 保存匹配结果
+     *
+     * @param results 匹配结果
+     */
+    @Override
+    public void saveMatchResults(List<ProductMatchResult> results) {
+        productMatchResultDao.save(results);
+    }
+
     /**
      * 单个物料匹配
      * @param   product
@@ -353,147 +408,4 @@ public class ProductServiceImpl implements ProductService {
             }
         }
     }
-
-    /**
-     * 批量导入物料信息
-     *
-     * @param workbook excel解析的物料信息
-     * @param enUU     企业UU
-     * @param userUU   用户UU
-     * @return
-     */
-    @Override
-    public ModelMap releaseByWorkbook(Workbook workbook, Long enUU, Long userUU) {
-        ModelMap modelMap = new ModelMap();
-        List<String> alters = new ArrayList<>();
-        List<String> infos = new ArrayList<>();
-        List<Product> products = new ArrayList<>();
-        List<Product> productsInfo = new ArrayList<>();
-        Sheet sheet = workbook.getSheetAt(0);
-        int rowNum = sheet.getLastRowNum();
-        Row headerRow = sheet.getRow(0);
-        int total = 0;
-        if (headerRow != null) {
-            for (int r = 3; r <= rowNum; r++) {
-                Row row = sheet.getRow(r);
-                if (row != null && row.getCell(0) != null && row.getCell(0).getCellType() != Cell.CELL_TYPE_BLANK) {
-                    total++;
-                    Product product = new Product();
-
-                    // 物料编号
-                    if (row.getCell(0) != null) {
-                        row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
-                        product.setCode(row.getCell(0).getStringCellValue().trim());
-                    }
-
-                    // 物料名称
-                    if (row.getCell(1) != null) {
-                        row.getCell(1).setCellType(Cell.CELL_TYPE_STRING);
-                        product.setTitle(row.getCell(1).getStringCellValue().trim());
-                    }
-
-                    // 原厂型号
-                    if (row.getCell(2) != null) {
-                        row.getCell(2).setCellType(Cell.CELL_TYPE_STRING);
-                        product.setCmpCode(row.getCell(2).getStringCellValue().trim());
-                        if (product.getCode() == null) {
-                            // 生成随机物料编码
-                            SimpleDateFormat sdf = new SimpleDateFormat("mmsssss");
-                            String code = enUU + sdf.format(new Date());
-                            product.setCode(code);
-                        }
-                    }
-
-                    // 品牌
-                    if (row.getCell(3) != null) {
-                        row.getCell(3).setCellType(Cell.CELL_TYPE_STRING);
-                        product.setBrand(row.getCell(3).getStringCellValue().trim());
-                    }
-
-                    // 单位
-                    if (row.getCell(4) != null) {
-                        row.getCell(4).setCellType(Cell.CELL_TYPE_STRING);
-                        product.setUnit(row.getCell(4).getStringCellValue().trim());
-                    }
-
-                    // 最小包装量
-                    if (row.getCell(5) != null) {
-                        row.getCell(5).setCellType(Cell.CELL_TYPE_STRING);
-                        if (null != row.getCell(5).getStringCellValue()
-                                && !row.getCell(5).getStringCellValue().trim().equals("")) {
-                            product.setMinPack(Double.valueOf(row.getCell(5).getStringCellValue()));
-                        }
-                    }
-                    // 最小订购量
-                    if (row.getCell(6) != null) {
-                        row.getCell(6).setCellType(Cell.CELL_TYPE_STRING);
-                        if (null != row.getCell(6).getStringCellValue().trim()
-                                && !row.getCell(6).getStringCellValue().trim().equals("")) {
-                            product.setMinOrder(Double.valueOf(row.getCell(6).getStringCellValue()));
-                        }
-                    }
-                    // 交货周期
-                    if (row.getCell(7) != null) {
-                        row.getCell(7).setCellType(Cell.CELL_TYPE_STRING);
-                        if (null != row.getCell(7).getStringCellValue().trim()
-                                && !row.getCell(7).getStringCellValue().trim().equals("")) {
-                            product.setLeadTime(Double.valueOf(row.getCell(7).getStringCellValue()));
-                        }
-                    }
-                    // 交货提前期
-                    if (row.getCell(8) != null) {
-                        row.getCell(8).setCellType(Cell.CELL_TYPE_STRING);
-                        if (null != row.getCell(8).getStringCellValue().trim()
-                                && !row.getCell(8).getStringCellValue().trim().equals("")) {
-                            product.setLtinstock(Double.valueOf(row.getCell(8).getStringCellValue()));
-                        }
-                    }
-                    // 判断是否存在
-                    List<Product> prods = productDao.findByEnUUAndCode(enUU, product.getCode());
-                    if (org.apache.commons.collections.CollectionUtils.isEmpty(prods)) {
-                    } else {
-                        Product oldProd = prods.get(0);
-                        if (oldProd.getIsSale() == null) {
-                            oldProd.setIsSale(Constant.YES);
-                            productDao.save(oldProd);
-                        }
-                        alters.add(product.getCode());
-                        product.setCode(null);
-                    }
-                    product.setEnUU(enUU);
-                    product.setUserUU(userUU);
-                    product.setSourceApp("B2B");
-                    product.setIsPubsale(Constant.NO);
-                    product.setIsShow(Constant.NO);
-                    product.setIsSale(Constant.YES);
-                    if (alters.size() > 0) {
-                        modelMap.put("alters", alters);
-                    }
-                    if (infos.size() > 0) {
-                        modelMap.put("infos", infos);
-                    }
-                    if (product.getCode() != null) {
-                        products.add(product);
-                    }
-                    if (product.getStandard() == null) {
-                        product.setStandard(Constant.NO);
-                    }
-                    product.setErpDate(new Date());
-                    productsInfo.add(product);
-                    modelMap.put("total", total);
-                    modelMap.put("products", productsInfo);
-                }
-            }
-            if (!org.apache.commons.collections.CollectionUtils.isEmpty(products)) {
-                try {
-                    products = productDao.save(products);
-//					saveUserOrders(products);
-                    modelMap.put("success", products.size());
-                } catch (Exception e) {
-                    modelMap.put("error", "存在编号相同的产品");
-                }
-            }
-        }
-        return modelMap;
-    }
 }

+ 45 - 15
src/main/java/com/uas/ps/product/service/impl/ProductUsersServiceImpl.java

@@ -1,5 +1,8 @@
 package com.uas.ps.product.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.uas.platform.core.persistence.criteria.PredicateFactory;
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import com.uas.ps.core.util.CollectionUtils;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductUsers;
@@ -13,9 +16,14 @@ import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -275,22 +283,22 @@ public class ProductUsersServiceImpl implements ProductUsersService {
     public ModelMap coverToUserProdByIds(String ids, Long userUU, Long enUU) {
         ids = ids.replace("["," ");
         ids = ids.replace("]"," ");
-        Integer count = productUsersDao.coverToUserProdByIds(ids, userUU, enUU);
-//        // 存储过程改为代码实现
-//        List<Long> prIds = JSON.parseArray(ids, Long.class);
-//        // 保存的个人产品
-//        List<ProductUsers> productUsersList = new ArrayList<>();
-//        for (Long prId : prIds) {
-//            List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(enUU, userUU, prId);
-//            // 不存在才保存
-//            if (CollectionUtils.isEmpty(productUsers)) {
-//                ProductUsers productUser = new ProductUsers(enUU, userUU, prId);
-//                productUsersList.add(productUser);
-//            }
-//        }
-//        productUsersList = productUsersDao.save(productUsersList);
+//        Integer count = productUsersDao.coverToUserProdByIds(ids, userUU, enUU);
+        // 存储过程改为代码实现
+        List<Long> prIds = JSON.parseArray(ids, Long.class);
+        // 保存的个人产品
+        List<ProductUsers> productUsersList = new ArrayList<>();
+        for (Long prId : prIds) {
+            List<ProductUsers> productUsers = productUsersDao.findByEnuuAndUseruuAndPrid(enUU, userUU, prId);
+            // 不存在才保存
+            if (CollectionUtils.isEmpty(productUsers)) {
+                ProductUsers productUser = new ProductUsers(enUU, userUU, prId);
+                productUsersList.add(productUser);
+            }
+        }
+        productUsersList = productUsersDao.save(productUsersList);
 //        logger.log("我的产品库", "新增了我产品信息", "size:" + count);
-        return new ModelMap("count", count);
+        return new ModelMap("count", productUsersList.size());
     }
 
     @Override
@@ -346,4 +354,26 @@ public class ProductUsersServiceImpl implements ProductUsersService {
             }
         }).run();
     }
+
+    /**
+     * 根据企业UU和物料原厂型号cmpCode获取个人产品库信息
+     *
+     * @param enUU    企业UU
+     * @param cmpCode 物料原厂型号
+     * @return
+     */
+    @Override
+    public List<ProductUsers> getProductUsersByEnUUAndCmpCode(final Long enUU, final String cmpCode) {
+        // 获取非本企业,但原厂型号相同的物料id List
+        final List<Long> prodIds = productDao.getSameProdIdsByEnUUAndCmpCode(enUU, cmpCode);
+        return productUsersDao.findAll(new Specification<ProductUsers>() {
+            @Override
+            public Predicate toPredicate(Root<ProductUsers> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
+                final PredicateFactory<Product> factory = new PredicateFactory<>();
+                factory.add(PredicateUtils.ne("enuu", enUU, false));
+                factory.add(PredicateUtils.in("prid", prodIds, false));
+                return null;
+            }
+        });
+    }
 }