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 result = (Map) JSON.parse(message); //获取到json对象list集合 List list = (List) 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 * @创建人 刘苏义 * @创建时间 2023/1/6 8:59 * @修改人和其它信息 */ @Override public List 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); } }