AdaKing88
2023-08-23 ae35159387a55199e8ab150ebb97d89d68a235bd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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,表示插入成功
    }
 
}