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