import javax.annotation.Resource;\r
 import javax.servlet.http.HttpServletResponse;\r
 \r
+import com.alibaba.fastjson.JSON;\r
+import com.alibaba.fastjson.JSONArray;\r
+import com.alibaba.fastjson.JSONObject;\r
 import com.fasterxml.jackson.core.JsonProcessingException;\r
 import com.fasterxml.jackson.databind.ObjectMapper;\r
 import org.onap.usecaseui.server.bean.AlarmsHeader;\r
 import org.springframework.web.bind.annotation.*;\r
 import org.springframework.web.servlet.ModelAndView;\r
 \r
-import java.io.FileInputStream;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.io.OutputStream;\r
+import java.io.*;\r
+import java.text.DateFormat;\r
 import java.text.ParseException;\r
 import java.text.SimpleDateFormat;\r
 import java.time.LocalDateTime;\r
 import java.time.ZoneId;\r
 import java.time.ZonedDateTime;\r
+import java.time.format.DateTimeFormatter;\r
 import java.util.*;\r
 \r
 \r
 @RestController\r
 @org.springframework.context.annotation.Configuration\r
 @EnableAspectJAutoProxy\r
-public class AlarmController\r
-{\r
+public class AlarmController {\r
 \r
 \r
     private final Logger logger = LoggerFactory.getLogger(AlarmController.class);\r
 \r
     @RequestMapping(value = {"/alarm/{currentPage}/{pageSize}",\r
             "/alarm/{currentPage}/{pageSize}/{sourceId}/{sourceName}/{priority}/{startTime}/{endTime}/{vfStatus}"},\r
-            method = RequestMethod.GET , produces = "application/json")\r
-    public String getAlarmData(@PathVariable(required = false) String sourceId,@PathVariable(required = false) String sourceName,\r
-                               @PathVariable(required = false) String priority,@PathVariable(required = false) String startTime,\r
-                               @PathVariable(required = false) String endTime,@PathVariable(required = false) String vfStatus,\r
+            method = RequestMethod.GET, produces = "application/json")\r
+    public String getAlarmData(@PathVariable(required = false) String sourceId, @PathVariable(required = false) String sourceName,\r
+                               @PathVariable(required = false) String priority, @PathVariable(required = false) String startTime,\r
+                               @PathVariable(required = false) String endTime, @PathVariable(required = false) String vfStatus,\r
                                @PathVariable int currentPage, @PathVariable int pageSize) throws JsonProcessingException {\r
         logger.info("transfer getAlarmData Apis, " +\r
-                "Parameter all follows : [currentPage : {} , pageSize : {} , sourceId : {} , " +\r
-                "sourceName : {} , priority : {} , startTime :{} , endTime : {}  , vfStatus : {}]"\r
-                ,currentPage,pageSize,sourceId,sourceName,priority,startTime,endTime,vfStatus);\r
+                        "Parameter all follows : [currentPage : {} , pageSize : {} , sourceId : {} , " +\r
+                        "sourceName : {} , priority : {} , startTime :{} , endTime : {}  , vfStatus : {}]"\r
+                , currentPage, pageSize, sourceId, sourceName, priority, startTime, endTime, vfStatus);\r
         List<AlarmsHeader> alarmsHeaders = null;\r
         List<AlarmBo> list = new ArrayList<>();\r
         Page pa = null;\r
         if (null != sourceId || null != sourceName || null != priority || null != startTime || null != endTime\r
-                || null != vfStatus  ){\r
+                || null != vfStatus) {\r
             AlarmsHeader alarm = new AlarmsHeader();\r
-            alarm.setSourceId(!"null".equals(sourceId)?sourceId:null);\r
-            alarm.setSourceName(!"null".equals(sourceName)?sourceName:null);\r
-            alarm.setStatus(!"null".equals(vfStatus)?vfStatus:null);\r
+            alarm.setSourceId(!"null".equals(sourceId) ? sourceId : null);\r
+            alarm.setSourceName(!"null".equals(sourceName) ? sourceName : null);\r
+            alarm.setStatus(!"null".equals(vfStatus) ? vfStatus : null);\r
             try {\r
-                alarm.setCreateTime(!"null".equals(startTime)?new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(startTime):null);\r
-                alarm.setUpdateTime(!"null".equals(endTime)?new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime):null);\r
+                alarm.setCreateTime(!"null".equals(startTime) ? new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(startTime) : null);\r
+                alarm.setUpdateTime(!"null".equals(endTime) ? new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(endTime) : null);\r
             } catch (ParseException e) {\r
-                logger.error("Parse date error :"+e.getMessage());\r
+                logger.error("Parse date error :" + e.getMessage());\r
             }\r
-            pa = alarmsHeaderService.queryAlarmsHeader(alarm,currentPage,pageSize);\r
+            pa = alarmsHeaderService.queryAlarmsHeader(alarm, currentPage, pageSize);\r
 \r
             alarmsHeaders = pa.getList();\r
             if (null != alarmsHeaders && alarmsHeaders.size() > 0) {\r
-                alarmsHeaders.forEach(a ->{\r
+                alarmsHeaders.forEach(a -> {\r
                     logger.info(a.toString());\r
                     AlarmBo abo = new AlarmBo();\r
-                    if (!a.getStatus().equals("3")){\r
+                    if (!a.getStatus().equals("3")) {\r
                         abo.setAlarmsHeader(a);\r
                         AlarmsInformation information = new AlarmsInformation();\r
                         information.setEventId(a.getSourceId());\r
-                        List<AlarmsInformation> informationList = alarmsInformationService.queryAlarmsInformation(information,1,100).getList();\r
+                        List<AlarmsInformation> informationList = alarmsInformationService.queryAlarmsInformation(information, 1, 100).getList();\r
                         abo.setAlarmsInformation(informationList);\r
                         list.add(abo);\r
                     }\r
                 });\r
             }\r
-        }else {\r
+        } else {\r
             pa = alarmsHeaderService.queryAlarmsHeader(null, currentPage, pageSize);\r
             alarmsHeaders = pa.getList();\r
             if (null != alarmsHeaders && alarmsHeaders.size() > 0) {\r
                 alarmsHeaders.forEach(a -> {\r
                     AlarmBo abo = new AlarmBo();\r
-                    if (!a.getStatus().equals("3")){\r
+                    if (!a.getStatus().equals("3")) {\r
                         abo.setAlarmsHeader(a);\r
-                        abo.setAlarmsInformation(alarmsInformationService.queryAlarmsInformation(new AlarmsInformation(a.getEventId()),currentPage,pageSize).getList());\r
+                        abo.setAlarmsInformation(alarmsInformationService.queryAlarmsInformation(new AlarmsInformation(a.getEventId()), currentPage, pageSize).getList());\r
                         list.add(abo);\r
                     }\r
 \r
                 });\r
             }\r
         }\r
-        try {\r
-            Map<String,Object> map = new HashMap<>();\r
-            map.put("alarms",list);\r
-            map.put("totalRecords",pa.getTotalRecords());\r
-            omAlarm.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT));\r
-            return omAlarm.writeValueAsString(map);\r
-        } catch (JsonProcessingException e) {\r
-            logger.debug("JsonProcessingException :"+e.getMessage());\r
-            return omAlarm.writeValueAsString("failed");\r
-        }\r
+        Map<String, Object> map = new HashMap<>();\r
+        map.put("alarms", list);\r
+        map.put("totalRecords", pa.getTotalRecords());\r
+        omAlarm.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT));\r
+        return omAlarm.writeValueAsString(map);\r
     }\r
 \r
