package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.github.pagehelper.PageHelper;
|
import com.whyc.mapper.AirconditionerParamMapper;
|
import com.whyc.pojo.AirconditionerParam;
|
import com.whyc.pojo.Response;
|
import com.whyc.util.CmdUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
@Service
|
public class AirconditionerParamService {
|
@Autowired(required = false)
|
private AirconditionerParamMapper mapper;
|
//发送命令
|
public boolean sendCmdToDev(int opCmd,int dev_id)
|
{
|
int m_cmd = opCmd;
|
int m_cmd_ack = opCmd;
|
switch(m_cmd) {
|
case CmdUtil.CMD_GetAirParam: m_cmd_ack = CmdUtil.CMD_GetAirParam_Ack; break;
|
case CmdUtil.CMD_SetAirParam: m_cmd_ack = CmdUtil.CMD_SetAirParam_Ack; break;
|
case CmdUtil.CMD_StartAirWork: m_cmd_ack = CmdUtil.CMD_StartAirWork_Ack; break;
|
case CmdUtil.CMD_StopAirWork: m_cmd_ack = CmdUtil.CMD_StopAirWork_Ack; break;
|
case CmdUtil.CMD_StartAirOnDuty: m_cmd_ack = CmdUtil.CMD_StartAirOnDuty_Ack; break;
|
case CmdUtil.CMD_StopAirOnDuty: m_cmd_ack = CmdUtil.CMD_StopAirOnDuty_Ack; break;
|
case CmdUtil.CMD_StartAirDisinfect: m_cmd_ack = CmdUtil.CMD_StartAirDisinfect_Ack; break;
|
case CmdUtil.CMD_StopAirDisinfect: m_cmd_ack = CmdUtil.CMD_StopAirDisinfect_Ack; break;
|
case CmdUtil.CMD_StartAirExhaustFan: m_cmd_ack = CmdUtil.CMD_StartAirExhaustFan_Ack; break;
|
case CmdUtil.CMD_StopAirExhaustFan: m_cmd_ack = CmdUtil.CMD_StopAirExhaustFan_Ack; break;
|
default:
|
return false;
|
}
|
//更新op_cmd
|
UpdateWrapper updateWrapper=new UpdateWrapper();
|
updateWrapper.set("op_cmd",m_cmd);
|
updateWrapper.eq("dev_id",dev_id);
|
int flag=mapper.update(null,updateWrapper);
|
boolean res_exe = false;
|
if(flag>0)
|
{
|
QueryWrapper queryWrapper=new QueryWrapper();
|
queryWrapper.eq("dev_id",dev_id);
|
queryWrapper.last("limit 1");
|
for(int n=0; n<40; n++)
|
{
|
|
AirconditionerParam airParam=mapper.selectOne(queryWrapper);
|
if(airParam!=null){
|
if(airParam.getOpCmd()==m_cmd_ack){
|
res_exe = true;
|
break;
|
}
|
try {
|
Thread.sleep(250);
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
}else {
|
break;
|
}
|
}
|
}
|
return res_exe;
|
}
|
|
//读取参数-空调
|
public Response searchAir(int devId) {
|
boolean res = sendCmdToDev(CmdUtil.CMD_GetAirParam, devId);
|
AirconditionerParam airParam = null;
|
if(res){
|
QueryWrapper<AirconditionerParam> query = Wrappers.query();
|
query.eq("dev_id",devId).last(" limit 1");
|
airParam = mapper.selectOne(query);
|
}
|
return new Response().setII(1, res, airParam, res ? "读取参数成功" : "读取参数失败,请检查网络");
|
}
|
//设置参数-空调
|
public Response updateAir(AirconditionerParam param) {
|
int devId = param.getDevId();
|
UpdateWrapper<AirconditionerParam> update = Wrappers.update();
|
update.set("st_temp",param.getStTemp())
|
.set("st_humid",param.getStHumid())
|
.eq("dev_id",devId);
|
mapper.update(null,update);
|
boolean res = sendCmdToDev(CmdUtil.CMD_SetAirParam, param.getDevId());
|
return new Response().set(1, res, res ? "修改参数成功" : "设置参数失败,请检查网络");
|
}
|
//设置参数-空调-控制
|
public Response updateAirStartTest(int devId, int opCmd) {
|
boolean res = sendCmdToDev(opCmd, devId);
|
return new Response().set(1, res, res ? "控制成功" : "控制成功失败,请检查网络");
|
}
|
|
}
|