src/main/java/com/whyc/service/MaterialService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/ProductService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/util/FileUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/service/MaterialService.java
@@ -222,9 +222,24 @@ return mapper.getListByCodeAndModelList2(bomList); } public Material getByCodeAndModel(String subCode, String subModel) { /** * * @param subCode 物料编码 * @param subModel 物料型号 * @param equalSubModel 是否等于物料型号,用于等于物料型号 或者 排除物料型号并且存在附件 * @return */ public Material getByCodeAndModel(String subCode, String subModel, boolean equalSubModel) { QueryWrapper<Material> query = Wrappers.query(); query.eq("sub_code",subCode).eq("sub_model",subModel).last(" limit 1"); query.eq("sub_code",subCode); if(equalSubModel) { query.eq("sub_model", subModel); }else{ query.ne("sub_model", subModel); query.isNotNull("file_url"); } query.orderByDesc("id"); query.last(" limit 1"); return mapper.selectOne(query); } @@ -477,6 +492,39 @@ } /** * 转移 被复制的附件,到新的物料 * @param fileUrlDir 被复制的附件路径,例如:doc_file\material\8468-0109000512-SHIDA-2455-OLD-ZX_A01 * @param material 新的物料 * @return 返回被追加文件的文件夹路径 */ @Transactional public Response transferCopiedAttachment(String fileUrlDir, Material material) throws IOException { String subModel = material.getSubModel(); subModel = MaterialSpecialCharUtil.transfer(subModel); String dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + subModel; String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-"+ material.getSubCode() + "-" + subModel; File dirFile = new File(dirPath); boolean dirFileExist = true; if(!dirFile.exists()){ dirFile.mkdirs(); dirFileExist = false; } FileUtil.copyDirectory(new File(CommonUtil.getProjectDir() + File.separator + fileUrlDir),dirFile); if(!dirFileExist){ //路径不存在,说明是首次上传,设置物料对应的fileUrl Material temp = new Material(); temp.setId(material.getId()); temp.setFileUrl(dirPathDB); mapper.updateById(temp); } return new Response().set(1,true,"上传完成"); } /** * @param multipartFile 更新的图纸或图片 * @param material */ src/main/java/com/whyc/service/ProductService.java
@@ -609,7 +609,7 @@ newTemp.setParentCode(parentCode); newTemp.setCustomCode(customCode); newTemp.setSubCode(bom.getSubCode()); Material material = mService.getByCodeAndModel(bom.getSubCode(), bom.getSubModel()); Material material = mService.getByCodeAndModel(bom.getSubCode(), bom.getSubModel(),true); newTemp.setSubMaterialId(material.getId()); newTemp.setSVersion(nextVersion); newTemp.setEVersion(nextVersion); @@ -637,7 +637,7 @@ newTemp.setParentCode(parentCode); newTemp.setCustomCode(customCode); newTemp.setSubCode(bom.getSubCode()); Material material = mService.getByCodeAndModel(bom.getSubCode(), bom.getSubModel()); Material material = mService.getByCodeAndModel(bom.getSubCode(), bom.getSubModel(),true); newTemp.setSubMaterialId(material.getId()); newTemp.setSVersion(nextVersion); newTemp.setEVersion(nextVersion); @@ -931,7 +931,7 @@ newMaterialList = newMaterialList.stream().filter(distinctByKey(m->m.getSubCode()+"/"+m.getSubModel())).collect(Collectors.toList()); //母料是否存在 Material materialDB = mService.getByCodeAndModel(product.getParentCode(), product.getParentModel()); Material materialDB = mService.getByCodeAndModel(product.getParentCode(), product.getParentModel(),true); if (materialDB == null) { Material material = new Material(); material.setSubCode(product.getParentCode()); @@ -1067,6 +1067,18 @@ if(materialHistoryList.size()>0) { materialHistoryService.addBatch(materialHistoryList); } //如果新上传的bom中存在0108、0109开头的物料,(肯定会被识别成新物料,之前的操作已经被插入到表中) // 在数据库存在相同的物料编码存在且不同的物料型号,则将数据库最新的物料的附件复制一份,填充到新的物料表中 for (Material material : newMaterialList) { //新物料 String subCode = material.getSubCode(); String subModel = material.getSubModel(); if(subCode.startsWith("0108") || subCode.startsWith("0109")){ Material materialWithSameCodeLatest = mService.getByCodeAndModel(subCode, subModel, false); //附件转移并设置 mService.transferCopiedAttachment(materialWithSameCodeLatest.getFileUrl(),material); } } } //添加新增日志到tb_product_lock_log表 ProductLockLog lockLog = new ProductLockLog(); src/main/java/com/whyc/util/FileUtil.java
@@ -101,6 +101,31 @@ return "doc_file"+fileName; } /** * 复制文件夹内的所有文件到另一个文件夹 */ public static void copyDirectory(File source, File destination) { if (source.isDirectory()) { if (!destination.exists()) { destination.mkdir(); } for (File file : source.listFiles()) { copyDirectory(file, new File(destination, file.getName())); } } else { try (FileInputStream inputStream = new FileInputStream(source); FileOutputStream outputStream = new FileOutputStream(destination)) { byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } } catch (IOException e) { e.printStackTrace(); } } } public static void main(String[] args) { File file = new File("C:\\Users\\29550\\Desktop\\当前项目\\202207泰州平台"); List list = new ArrayList<>();