whyclxw
2025-05-28 729b43646ec760f7119deece56d8dcbea5977c49
实时页面设备控制
3个文件已修改
5个文件已添加
252 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/DeviceSetparamController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/CmdDto/DevCmd.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/DeviceSetparamMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/db_ram_db/DeviceSetparam.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatttestdataInfService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/DeviceSetparamService.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/webSocket/RealTimeSocket.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DeviceSetparamMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/DeviceSetparamController.java
New file
@@ -0,0 +1,43 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.pojo.db_ram_db.DeviceSetparam;
import com.whyc.pojo.db_user.User;
import com.whyc.service.DeviceSetparamService;
import com.whyc.util.ActionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@Api(tags = "设备远程控制管理")
@RequestMapping("devSetparam")
public class DeviceSetparamController {
    @Autowired
    private DeviceSetparamService service;
    @ApiOperation("设置放电参数")
    @PostMapping("updateParam")
    public Response updateParam(@RequestBody DeviceSetparam param) {
        return service.updateParam(param);
    }
    @ApiOperation("读取放电参数")
    @GetMapping("getParam")
    public Response getParam(@RequestParam int devId, @RequestParam int battGroupNum) {
        return service.getParam(devId, battGroupNum);
    }
    @ApiOperation("远程重启")
    @GetMapping("restart")
    public Response restart(@RequestParam int devId, @RequestParam int battGroupNum) {
        return service.restart(devId, battGroupNum);
    }
    @ApiOperation("远程核容")
    @GetMapping("startDis")
    public Response startDis(@RequestParam int devId, @RequestParam int battGroupNum) {
        return service.startDis(devId, battGroupNum);
    }
}
src/main/java/com/whyc/dto/CmdDto/DevCmd.java
New file
@@ -0,0 +1,21 @@
package com.whyc.dto.CmdDto;
public class DevCmd {
    final public static  int CMD_Start=81;
    final public static  int CMD_Stop=83;
    final public static  int CMD_StartAck=82;
    final public static  int CMD_StopAck=84;
    final public static  int CMD_SetDischargeParm=40;  //设置参数
    final public static  int CMD_GetDischargeParm=41;  //读取参数
    final public static  int CMD_SetDischargeParmAck=39;
    final public static  int CMD_GetDischargeParmAck=48;
    public static final int CMD_StartDischarge = 0x25;  //启动放电37
    public static final int CMD_StartDischargeAck = 0x26;  //启动放电成功38
    public static final int CMD_StopDischarge = 0x23;  //停止放电35
    public static final int CMD_StopDischargeAck = 0x24;  //停止放电成功36
    public static final int     CMD_ResetSystemAck                =     0x0F;//15
    public static final int     CMD_ResetSystem                    =     0x10;//重启16
}
src/main/java/com/whyc/mapper/DeviceSetparamMapper.java
New file
@@ -0,0 +1,10 @@
package com.whyc.mapper;
import com.whyc.pojo.db_ram_db.DeviceSetparam;
public interface DeviceSetparamMapper extends CustomMapper<DeviceSetparam>{
    //设置放电参数
    Boolean updateParam(DeviceSetparam param);
    //读取放电参数
    DeviceSetparam getParam(int devId, int battGroupNum);
}
src/main/java/com/whyc/pojo/db_ram_db/DeviceSetparam.java
@@ -1,6 +1,7 @@
package com.whyc.pojo.db_ram_db;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
@@ -32,7 +33,7 @@
    private Long num;
    @ApiModelProperty(value = "设备ID")
    private Long devId;
    private Integer devId;
    @ApiModelProperty(value = "远程命令")
    private Integer opCmd;
