fg电池监控平台的达梦数据库版本
whycxzp
2024-11-12 92ba7a968c67e8c8a64efea1759929649189f390
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
package com.whyc.service;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.whyc.dto.Response;
import com.whyc.mapper.MacInitMapper;
import com.whyc.mapper.MacMapper;
import com.whyc.pojo.Mac;
import com.whyc.pojo.MacInit;
import com.whyc.util.ActionUtil;
import com.whyc.util.MacUtil;
import com.whyc.util.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.plaf.TableHeaderUI;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
 
@Service
public class MacService {
    @Autowired(required = false)
    private MacMapper mapper;
 
    @Autowired(required = false)
    private MacInitMapper initMapper;
 
    //查询mac历史记录
    public Response searMacHis() {
        QueryWrapper wrapper = Wrappers.query();
        wrapper.orderByDesc("record_time");
        List<Mac> list = mapper.selectList(wrapper);
        return new Response().setII(1, list.size() > 0, list, "mac记录");
    }
 
    //获取mac
    @Transactional
    public void getMac(HttpServletRequest req, HttpServletResponse resp, int macNum) {
        //获取初始位置
        QueryWrapper wrapper = Wrappers.query();
        wrapper.orderByDesc("record_time");
        wrapper.last("limit 1");
        Mac mac = mapper.selectOne(wrapper);
        String startStr = "00:00:00";
        String stopStr = "00:00:00";
        if (mac != null) {
            startStr = Integer.toHexString((mac.getStopNum() + 1));
        } else {
            startStr = Integer.toHexString(10001);
        }
        List<String> list = MacUtil.getMac(startStr, macNum);
        //获取初始值
        QueryWrapper initwrapper = Wrappers.query();
        initwrapper.last("limit 1");
        MacInit macInit = initMapper.selectOne(initwrapper);
        //导出csv
        Date date = new Date();
        //String filename = "mac_" + ActionUtil.sdf.format(date).replace(" ", "_").replace(":", "_") + ".csv";
        String filename = "mac_" + ThreadLocalUtil.format(date,1).replace(" ", "_").replace(":", "_") + ".csv";
        try {
            // 转码防止乱码
            resp.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
            resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
            OutputStream out = resp.getOutputStream();
            if (list != null) {
                for (int i = 0; i < list.size(); i++) {
                    if (i == 0) {
                        startStr = list.get(i);
                    }
                    if (i == list.size() - 1) {
                        stopStr = list.get(i);
                    }
                    byte[] buffer = (macInit.getMacStart() + ":" + list.get(i)).getBytes();
                    out.write(buffer, 0, buffer.length);
                    out.write("\r\n".getBytes());
                }
            }
            //将结果存入数据库
            Mac inMac = new Mac();
            inMac.setNumber(macNum);
            inMac.setRecordTime(date);
            inMac.setStartNum(Integer.parseInt(startStr.replace(":", ""), 16));
            inMac.setStartStr(startStr);
            inMac.setStopNum(Integer.parseInt(stopStr.replace(":", ""), 16));
            inMac.setStopStr(stopStr);
            inMac.setUname(ActionUtil.getUser().getUName());
            mapper.insert(inMac);
            out.close();
        } catch (FileNotFoundException | UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    //从历史导出CSV
    public void getMacHis(HttpServletRequest req, HttpServletResponse resp, List<String> list) {
        //导出csv
        Date date = new Date();
        //String filename = "mac_" + ActionUtil.sdf.format(date).replace(" ", "_").replace(":", "_") + ".csv";
        String filename = "mac_" + ThreadLocalUtil.format(date,1).replace(" ", "_").replace(":", "_") + ".csv";
        try {
            // 转码防止乱码
            resp.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
            resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
            OutputStream out = resp.getOutputStream();
            if (list != null) {
                for (int i = 0; i < list.size(); i++) {
                    byte[] buffer = list.get(i).getBytes();
                    out.write(buffer, 0, buffer.length);
                    out.write("\r\n".getBytes());
                }
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}