From 9b85345450e2e194a84679bb6612f58a3124aee8 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期五, 20 六月 2025 08:45:13 +0800 Subject: [PATCH] 预警分析管理-电源告警 --- src/main/java/com/whyc/service/PwrdevAlarmService.java | 66 +++++++++++++++++++++++++++++++- 1 files changed, 63 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/whyc/service/PwrdevAlarmService.java b/src/main/java/com/whyc/service/PwrdevAlarmService.java index 2c6c0e8..94aed4f 100644 --- a/src/main/java/com/whyc/service/PwrdevAlarmService.java +++ b/src/main/java/com/whyc/service/PwrdevAlarmService.java @@ -10,26 +10,44 @@ import com.whyc.dto.AlarmDto; import com.whyc.dto.Param.AlmAnalyseDto; import com.whyc.dto.Real.AlmDto; +import com.whyc.dto.Real.RealDateDTO; import com.whyc.dto.Response; +import com.whyc.factory.ThreadPoolExecutorFactory; import com.whyc.mapper.PwrdevAlarmMapper; import com.whyc.pojo.db_alarm.DevalarmData; +import com.whyc.pojo.db_data_history.BattRealdataId; +import com.whyc.pojo.db_data_history.PwrdevHistorydataId; +import com.whyc.pojo.db_param.AlmAnalysisParam; +import com.whyc.pojo.db_param.AppParam; import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarm; import com.whyc.pojo.db_pwrdev_alarm.PwrdevAlarmParam; import com.whyc.pojo.web_site.AlarmInspection; import com.whyc.util.ActionUtil; +import com.whyc.util.DateUtil; +import com.whyc.util.ThreadLocalUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; + +import static java.lang.Thread.sleep; @Service public class PwrdevAlarmService { @Autowired(required = false) private PwrdevAlarmMapper mapper; + @Autowired + private AppParamService appParamService; + @Autowired + private AlmAnalysisParamService almAnalysisParamService; + @Autowired + private SubTablePageInfoService subTablePageInfoService; //鑾峰彇鐢垫簮瀹炴椂鍛婅淇℃伅 public Response getPwrAlmReal(AlmDto almDto) { PageHelper.startPage(almDto.getPageNum(),almDto.getPageSize()); @@ -94,4 +112,46 @@ PageInfo pageInfo=new PageInfo(list); return new Response().setII(1,list!=null,pageInfo,"鐢垫簮鍛婅鍒嗘瀽"); } + //棰勮鍒嗘瀽绠$悊-鐢垫簮涓诲睘鎬у拰鍒嗘瀽灞炴�� + public Response getPwrHisRealInAlm(Integer powerId, String startTime, Integer almId,Integer intervalTime) throws ParseException, InterruptedException { + //鑾峰彇鍛婅almId瀵瑰簲鐨勫垎鏋愰厤缃睘鎬у�� + AlmAnalysisParam almAnalysisParam= almAnalysisParamService.getAnalysisParam(almId); + List<PwrdevHistorydataId> dataList = new LinkedList<>(); + Integer cycleTime=0; + //鑾峰彇棰勮鍒嗘瀽鍛ㄦ湡闃堝�� + if(intervalTime==null){ + AppParam appParam = appParamService.getAlarmAnalysisCycle(); + cycleTime=appParam.getParamValue().intValue(); + }else{ + cycleTime=intervalTime; + } + Date cyscleDate=ActionUtil.getDateAdd(ThreadLocalUtil.parse(startTime,1),cycleTime*(-1)); + //鑾峰彇cyscleDate鍒扮幇鍦ㄦ墍鏈夌殑鍘嗗彶瀹炴椂鏁版嵁 + List<List<Date>> monthTimeList = DateUtil.getMonthTime(cyscleDate,new Date()); + ThreadPoolExecutor pool = ThreadPoolExecutorFactory.getPoolExecutor(); + CountDownLatch latch = new CountDownLatch(monthTimeList.size()); + for (int i = 0; i < monthTimeList.size(); i++) { + int finalI = i; + pool.execute(() -> { + int finalII = finalI; + PwrdevHistorydataId pwrHis = new PwrdevHistorydataId(); + pwrHis.setRecordDatetime(monthTimeList.get(finalII).get(0)); + pwrHis.setRecordDatetime1(monthTimeList.get(finalII).get(1)); + String table = powerId + "_" + ThreadLocalUtil.format(pwrHis.getRecordDatetime(),2); + pwrHis.setTableName(table);//琛ㄥ悕鏃堕棿鏍煎紡閮ㄥ垎 + //鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦� + int tableNum = subTablePageInfoService.judgeTable_pwrhis(table); + List<PwrdevHistorydataId> list = new ArrayList(); + if (tableNum > 0) { + list = subTablePageInfoService.getPwrHisRealInAlm(pwrHis); + } + dataList.addAll(list); + latch.countDown(); + }); + sleep(200); + } + latch.await(10, TimeUnit.MINUTES); + List dataListSorted = dataList.stream().sorted(Comparator.comparing(PwrdevHistorydataId::getRecordDatetime)).collect(Collectors.toList()); + return new Response().setIII(1,true, dataListSorted,almAnalysisParam,"棰勮鍒嗘瀽绠$悊-鐢垫簮涓诲睘鎬у拰鍒嗘瀽灞炴��"); + } } \ No newline at end of file -- Gitblit v1.9.1