From 729b43646ec760f7119deece56d8dcbea5977c49 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期三, 28 五月 2025 14:18:50 +0800
Subject: [PATCH] 实时页面设备控制

---
 src/main/java/com/whyc/service/BatttestdataInfService.java      |   11 ++
 src/main/java/com/whyc/webSocket/RealTimeSocket.java            |   11 ++
 src/main/java/com/whyc/dto/CmdDto/DevCmd.java                   |   21 ++++
 src/main/java/com/whyc/service/DeviceSetparamService.java       |  108 +++++++++++++++++++++
 src/main/java/com/whyc/mapper/DeviceSetparamMapper.java         |   10 ++
 src/main/java/com/whyc/pojo/db_ram_db/DeviceSetparam.java       |   17 +++
 src/main/resources/mapper/DeviceSetparamMapper.xml              |   31 ++++++
 src/main/java/com/whyc/controller/DeviceSetparamController.java |   43 ++++++++
 8 files changed, 250 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/whyc/controller/DeviceSetparamController.java b/src/main/java/com/whyc/controller/DeviceSetparamController.java
new file mode 100644
index 0000000..8e1dc4f
--- /dev/null
+++ b/src/main/java/com/whyc/controller/DeviceSetparamController.java
@@ -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);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/whyc/dto/CmdDto/DevCmd.java b/src/main/java/com/whyc/dto/CmdDto/DevCmd.java
new file mode 100644
index 0000000..9b5b706
--- /dev/null
+++ b/src/main/java/com/whyc/dto/CmdDto/DevCmd.java
@@ -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
+}
\ No newline at end of file
diff --git a/src/main/java/com/whyc/mapper/DeviceSetparamMapper.java b/src/main/java/com/whyc/mapper/DeviceSetparamMapper.java
new file mode 100644
index 0000000..f8308ff
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/DeviceSetparamMapper.java
@@ -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);
+}
\ No newline at end of file
diff --git a/src/main/java/com/whyc/pojo/db_ram_db/DeviceSetparam.java b/src/main/java/com/whyc/pojo/db_ram_db/DeviceSetparam.java
index a1fc1db..394471d 100644
--- a/src/main/java/com/whyc/pojo/db_ram_db/DeviceSetparam.java
+++ b/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;
+
+
 
 }
diff --git a/src/main/java/com/whyc/service/BatttestdataInfService.java b/src/main/java/com/whyc/service/BatttestdataInfService.java
index c0fb400..6ece9a4 100644
--- a/src/main/java/com/whyc/service/BatttestdataInfService.java
+++ b/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;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/DeviceSetparamService.java b/src/main/java/com/whyc/service/DeviceSetparamService.java
new file mode 100644
index 0000000..85b960c
--- /dev/null
+++ b/src/main/java/com/whyc/service/DeviceSetparamService.java
@@ -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鍜宎ck鏍¢獙  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?"杩滅▼鏍稿鎴愬姛!":"杩滅▼鏍稿澶辫触!");
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/whyc/webSocket/RealTimeSocket.java b/src/main/java/com/whyc/webSocket/RealTimeSocket.java
index e9995f6..161833f 100644
--- a/src/main/java/com/whyc/webSocket/RealTimeSocket.java
+++ b/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();
         }
diff --git a/src/main/resources/mapper/DeviceSetparamMapper.xml b/src/main/resources/mapper/DeviceSetparamMapper.xml
new file mode 100644
index 0000000..8f2ea1a
--- /dev/null
+++ b/src/main/resources/mapper/DeviceSetparamMapper.xml
@@ -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>
\ No newline at end of file

--
Gitblit v1.9.1