From 0f1e11359bd7d45b0f81335e8ebe8a72eff95448 Mon Sep 17 00:00:00 2001 From: whycxzp <glperry@163.com> Date: 星期六, 19 十月 2024 14:04:16 +0800 Subject: [PATCH] 更新voice socket --- src/main/java/com/whyc/service/AlarmDataService.java | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 160 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/whyc/service/AlarmDataService.java b/src/main/java/com/whyc/service/AlarmDataService.java index 79c6f3f..1c5a5b4 100644 --- a/src/main/java/com/whyc/service/AlarmDataService.java +++ b/src/main/java/com/whyc/service/AlarmDataService.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Service; import javax.servlet.ServletContext; +import javax.servlet.http.HttpSession; import java.io.File; import java.text.SimpleDateFormat; import java.util.*; @@ -46,6 +47,57 @@ public Map<String, Object> getAlarmLevel1ListMap() { Long userId = ActionUtil.getUser().getUId(); String lang = ActionUtil.getLang(); + List<BattalarmData> battAlarmList = battAlarmDataService.getList(userId, 1); + battAlarmList = battAlarmList.stream().filter(alarm -> alarm.getAlmLevel().equals(1)).collect(Collectors.toList()); + //鐩稿悓璁惧id+鍛婅绫诲瀷鐨勮闊�,鍙繚鐣欎竴鏉� + Map<String, List<BattalarmData>> battAlarmListMap = battAlarmList.stream().collect(Collectors.groupingBy(a -> a.getBattGroupId() + "_" + a.getAlmSignalId())); + Set<String> keySet = battAlarmListMap.keySet(); + battAlarmList.clear(); + for (String key : keySet) { + battAlarmList.add(battAlarmListMap.get(key).get(0)); + } + + for (BattalarmData adata : battAlarmList) { + adata.setAlmSignalIdName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmName(adata.getAlmSignalId()), lang)); + adata.setAlmLevelName(MessageUtils.getMessageSocket(AlarmDaoFactory.getAlarmType(adata.getAlmLevel()), lang)); + } + + List<DevalarmData> devAlarmList = devAlarmDataService.getList(userId,1); + devAlarmList = devAlarmList.stream().filter(alarm->alarm.getAlmLevel().equals(1)).collect(Collectors.toList()); + //鐩稿悓璁惧id+鍛婅绫诲瀷鐨勮闊�,鍙繚鐣欎竴鏉� + Map<String, List<DevalarmData>> devAlarmListMap = devAlarmList.stream().collect(Collectors.groupingBy(a -> a.getDevId() + "_" + a.getAlmType())); + Set<String> keySet2 = devAlarmListMap.keySet(); + devAlarmList.clear(); + for (String key:keySet2){ + devAlarmList.add(devAlarmListMap.get(key).get(0)); + } + + List<PwrdevAlarm> powerAlarmList = pwrdevAlarmService.getList(userId,1); + powerAlarmList = powerAlarmList.stream().filter(alarm->alarm.getAlmLevel().equals(1)).collect(Collectors.toList()); + //鐩稿悓璁惧id+鍛婅绫诲瀷鐨勮闊�,鍙繚鐣欎竴鏉� + Map<String, List<PwrdevAlarm>> powerAlarmListMap = powerAlarmList.stream().collect(Collectors.groupingBy(a -> a.getPowerDeviceId() + "_" + a.getAlmType())); + Set<String> keySet3 = powerAlarmListMap.keySet(); + powerAlarmList.clear(); + for (String key:keySet3){ + powerAlarmList.add(powerAlarmListMap.get(key).get(0)); + } + for (PwrdevAlarm p : powerAlarmList) { + p.setAlarmName(AlarmDaoFactory.getAllAlarmName(p.getAlmType())); + if (p.getAlmIndex() != 0) { + p.setAlarmName(p.getAlarmName().replace("N", "绗�" + p.getAlmIndex() + "璺�")); + } + } + + Map<String, Object> map = new HashMap<>(); + map.put("battAlarmList", battAlarmList); + map.put("devAlarmList", devAlarmList); + map.put("powerAlarmList", powerAlarmList); + return map; + } + + public Map<String, Object> getAlarmLevel1ListMap4Socket(Long userId, HttpSession httpSession) { + //Long userId = ActionUtil.getUser().getUId(); + String lang = ActionUtil.getLang4Socket(httpSession); List<BattalarmData> battAlarmList = battAlarmDataService.getList(userId, 1); battAlarmList = battAlarmList.stream().filter(alarm -> alarm.getAlmLevel().equals(1)).collect(Collectors.toList()); //鐩稿悓璁惧id+鍛婅绫诲瀷鐨勮闊�,鍙繚鐣欎竴鏉� @@ -286,14 +338,15 @@ * * @param readDirPath * @param application + * @param httpSession */ - public void monitorAlarm4Socket(String readDirPath, Long uId, ServletContext application) { + public void monitorAlarm4Socket(String readDirPath, Long uId, ServletContext application, HttpSession httpSession) { //鑾峰彇ServletContext //鐢ㄦ埛 Map<String,Object> alarmMap = (Map<String, Object>) application.getAttribute("alarmMap_" + uId); - Map<String, Object> alarmMapNow = getAlarmLevel1ListMap(); + Map<String, Object> alarmMapNow = getAlarmLevel1ListMap4Socket(uId,httpSession); List<BattalarmData> battAlarmListNow = (List<BattalarmData>) alarmMapNow.get("battAlarmList"); List<DevalarmData> devAlarmListNow = (List<DevalarmData>) alarmMapNow.get("devAlarmList"); @@ -372,7 +425,7 @@ application.setAttribute("alarmMap_" + uId, alarmMapNow); } - formatResultAndSaveToWav(readDirPath,battAlarmListAdded, devAlarmListAdded, powerAlarmListAdded); + formatResultAndSaveToWav4Socket(readDirPath,battAlarmListAdded, devAlarmListAdded, powerAlarmListAdded,uId); } } @@ -430,6 +483,108 @@ //鐢熸垚璇煶鏂囦欢,鍛藉悕瑙勫垯 {alarmStartTime}_batt_{num}_{battGroupId}_{almSignalId}_{readableVoiceTime} service.saveToWav(alarmMsgBuilder.toString(), dirPath + File.separator + alarm.getAlmStartTime().getTime()+"_batt_"+alarm.getNum()+"_"+ battGroupId +"_"+ almSignalId +"_"+nextTimestamp.get()+".wav"); + + } + for (DevalarmData alarm : devAlarmList) { + StringBuilder alarmMsgBuilder = new StringBuilder(); + Integer almType = alarm.getAlmType(); + String alarmName = AlarmDaoFactory.getAllAlarmName(almType); + String alarmStartTime = format.format(alarm.getAlmStartTime()); + String stationName = alarm.getStationName(); + String district = stationName.split("-")[2]; + String station = stationName.split("-")[3]; + String stationNameUnion = district+"-"+station; + + //鏌ヨ鏄惁瀛樺湪 璁惧id+鍛婅绫诲瀷 鐩稿悓鐨勮褰� + Integer devId = alarm.getDevId(); + AtomicLong nextTimestamp = new AtomicLong(currentTimeMillis); + setListDevice.forEach(set->{ + if(set.getDeviceId().intValue() == devId && set.getAlarmType().equals(almType)){ + nextTimestamp.set(set.getNextTimestamp()); + } + }); + //alarmMsgBuilder.append(stationNameUnion).append(",璁惧缂栧彿涓�").append(alarm.getDevId()).append(",鍦�").append(alarmStartTime).append("鍙戠敓浜�").append(alarmName).append("鍛婅;"); + alarmMsgBuilder.append(stationNameUnion).append("鍙戠敓浜�").append(alarmName).append("鍛婅;"); + //鐢熸垚璇煶鏂囦欢,鍛藉悕瑙勫垯 {alarmStartTime}_device_{num}_{deviceId}_{almType}_{readableVoiceTime} + service.saveToWav(alarmMsgBuilder.toString(), dirPath + File.separator + + alarm.getAlmStartTime().getTime()+"_device_"+alarm.getNum()+"_"+alarm.getDevId()+"_"+ almType +"_"+nextTimestamp.get()+".wav"); + + } + for (PwrdevAlarm alarm : powerAlarmList) { + StringBuilder alarmMsgBuilder = new StringBuilder(); + Integer almType = alarm.getAlmType(); + String alarmName = AlarmDaoFactory.getAllAlarmName(almType); + String alarmStartTime = format.format(alarm.getAlmStartTime()); + String stationName = alarm.getStationName(); + String district = stationName.split("-")[2]; + String station = stationName.split("-")[3]; + String stationNameUnion = district+"-"+station; + + //鏌ヨ鏄惁瀛樺湪 璁惧id+鍛婅绫诲瀷 鐩稿悓鐨勮褰� + Long powerDeviceId = alarm.getPowerDeviceId(); + AtomicLong nextTimestamp = new AtomicLong(currentTimeMillis); + setListPowerDevice.forEach(set->{ + if(set.getPowerDeviceId().equals(powerDeviceId) && set.getAlarmType().equals(almType)){ + nextTimestamp.set(set.getNextTimestamp()); + } + }); + //alarmMsgBuilder.append(stationNameUnion).append(",鐢垫簮缂栧彿涓�").append(alarm.getPowerDeviceId()).append(",鍦�").append(alarmStartTime).append("鍙戠敓浜�").append(alarmName).append("鍛婅;"); + alarmMsgBuilder.append(stationNameUnion).append("鍙戠敓浜�").append(alarmName).append("鍛婅;"); + //鐢熸垚璇煶鏂囦欢,鍛藉悕瑙勫垯 {alarmStartTime}_device_{num}_{deviceId}_{almType}_{readableVoiceTime} + service.saveToWav(alarmMsgBuilder.toString(), dirPath + File.separator + + alarm.getAlmStartTime().getTime()+"_power_"+alarm.getNum()+"_"+alarm.getPowerDeviceId()+"_"+ almType +"_"+nextTimestamp.get()+".wav"); + + } + + /*if(!alarmMsg.isEmpty()) { + service.setRate(1); + service.saveToWav(alarmMsg, dirPath + File.separator + System.currentTimeMillis() + ".wav"); + }*/ + } + + private void formatResultAndSaveToWav4Socket(String dirPath, + List<BattalarmData> battAlarmList, + List<DevalarmData> devAlarmList, + List<PwrdevAlarm> powerAlarmList,Long userId) { + + SimpleDateFormat format = new SimpleDateFormat(ActionUtil.time_yyyyMMddHHmmss); + long currentTimeMillis = System.currentTimeMillis(); + //鏌ヨ鍛婅璇煶璁剧疆琛ㄧ殑鎵�鏈夎褰�,骞舵洿鏂颁笅娆℃椂闂存埑鍒板埌鐩稿叧鐨勮闊虫枃浠朵腑 + //Long userId = ActionUtil.getUser().getUId(); + List<AlarmVoiceSet> setList = alarmVoiceSetService.getAllByUserId(userId); + List<AlarmVoiceSet> setListBatt = setList.stream().filter(set->set.getBattGroupId()!=null).collect(Collectors.toList()); + List<AlarmVoiceSet> setListDevice = setList.stream().filter(set->set.getDeviceId()!=null).collect(Collectors.toList()); + List<AlarmVoiceSet> setListPowerDevice = setList.stream().filter(set->set.getPowerDeviceId()!=null).collect(Collectors.toList()); + + File file = new File(dirPath); + if(!file.exists()){ + file.mkdirs(); + } + for (BattalarmData alarm : battAlarmList) { + StringBuilder alarmMsgBuilder = new StringBuilder(); + Integer almSignalId = alarm.getAlmSignalId(); + String alarmName = AlarmDaoFactory.getAllAlarmName(almSignalId); + String alarmStartTime = format.format(alarm.getAlmStartTime()); + String stationName = alarm.getStationName(); + String district = stationName.split("-")[2]; + String station = stationName.split("-")[3]; + String stationNameUnion = district+"-"+station; + + //鏌ヨ鏄惁瀛樺湪 璁惧id+鍛婅绫诲瀷 鐩稿悓鐨勮褰� + Integer battGroupId = alarm.getBattGroupId(); + AtomicLong nextTimestamp = new AtomicLong(currentTimeMillis); + setListBatt.forEach(set->{ + if(set.getBattGroupId().equals(battGroupId) && set.getAlarmType().equals(almSignalId)){ + nextTimestamp.set(set.getNextTimestamp()); + } + }); + + //alarmMsgBuilder.append(stationNameUnion).append(",鐢垫睜缁勭紪鍙蜂负").append(alarm.getBattgroupname()).append(",鍗曚綋涓�").append(alarm.getMonNum()).append(",鍦�").append(alarmStartTime).append("鍙戠敓浜�").append(alarmName).append("鍛婅;"); + alarmMsgBuilder.append(stationNameUnion).append("鍙戠敓浜�").append(alarmName).append("鍛婅;"); + //鐢熸垚璇煶鏂囦欢,鍛藉悕瑙勫垯 {alarmStartTime}_batt_{num}_{battGroupId}_{almSignalId}_{userId}_{nextTimeInterval}_{voiceTime} ->鏇存敼涓� + //鐢熸垚璇煶鏂囦欢,鍛藉悕瑙勫垯 {alarmStartTime}_batt_{num}_{battGroupId}_{almSignalId}_{readableVoiceTime} + service.saveToWav(alarmMsgBuilder.toString(), dirPath + File.separator + + alarm.getAlmStartTime().getTime()+"_batt_"+alarm.getNum()+"_"+ battGroupId +"_"+ almSignalId +"_"+nextTimestamp.get()+".wav"); } for (DevalarmData alarm : devAlarmList) { @@ -624,13 +779,13 @@ } } - public Response getWavRead4Socket(UserInf user, ServletContext application) { + public Response getWavRead4Socket(UserInf user, ServletContext application, HttpSession httpSession) { //鑾峰彇缁濆鏂囦欢澶硅矾寰� String readSuffixPath = "wav" + File.separator + "alarm" + File.separator + user.getUId() + File.separator; String readDirPath = CommonUtil.getRootFile() + readSuffixPath; File readDir = new File(readDirPath); //鐩戞帶鐢ㄦ埛鐨勫憡璀�,鍖呭惈鐢熸垚,鍐呭瓨淇℃伅鏇存柊 - monitorAlarm4Socket(readDirPath,user.getUId(),application); + monitorAlarm4Socket(readDirPath,user.getUId(),application,httpSession); if(!readDir.exists()){ return new Response().set(1,false,"鏃犳湭璇诲憡璀﹁闊�"); }else{ -- Gitblit v1.9.1