Parcourir la source

UAS个人物料上传方法修改;

dongbw il y a 8 ans
Parent
commit
b770298222

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

@@ -93,7 +93,7 @@ public class ProductController {
      */
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     @ResponseBody
-    public List<Long> updateProdInfo(@RequestBody String data) throws UnsupportedEncodingException {
+    public List<Long> updateProdInfo(@RequestBody String data, String sourceApp) throws UnsupportedEncodingException {
         // TODO 物料信息中的企业UU和用户UU,需要在调用接口之前设置。有id为更新,无id为新增
         List<Product> productInfo = JSONObject.parseArray(data, Product.class);
         List<Long> resultProducts = new ArrayList<>();

+ 9 - 47
src/main/java/com/uas/ps/product/controller/ProductUsersController.java

@@ -3,20 +3,17 @@ package com.uas.ps.product.controller;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.ps.entity.Product;
-import com.uas.ps.entity.ProductUsers;
-import com.uas.ps.product.entity.FileUpload;
-import com.uas.ps.product.exception.IllegalOperatorException;
+import com.uas.ps.product.entity.ProductSaler;
 import com.uas.ps.product.service.ProductService;
 import com.uas.ps.product.service.ProductUsersService;
-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.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.RestController;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.ArrayList;
@@ -46,8 +43,8 @@ public class ProductUsersController {
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     public ModelMap saveProductUsers(@RequestParam("data") String data) throws UnsupportedEncodingException {
         String json = URLDecoder.decode(data, "utf-8");
-        List<ProductUsers> productUsers = JSONObject.parseArray(json, ProductUsers.class);
-        productUsersService.save(productUsers);
+        List<ProductSaler> productSalers = JSONObject.parseArray(json, ProductSaler.class);
+        productUsersService.save(productUsersService.convertProductUsers(productSalers));
         ModelMap map = new ModelMap();
         map.put("success", "true");
 //        logger.log("商品批次", "[" + SystemSession.getUser().getUserName() + "]通过excel导入了个人物料,数量为" + map.size());
@@ -78,41 +75,6 @@ public class ProductUsersController {
         return resultProducts;
     }
 
-    /**
-     * 通过excel批量导入个人物料
-     *
-     * @param data excel文件及企业uu与用户uu(uploadItem, enUU, userUU)
-     * @return
-     */
-    @RequestMapping(value = "/edit/release/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 = productUsersService.releaseByWorkbook(workbook, enUU, userUU);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-//        logger.log("商品批次", "[" + SystemSession.getUser().getUserName() + "]通过excel导入了个人物料,数量为" + map.size());
-        return map;
-    }
-
     /**
      * 新增个人物料
      *
@@ -172,7 +134,7 @@ public class ProductUsersController {
      * @param data (ids 物料ids, userUU 当前用户UU, enUU 当前企业UU)
      */
     @RequestMapping(value = "/coverToUserByIds", method = RequestMethod.POST)
-    public ModelMap coverToUserByIds(@RequestParam("data") String data) throws UnsupportedEncodingException {
+    public Integer coverToUserByIds(@RequestParam("data") String data) throws UnsupportedEncodingException {
         String json = URLDecoder.decode(data, "utf-8");
         JSONObject jsonObject = JSON.parseObject(json, JSONObject.class);
         String ids = (String) jsonObject.get("ids");

+ 18 - 0
src/main/java/com/uas/ps/product/entity/ProductSaler.java

@@ -1,5 +1,9 @@
 package com.uas.ps.product.entity;
 
+import com.uas.ps.entity.ProductUsers;
+
+import java.util.Date;
+
 /**
  * ERP个人物料
  *
@@ -58,4 +62,18 @@ public class ProductSaler {
     public void setEn_uu(Long en_uu) {
         this.en_uu = en_uu;
     }
+
+    /**
+     * 实体转换
+     * @return
+     */
+    public ProductUsers convert() {
+        // 物料id需要通过enUU和code查找再set
+        ProductUsers productUsers = new ProductUsers();
+        productUsers.setDate(new Date());
+        productUsers.setUseruu(this.getEm_uu());
+        productUsers.setEnuu(this.getEn_uu());
+        productUsers.setErpid(this.getPs_id());
+        return productUsers;
+    }
 }

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

@@ -59,14 +59,6 @@ public interface ProductUsersDao extends JpaSpecificationExecutor<ProductUsers>,
     @Query("select p from ProductUsers p where p.enuu = :enuu and p.useruu = :useruu and p.product.title = :title and p.product.cmpCode = :spec and p.product.brand = :brand")
     List<ProductUsers> findByEnuuAndUseruuAndTitleAndCmpCodeAndBrand(@Param("enuu") Long enuu, @Param("useruu") Long useruu, @Param("title") String title, @Param("spec") String spec, @Param("brand") String brand);
 
-    /**
-     * 通过选择的id批量转入我的物料
-     *
-     * @param ids 物料ids
-     */
-    @Procedure(procedureName = "product_coverto_user")
-    Integer coverToUserProdByIds(String ids, Long useruu, Long enuu);
-
     /**
      * 通过物料id,enuu,useruu精确
      */

+ 9 - 12
src/main/java/com/uas/ps/product/service/ProductUsersService.java

@@ -2,7 +2,7 @@ package com.uas.ps.product.service;
 
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductUsers;
-import org.apache.poi.ss.usermodel.Workbook;
+import com.uas.ps.product.entity.ProductSaler;
 import org.springframework.ui.ModelMap;
 
 import java.util.List;
@@ -35,22 +35,12 @@ public interface ProductUsersService {
      */
     void deleteById(Long id);
 
-    /**
-     * 批量导入个人物料信息
-     *
-     * @param workbook excel解析的物料信息
-     * @param enUU 企业UU
-     * @param userUU 用户UU
-     * @return
-     */
-    ModelMap releaseByWorkbook(Workbook workbook, Long enUU, Long userUU);
-
     /**
      * 批量转入我的产品库
      *
      * @param ids
      */
-    ModelMap coverToUserProdByIds(String ids, Long userUU, Long enUU);
+    Integer coverToUserProdByIds(String ids, Long userUU, Long enUU);
 
     /**
      * 单个转入我的物料
@@ -81,4 +71,11 @@ public interface ProductUsersService {
      * @return
      */
     List<ProductUsers> getProductUsersByEnUUAndCmpCode(Long enUU, String cmpCode);
+
+    /**
+     * ERP productSaler 实体转换成 productUsers 实体
+     * @param productSalers productUsers List
+     * @return
+     */
+    List<ProductUsers> convertProductUsers(List<ProductSaler> productSalers);
 }

+ 32 - 169
src/main/java/com/uas/ps/product/service/impl/ProductUsersServiceImpl.java

@@ -7,14 +7,11 @@ import com.uas.ps.core.util.CollectionUtils;
 import com.uas.ps.entity.Product;
 import com.uas.ps.entity.ProductUsers;
 import com.uas.ps.product.entity.Constant;
+import com.uas.ps.product.entity.ProductSaler;
 import com.uas.ps.product.repository.ProductDao;
 import com.uas.ps.product.repository.ProductUsersDao;
 import com.uas.ps.product.service.ProductUsersService;
 import com.uas.ps.product.util.ThreadUtils;
-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.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
@@ -48,7 +45,15 @@ public class ProductUsersServiceImpl implements ProductUsersService {
      */
     @Override
     public void save(List<ProductUsers> productUsers) {
-        productUsersDao.save(productUsers);
+        List<ProductUsers> saveList = new ArrayList<>();
+        for (ProductUsers prodUsers : productUsers) {
+            ProductUsers existedProductUser = productUsersDao.findByEnuuAndUseruuAndErpid(prodUsers.getEnuu(), prodUsers.getUseruu(), prodUsers.getPrid());
+            if (null == existedProductUser) {
+                prodUsers.setDate(new Date());
+                saveList.add(prodUsers);
+            }
+        }
+        productUsersDao.save(saveList);
     }
 
     @Override
@@ -122,169 +127,7 @@ public class ProductUsersServiceImpl implements ProductUsersService {
     }
 
     @Override
-    public ModelMap releaseByWorkbook(Workbook workbook, Long enUU, Long userUU) {
-        ModelMap modelMap = new ModelMap();
-        List<ProductUsers> productUsers = new ArrayList<>();
-        List<String> alters = 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();
-                    ProductUsers prod = new ProductUsers();
-                    // 物料编号
-                    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 (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()));
-                        }
-                    }
-                    // 判断物料编号是否存在
-                    if(product.getCode() != null ) {
-                        List<Product> prods = productDao.findByEnUUAndCode(enUU, product.getCode());
-                        if(prods.size() > 0) {
-                            // 生成随机物料编码
-                            SimpleDateFormat sdf = new SimpleDateFormat("mmsssss");
-                            String code = enUU + sdf.format(new Date());
-                            product.setCode(code);
-                        }
-
-                    } else {
-                        // 生成随机物料编码
-                        SimpleDateFormat sdf = new SimpleDateFormat("mmsssss");
-                        String code = enUU + sdf.format(new Date());
-                        product.setCode(code);
-                    }
-                    List<ProductUsers> existProds = productUsersDao.findByEnuuAndUseruuAndTitleAndCmpCodeAndBrand
-                            (enUU, userUU, product.getTitle(), product.getCmpCode(), product.getBrand());
-                    if(CollectionUtils.isEmpty(existProds)) {
-                        List<Product> prods = productDao.findByTitleAndCmpCodeAndBrandAndEnUU(
-                                product.getTitle(), product.getCmpCode(), product.getBrand(), enUU);
-                        if(CollectionUtils.isEmpty(prods)) {// 如果非标不存在再查询标准
-                            prods = productDao.findByTitleAndPCmpCodeAndPBrandAndEnUU(product.getTitle(), product.getCmpCode(), product.getBrand(), enUU);
-                        }
-                        if (CollectionUtils.isEmpty(prods)) {
-                            // 如果物料不存在,先生成物料信息
-                            product.setEnUU(enUU);
-                            product.setUserUU(userUU);
-                            product.setSourceApp("B2B");
-                            product.setIsPubsale(Constant.NO);
-                            product.setIsShow(Constant.NO);
-                            product.setStandard(Constant.NO);
-                            product.setErpDate(new Date());
-//                            List<Role> roles = roleService.findByEnUUAndUserUU(enuu, useruu);
-//                            if(!CollectionUtils.isEmpty(roles)) {
-//                                for(Role role : roles) {
-//                                    if(role.getDesc().equals("业务员") || role.getDesc().equals("销售经理")) {
-//                                        product.setIsSale(Constant.YES);
-//                                    } else if(role.getDesc().equals("采购员")) {
-//                                        product.setIsPurchase(Constant.YES);
-//                                    }
-//                                }
-//                            }
-                            product = productDao.save(product);
-                            prod.setDate(new Date());
-                            prod.setEnuu(enUU);
-                            prod.setPrid(product.getId());
-                            prod.setUseruu(userUU);
-                        } else {
-                            Product oldProd = prods.get(0);
-                            prod.setDate(new Date());
-                            prod.setEnuu(enUU);
-                            prod.setPrid(oldProd.getId());
-                            prod.setUseruu(userUU);
-                        }
-                        productUsers.add(prod);
-                    } else {
-	                    alters.add(existProds.get(0).getProduct().getTitle());
-                    }
-                }
-            }
-            modelMap.put("total", total);
-            if (!CollectionUtils.isEmpty(productUsers)) {
-                try {
-                    productUsers = productUsersDao.save(productUsers);
-                    modelMap.put("success", productUsers.size());
-                    if(alters.size() > 0)
-                    	modelMap.put("alters", alters);
-                } catch (Exception e) {
-                    modelMap.put("error", "物料添加失败");
-                }
-            } else {
-                modelMap.put("success", 0);
-	            if(alters.size() > 0)
-		            modelMap.put("alters", alters);
-            }
-        }
-        return modelMap;
-    }
-
-    @Override
-    public ModelMap coverToUserProdByIds(String ids, Long userUU, Long enUU) {
-        ids = ids.replace("["," ");
-        ids = ids.replace("]"," ");
-//        Integer count = productUsersDao.coverToUserProdByIds(ids, userUU, enUU);
-        // 存储过程改为代码实现
+    public Integer coverToUserProdByIds(String ids, Long userUU, Long enUU) {
         List<Long> prIds = JSON.parseArray(ids, Long.class);
         // 保存的个人产品
         List<ProductUsers> productUsersList = new ArrayList<>();
@@ -298,7 +141,7 @@ public class ProductUsersServiceImpl implements ProductUsersService {
         }
         productUsersList = productUsersDao.save(productUsersList);
 //        logger.log("我的产品库", "新增了我产品信息", "size:" + count);
-        return new ModelMap("count", productUsersList.size());
+        return productUsersList.size();
     }
 
     @Override
@@ -376,4 +219,24 @@ public class ProductUsersServiceImpl implements ProductUsersService {
             }
         });
     }
+
+    /**
+     * ERP productSaler 实体转换成 productUsers 实体
+     *
+     * @param productSalers productUsers List
+     * @return
+     */
+    @Override
+    public List<ProductUsers> convertProductUsers(List<ProductSaler> productSalers) {
+        List<ProductUsers> productUsersList = new ArrayList<>();
+        for (ProductSaler productSaler : productSalers) {
+            List<Product> products = productDao.findByEnUUAndCode(productSaler.getEn_uu(), productSaler.getPs_code());
+            if (!CollectionUtils.isEmpty(products)) {
+                ProductUsers productUsers = productSaler.convert();
+                productUsers.setPrid(products.get(0).getId());
+                productUsersList.add(productUsers);
+            }
+        }
+        return productUsersList;
+    }
 }