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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
package com.whyc.service;
 
import com.whyc.dto.PowerDevDataAC;
import com.whyc.dto.PowerDevDataACDC;
import com.whyc.dto.PowerDevDataDC;
import com.whyc.dto.Response;
import com.whyc.dto.paramter.PwrdevReportParam;
import com.whyc.mapper.PwrdevDataHistoryMapper;
import com.whyc.pojo.PwrdevDataHistory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
 
@Service
public class PwrdevDataHistoryService {
    @Resource
    private PwrdevDataHistoryMapper mapper;
 
    @Autowired
    private SubTablePageInfoService subService;
 
    public Response searchByCondition(PwrdevReportParam pwrdevReportParam){
        //获取设备id
        String deviceId = pwrdevReportParam.getPowerDeviceId();
        String sqlend = "%";
        //类型  天day 周week 月month 年year
        String type = pwrdevReportParam.getType();
        //年:2021  月:2021_06
        String val = pwrdevReportParam.getVal();
        //开始时间 week和day判断
        Date startTime = pwrdevReportParam.getStartTime()!=null?pwrdevReportParam.getStartTime():new Date();
        //结束时间
        Date endTime = pwrdevReportParam.getEndTime()!=null?pwrdevReportParam.getEndTime():new Date();
        //需判断月份是否跨月
        Calendar calendar_start = Calendar.getInstance();
        calendar_start.setTime(startTime);
        Calendar calendar_end = Calendar.getInstance();
        calendar_end.setTime(endTime);
        if ("year".equals(type)){
            sqlend = val+"%";
        }else if ("month".equals(type)){
            sqlend = val+"%";
        }else if("week".equals(type)){
            int year = calendar_start.get(Calendar.YEAR);
            sqlend = year+"%";
        }else{
            sqlend = calendar_start.get(Calendar.YEAR)+"%";
        }
        List<String> tableNameList = mapper.getTableNameList("tb_pwrdev_historydata_"+deviceId+"_"+sqlend);
        //如果未查询到表名,则没有数据
        if (tableNameList.size()==0){
            return new Response().set(1, false, "数据表不存在");
        }
        //数据结果
        List<PwrdevDataHistory> result = new ArrayList<>();
        //时间格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //当周跨月份时
        if ("week".equals(type) && calendar_start.get(Calendar.MONTH)!=calendar_end.get(Calendar.MONTH)){
            for (String tableName:tableNameList) {
                //开始时间的月份获取,需+1
                int startMonth = calendar_start.get(Calendar.MONTH)+1;
                int endMonth = calendar_end.get(Calendar.MONTH)+1;
                //当表名和开始时间的月份相同时,获取开始时间后的数据
                if (Integer.valueOf(tableName.substring(tableName.length()-2))==startMonth){
                    //List<PwrdevDataHistory> listMonth = mapper.getGtStartTime(tableName,startTime);
                    List<PwrdevDataHistory> listMonth = subService.getGtStartTime(tableName,startTime);
                    result.addAll(listMonth);
                }
                //当结束时间与表名的月份相同时,获取结束时间前的数据
                if (Integer.valueOf(tableName.substring(tableName.length()-2))==endMonth){
                    //List<PwrdevDataHistory> listMonth = mapper.getLtEndTime(tableName,endTime);
                    List<PwrdevDataHistory> listMonth = subService.getLtEndTime(tableName,endTime);
                    result.addAll(listMonth);
                }
            }
            //当是年或者月的时候,直接获取整表数据
        }else if("year".equals(type) || "month".equals(type)){
            for (String tableName: tableNameList ) {
                //List<PwrdevDataHistory> listMonth = mapper.getData(tableName);
                List<PwrdevDataHistory> listMonth = subService.getData(tableName);
                result.addAll(listMonth);
            }
            //当是天或者周为同月时,直接在当月表中获取开始时间到结束时间的数据
        }else{
            for (String tableName: tableNameList ) {
                int month = calendar_start.get(Calendar.MONTH)+1;
                if (Integer.valueOf(tableName.substring(tableName.length()-2))==month){
                    //List<PwrdevDataHistory> listMonth = mapper.getWeekOrDayData(tableName,startTime,endTime);
                    List<PwrdevDataHistory> listMonth = subService.getWeekOrDayData(tableName,startTime,endTime);
                    result.addAll(listMonth);
                }
            }
        }
 
        //追加 ac,acdc,dc分开返回
        String dataType = pwrdevReportParam.getDataType();
        Object dataResult;
        if(dataType.equals("ac")){
            dataResult = result.stream().map(data -> {
                PowerDevDataAC ac = new PowerDevDataAC();
                ac.setRecordTime(data.getRecordTime());
                ac.setAcAcIn1VolA(data.getAcAcIn1VolA());
                ac.setAcAcIn1VolB(data.getAcAcIn1VolB());
                ac.setAcAcIn1VolC(data.getAcAcIn1VolC());
                ac.setAcAcIn1CurrA(data.getAcAcIn1CurrA());
                ac.setAcAcIn1CurrB(data.getAcAcIn1CurrB());
                ac.setAcAcIn1CurrC(data.getAcAcIn1CurrC());
                ac.setAcAcIn2VolA(data.getAcAcIn2VolA());
                ac.setAcAcIn2VolB(data.getAcAcIn2VolB());
                ac.setAcAcIn2VolC(data.getAcAcIn2VolC());
                ac.setAcAcIn2CurrA(data.getAcAcIn2CurrA());
                ac.setAcAcIn2CurrB(data.getAcAcIn2CurrB());
                ac.setAcAcIn2CurrC(data.getAcAcIn2CurrC());
                ac.setAcTemprature(data.getAcTemprature());
                ac.setAcAcVolHLimit(data.getAcAcVolHLimit());
                ac.setAcAcVolLLimit(data.getAcAcVolLLimit());
                return ac;
            }).collect(Collectors.toList());
        }else if(dataType.equals("acdc")){
            dataResult = result.stream().map(data -> {
                PowerDevDataACDC acdc = new PowerDevDataACDC();
                acdc.setRecordTime(data.getRecordTime());
                acdc.setAcdcAcdcmTemp(data.getAcdcAcdcmTemp());
                acdc.setAcdcAcIn1VolA(data.getAcdcAcIn1VolA());
                acdc.setAcdcAcIn1VolB(data.getAcdcAcIn1VolB());
                acdc.setAcdcAcIn1VolC(data.getAcdcAcIn1VolC());
                acdc.setAcdcAcIn2VolA(data.getAcdcAcIn2VolA());
                acdc.setAcdcAcIn2VolB(data.getAcdcAcIn2VolB());
                acdc.setAcdcAcIn2VolC(data.getAcdcAcIn2VolC());
                acdc.setAcdcAcOutCurrA(data.getAcdcAcOutCurrA());
                acdc.setAcdcAcOutCurrB(data.getAcdcAcOutCurrB());
                acdc.setAcdcAcOutCurrC(data.getAcdcAcOutCurrC());
                acdc.setAcdcAcOutVolA(data.getAcdcAcOutVolA());
                acdc.setAcdcAcOutVolB(data.getAcdcAcOutVolB());
                acdc.setAcdcAcOutVolC(data.getAcdcAcOutVolC());
                acdc.setAcdcAcVolHLimit(data.getAcdcAcVolHLimit());
                acdc.setAcdcAcVolLLimit(data.getAcdcAcVolLLimit());
                acdc.setAcdcBattgroup1Curr(data.getAcdcBattgroup1Curr());
                acdc.setAcdcBattgroup1Vol(data.getAcdcBattgroup1Vol());
                acdc.setAcdcBattgroup2Curr(data.getAcdcBattgroup2Curr());
                acdc.setAcdcBattgroup2Vol(data.getAcdcBattgroup2Vol());
                acdc.setAcdcChargLimitCurr(data.getAcdcChargLimitCurr());
                acdc.setAcdcDcOutVol(data.getAcdcDcOutVol());
                acdc.setAcdcDcOutVolHLimit(data.getAcdcDcOutVolHLimit());
                acdc.setAcdcDcOutVolLLimit(data.getAcdcDcOutVolLLimit());
                acdc.setAcdcFloatChargeVol(data.getAcdcFloatChargeVol());
                acdc.setAcdcJunChargeVol(data.getAcdcJunChargeVol());
                acdc.setAcdcLoaderCurr(data.getAcdcLoaderCurr());
                acdc.setAcdcM10OutCurr(data.getAcdcM10OutCurr());
                acdc.setAcdcM11OutCurr(data.getAcdcM11OutCurr());
                acdc.setAcdcM12OutCurr(data.getAcdcM12OutCurr());
                acdc.setAcdcM13OutCurr(data.getAcdcM13OutCurr());
                acdc.setAcdcM14OutCurr(data.getAcdcM14OutCurr());
                acdc.setAcdcM15OutCurr(data.getAcdcM15OutCurr());
                acdc.setAcdcM16OutCurr(data.getAcdcM16OutCurr());
                acdc.setAcdcM1OutCurr(data.getAcdcM1OutCurr());
                acdc.setAcdcM2OutCurr(data.getAcdcM2OutCurr());
                acdc.setAcdcM3OutCurr(data.getAcdcM3OutCurr());
                acdc.setAcdcM4OutCurr(data.getAcdcM4OutCurr());
                acdc.setAcdcM5OutCurr(data.getAcdcM5OutCurr());
                acdc.setAcdcM6OutCurr(data.getAcdcM6OutCurr());
                acdc.setAcdcM7OutCurr(data.getAcdcM7OutCurr());
                acdc.setAcdcM8OutCurr(data.getAcdcM8OutCurr());
                acdc.setAcdcM9OutCurr(data.getAcdcM9OutCurr());
 
                return acdc;
            }).collect(Collectors.toList());
        }else if(dataType.equals("dc")){
            dataResult = result.stream().map(data -> {
                PowerDevDataDC dc = new PowerDevDataDC();
                dc.setRecordTime(data.getRecordTime());
                dc.setDcDcIn1Vol(data.getDcDcIn1Vol());
                dc.setDcDcIn2Vol(data.getDcDcIn2Vol());
                dc.setDcDcOut1Curr(data.getDcDcOut1Curr());
                dc.setDcDcOut1Vol(data.getDcDcOut1Vol());
                dc.setDcDcOut2Curr(data.getDcDcOut2Curr());
                dc.setDcDcOut2Vol(data.getDcDcOut2Vol());
                dc.setDcDcVolHLimit(data.getDcDcVolHLimit());
                dc.setDcDcVolLLimit(data.getDcDcVolLLimit());
                dc.setDcTemprature(data.getDcTemprature());
 
                return dc;
            }).collect(Collectors.toList());
        }else{
            return new Response().set(1,false,"传参dataType不匹配,查询失败");
        }
        //return new Response().set(1,result,"查询成功");
        return new Response().set(1,dataResult,"查询成功");
    }
 
}