| | |
| | | } |
| | | //产品bom对比 |
| | | Map<String,List> compareMap = pbhService.parseCompare(baseProduct,product); |
| | | return response.setIII(1, true, product,compareMap, filePath); |
| | | //return response.setIII(1, true, product,compareMap, filePath); |
| | | return response.setIII(1, true, product,compareMap, zipFile.toString()); |
| | | |
| | | } |
| | | |
| | |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 这个接口是进行产品新增,产品bom新增的接口. |
| | | * 新增方式有很多,有直接从zip解析新增产品,也可以基于原有产品复制进行定制等.需要注意兼容! |
| | | * @param product 产品新增,bom新增,产品版本更新 |
| | | * @return |
| | | * @throws IOException |
| | | */ |
| | | @Transactional |
| | | public Response add(Product product) throws IOException { |
| | | String parentCode = product.getParentCode(); |
| | | String customCode = product.getCustomCode(); |
| | | String parentModel = product.getParentModel(); |
| | | List<ProductBom> bomList = product.getBomList(); |
| | | String fileUrl = product.getFileUrl(); |
| | | String zipFilePath = product.getFileUrl(); |
| | | Date date = new Date(); |
| | | boolean isCopyCustom = false; |
| | | Product relatedProduct = null; |
| | |
| | | if(product.getId() != null){ //关联关系从产品id继承 |
| | | relatedProduct = getById(product.getId()); |
| | | } |
| | | } |
| | | //不是基于产品复制,则必定存在zip包,必然存在路径 |
| | | String fileUrl = null; |
| | | if(!isCopyCustom) { |
| | | fileUrl = zipFilePath.substring(0, zipFilePath.lastIndexOf(File.separator)); |
| | | } |
| | | //查询新增产品最新的版本号 |
| | | ProductHistory latestProduct = phService.getLatestVersion(parentCode, customCode); |
| | |
| | | if (!materialFile.exists()) { |
| | | materialFile.mkdirs(); |
| | | } |
| | | //之前上传的产品bom压缩包,转移到正式版本下留存 |
| | | File zipFileNew = new File(productDir + File.separator + zipFilePath.substring(zipFilePath.lastIndexOf(File.separator) + 1)); |
| | | FileCopyUtils.copy(new File(zipFilePath), zipFileNew); |
| | | |
| | | productUrlList.forEach(productUrl -> { |
| | | String fileName = productUrl.substring(productUrl.lastIndexOf(File.separator) + 1); |
| | | |
| | |
| | | materialUrlList.forEach(materialUrl -> { |
| | | String dwgName = materialUrl.substring(materialUrl.lastIndexOf(File.separator) + 1, materialUrl.length() - 4); |
| | | try { |
| | | FileCopyUtils.copy(new File(materialUrl), new File(materialDir + File.separator + dwgName + ".dwg")); |
| | | File dwgFile = new File(materialDir + File.separator + dwgName + ".dwg"); |
| | | if(!dwgFile.exists()) { |
| | | FileCopyUtils.copy(new File(materialUrl), dwgFile); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | picUrlList.forEach(picUrl -> { |
| | | String picFullName = picUrl.substring(picUrl.lastIndexOf(File.separator) + 1); |
| | | try { |
| | | FileCopyUtils.copy(new File(picUrl), new File(materialDir + File.separator + picFullName)); |
| | | File picFile = new File(materialDir + File.separator + picFullName); |
| | | if(!picFile.exists()) { |
| | | FileCopyUtils.copy(new File(picUrl), picFile); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | }); |
| | | |
| | | //物料表中不存在的(依据:物料编码+物料型号),则添加到物料表中去(包含product这个物料) |
| | | //没有图纸和图片的,更新图纸和图片;有图纸和图片的,不更新图纸和图片 |
| | | List<Material> materialExistList = mService.getListByCodeAndModelList2(bomList); |
| | | //List<String> subCodeList = materialExistList.stream().map(Material::getSubCode).collect(Collectors.toList()); |
| | | List<String> subCodeList = materialExistList.stream().map(material -> material.getSubCode()+"/"+material.getSubModel()).collect(Collectors.toList()); |
| | | List<Material> materialList = new LinkedList<>(); |
| | | List<Material> materialUpdateList = new LinkedList<>(); |
| | | bomList.forEach(bom -> { |
| | | if (!subCodeList.contains(bom.getSubCode()+"/"+bom.getSubModel())) { |
| | | Material material = new Material(); |
| | |
| | | material.setUnit(bom.getUnit()); |
| | | |
| | | materialList.add(material); |
| | | }else{ //物料已经存在的 |
| | | Material material = new Material(); |
| | | if (bom.getPictureUrl() != null) { |
| | | material.setPictureUrl(bom.getPictureUrl()); |
| | | } |
| | | if (bom.getDwgUrl() != null) { |
| | | material.setDwgUrl(bom.getDwgUrl()); |
| | | } |
| | | if(material.getPictureUrl()!=null || material.getDwgUrl()!=null){ |
| | | material.setSubCode(bom.getSubCode()); |
| | | material.setSubModel(bom.getSubModel()); |
| | | materialUpdateList.add(material); |
| | | } |
| | | } |
| | | }); |
| | | //母料是否存在 |
| | |
| | | } |
| | | if(materialList.size()!=0) { |
| | | mService.insertBatch(materialList); |
| | | } |
| | | if(materialUpdateList.size()!=0) { |
| | | mService.updateDwgUrlAndPicUrl(materialUpdateList); |
| | | } |
| | | //更新product_history/product_bom_history/product/product_bom, |
| | | // product的主键沿用对应product_history的 |
| | |
| | | List listProduct=mapper.selectListProduct(productId); |
| | | return new Response().setIII(1,listMaterial.size()>0||listProduct.size()>0,listMaterial,listProduct,""); |
| | | } |
| | | |
| | | //反馈管理-查询当前使用的所有的产品 |
| | | public Response getFkProduct() { |
| | | QueryWrapper wrapper=new QueryWrapper(); |
| | | wrapper.ne("version",-1); |
| | | List list=mapper.selectList(wrapper); |
| | | return new Response().setII(1,list.size()>0,list,"反馈管理-查询当前使用的所有的产品"); |
| | | } |
| | | |
| | | //产品对比下拉选中 |
| | | public Response getCompareProduct() { |
| | | List list=mapper.selectList(null); |
| | | return new Response().setII(1,list.size()>0,list,"产品对比下拉选中-查询当前使用的所有的产品"); |
| | | } |
| | | } |