package org.jeecg.modules.arj.controller; import cn.hutool.core.io.IoUtil; //导包 import cn.hutool.poi.excel.ExcelReader; //导包 import cn.hutool.poi.excel.ExcelUtil; //导包 import cn.hutool.poi.excel.ExcelWriter; //导包 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; //导包 import com.baomidou.mybatisplus.core.metadata.IPage; //导包 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; //导包 import org.jeecg.modules.arj.util.HttpResult; import org.jeecg.modules.arj.service.SysMenuService; import org.springframework.web.bind.annotation.*; //导包 import org.springframework.web.multipart.MultipartFile; //导包 import javax.annotation.Resource; //导包 import javax.servlet.ServletOutputStream; //导包 import javax.servlet.http.HttpServletResponse; //导包 import java.io.InputStream; //导包 import java.net.URLEncoder; //导包 import java.util.List; //导包 /*其中com.terra.arj.service就等于 com.example.demo.service,SysMenuService就等于SpiderdataSpiderxrmmwService*/ import org.jeecg.modules.arj.entity.SysMenu; /*其中com.terra.arj.entity就等于com.example.demo.entity,SysMenu就等于SpiderdataSpiderxrmmw,一种Java的模板引擎语法*/ import org.springframework.web.bind.annotation.RestController; /** *

* 菜单管理 前端控制器 *

* * @author hyy * @since 2023-01-09 */ @RestController @RequestMapping("/menu") public class SysMenuController { @Resource private SysMenuService sysMenuService; /*导Service的包,table.serviceName就是spiderdataSpiderxrmmwService,对应之前的如下内容 @Autowired private SpiderdataSpiderxrmmwService spiderdataSpiderxrmmwService; //使用@Autowired引入spiderdataSpiderxrmmwService类*/ //新增和修改接口 @PostMapping("/save") public boolean save(@RequestBody SysMenu sysMenu) { //新增或者更新 return sysMenuService.saveOrUpdate(sysMenu); } //删除接口 @DeleteMapping("/{id}") public boolean delete(@PathVariable Integer id) { return sysMenuService.removeById(id); //sysMenu 就等于spiderdataSpiderxrmmw,只是换成一个变量,变成活的,可以自动变更的 } //查询所有内容接口 @GetMapping("/findNavTree") public HttpResult findNavTree(@RequestParam String userName) { return HttpResult.ok(sysMenuService.findTree(userName,1)); //返回查询到的所有数据 } @GetMapping(value = "/findMenuTree") public HttpResult findMenuTree() { QueryWrapper q = new QueryWrapper<>(); q.eq("type" , 0); return HttpResult.ok(sysMenuService.list(q)); //返回查询到的所有数据 } //根据id查询 @GetMapping("/{id}") public SysMenu findOne(@PathVariable Integer id) { return sysMenuService.getById(id); //返回查询到指定id的数据 } //分页查询 @GetMapping("/page") public IPage findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize) { //此处没有写查询条件逻辑,因为太活了,所有不在模板中写了 IPage page = new Page<>(pageNum, pageSize); //新建一个page QueryWrapper queryWrapper = new QueryWrapper<>(); //新建一个queryWrapper queryWrapper.orderByDesc("id"); //通过id倒序显示 return sysMenuService.page(page, queryWrapper); //返回分页 } //导出接口 @GetMapping("/export") public void export(HttpServletResponse response) throws Exception { //从数据库查出所有的数据 List list = sysMenuService.list(); //通过工具类创建writer 写出到磁盘路径 //内存操作,写出到浏览器 ExcelWriter writer = ExcelUtil.getWriter(true); // //自定义标题别名 。导出的时候,不起别名,就可以获取到一个英文的模板 // writer.addHeaderAlias("spliderimgurl","照片url"); // writer.addHeaderAlias("imgtitle","照片标题"); // writer.addHeaderAlias("imgpeople","照片人名"); //一次性写出list内的对象到excel,使用默认样式,强制输出标题 writer.write(list, true); //把list对象写入到writer中 //设置浏览器响应的格式,基本上都是固定的,且必须要设置 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); String fileName = URLEncoder.encode("sysMenu" , "UTF-8"); //直接用sysMenu作为导出文件的名字,可以修改为自己需要的中文,如:用户信息 response.setHeader("Content-Disposition" , "attachment;filename=" + fileName + ".xls"); ServletOutputStream out = response.getOutputStream(); //获取数据流 writer.flush(out, true); //把writer中的内容刷新到数据流中 out.close(); // 关闭writer,释放内存 writer.close(); //此处记得关闭输出Servlet流 IoUtil.close(out); } //导入接口 @PostMapping("/import") public Boolean imp(MultipartFile file) throws Exception { //返回一个布尔值 InputStream inputStream = file.getInputStream(); //获取流文件内容 ExcelReader reader = ExcelUtil.getReader(inputStream); //第一种方式,通过javabean的方式读取Excel内的对象,要求导入的表头要是英文,和导出的英文字段要一致 // 比较推荐这种方法 List list = reader.readAll(SysMenu.class); //定义一个SpiderdataSpiderxrmmw 用于接收读取到的内容 System.out.println(list); //保持数据到数据库 //sysMenuService.save(one); //save方法,插入单个 sysMenuService.saveBatch(list); //saveBatch方法批量插入 return true; //返回一个true,表示插入成功 } }