4个文件已修改
429 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/BomAcceptanceController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/BomAcceptance.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BomAcceptanceService.java 339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/FileUtil.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/BomAcceptanceController.java
@@ -13,6 +13,8 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@@ -28,10 +30,11 @@
    @ApiOperation(value = "上传产品验收信息")
    @PostMapping("uploadBomAcceptance")
    public Response uploadBomAcceptance(@RequestParam(required = false) MultipartFile fileLeft,@RequestParam(required = false) MultipartFile fileRight
            ,@RequestParam(required = false) MultipartFile fileFront,@RequestParam(required = false) MultipartFile fileBack,
            @RequestPart(required = false) List<MultipartFile> multipartFileList, @RequestParam String feedbackJson) throws IOException {
            ,@RequestParam(required = false) MultipartFile fileFront,@RequestParam(required = false) MultipartFile fileBack
            ,@RequestParam(required = false) MultipartFile agreement
            ,@RequestPart(required = false) List<MultipartFile> multipartFileList, @RequestParam String feedbackJson) throws IOException {
        BomAcceptance bomAcceptance = ActionUtil.getGson().fromJson(feedbackJson, BomAcceptance.class);
        return service.uploadBomAcceptance(fileLeft,fileRight,fileFront,fileBack,multipartFileList,bomAcceptance);
        return service.uploadBomAcceptance(fileLeft,fileRight,fileFront,fileBack,agreement,multipartFileList,bomAcceptance);
    }
    @ApiOperation("查询产品验收信息")
