| package com.ruoyi.alarm.steal.service.impl; | 
|   | 
|   | 
| import com.alibaba.fastjson2.JSON; | 
| import com.alibaba.fastjson2.JSONObject; | 
| import com.ruoyi.alarm.steal.domain.ArdAlarmStealelec; | 
| import com.ruoyi.alarm.steal.service.IStealElecAlarmService; | 
| import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; | 
| import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; | 
| import com.ruoyi.alarm.steal.mapper.ArdAlarmStealelecMapper; | 
| import com.ruoyi.system.service.ISysConfigService; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.stereotype.Service; | 
| import org.springframework.web.client.RestTemplate; | 
|   | 
| import javax.annotation.Resource; | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * @ClassName StealElecAlarmServiceImpl | 
|  * @Description:盗电警报服务实现类 | 
|  * @Author 刘苏义 | 
|  * @Date 2022/12/26 16:34 | 
|  * @Version 1.0 | 
|  */ | 
| @Slf4j(topic = "alarm") | 
| @Service | 
| public class IStealElecAlarmServiceImpl implements IStealElecAlarmService { | 
|     @Resource | 
|     ArdAlarmStealelecMapper ardAlarmStealelecMapper; | 
|     @Resource | 
|     ArdAlarmpointsWellMapper ardAlarmpointsWellMapper; | 
|     @Resource | 
|     RestTemplate restTemplate; | 
|     @Resource | 
|     private ISysConfigService configService; | 
|   | 
|     /** | 
|      * @描述 获取api数据写入数据库 | 
|      * @参数 [url] | 
|      * @返回值 void | 
|      * @创建人 刘苏义 | 
|      * @创建时间 2023/1/6 8:55 | 
|      * @修改人和其它信息 | 
|      */ | 
|     @Override | 
|     @SuppressWarnings("unchecked") | 
|     public void getAlarmByApi() { | 
|         try { | 
|             String stealElecUrl = configService.selectConfigByKey("stealElecUrl"); | 
|             String allAlarmData = restTemplate.getForObject(stealElecUrl, String.class); | 
|             //剔除所有\符号 | 
|             String message = allAlarmData.replaceAll("\\\\", ""); | 
|             //剔除整个字符串首尾双引号 | 
|             if (message.startsWith("\"")) { | 
|                 message = message.substring(1); | 
|             } | 
|             if (message.endsWith("\"")) { | 
|                 message = message.substring(0, message.length() - 1); | 
|             } | 
|             Map<String, Object> result = (Map<String, Object>) JSON.parse(message); | 
|             //获取到json对象list集合 | 
|             List<JSONObject> list = (List<JSONObject>) result.get("data"); | 
|             if (list.size() > 0) { | 
|                 for (JSONObject object : list) { | 
|                     String JSONStr = JSON.toJSONString(object); | 
|                     //转成实体对象 | 
|                     ArdAlarmStealelec wd = JSON.parseObject(JSONStr, ArdAlarmStealelec.class); | 
|                     ArdAlarmStealelec ardAlarmStealelec = ardAlarmStealelecMapper.selectByPrimaryKey(wd.getId()); | 
|                     if (ardAlarmStealelec == null) { | 
|                         //同时插入到数据库中 | 
|                         wd.setCommand(1001); | 
|                         wd.setCreateTime(new Date()); | 
|                         ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(wd.getDescribe()); | 
|                         if(well!=null) | 
|                         { | 
|                             wd.setLongitude(well.getLongitude()); | 
|                             wd.setLatitude(well.getLatitude()); | 
|                             wd.setDeptId(well.getDeptId()); | 
|                         } | 
|                         int insert = ardAlarmStealelecMapper.insertArdAlarmStealelec(wd); | 
|                         if (insert > 0) { | 
|                             log.info("数据插入成功:" + wd.getId()); | 
|                         } else { | 
|                             log.info("数据插入失败:" + wd.getId()); | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|         } catch (Exception ex) { | 
|             log.error("拉取盗电报警数据异常:" + ex.getMessage()); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * @描述 获取实时数据 | 
|      * @参数 [] | 
|      * @返回值 java.util.List<cn.easyuse.ssm.po.ArdAlarmStealelec> | 
|      * @创建人 刘苏义 | 
|      * @创建时间 2023/1/6 8:59 | 
|      * @修改人和其它信息 | 
|      */ | 
|     @Override | 
|     public List<ArdAlarmStealelec> getRealAlarm(Long deptId) { | 
|         try { | 
|             String refreshTime = configService.selectConfigByKey("refreshTime"); | 
|             return ardAlarmStealelecMapper.selectRealByCondition(refreshTime,deptId); | 
|         } catch (Exception ex) { | 
|             log.error(ex.getMessage()); | 
|             return null; | 
|         } | 
|     } | 
|     /** | 
|      * @描述 更新井号已读时间 | 
|      * @参数 [describe, DirectLE] | 
|      * @返回值 int | 
|      * @创建人 刘苏义 | 
|      * @创建时间 2023/1/6 9:00 | 
|      * @修改人和其它信息 | 
|      */ | 
|     @Override | 
|     public int updateViewTimeByDescribe(String describe, String alarmTime,String viewTime) { | 
|         return ardAlarmStealelecMapper.updateViewTimeByDescribe(describe,alarmTime, viewTime); | 
|     } | 
| } |