| package com.ruoyi.statistical.service.impl; | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
| import com.ruoyi.alarm.access.mapper.ArdAlarmAccessMapper; | 
| import com.ruoyi.alarm.apponekey.mapper.ArdAlarmApponekeyMapper; | 
| import com.ruoyi.alarm.camera.mapper.ArdAlarmCameraMapper; | 
| import com.ruoyi.alarm.digitization3.mapper.ArdAlarmDigitization3Mapper; | 
| import com.ruoyi.alarm.external.mapper.ArdAlarmExternalMapper; | 
| import com.ruoyi.alarm.radar.mapper.ArdAlarmRadarFireMapper; | 
| import com.ruoyi.alarm.radar.mapper.ArdAlarmRadarMoveMapper; | 
| import com.ruoyi.alarm.radar.mapper.ArdAlarmRadarPumpMapper; | 
| import com.ruoyi.alarm.steal.mapper.ArdAlarmStealelecMapper; | 
| import com.ruoyi.alarm.tube.mapper.ArdAlarmTubeMapper; | 
| import com.ruoyi.alarm.wall.mapper.ArdAlarmWallMapper; | 
| import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell; | 
| import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper; | 
| import com.ruoyi.common.core.domain.entity.SysConfig; | 
| import com.ruoyi.common.utils.SecurityUtils; | 
| import com.ruoyi.device.camera.domain.ArdCameras; | 
| import com.ruoyi.device.camera.mapper.ArdCamerasMapper; | 
| import com.ruoyi.device.radar.domain.ArdEquipRadar; | 
| import com.ruoyi.device.radar.mapper.ArdEquipRadarMapper; | 
| import com.ruoyi.statistical.domain.ArdPumpStatus; | 
| import com.ruoyi.statistical.mapper.ArdPumpStatusMapper; | 
| import com.ruoyi.statistical.param.ESParam; | 
| import com.ruoyi.statistical.param.Para; | 
| import com.ruoyi.statistical.service.StatisticalService; | 
| import com.ruoyi.statistical.vo.CountVo; | 
| import com.ruoyi.statistical.vo.TenVo; | 
| import com.ruoyi.statistical.vo.UnitVo; | 
| import com.ruoyi.system.mapper.SysConfigMapper; | 
| import com.ruoyi.utils.result.Results; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.net.Socket; | 
| import java.util.*; | 
|   | 
| /** | 
|  * @author Administrator | 
|  */ | 
| @Service | 
| public class StatisticalServiceImpl implements StatisticalService { | 
|   | 
|     @Autowired | 
|     private SysConfigMapper sysConfigMapper; | 
|     @Autowired | 
|     private ArdAlarmpointsWellMapper wellMapper; | 
|     @Autowired | 
|     private ArdAlarmStealelecMapper stealelecMapper; | 
|     @Autowired | 
|     private ArdAlarmCameraMapper cameraMapper; | 
|     @Autowired | 
|     private ArdAlarmRadarMoveMapper moveMapper; | 
|     @Autowired | 
|     private ArdAlarmRadarFireMapper fireMapper; | 
|     @Autowired | 
|     private ArdAlarmExternalMapper externalMapper; | 
|     @Autowired | 
|     private ArdAlarmAccessMapper accessMapper; | 
|     @Autowired | 
|     private ArdAlarmApponekeyMapper apponekeyMapper; | 
|     @Autowired | 
|     private ArdAlarmRadarPumpMapper pumpMapper; | 
|     @Autowired | 
|     private ArdAlarmWallMapper wallMapper; | 
|     @Autowired | 
|     private ArdAlarmDigitization3Mapper digitization3Mapper; | 
|     @Autowired | 
|     private ArdAlarmTubeMapper tubeMapper; | 
|     @Autowired | 
|     private ArdEquipRadarMapper radarMapper; | 
|     @Autowired | 
|     private ArdCamerasMapper camerasMapper; | 
|     @Autowired | 
|     private ArdPumpStatusMapper ardPumpStatusMapper; | 
|   | 
|   | 
|     @Override | 
|     public Results factorySave(Map<String, String> map) { | 
|         for (Map.Entry<String, String> entry : map.entrySet()) { | 
|             //如果存在修改 | 
|             SysConfig sysConfigUpd = sysConfigMapper.checkConfigKeyUnique(entry.getKey()); | 
|             if(sysConfigUpd != null){ | 
|                 sysConfigUpd.setConfigValue(entry.getValue()); | 
|                 sysConfigUpd.setUpdateBy(SecurityUtils.getUsername()); | 
|                 sysConfigMapper.updateConfig(sysConfigUpd); | 
|             }else { | 
|                 //否则新增 | 
|                 SysConfig sysConfig = new SysConfig(); | 
|                 int randomNum = (int) (Math.random() * (1000 - 100 + 1)) + 100; | 
|                 sysConfig.setConfigId((long) randomNum); | 
|                 sysConfig.setConfigType("Y"); | 
|                 sysConfig.setCreateBy(SecurityUtils.getUsername()); | 
|                 sysConfig.setRemark("厂区介绍"); | 
|                 if ("area".equals(entry.getKey())) { | 
|                     sysConfig.setConfigName("占地面积"); | 
|                     sysConfig.setConfigKey(entry.getKey()); | 
|                     sysConfig.setConfigValue(entry.getValue()); | 
|                     sysConfigMapper.insertConfig(sysConfig); | 
|                 } else if ("store".equals(entry.getKey())) { | 
|                     sysConfig.setConfigName("原始地质储量"); | 
|                     sysConfig.setConfigKey(entry.getKey()); | 
|                     sysConfig.setConfigValue(entry.getValue()); | 
|                     sysConfigMapper.insertConfig(sysConfig); | 
|                 }else if ("people".equals(entry.getKey())) { | 
|                     sysConfig.setConfigName("员工"); | 
|                     sysConfig.setConfigKey(entry.getKey()); | 
|                     sysConfig.setConfigValue(entry.getValue()); | 
|                     sysConfigMapper.insertConfig(sysConfig); | 
|                 }else if ("depot".equals(entry.getKey())) { | 
|                     sysConfig.setConfigName("各类站库"); | 
|                     sysConfig.setConfigKey(entry.getKey()); | 
|                     sysConfig.setConfigValue(entry.getValue()); | 
|                     sysConfigMapper.insertConfig(sysConfig); | 
|                 }else if ("unit".equals(entry.getKey())) { | 
|                     sysConfig.setConfigName("下设单位"); | 
|                     sysConfig.setConfigKey(entry.getKey()); | 
|                     sysConfig.setConfigValue(entry.getValue()); | 
|                     sysConfigMapper.insertConfig(sysConfig); | 
|                 } | 
|             } | 
|         } | 
|         return Results.succeed("添加成功!"); | 
|     } | 
|   | 
|     @Override | 
|     public Results factorySelect() { | 
|         JSONObject jsonObject = new JSONObject(); | 
|         QueryWrapper<SysConfig> queryWrapper = new QueryWrapper<>(); | 
|         queryWrapper.in("config_key","area","store","people","well","depot","unit"); | 
|         List<SysConfig> list = sysConfigMapper.selectList(queryWrapper); | 
|         for (int i = 0; i < list.size(); i++) { | 
|             SysConfig sysConfig = list.get(i); | 
|             jsonObject.put(sysConfig.getConfigKey(),sysConfig.getConfigValue()); | 
|         } | 
|         //记录well表中oil_production为抽油机的数据有多少条 | 
|         QueryWrapper<ArdAlarmpointsWell> queryWrapperWell = new QueryWrapper<>(); | 
|         queryWrapperWell.eq("oil_production","抽油机"); | 
|         int num = wellMapper.selectCount(queryWrapperWell); | 
|         jsonObject.put("well",String.valueOf(num)); | 
|         return Results.succeed(jsonObject); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> stealelecYear(ESParam esParam) { | 
|         List<CountVo> list = stealelecMapper.stealelecYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> cameraYear(ESParam esParam) { | 
|         List<CountVo> list = cameraMapper.cameraYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> moveYear(ESParam esParam) { | 
|         List<CountVo> list = moveMapper.moveYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> fireYear(ESParam esParam) { | 
|         List<CountVo> list = fireMapper.fileYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> externalYear(ESParam esParam) { | 
|         List<CountVo> list = externalMapper.externalYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> accessYear(ESParam esParam) { | 
|         List<CountVo> list = accessMapper.accessYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> apponekeyYear(ESParam esParam) { | 
|         List<CountVo> list = apponekeyMapper.apponekeyYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> pumpYear(ESParam esParam) { | 
|         List<CountVo> list = pumpMapper.pumpYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> wallYear(ESParam esParam) { | 
|         List<CountVo> list = wallMapper.wallYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> digitizationYear(ESParam esParam) { | 
|         List<CountVo> list = digitization3Mapper.digitizationYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> tubeYear(ESParam esParam) { | 
|         List<CountVo> list = tubeMapper.tubeYear(esParam); | 
|         return es(list); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> stealelecMonth(ESParam esParam) { | 
|         List<CountVo> list = stealelecMapper.stealelecMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> cameraMonth(ESParam esParam) { | 
|         List<CountVo> list = cameraMapper.cameraMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> moveMonth(ESParam esParam) { | 
|         List<CountVo> list = moveMapper.moveMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> fireMonth(ESParam esParam) { | 
|         List<CountVo> list = fireMapper.fileMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> externalMonth(ESParam esParam) { | 
|         List<CountVo> list = externalMapper.externalMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> accessMonth(ESParam esParam) { | 
|         List<CountVo> list = accessMapper.accessMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> apponekeyMonth(ESParam esParam) { | 
|         List<CountVo> list = apponekeyMapper.apponekeyMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> pumpMonth(ESParam esParam) { | 
|         List<CountVo> list = pumpMapper.pumpMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> wallMonth(ESParam esParam) { | 
|         List<CountVo> list = wallMapper.wallMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> digitizationMonth(ESParam esParam) { | 
|         List<CountVo> list = digitization3Mapper.digitizationMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public List<CountVo> tubeMonth(ESParam esParam) { | 
|         List<CountVo> list = tubeMapper.tubeMonth(esParam); | 
|         return esMonth(list,esParam); | 
|     } | 
|   | 
|     @Override | 
|     public UnitVo unit() { | 
|         UnitVo unitVo = new UnitVo(); | 
|         //雷达在线数量 | 
|         List<ArdEquipRadar> radarList = radarMapper.selectList(null); | 
|         Timer timer = new Timer(); | 
|         TimerTask timerTask =new TimerTask(){ | 
|             @Override | 
|             public void run(){ | 
|                 Para.setI(0); | 
|                for (int i = 0; i < radarList.size(); i++) { | 
|                    ArdEquipRadar radar = radarList.get(i); | 
|                    String host = radar.getIp(); | 
|                    String port = radar.getPort(); | 
|                     Thread thread = new Thread(){ | 
|                         @Override | 
|                         public void run(){ | 
|                             try { | 
|                                 Socket socket = new Socket(host,Integer.valueOf(port)); | 
|                             } catch (Exception e) { | 
|                                 int num = Para.getI(); | 
|                                 num++; | 
|                             } | 
|                         } | 
|                     }; | 
|                     thread.start(); | 
|                 } | 
|                 int n = Para.getI(); | 
|                 Para.setJ(radarList.size() - Para.getI()); | 
|             } | 
|         }; | 
|         Date date = new Date(); | 
|         timer.scheduleAtFixedRate(timerTask,date,5000); | 
|         unitVo.setRadar(Para.getJ()); | 
|         //光电数量 | 
|         QueryWrapper<ArdCameras> queryWrapper = new QueryWrapper<>(); | 
|         queryWrapper.select("id").eq("gdtype","0").eq("state","1"); | 
|         List<ArdCameras> ardCameras = camerasMapper.selectList(queryWrapper); | 
|         unitVo.setCamera(ardCameras.size()); | 
|         return unitVo; | 
|     } | 
|   | 
|     @Override | 
|     public int stealelecNum() { | 
|         return stealelecMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int cameraNum() { | 
|         return cameraMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int moveNum() { | 
|         return moveMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int fireNum() { | 
|         return fireMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int externalNum() { | 
|         return externalMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int accessNum() { | 
|         return accessMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int apponekeyNum() { | 
|         return apponekeyMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int pumpNum() { | 
|         return pumpMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int wallNum() { | 
|         return wallMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int digitizationNum() { | 
|         return digitization3Mapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public int tubeNum() { | 
|         return tubeMapper.selectCount(null); | 
|     } | 
|   | 
|     @Override | 
|     public List<TenVo> ten() { | 
|         return moveMapper.ten(); | 
|     } | 
|   | 
|     @Override | 
|     public List<TenVo> pump() { | 
|         List<TenVo> list = new ArrayList<>(); | 
|         QueryWrapper<ArdPumpStatus> queryWrapper = new QueryWrapper<>(); | 
|         queryWrapper.eq("alarm_type","运行"); | 
|         int y = ardPumpStatusMapper.selectCount(queryWrapper); | 
|         TenVo tenVo = new TenVo(); | 
|         tenVo.setName("运行"); | 
|         tenVo.setValue(y); | 
|         list.add(tenVo); | 
|         QueryWrapper<ArdPumpStatus> queryWrapper1 = new QueryWrapper<>(); | 
|         queryWrapper1.eq("alarm_type","停机"); | 
|         int t = ardPumpStatusMapper.selectCount(queryWrapper1); | 
|         TenVo tenVo1 = new TenVo(); | 
|         tenVo1.setName("停机"); | 
|         tenVo1.setValue(t); | 
|         list.add(tenVo1); | 
|         return list; | 
|     } | 
|   | 
|     @Override | 
|     public void data(String msg) { | 
|         JSONObject jsonObject = JSONObject.parseObject(msg); | 
|         String alarmTime = jsonObject.getString("alarmTime"); | 
|         List<JSONObject> list = (List<JSONObject>) jsonObject.get("ardAlarmRadars"); | 
|         if(list.size()>0){ | 
|             for (int i = 0; i < list.size(); i++) { | 
|                 JSONObject j = list.get(i); | 
|                 QueryWrapper<ArdPumpStatus> queryWrapper = new QueryWrapper<>(); | 
|                 queryWrapper.eq("target_id",j.getInteger("targetId")).eq("name",j.getString("name")); | 
|                 ArdPumpStatus ardPumpStatus1 = ardPumpStatusMapper.selectOne(queryWrapper); | 
|                 if(ardPumpStatus1 ==null){ | 
|                     ArdPumpStatus ardPumpStatus = new ArdPumpStatus(); | 
|                     ardPumpStatus.setTargetId(j.getInteger("targetId")); | 
|                     ardPumpStatus.setName(j.getString("name")); | 
|                     if(j.containsKey("alarmType")){ | 
|                         ardPumpStatus.setAlarmType(j.getString("alarmType")); | 
|                     }else if(j.containsKey("alarm")){ | 
|                         ardPumpStatus.setAlarmType(j.getString("alarm")); | 
|                     } | 
|                     ardPumpStatus.setAlarmTime(alarmTime); | 
|                     ardPumpStatusMapper.insert(ardPumpStatus); | 
|                 }else { | 
|                     String alarmType = ardPumpStatus1.getAlarmType(); | 
|                     Boolean bo = false; | 
|                     if(j.containsKey("alarmType")){ | 
|                         if(alarmType.equals(j.getString("alarmType"))){ | 
|                             bo = true; | 
|                         } | 
|                     }else if(j.containsKey("alarm")){ | 
|                         if(alarmType.equals(j.getString("alarm"))){ | 
|                             bo = true; | 
|                         } | 
|                     } | 
|                     if(!bo){ | 
|                         ardPumpStatus1.setAlarmType(j.getString("alarmType")); | 
|                         ardPumpStatus1.setAlarmTime(alarmTime); | 
|                         ardPumpStatusMapper.updateById(ardPumpStatus1); | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|     } | 
|   | 
|     public List<CountVo> es(List<CountVo> list){ | 
|         List<CountVo> countVoList = new ArrayList<>(); | 
|         for (int i = 1; i <= 12 ; i++) { | 
|             CountVo vo = new CountVo(); | 
|             String month = i + "月"; | 
|             Boolean bo = false; | 
|             for (int j = 0; j < list.size(); j++) { | 
|                 CountVo countVo = list.get(j); | 
|                 String mon = Integer.valueOf(countVo.getDate()) + "月"; | 
|                 if(mon.equals(month)){ | 
|                     bo = true; | 
|                     vo.setDate(mon); | 
|                     vo.setCount(countVo.getCount()); | 
|                 } | 
|             } | 
|             if(!bo){ | 
|                 vo.setDate(month); | 
|                 vo.setCount(0); | 
|             } | 
|             countVoList.add(vo); | 
|         } | 
|         return countVoList; | 
|     } | 
|   | 
|     public List<CountVo> esMonth(List<CountVo> list,ESParam esParam){ | 
|         List<CountVo> countVoList = new ArrayList<>(); | 
|         Integer day = Integer.valueOf(esParam.getEnd().substring(esParam.getEnd().length() - 2)); | 
|         Integer month = esParam.getMonth(); | 
|         for (int i = 1; i <= day ; i++) { | 
|             CountVo vo = new CountVo(); | 
|             String d = month + "-" + i ; | 
|             Boolean bo = false; | 
|             for (int j = 0; j < list.size(); j++) { | 
|                 CountVo countVo = list.get(j); | 
|                 String mon = month + "-" + Integer.valueOf(countVo.getDate()); | 
|                 if(mon.equals(d)){ | 
|                     bo = true; | 
|                     vo.setDate(mon); | 
|                     vo.setCount(countVo.getCount()); | 
|                 } | 
|             } | 
|             if(!bo){ | 
|                 vo.setDate(d); | 
|                 vo.setCount(0); | 
|             } | 
|             countVoList.add(vo); | 
|         } | 
|         return countVoList; | 
|     } | 
| } |