whycxzp
2023-06-21 b0cf8fb827157f3bfc31d5ae155fdb786d0a9e24
src/main/java/com/whyc/service/MaterialService.java
@@ -5,6 +5,7 @@
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;
@@ -24,15 +25,9 @@
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
@@ -274,15 +269,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是yc logo
                                PictureData pictureData = allPictures.get(l - 7);
@@ -308,6 +303,19 @@
                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查询返回附件文件夹下所有的文件列表
@@ -434,6 +442,45 @@
        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.getId() + "-" + material.getSubCode() + "-" + material.getSubModel();
        String dirPath = CommonUtil.getRootFile() + "material" + File.separator + material.getId() + "-" + 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();
        temp.setId(material.getId());
        if(fileSuffix.equals("dwg")){
            temp.setDwgUrl(dirPathDB + fileFullName);
        }else {
            temp.setPictureUrl(dirPathDB + fileFullName);
        }
        mapper.updateById(temp);
        return new Response().set(1, true, "上传完成");
    }
    public Response dwgCompare(int materialId, int materialId2) throws IOException {
        ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletResponse response = servletRequestAttributes.getResponse();
@@ -457,7 +504,7 @@
        }
        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 {
@@ -477,4 +524,56 @@
        //
        //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);
    }
}