@@ -85,5 +86,19 @@
    @ApiModelProperty(value = "标称容量")
    private Integer moncapstd;
    @TableField(exist = false)
    private String battgroupName;
    @TableField(exist = false)
    private String stationName;
    @TableField(exist = false)
    private String provice;
    @TableField(exist = false)
    private String city;
    @TableField(exist = false)
    private String country;
    @TableField(exist = false)
    private String fullName;
}
src/main/java/com/whyc/service/BatttestdataInfService.java
@@ -44,4 +44,15 @@
        PageInfo pageInfo=new PageInfo(list);
        return new Response().setII(1,list.size()>0,pageInfo,"蓄电池核容信息统计");
    }
    //获取上一次标准核容信息(标准核容的界定为单测核容时间达 2小时及以上的核容测试)
    public BatttestdataInf getLastStandardTestData(Integer battgroupId) {
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("battgroup_id", battgroupId);
        wrapper.eq("data_available", 1);
        wrapper.eq("test_type", 3);
        wrapper.eq("test_starttype", 3);
        wrapper.last("  and test_timelong >= 7200 ORDER BY test_starttime DESC ");
        BatttestdataInf tinf = mapper.selectOne(wrapper);
        return tinf;
    }
}
src/main/java/com/whyc/service/DeviceSetparamService.java
New file
@@ -0,0 +1,108 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageHelper;
import com.whyc.dto.CmdDto.DevCmd;
import com.whyc.dto.Response;
import com.whyc.mapper.DeviceSetparamMapper;
import com.whyc.pojo.db_ram_db.DeviceSetparam;
import com.whyc.util.ActionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DeviceSetparamService {
    @Autowired(required = false)
    private DeviceSetparamMapper mapper;
    //机房命令操作设备时的cmd和ack校验  test_type  -->默认启动测试的类型
    public boolean sendCmdToDev(int cmd, int test_type, int dev_id, int battGroupNum) {
        int cmd_ack = 0;
        switch (cmd) {
            case DevCmd.CMD_Start:
                cmd_ack = DevCmd.CMD_StartAck;
                break;
            case DevCmd.CMD_Stop:
                cmd_ack = DevCmd.CMD_StopAck;
                break;
            case DevCmd.CMD_SetDischargeParm:
                cmd_ack = DevCmd.CMD_SetDischargeParmAck;
                break;
            case DevCmd.CMD_GetDischargeParm:
                cmd_ack = DevCmd.CMD_GetDischargeParmAck;
                break;
            case DevCmd.CMD_StartDischarge:
                cmd_ack = DevCmd.CMD_StartDischargeAck;
                break;
            case DevCmd.CMD_StopDischarge:
                cmd_ack = DevCmd.CMD_StopDischargeAck;
                break;
            case DevCmd.CMD_ResetSystem:
                cmd_ack = DevCmd.CMD_ResetSystemAck;
            default:
                return false;
        }
        UpdateWrapper updateWrapper=new UpdateWrapper();
        updateWrapper.set("op_cmd",cmd);
        updateWrapper.set("battgroupnum",battGroupNum);
        if(test_type > 0 && (cmd == DevCmd.CMD_Start||cmd == DevCmd.CMD_Stop)){                    //启动测试时未点击设定参数按钮,会出现启动内阻测试bug修复
            updateWrapper.set("test_cmd",test_type);
        }
        updateWrapper.eq("dev_id",dev_id);
        int flag=mapper.update((DeviceSetparam) ActionUtil.objeNull,updateWrapper);
        boolean res_exe = false;
        if(flag>0)
        {
            PageHelper.startPage(1,1);
            QueryWrapper queryWrapper=new QueryWrapper();
            queryWrapper.eq("dev_id",dev_id);
            for(int n=0; n<40; n++)
            {
                DeviceSetparam DeviceSetparam=mapper.selectOne(queryWrapper);
                if(DeviceSetparam!=null){
                    if(DeviceSetparam.getOpCmd()==cmd_ack){
                        res_exe = true;
                        break;
                    }
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }else {
                    break;
                }
            }
        }
        return res_exe;
    }
    //设置放电参数
    public Response updateParam(DeviceSetparam param) {
        Boolean b=mapper.updateParam(param);
        boolean bl=false;
        if(b){
            bl=sendCmdToDev(DevCmd.CMD_SetDischargeParm,0,param.getDevId(),param.getBattgroupnum());
        }
        return new Response().set(1,bl,bl==true?"设置参数成功!":"设置参数失败,请检查网络!");
    }
    //读取参数
    public Response getParam(int devId, int battGroupNum) {
        PageHelper.startPage(1, 1);
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("dev_id", devId);
        boolean bl = sendCmdToDev(DevCmd.CMD_GetDischargeParm,0, devId, battGroupNum);
        DeviceSetparam param = mapper.getParam(devId,battGroupNum);
        return new Response().setII(1, bl, param, bl == true ? "读取参数成功!" : "读取放电参数,请检查网络!");
    }
    //远程重启
    public Response restart(int devId, int battGroupNum) {
        boolean bl = sendCmdToDev(DevCmd.CMD_ResetSystem,0, devId, battGroupNum);
        return new Response().set(1,bl,bl==true?"设备远程重启成功!":"设备远程重启失败!");
    }
    //远程核容
    public Response startDis(int devId, int battGroupNum) {
        boolean bl = sendCmdToDev(DevCmd.CMD_Start,DevCmd.CMD_StartDischarge, devId, battGroupNum);
        return new Response().set(1,bl,bl==true?"远程核容成功!":"远程核容失败!");
    }
}
src/main/java/com/whyc/webSocket/RealTimeSocket.java
@@ -5,6 +5,7 @@
import com.whyc.dto.RealTimeDto;
import com.whyc.dto.Response;
import com.whyc.factory.BattCapFactory;
import com.whyc.pojo.db_batt_testdata.BatttestdataInf;
import com.whyc.pojo.db_ram_db.BattRtstate;
import com.whyc.pojo.db_ram_db.DeviceState;
import com.whyc.pojo.db_ram_db.PwrdevAcdcdata;
@@ -298,7 +299,15 @@
    //获取系统概述界面信息
    private Response getSystemPage(RealTimeDto realDto) {
        try {
            //实时获取电池组信息
            BattRtstate battRtstate = battRtstateService.getBattRealInfo(realDto.getBattgroupId());
            //实时获取设备信息
            DeviceState deviceState = deviceStateService.getDevRealInfo(realDto.getDevId());
            //获取上一次标准核容信息
            BatttestdataInf tinfData= batttestdataInfService.getLastStandardTestData(realDto.getBattgroupId());
            //获取近半小时电源数据
            //获取近半小时整流器数据
            //获取近半小时核容设备数据
        }catch (Exception e) {
            e.printStackTrace();
        }
src/main/resources/mapper/DeviceSetparamMapper.xml
New file
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.whyc.mapper.DeviceSetparamMapper">
    <update id="updateParam">
        update db_ram_db.tb_device_setparam
        set
            hourrate=#{hourrate},
            discurr=#{discurr},
            discap=#{discap},
            distime=#{distime},
            groupvol_low=#{groupvolLow},
            monomervol_low=#{monomervolow},
            monomerlowcount=#{monomerlowcount},
            onlinevollowaction=#{onlinevollowaction},
            dcvolhighlimit=#{dcvolhighlimit},
            chargecurrset=#{chargecurrset},
            monomertmp_high=#{monomertmpHigh},
            monvolstd=#{monvolstd},
            diswaittime=#{diswaittime},
            moncapstd=#{moncapstd}
        where dev_id = #{devId}
    </update>
    <select id="getParam" resultType="com.whyc.pojo.db_ram_db.DeviceSetparam">
        select tb_device_setparam.*,  tb_batt_inf.battgroup_name, tb_batt_inf.dev_name,tb_station_inf.station_name, tb_station_inf.provice, tb_station_inf.city, tb_station_inf.country, tb_station_inf.full_name
        from db_ram_db.tb_device_setparam,  db_station.tb_batt_inf, db_station.tb_station_inf
        where tb_device_setparam.dev_id = tb_batt_inf.dev_id
        and tb_batt_inf.station_id = tb_station_inf.station_id
        and dev_id = #{devId} and battgroup_num = #{battGroupNum}
    </select>
</mapper>