whyclxw
1 天以前 cf9a5039e6db9d1d5963e3fe1a37d00169ec2ef7
src/main/java/com/whyc/service/BomAcceptanceService.java
@@ -9,15 +9,26 @@
import com.whyc.pojo.BOMFeedback;
import com.whyc.pojo.BomAcceptance;
import com.whyc.pojo.DefectiveProducts;
import com.whyc.pojo.ProductHistory;
import com.whyc.util.ActionUtil;
import com.whyc.util.CommonUtil;
import com.whyc.util.FileUtil;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -30,7 +41,10 @@
    //上传产品验收信息
    public Response uploadBomAcceptance(MultipartFile fileLeft, MultipartFile fileRight, MultipartFile fileFront, MultipartFile fileBack
            ,MultipartFile agreement, List<MultipartFile> multipartFileList, BomAcceptance bomAcceptance) throws IOException {
            ,MultipartFile agreement,MultipartFile bomManual,MultipartFile testReport
            ,MultipartFile icdFile,MultipartFile cadPicpart,MultipartFile namePlate
            , List<MultipartFile> multipartFileList,List<MultipartFile> installCasePics
            , BomAcceptance bomAcceptance) throws IOException {
        Date date = new Date();
        bomAcceptance.setCreateTime(date);
        long time = date.getTime();
@@ -55,6 +69,27 @@
            }
            bomAcceptance.setSparePicpart(spareDirSuffix);
        }
        //现场安装案例照片
        if(installCasePics!=null && installCasePics.size()!=0){
            String installCasePicDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "install" + File.separator;
            String installCasePicDir = rootFile + installCasePicDirSuffix;
            File fileDir = new File(installCasePicDir);
            if (!fileDir.exists()) {
                fileDir.mkdirs();
            }
            for (int i = 0; i < installCasePics.size(); i++) {
                MultipartFile multipartFile = installCasePics.get(i);
                //存储文件
                String originalFilename = multipartFile.getOriginalFilename();
                String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
                String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
                String sparePath = installCasePicDir + fileName + suffix;
                File file = new File(sparePath);
                multipartFile.transferTo(file);
            }
            bomAcceptance.setInstallPic(installCasePicDirSuffix);
        }
        String devDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "dev" + File.separator;
        String devDir = rootFile + devDirSuffix;
        //左视图
@@ -114,6 +149,71 @@
            agreement.transferTo(new File(path));
            bomAcceptance.setBomAgreement("doc_file" + File.separator + agreeDirSuffix+originalFilename);
        }
        String bomManualDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "bomManual" + File.separator;
        String bomManualDir = rootFile + bomManualDirSuffix;
        //说明书(文件)
        if(bomManual!=null){
            //存储文件
            String originalFilename = bomManual.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String path = bomManualDir + fileName + suffix;
            createFilefolderIFNotExist(path);
            bomManual.transferTo(new File(path));
            bomAcceptance.setBomManual("doc_file" + File.separator + bomManualDirSuffix+originalFilename);
        }
        String testReportDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "testReport" + File.separator;
        String testReportDir = rootFile + testReportDirSuffix;
        //检测报告(文件)
        if(testReport!=null){
            //存储文件
            String originalFilename = testReport.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String path = testReportDir + fileName + suffix;
            createFilefolderIFNotExist(path);
            testReport.transferTo(new File(path));
            bomAcceptance.setTestReport("doc_file" + File.separator + testReportDirSuffix+originalFilename);
        }
        String icdFileDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "icdFile" + File.separator;
        String icdFileDir = rootFile + icdFileDirSuffix;
        //ICD文件
        if(icdFile!=null){
            //存储文件
            String originalFilename = icdFile.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String path = icdFileDir + fileName + suffix;
            createFilefolderIFNotExist(path);
            icdFile.transferTo(new File(path));
            bomAcceptance.setIcdFile("doc_file" + File.separator + icdFileDirSuffix+originalFilename);
        }
        String cadPicpartDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "cadPicpart" + File.separator;
        String cadPicpartDir = rootFile + cadPicpartDirSuffix;
        //施工图纸(文件)
        if(cadPicpart!=null){
            //存储文件
            String originalFilename = cadPicpart.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String path = cadPicpartDir + fileName + suffix;
            createFilefolderIFNotExist(path);
            cadPicpart.transferTo(new File(path));
            bomAcceptance.setCadPicpart("doc_file" + File.separator + cadPicpartDirSuffix+originalFilename);
        }
        String namePlateDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "namePlate" + File.separator;
        String namePlateDir = rootFile + namePlateDirSuffix;
        //铭牌信息(文件)
        if(namePlate!=null){
            //存储文件
            String originalFilename = namePlate.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String path = namePlateDir + fileName + suffix;
            createFilefolderIFNotExist(path);
            namePlate.transferTo(new File(path));
            bomAcceptance.setNamePlate("doc_file" + File.separator + namePlateDirSuffix+originalFilename);
        }
        mapper.insert(bomAcceptance);
        return new Response().set(1,true,"上传成功");
    }
