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 io.swagger.annotations.ApiOperation;
|
import org.jeecg.modules.arj.service.AlertService;
|
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,AlertService就等于SpiderdataSpiderxrmmwService*/
|
import org.jeecg.modules.arj.entity.Alert;
|
/*其中com.terra.arj.entity就等于com.example.demo.entity,Alert就等于SpiderdataSpiderxrmmw,一种Java的模板引擎语法*/
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @author hyy
|
* @since 2023-01-04
|
*/
|
@RestController
|
@RequestMapping("/arj/alert")
|
public class AlertController {
|
|
@Resource
|
private AlertService alertService; /*导Service的包,table.serviceName就是spiderdataSpiderxrmmwService,对应之前的如下内容
|
@Autowired
|
private SpiderdataSpiderxrmmwService spiderdataSpiderxrmmwService; //使用@Autowired引入spiderdataSpiderxrmmwService类*/
|
|
//新增和修改接口
|
@PostMapping
|
public boolean save(@RequestBody Alert alert) {
|
//新增或者更新
|
return alertService.saveOrUpdate(alert);
|
}
|
|
//删除接口
|
@DeleteMapping("/{id}")
|
public boolean delete(@PathVariable Integer id) {
|
return alertService.removeById(id); //alert 就等于spiderdataSpiderxrmmw,只是换成一个变量,变成活的,可以自动变更的
|
}
|
|
//查询所有内容接口
|
@GetMapping("/list")
|
public List<Alert> findAll() {
|
return alertService.list(); //返回查询到的所有数据
|
}
|
|
@ApiOperation("最新查询")
|
@GetMapping("/last")
|
public List<Alert> last() {
|
QueryWrapper<Alert> q = new QueryWrapper<>();
|
q.eq("state",-1);// 触发报警
|
return alertService.list(q); //返回查询到的所有数据
|
}
|
|
//根据id查询
|
@GetMapping("/{id}")
|
public Alert findOne(@PathVariable Integer id) {
|
return alertService.getById(id); //返回查询到指定id的数据
|
}
|
|
//分页查询
|
@ApiOperation("分页查询")
|
@GetMapping("/page")
|
public IPage<Alert> findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize) {
|
//此处没有写查询条件逻辑,因为太活了,所有不在模板中写了
|
IPage<Alert> page = new Page<>(pageNum, pageSize); //新建一个page
|
QueryWrapper<Alert> queryWrapper = new QueryWrapper<>(); //新建一个queryWrapper
|
|
queryWrapper.orderByDesc("id"); //通过id倒序显示
|
return alertService.page(page, queryWrapper); //返回分页
|
}
|
|
|
//导出接口
|
@GetMapping("/export")
|
public void export(HttpServletResponse response) throws Exception {
|
//从数据库查出所有的数据
|
List<Alert> list = alertService.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("alert", "UTF-8"); //直接用alert作为导出文件的名字,可以修改为自己需要的中文,如:用户信息
|
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<Alert> list = reader.readAll(Alert.class); //定义一个SpiderdataSpiderxrmmw 用于接收读取到的内容
|
System.out.println(list);
|
//保持数据到数据库
|
//alertService.save(one); //save方法,插入单个
|
alertService.saveBatch(list); //saveBatch方法批量插入
|
return true; //返回一个true,表示插入成功
|
}
|
|
}
|