@@ -39,4 +42,47 @@
    public Response getBomAcceptance(@RequestBody BomAcceptance bomAcceptance,@RequestParam int pageNum,@RequestParam int pageSize){
        return service.getBomAcceptance(bomAcceptance,pageNum,pageSize);
    }
    @ApiOperation("删除产品验收信息")
    @GetMapping("delBomAcceptance")
    public Response delBomAcceptance(@RequestParam int num){
        return service.delBomAcceptance(num);
    }
    @ApiOperation(value = "编辑产品验收信息")
    @PostMapping("updateBomAcceptance")
    public Response updateBomAcceptance(@RequestBody BomAcceptance bomAcceptance){
        return service.updateBomAcceptance(bomAcceptance);
    }
    @ApiOperation(value = "编辑单个图片上传")
    @PostMapping("updateDevPic")
    public Response updateDevPic(@RequestParam(required = false) MultipartFile filePic,@RequestParam int num,@RequestParam int picNum,@RequestParam(required = false) String picUrl) throws IOException {
        return service.updateDevPic(filePic,num,picNum,picUrl);
    }
    @ApiOperation(value = "编辑多个图片上传")
    @PostMapping("updatePartPic")
    public Response updatePartPic(@RequestPart(required = false) List<MultipartFile> multipartFileList,@RequestParam(required = false) String picUrl) throws IOException {
        return service.updatePartPic(multipartFileList,picUrl);
    }
    @ApiOperation(value = "删除图")
    @PostMapping("delPic")
    public Response delPic(@RequestParam int num,@RequestParam int picNum,@RequestParam String picUrl){
        service.delPic(num,picNum,picUrl,"");
        return new Response().set(1,true,"删除图成功");
    }
    @ApiOperation(value = "导出产品验收信息")
    @GetMapping("downloadBomAcceptance")
    public void downloadBomAcceptance(HttpServletRequest req, HttpServletResponse resp, @RequestParam int num){
        service.downloadBomAcceptance(req,resp,num);
    }
    @ApiOperation(value = "跳转详情")
    @PostMapping("getBomAcceptanceByNum")
    public Response getBomAcceptanceByNum(@RequestParam int num){
        return service.getBomAcceptanceByNum(num);
    }
}
src/main/java/com/whyc/pojo/BomAcceptance.java
@@ -77,6 +77,12 @@
    @ApiModelProperty(value = "配件型号规格")
    private String sparePartmodel;
    @ApiModelProperty(value = "产品版本号")
    private String bomVersion;
    @ApiModelProperty(value = "协议文本路径")
    private String bomAgreement;
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;
src/main/java/com/whyc/service/BomAcceptanceService.java
@@ -1,6 +1,7 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
@@ -8,14 +9,20 @@
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.IndexedColors;
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.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
@@ -27,8 +34,10 @@
    private BomAcceptanceMapper mapper;
    //上传产品验收信息
    public Response uploadBomAcceptance(MultipartFile fileLeft, MultipartFile fileRight, MultipartFile fileFront, MultipartFile fileBack, List<MultipartFile> multipartFileList, BomAcceptance bomAcceptance) throws IOException {
    public Response uploadBomAcceptance(MultipartFile fileLeft, MultipartFile fileRight, MultipartFile fileFront, MultipartFile fileBack
            ,MultipartFile agreement, List<MultipartFile> multipartFileList, BomAcceptance bomAcceptance) throws IOException {
        Date date = new Date();
        bomAcceptance.setCreateTime(date);
        long time = date.getTime();
        String rootFile = CommonUtil.getRootFile();
        //配件存储
@@ -86,7 +95,7 @@
            fileFront.transferTo(new File(path));
            bomAcceptance.setDevPicfront("doc_file" + File.separator + devDirSuffix+originalFilename);
        }
        //左视图
        //后面图
        if(fileBack!=null){
            //存储文件
            String originalFilename = fileBack.getOriginalFilename();
@@ -96,6 +105,19 @@
            createFilefolderIFNotExist(path);
            fileBack.transferTo(new File(path));
            bomAcceptance.setDevPicback("doc_file" + File.separator + devDirSuffix+originalFilename);
        }
        String agreeDirSuffix = "acceptance_bom" + File.separator + time + File.separator+ "agree" + File.separator;
        String agreeDir = rootFile + agreeDirSuffix;
        //协议
        if(agreement!=null){
            //存储文件
            String originalFilename = agreement.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String path = agreeDir + fileName + suffix;
            createFilefolderIFNotExist(path);
            agreement.transferTo(new File(path));
            bomAcceptance.setBomAgreement("doc_file" + File.separator + agreeDirSuffix+originalFilename);
        }
        mapper.insert(bomAcceptance);
        return new Response().set(1,true,"上传成功");
@@ -113,6 +135,9 @@
        if(bomAcceptance.getBomModel()!=null){
            wrapper.like("bom_model",bomAcceptance.getBomModel());
        }
        if(bomAcceptance.getBomVersion()!=null){
            wrapper.like("bom_version",bomAcceptance.getBomVersion());
        }
        if(bomAcceptance.getCreateTime()!=null){
            wrapper.ge("create_time",bomAcceptance.getCreateTime());
        }
@@ -123,8 +148,8 @@
        String rootFile = CommonUtil.getRootFile();//主路径
        if(list!=null&&list.size()>0){
            for (BomAcceptance acceptance:list) {
                acceptance.setSparePicpart("doc_file"+File.separator+acceptance.getSparePicpart());
                String filePath=rootFile+acceptance.getSparePicpart();
                acceptance.setSparePicpart("doc_file"+File.separator+acceptance.getSparePicpart());
                //获取文件夹下所有的图片名
                acceptance.setNameList(FileUtil.getFileNameWithOutDirectory(filePath));
            }
@@ -132,4 +157,308 @@
        PageInfo  pageInfo=new PageInfo(list);
        return new Response().setII(1,list.size()>0,pageInfo,"查询产品验收信息");
    }
    //删除产品验收信息
    public Response delBomAcceptance(int num) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.eq("num",num);
        int bl=mapper.delete(wrapper);
        return new Response().setII(1,bl>0,bl,"删除产品验收信息");
    }
   //编辑产品验收信息
    public Response updateBomAcceptance(BomAcceptance bomAcceptance) {
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.eq("num",bomAcceptance.getNum());
        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();//主路径
        UpdateWrapper wrapper=new UpdateWrapper();
        wrapper.eq("num",num);
        if(picNum==1){
            wrapper.set("dev_picleft",newPicUrl);
        }
        if(picNum==2){
            wrapper.set("dev_picright",newPicUrl);
        }
        if(picNum==3){
            wrapper.set("dev_picfront",newPicUrl);
        }
        if(picNum==4){
            wrapper.set("dev_picback",newPicUrl);
        }
        if(picNum==5){
            wrapper.set("spare_picpart",newPicUrl);
        }
        if(picNum==6){
            wrapper.set("bom_agreement",newPicUrl);
        }
        int flag=mapper.update(null,wrapper);
        if(flag>0){
            rootFile=rootFile.replace("doc_file","");
            //删除图片
            FileUtil.deleteFile(new File(rootFile+picUrl));
        }
    }
    //编辑单个图片上传
    public Response updateDevPic(MultipartFile filePic, int num,int picNum,String picUrl) 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 devDir = rootFile + devDirSuffix;
        //后面图
        if(filePic!=null){
            //存储文件
            String originalFilename = filePic.getOriginalFilename();
            String fileName = originalFilename.substring(0, originalFilename.lastIndexOf("."));
            String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            String path = devDir + fileName + suffix;
            createFilefolderIFNotExist(path);
            filePic.transferTo(new File(path));
            String devFile="doc_file" + File.separator + devDirSuffix+originalFilename;
            //删除旧的
            delPic(num,picNum,picUrl,devFile);
            return new Response().set(1,true,"上传新图片成功");
        }else{
            return new Response().set(1,false,"图片不存在");
        }
    }
    //编辑多个图片上传
    public Response updatePartPic(List<MultipartFile> multipartFileList, String picUrl) throws IOException {
        String rootFile = CommonUtil.getRootFile();
        rootFile=rootFile.replace("doc_file","");
        //配件存储
        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 sparePath = rootFile+picUrl + fileName + suffix;
                File file = new File(sparePath);
                multipartFile.transferTo(file);
            }
            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(req,resp,bomAcceptance);
    }
    //生成excel
    private void creatBomAcceptanceExcel(HttpServletRequest req, HttpServletResponse resp, BomAcceptance bomAcceptance) {
        String fileName="产品验收信息记录";
        //创建单个sheet
        HSSFWorkbook wb = new HSSFWorkbook();
        //字体格式-加粗
        HSSFCellStyle cellStyle = wb.createCellStyle();
        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        HSSFFont font = wb.createFont();
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        cellStyle.setFont(font);
        HSSFSheet sheet = wb.createSheet("产品验收信息记录");
        sheet.setColumnWidth(1,10000);
        sheet.setDefaultRowHeight((short)(1000));
        //图片元素
        HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
        int rowNum=0;
        HSSFRow row=sheet.createRow(rowNum);
        HSSFCell cell=row.createCell(0);
        cell=row.createCell(0);
        cell.setCellValue("产品验收信息记录");
        cell.setCellStyle(cellStyle);
        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);
        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);
        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);
        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);
        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);
        String agreement=bomAcceptance.getBomAgreement();
        cell.setCellValue(agreement);
        cell.setCellStyle(cellStyle);
        //将文件存到指定位置
        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 filePath=rootFile+bomAcceptance.getSparePicpart();
        bomAcceptance.setSparePicpart("doc_file"+File.separator+bomAcceptance.getSparePicpart());
        //获取文件夹下所有的图片名
        bomAcceptance.setNameList(FileUtil.getFileNameWithOutDirectory(filePath));
        return new Response().set(1,bomAcceptance,"跳转详情");
    }
}
src/main/java/com/whyc/util/FileUtil.java
@@ -78,22 +78,26 @@
            System.out.println("文件删除失败,请检查文件是否存在以及文件路径是否正确");
            return false;
        }
        //获取目录下子文件
        File[] files = file.listFiles();
        //遍历该目录下的文件对象
        for (File f : files) {
            //判断子目录是否存在子目录,如果是文件则删除
            if (f.isDirectory()) {
                //递归删除目录下的文件
                deleteFile(f);
            } else {
                //文件删除
                f.delete();
                //打印文件名
        if(file.isDirectory()){
            //获取目录下子文件
            File[] files = file.listFiles();
            //遍历该目录下的文件对象
            for (File f : files) {
                //判断子目录是否存在子目录,如果是文件则删除
                if (f.isDirectory()) {
                    //递归删除目录下的文件
                    deleteFile(f);
                } else {
                    //文件删除
                    f.delete();
                    //打印文件名
                }
            }
            //文件夹删除
            file.delete();
        }else{
            file.delete();
        }
        //文件夹删除
        file.delete();
        return true;
    }