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.mapper.FgcdFiledownloadMapper;
|
import com.whyc.pojo.FgcdFiledownload;
|
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 FgcdFiledownloadService {
|
@Autowired(required = false)
|
private FgcdFiledownloadMapper mapper;
|
|
//发送命令
|
//机房命令操作设备时的cmd和ack校验 test_type -->默认启动测试的类型
|
public boolean sendCmd(int cmd,int param1,int param2,String downloadFlag,int devId)
|
{
|
int ack = cmd;
|
int stopTime=40;
|
switch(cmd) {
|
case CmdUtil.CMD_READBATT: ack =CmdUtil.CMD_READBATT_ACK ; break;
|
case CmdUtil.CMD_READFILE: ack =CmdUtil.CMD_READFILE_ACK ; break;
|
case CmdUtil.CMD_DOLADFILE: ack =CmdUtil.CMD_DOLADFILE_ACK ; break;
|
case CmdUtil.CMD_DOLADCANCLE: ack =CmdUtil.CMD_DOLADCANCLE_ACK ; break;
|
default:
|
return false;
|
}
|
UpdateWrapper updateWrapper=new UpdateWrapper();
|
updateWrapper.set("op_cmd",cmd);
|
if(cmd==CmdUtil.CMD_READBATT){
|
updateWrapper.set("readbattcount",param1);
|
}
|
if(cmd==CmdUtil.CMD_READFILE){
|
updateWrapper.set("file_index",param1);
|
updateWrapper.set("batt_index",param2);
|
}
|
if(cmd==CmdUtil.CMD_DOLADFILE){
|
String[] fileFlag=downloadFlag.split(",");
|
updateWrapper.set("batt_index",param1);
|
if(fileFlag!=null){
|
for (String flag:fileFlag) {
|
updateWrapper.set("download_flag"+(Integer.valueOf(flag)+1),1);
|
}
|
}
|
}
|
updateWrapper.eq("dev_id",devId);
|
int flag=mapper.update(null,updateWrapper);
|
boolean res_exe = false;
|
if(flag>0)
|
{
|
PageHelper.startPage(1,1);
|
QueryWrapper queryWrapper=new QueryWrapper();
|
queryWrapper.eq("dev_id",devId);
|
for(int n=0; n<stopTime; n++)
|
{
|
FgcdFiledownload fgcd=mapper.selectOne(queryWrapper);
|
if(fgcd!=null){
|
if (fgcd.getOpCmd() == ack) {
|
res_exe = true;
|
break;
|
}
|
try {
|
Thread.sleep(250);
|
} catch (InterruptedException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
} else {
|
break;
|
}
|
}
|
}
|
return res_exe;
|
}
|
//读取电池组列表
|
public Response readBattList(int devId,int battCount) {
|
boolean bl=sendCmd(CmdUtil.CMD_READBATT,battCount,0,"",devId);
|
if(bl){
|
QueryWrapper queryWrapper=new QueryWrapper();
|
queryWrapper.eq("dev_id",devId);
|
FgcdFiledownload fgcd=mapper.selectOne(queryWrapper);
|
return new Response().setII(1,bl,fgcd,"读取成功返回数据");
|
}else{
|
return new Response().set(1,bl,"读取失败");
|
}
|
}
|
//读取电池组指定文件列表
|
public Response readFileList(int devId, int fileIndex, int battIndex) {
|
boolean bl=sendCmd(CmdUtil.CMD_READFILE,fileIndex,battIndex,"",devId);
|
if(bl){
|
QueryWrapper queryWrapper=new QueryWrapper();
|
queryWrapper.eq("dev_id",devId);
|
FgcdFiledownload fgcd=mapper.selectOne(queryWrapper);
|
return new Response().setII(1,bl,fgcd,"读取成功返回数据");
|
}else{
|
return new Response().set(1,bl,"读取失败");
|
}
|
}
|
//下载指定电池组的文件列表
|
public Response doloadFileList(int devId, int battIndex, String downloadFlag) {
|
boolean bl=sendCmd(CmdUtil.CMD_READFILE,battIndex,0,downloadFlag,devId);
|
if(bl){
|
QueryWrapper queryWrapper=new QueryWrapper();
|
queryWrapper.eq("dev_id",devId);
|
FgcdFiledownload fgcd=mapper.selectOne(queryWrapper);
|
return new Response().setII(1,bl,fgcd,"下载成功返回数据");
|
}else{
|
return new Response().set(1,bl,"下载失败");
|
}
|
}
|
//filedownload的websocket实时推送文件下载情况
|
public Response getDownloadFileStatus(int devId) {
|
QueryWrapper queryWrapper=new QueryWrapper();
|
queryWrapper.eq("dev_id",devId);
|
queryWrapper.last("limit 1");
|
FgcdFiledownload fgcd=mapper.selectOne(queryWrapper);
|
return new Response().setII(1,fgcd!=null,fgcd,"下载成功返回数据");
|
}
|
|
//取消下载文件(当前要下载的都会取消下载)
|
public Response cancleFileList(int devId) {
|
boolean bl=sendCmd(CmdUtil.CMD_DOLADCANCLE,0,0,null,devId);
|
return new Response().set(1,bl);
|
}
|
}
|