@@ -139,14 +239,20 @@
        if(bomAcceptance.getCreateTime1()!=null){
            wrapper.le("create_time",bomAcceptance.getCreateTime1());
        }
        wrapper.orderByDesc("create_time");
        List<BomAcceptance> list = mapper.selectList(wrapper);
        String rootFile = CommonUtil.getRootFile();//主路径
        if(list!=null&&list.size()>0){
            for (BomAcceptance acceptance:list) {
                String filePath=rootFile+acceptance.getSparePicpart();
                String sparefilePath=rootFile+acceptance.getSparePicpart();
                acceptance.setSparePicpart("doc_file"+File.separator+acceptance.getSparePicpart());
                //获取文件夹下所有的图片名
                acceptance.setNameList(FileUtil.getFileNameWithOutDirectory(filePath));
                acceptance.setNameList(FileUtil.getFileNameWithOutDirectory(sparefilePath));
                String installfilePath=rootFile+acceptance.getInstallPic();
                acceptance.setInstallPic("doc_file"+File.separator+acceptance.getInstallPic());
                //获取文件夹下所有的图片名
                acceptance.setInstallList(FileUtil.getFileNameWithOutDirectory(installfilePath));
            }
        }
        PageInfo  pageInfo=new PageInfo(list);
@@ -163,47 +269,150 @@
    public Response updateBomAcceptance(BomAcceptance bomAcceptance) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.eq("num",bomAcceptance.getNum());
        mapper.update(bomAcceptance,wrapper);
        if(bomAcceptance.getDirectName()!=null){
            wrapper.set("direct_name",bomAcceptance.getDirectName());
        }
        if(bomAcceptance.getBomSeries()!=null){
            wrapper.set("bom_series",bomAcceptance.getBomSeries());
        }
        if(bomAcceptance.getBomModel()!=null){
            wrapper.set("bom_model",bomAcceptance.getBomModel());
        }
        if(bomAcceptance.getDevParam()!=null){
            wrapper.set("dev_param",bomAcceptance.getDevParam());
        }
        if(bomAcceptance.getStandParam()!=null){
            wrapper.set("stand_param",bomAcceptance.getStandParam());
        }
        if(bomAcceptance.getBomSize()!=null){
            wrapper.set("bom_size",bomAcceptance.getBomSize());
        }
        if(bomAcceptance.getDevWeight()!=null){
            wrapper.set("dev_weight",bomAcceptance.getDevWeight());
        }
        if(bomAcceptance.getDevWeightAll()!=null){
            wrapper.set("dev_weight_all",bomAcceptance.getDevWeightAll());
        }
        if(bomAcceptance.getSparePartmodel()!=null){
            wrapper.set("spare_partmodel",bomAcceptance.getSparePartmodel());
        }
        if(bomAcceptance.getBomVersion()!=null){
            wrapper.set("bom_version",bomAcceptance.getBomVersion());
        }
        mapper.update(null,wrapper);
        return new Response().set(1,true,"编辑成功");
    }
   //删除图
    public void delPic(int num, int picNum,String picUrl,String newPicUrl) {
        String rootFile = CommonUtil.getRootFile();//主路径
    public Response delPic(int num, int picNum,String picUrl) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.eq("num",num);
        if(picNum==1){
            wrapper.set("dev_picleft",newPicUrl);
            wrapper.set("dev_picleft","");
        }
        if(picNum==2){
            wrapper.set("dev_picright",newPicUrl);
            wrapper.set("dev_picright","");
        }
        if(picNum==3){
            wrapper.set("dev_picfront",newPicUrl);
            wrapper.set("dev_picfront","");
        }
        if(picNum==4){
            wrapper.set("dev_picback",newPicUrl);
            wrapper.set("dev_picback","");
        }
        if(picNum==5){
        /*if(picNum==5){
            wrapper.set("spare_picpart",newPicUrl);
        }
        }*/
        if(picNum==6){
            wrapper.set("bom_agreement",newPicUrl);
            wrapper.set("bom_agreement","");
        }
        int flag=mapper.update(null,wrapper);
        if(flag>0){
            rootFile=rootFile.replace("doc_file","");
            //删除图片
            FileUtil.deleteFile(new File(rootFile+picUrl));
        if(picNum==7){
            wrapper.set("bom_manual","");
        }
        if(picNum==8){
            wrapper.set("test_report","");
        }
        if(picNum==9){
            wrapper.set("icd_file","");
        }
        if(picNum==10){
            wrapper.set("cad_picpart","");
        }
        if(picNum==11){
            wrapper.set("name_plate","");
        }
        /*if(picNum==12){
            wrapper.set("install_pic",newPicUrl);
        }*/
        int flag=0;
        if(picNum!=12&&picNum!=5){//文件时修改表的记录
            mapper.update(null,wrapper);
            flag=1;
        }else{
            String rootFile = CommonUtil.getRootFile();//主路径
            picUrl=picUrl.replace("doc_file\\acceptance_bom","");
            String picPath=rootFile+File.separator+"acceptance_bom"+File.separator+picUrl;
            if(picNum==5){
                //判断文件路径是否包含spare
                if(picPath.contains("spare")){
                    File file = new File(picPath);
                    if(file.isFile()){
                        //删除图片
                        FileUtil.deleteFile(file);
                        flag=1;
                    }
                }
            }
            if(picNum==12){
                //判断文件路径是否包含install
                if(picPath.contains("install")){
                    File file = new File(picPath);
                    if(file.isFile()){
                        //删除图片
                        FileUtil.deleteFile(file);
                        flag=1;
                    }
                }
            }
        }
        return new Response().set(1,flag>0,flag>0?"删除图片成功":"删除图片失败,路径不正确");
    }
    //编辑单个图片上传
    public Response updateDevPic(MultipartFile filePic, int num,int picNum,String picUrl) throws IOException {
    public Response updateDevPic(MultipartFile filePic, int num,int picNum) throws IOException {
        Date date = new Date();
        long time = date.getTime();
        String rootFile = CommonUtil.getRootFile();
        String devDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "dev" + File.separator;
        String devDirSuffix = "acceptance_bom" + File.separator + time + File.separator;
        if(picNum==1){
            devDirSuffix=devDirSuffix+"dev"+ File.separator;
        }
        if(picNum==2){
            devDirSuffix=devDirSuffix+"dev"+ File.separator;
        }
        if(picNum==3){
            devDirSuffix=devDirSuffix+"dev"+ File.separator;
        }
        if(picNum==4){
            devDirSuffix=devDirSuffix+"dev"+ File.separator;
        }
        if(picNum==6){
            devDirSuffix=devDirSuffix+"agree"+ File.separator;
        }
        if(picNum==7){
            devDirSuffix=devDirSuffix+"bomManual"+ File.separator;
        }
        if(picNum==8){
            devDirSuffix=devDirSuffix+"testReport"+ File.separator;
        }
        if(picNum==9){
            devDirSuffix=devDirSuffix+"icdFile"+ File.separator;
        }
        if(picNum==10){
            devDirSuffix=devDirSuffix+"cadPicpart"+ File.separator;
        }
        if(picNum==11){
            devDirSuffix=devDirSuffix+"namePlate"+ File.separator;
        }
        String devDir = rootFile + devDirSuffix;
        //后面图
        if(filePic!=null){
            //存储文件
            String originalFilename = filePic.getOriginalFilename();
@@ -213,17 +422,69 @@
            createFilefolderIFNotExist(path);
            filePic.transferTo(new File(path));
            String devFile="doc_file" + File.separator + devDirSuffix+originalFilename;
            //删除旧的
            delPic(num,picNum,picUrl,devFile);
            UpdateWrapper wrapper=new UpdateWrapper();
            if(picNum==1){
                wrapper.set("dev_picleft",devFile);
            }
            if(picNum==2){
                wrapper.set("dev_picright",devFile);
            }
            if(picNum==3){
                wrapper.set("dev_picfront",devFile);
            }
            if(picNum==4){
                wrapper.set("dev_picback",devFile);
            }
            if(picNum==6){
                wrapper.set("bom_agreement",devFile);
            }
            if(picNum==7){
                wrapper.set("bom_manual",devFile);
            }
            if(picNum==8){
                wrapper.set("test_report",devFile);
            }
            if(picNum==9){
                wrapper.set("icd_file",devFile);
            }
            if(picNum==10){
                wrapper.set("cad_picpart",devFile);
            }
            if(picNum==11){
                wrapper.set("name_plate",devFile);
            }
            wrapper.eq("num",num);
            mapper.update(null,wrapper);
            return new Response().set(1,true,"上传新图片成功");
        }else{
            return new Response().set(1,false,"图片不存在");
        }
    }
    //编辑多个图片上传
    public Response updatePartPic(List<MultipartFile> multipartFileList, String picUrl) throws IOException {
    public Response updatePartPic(List<MultipartFile> multipartFileList, int num) throws IOException {
        String rootFile = CommonUtil.getRootFile();
        rootFile=rootFile.replace("doc_file","");
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("num",num);
        wrapper.last("limit 1");
        BomAcceptance bomAcceptance=mapper.selectOne(wrapper);
        String picUrl=bomAcceptance.getSparePicpart();
        String spareUrl="";
        if(picUrl==null||picUrl.isEmpty()){
            long time =new Date().getTime();
            spareUrl= "acceptance_bom" + File.separator + time + File.separator+ "spare" + File.separator;
            String spareDir = rootFile + spareUrl;
            File fileDir = new File(spareDir);
            if (!fileDir.exists()) {
                fileDir.mkdirs();
            }
        }else{
            spareUrl=picUrl;
            String spareDir = rootFile + spareUrl;
            File fileDir = new File(spareDir);
            if (!fileDir.exists()) {
                fileDir.mkdirs();
            }
        }
        //配件存储
        if(multipartFileList!=null && multipartFileList.size()!=0){
            for (int i = 0; i < multipartFileList.size(); i++) {
@@ -232,13 +493,456 @@
                String originalFilename = multipartFile.getOriginalFilename();
                String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
                String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
                String sparePath = rootFile+picUrl + fileName + suffix;
                String sparePath = rootFile+spareUrl + fileName + suffix;
                File file = new File(sparePath);
                multipartFile.transferTo(file);
                //如果原路径为空
                if(picUrl==null||picUrl.isEmpty()){
                    UpdateWrapper wrapper1=new UpdateWrapper();
                    wrapper1.set("spare_picpart",spareUrl);
                    wrapper1.eq("num",num);
                    mapper.update(null,wrapper1);
                }
            }
            return new Response().set(1,true,"上传成功");
        }else{
            return new Response().set(1,false,"图片不存在");
        }
    }
    //编辑现场安装图片多个图片上传
    public Response updateInstallPic(List<MultipartFile> multipartFileList, int num) throws IOException {
        String rootFile = CommonUtil.getRootFile();
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("num",num);
        wrapper.last("limit 1");
        BomAcceptance bomAcceptance=mapper.selectOne(wrapper);
        String picUrl=bomAcceptance.getInstallPic();
        String installUrl="";
        if(picUrl==null||picUrl.isEmpty()){
            long time =new Date().getTime();
            installUrl= "acceptance_bom" + File.separator + time + File.separator+ "install" + File.separator;
            String spareDir = rootFile + installUrl;
            File fileDir = new File(spareDir);
            if (!fileDir.exists()) {
                fileDir.mkdirs();
            }
        }else{
            installUrl=picUrl;
            String spareDir = rootFile + installUrl;
            File fileDir = new File(spareDir);
            if (!fileDir.exists()) {
                fileDir.mkdirs();
            }
        }
        //配件存储
        if(multipartFileList!=null && multipartFileList.size()!=0){
            for (int i = 0; i < multipartFileList.size(); i++) {
                MultipartFile multipartFile = multipartFileList.get(i);
                //存储文件
                String originalFilename = multipartFile.getOriginalFilename();
                String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
                String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
                String installPath = rootFile+installUrl + fileName + suffix;
                File file = new File(installPath);
                multipartFile.transferTo(file);
                //如果原路径为空
                if(picUrl==null||picUrl.isEmpty()){
                    UpdateWrapper wrapper1=new UpdateWrapper();
                    wrapper1.set("install_pic",installUrl);
                    wrapper1.eq("num",num);
                    mapper.update(null,wrapper1);
                }
            }
            return new Response().set(1,true,"上传成功");
        }else{
            return new Response().set(1,false,"图片不存在");
        }
    }
    //导出产品验收信息
    public void downloadBomAcceptance(HttpServletRequest req, HttpServletResponse resp, int num) {
        //读取产品信息
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("num",num);
        wrapper.last("limit 1");
        BomAcceptance bomAcceptance=mapper.selectOne(wrapper);
        //生成excel
        creatBomAcceptanceExcel(resp,bomAcceptance);
    }
    //生成excel
    private void creatBomAcceptanceExcel( HttpServletResponse resp, BomAcceptance bomAcceptance) {
        String rootFile = CommonUtil.getRootFile();
        List<String> sparePicList=new ArrayList<>();
        if(bomAcceptance.getSparePicpart()!=null||!bomAcceptance.getSparePicpart().isEmpty()){
            String filePath=rootFile+bomAcceptance.getSparePicpart();
            //获取文件夹下所有的图片名
            sparePicList=FileUtil.getFileNameWithOutDirectory(filePath);
        }
        List<String> installPicList=new ArrayList<>();
        if(bomAcceptance.getInstallPic()!=null||!bomAcceptance.getInstallPic().isEmpty()){
            String filePath=rootFile+bomAcceptance.getInstallPic();
            //获取文件夹下所有的图片名
            installPicList=FileUtil.getFileNameWithOutDirectory(filePath);
        }
        String devRoot=rootFile.replace("doc_file", "");
        List<String> devPicList=new ArrayList<>();
        devPicList.add(bomAcceptance.getDevPicleft());
        devPicList.add(bomAcceptance.getDevPicfront());
        devPicList.add(bomAcceptance.getDevPicright());
        devPicList.add(bomAcceptance.getDevPicback());
        String fileName="产品验收信息记录";
        //创建单个sheet
        HSSFWorkbook wb = new HSSFWorkbook();
        //字体格式-加粗
        HSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        cellStyle.setBorderBottom(BorderStyle.THICK);
        cellStyle.setBorderLeft(BorderStyle.THICK);
        cellStyle.setBorderRight(BorderStyle.THICK);
        cellStyle.setBorderTop(BorderStyle.THICK);
        HSSFFont font = wb.createFont();
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        cellStyle.setFont(font);
        HSSFSheet sheet = wb.createSheet("产品验收信息记录");
        sheet.setColumnWidth(0,10000);
        if(sparePicList!=null&&sparePicList.size()>0){
             int length = sparePicList.size();
             length=length>5?length:4;
             for (int i = 1; i < length+1; i++){
                 sheet.setColumnWidth(i,5000);
             }
        }
        sheet.setDefaultRowHeight((short)(1000));
        //图片元素
        HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
        int rowNum=0;
        HSSFRow row=sheet.createRow(rowNum);
        HSSFCell cell=row.createCell(0);
        cell.setCellValue("产品验收信息记录表");
        cell.setCellStyle(cellStyle);
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("研发负责人");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getDirectName());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("产品系列");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getBomSeries());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("产品型号");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getBomModel());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("产品版本号");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getBomVersion());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("技术指标");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getDevParam());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("技术指标");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getStandParam());
        cell.setCellStyle(cellStyle);
        sheet.addMergedRegion(new CellRangeAddress(4,5,0,0));
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("长x宽x高(mm)");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getBomSize());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("主机净重(KG)");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getDevWeight());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("整机全重(含包装箱,配件)(KG)");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getDevWeightAll());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("主机照片(左侧图,正面图,右侧图,后面图)");
        cell.setCellStyle(cellStyle);
        if(devPicList!=null&&devPicList.size()>0){
            ByteArrayOutputStream byteArrayOut = null;
            for(int i=0;i<devPicList.size();i++){
                String picUrl=devPicList.get(i);
                if(picUrl.length()==0){
                    continue;
                }
                try {
                    byteArrayOut = new ByteArrayOutputStream();
                    String path=devRoot+File.separator+picUrl;
                    BufferedImage bufferImg = ImageIO.read(new FileInputStream(new File(path)));
                    ImageIO.write(bufferImg, "png", byteArrayOut);
                    //anchor主要用于设置图片的属性
                    HSSFClientAnchor anchor = new HSSFClientAnchor(50, 20, 1000, 230,(short) (i+1), rowNum, (short) (i+1), rowNum);
                    anchor.setAnchorType(ClientAnchor.MOVE_AND_RESIZE);
                    //插入图片
                    patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    if (byteArrayOut != null) {
                        try {
                            byteArrayOut.close();
                        } catch (IOException e) {
                            System.out.println("关闭ByteArrayOutputStream失败");
                        }
                    }
                }
            }
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("配件照片");
        cell.setCellStyle(cellStyle);
        if(sparePicList!=null&&sparePicList.size()>0){
            ByteArrayOutputStream byteArrayOut = null;
            for(int i=0;i<sparePicList.size();i++){
                String picUrl=sparePicList.get(i);
                try {
                    byteArrayOut = new ByteArrayOutputStream();
                    String path=rootFile+File.separator+bomAcceptance.getSparePicpart()+File.separator+picUrl;
                    BufferedImage bufferImg = ImageIO.read(new FileInputStream(new File(path)));
                    ImageIO.write(bufferImg, "png", byteArrayOut);
                    //anchor主要用于设置图片的属性
                    HSSFClientAnchor anchor = new HSSFClientAnchor(50, 20, 1000, 230,(short) (i+1), rowNum, (short) (i+1), rowNum);
                    anchor.setAnchorType(ClientAnchor.MOVE_AND_RESIZE);
                    //插入图片
                    patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    if (byteArrayOut != null) {
                        try {
                            byteArrayOut.close();
                        } catch (IOException e) {
                            System.out.println("关闭ByteArrayOutputStream失败");
                        }
                    }
                }
            }
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("配件型号规格");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        cell.setCellValue(bomAcceptance.getSparePartmodel());
        cell.setCellStyle(cellStyle);
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("端口协议文本");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        if(bomAcceptance.getBomAgreement()!=null&&bomAcceptance.getBomAgreement().length()>0){
            String agreement=bomAcceptance.getBomAgreement();
            String agreementName = agreement.substring(agreement.lastIndexOf(File.separator)+1);
            agreementName = agreementName.substring(0,agreementName.lastIndexOf("."));
            cell.setCellValue(agreementName);
            cell.setCellStyle(cellStyle);
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("说明书");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        if(bomAcceptance.getBomManual()!=null&&bomAcceptance.getBomManual().length()>0){
            String bomManual=bomAcceptance.getBomManual();
            String bomManualName = bomManual.substring(bomManual.lastIndexOf(File.separator)+1);
            bomManualName = bomManualName.substring(0,bomManualName.lastIndexOf("."));
            cell.setCellValue(bomManualName);
            cell.setCellStyle(cellStyle);
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("检测报告");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        if(bomAcceptance.getTestReport()!=null&&bomAcceptance.getTestReport().length()>0){
            String testReport=bomAcceptance.getTestReport();
            String testReportName = testReport.substring(testReport.lastIndexOf(File.separator)+1);
            testReportName = testReportName.substring(0,testReportName.lastIndexOf("."));
            cell.setCellValue(testReportName);
            cell.setCellStyle(cellStyle);
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("ICD文件");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        if(bomAcceptance.getIcdFile()!=null&&bomAcceptance.getIcdFile().length()>0){
            String icdFile=bomAcceptance.getTestReport();
            String icdFileName = icdFile.substring(icdFile.lastIndexOf(File.separator)+1);
            icdFileName = icdFileName.substring(0,icdFileName.lastIndexOf("."));
            cell.setCellValue(icdFileName);
            cell.setCellStyle(cellStyle);
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("施工图纸");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        if(bomAcceptance.getCadPicpart()!=null&&bomAcceptance.getCadPicpart().length()>0){
            String cadPicpart=bomAcceptance.getCadPicpart();
            String cadPicpartName = cadPicpart.substring(cadPicpart.lastIndexOf(File.separator)+1);
            cadPicpartName = cadPicpartName.substring(0,cadPicpartName.lastIndexOf("."));
            cell.setCellValue(cadPicpartName);
            cell.setCellStyle(cellStyle);
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("铭牌信息");
        cell.setCellStyle(cellStyle);
        cell=row.createCell(1);
        if(bomAcceptance.getNamePlate()!=null&&bomAcceptance.getNamePlate().length()>0){
            String namePlate=bomAcceptance.getNamePlate();
            String namePlateName = namePlate.substring(namePlate.lastIndexOf(File.separator)+1);
            namePlateName = namePlateName.substring(0,namePlateName.lastIndexOf("."));
            cell.setCellValue(namePlateName);
            cell.setCellStyle(cellStyle);
        }
        rowNum++;
        row=sheet.createRow(rowNum);
        cell=row.createCell(0);
        cell.setCellValue("现场安装案例照片");
        cell.setCellStyle(cellStyle);
        if(installPicList!=null&&installPicList.size()>0){
            ByteArrayOutputStream byteArrayOut = null;
            for(int i=0;i<installPicList.size();i++){
                String picUrl=installPicList.get(i);
                try {
                    byteArrayOut = new ByteArrayOutputStream();
                    String path=rootFile+File.separator+bomAcceptance.getInstallPic()+File.separator+picUrl;
                    BufferedImage bufferImg = ImageIO.read(new FileInputStream(new File(path)));
                    ImageIO.write(bufferImg, "png", byteArrayOut);
                    //anchor主要用于设置图片的属性
                    HSSFClientAnchor anchor = new HSSFClientAnchor(50, 20, 1000, 230,(short) (i+1), rowNum, (short) (i+1), rowNum);
                    anchor.setAnchorType(ClientAnchor.MOVE_AND_RESIZE);
                    //插入图片
                    patriarch.createPicture(anchor, wb.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    if (byteArrayOut != null) {
                        try {
                            byteArrayOut.close();
                        } catch (IOException e) {
                            System.out.println("关闭ByteArrayOutputStream失败");
                        }
                    }
                }
            }
        }
        //将文件存到指定位置
        OutputStream os = null;
        try {
            os = resp.getOutputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode (fileName+ ".xls", "utf-8"));
            resp.setCharacterEncoding("UTF-8");
            //不保存缓存信息与response.reset同样效果
            resp.addHeader("Pragma", "no-cache");
            resp.addHeader("Cache-Control", "no-cache");
            wb.write(os);
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //跳转详情
    public Response getBomAcceptanceByNum(int num) {
        String rootFile = CommonUtil.getRootFile();
        //读取产品信息
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.eq("num",num);
        wrapper.last("limit 1");
        BomAcceptance bomAcceptance=mapper.selectOne(wrapper);
        String sparefilePath=rootFile+bomAcceptance.getSparePicpart();
        bomAcceptance.setSparePicpart("doc_file"+File.separator+bomAcceptance.getSparePicpart());
        //获取文件夹下所有的图片名
        bomAcceptance.setNameList(FileUtil.getFileNameWithOutDirectory(sparefilePath));
        String installfilePath=rootFile+bomAcceptance.getInstallPic();
        bomAcceptance.setInstallPic("doc_file"+File.separator+bomAcceptance.getInstallPic());
        //获取文件夹下所有的图片名
        bomAcceptance.setInstallList(FileUtil.getFileNameWithOutDirectory(installfilePath));
        return new Response().set(1,bomAcceptance,"跳转详情");
    }
}