package com.gk.hotwork.Controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gk.hotwork.Controller.Base.BaseController; import com.gk.hotwork.Domain.EmergencyPlan; import com.gk.hotwork.Domain.Utils.FilterObject; import com.gk.hotwork.Domain.Utils.Msg; import com.gk.hotwork.Domain.Utils.UploadUtil; import com.gk.hotwork.Service.EmergencyPlanService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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.*; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; @Api(tags = "应急预案") @RestController @RequestMapping("/emergencyPlan") public class EmergencyPlanController extends BaseController { @Autowired private EmergencyPlanService emergencyPlanService; @Value("${emergencyPlanPath}") private String emergencyPlanPath; @Value("${emergencyPlanUrl}") private String emergencyPlanUrl; @Value("${emergencyPlan}") private String emergencyPlan; @ApiOperation("分页") @PostMapping("/page") @ApiImplicitParams({ @ApiImplicitParam(name = "pageIndex",value = "当前页码"), @ApiImplicitParam(name = "pageSize",value = "每页行数"), @ApiImplicitParam(name = "filter.name",value = "{}"), }) public Msg selectPage(@RequestBody FilterObject filterObject) { Integer pageIndex = filterObject.getPageIndex(); Integer pageSize = filterObject.getPageSize(); IPage page = emergencyPlanService.selectPage(new Page<>(pageIndex, pageSize), filterObject.getFilter(), getUser()); return success(page); } @ApiOperation("/图片+文件上传") @PostMapping("/upload") @ApiImplicitParams({ @ApiImplicitParam(name = "file",value = "文件"), }) public Msg upload(@RequestParam(required = false) MultipartFile file) throws Exception { String name= UploadUtil.uploadFile(file,emergencyPlanPath); String url= emergencyPlan+name; Map map=new HashMap<>(); map.put("fileName",name); map.put("fileUrl",url); return success(map); } @ApiOperation("/下载") @PostMapping("/download") @ApiImplicitParams({ @ApiImplicitParam(name = "path",value = "文件路径"), }) public Msg upload(HttpServletRequest request, HttpServletResponse response, String path) throws Exception { try { response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); BufferedInputStream bis = null; BufferedOutputStream bos = null; File file = new File(emergencyPlanPath,path); String fileName = file.getName(); long fileLength = file.length(); response.setContentType("application/octet-stream"); String header = request.getHeader("User-Agent").toUpperCase(); if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) { fileName = URLEncoder.encode(fileName, "utf-8"); fileName = fileName.replace("+", "%20"); //IE下载文件名空格变+号问题 } else { fileName = new String(fileName.getBytes(), "ISO8859-1"); } response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\""); response.setHeader("Content-Length", String.valueOf(fileLength)); bis = new BufferedInputStream(new FileInputStream(file)); bos = new BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } bis.close(); bos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return success(); } @ApiOperation("/新增") @PostMapping("/add") @ApiImplicitParams({ @ApiImplicitParam(name = "name",value = "应急预案名称"), @ApiImplicitParam(name = "fileType",value = "应急预案文件类型"), @ApiImplicitParam(name = "fileList",value = "应急预案文件"), @ApiImplicitParam(name = "remark",value = "应急预案备注"), }) public Msg add(@RequestBody EmergencyPlan param) { emergencyPlanService.addOne(param, getUser()); return success(); } @ApiOperation("/修改") @PostMapping("/mod") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "id"), @ApiImplicitParam(name = "name",value = "应急预案名称"), @ApiImplicitParam(name = "fileType",value = "应急预案文件类型"), @ApiImplicitParam(name = "fileList",value = "应急预案文件"), @ApiImplicitParam(name = "remark",value = "应急预案备注"), }) public Msg mod(@RequestBody EmergencyPlan param) { emergencyPlanService.modOne(param, getUser()); return success(); } @ApiOperation("/删除") @PostMapping("/del") @ApiImplicitParams({ @ApiImplicitParam(name = "id",value = "id"), }) public Msg mod(@RequestBody JSONObject jsonObject) { Long id = jsonObject.getLong("id"); emergencyPlanService.delOne(id, getUser()); return success(); } }