whyclxw
2025-06-14 af432a8495b163da3bbdef7d7d6c44014396651f
src/main/java/com/whyc/service/BomAcceptanceService.java
@@ -9,15 +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;
@@ -163,7 +168,38 @@
    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,"编辑成功");
    }
   //删除图
@@ -241,4 +277,188 @@
            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,"跳转详情");
    }
}