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?"停止内阻测试成功!":"停止内阻测试失败!"); } }