-    @RequestMapping(value = "/alarm/statusCount",method = RequestMethod.GET , produces = "application/json")\r
-    public String getStatusCount(){\r
+    @RequestMapping(value = "/alarm/statusCount", method = RequestMethod.GET, produces = "application/json")\r
+    public String getStatusCount() {\r
         List<String> statusCount = new ArrayList<>();\r
         try {\r
             statusCount.add(alarmsHeaderService.queryStatusCount("0"));\r
         return null;\r
     }\r
 \r
-    @RequestMapping(value = {"/alarm/sourceId"},method = RequestMethod.GET)\r
-    public String getSourceId(){\r
+    @RequestMapping(value = {"/topology/{serviceName}"}, method = RequestMethod.GET)\r
+    public String getTopologyData(@PathVariable String serviceName) {\r
+        Map<String,Object> topologyMap = new HashMap<>();\r
+        try {\r
+            topologyMap.put("name",serviceName);\r
+\r
+            List<Map<String,Object>> networkServices = (List<Map<String, Object>>) getAllVNFS().get("networkServices");\r
+            List<Map<String,Object>> VNFS = (List<Map<String, Object>>) getAllVNFS().get("VNFS");\r
+\r
+            List<Map<String,Object>> children = new ArrayList<>();\r
+            networkServices.forEach( i -> {\r
+                Map<String,Object> childrenMap = new HashMap<>();\r
+                i.forEach( (k,v) -> {\r
+                    if (k.equals("parentService"))\r
+                        if (v.equals(serviceName)){\r
+                            childrenMap.put("name",i.get("nsName"));\r
+                            List<Map<String,Object>> childrenList = new ArrayList<>();\r
+                            VNFS.forEach( j -> {\r
+                                Map<String,Object> childrenJMap = new HashMap<>();\r
+                                j.forEach( (k1,v2) -> {\r
+                                    if (k1.equals("parentNS"))\r
+                                        if (v2.equals(i.get("nsName"))) {\r
+                                            childrenJMap.put("name",j.get("vnfName"));\r
+                                            childrenJMap.put("isAlarm",j.get("isAlarm"));\r
+                                        }\r
+                                });\r
+                                if (childrenJMap.size() > 0)\r
+                                    childrenList.add(childrenJMap);\r
+                            });\r
+                            if (childrenList.size() > 0) {\r
+                                childrenMap.put("children",childrenList);\r
+                            }\r
+                        }\r
+                });\r
+                if (childrenMap.size() > 0) {\r
+                    children.add(childrenMap);\r
+                }\r
+            });\r
+            if (children.size() > 0) {\r
+                topologyMap.put("children",children);\r
+            }\r
+            return omAlarm.writeValueAsString(topologyMap);\r
+        } catch (IOException e) {\r
+            e.printStackTrace();\r
+            return null;\r
+        }\r
+    }\r
+\r
+    @RequestMapping(value = {"/topology/services"}, method = RequestMethod.GET)\r
+    public String getTopologyServices() {\r
+        try {\r
+            List<Map<String,Object>> services = (List<Map<String, Object>>) getAllVNFS().get("services");\r
+            services.forEach( i -> {\r
+               i.forEach( (k,v) -> {\r
+                   if (k.equals("ServiceName")) {\r
+                       AlarmsHeader alarmsHeader = new AlarmsHeader();\r
+                       alarmsHeader.setSourceId(v.toString());\r
+                       List<AlarmsHeader> alarmsHeaderList = alarmsHeaderService.queryAlarmsHeader(alarmsHeader,1,10).getList();\r
+                       alarmsHeaderList.forEach(alarmsHeader1 -> {\r
+                           if (alarmsHeader1.getStatus().equals("1")) {\r
+                               i.replace("isAlarm","true");\r
+                           }\r
+                       });\r
+                   }\r
+               });\r
+            });\r
+            return omAlarm.writeValueAsString(services);\r
+        } catch (Exception e) {\r
+            logger.error(e.getMessage());\r
+            return null;\r
+        }\r
+    }\r
+\r
+    private Map<String,Object> getTopologyData() throws IOException {\r
+        String data = "";\r
+        try {\r
+            BufferedReader br = new BufferedReader(new FileReader("/home/uui/resources/topologyD_data.json"));\r
+            String tmpStr = "";\r
+            while ((tmpStr=br.readLine()) != null) {\r
+                data += tmpStr;\r
+            }\r
+            br.close();\r
+        } catch (FileNotFoundException e) {\r
+            e.printStackTrace();\r
+        } catch (IOException e) {\r
+            e.printStackTrace();\r
+        }\r
+        Map<String,Object> map = omAlarm.readValue(data, Map.class);\r
+        return map;\r
+    }\r
+\r
+    public Map<String,Object>   getAllVNFS() throws IOException {\r
+        String data="";\r
+        try {\r
+            String str=null;\r
+            BufferedReader  br = new BufferedReader(new FileReader("/home/uui/resources/topologyD_data.json"));\r
+            while ((str=br.readLine())!=null) {\r
+                data += str;\r
+            }\r
+            br.close();\r
+        } catch (FileNotFoundException e) {\r
+            e.printStackTrace();\r
+        } catch (IOException e) {\r
+            e.printStackTrace();\r
+        }\r
+        JSONObject jsonObject = (JSONObject) JSON.parseObject(data);\r
+        JSONArray jsonArray = jsonObject.getJSONArray("VNFS");\r
+\r
+        for (int a=0;a<jsonArray.size();a++) {\r
+            JSONObject jsonObject1 = jsonArray.getJSONObject(a);\r
+            String vnfName = jsonObject1.getString("vnfName");\r
+            Boolean name =   alarmsHeaderService.getStatusBySourceName(vnfName);\r
+            jsonObject1.put("isAlarm",name);\r
+            System.out.print("vnfName===="+vnfName+"name====="+name);\r
+        }\r
+\r
+        String jsonS = jsonObject.toJSONString();\r
+        System.out.print("toJSONString===="+jsonS);\r
+\r
+        Map<String,Object> map = omAlarm.readValue(jsonS, Map.class);\r
+        return map;\r
+    }\r
+\r
+\r
+    @RequestMapping(value = {"/alarm/sourceId"}, method = RequestMethod.GET)\r
+    public String getSourceId() throws JsonProcessingException {\r
         List<String> sourceIds = new ArrayList<>();\r
-        alarmsHeaderService.queryAlarmsHeader(new AlarmsHeader(),1,Integer.MAX_VALUE).getList().forEach( al ->{\r
+        alarmsHeaderService.queryAlarmsHeader(new AlarmsHeader(), 1, Integer.MAX_VALUE).getList().forEach(al -> {\r
             if (!al.getStatus().equals("3") &&\r
                     !sourceIds.contains(al.getSourceId()))\r
                 sourceIds.add(al.getSourceId());\r
-        } );\r
-        try {\r
-            return omAlarm.writeValueAsString(sourceIds);\r
-        } catch (JsonProcessingException e) {\r
-            e.printStackTrace();\r
-            return "";\r
-        }\r
+        });\r
+        return omAlarm.writeValueAsString(sourceIds);\r
     }\r
 \r
-    @RequestMapping(value = {"/alarm/diagram"},method = RequestMethod.POST)\r
-    public String genDiagram(@RequestParam String sourceId,@RequestParam String startTime,@RequestParam String endTime,@RequestParam String showMode){\r
+    @RequestMapping(value = {"/alarm/diagram"}, method = RequestMethod.POST)\r
+    public String genDiagram(@RequestParam String sourceId, @RequestParam String startTime, @RequestParam String endTime, @RequestParam String showMode) {\r
         try {\r
-            return omAlarm.writeValueAsString(diagramDate(sourceId,startTime,endTime,showMode));\r
+            return omAlarm.writeValueAsString(diagramDate(sourceId, startTime, endTime, showMode));\r
         } catch (JsonProcessingException e) {\r
             e.printStackTrace();\r
             return "";\r
         }\r
     }\r
 \r
-    private List<List<Long>> dateProcess(String sourceId,long startTimeL,long endTimeL,long timeIteraPlusVal,long keyVal,long keyValIteraVal,String keyUnit) throws ParseException {\r
+    private List<List<Long>> dateProcess(String sourceId, long startTimeL, long endTimeL, long timeIteraPlusVal, long keyVal, long keyValIteraVal, String keyUnit) throws ParseException {\r
         List<List<Long>> dataList = new ArrayList<>();\r
         long tmpEndTimeL = startTimeL + timeIteraPlusVal;\r
-        while (endTimeL >= tmpEndTimeL){\r
-            List<Map<String,String>> maps = alarmsInformationService.queryDateBetween(sourceId,sdf.format(new Date(startTimeL)),sdf.format(new Date(tmpEndTimeL)));\r
-            maps.forEach( map -> {\r
+        while (endTimeL >= tmpEndTimeL) {\r
+            List<Map<String, String>> maps = alarmsInformationService.queryDateBetween(sourceId, sdf.format(new Date(startTimeL)), sdf.format(new Date(tmpEndTimeL)));\r
+            maps.forEach(map -> {\r
                 try {\r
                     List<Long> longList = new ArrayList<>();\r
-                    if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time")) ){\r
+                    if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time"))) {\r
                         longList.add(sdf.parse(map.get("Time")).getTime());\r
                         if (map.get("Count") != null && !"".equals(map.get("Count")))\r
                             longList.add(Long.parseLong(map.get("Count")));\r
                     e.printStackTrace();\r
                 }\r
 \r
-            } );\r
+            });\r
             startTimeL += timeIteraPlusVal;\r
             tmpEndTimeL += timeIteraPlusVal;\r
             keyVal += keyValIteraVal;\r
         return dataList;\r
     }\r
 \r
-    private List<List<Long>> diagramDate(String sourceId,String startTime,String endTime,String format){\r
+    private List<List<Long>> diagramDate(String sourceId, String startTime, String endTime, String format) {\r
         try {\r
             long startTimel = sdf.parse(startTime).getTime();\r
             long endTimel = sdf.parse(endTime).getTime();\r
-            if (format != null && !format.equals("auto")){\r
-                switch (format){\r
+            if (format != null && !format.equals("auto")) {\r
+                switch (format) {\r
                     case "minute":\r
-                        return dateProcess(sourceId,startTimel,endTimel,900000,15,15,"minute");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 900000, 15, 15, "minute");\r
                     case "hour":\r
-                        return dateProcess(sourceId,startTimel,endTimel,3600000,1,1,"hour");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 3600000, 1, 1, "hour");\r
                     case "day":\r
-                        return dateProcess(sourceId,startTimel,endTimel,86400000,1,1,"day");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 86400000, 1, 1, "day");\r
                     case "month":\r
-                        return dateProcess(sourceId,startTimel,endTimel,2592000000L,1,1,"month");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 2592000000L, 1, 1, "month");\r
                     case "year":\r
-                        return dateProcess(sourceId,startTimel,endTimel,31536000000L,1,1,"year");\r
+                        return dateProcess(sourceId, startTimel, endTimel, 31536000000L, 1, 1, "year");\r
                 }\r
-            }else if (format != null && format.equals("auto")){\r
+            } else if (format != null && format.equals("auto")) {\r
                 long minutes = (endTimel - startTimel) / (1000 * 60);\r
                 long hours = minutes / 60;\r
-                if (hours > 12){\r
+                if (hours > 12) {\r
                     long days = hours / 24;\r
-                    if (days > 3){\r
+                    if (days > 3) {\r
                         long months = days / 31;\r
-                        if (months > 2){\r
-                            return dateProcess(sourceId,startTimel,endTimel,86400000,1,1,"day");\r
-                        }else {\r
-                            return dateProcess(sourceId,startTimel,endTimel,2592000000L,1,1,"month");\r
+                        if (months > 2) {\r
+                            return dateProcess(sourceId, startTimel, endTimel, 86400000, 1, 1, "day");\r
+                        } else {\r
+                            return dateProcess(sourceId, startTimel, endTimel, 2592000000L, 1, 1, "month");\r
                         }\r
-                    }else {\r
-                        return dateProcess(sourceId,startTimel,endTimel,3600000,1,1,"hour");\r
+                    } else {\r
+                        return dateProcess(sourceId, startTimel, endTimel, 3600000, 1, 1, "hour");\r
                     }\r
-                }else {\r
-                    return dateProcess(sourceId,startTimel,endTimel,900000,15,15,"minute");\r
+                } else {\r
+                    return dateProcess(sourceId, startTimel, endTimel, 900000, 15, 15, "minute");\r
                 }\r
             }\r
         } catch (ParseException e) {\r
 
                     list.add(pbo);
                 });
         }
-        try {
-            Map<String, Object> map = new HashMap<>();
-            map.put("performances", list);
-            map.put("totalRecords", pa.getTotalRecords());
-            omPerformance.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT));
-            return omPerformance.writeValueAsString(map);
-        } catch (JsonProcessingException e) {
-            logger.error("JsonProcessingException" + e.getMessage());
-            return omPerformance.writeValueAsString("failed");
-        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("performances", list);
+        map.put("totalRecords", pa.getTotalRecords());
+        omPerformance.setDateFormat(new SimpleDateFormat(Constant.DATE_FORMAT));
+        return omPerformance.writeValueAsString(map);
     }
 
     /*@RequestMapping(value = {"/performance/genCsv/{eventId}"}, method = RequestMethod.GET, produces = "application/json")
     @RequestMapping(value = {"/performance/diagram"}, method = RequestMethod.POST, produces = "application/json")
     public String generateDiagram(@RequestParam String sourceId, @RequestParam String startTime, @RequestParam String endTime, @RequestParam String nameParent, @RequestParam String format) {
         try {
-            return omPerformance.writeValueAsString(diagramDate(sourceId,nameParent,startTime,endTime,format));
-        } catch (JsonProcessingException e) {
-            logger.error("JsonProcessingException:" + e.getMessage());
-            return null;
+            return omPerformance.writeValueAsString(diagramDate(sourceId, nameParent, startTime, endTime, format));
         } catch (Exception e) {
             logger.error(e.getMessage());
             e.printStackTrace();
     public String getSourceIds() {
         List<String> sourceIds = new ArrayList<>();
         try {
-            performanceHeaderService.queryAllSourceId().forEach( ph -> {
+            performanceHeaderService.queryAllSourceId().forEach(ph -> {
                 if (!sourceIds.contains(ph))
                     sourceIds.add(ph);
-            } );
+            });
             return omPerformance.writeValueAsString(sourceIds);
-        } catch (JsonProcessingException e) {
+        } catch (Exception e) {
             logger.error(e.getMessage());
-            return "";
+            return null;
         }
     }
 
 
             });
             return omPerformance.writeValueAsString(names);
-        } catch (JsonProcessingException e) {
+        } catch (Exception e) {
             logger.error(e.getMessage());
             return "";
         }
     }
 
-    private List<List<Long>> dateProcess(String sourceId,String name,long startTimeL,long endTimeL,long timeIteraPlusVal,long keyVal,long keyValIteraVal,String keyUnit) throws ParseException {
+    private List<List<Long>> dateProcess(String sourceId, String name, long startTimeL, long endTimeL, long timeIteraPlusVal, long keyVal, long keyValIteraVal, String keyUnit) throws ParseException {
         List<List<Long>> dataList = new ArrayList<>();
         long tmpEndTimeL = startTimeL + timeIteraPlusVal;
-        while (endTimeL >= tmpEndTimeL){
-            List<Map<String,String>> maps = performanceInformationService.queryMaxValueByBetweenDate(sourceId,name,sdf.format(new Date(startTimeL)),sdf.format(new Date(tmpEndTimeL)));
-            maps.forEach( map -> {
+        while (endTimeL >= tmpEndTimeL) {
+            List<Map<String, String>> maps = performanceInformationService.queryMaxValueByBetweenDate(sourceId, name, sdf.format(new Date(startTimeL)), sdf.format(new Date(tmpEndTimeL)));
+            maps.forEach(map -> {
                 try {
                     List<Long> longList = new ArrayList<>();
-                    if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time")) ){
+                    if (map.get("Time") != null && !"".equals(map.get("Time")) && !"NULL".equals(map.get("Time"))) {
                         longList.add(sdf.parse(map.get("Time")).getTime());
                         if (map.get("Max") != null && !"".equals(map.get("Max")))
                             longList.add(Long.parseLong(map.get("Max")));
         return dataList;
     }
 
-    private List<List<Long>> diagramDate(String sourceId,String name,String startTime,String endTime,String format){
+    private List<List<Long>> diagramDate(String sourceId, String name, String startTime, String endTime, String format) {
         try {
             long startTimel = sdf.parse(startTime).getTime();
             long endTimel = sdf.parse(endTime).getTime();
-            if (format != null && !format.equals("auto")){
-                switch (format){
+            if (format != null && !format.equals("auto")) {
+                switch (format) {
                     case "minute":
-                        return dateProcess(sourceId,name,startTimel,endTimel,900000,15,15,"minute");
+                        return dateProcess(sourceId, name, startTimel, endTimel, 900000, 15, 15, "minute");
                     case "hour":
-                        return dateProcess(sourceId,name,startTimel,endTimel,3600000,1,1,"hour");
+                        return dateProcess(sourceId, name, startTimel, endTimel, 3600000, 1, 1, "hour");
                     case "day":
-                        return dateProcess(sourceId,name,startTimel,endTimel,86400000,1,1,"day");
+                        return dateProcess(sourceId, name, startTimel, endTimel, 86400000, 1, 1, "day");
                     case "month":
-                        return dateProcess(sourceId,name,startTimel,endTimel,2592000000L,1,1,"month");
+                        return dateProcess(sourceId, name, startTimel, endTimel, 2592000000L, 1, 1, "month");
                     case "year":
-                        return dateProcess(sourceId,name,startTimel,endTimel,31536000000L,1,1,"year");
+                        return dateProcess(sourceId, name, startTimel, endTimel, 31536000000L, 1, 1, "year");
                 }
-            }else if (format != null && format.equals("auto")){
+            } else if (format != null && format.equals("auto")) {
                 long minutes = (endTimel - startTimel) / (1000 * 60);
                 long hours = minutes / 60;
-                if (hours > 12){
+                if (hours > 12) {
                     long days = hours / 24;
-                    if (days > 3){
+                    if (days > 3) {
                         long months = days / 31;
-                        if (months > 2){
-                            return dateProcess(sourceId,name,startTimel,endTimel,86400000,1,1,"day");
-                        }else {
-                            return dateProcess(sourceId,name,startTimel,endTimel,2592000000L,1,1,"month");
+                        if (months > 2) {
+                            return dateProcess(sourceId, name, startTimel, endTimel, 86400000, 1, 1, "day");
+                        } else {
+                            return dateProcess(sourceId, name, startTimel, endTimel, 2592000000L, 1, 1, "month");
                         }
-                    }else {
-                        return dateProcess(sourceId,name,startTimel,endTimel,3600000,1,1,"hour");
+                    } else {
+                        return dateProcess(sourceId, name, startTimel, endTimel, 3600000, 1, 1, "hour");
                     }
-                }else {
-                    return dateProcess(sourceId,name,startTimel,endTimel,900000,15,15,"minute");
+                } else {
+                    return dateProcess(sourceId, name, startTimel, endTimel, 900000, 15, 15, "minute");
                 }
             }
         } catch (ParseException e) {
 
 import java.io.InputStream;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 @Component
                         try {
                             List<Map<String, Object>> m = (List<Map<String, Object>>) v3;
                             m.forEach(i -> {
-                                if (i.get("name").toString().equals("eventTime"))
-                                    try {
-                                        alarm_header.setCreateTime(DateUtils.stringToDate(i.get("value").toString()));
-                                        alarm_header.setUpdateTime(DateUtils.now());
-                                    } catch (ParseException e) {
-                                        e.printStackTrace();
-                                    }
-                                else {
-                                    alarm_informations.add(new AlarmsInformation(i.get("name").toString(), i.get("value").toString(), alarm_header.getSourceId(), null, new Date()));
-                                }
+                                alarm_informations.add(new AlarmsInformation(i.get("name").toString(), i.get("value").toString(), alarm_header.getSourceId(), new Date(), null));
                             });
                         } catch (Exception e) {
                             e.printStackTrace();
 
             }
         });
-        if (alarm_header.getEventName() != null && alarm_informations.size() > 0){
+        if (alarm_header.getEventName() != null){
             alarm_informations.forEach(ai -> {
                 ai.setCreateTime(alarm_header.getCreateTime());
                 ai.setUpdateTime(new Date());
             });
+
+            Long startEpochMicrosec_s = Long.parseLong(alarm_header.getStartEpochMicrosec());
+            String date_get = new DateUtils().getYearMonthDayHourMinuteSecond(startEpochMicrosec_s);
+
             if (alarm_header.getEventName().contains("Cleared")) {
-                alarm_header.setStatus("3");
+                alarm_header.setStatus("close");
                 logger.info("alarmCleared data header insert is starting......");
-                alarmsHeaderService.saveAlarmsHeader(alarm_header);
+                alarmsHeaderService.updateAlarmsHeader2018("close",date_get,alarm_header.getEventName(),alarm_header.getEventName().replace("Cleared",""),alarm_header.getReportingEntityName(),alarm_header.getSpecificProblem());
                 logger.info("alarmCleared data header insert has finished.");
                 logger.info("alarmCleared data detail insert is starting......");
                 alarm_informations.forEach(information ->
-                        alarmsInformationService.saveAlarmsInformation(information));
+                    alarmsInformationService.saveAlarmsInformation(information));
+
                 logger.info("alarmCleared data detail insert has finished. " + alarm_informations.size() + " records have been inserted.");
                 AlarmsHeader header1 = new AlarmsHeader();
                 header1.setEventName(alarm_header.getEventName().substring(0, alarm_header.getEventName().indexOf("Cleared")));
                 List<AlarmsHeader> alarmsHeaders = alarmsHeaderService.queryAlarmsHeader(header1, 1, 10).getList();
                 alarmsHeaders.forEach(alarms -> {
                     alarms.setStatus("2");
-                    alarms.setUpdateTime(new Date());
+                    alarms.setUpdateTime(alarm_header.getCreateTime());
                     alarmsHeaderService.updateAlarmsHeader(alarms);
                 });
             } else {
-                alarm_header.setUpdateTime(new Date());
-                alarm_header.setStatus("1");
+                alarm_header.setCreateTime(new Date());
+                alarm_header.setStatus("active");
                 logger.info("alarm data header insert is starting......");
                 alarmsHeaderService.saveAlarmsHeader(alarm_header);
                 logger.info("alarm data header insert has finished.");
                 logger.info("alarm data detail insert is starting......");
-                alarm_informations.forEach(information ->
-                        alarmsInformationService.saveAlarmsInformation(information));
-                logger.info("alarm data detail insert has finished. " + alarm_informations.size() + " records have been inserted.");
+                if(alarm_informations.size() > 0) {
+                    alarm_informations.forEach(information ->
+                            alarmsInformationService.saveAlarmsInformation(information));
+                    logger.info("alarm data detail insert has finished. " + alarm_informations.size() + " records have been inserted.");
+                }
             }
         }
     }
                         try {
                             List<Map<String, Object>> m = (List<Map<String, Object>>) v3;
                             m.forEach(i -> {
-                                if (i.containsKey("arrayOfFields")){
-                                    List<Map<String,String>> arrayOfFields = (List<Map<String, String>>) i.get("arrayOfFields");
-                                    arrayOfFields.forEach( fields -> {
-                                        if (fields.get("name").equals("StartTime")){
-                                            try {
-                                                performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now()));
-                                                performance_header.setCreateTime(DateUtils.stringToDate(fields.get("value").replaceAll(Constant.RegEX_DATE_FORMAT," ")));
-                                                performance_header.setUpdateTime(DateUtils.now());
-                                            } catch (ParseException e) {
-                                                e.printStackTrace();
-                                            }
-                                        }else{
-                                            try {
-                                                performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now()));
-                                            } catch (ParseException e) {
-                                                e.printStackTrace();
+                                i.forEach( (k,v) -> {
+                                    if (k.equals("arrayOfFields")){
+                                        List<Map<String,String>> arrayOfFields = (List<Map<String, String>>) v;
+                                        arrayOfFields.forEach( fields -> {
+                                            if (fields.get("name").equals("StartTime")){
+                                                try {
+                                                    performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now()));
+                                                    performance_header.setCreateTime(DateUtils.stringToDate(fields.get("value").replaceAll(Constant.RegEX_DATE_FORMAT," ")));
+                                                    performance_header.setUpdateTime(DateUtils.now());
+                                                } catch (ParseException e) {
+                                                    e.printStackTrace();
+                                                }
+                                            }else{
+                                                try {
+                                                    performance_informations.add(new PerformanceInformation(fields.get("name"),fields.get("value"),performance_header.getSourceId(),null,DateUtils.now()));
+                                                } catch (ParseException e) {
+                                                    e.printStackTrace();
+                                                }
                                             }
-                                        }
-                                    } );
-                                }
-
+                                        } );
+                                    }
+                                });
                             });
-
                         } catch (Exception e) {
                             e.printStackTrace();
                             logger.error("convert performanceAdditionalInformation error:" + e.getMessage());