src/main/java/com/whyc/listener/TaskListener.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/BattRtdataMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/mapper/BattRtstateMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattRtdataService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/BattRtstateService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/HeiHeStationService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/task/HeiHeDataTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/util/HeiHeUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BattRtdataMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BattRtstateMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/listener/TaskListener.java
@@ -42,6 +42,9 @@ @Autowired private ProcessSurveyTask processSurveyTask; @Autowired private HeiHeDataTask heiHeDataTask; @Override public void contextInitialized(ServletContextEvent servletContextEvent) { /*Calendar instance = Calendar.getInstance(); @@ -51,6 +54,8 @@ Date firstDate = instance.getTime();*/ timer = new Timer("Task定时任务",true); timer.schedule(processSurveyTask,0,1000); /*//黑河多宝山和北安 站点专用 timer.schedule(heiHeDataTask,0,4000);*/ /*//每月刷新数据库表中天气支持城市-聚合平台,弃用 timer.schedule(new WeatherTask(),firstDate,ONE_MONTH);*/ src/main/java/com/whyc/mapper/BattRtdataMapper.java
@@ -41,4 +41,7 @@ List<BattRtdata> serch9141ByCondition(int devId); void addBatch(List<BattRtdata> battDataList); void updateBatch(List<BattRtdata> updateList); } src/main/java/com/whyc/mapper/BattRtstateMapper.java
@@ -49,4 +49,6 @@ void updateBatch(List<BattRtstate> battStateList); void insertBatch(List<BattRtstate> addList); } src/main/java/com/whyc/service/BattRtdataService.java
@@ -1,11 +1,13 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.mapper.BattRtdataMapper; import com.whyc.pojo.BattRtdata; import com.whyc.pojo.BattRtstate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -86,7 +88,35 @@ return new Response().setII(1, list.size() > 0 ? true : false, list, "9141数据"); } public void addBatch(List<BattRtdata> battDataList) { /*public void addBatch(List<BattRtdata> battDataList) { mapper.addBatch(battDataList); }*/ public void addOrUpdate(List<BattRtdata> battDataList) { List<BattRtdata> updateList = new LinkedList<>(); List<BattRtdata> addList = new LinkedList<>(); //如果存在电池组则更新所有 //不存在电池组则新增 //TODO 这里是提示,不是待办.重要!!!!!!如果电池组内新增了单体数,需要临时删除掉单体实时表数据. 这样会加载新的所有单体 List<Integer> battGroupIdList = battDataList.stream().map(BattRtdata::getBattGroupId).distinct().collect(Collectors.toList()); QueryWrapper<BattRtdata> query = Wrappers.query(); query.select("distinct BattGroupId as BattGroupId").in("BattGroupId",battGroupIdList); List<BattRtdata> battStateListInDB = mapper.selectList(query); List<Integer> battGroupIdListInDB = battStateListInDB.stream().map(BattRtdata::getBattGroupId).distinct().collect(Collectors.toList()); for (BattRtdata battData : battDataList) { if(battGroupIdListInDB.contains(battData.getBattGroupId())){ //更新 updateList.add(battData); }else{ //新增 addList.add(battData); } } if(updateList.size()>0){ mapper.updateBatch(updateList); } if(addList.size()>0) { mapper.addBatch(battDataList); } } } src/main/java/com/whyc/service/BattRtstateService.java
@@ -1,6 +1,8 @@ package com.whyc.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.whyc.dto.BattState; @@ -9,6 +11,7 @@ import com.whyc.mapper.BattRtstateMapper; import com.whyc.pojo.BattRtstate; import com.whyc.pojo.Battinf; import com.whyc.pojo.Fbs9100State; import com.whyc.pojo.UserInf; import com.whyc.util.ActionUtil; import com.whyc.util.MessageUtils; @@ -16,7 +19,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; @Service public class BattRtstateService { @@ -68,7 +73,31 @@ } public void update(List<BattRtstate> battStateList) { /*public void update(List<BattRtstate> battStateList) { battRtstateMapper.updateBatch(battStateList); }*/ public void addOrUpdate(List<BattRtstate> battStateList) { List<BattRtstate> updateList = new LinkedList<>(); List<BattRtstate> addList = new LinkedList<>(); List<Integer> battGroupIdList = battStateList.stream().map(BattRtstate::getBattGroupId).collect(Collectors.toList()); QueryWrapper<BattRtstate> query = Wrappers.query(); query.in("BattGroupId",battGroupIdList); List<BattRtstate> battStateListInDB = battRtstateMapper.selectList(query); List<Integer> battGroupIdListInDB = battStateListInDB.stream().map(BattRtstate::getBattGroupId).collect(Collectors.toList()); for (BattRtstate battState : battStateList) { if(battGroupIdListInDB.contains(battState.getBattGroupId())){ //更新 updateList.add(battState); }else{ //新增 addList.add(battState); } } if(updateList.size()>0){ battRtstateMapper.updateBatch(battStateList); } if(addList.size()>0) { battRtstateMapper.insertBatch(addList); } } } src/main/java/com/whyc/service/HeiHeStationService.java
@@ -93,7 +93,7 @@ //只获取 多宝山和北安 的数据,这两个站是接入的61850设备 //TODO 动态 配置 站点,通过网页追加 if(name.equals("220kV多宝山变") //||name.equals("220kV北安变") ||name.equals("220kV北安变") ) { heiHeStationDTO.setId(stationId); heiHeStationDTO.setName(name); @@ -138,6 +138,8 @@ battinf.setLoadCurrFromDis(0f); battinf.setNodeStation(0); battinf.setSignType(1); battinf.setMonNum(0); battinf.setMonCount(0); //属性复制到battinf2 BeanUtils.copyProperties(battinf,battinf2); @@ -278,8 +280,8 @@ List<BattRtdata> battDataList = (List<BattRtdata>) tableDataMap.get("battData"); //更新到数据库 fbs9100StateService.addOrUpdate(deviceStateList); battStateService.update(battStateList); battDataService.addBatch(battDataList); battStateService.addOrUpdate(battStateList); battDataService.addOrUpdate(battDataList); }else { src/main/java/com/whyc/task/HeiHeDataTask.java
@@ -1,6 +1,9 @@ package com.whyc.task; import com.whyc.constant.UserOperation; import com.whyc.service.HeiHeStationService; import com.whyc.service.UserLogService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -15,13 +18,20 @@ @Resource private HeiHeStationService stationService; @Autowired private UserLogService userLogService; @Override public void run() { //站点信息 接入 stationService.getAndSaveStationInf(); try { //站点信息 接入 stationService.getAndSaveStationInf(); //获取所有的厂站的点表信息 stationService.getAndSaveRealtimeData(); //获取所有的厂站的点表信息 stationService.getAndSaveRealtimeData(); }catch (Exception e){ //记录问题 userLogService.record(1, UserOperation.TYPE_EXCEPTION.getType(), "黑河市获取数据任务异常,异常信息:" + e.toString(), null); } } } src/main/java/com/whyc/util/HeiHeUtil.java
@@ -1455,6 +1455,9 @@ * @return */ public static Map<String, Object> relateObidWithTable(List<Battinf> battinfList, List<HeiHeRealtimeDataDTO> realtimeDataDTOS) { Date now = new Date(); String nowStr = DateUtil.YYYY_MM_DD_HH_MM_SS.format(now); Map<String,Object> map = new HashMap<>(); List<Fbs9100State> deviceStateList = new LinkedList<>(); List<BattRtstate> battStateList = new LinkedList<>(); @@ -1942,36 +1945,36 @@ switch (name){ case "第1组电池组电压": { battState1.setGroupVol(Float.valueOf(val)); Date recDatetime = battState1.getRecDatetime(); /*Date recDatetime = battState1.getRecDatetime(); //如果组1时间存在,与当前时间对比.始终取最大值 if(recDatetime == null){ battState1.setRecDatetime(date); } else if(date.compareTo(recDatetime)>0){ battState1.setRecDatetime(date); } }*/ }break; case "第1组电池组电流": { battState1.setGroupCurr(Float.valueOf(val)); Date recDatetime = battState1.getRecDatetime(); /*Date recDatetime = battState1.getRecDatetime(); //如果组1时间存在,与当前时间对比.始终取最大值 if(recDatetime == null){ battState1.setRecDatetime(date); } else if(date.compareTo(recDatetime)>0){ battState1.setRecDatetime(date); } }*/ }break; case "第1组在线端电压": { battState1.setOnlineVol(Float.valueOf(val)); Date recDatetime = battState1.getRecDatetime(); /*Date recDatetime = battState1.getRecDatetime(); //如果组1时间存在,与当前时间对比.始终取最大值 if(recDatetime == null){ battState1.setRecDatetime(date); } else if(date.compareTo(recDatetime)>0){ battState1.setRecDatetime(date); } }*/ } break; case "第1组电池组第1节单体电池电压值": @@ -2297,35 +2300,36 @@ }break; case "第2组电池组电压": { battState2.setGroupVol(Float.valueOf(val)); Date recDatetime = battState2.getRecDatetime(); /*Date recDatetime = battState2.getRecDatetime(); //如果组2时间存在,与当前时间对比.始终取最大值 if(recDatetime == null){ battState2.setRecDatetime(date); } else if(date.compareTo(recDatetime)>0){ battState2.setRecDatetime(date); } }*/ }break; case "第2组电池组电流":{battState2.setGroupCurr(Float.valueOf(val)); Date recDatetime = battState2.getRecDatetime(); case "第2组电池组电流":{ battState2.setGroupCurr(Float.valueOf(val)); /*Date recDatetime = battState2.getRecDatetime(); //如果组2时间存在,与当前时间对比.始终取最大值 if(recDatetime == null){ battState2.setRecDatetime(date); } else if(date.compareTo(recDatetime)>0){ battState2.setRecDatetime(date); } }*/ }break; case "第2组在线端电压": { battState2.setOnlineVol(Float.valueOf(val)); Date recDatetime = battState2.getRecDatetime(); /*Date recDatetime = battState2.getRecDatetime(); //如果组2时间存在,与当前时间对比.始终取最大值 if(recDatetime == null){ battState2.setRecDatetime(date); } else if(date.compareTo(recDatetime)>0){ battState2.setRecDatetime(date); } }*/ }break; case "第2组电池组第1节单体电池电压值": case "第2组电池组第2节单体电池电压值": @@ -2652,6 +2656,10 @@ } } //组端时间设置为当前值 battState1.setRecDatetime(now); battState2.setRecDatetime(now); //确定 设备1停止原因 int stopReason1; String stopReason1Str = stopReasonSb1.toString(); @@ -2699,11 +2707,13 @@ //回写设备状态和终止原因 deviceState1.setDevWorkstate(deviceStateType1); deviceState1.setDevLastCaptestStopType(stopReason1); deviceState1.setRecordDatetime(deviceStateTypeTime1); //deviceState1.setRecordDatetime(deviceStateTypeTime1); deviceState1.setRecordDatetime(nowStr); deviceState2.setDevWorkstate(deviceStateType2); deviceState2.setDevLastCaptestStopType(stopReason2); deviceState2.setRecordDatetime(deviceStateTypeTime2); //deviceState2.setRecordDatetime(deviceStateTypeTime2); deviceState2.setRecordDatetime(nowStr); //对应结果接收 deviceStateList.add(deviceState1); deviceStateList.add(deviceState2); @@ -2773,6 +2783,22 @@ battDataList.add(battRtdata); } //TODO 模拟核容使用,正式环境去掉 /*deviceState1.setDevWorkstate(2); deviceState2.setDevWorkstate(3);*/ //手动强制处理 核容(2)和停电放电(3) 时 电流为负数 if(deviceState1.getDevWorkstate() == 2 || deviceState1.getDevWorkstate() == 3){ Float groupCurr1 = battState1.getGroupCurr(); battState1.setGroupCurr(-Math.abs(groupCurr1)); } if(deviceState2.getDevWorkstate() == 2 || deviceState2.getDevWorkstate() == 3){ Float groupCurr2 = battState2.getGroupCurr(); battState2.setGroupCurr(-Math.abs(groupCurr2)); //TODO 测试使用,正式环境去掉 //battState2.setGroupCurr(-3.1f); } //回填 //设备 2组 map.put("deviceState",deviceStateList); src/main/resources/mapper/BattRtdataMapper.xml
@@ -180,6 +180,13 @@ (#{item.battGroupId},#{item.recDatetime},#{item.monNum},#{item.monVol},#{item.monTmp},#{item.monRes}) </foreach> </insert> <update id="updateBatch"> <foreach collection="list" item="item" separator=";"> update `db_ram_db`.tb_batt_rtdata set rec_datetime = #{item.recDatetime},mon_vol=#{item.monVol}, mon_tmp=#{item.monTmp},mon_res =#{item.monRes} where BattGroupId = #{item.battGroupId} and mon_num = #{item.monNum} </foreach> </update> <update id="updateByPrimaryKeySelective" parameterType="com.whyc.pojo.BattRtdata"> update tb_batt_rtdata <set> src/main/resources/mapper/BattRtstateMapper.xml
@@ -370,6 +370,12 @@ where BattGroupId = #{item.battGroupId} </foreach> </update> <insert id="insertBatch"> insert into db_ram_db.tb_batt_rtstate(BattGroupId,rec_datetime,online_vol,group_vol,group_curr) values <foreach collection="list" item="item" separator="," > (#{item.battGroupId},#{item.recDatetime},#{item.onlineVol},#{item.groupVol},#{item.groupCurr}) </foreach> </insert> <select id="getCurrentSate" resultType="com.whyc.pojo.BattRtstate"> select batt_state,rec_datetime from db_ram_db.tb_batt_rtstate where BattGroupId=#{battGroupId} limit 1 </select>