From 659abe57f755e128e68d0a56bfc473e0baa4260b Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期三, 26 四月 2023 18:28:08 +0800 Subject: [PATCH] 1 --- src/main/resources/mapping/DictRecordMapper.xml | 7 +++ src/main/java/com/yssh/dao/DictRecordMapper.java | 2 + src/main/java/com/yssh/service/IWarningAnalyseService.java | 8 ++- src/main/java/com/yssh/service/impl/WarningAnalyseServiceImpl.java | 73 +++++++++++++++++++++++++++++++++++- src/main/java/com/yssh/controller/WarningAnalyseController.java | 21 ++++++++++ 5 files changed, 106 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/yssh/controller/WarningAnalyseController.java b/src/main/java/com/yssh/controller/WarningAnalyseController.java index a225299..8360a42 100644 --- a/src/main/java/com/yssh/controller/WarningAnalyseController.java +++ b/src/main/java/com/yssh/controller/WarningAnalyseController.java @@ -4,8 +4,10 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; @@ -108,4 +110,23 @@ return Result.OK(list); } + + @ApiOperationSupport(order = 5) + @ApiOperation(value = "鏍规嵁鏃堕棿鑾峰彇鎶ヨ鍜岄璀︿俊鎭�", notes = "鏍规嵁鏃堕棿鑾峰彇鎶ヨ鍜岄璀︿俊鎭�") + @GetMapping("/getAlarmAndWarnByTime") + public Result getAlarmAndWarnByTime( + @RequestParam(value = "begin", required = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date begin, + @RequestParam(value = "end", required = true) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date end) { + if (null == begin || null == end) { + return Result.error(null); + } + + if (begin.getTime() > end.getTime()) { + Date tmp = end; + begin = end; + end = tmp; + } + + return Result.OK(warningService.getAlarmAndWarnByTime(begin, end)); + } } diff --git a/src/main/java/com/yssh/dao/DictRecordMapper.java b/src/main/java/com/yssh/dao/DictRecordMapper.java index 0b4d35e..98a86c7 100644 --- a/src/main/java/com/yssh/dao/DictRecordMapper.java +++ b/src/main/java/com/yssh/dao/DictRecordMapper.java @@ -26,6 +26,8 @@ public List<DictRecord> selectByTimeDictRecordList(@Param("startTime") Long startTime, @Param("endTime") Long endTime); public DictRecord selectByCreateTime(Long createTime); + + public List<DictRecord> selectByTime(String start, String end); /** * 鏂板瀛楀吀璁板綍 diff --git a/src/main/java/com/yssh/service/IWarningAnalyseService.java b/src/main/java/com/yssh/service/IWarningAnalyseService.java index 71e1e6f..0639467 100644 --- a/src/main/java/com/yssh/service/IWarningAnalyseService.java +++ b/src/main/java/com/yssh/service/IWarningAnalyseService.java @@ -12,9 +12,9 @@ List<WarningVo> getRunTimeAlarmAnalyse(); List<WarningVo> getRunTimeWarningAnalyse(); - - void insertWarningDetails(List<WarningDetail> warning) throws Exception ; - + + void insertWarningDetails(List<WarningDetail> warning) throws Exception; + void warningOperationStorage(Date date); Map<String, Integer> countThisMonthAlarmAndWarning(); @@ -24,4 +24,6 @@ Map<String, List<Double>> selectEachLocationDataChange(); List<Map<String, Object>> selectThisMonthLocationValueDataTop10(); + + List<WarningVo> getAlarmAndWarnByTime(Date begin, Date end); } diff --git a/src/main/java/com/yssh/service/impl/WarningAnalyseServiceImpl.java b/src/main/java/com/yssh/service/impl/WarningAnalyseServiceImpl.java index ce640f9..9bb33f5 100644 --- a/src/main/java/com/yssh/service/impl/WarningAnalyseServiceImpl.java +++ b/src/main/java/com/yssh/service/impl/WarningAnalyseServiceImpl.java @@ -57,7 +57,9 @@ @Autowired private IAsyncService asyncService; - private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHH"); + private SimpleDateFormat ymdh = new SimpleDateFormat("yyyyMMddHH"); + + private SimpleDateFormat ymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override @Async("threadPoolTaskExecutor") @@ -208,7 +210,7 @@ @Override public Map<String, Integer> countThisMonthAlarmAndWarning() { Map<String, Integer> result = new HashMap<>(); - Map<String, Object> param = new HashMap<String, Object>(); + Map<String, Object> param = new HashMap<>(); param.put("type", 0); param.put("startTime", DateUtils.getMonthStart()); param.put("endTime", DateUtils.getMonthEnd()); @@ -347,4 +349,71 @@ return CalculateUtils.sort(result, "value", true).subList(0, 10); } + + @Override + public List<WarningVo> getAlarmAndWarnByTime(Date begin, Date end) { + List<WarningVo> list = new ArrayList<>(); + List<String> ids = CalculateUtils.assembleId(commonService.getCheckPoints3d()); + if (ids.size() == 0) { + return list; + } + List<DictRecord> dictList = dictRecordMapper.selectByTime(ymdhms.format(begin), ymdhms.format(end)); + if (null == dictList || dictList.isEmpty()) { + return list; + } + List<String> tables = new ArrayList<>(); + for (DictRecord dr : dictList) { + tables.add(dr.getTableName()); + } + + for (String tab : tables) { + List<WarningDetail> alarmList = getAlarmByTime(tab, ids); + for (WarningDetail s : alarmList) { + list.add(new WarningVo(s.getLocationName(), s.getSuYuanId(), 0.0, 0.0, s.getValue())); + } + } + + for (String tab : tables) { + List<WarningDetail> warnList = getWarnByTime(tab, ids); + for (WarningDetail s : warnList) { + list.add(new WarningVo(s.getLocationName(), s.getSuYuanId(), 0.0, 0.0, s.getValue())); + } + } + + return list; + } + + private List<WarningDetail> getAlarmByTime(String tableName, List<String> ids) { + List<WarningDetail> result = new ArrayList<>(); + List<SuYuan2d> list = suYuanMapper.getAlarmsAnalyse(tableName, ids); + if (null != list && list.size() > 0) { + Date date = getDateByTabName(tableName); + for (SuYuan2d s : list) { + String locationName = commonService.select3dCheckPointById(s.getId()).getName(); + result.add(new WarningDetail(0L, tableName, s.getId(), locationName, date, 0, s.getValue())); + } + } + return result; + } + + private List<WarningDetail> getWarnByTime(String tableName, List<String> ids) { + List<WarningDetail> result = new ArrayList<>(); + List<SuYuan2d> list = suYuanMapper.getWarningAnalyse(tableName, ids); + if (null != list && list.size() > 0) { + Date date = getDateByTabName(tableName); + for (SuYuan2d s : list) { + String locationName = commonService.select3dCheckPointById(s.getId()).getName(); + result.add(new WarningDetail(0L, tableName, s.getId(), locationName, date, 1, s.getValue())); + } + } + return result; + } + + private Date getDateByTabName(String tab) { + try { + return ymdh.parse(tab.replace("su_yuan_", "")); + } catch (Exception e) { + return new Date(); + } + } } diff --git a/src/main/resources/mapping/DictRecordMapper.xml b/src/main/resources/mapping/DictRecordMapper.xml index cbdc36a..a0e4fd0 100644 --- a/src/main/resources/mapping/DictRecordMapper.xml +++ b/src/main/resources/mapping/DictRecordMapper.xml @@ -30,6 +30,13 @@ WHERE create_time = #{createTime} LIMIT 0, 1 </select> + + <select id="selectByTime" resultMap="DictRecordResult"> + SELECT id, table_name, create_time + FROM dict_record + where str_to_date(create_time, '%Y-%m-%d-%H:%i:%S') between #{start} and #{end} + order by create_time; + </select> <select id="selectByTimeDictRecordList" resultMap="DictRecordResult"> SELECT id, table_name, create_time -- Gitblit v1.9.3