From cf9a5039e6db9d1d5963e3fe1a37d00169ec2ef7 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期三, 25 六月 2025 11:18:22 +0800 Subject: [PATCH] 验收报告修改 --- src/main/java/com/whyc/service/MaterialService.java | 485 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 457 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/whyc/service/MaterialService.java b/src/main/java/com/whyc/service/MaterialService.java index f59b199..30bc030 100644 --- a/src/main/java/com/whyc/service/MaterialService.java +++ b/src/main/java/com/whyc/service/MaterialService.java @@ -5,37 +5,47 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.FileDirPath; +import com.whyc.dto.MailDTO; +import com.whyc.dto.MaterialCheckDTO; import com.whyc.dto.Response; import com.whyc.mapper.MaterialMapper; -import com.whyc.pojo.DocUser; -import com.whyc.pojo.Material; -import com.whyc.pojo.ProductBom; -import com.whyc.util.ActionUtil; -import com.whyc.util.CommonUtil; -import com.whyc.util.FileUtil; -import com.whyc.util.Zip4jUtil; +import com.whyc.pojo.*; +import com.whyc.util.DateUtil; +import com.whyc.util.*; +import org.apache.commons.codec.binary.Base64; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.FileCopyUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import java.io.*; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.LinkedList; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service public class MaterialService { @Autowired(required = false) private MaterialMapper mapper; + + @Autowired + private MaterialHistoryService mhService; + + @Autowired + private AttachLockService attachLockService; + + @Autowired + private MailService mailService; + + @Autowired + private MailUserService mailUserService; + //鏌ヨ鎵�鏈夌殑鏁h浠朵俊鎭姞璁剧疆浜嗘浛鎹㈠叧绯荤殑瀛愪欢淇℃伅 /*public Response getAllMaterial(String category,String subCode,String subName,String subModel,int pageCurr,int pageSize) { PageHelper.startPage(pageCurr,pageSize); @@ -77,6 +87,33 @@ public Response getMaterialLimit(String subCode, String subName, String subModel, int pageCurr, int pageSize) { PageHelper.startPage(pageCurr,pageSize); List<Material> list=mapper.getMaterialLimit(subCode,subName,subModel); + String fileDirName = FileDirPath.getFileDirName(); + int flag=0; + // 杩斿洖鏄惁瀛樺湪闄勪欢 + if(list!=null&&list.size()>0){ + for (Material m:list) { + if(m.getFileUrl()!=null&&!m.getFileUrl().isEmpty()){ + File file = new File(fileDirName+File.separator+m.getFileUrl()); + if(!file.exists()) { + flag=0; + }else{ + String[] fileNames = file.list();//鑾峰彇璇ユ枃浠跺す涓嬬殑鎵�鏈夋枃浠朵互鍙婄洰褰曠殑鍚嶅瓧 + List attachFileList=new ArrayList(); + if(fileNames.length>0){ + flag=1; + for (int i=0;i<fileNames.length;i++){ + if(!fileNames[i].contains("-dwg.pdf")&&!fileNames[i].contains("-doc.pdf")) + attachFileList.add(fileNames[i]); + } + }else{ + flag=0; + } + m.setAttachFileList(attachFileList); + } + } + m.setHasAttachFlag(flag); + } + } PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list.size()>0,pageInfo,"鏌ヨ鎵�鏈夌墿鏂�(鍒嗛〉锛屾ā绯婃煡璇�)"); } @@ -181,6 +218,41 @@ material.setFileUrl(null); }); mapper.insertBatchSomeColumn(materialList); + /*0120寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍚存禋銆侀檲鍗撱�佺唺瀹舵澃銆侀挶闀滃厓銆佹柤濂� + 0108銆�0109寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍠昏壋銆佽鎴愩�佺唺蹇楀钩銆佸彾鑳滆摑 */ + List<String> materialCodeList = materialList.stream().map(Material::getSubCode).collect(Collectors.toList()); + //浠巑aterialList涓煡鎵� subCode浠�0120寮�澶寸殑鎵�鏈夌墿鏂欓泦鍚� + List<Material> materialCodeList0120 = materialList.stream().filter(material -> material.getSubCode().startsWith("0120")).collect(Collectors.toList()); + //浠巑aterialList涓煡鎵� subCode浠�0108鎴�0109寮�澶寸殑鎵�鏈夌墿鏂欓泦鍚� + List<Material> materialCodeList0809 = materialList.stream().filter(material -> material.getSubCode().startsWith("0108") || material.getSubCode().startsWith("0109")).collect(Collectors.toList()); + + //濡傛灉瀛樺湪,鍒欏垱寤洪偖浠跺璞� + if(materialCodeList0120.size()>0 || materialCodeList0809.size()>0) { + DocUser user = ActionUtil.getUser(); + MailDTO mailDTO = new MailDTO(); + String now = DateUtil.YYYY_MM_DD_HH_MM_SS.format(new Date()); + mailDTO.setTitle("銆愮墿鏂欎笂浼犳彁閱掋��"); + if(materialCodeList0120.size()>0){ + String subCodeJoin = materialCodeList0120.stream().map(Material::getSubCode).collect(Collectors.joining(",")); + String subNameJoin = materialCodeList0120.stream().map(Material::getSubName).collect(Collectors.joining(",")); + String subModelJoin = materialCodeList0120.stream().map(Material::getSubModel).collect(Collectors.joining(",")); + + List<MailUser> mailUserList = mailUserService.getMailUserList(5); + mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList())); + mailDTO.setContent(user.getName() + "鍦ㄦ枃妗g鐞嗗钩鍙�"+now+"涓婁紶浜�0120寮�澶寸殑鐗╂枡,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCodeJoin+"\n鐗╂枡鍚嶇О:"+subNameJoin+"\n瑙勬牸鍨嬪彿:"+subModelJoin); + mailService.sendMail(mailDTO); + } + if (materialCodeList0809.size()>0) { + String subCodeJoin = materialCodeList0809.stream().map(Material::getSubCode).collect(Collectors.joining(",")); + String subNameJoin = materialCodeList0809.stream().map(Material::getSubName).collect(Collectors.joining(",")); + String subModelJoin = materialCodeList0809.stream().map(Material::getSubModel).collect(Collectors.joining(",")); + + List<MailUser> mailUserList = mailUserService.getMailUserList(6); + mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList())); + mailDTO.setContent(user.getName() + "鍦ㄦ枃妗g鐞嗗钩鍙�"+now+"涓婁紶浜�0108鎴�0109寮�澶寸殑鐗╂枡,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCodeJoin+"\n鐗╂枡鍚嶇О:"+subNameJoin+"\n瑙勬牸鍨嬪彿:"+subModelJoin); + mailService.sendMail(mailDTO); + } + } return new Response().set(1,true,"鏂板瀹屾垚"); } @@ -192,9 +264,28 @@ return mapper.getListByCodeAndModelList2(bomList); } - public Material getByCodeAndModel(String subCode, String subModel) { + public List<Material> getListByCodeAndModelList3(List<ProductBom> bomList) { + return mapper.getListByCodeAndModelList3(bomList); + } + + /** + * + * @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); } @@ -215,8 +306,11 @@ File parentFile = new File(filePath); String originalFilename = file.getOriginalFilename(); File zipFile = new File(filePath+File.separator+ originalFilename); - if(!zipFile.exists()){ + /*if(!zipFile.exists()){ zipFile.mkdirs(); + }*/ + if (!parentFile.exists()) { + parentFile.mkdirs(); } file.transferTo(zipFile); //瑙e帇鏂囦欢澶� @@ -271,15 +365,15 @@ cellValue = cell.getStringCellValue(); switch (m){ - case 2:{material.setCategory(cellValue);}break; + //case 2:{material.setCategory(cellValue);}break; case 3:{material.setSubCode(cellValue);}break; case 4:{material.setSubName(cellValue);}break; case 5:{material.setSubModel(cellValue);}break; - case 6:{material.setMaterial(cellValue);}break; - case 7:{material.setThickness(cellValue);}break; + //case 6:{material.setMaterial(cellValue);}break; + //case 7:{material.setThickness(cellValue);}break; //case 8:{material.setProducer(cellValue);}break; - case 9:{material.setSurfaceDetail(cellValue);}break; - case 10:{material.setNotes(cellValue);}break; + //case 9:{material.setSurfaceDetail(cellValue);}break; + //case 10:{material.setNotes(cellValue);}break; case 11:{ //鍥剧墖浠�1寮�濮�,0鏄痽c logo PictureData pictureData = allPictures.get(l - 7); @@ -305,6 +399,19 @@ return response.set(1,false,"鎷掔粷瑙f瀽,excel鏂囦欢涓褰曞寘鍚悕绉颁负绌虹殑璁板綍"); } } + //杩藉姞鐗╂枡瑙勮寖鏍¢獙 鏆傛椂鍘婚櫎鏍¢獙 + /*List<MaterialCheckDTO> checkList = list.stream().map(material -> { + MaterialCheckDTO dto = new MaterialCheckDTO(); + dto.setNum(material.getId()); + dto.setSubCode(material.getSubCode()); + dto.setSubName(material.getSubName()); + dto.setSubModel(material.getSubModel()); + return dto; + }).collect(Collectors.toList()); + List<MaterialCheckDTO> irregularList = CommonUtil.checkFormat(checkList); + if(irregularList.size()>0){ + return new Response().setII(1,false,irregularList,"鍚嶇О鎴栧瀷鍙峰懡鍚嶄笉瑙勮寖"); + }*/ return response.setII(1,true,list,filePath); } //鏍规嵁鐗╂枡id鏌ヨ杩斿洖闄勪欢鏂囦欢澶逛笅鎵�鏈夌殑鏂囦欢鍒楄〃 @@ -358,14 +465,336 @@ } /** - * - * @param multipartFile 琚拷鍔犵殑闄勪欢 + * @param multipartFileList 琚拷鍔犵殑闄勪欢,zip闆嗗悎 * @param material * @return 杩斿洖琚拷鍔犳枃浠剁殑鏂囦欢澶硅矾寰� */ - public Response addAttachment(MultipartFile multipartFile, Material material) { - String dirPath = "doc_file" + File.separator + "material" + File.separator + material.getId() + material.getSubCode() + material.getSubModel(); - //TODO - return new Response().setII(1,"涓婁紶瀹屾垚"); + @Transactional + public Response addAttachment(List<MultipartFile> multipartFileList, Material material) throws IOException { + List<String> currentFileList = new LinkedList<>(); + List<String> uploadingFileList = new LinkedList<>(); + String subCode = material.getSubCode(); + String subModel = material.getSubModel(); + subModel = MaterialSpecialCharUtil.transfer(subModel); + String dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getId() + "-"+ subCode + "-" + subModel; + String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-"+ subCode + "-" + subModel; + File dirFile = new File(dirPath); + + Date now = new Date(); + //long timestamp = now.getTime(); + String formattedTimestamp = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(now); + String formattedNow = DateUtil.YYYY_MM_DD_HH_MM_SS.format(now); + + boolean dirFileExist = true; + if(!dirFile.exists()){ + dirFile.mkdirs(); + dirFileExist = false; + } + StringBuilder fileNameJoin = new StringBuilder(); + for (int i = 0; i < multipartFileList.size(); i++) { + MultipartFile multipartFile = multipartFileList.get(i); + String originalFilename = multipartFile.getOriginalFilename(); + fileNameJoin.append(originalFilename).append(","); + File zipFile = new File(dirPath + File.separator + originalFilename.substring(0,originalFilename.lastIndexOf(".")) + "_" + formattedTimestamp + originalFilename.substring(originalFilename.lastIndexOf("."))); + multipartFile.transferTo(zipFile); + } + //fileNameJoin鍘婚櫎鏈�鍚庝竴涓厓绱� + fileNameJoin.deleteCharAt(fileNameJoin.length()-1); + /*//瑙e帇鏂囦欢澶�,鍒犻櫎鍘焭ip鏂囦欢 + String unPackageDir = dirPath + File.separator + timestamp; + Zip4jUtil.unPackZip(zipFile, null, unPackageDir); + File unPackageFile = new File(unPackageDir); + File[] unPackageFileList = unPackageFile.listFiles(); + zipFile.delete(); + for (int i = 0; i < unPackageFileList.length; i++) { + File tempFile = unPackageFileList[i]; + if(tempFile.isDirectory()){ + FileUtil.deleteFile(unPackageFile); + if(!dirFileExist){ + FileUtil.deleteFile(dirFile); + } + return new Response().set(1,false,"鎷掔粷涓婁紶:涓婁紶鐨勫帇缂╁寘瀛樺湪鏂囦欢澶�"); + } + }*/ + + if(!dirFileExist){ + //璺緞涓嶅瓨鍦�,璇存槑鏄娆′笂浼�,璁剧疆鐗╂枡瀵瑰簲鐨刦ileUrl + Material temp = new Material(); + temp.setId(material.getId()); + temp.setFileUrl(dirPathDB); + mapper.updateById(temp); + }/*else{ + //鏌ヨ璺緞涓嬬幇鏈夌殑鎵�鏈夋枃浠� + String[] fileArr = dirFile.list(); + currentFileList = Arrays.asList(fileArr); + }*/ + + /*//鏌ヨ鏂颁笂浼犵殑鏂囦欢璺緞 + String[] unPackageFileArr = unPackageFile.list(); + uploadingFileList = Arrays.asList(unPackageFileArr); + for (String uploadingFile : uploadingFileList){ + if(currentFileList.contains(uploadingFile)){ + new File(unPackageDir + File.separator + uploadingFile) + .renameTo(new File(unPackageDir + File.separator + uploadingFile.substring(0,uploadingFile.lastIndexOf(".")) + "_" + formattedTimestamp + uploadingFile.substring(uploadingFile.lastIndexOf(".")))); + } + } + //涓婁紶鐨勬枃浠跺す杞Щ鍒版寮忚矾寰� + org.aspectj.util.FileUtil.copyDir(unPackageFile,dirFile); + FileUtil.deleteFile(unPackageFile);*/ + /*0120寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍚存禋銆侀檲鍗撱�佺唺瀹舵澃銆侀挶闀滃厓銆佹柤濂� + 0108銆�0109寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍠昏壋銆佽鎴愩�佺唺蹇楀钩銆佸彾鑳滆摑 */ + MailDTO mailDTO = new MailDTO(); + DocUser user = ActionUtil.getUser(); + Material materialById = mapper.getMaterialById(material.getId()); + mailDTO.setTitle("銆愰檮浠舵洿鏂版彁閱掋��"); + if(subCode.startsWith("0120")){ + List<MailUser> mailUserList = mailUserService.getMailUserList(5); + mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList())); + mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗛檮浠�,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n闄勪欢鍚嶇О:"+fileNameJoin.toString()); + mailService.sendMail(mailDTO); + }else if (subCode.startsWith("0108")|| subCode.startsWith("0109")){ + List<MailUser> mailUserList = mailUserService.getMailUserList(6); + mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList())); + mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗛檮浠�,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n闄勪欢鍚嶇О:"+fileNameJoin.toString()); + mailService.sendMail(mailDTO); + } + return new Response().set(1,true,"涓婁紶瀹屾垚"); + } + + /** + * 杞Щ 琚鍒剁殑闄勪欢,鍒版柊鐨勭墿鏂� + * @param materialDB .fileUrl 琚鍒剁殑闄勪欢璺緞,渚嬪:doc_file\material\8468-0109000512-SHIDA-2455-OLD-ZX_A01 + * @param material 鏂扮殑鐗╂枡 + * @return 杩斿洖琚拷鍔犳枃浠剁殑鏂囦欢澶硅矾寰� + */ + @Transactional + public Response transferCopiedAttachment(Material materialDB, Material material) throws IOException { + String fileUrlDir = materialDB.getFileUrl(); + 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); + + if(!dirFile.exists()){ + + dirFile.mkdirs(); + } + FileUtil.copyDirectory(new File(CommonUtil.getProjectDir() + File.separator + fileUrlDir),dirFile); + + //璁剧疆鐗╂枡瀵瑰簲鐨刦ileUrl鍙婄墿鏂欑姸鎬� + Material temp = new Material(); + temp.setId(material.getId()); + temp.setFileUrl(dirPathDB); + mapper.updateById(temp); + + attachLockService.getAndInsert(materialDB.getId(),material.getId()); + + + return new Response().set(1,true,"涓婁紶瀹屾垚"); + } + + /** + * @param multipartFile 鏇存柊鐨勫浘绾告垨鍥剧墖 + * @param material + */ + @Transactional + public Response updatePicOrDwg(MultipartFile multipartFile, Material material) throws IOException { + List<String> currentFileList = new LinkedList<>(); + List<String> uploadingFileList = new LinkedList<>(); + String subCode = material.getSubCode(); + String subModel = material.getSubModel(); + subModel = MaterialSpecialCharUtil.transfer(subModel); + String dirPathDB = "doc_file" + File.separator + "material" + File.separator + subCode + "-" + subModel; + String dirPath = CommonUtil.getRootFile() + "material" + File.separator + subCode + "-" + subModel; + File dirFile = new File(dirPath); + + Date now = new Date(); + //long timestamp = now.getTime(); + String formattedTimestamp = DateUtil.YYYY_MM_DD_HH_MM_SS_UNION.format(now); + String formattedNow = DateUtil.YYYY_MM_DD_HH_MM_SS.format(now); + + if (!dirFile.exists()) { + dirFile.mkdirs(); + } + + String originalFilename = multipartFile.getOriginalFilename(); + String fileSuffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1); + String fileFullName = File.separator + originalFilename.substring(0, originalFilename.lastIndexOf(".")) + "_" + formattedTimestamp + originalFilename.substring(originalFilename.lastIndexOf(".")); + File zipFile = new File(dirPath + fileFullName); + multipartFile.transferTo(zipFile); + + //璺緞涓嶅瓨鍦�,璇存槑鏄娆′笂浼�,璁剧疆鐗╂枡瀵瑰簲鐨刦ileUrl + //鍚屾椂鍦ㄧ墿鏂欏巻鍙查噷闈㈡坊鍔犺褰� + Material temp = new Material(); + MaterialHistory mh = new MaterialHistory(); + + temp.setId(material.getId()); + mh.setProductId(-1); + mh.setMaterialId(material.getId()); + int userId = ActionUtil.getUser().getId().intValue(); + mh.setUpUserId(userId); + mh.setCreateTime(now); + if(fileSuffix.equals("dwg")){ + temp.setDwgUrl(dirPathDB + fileFullName); + mh.setDwgUrl(dirPathDB + fileFullName); + }else { + temp.setPictureUrl(dirPathDB + fileFullName); + mh.setPictureUrl(dirPathDB + fileFullName); + } + mapper.updateById(temp); + mhService.insert(mh); + + /*0120寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍚存禋銆侀檲鍗撱�佺唺瀹舵澃銆侀挶闀滃厓銆佹柤濂� + 0108銆�0109寮�澶寸殑鐗╂枡涓婁紶鍚庯紝绯荤粺鑷姩鍙戦偖浠跺搴斾汉鍛橈細鍠昏壋銆佽鎴愩�佺唺蹇楀钩銆佸彾鑳滆摑 */ + Material materialById = mapper.getMaterialById(material.getId()); + MailDTO mailDTO = new MailDTO(); + DocUser user = ActionUtil.getUser(); + mailDTO.setTitle("銆愬浘绾稿浘鐗囨洿鏂版彁閱掋��"); + if(subCode.startsWith("0120")){ + List<MailUser> mailUserList = mailUserService.getMailUserList(5); + mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList())); + mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗗浘绾告垨鍥剧墖,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n鍥剧焊鍥剧墖鍚嶇О:"+originalFilename); + mailService.sendMail(mailDTO); + }else if (subCode.startsWith("0108")|| subCode.startsWith("0109")){ + List<MailUser> mailUserList = mailUserService.getMailUserList(6); + mailDTO.setMailList(mailUserList.stream().map(MailUser::getMail).collect(Collectors.toList())); + mailDTO.setContent(user.getName()+"鍦ㄦ枃妗g鐞嗗钩鍙�"+formattedNow+"涓婁紶浜嗗浘绾告垨鍥剧墖,璇︾粏淇℃伅濡備笅:\n鐗╂枡缂栫爜:"+subCode+"\n鐗╂枡鍚嶇О:"+materialById.getSubName()+"\n鐗╂枡鍨嬪彿:"+subModel+"\n鍥剧焊鍥剧墖鍚嶇О:"+originalFilename); + mailService.sendMail(mailDTO); + } + return new Response().set(1, true, "涓婁紶瀹屾垚"); + } + public Response dwgCompare(int materialId, int materialId2) throws IOException { + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletResponse response = servletRequestAttributes.getResponse(); + + //鑾峰彇鍚勮嚜鐗╂枡鐨勫浘绾� + String dwgUrl = mapper.selectById(materialId).getDwgUrl(); + String dwgUrl2 = mapper.selectById(materialId2).getDwgUrl(); + if(dwgUrl == null || dwgUrl2 == null){ + return new Response().set(1,false,"鏃犳硶瀵规瘮,鎵�閫夌墿鏂欒嚦灏戞湁1涓笉瀛樺湪鍥剧焊"); + } + String dwgFileStr = CommonUtil.getProjectDir() + File.separator + dwgUrl; + String dwgFileStr2 = CommonUtil.getProjectDir() + File.separator + dwgUrl2; + + String absoluteDwgPngPath = dwgFileStr.substring(0,dwgFileStr.lastIndexOf("."))+"-dwg.png"; + String absoluteDwgPngPath2 = dwgFileStr2.substring(0,dwgFileStr2.lastIndexOf("."))+"-dwg.png"; + if(!new File(absoluteDwgPngPath).exists()){ + DwgToPngUtil.dwg2png(new File(dwgFileStr)); + } + if(!new File(absoluteDwgPngPath2).exists()) { + DwgToPngUtil.dwg2png(new File(dwgFileStr2)); + } + + ByteArrayOutputStream stream = ImageDiff.compareImages(absoluteDwgPngPath, absoluteDwgPngPath2); + return new Response().setII(1,true, Base64.encodeBase64String(stream.toByteArray()),null); + //String fileName = "name.png"; + //OutputStream toClient = null; + //try { + // response.setContentType("application/octet-stream"); + // response.setHeader("Content-Disposition","attachment;filename=" + fileName); + // response.addHeader("Pragma", "no-cache"); + // response.addHeader("Cache-Control", "no-cache"); + // toClient = response.getOutputStream(); + // stream.writeTo(toClient); + // //toClient.write(stream.toByteArray()); + // toClient.flush(); + // toClient.close(); + //} catch (IOException e) { + // e.printStackTrace(); + //} + // + // + //return null; + } + + public void updateDwgUrlAndPicUrl(List<Material> materialUpdateList) { + mapper.updateDwgUrlAndPicUrl(materialUpdateList); + } + + public List<Material> getSameSubCodeAndModel(List<ProductBom> bomList) { + return mapper.getSameSubCodeAndModel(bomList); + } + + public void checkNaming(InputStream inputStream, HttpServletResponse response) throws IOException, InvalidFormatException { + List<MaterialCheckDTO> checkList = new LinkedList<>(); + Workbook workbook = null; + workbook = WorkbookFactory.create(inputStream); + inputStream.close(); + //鍙栫涓�涓猻heet琛� + Sheet sheet = workbook.getSheetAt(0); + int lastRowNum = sheet.getLastRowNum(); + for (int i = 1; i <= lastRowNum; i++) { + System.out.println(i); + //浠庣浜岃寮�濮� + Row row = sheet.getRow(i); + Cell cell = row.getCell(0); + cell.setCellType(CellType.STRING); + String code = cell.getStringCellValue(); + String name = row.getCell(1).getStringCellValue(); + Cell cell2 = row.getCell(2); + cell2.setCellType(CellType.STRING); + String model = cell2.getStringCellValue(); + + MaterialCheckDTO dto = new MaterialCheckDTO(); + dto.setNum(i); + dto.setSubName(name); + dto.setSubCode(code); + dto.setSubModel(model); + checkList.add(dto); + } + List<MaterialCheckDTO> materialCheckDTOS = CommonUtil.checkFormat(checkList); + int size = materialCheckDTOS.size(); + //ECR缂栧彿,鐢宠鏃ユ湡,鐢宠浜�,鍙樻洿鎻忚堪,鍙樻洿鏂欏彿,鍙樻洿鍨嬪彿,鍙樻洿鎵�灞炲瀷鍙�,澶勭悊鏂瑰紡,鍒涘缓鏃堕棿 + String[] title = new String[]{"搴忓彿","鐗╂枡缂栫爜","鐗╂枡鍚嶇О","瑙勬牸鍨嬪彿","涓嶈鑼冨師鍥�"}; + String[][] values = new String[size][]; //size琛� + for (int i = 0; i < size; i++) { + values[i] = new String[5]; + MaterialCheckDTO dto = materialCheckDTOS.get(i); + values[i][0] = dto.getNum().toString(); + values[i][1] = dto.getSubCode(); + values[i][2] = dto.getSubName(); + values[i][3] = dto.getSubModel(); + values[i][4] = dto.getIrregularDesc(); + } + ExcelUtil.exportExcel("娓呭崟","鐗╂枡",title,values,null,response); + } + + public Material getLastByCode(String code) { + QueryWrapper<Material> query = Wrappers.query(); + query.eq("sub_code",code).orderByDesc("id").last(" limit 1"); + return mapper.selectOne(query); + } + //鐗╂枡鎺ㄩ�佸脊绐椾娇鐢� + public Response getMaterialDialog(String subCode, String subName, String subModel) { + List<Material> list=mapper.getMaterialLimit(subCode,subName,subModel); + String fileDirName = FileDirPath.getFileDirName(); + int flag=0; + Material m=new Material(); + // 杩斿洖鏄惁瀛樺湪闄勪欢 + if(list!=null&&list.size()>0){ + m=list.get(list.size()-1); + if(m.getFileUrl()!=null&&!m.getFileUrl().isEmpty()){ + File file = new File(fileDirName+File.separator+m.getFileUrl()); + if(!file.exists()) { + flag=0; + }else{ + String[] fileNames = file.list();//鑾峰彇璇ユ枃浠跺す涓嬬殑鎵�鏈夋枃浠朵互鍙婄洰褰曠殑鍚嶅瓧 + List attachFileList=new ArrayList(); + if(fileNames.length>0){ + flag=1; + for (int i=0;i<fileNames.length;i++){ + if(!fileNames[i].contains("-dwg.pdf")&&!fileNames[i].contains("-doc.pdf")) + attachFileList.add(fileNames[i]); + } + }else{ + flag=0; + } + m.setAttachFileList(attachFileList); + } + } + m.setHasAttachFlag(flag); + } + return new Response().setII(1,m!=null,m,"鐗╂枡鎺ㄩ�佸脊绐椾娇鐢�"); } } -- Gitblit v1.9.1