package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.constant.UserOperation; import com.whyc.dto.FileDirPath; import com.whyc.dto.Response; import com.whyc.dto.ZipUtils; import com.whyc.mapper.ProductSoftwareMapper; import com.whyc.pojo.DocUser; import com.whyc.pojo.ProductSoftware; import com.whyc.util.ActionUtil; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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; @Service public class ProductSoftwareService { @Autowired(required = false) private ProductSoftwareMapper mapper; @Autowired private DocLogService logService; //查询软件的信息 public Response getAllSoftware(String parentModel, String softwareName,int pageCurr,int pageSize) { PageHelper.startPage(pageCurr,pageSize); QueryWrapper wrapper=new QueryWrapper(); if(parentModel!=null&&!parentModel.isEmpty()){ wrapper.like("parent_model",parentModel); } if(softwareName!=null&&!softwareName.isEmpty()){ wrapper.like("software_name",softwareName); } wrapper.orderByAsc("id"); List list=mapper.selectList(wrapper); PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list.size()>0,pageInfo,"返回数据"); } //根据软件名称实现软件下载 public void downLoadSoftware(HttpServletRequest req, HttpServletResponse resp, String softwareName) { String fileDirName = FileDirPath.getFileDirName(); QueryWrapper wrapper=new QueryWrapper(); wrapper.eq("software_name",softwareName); wrapper.last("limit 1"); ProductSoftware software=mapper.selectOne(wrapper); try { // 转码防止乱码 //resp.addHeader("Content-Disposition", "attachment;filename=" + new String(softwareName.getBytes("UTF-8"), "ISO8859-1")); resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode ( softwareName, "utf-8")); OutputStream out = resp.getOutputStream(); FileInputStream in = new FileInputStream(fileDirName+File.separator+software.getSoftwareUrl()); int len=0; byte[] buffer =new byte[1024]; //7. 将缓冲区中的数据输出 while ((len=in.read(buffer))>0){ out.write(buffer,0,len); } in.close(); out.close(); } catch (FileNotFoundException | UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } //记录日志 logService.recordOperationLogDownLoad(ActionUtil.getUser().getId(),ActionUtil.getUser().getName(), UserOperation.TYPE_DOWNLOAD_SOFWARE.getType(),new Date(),req.getRemoteAddr(), software.getSoftwareUrl(),fileDirName+File.separator+software.getSoftwareUrl(),"",softwareName,"0"); } public void insert(ProductSoftware productSoftware) { mapper.insert(productSoftware); } public List getAll() { return mapper.selectList(null); } public static void main(String[] args) throws UnsupportedEncodingException { String softwareName="散装件.zip"; //ISO8859-1 UTF-8 System.out.println(new String(softwareName.getBytes("GBK"), "UTF-8")); } }