whycxzp
2024-02-29 777b739a5f9eb87dc094c24ffd26dba84b3dbc66
年前未提交的黑河更新,提交
10个文件已修改
170 ■■■■ 已修改文件
src/main/java/com/whyc/listener/TaskListener.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattRtdataMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BattRtstateMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRtdataService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BattRtstateService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/HeiHeStationService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/task/HeiHeDataTask.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/HeiHeUtil.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattRtdataMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BattRtstateMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | 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>