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