package com.tievd.jyz.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.tievd.cube.commons.base.Result;
|
import com.tievd.jyz.cache.ResourceCache;
|
import com.tievd.jyz.constants.SystemConstant;
|
import com.tievd.jyz.dto.IssueDTO;
|
import com.tievd.jyz.entity.Device;
|
import com.tievd.jyz.entity.Upgrade;
|
import com.tievd.jyz.entity.UpgradeRecord;
|
import com.tievd.jyz.mapper.DeviceMapper;
|
import com.tievd.jyz.mapper.UpgradeMapper;
|
import com.tievd.jyz.mapper.UpgradeRecordMapper;
|
import com.tievd.jyz.mqtt.command.MqttCommandReceiver;
|
import com.tievd.jyz.mqtt.command.UpgradeCommand;
|
import com.tievd.jyz.service.IUpgradeService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Service;
|
|
import java.io.Serializable;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* Upgrade
|
* @author cube
|
* @since 2023-02-27
|
* @version V2.0.0
|
*/
|
@Service
|
public class UpgradeServiceImpl extends ServiceImpl<UpgradeMapper, Upgrade> implements IUpgradeService {
|
|
@Autowired
|
private DeviceMapper deviceMapper;
|
|
@Autowired
|
private UpgradeRecordMapper upgradeRecordMapper;
|
|
@Autowired
|
private MqttCommandReceiver mqttCommandReceiver;
|
@Value("${init.sendCommandTopic:/ty/aibox/command/}")
|
private String sendCommandTopic;
|
|
@Override
|
public Result issue(IssueDTO dto) {
|
Date now = new Date();
|
Upgrade upgrade = baseMapper.selectById(dto.getUpgradeId());
|
if (upgrade == null){
|
return Result.error("该版本不存在");
|
}
|
List<String> deviceIds = dto.getDeviceId();
|
LambdaQueryWrapper<Device> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.in(Device::getId, deviceIds);
|
List<Device> devices = deviceMapper.selectList(queryWrapper);
|
for (Device device: devices) {
|
//下发升级指令只设备
|
UpgradeCommand upgradeCommand = new UpgradeCommand(mqttCommandReceiver,upgrade.getVersion(),upgrade.getPath(),sendCommandTopic,device.getSn());
|
upgradeCommand.init();
|
upgradeCommand.execute();
|
UpgradeRecord record = new UpgradeRecord();
|
record.setUpgradeId(upgrade.getId());
|
record.setCreateTime(new Date());
|
record.setDeviceSn(device.getSn());
|
record.setStatus(SystemConstant.ISSUE_UNDERWAY);
|
record.setCreateTime(now);
|
record.setIssueTime(now);
|
upgradeRecordMapper.insert(record);
|
ResourceCache.addUpgradeRecord(record);
|
}
|
return Result.ok();
|
}
|
|
@Override
|
public void remove(Serializable id) {
|
baseMapper.deleteById(id);
|
QueryWrapper<UpgradeRecord> wrapper = new QueryWrapper<>();
|
wrapper.eq("upgrade_id", id);
|
upgradeRecordMapper.delete(wrapper);
|
}
|
}
|