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;
|
case DevCmd.CMD_StartResDischarge:
|
cmd_ack = DevCmd.CMD_StopResDischarge;
|
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<1; 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?"远程核容成功!":"远程核容失败!");
|
}
|
//远程停止核容测试
|
public Response stopDis(int devId, int battGroupNum) {
|
boolean bl = sendCmdToDev(DevCmd.CMD_Stop,DevCmd.CMD_StopDischarge, devId, battGroupNum);
|
return new Response().set(1,bl,bl==true?"远程停止核容成功!":"远程停止核容失败!");
|
}
|
//内阻测试
|
public Response startRes(int devId, int battGroupNum) {
|
boolean bl = sendCmdToDev(DevCmd.CMD_Start,DevCmd.CMD_StartResDischarge, devId, battGroupNum);
|
return new Response().set(1,bl,bl==true?"启动内阻测试成功!":"启动内阻测试失败!");
|
}
|
//停止内阻测试
|
public Response stopRes(int devId, int battGroupNum) {
|
boolean bl = sendCmdToDev(DevCmd.CMD_Stop,DevCmd.CMD_StopResDischarge, devId, battGroupNum);
|
return new Response().set(1,bl,bl==true?"停止内阻测试成功!":"停止内阻测试失败!");
|
}
|
|
}
|