燕山石化溯源三维电子沙盘-【后端】-服务
1
13693261870
2023-04-26 659abe57f755e128e68d0a56bfc473e0baa4260b
1
已修改5个文件
111 ■■■■■ 文件已修改
src/main/java/com/yssh/controller/WarningAnalyseController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yssh/dao/DictRecordMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yssh/service/IWarningAnalyseService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yssh/service/impl/WarningAnalyseServiceImpl.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapping/DictRecordMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
}
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);
    
    /**
     * 新增字典记录
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);
}
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();
        }
    }
}
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