| | |
| | | |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.whyc.constant.Com; |
| | | import com.whyc.mapper.BattalarmDataHistoryMapper; |
| | | import com.whyc.mapper.CommonMapper; |
| | | import com.whyc.mapper.UserLogMapper; |
| | | import com.whyc.pojo.UserLog; |
| | | import com.whyc.dto.InterfaceParam; |
| | | import com.whyc.dto.paramter.AlarmPar; |
| | | import com.whyc.dto.paramter.DevAlarmPar; |
| | | import com.whyc.dto.result.AlarmRes; |
| | | import com.whyc.mapper.*; |
| | | import com.whyc.pojo.*; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.text.ParseException; |
| | | import java.util.*; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 数据量极大的表,按照年份分表,分页查询时获取数据 |
| | |
| | | |
| | | @Resource |
| | | private BattalarmDataHistoryMapper battAlarmDataHistoryMapper; |
| | | |
| | | @Resource |
| | | private DevalarmDataHistoryMapper devAlarmDataHistoryMapper; |
| | | |
| | | @Resource |
| | | private PwrdevAlarmHistoryMapper powerAlarmHistoryMapper; |
| | | |
| | | public PageInfo<Object> getPageInfo(int pageNum,int pageSize, |
| | | Date startTime,Date endTime, |
| | |
| | | int currentCount = userLogMapper.getCount(userLog); |
| | | queryCountMap.put(tableYear,currentCount); |
| | | } |
| | | else if(pojo instanceof AlarmPar){ //电池告警历史 |
| | | AlarmPar param = (AlarmPar) pojo; |
| | | param.setAlmStartTime(queryTime.get(0)); |
| | | param.setAlmStartTime1(queryTime.get(1)); |
| | | param.setRecordYear(tableName); |
| | | int currentCount = battAlarmDataHistoryMapper.getCount(param); |
| | | queryCountMap.put(tableYear,currentCount); |
| | | } |
| | | else if (pojo instanceof DevAlarmPar) { |
| | | DevAlarmPar param = (DevAlarmPar) pojo; |
| | | param.setAlmStartTime(queryTime.get(0)); |
| | | param.setAlmStartTime1(queryTime.get(1)); |
| | | param.setRecordYear(tableName); |
| | | int currentCount = devAlarmDataHistoryMapper.getCount(param); |
| | | queryCountMap.put(tableYear,currentCount); |
| | | |
| | | } |
| | | else if (pojo instanceof PwrdevAlarmHistory) { |
| | | PwrdevAlarmHistory param = (PwrdevAlarmHistory) pojo; |
| | | if(param.getRecordId() == 1) { |
| | | param.setAlmStartTime(queryTime.get(0)); |
| | | param.setAlmStartTime1(queryTime.get(1)); |
| | | param.setRecordYear(tableName); |
| | | int currentCount = powerAlarmHistoryMapper.getCount(param); |
| | | queryCountMap.put(tableYear, currentCount); |
| | | }else{ |
| | | param.setAlmStartTime(queryTime.get(0)); |
| | | param.setAlmStartTime1(queryTime.get(1)); |
| | | param.setRecordYear(tableName); |
| | | int currentCount = powerAlarmHistoryMapper.getCountForTX(param); |
| | | queryCountMap.put(tableYear, currentCount); |
| | | } |
| | | |
| | | } |
| | | else if (pojo instanceof InterfaceParam){ |
| | | InterfaceParam param = (InterfaceParam) pojo; |
| | | if(tablePrefix.equals("tb_battalarm_data_history")){ |
| | | param.setStartTime(queryTime.get(0)); |
| | | param.setEndTime(queryTime.get(1)); |
| | | param.setRecordYear(tableName); |
| | | int currentCount = battAlarmDataHistoryMapper.getCountForInterface(param); |
| | | queryCountMap.put(tableYear,currentCount); |
| | | }else if(tablePrefix.equals("tb_devalarm_data_history")){ |
| | | param.setStartTime(queryTime.get(0)); |
| | | param.setEndTime(queryTime.get(1)); |
| | | param.setRecordYear(tableName); |
| | | int currentCount = devAlarmDataHistoryMapper.getCountForInterface(param); |
| | | queryCountMap.put(tableYear,currentCount); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //分页信息 |
| | |
| | | for (String key : keySet) { |
| | | List<Date> queryTime = queryTimeForSubTables.get(key); |
| | | //====== 根据不同类型类型对象对应调整 ====== |
| | | String recordYear = key.equals("default") ? tablePrefix : tablePrefix + "_" + key; |
| | | if(pojo instanceof UserLog) { |
| | | UserLog userLog = (UserLog) pojo; |
| | | userLog.setOperationTime(queryTime.get(0)); |
| | |
| | | List<Integer> limitList = tableAndLimitMap.get(key); |
| | | userLog.setLimitStart(limitList.get(0)); |
| | | userLog.setLimitEnd(limitList.get(1)); |
| | | userLog.setRecordYear(key.equals("default") ? tablePrefix : tablePrefix + "_" + key); |
| | | userLog.setRecordYear(recordYear); |
| | | List<UserLog> list = userLogMapper.getList2(userLog); |
| | | dataList.addAll(list); |
| | | } |
| | | else if (pojo instanceof AlarmPar) { |
| | | AlarmPar data = (AlarmPar) pojo; |
| | | data.setAlmStartTime(queryTime.get(0)); |
| | | data.setAlmStartTime1(queryTime.get(1)); |
| | | |
| | | List<Integer> limitList = tableAndLimitMap.get(key); |
| | | data.setLimitStart(limitList.get(0)); |
| | | data.setLimitEnd(limitList.get(1)); |
| | | data.setRecordYear(recordYear); |
| | | List<AlarmRes> list = battAlarmDataHistoryMapper.getList2(data); |
| | | dataList.addAll(list); |
| | | } |
| | | else if (pojo instanceof DevAlarmPar) { |
| | | DevAlarmPar data = (DevAlarmPar) pojo; |
| | | data.setAlmStartTime(queryTime.get(0)); |
| | | data.setAlmStartTime1(queryTime.get(1)); |
| | | |
| | | List<Integer> limitList = tableAndLimitMap.get(key); |
| | | data.setLimitStart(limitList.get(0)); |
| | | data.setLimitEnd(limitList.get(1)); |
| | | data.setRecordYear(recordYear); |
| | | List<DevalarmDataHistory> list = devAlarmDataHistoryMapper.getList2(data); |
| | | dataList.addAll(list); |
| | | } |
| | | else if (pojo instanceof PwrdevAlarmHistory) { |
| | | PwrdevAlarmHistory data = (PwrdevAlarmHistory) pojo; |
| | | if(data.getRecordId()==1) { |
| | | data.setAlmStartTime(queryTime.get(0)); |
| | | data.setAlmStartTime1(queryTime.get(1)); |
| | | |
| | | List<Integer> limitList = tableAndLimitMap.get(key); |
| | | data.setLimitStart(limitList.get(0)); |
| | | data.setLimitEnd(limitList.get(1)); |
| | | data.setRecordYear(recordYear); |
| | | List<DevalarmDataHistory> list = powerAlarmHistoryMapper.getList2(data); |
| | | dataList.addAll(list); |
| | | }else{ |
| | | data.setAlmStartTime(queryTime.get(0)); |
| | | data.setAlmStartTime1(queryTime.get(1)); |
| | | |
| | | List<Integer> limitList = tableAndLimitMap.get(key); |
| | | data.setLimitStart(limitList.get(0)); |
| | | data.setLimitEnd(limitList.get(1)); |
| | | data.setRecordYear(recordYear); |
| | | List<DevalarmDataHistory> list = powerAlarmHistoryMapper.getListForTX(data); |
| | | dataList.addAll(list); |
| | | } |
| | | } |
| | | else if (pojo instanceof InterfaceParam){ |
| | | InterfaceParam data = (InterfaceParam) pojo; |
| | | if(tablePrefix.equals("tb_battalarm_data_history")){ |
| | | data.setStartTime(queryTime.get(0)); |
| | | data.setEndTime(queryTime.get(1)); |
| | | |
| | | List<Integer> limitList = tableAndLimitMap.get(key); |
| | | data.setLimitStart(limitList.get(0)); |
| | | data.setLimitEnd(limitList.get(1)); |
| | | data.setRecordYear(recordYear); |
| | | List<AlarmRes> list = battAlarmDataHistoryMapper.getListForInterface(data); |
| | | dataList.addAll(list); |
| | | }else if(tablePrefix.equals("tb_devalarm_data_history")){ |
| | | data.setStartTime(queryTime.get(0)); |
| | | data.setEndTime(queryTime.get(1)); |
| | | |
| | | List<Integer> limitList = tableAndLimitMap.get(key); |
| | | data.setLimitStart(limitList.get(0)); |
| | | data.setLimitEnd(limitList.get(1)); |
| | | data.setRecordYear(recordYear); |
| | | List<AlarmRes> list = devAlarmDataHistoryMapper.getListForInterface(data); |
| | | dataList.addAll(list); |
| | | } |
| | | } |
| | | } |
| | | pageInfo.setList(dataList); |
| | | return pageInfo; |
| | | } |
| | | |
| | | /**查询是否包含特定规则的表,存在,则返回表名*/ |
| | | public List<String> getTableList(String dbName,String tableLike,String regex){ |
| | | List<String> resultTableList = new LinkedList<>(); |
| | | List<String> tableList = commonMapper.getTableListLike(dbName,tableLike); |
| | | for (String tableName : tableList) { |
| | | boolean matches = Pattern.matches(regex, tableName); |
| | | if(matches){ |
| | | resultTableList.add(tableName); |
| | | } |
| | | } |
| | | return resultTableList; |
| | | } |
| | | |
| | | /**所有记录分为四级查询个数*/ |
| | | public List<Integer> getLevelList(int uId,String dbName,String tableLike,String regex,List<Integer> almTypes ){ |
| | | List<Integer> result = new LinkedList<>(); |
| | | List<String> tableList = getTableList(dbName, tableLike, regex); |
| | | List<Integer> levelList = new LinkedList(); |
| | | for (String tableName : tableList) { |
| | | List<BattalarmDataHistory> levelInfoSubList; |
| | | List<Integer> levelSubList; |
| | | if(tableLike.equals("tb_battalarm_data_history")) { |
| | | levelInfoSubList = battAlarmDataHistoryMapper.getLevelSubList(uId, tableName); |
| | | } |
| | | else if(tableLike.equals("tb_devalarm_data_history")){ |
| | | levelInfoSubList = devAlarmDataHistoryMapper.getLevelSubList(uId, tableName); |
| | | } |
| | | else{ |
| | | levelInfoSubList = powerAlarmHistoryMapper.getLevelSubList(uId, tableName,almTypes); |
| | | } |
| | | levelSubList = levelInfoSubList.stream().map(BattalarmDataHistory::getAlmLevel).collect(Collectors.toList()); |
| | | levelList.addAll(levelSubList); |
| | | } |
| | | //分为四级查询个数 |
| | | Map<Integer, List<Integer>> levelMap = levelList.stream().collect(Collectors.groupingBy(Integer::intValue)); |
| | | Set<Integer> levelSet = levelMap.keySet(); |
| | | List<Integer> listOfLevelSet = new LinkedList(); |
| | | //补齐1,2,3,4四级 |
| | | listOfLevelSet.add(1); |
| | | listOfLevelSet.add(2); |
| | | listOfLevelSet.add(3); |
| | | listOfLevelSet.add(4); |
| | | if(!levelSet.contains(1)){ |
| | | levelMap.put(1,new LinkedList<>()); |
| | | } |
| | | if(!levelSet.contains(2)){ |
| | | levelMap.put(2,new LinkedList<>()); |
| | | } |
| | | if(!levelSet.contains(3)){ |
| | | levelMap.put(3,new LinkedList<>()); |
| | | } |
| | | if(!levelSet.contains(4)){ |
| | | levelMap.put(4,new LinkedList<>()); |
| | | } |
| | | //待测试 |
| | | for (Integer level : listOfLevelSet) { |
| | | result.add(levelMap.get(level).size()); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | String regex = "tb_battalarm_data_history_?[0-9]*"; |
| | | String table = "tb_battalarm_data_history"; |
| | | System.out.println(Pattern.matches(regex,table)); |
| | | } |
| | | } |