From 82d3504d93db29e2b04ed1137e541a19e0cba0f1 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期一, 23 六月 2025 09:08:14 +0800 Subject: [PATCH] 预警分析管理 --- src/main/java/com/whyc/service/SubTablePageInfoService.java | 18 ++++----- src/main/java/com/whyc/service/PwrdevHistorydataIdService.java | 46 ++++++++++++++++------ src/main/java/com/whyc/controller/RealContoller.java | 2 src/main/java/com/whyc/service/AlmAnalysisParamService.java | 38 ++++++++++++------- 4 files changed, 66 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/whyc/controller/RealContoller.java b/src/main/java/com/whyc/controller/RealContoller.java index 0fe7730..0ec2631 100644 --- a/src/main/java/com/whyc/controller/RealContoller.java +++ b/src/main/java/com/whyc/controller/RealContoller.java @@ -39,7 +39,7 @@ @ApiOperation(value = "绯荤粺姒傝鑾峰彇鍓嶄竴鐧炬瘮鏃堕棿闂撮殧鏁版嵁鐩存祦杈撳嚭缁熻") @GetMapping("getPwrHisDcoutData100") - public Response getPwrHisDcoutData100(@RequestParam Integer powerId){ + public Response getPwrHisDcoutData100(@RequestParam Integer powerId) throws ParseException, InterruptedException { return pwrdevHistorydataIdService.getHalfHourPwrHisDcoutData(powerId); } diff --git a/src/main/java/com/whyc/service/AlmAnalysisParamService.java b/src/main/java/com/whyc/service/AlmAnalysisParamService.java index 060006f..64574c1 100644 --- a/src/main/java/com/whyc/service/AlmAnalysisParamService.java +++ b/src/main/java/com/whyc/service/AlmAnalysisParamService.java @@ -68,9 +68,12 @@ return new Response().set(1,false,"鏃犲搴斿垎鏋愬睘鎬�"); }else{ //鍒嗙粍鏌ョ湅闇�瑕佹煡璇㈢數婧�/鐢垫睜瀹炴椂琛ㄧ殑鍝簺鏁版嵁 - Map<String, Map<String,Integer>> groupmap=groupPwrAndBatt(almAnalysisParam); - Map<String,Integer> battMap=groupmap.get("batt"); - Map<String,Integer> pwrMap=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(battMap!=null&&battMap.size()>0){ List battHislist=getBattRealData(battgroupId,monthTimeList,battMap); @@ -83,21 +86,24 @@ map.put("pwr",pwrHislist); } } - return new Response().setII(1,true, map,"棰勮鍒嗘瀽绠$悊-鐢垫簮涓诲睘鎬у拰鍒嗘瀽灞炴��"); + return new Response().setIII(1,true, map,mainMap,"棰勮鍒嗘瀽绠$悊-鐢垫簮涓诲睘鎬у拰鍒嗘瀽灞炴��"); } } //鍒嗙粍鏌ョ湅闇�瑕佹煡璇㈢數婧�/鐢垫睜瀹炴椂琛ㄧ殑鍝簺鏁版嵁 - private Map<String, Map<String,Integer>> groupPwrAndBatt(AlmAnalysisParam almAnalysisParam) { - Map<String, Map<String,Integer>> map = new HashMap<>(); - Map<String,Integer> battMap=new HashMap<>(); - Map<String,Integer> pwrMap=new HashMap<>(); + 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){ pwrMap.put(almAnalysisParam.getMainField(),almAnalysisParam.getMainFieldType()); + mainMap.put("main","pwr"); } }else{ if(almAnalysisParam.getMainField()!=null||almAnalysisParam.getMainField().length()>0){ battMap.put(almAnalysisParam.getMainField(),almAnalysisParam.getMainFieldType()); + mainMap.put("main","batt"); } } if(almAnalysisParam.getMinorField1Type()==1||almAnalysisParam.getMinorField1Type()==2||almAnalysisParam.getMinorField1Type()==3){ @@ -138,10 +144,11 @@ } map.put("pwr",pwrMap); map.put("batt",battMap); + map.put("main",mainMap); return map; } //杩炴帴姹犺幏鍙栫數婧愬巻鍙插疄鏃舵暟鎹� - public List getPwrRealData(Integer powerId,List<List<Date>> monthTimeList,Map<String,Integer> pwrMap) 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()); @@ -171,7 +178,7 @@ } //鐢垫睜鍛婅鐐瑰嚮鍏蜂綋鍛婅淇℃伅鏌ョ湅浠庡憡璀﹀紑濮嬫椂闂村埌鐜板湪鐨勫巻鍙插疄鏃舵暟鎹� - public List getBattRealData(Integer battgroupId, List<List<Date>> monthTimeList,Map<String,Integer> battMap) 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()); @@ -218,9 +225,12 @@ //灏嗗睘鎬ф嫹璐濊嚦almAnalysisParam涓� copyProperties(almAnalysisParam,res); //鍒嗙粍鏌ョ湅闇�瑕佹煡璇㈢數婧�/鐢垫睜瀹炴椂琛ㄧ殑鍝簺鏁版嵁 - Map<String, Map<String,Integer>> groupmap=groupPwrAndBatt(almAnalysisParam); - Map<String,Integer> battMap=groupmap.get("batt"); - Map<String,Integer> pwrMap=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("pwr"); + 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); @@ -233,7 +243,7 @@ map.put("pwr",pwrHislist); } } - return new Response().setII(1,true, map,"棰勮鍒嗘瀽绠$悊-鍒囨崲鏃堕棿闂撮殧鍜屽壇灞炴��"); + return new Response().setIII(1,true, map,mainMap,"棰勮鍒嗘瀽绠$悊-鍒囨崲鏃堕棿闂撮殧鍜屽壇灞炴��"); } //灏嗗睘鎬ф嫹璐濊嚦almAnalysisParam涓� private void copyProperties(AlmAnalysisParam almAnalysisParam, AnalysisChangeRes res) { diff --git a/src/main/java/com/whyc/service/PwrdevHistorydataIdService.java b/src/main/java/com/whyc/service/PwrdevHistorydataIdService.java index ca1b960..8e69404 100644 --- a/src/main/java/com/whyc/service/PwrdevHistorydataIdService.java +++ b/src/main/java/com/whyc/service/PwrdevHistorydataIdService.java @@ -106,11 +106,9 @@ latch.await(10, TimeUnit.MINUTES); List dataListSorted = dataList.stream().sorted(Comparator.comparing(PwrHisRealAcInDto::getRecordDatetime)).collect(Collectors.toList()); return new Response().setII(1,dataList.size()>0,dataListSorted,"鑾峰彇鍗婂皬鏃跺唴浜ゆ祦杈撳叆缁熻"); - } //绯荤粺姒傝鑾峰彇鍓峃绗旂洿娴佽緭鍑虹粺璁� - public Response getHalfHourPwrHisDcoutData(Integer powerId) { - String dateTime = ActionUtil.sdfwithOutday.format(new Date()); + public Response getHalfHourPwrHisDcoutData(Integer powerId) throws InterruptedException, ParseException { //鑾峰彇鍓嶇瑪鏁�*鏃堕棿闂撮殧 PowerheartParam heartParam=heartService.getHeartParamByPowerId(powerId); Integer interverCount=100*5;//榛樿鍊� @@ -119,26 +117,48 @@ interverCount=heartParam.getAcinInterverCfg()*heartParam.getAcinCountCfg(); granularity=heartParam.getAcinInterverCfg(); } - //鑾峰彇鍓嶅崐涓皬鏃舵暟鎹� + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime now = LocalDateTime.now(); - // 璁$畻鍗婂皬鏃跺墠鐨勬椂闂寸偣 + String dateTime = now.format(formatter); + Date endTime=ActionUtil.sdf.parse(dateTime); + // 璁$畻绗旀暟*鏃堕棿闂撮殧鐨勬椂闂寸偣 LocalDateTime halfHourAgo = now.minusMinutes(interverCount); // 鏍煎紡鍖栬緭鍑� - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String halfHourAgoTime=halfHourAgo.format(formatter); - - String tableName ="db_data_history.tb_pwrdev_historydata_"+powerId+"_"+dateTime; - String existTableName = commonMapper.existTable("db_data_history", "tb_pwrdev_historydata_"+powerId+"_"+dateTime); - if(existTableName == null){ - return new Response().set(1,false,"褰撳墠鐢垫簮涓嶅瓨鍦ㄥ墠闈㈠皬鏃舵暟鎹�"); + Date startTime=ActionUtil.sdf.parse(halfHourAgoTime); + //鑾峰彇涓や釜鏃堕棿鍒嗗壊澶氬皯寮犺〃 + List<List<Date>> monthTimeList = DateUtil.getMonthTime(startTime,endTime); + List<PwrHisRealDcoutInDto> dataList = new LinkedList<>(); + ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor(); + CountDownLatch latch = new CountDownLatch(monthTimeList.size()); + for (int i = 0; i < monthTimeList.size(); i++) { + int finalI = i; + Integer finalGranularity = granularity; + pool.execute(() -> { + int finalII = finalI; + Date recordDatetime=monthTimeList.get(finalII).get(0); + Date recordDatetime1=monthTimeList.get(finalII).get(1); + String table = powerId + "_" + ThreadLocalUtil.format(recordDatetime,2); + String tableName="db_data_history.tb_pwrdev_historydata_"+table; + //鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦� + int tableNum = subTablePageInfoService.judgeTable_pwrhis(table); + List<PwrHisRealDcoutInDto> list = new ArrayList(); + if (tableNum > 0) { + list=subTablePageInfoService.getHalfHourPwrHisDcoutData(tableName, finalGranularity,recordDatetime,recordDatetime1); + } + dataList.addAll(list); + latch.countDown(); + }); + sleep(200); } - List<PwrHisRealDcoutInDto> datalist=subTablePageInfoService.getHalfHourPwrHisDcoutData(tableName,granularity,halfHourAgoTime); + latch.await(10, TimeUnit.MINUTES); + List dataListSorted = dataList.stream().sorted(Comparator.comparing(PwrHisRealDcoutInDto::getRecordDatetime)).collect(Collectors.toList()); Long modelCfg=0l; PowerInf pinf=powerInfService.getPowerInfById(powerId); if(pinf!=null){ modelCfg=pinf.getModelCfg(); } - return new Response().setIII(1,datalist.size()>0,datalist,modelCfg,"鑾峰彇鍗婂皬鏃跺唴鐩存祦杈撳嚭缁熻"); + return new Response().setIII(1,dataList.size()>0,dataListSorted,modelCfg,"鑾峰彇鍗婂皬鏃跺唴鐩存祦杈撳嚭缁熻"); } //1.2.7浼樿壇鐢垫簮缁熻涓婁竴瀛e害鐨勭數婧愭煇涓�灞炴�у拰鍙傛暟闃堝�艰秴杩囩殑娆℃暟 public Integer getPwrQuarter7(Integer powerId,Integer powerType) throws NoSuchFieldException, IllegalAccessException { diff --git a/src/main/java/com/whyc/service/SubTablePageInfoService.java b/src/main/java/com/whyc/service/SubTablePageInfoService.java index 473555c..23f6ad1 100644 --- a/src/main/java/com/whyc/service/SubTablePageInfoService.java +++ b/src/main/java/com/whyc/service/SubTablePageInfoService.java @@ -627,13 +627,11 @@ return list; } - public List<PwrHisRealDcoutInDto> getHalfHourPwrHisDcoutData(String tableName,Integer granularity,String halfHourAgoTime) { + public List<PwrHisRealDcoutInDto> getHalfHourPwrHisDcoutData(String tableName,Integer granularity,Date recordDatetime,Date recordDatetime1) { String sql="select distinct * " + - "from (select a.*, (@i:= @i+1) as number " + - " from (select * from "+tableName+" "+ - " where record_datetime>='"+halfHourAgoTime+"') a, " + - " (select @i:=0) b) c "+ - " where c.number%"+granularity+"=0 or c.number=1 "; + " from "+tableName+" where record_datetime>='"+ActionUtil.sdf.format(recordDatetime)+"'" + + " and record_datetime<='"+ActionUtil.sdf.format(recordDatetime1)+ + "' and record_num%"+granularity+"=0 or record_num=1 or record_num=100 "; sql+=" order by record_datetime asc"; List<PwrHisRealDcoutInDto> list = sqlExecuteService.executeQuery_call(sql, new CallBack() { @Override @@ -799,7 +797,7 @@ return list; } //鐢垫睜鏁版嵁鍘嗗彶瀹炴椂澶勭悊(棰勮鍒嗘瀽) - public List<ResAnalysis> getBattHisRealInAlm(BattRealdataId realdata, Map<String,Integer> battMap) { + public List<ResAnalysis> getBattHisRealInAlm(BattRealdataId realdata, Map<String,Object> battMap) { String result = String.join(",", battMap.keySet()); String sql=" select record_time,"+result+" " + " from db_data_history.tb_batt_realdata_"+realdata.getTableName()+" " + @@ -815,7 +813,7 @@ ph.setRecordTime(rs.getTimestamp("record_time")); int i=1; for (String key : battMap.keySet()) { - Integer dataType = battMap.get(key); + Integer dataType = (Integer) battMap.get(key); try { String propertyType = "dataType"+(i); Field fieldType = ResAnalysis.class.getDeclaredField(propertyType); @@ -848,7 +846,7 @@ } //鐢垫簮鏁版嵁鍘嗗彶瀹炴椂澶勭悊(棰勮鍒嗘瀽) - public List<ResAnalysis> getPwrHisRealInAlm(PwrdevHistorydataId pwrHis, Map<String,Integer> pwrMap) { + public List<ResAnalysis> getPwrHisRealInAlm(PwrdevHistorydataId pwrHis, Map<String,Object> pwrMap) { String result = String.join(",", pwrMap.keySet()); String sql=" select record_datetime,"+result+" " + " from db_data_history.tb_pwrdev_historydata_"+pwrHis.getTableName()+" " + @@ -864,7 +862,7 @@ ph.setRecordTime(rs.getTimestamp("record_datetime")); int i=1; for (String key : pwrMap.keySet()) { - Integer dataType = pwrMap.get(key); + Integer dataType = (Integer) pwrMap.get(key); try { String propertyType = "dataType"+(i); Field fieldType = ResAnalysis.class.getDeclaredField(propertyType); -- Gitblit v1.9.1