package com.ruoyi.statistical.service.impl; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson2.JSONArray; 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.PumpStatus; import com.ruoyi.statistical.mapper.PumpStatusMapper; 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 PumpStatusMapper pumpStatusMapper; @Override public Results factorySave(Map map) { for (Map.Entry 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 queryWrapper = new QueryWrapper<>(); queryWrapper.in("config_key","area","store","people","well","depot","unit"); List 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 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 stealelecYear(ESParam esParam) { List list = stealelecMapper.stealelecYear(esParam); return es(list); } @Override public List cameraYear(ESParam esParam) { List list = cameraMapper.cameraYear(esParam); return es(list); } @Override public List moveYear(ESParam esParam) { List list = moveMapper.moveYear(esParam); return es(list); } @Override public List fireYear(ESParam esParam) { List list = fireMapper.fileYear(esParam); return es(list); } @Override public List externalYear(ESParam esParam) { List list = externalMapper.externalYear(esParam); return es(list); } @Override public List accessYear(ESParam esParam) { List list = accessMapper.accessYear(esParam); return es(list); } @Override public List apponekeyYear(ESParam esParam) { List list = apponekeyMapper.apponekeyYear(esParam); return es(list); } @Override public List pumpYear(ESParam esParam) { List list = pumpMapper.pumpYear(esParam); return es(list); } @Override public List wallYear(ESParam esParam) { List list = wallMapper.wallYear(esParam); return es(list); } @Override public List digitizationYear(ESParam esParam) { List list = digitization3Mapper.digitizationYear(esParam); return es(list); } @Override public List tubeYear(ESParam esParam) { List list = tubeMapper.tubeYear(esParam); return es(list); } @Override public List stealelecMonth(ESParam esParam) { List list = stealelecMapper.stealelecMonth(esParam); return esMonth(list,esParam); } @Override public List cameraMonth(ESParam esParam) { List list = cameraMapper.cameraMonth(esParam); return esMonth(list,esParam); } @Override public List moveMonth(ESParam esParam) { List list = moveMapper.moveMonth(esParam); return esMonth(list,esParam); } @Override public List fireMonth(ESParam esParam) { List list = fireMapper.fileMonth(esParam); return esMonth(list,esParam); } @Override public List externalMonth(ESParam esParam) { List list = externalMapper.externalMonth(esParam); return esMonth(list,esParam); } @Override public List accessMonth(ESParam esParam) { List list = accessMapper.accessMonth(esParam); return esMonth(list,esParam); } @Override public List apponekeyMonth(ESParam esParam) { List list = apponekeyMapper.apponekeyMonth(esParam); return esMonth(list,esParam); } @Override public List pumpMonth(ESParam esParam) { List list = pumpMapper.pumpMonth(esParam); return esMonth(list,esParam); } @Override public List wallMonth(ESParam esParam) { List list = wallMapper.wallMonth(esParam); return esMonth(list,esParam); } @Override public List digitizationMonth(ESParam esParam) { List list = digitization3Mapper.digitizationMonth(esParam); return esMonth(list,esParam); } @Override public List tubeMonth(ESParam esParam) { List list = tubeMapper.tubeMonth(esParam); return esMonth(list,esParam); } @Override public UnitVo unit() { UnitVo unitVo = new UnitVo(); //雷达在线数量 List 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 queryWrapper = new QueryWrapper<>(); queryWrapper.select("id").eq("gdtype","0").eq("state","1"); List 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 ten() { return moveMapper.ten(); } @Override public List pump() { List list = new ArrayList<>(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("alarm_type","运行"); int y = pumpStatusMapper.selectCount(queryWrapper); TenVo tenVo = new TenVo(); tenVo.setName("运行"); tenVo.setValue(y); list.add(tenVo); QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper1.eq("alarm_type","停机"); int t = pumpStatusMapper.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 list = (List) jsonObject.get("ardAlarmRadars"); if(list.size()>0){ for (int i = 0; i < list.size(); i++) { JSONObject j = list.get(i); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("target_id",j.getInteger("targetId")).eq("name",j.getString("name")); PumpStatus pumpStatus1 = pumpStatusMapper.selectOne(queryWrapper); if(pumpStatus1==null){ PumpStatus pumpStatus = new PumpStatus(); pumpStatus.setTargetId(j.getInteger("targetId")); pumpStatus.setName(j.getString("name")); if(j.containsKey("alarmType")){ pumpStatus.setAlarmType(j.getString("alarmType")); }else if(j.containsKey("alarm")){ pumpStatus.setAlarmType(j.getString("alarm")); } pumpStatus.setAlarmTime(alarmTime); pumpStatusMapper.insert(pumpStatus); }else { String alarmType = pumpStatus1.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){ pumpStatus1.setAlarmType(j.getString("alarmType")); pumpStatus1.setAlarmTime(alarmTime); pumpStatusMapper.updateById(pumpStatus1); } } } } } public List es(List list){ List 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 esMonth(List list,ESParam esParam){ List 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; } }