| | |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.whyc.dto.FileDirPath; |
| | | 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.MaterialHistory; |
| | | import com.whyc.pojo.ProductBom; |
| | | import com.whyc.util.DateUtil; |
| | | import com.whyc.util.*; |
| | |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.File; |
| | | import java.io.FileOutputStream; |
| | | import java.io.IOException; |
| | | 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; |
| | | |
| | | //查询所有的散装件信息加设置了替换关系的子件信息 |
| | | /*public Response getAllMaterial(String category,String subCode,String subName,String subModel,int pageCurr,int pageSize) { |
| | | PageHelper.startPage(pageCurr,pageSize); |
| | |
| | | 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; |
| | | // 需要统计附件状态 存在未锁定的附件:1 无附件或者附件全部锁定: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();//获取该文件夹下的所有文件以及目录的名字 |
| | | if(fileNames.length==m.getAttachLocks().size()){ |
| | | flag=0; |
| | | }else{ |
| | | flag=1; |
| | | } |
| | | } |
| | | } |
| | | m.setAttachFlag(flag); |
| | | } |
| | | } |
| | | PageInfo pageInfo=new PageInfo(list); |
| | | return new Response().setII(1,list.size()>0,pageInfo,"查询所有物料(分页,模糊查询)"); |
| | | } |
| | |
| | | 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是yc logo |
| | | PictureData pictureData = allPictures.get(l - 7); |
| | |
| | | return response.set(1,false,"拒绝解析,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查询返回附件文件夹下所有的文件列表 |
| | |
| | | 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 dirPathDB = "doc_file" + File.separator + "material" + File.separator + material.getSubCode() + "-" + material.getSubModel(); |
| | | String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getSubCode() + "-" + material.getSubModel(); |
| | | 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); |
| | | |
| | | 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); |
| | | |
| | | //路径不存在,说明是首次上传,设置物料对应的fileUrl |
| | | //同时在物料历史里面添加记录 |
| | | 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); |
| | | |
| | | return new Response().set(1, true, "上传完成"); |
| | | } |
| | | public Response dwgCompare(int materialId, int materialId2) throws IOException { |
| | | ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); |
| | | HttpServletResponse response = servletRequestAttributes.getResponse(); |
| | |
| | | } |
| | | |
| | | ByteArrayOutputStream stream = ImageDiff.compareImages(absoluteDwgPngPath, absoluteDwgPngPath2); |
| | | return new Response().setII(1,true, Base64.encodeBase64(stream.toByteArray()),null); |
| | | return new Response().setII(1,true, Base64.encodeBase64String(stream.toByteArray()),null); |
| | | //String fileName = "name.png"; |
| | | //OutputStream toClient = null; |
| | | //try { |
| | |
| | | // |
| | | //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(); |
| | | //取第一个sheet表 |
| | | 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); |
| | | } |
| | | } |