package com.whyc.service;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
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.whyc.dto.Response;
|
import com.whyc.mapper.AlarmVoiceSetMapper;
|
import com.whyc.pojo.AlarmVoiceSet;
|
import com.whyc.pojo.BattalarmData;
|
import com.whyc.util.ActionUtil;
|
import com.whyc.util.CommonUtil;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.io.File;
|
import java.util.List;
|
|
@Service
|
public class AlarmVoiceSetService {
|
|
@Resource
|
private AlarmVoiceSetMapper mapper;
|
|
public Response InsertNextTimeInterval(AlarmVoiceSet set) {
|
int userId = ActionUtil.getUser().getUId().intValue();
|
long currentTimeMillis = System.currentTimeMillis();
|
Integer nextTimeInterval = set.getNextTimeInterval();
|
long nextTimestamp = currentTimeMillis+nextTimeInterval*60*1000;
|
set.setNextTimestamp(nextTimestamp);
|
set.setUserId(userId);
|
set.setStatus(1);
|
Integer battGroupId = set.getBattGroupId();
|
Long deviceId = set.getDeviceId();
|
Long powerDeviceId = set.getPowerDeviceId();
|
Integer alarmType = set.getAlarmType();
|
//查询所有语音文件中存在的,更新语音文件下次时间戳
|
//获取绝对文件夹路径
|
String readSuffixPath = "wav" + File.separator + "alarm" + File.separator + userId + File.separator;
|
String readDirPath = CommonUtil.getRootFile() + readSuffixPath;
|
File readDir = new File(readDirPath);
|
String[] arr = readDir.list();
|
for (String fileName : arr) {
|
String[] fileNameSplit = fileName.split("_");
|
long fileSpecialId = Long.parseLong(fileNameSplit[3]);
|
long fileAlarmType = Long.parseLong(fileNameSplit[4]);
|
if(battGroupId!=null){
|
if(fileSpecialId==battGroupId && fileAlarmType == alarmType){ //有匹配的,文件名更新下次时间戳
|
String readableVoiceTimeWithWavNew = nextTimestamp+".wav";
|
//文件下次播放时间确定新的文件名
|
String readableVoiceTimeWithWav = fileNameSplit[5];
|
String renameToFileFullName = fileName.replace(readableVoiceTimeWithWav,readableVoiceTimeWithWavNew);
|
String renameToFilePath = CommonUtil.getRootFile() + readSuffixPath + renameToFileFullName;
|
//播报完毕后,将播报时间更新到文件名上
|
String fromFilePath = CommonUtil.getRootFile() + readSuffixPath + fileName;
|
File fromFile = new File(fromFilePath);
|
File renameToFile = new File(renameToFilePath);
|
fromFile.renameTo(renameToFile);
|
}
|
}else if(deviceId!=null){
|
if(fileSpecialId==deviceId && fileAlarmType == alarmType){ //有匹配的,文件名更新下次时间戳
|
String readableVoiceTimeWithWavNew = nextTimestamp+".wav";
|
//文件下次播放时间确定新的文件名
|
String readableVoiceTimeWithWav = fileNameSplit[5];
|
String renameToFileFullName = fileName.replace(readableVoiceTimeWithWav,readableVoiceTimeWithWavNew);
|
String renameToFilePath = CommonUtil.getRootFile() + readSuffixPath + renameToFileFullName;
|
//播报完毕后,将播报时间更新到文件名上
|
String fromFilePath = CommonUtil.getRootFile() + readSuffixPath + fileName;
|
File fromFile = new File(fromFilePath);
|
File renameToFile = new File(renameToFilePath);
|
fromFile.renameTo(renameToFile);
|
}
|
}else{
|
if(fileSpecialId==powerDeviceId && fileAlarmType == alarmType){ //有匹配的,文件名更新下次时间戳
|
String readableVoiceTimeWithWavNew = nextTimestamp+".wav";
|
//文件下次播放时间确定新的文件名
|
String readableVoiceTimeWithWav = fileNameSplit[5];
|
String renameToFileFullName = fileName.replace(readableVoiceTimeWithWav,readableVoiceTimeWithWavNew);
|
String renameToFilePath = CommonUtil.getRootFile() + readSuffixPath + renameToFileFullName;
|
//播报完毕后,将播报时间更新到文件名上
|
String fromFilePath = CommonUtil.getRootFile() + readSuffixPath + fileName;
|
File fromFile = new File(fromFilePath);
|
File renameToFile = new File(renameToFilePath);
|
fromFile.renameTo(renameToFile);
|
}
|
}
|
|
}
|
|
//判断新增还是修改
|
//查询表中是否存在 设备id+告警类型一致的,存在则修改;不存在则新增
|
QueryWrapper<AlarmVoiceSet> query = Wrappers.query();
|
query.select("id").eq("alarm_type",alarmType).eq("user_id",userId);
|
if(battGroupId!=null){
|
query.eq("batt_group_id",battGroupId);
|
}else if(deviceId!=null){
|
query.eq("device_id",deviceId);
|
}else{
|
query.eq("power_device_id",powerDeviceId);
|
}
|
query.last(" limit 1");
|
AlarmVoiceSet alarmVoiceSetDb = mapper.selectOne(query);
|
if(alarmVoiceSetDb!=null){ //修改
|
UpdateWrapper<AlarmVoiceSet> update = Wrappers.update();
|
update.set("next_time_interval", nextTimeInterval).set("next_timestamp",nextTimestamp).eq("id",alarmVoiceSetDb.getId());
|
mapper.update(null,update);
|
}else{ //新增
|
mapper.insert(set);
|
}
|
return new Response().set(1,true,"设置完成");
|
|
}
|
|
public AlarmVoiceSet getNextTimeInterval(Long userId, int type, Long specialId, int alarmType) {
|
QueryWrapper<AlarmVoiceSet> query = Wrappers.query();
|
query.eq("user_id",userId).eq("alarm_type",alarmType);
|
if(type == 1){
|
query.eq("batt_group_id",specialId);
|
}else if(type ==2){
|
query.eq("device_id",specialId);
|
}else{
|
query.eq("power_device_id",specialId);
|
}
|
query.last(" limit 1");
|
return mapper.selectOne(query);
|
}
|
|
public void delete(Integer id) {
|
UpdateWrapper<AlarmVoiceSet> update = Wrappers.update();
|
update.set("status",0).eq("id",id);
|
mapper.update(null,update);
|
}
|
|
public List<AlarmVoiceSet> getAllByUserId(Long userId) {
|
QueryWrapper<AlarmVoiceSet> query = Wrappers.query();
|
query.eq("user_id",userId);
|
return mapper.selectList(query);
|
}
|
}
|