From a4e25fc0cd113518980305af3c061892b1b24b14 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期一, 23 六月 2025 17:07:05 +0800 Subject: [PATCH] 预警分析管理 --- src/main/java/com/whyc/service/AlmAnalysisParamService.java | 149 ++++++++++++++++++++++++++++++++++++------------- 1 files changed, 110 insertions(+), 39 deletions(-) diff --git a/src/main/java/com/whyc/service/AlmAnalysisParamService.java b/src/main/java/com/whyc/service/AlmAnalysisParamService.java index b0606c8..a4b6175 100644 --- a/src/main/java/com/whyc/service/AlmAnalysisParamService.java +++ b/src/main/java/com/whyc/service/AlmAnalysisParamService.java @@ -1,6 +1,8 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.whyc.constant.AnalysisEnum; +import com.whyc.dto.AnalysisAlm.AnalysisChangeRes; import com.whyc.dto.AnalysisAlm.ResAnalysis; import com.whyc.dto.Real.RealDateDTO; import com.whyc.dto.Response; @@ -46,107 +48,116 @@ wrapper.eq("alm_id",almId); wrapper.last("limit 1"); AlmAnalysisParam param= mapper.selectOne(wrapper); + if(param!=null){ + param.setMainFieldTypeName(AnalysisEnum.getValue(param.getMainFieldType())); + param.setMinorField1TypeName(AnalysisEnum.getValue(param.getMinorField1Type())); + param.setMinorField2TypeName(AnalysisEnum.getValue(param.getMinorField2Type())); + param.setMinorField3TypeName(AnalysisEnum.getValue(param.getMinorField3Type())); + param.setMinorField4TypeName(AnalysisEnum.getValue(param.getMinorField4Type())); + } return param; } //棰勮鍒嗘瀽绠$悊-鐢垫簮涓诲睘鎬у拰鍒嗘瀽灞炴�� - public Response getHisRealInAlm(Integer battgroupId,Integer powerId, String startTime, Integer almId,Integer intervalTime) throws ParseException, InterruptedException { + public Response getHisRealInAlm(Integer battgroupId,Integer powerId, String startTime, Integer almId) throws ParseException, InterruptedException { Map<String,Object> map=new HashMap<>(); map.put("batt",null); map.put("pwr",null); - Integer cycleTime=0; //鑾峰彇棰勮鍒嗘瀽鍛ㄦ湡闃堝�� - if(intervalTime==null){ - AppParam appParam = appParamService.getAlarmAnalysisCycle(); - cycleTime=appParam.getParamValue().intValue(); - }else{ - cycleTime=intervalTime; - } + AppParam appParam = appParamService.getAlarmAnalysisCycle(); + Integer cycleTime=appParam.getParamValue().intValue(); Date cyscleDate=ActionUtil.getDateAdd(ThreadLocalUtil.parse(startTime,1),cycleTime*(-1)); + Date endTime=ActionUtil.getDateAdd(ThreadLocalUtil.parse(startTime,1),60); //鑾峰彇cyscleDate鍒扮幇鍦ㄦ墍鏈夌殑鍘嗗彶瀹炴椂鏁版嵁 - List<List<Date>> monthTimeList = DateUtil.getMonthTime(cyscleDate,new Date()); - //鎬荤殑灞炴�ч厤缃� - List<AlmSummaryParam> summaryList=summaryParamService.getInfo(); + List<List<Date>> monthTimeList = DateUtil.getMonthTime(cyscleDate,endTime); //鑾峰彇鍛婅almId瀵瑰簲鐨勫垎鏋愰厤缃睘鎬у�� AlmAnalysisParam almAnalysisParam=getAnalysisParam(almId); if(almAnalysisParam==null||almAnalysisParam.getMainFieldType()==null){ return new Response().set(1,false,"鏃犲搴斿垎鏋愬睘鎬�"); }else{ + //鍒嗙粍鏌ョ湅闇�瑕佹煡璇㈢數婧�/鐢垫睜瀹炴椂琛ㄧ殑鍝簺鏁版嵁 - Map<String,List<String>> groupmap=groupPwrAndBatt(almAnalysisParam); - List<String> battList=groupmap.get("batt"); - List<String> pwrList=groupmap.get("pwr"); + Map<String, Map<String,Object>> groupmap=groupPwrAndBatt(almAnalysisParam); + Map<String,Object> battMap=groupmap.get("batt"); + Map<String,Object> pwrMap=groupmap.get("pwr"); + Map<String,Object> mainMap=groupmap.get("main"); + mainMap.put("pwr",pwrMap.size()); + mainMap.put("batt",battMap.size()); if(battgroupId!=null){ - if(battList!=null&&battList.size()>0){ - List battHislist=getBattRealData(battgroupId,monthTimeList,battList); + if(battMap!=null&&battMap.size()>0){ + List battHislist=getBattRealData(battgroupId,monthTimeList,battMap); map.put("batt",battHislist); } } if(powerId!=null){ - if(pwrList!=null&&pwrList.size()>0){ - List pwrHislist=getPwrRealData(powerId,monthTimeList,pwrList); + if(pwrMap!=null&&pwrMap.size()>0){ + List pwrHislist=getPwrRealData(powerId,monthTimeList,pwrMap); map.put("pwr",pwrHislist); } } - return new Response().setIII(1,true, map,summaryList,"棰勮鍒嗘瀽绠$悊-鐢垫簮涓诲睘鎬у拰鍒嗘瀽灞炴��"); + return new Response().setIIII(1,true, map,mainMap,almAnalysisParam,"棰勮鍒嗘瀽绠$悊-鐢垫簮涓诲睘鎬у拰鍒嗘瀽灞炴��"); } } //鍒嗙粍鏌ョ湅闇�瑕佹煡璇㈢數婧�/鐢垫睜瀹炴椂琛ㄧ殑鍝簺鏁版嵁 - private Map<String, List<String>> groupPwrAndBatt(AlmAnalysisParam almAnalysisParam) { - Map<String, List<String>> map = new HashMap<>(); - List<String> battList=new ArrayList<>(); - List<String> pwrList=new ArrayList<>(); + private Map<String, Map<String,Object>> groupPwrAndBatt(AlmAnalysisParam almAnalysisParam) { + Map<String, Map<String,Object>> map = new HashMap<>(); + Map<String,Object> battMap=new HashMap<>(); + Map<String,Object> pwrMap=new HashMap<>(); + Map<String,Object> mainMap=new HashMap<>(); if(almAnalysisParam.getMainFieldType()==1||almAnalysisParam.getMainFieldType()==2||almAnalysisParam.getMainFieldType()==3){ if(almAnalysisParam.getMainField()!=null||almAnalysisParam.getMainField().length()>0){ - pwrList.add(almAnalysisParam.getMainField()); + pwrMap.put(almAnalysisParam.getMainField(),almAnalysisParam.getMainFieldType()); + mainMap.put("main","pwr"); } }else{ if(almAnalysisParam.getMainField()!=null||almAnalysisParam.getMainField().length()>0){ - battList.add(almAnalysisParam.getMainField()); + battMap.put(almAnalysisParam.getMainField(),almAnalysisParam.getMainFieldType()); + mainMap.put("main","batt"); } } if(almAnalysisParam.getMinorField1Type()==1||almAnalysisParam.getMinorField1Type()==2||almAnalysisParam.getMinorField1Type()==3){ if(almAnalysisParam.getMinorField1()!=null&&almAnalysisParam.getMinorField1().length()>0){ - pwrList.add(almAnalysisParam.getMinorField1()); + pwrMap.put(almAnalysisParam.getMinorField1(),almAnalysisParam.getMinorField1Type()); } }else{ if(almAnalysisParam.getMinorField1()!=null&&almAnalysisParam.getMinorField1().length()>0){ - battList.add(almAnalysisParam.getMinorField1()); + battMap.put(almAnalysisParam.getMinorField1(),almAnalysisParam.getMinorField1Type()); } } if(almAnalysisParam.getMinorField2Type()==1||almAnalysisParam.getMinorField2Type()==2||almAnalysisParam.getMinorField2Type()==3){ if(almAnalysisParam.getMinorField2()!=null&&almAnalysisParam.getMinorField2().length()>0){ - pwrList.add(almAnalysisParam.getMinorField2()); + pwrMap.put(almAnalysisParam.getMinorField2(),almAnalysisParam.getMinorField2Type()); } }else{ if(almAnalysisParam.getMinorField2()!=null&&almAnalysisParam.getMinorField2().length()>0){ - battList.add(almAnalysisParam.getMinorField2()); + battMap.put(almAnalysisParam.getMinorField2(),almAnalysisParam.getMinorField2Type()); } } if(almAnalysisParam.getMinorField3Type()==1||almAnalysisParam.getMinorField3Type()==2||almAnalysisParam.getMinorField3Type()==3){ if(almAnalysisParam.getMinorField3()!=null&&almAnalysisParam.getMinorField3().length()>0){ - pwrList.add(almAnalysisParam.getMinorField3()); + pwrMap.put(almAnalysisParam.getMinorField3(),almAnalysisParam.getMinorField3Type()); } }else{ if(almAnalysisParam.getMinorField3()!=null&&almAnalysisParam.getMinorField3().length()>0){ - battList.add(almAnalysisParam.getMinorField3()); + battMap.put(almAnalysisParam.getMinorField3(),almAnalysisParam.getMinorField3Type()); } } if(almAnalysisParam.getMinorField4Type()==1||almAnalysisParam.getMinorField4Type()==2||almAnalysisParam.getMinorField4Type()==3){ if(almAnalysisParam.getMinorField4()!=null&&almAnalysisParam.getMinorField4().length()>0){ - pwrList.add(almAnalysisParam.getMinorField4()); + pwrMap.put(almAnalysisParam.getMinorField4(),almAnalysisParam.getMinorField4Type()); } }else{ if(almAnalysisParam.getMinorField4()!=null&&almAnalysisParam.getMinorField4().length()>0){ - battList.add(almAnalysisParam.getMinorField4()); + battMap.put(almAnalysisParam.getMinorField4(),almAnalysisParam.getMinorField4Type()); } } - map.put("pwr",pwrList); - map.put("batt",battList); + map.put("pwr",pwrMap); + map.put("batt",battMap); + map.put("main",mainMap); return map; } //杩炴帴姹犺幏鍙栫數婧愬巻鍙插疄鏃舵暟鎹� - public List getPwrRealData(Integer powerId,List<List<Date>> monthTimeList,List<String> pwrList) throws InterruptedException { + public List getPwrRealData(Integer powerId,List<List<Date>> monthTimeList,Map<String,Object> pwrMap) throws InterruptedException { List<ResAnalysis> dataList = new LinkedList<>(); ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor(); CountDownLatch latch = new CountDownLatch(monthTimeList.size()); @@ -163,7 +174,7 @@ int tableNum = subTablePageInfoService.judgeTable_pwrhis(table); List<ResAnalysis> list = new ArrayList(); if (tableNum > 0) { - list = subTablePageInfoService.getPwrHisRealInAlm(pwrHis,pwrList); + list = subTablePageInfoService.getPwrHisRealInAlm(pwrHis,pwrMap); } dataList.addAll(list); latch.countDown(); @@ -176,7 +187,7 @@ } //鐢垫睜鍛婅鐐瑰嚮鍏蜂綋鍛婅淇℃伅鏌ョ湅浠庡憡璀﹀紑濮嬫椂闂村埌鐜板湪鐨勫巻鍙插疄鏃舵暟鎹� - public List getBattRealData(Integer battgroupId, List<List<Date>> monthTimeList,List<String> battList) throws ParseException, InterruptedException { + public List getBattRealData(Integer battgroupId, List<List<Date>> monthTimeList,Map<String,Object> battMap) throws ParseException, InterruptedException { List<ResAnalysis> dataList = new LinkedList<>(); ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor(); CountDownLatch latch = new CountDownLatch(monthTimeList.size()); @@ -193,7 +204,7 @@ int tableNum = subTablePageInfoService.judgeTable_realdata(table); List<ResAnalysis> list = new ArrayList(); if (tableNum > 0) { - list = subTablePageInfoService.getBattHisRealInAlm(realdata,battList); + list = subTablePageInfoService.getBattHisRealInAlm(realdata,battMap); } dataList.addAll(list); latch.countDown(); @@ -204,5 +215,65 @@ List dataListSorted = dataList.stream().sorted(Comparator.comparing(ResAnalysis::getRecordTime)).collect(Collectors.toList()); return dataListSorted; } + //棰勮鍒嗘瀽绠$悊-鍒囨崲鏃堕棿闂撮殧鍜屽壇灞炴�� + public Response getHisRealWithChage(AnalysisChangeRes res) throws ParseException, InterruptedException { + Map<String,Object> map=new HashMap<>(); + map.put("batt",null); + map.put("pwr",null); + Integer cycleTime=0; + //鑾峰彇棰勮鍒嗘瀽鍛ㄦ湡闃堝�� + AppParam appParam = appParamService.getAlarmAnalysisCycle(); + cycleTime=appParam.getParamValue().intValue(); + Date cyscleDate=ActionUtil.getDateAdd(ThreadLocalUtil.parse(res.getStartTime(),1),cycleTime*(-1)); + Date endTime=ActionUtil.getDateAdd(ThreadLocalUtil.parse(res.getStartTime(),1),60); + //鑾峰彇cyscleDate鍒扮幇鍦ㄦ墍鏈夌殑鍘嗗彶瀹炴椂鏁版嵁 + List<List<Date>> monthTimeList = DateUtil.getMonthTime(cyscleDate,endTime); + //鑾峰彇鍛婅almId瀵瑰簲鐨勫垎鏋愰厤缃睘鎬у�� + AlmAnalysisParam almAnalysisParam=new AlmAnalysisParam(); + //灏嗗睘鎬ф嫹璐濊嚦almAnalysisParam涓� + copyProperties(almAnalysisParam,res); + //鍒嗙粍鏌ョ湅闇�瑕佹煡璇㈢數婧�/鐢垫睜瀹炴椂琛ㄧ殑鍝簺鏁版嵁 + Map<String, Map<String,Object>> groupmap=groupPwrAndBatt(almAnalysisParam); + Map<String,Object> battMap=groupmap.get("batt"); + Map<String,Object> pwrMap=groupmap.get("pwr"); + Map<String,Object> mainMap=groupmap.get("main"); + mainMap.put("pwr",pwrMap.size()); + mainMap.put("batt",battMap.size()); + if(res.getBattgroupId()!=null){ + if(battMap!=null&&battMap.size()>0){ + List battHislist=getBattRealData(res.getBattgroupId(),monthTimeList,battMap); + map.put("batt",battHislist); + } + } + if(res.getPowerId()!=null){ + if(pwrMap!=null&&pwrMap.size()>0){ + List pwrHislist=getPwrRealData(res.getPowerId(),monthTimeList,pwrMap); + map.put("pwr",pwrHislist); + } + } + return new Response().setIIII(1,true, map,mainMap,almAnalysisParam,"棰勮鍒嗘瀽绠$悊-鍒囨崲鏃堕棿闂撮殧鍜屽壇灞炴��"); + } + //灏嗗睘鎬ф嫹璐濊嚦almAnalysisParam涓� + private void copyProperties(AlmAnalysisParam almAnalysisParam, AnalysisChangeRes res) { + almAnalysisParam.setMainField(res.getDataName1()); + almAnalysisParam.setMainFieldType(res.getDataType1()); + almAnalysisParam.setMinorField1(res.getDataName2()); + almAnalysisParam.setMinorField1Type(res.getDataType2()); + almAnalysisParam.setMinorField2(res.getDataName3()); + almAnalysisParam.setMinorField2Type(res.getDataType3()); + almAnalysisParam.setMinorField3(res.getDataName4()); + almAnalysisParam.setMinorField3Type(res.getDataType4()); + almAnalysisParam.setMinorField4(res.getDataName5()); + almAnalysisParam.setMinorField4Type(res.getDataType5()); + } + //棰勮鍒嗘瀽绠$悊-鏌ヨ鎵�鏈夌殑灞炴�у搴斿叧绯� + public Response getAlmSummaryParam() { + //鎬荤殑灞炴�ч厤缃� + List<AlmSummaryParam> summaryList=summaryParamService.getInfo(); + summaryList.forEach(item->{ + item.setFieldTypeName(AnalysisEnum.getValue(item.getFieldType())); + }); + return new Response().setII(1,true,summaryList,"棰勮鍒嗘瀽绠$悊-鏌ヨ鎵�鏈夌殑灞炴�у搴斿叧绯�"); + } } \ No newline at end of file -- Gitblit v1.9.1