package com.gyee.alarm.service; import com.gyee.alarm.init.CacheContext; import com.gyee.alarm.model.auto.*; import com.gyee.alarm.model.vo.*; import com.gyee.alarm.service.auto.IAlarmTsService; import com.gyee.alarm.service.auto.IProEconAlarmInfoService; import com.gyee.alarm.util.DateUtils; import com.gyee.alarm.util.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.sql.SQLException; import java.sql.Timestamp; import java.util.*; @Service public class AlarmWtService { @Resource private IAlarmTsService alarmTsService; @Resource private IProEconAlarmInfoService proEconAlarmInfoService; @Value("${initialcode}") private String initialcode; public void dropSuperTable() { alarmTsService.dropSuperTable(AlarmSuperTalbeType.WT.getCode()); } public void createSuperTable() { alarmTsService.createSuperTable(AlarmSuperTalbeType.WT.getCode()); } public void initalWtAlarm() throws SQLException { List alarmVoList=CacheContext.alarmWtList; List alarmTags=new ArrayList<>(); if(!alarmVoList.isEmpty()) { for(AlarmVo vo: alarmVoList) { alarmTsService.createTable(vo.getTbName(), vo.getAlarmid(), vo.getAlarmtype(), vo.getCharacteristic(), vo.getComponents(), vo.getDescription(), vo.getDeviceid(), vo.getDevicename(), vo.getDevicetype(), vo.getEnabled(), vo.getLineid(), vo.getLinename(), vo.getModelId(), vo.getProjectid(), vo.getProjectname(), vo.getRank(), vo.getResettable(), vo.getStationid(), vo.getStationname(), vo.getSubcomponents(), vo.getSuffix(), vo.getTagid(), vo.getTriggertype(), vo.getUniformcode(),vo.getSuperTableName()); AlarmTag po=new AlarmTag(); po.setId(vo.getTbName()); po.setVal(0.0); po.setTriggerType(vo.getTriggertype()); po.setTagId(vo.getTagid()); po.setOval(0.0); po.setRank(vo.getRank()); po.setTimeLong(0.0); po.setTs(new Date().getTime()); alarmTags.add(po); } } alarmTsService.insertList(alarmTags); } public List initalAlarmVo() { List alarmVoList=new ArrayList<>(); Map> wtAlarmMap = CacheContext.wtAlarmMap; Map> wtpAimap = CacheContext.wtpAimap; for (ProBasicEquipment wt : CacheContext.wtls) { // if(wt.getId().contains("SXJ_KGDL_DJY_F_WT_0001_EQ")) // { // System.out.println(""); // } // if(wt.getId().contains("SXJ_KGDL_GJY_F_WT_0001_EQ")) // { // System.out.println(""); // } if (wtpAimap.containsKey(wt.getId())) { Map pointMap = wtpAimap.get(wt.getId()); StringBuilder sb = new StringBuilder(); sb.append(wt.getWindpowerstationId() + wt.getModelId()); if (StringUtils.notEmp(pointMap) && wtAlarmMap.containsKey(String.valueOf(sb))) { List alarmls = wtAlarmMap.get(String.valueOf(sb)); if (!alarmls.isEmpty()) { for (ProEconAlarmConfiguration alarm : alarmls) { if (pointMap.containsKey(alarm.getUniformCode())) { ProBasicEquipmentPoint equipmentPoint = pointMap.get(alarm.getUniformCode()); if(StringUtils.notEmp(initialcode) && StringUtils.notEmp(equipmentPoint.getNemCode()) && !equipmentPoint.getNemCode().equals(initialcode)) { AlarmVo vo=new AlarmVo(); StringBuilder tbName = new StringBuilder(); tbName.append(wt.getId()).append("_").append(alarm.getId()); vo.setTbName(String.valueOf(tbName)); vo.setAlarmid(alarm.getId()); vo.setTagid(equipmentPoint.getNemCode()); vo.setAlarmtype(alarm.getAlarmType()); vo.setCharacteristic(alarm.getCharacteristic()); vo.setComponents(alarm.getComponents()); vo.setDescription(alarm.getDescription()); vo.setDeviceid(wt.getId()); vo.setDevicename(wt.getName()); vo.setDevicetype(DeviceTypeValue.WT.getCode()); vo.setEnabled(alarm.getEnable()); vo.setLineid(wt.getLineId()); if(CacheContext.lnmap.containsKey(wt.getLineId())) { ProBasicLine ln=CacheContext.lnmap.get(wt.getLineId()); vo.setLinename(ln.getName()); } vo.setModelId(wt.getModelId()); vo.setProjectid(wt.getProjectId()); if(CacheContext.pjmap.containsKey(wt.getProjectId())) { ProBasicProject pj=CacheContext.pjmap.get(wt.getProjectId()); vo.setProjectname(pj.getName()); } vo.setRank(alarm.getRank()); vo.setResettable(alarm.getResetTable()); vo.setStationid(wt.getWindpowerstationId()); if(CacheContext.wpmap.containsKey(wt.getWindpowerstationId())) { ProBasicPowerstation wp=CacheContext.wpmap.get(wt.getWindpowerstationId()); vo.setStationname(wp.getName()); } vo.setSubcomponents(alarm.getSubcomponents()); vo.setSuffix(alarm.getSuffix()); vo.setTriggertype(alarm.getTriggerType()); vo.setUniformcode(alarm.getUniformCode()); vo.setSuperTableName(AlarmSuperTalbeType.WT.getCode()); vo.setVal(0); alarmVoList.add(vo); } }else { //临时创建表 AlarmVo vo=new AlarmVo(); StringBuilder tbName = new StringBuilder(); tbName.append(wt.getId()).append("_").append(alarm.getId()); vo.setTbName(String.valueOf(tbName)); vo.setAlarmid(alarm.getId()); vo.setTagid("GF-TZ-SYZ.038200G9911SYB99GI017DB0111PA99RAW01"); vo.setAlarmtype(alarm.getAlarmType()); vo.setCharacteristic(alarm.getCharacteristic()); vo.setComponents(alarm.getComponents()); vo.setDescription(alarm.getDescription()); vo.setDeviceid(wt.getId()); vo.setDevicename(wt.getName()); vo.setDevicetype(DeviceTypeValue.WT.getCode()); vo.setEnabled(alarm.getEnable()); vo.setLineid(wt.getLineId()); if(CacheContext.lnmap.containsKey(wt.getLineId())) { ProBasicLine ln=CacheContext.lnmap.get(wt.getLineId()); vo.setLinename(ln.getName()); } vo.setModelId(wt.getModelId()); vo.setProjectid(wt.getProjectId()); if(CacheContext.pjmap.containsKey(wt.getProjectId())) { ProBasicProject pj=CacheContext.pjmap.get(wt.getProjectId()); vo.setProjectname(pj.getName()); } vo.setRank(alarm.getRank()); vo.setResettable(alarm.getResetTable()); vo.setStationid(wt.getWindpowerstationId()); if(CacheContext.wpmap.containsKey(wt.getWindpowerstationId())) { ProBasicPowerstation wp=CacheContext.wpmap.get(wt.getWindpowerstationId()); vo.setStationname(wp.getName()); } vo.setSubcomponents(alarm.getSubcomponents()); vo.setSuffix(alarm.getSuffix()); vo.setTriggertype(alarm.getTriggerType()); vo.setUniformcode(alarm.getUniformCode()); vo.setSuperTableName(AlarmSuperTalbeType.WT.getCode()); vo.setVal(0); alarmVoList.add(vo); } } } } } } return alarmVoList; } public List findTags(String stbaleName) { List ls=new ArrayList<>(); if(StringUtils.notEmp(stbaleName)) { // List vos= alarmTsService.findTags(stbaleName); List vos= CacheContext.alarmWtList; if(!vos.isEmpty()) { for(AlarmVo vo:vos) { AlarmTag po=new AlarmTag(); po.setId(vo.getTbName()); po.setOval(vo.getVal().doubleValue()); po.setTriggerType(vo.getTriggertype()); po.setTagId(vo.getTagid()); po.setVal(vo.getVal().doubleValue()); po.setRank(vo.getRank()); ls.add(po); } } } return ls; } public synchronized void saveAlarms(List ls) { if(StringUtils.notEmp(ls) && !ls.isEmpty()) { alarmTsService.insertList(ls); if (StringUtils.notEmp(ls) && !ls.isEmpty()) { List valuels = new ArrayList<>(); for (AlarmTag alarm : ls) { if (CacheContext.alarmWtMap.containsKey(alarm.getId())) { AlarmVo vo = CacheContext.alarmWtMap.get(alarm.getId()); ProEconAlarmInfo po = new ProEconAlarmInfo(); po.setTbname(vo.getTbName()); po.setLastUpdateTime(new Date(alarm.getTs())); po.setTagId(alarm.getTagId()); po.setTriggerType(alarm.getTriggerType()); po.setAlarmId(vo.getAlarmid()); po.setDeviceId(vo.getDeviceid()); po.setSubcomponents(vo.getSuffix()); po.setRank(vo.getRank()); po.setConfirmed(false); po.setUniformCode(vo.getUniformcode()); po.setAlarmType(vo.getAlarmtype()); po.setDeviceType(vo.getDevicetype()); po.setComponents(vo.getComponents()); po.setSubcomponents(vo.getSubcomponents()); po.setDescription(vo.getDescription()); po.setModelId(vo.getModelId()); po.setResetTable(vo.getResettable()); po.setEnable(vo.getEnabled()); po.setCharacteristic(vo.getCharacteristic()); po.setStationId(vo.getStationid()); po.setProjectId(vo.getProjectid()); po.setLineId(vo.getLineid()); po.setStationName(vo.getStationname()); po.setProjectiName(vo.getProjectname()); po.setLineidName(vo.getLinename()); po.setDeviceName(vo.getDevicename()); po.setOval(alarm.getOval().intValue()); po.setIsOpen(1); po.setVal(alarm.getVal().intValue()); valuels.add(po); } } List idls = new ArrayList<>(); for (ProEconAlarmInfo vo : valuels) { idls.add(vo.getTbname()); } if (!idls.isEmpty()) { proEconAlarmInfoService.removeByIds(idls); } List templs = new ArrayList<>(); for (ProEconAlarmInfo vo : valuels) { templs.add(vo); if (templs.size() == 100) { proEconAlarmInfoService.saveBatch(templs); templs = new ArrayList<>(); } } if (!templs.isEmpty()) { proEconAlarmInfoService.saveBatch(templs); } } } } public synchronized void updateAlarms(List ls) { if (StringUtils.notEmp(ls) && !ls.isEmpty()) { StringBuilder sb=new StringBuilder(); Map map=new HashMap<>(); for (AlarmTag alarm : ls) { sb.append("'").append(alarm.getId()).append("',"); } String ids=sb.substring(0,sb.length()-1); List alarmls=alarmTsService.selectLastRowByTbname(AlarmSuperTalbeType.WT.getCode(),ids); if(!alarmls.isEmpty()) { for(AlarmSimpleVo vo:alarmls) { map.put(vo.getTbName(),vo); } } for (AlarmTag alarm : ls) { if(map.containsKey(alarm.getId())) { AlarmSimpleVo tag=map.get(alarm.getId()); tag.setTs(new Timestamp(alarm.getTs())); Date begin = new Date(alarm.getEndts()); Date end = new Date(alarm.getTs()); double value= DateUtils.hoursDiff(begin,end); tag.setTimelong(value); } } alarmTsService.insertList(ls); if (StringUtils.notEmp(ls) && !ls.isEmpty()) { List valuels = new ArrayList<>(); for (AlarmTag alarm : ls) { if (CacheContext.alarmWtMap.containsKey(alarm.getId())) { AlarmVo vo = CacheContext.alarmWtMap.get(alarm.getId()); ProEconAlarmInfo po = new ProEconAlarmInfo(); po.setTbname(vo.getTbName()); po.setLastUpdateTime(new Date(alarm.getEndts())); po.setTagId(alarm.getTagId()); po.setTriggerType(alarm.getTriggerType()); po.setAlarmId(vo.getAlarmid()); po.setDeviceId(vo.getDeviceid()); po.setSubcomponents(vo.getSuffix()); po.setRank(vo.getRank()); po.setConfirmed(false); po.setUniformCode(vo.getUniformcode()); po.setAlarmType(vo.getAlarmtype()); po.setDeviceType(vo.getDevicetype()); po.setComponents(vo.getComponents()); po.setSubcomponents(vo.getSubcomponents()); po.setDescription(vo.getDescription()); po.setModelId(vo.getModelId()); po.setResetTable(vo.getResettable()); po.setEnable(vo.getEnabled()); po.setCharacteristic(vo.getCharacteristic()); po.setStationId(vo.getStationid()); po.setProjectId(vo.getProjectid()); po.setLineId(vo.getLineid()); po.setStationName(vo.getStationname()); po.setProjectiName(vo.getProjectname()); po.setLineidName(vo.getLinename()); po.setDeviceName(vo.getDevicename()); po.setOval(alarm.getOval().intValue()); po.setCloseTime(new Date(alarm.getEndts())); po.setIsOpen(0); po.setVal(alarm.getVal().intValue()); valuels.add(po); } } List idls = new ArrayList<>(); for (ProEconAlarmInfo vo : valuels) { idls.add(vo.getTbname()); } if (!idls.isEmpty()) { proEconAlarmInfoService.removeByIds(idls); } List templs = new ArrayList<>(); for (ProEconAlarmInfo vo : valuels) { templs.add(vo); if (templs.size() == 1000) { proEconAlarmInfoService.saveBatch(templs); templs = new ArrayList<>(); } } if (!templs.isEmpty()) { proEconAlarmInfoService.saveBatch(templs); } } } } }