喷淋修改
This commit is contained in:
parent
2902ea6a45
commit
00a832dc4f
@ -175,4 +175,17 @@ public class EnvironmentDevController {
|
|||||||
environmentDevService.updateEnvironmentDevSprayStatus(map);
|
environmentDevService.updateEnvironmentDevSprayStatus(map);
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation(value = "开关喷淋", notes = "开关喷淋", httpMethod = "POST")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "deviceId", value = "设备Id", paramType = "body", required = true, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "sprayStatus", value = "喷淋状态(1投运2未投运)", paramType = "body", required = true, dataType = "String"),
|
||||||
|
@ApiImplicitParam(name = "durationMin", value = "持续时间(分钟)", paramType = "body", required = true, dataType = "String"),
|
||||||
|
})
|
||||||
|
@PostMapping(value = "/optSpray")
|
||||||
|
public Result optSpray(@RequestBody Map<String, Object> map) {
|
||||||
|
environmentDevService.optSpray(map);
|
||||||
|
return Result.ok();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,4 +37,7 @@ public interface IEnvironmentDevService extends IService<EnvironmentDev> {
|
|||||||
EnvironmentDevAlaramCountListVo selectEnvironmentDevAlaramCountList(Map<String, Object> map);
|
EnvironmentDevAlaramCountListVo selectEnvironmentDevAlaramCountList(Map<String, Object> map);
|
||||||
|
|
||||||
void updateEnvironmentDevSprayStatus(Map<String, Object> map);
|
void updateEnvironmentDevSprayStatus(Map<String, Object> map);
|
||||||
|
|
||||||
|
void optSpray(Map<String, Object> map);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,8 +1,14 @@
|
|||||||
package com.zhgd.xmgl.modules.environment.service.impl;
|
package com.zhgd.xmgl.modules.environment.service.impl;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||||
import com.zhgd.xmgl.async.AsyncEnvironment;
|
import com.zhgd.xmgl.async.AsyncEnvironment;
|
||||||
@ -15,9 +21,15 @@ import com.zhgd.xmgl.modules.environment.entity.vo.EnvironmentAlarmCountTotalVo;
|
|||||||
import com.zhgd.xmgl.modules.environment.entity.vo.EnvironmentDevAlaramCountListVo;
|
import com.zhgd.xmgl.modules.environment.entity.vo.EnvironmentDevAlaramCountListVo;
|
||||||
import com.zhgd.xmgl.modules.environment.mapper.*;
|
import com.zhgd.xmgl.modules.environment.mapper.*;
|
||||||
import com.zhgd.xmgl.modules.environment.service.IEnvironmentDevService;
|
import com.zhgd.xmgl.modules.environment.service.IEnvironmentDevService;
|
||||||
|
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||||
|
import com.zhgd.xmgl.modules.project.service.IProjectService;
|
||||||
|
import com.zhgd.xmgl.modules.sprayrt.entity.SprayRtData;
|
||||||
|
import com.zhgd.xmgl.modules.sprayrt.service.ISprayRtDataService;
|
||||||
import com.zhgd.xmgl.util.MessageUtil;
|
import com.zhgd.xmgl.util.MessageUtil;
|
||||||
|
import com.zhgd.xmgl.util.RenZhiUtil;
|
||||||
import org.apache.commons.collections.MapUtils;
|
import org.apache.commons.collections.MapUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
@ -50,6 +62,15 @@ public class EnvironmentDevServiceImpl extends ServiceImpl<EnvironmentDevMapper,
|
|||||||
private BigDeviceVideoMapper bigDeviceVideoMapper;
|
private BigDeviceVideoMapper bigDeviceVideoMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AsyncEnvironment asyncEnvironment;
|
private AsyncEnvironment asyncEnvironment;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private IProjectService projectService;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private ISprayRtDataService sprayRtDataService;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private IEnvironmentDevService environmentDevService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveEnvironmentDev(EnvironmentDev environmentDev) {
|
public void saveEnvironmentDev(EnvironmentDev environmentDev) {
|
||||||
@ -248,4 +269,44 @@ public class EnvironmentDevServiceImpl extends ServiceImpl<EnvironmentDevMapper,
|
|||||||
environmentDev.setSprayStatus(sprayStatus);
|
environmentDev.setSprayStatus(sprayStatus);
|
||||||
environmentDevMapper.updateById(environmentDev);
|
environmentDevMapper.updateById(environmentDev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void optSpray(Map<String, Object> map) {
|
||||||
|
String deviceId = MapUtils.getString(map, "deviceId");
|
||||||
|
Integer sprayStatus = MapUtils.getInteger(map, "sprayStatus");
|
||||||
|
Integer durationMin = MapUtils.getInteger(map, "durationMin");
|
||||||
|
EnvironmentDev environmentDev = environmentDevMapper.selectOne(new LambdaQueryWrapper<EnvironmentDev>()
|
||||||
|
.eq(EnvironmentDev::getDeviceId, deviceId));
|
||||||
|
if (environmentDev == null) {
|
||||||
|
throw new OpenAlertException("设备编号不正确");
|
||||||
|
}
|
||||||
|
Project project = projectService.getOne(new LambdaQueryWrapper<Project>()
|
||||||
|
.eq(Project::getProjectSn, environmentDev.getProjectSn()));
|
||||||
|
environmentDevService.update(null, new LambdaUpdateWrapper<EnvironmentDev>()
|
||||||
|
.set(EnvironmentDev::getSprayStatus, sprayStatus)
|
||||||
|
.eq(EnvironmentDev::getId, environmentDev.getId())
|
||||||
|
);
|
||||||
|
if (Objects.equals(sprayStatus, 1)) {
|
||||||
|
//打开
|
||||||
|
SprayRtData data = new SprayRtData();
|
||||||
|
data.setDevSn(deviceId);
|
||||||
|
data.setDevName(environmentDev.getDeviceName());
|
||||||
|
Date date = new Date();
|
||||||
|
data.setBeginTime(date);
|
||||||
|
data.setEndTime(DateUtil.offsetMinute(date, durationMin));
|
||||||
|
data.setSprayStatus(1);
|
||||||
|
data.setDevType(1);
|
||||||
|
data.setProjectSn(environmentDev.getProjectSn());
|
||||||
|
sprayRtDataService.save(data);
|
||||||
|
} else {
|
||||||
|
sprayRtDataService.update(null, new LambdaUpdateWrapper<SprayRtData>()
|
||||||
|
.set(SprayRtData::getSprayStatus, 2)
|
||||||
|
.eq(SprayRtData::getSprayStatus, 1)
|
||||||
|
.eq(SprayRtData::getDevType, 1)
|
||||||
|
.eq(SprayRtData::getDevSn, deviceId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
RenZhiUtil.httpOptSpray(deviceId, sprayStatus, project.getJnrzckAccount(), project.getJnrzckPw());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,6 +59,16 @@ public class SprayRtData implements Serializable {
|
|||||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
@ApiModelProperty(value = "结束时间")
|
@ApiModelProperty(value = "结束时间")
|
||||||
private java.util.Date endTime;
|
private java.util.Date endTime;
|
||||||
|
/**
|
||||||
|
* 喷淋状态(1投运2未投运)
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "喷淋状态(1投运2未投运)")
|
||||||
|
private java.lang.Integer sprayStatus;
|
||||||
|
/**
|
||||||
|
* 设备类型:1仁智测控
|
||||||
|
*/
|
||||||
|
@ApiModelProperty(value = "设备类型:1仁智测控")
|
||||||
|
private java.lang.Integer devType;
|
||||||
/**
|
/**
|
||||||
* 项目sn
|
* 项目sn
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package com.zhgd.xmgl.task;
|
package com.zhgd.xmgl.task;
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
@ -21,8 +23,11 @@ import com.zhgd.xmgl.modules.environment.service.IDustNoiseDataService;
|
|||||||
import com.zhgd.xmgl.modules.environment.service.IEnvironmentDevService;
|
import com.zhgd.xmgl.modules.environment.service.IEnvironmentDevService;
|
||||||
import com.zhgd.xmgl.modules.project.entity.Project;
|
import com.zhgd.xmgl.modules.project.entity.Project;
|
||||||
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
import com.zhgd.xmgl.modules.project.mapper.ProjectMapper;
|
||||||
|
import com.zhgd.xmgl.modules.project.service.IProjectService;
|
||||||
|
import com.zhgd.xmgl.modules.sprayrt.entity.SprayRtData;
|
||||||
import com.zhgd.xmgl.modules.sprayrt.entity.SprayRtDev;
|
import com.zhgd.xmgl.modules.sprayrt.entity.SprayRtDev;
|
||||||
import com.zhgd.xmgl.modules.sprayrt.mapper.SprayRtDevMapper;
|
import com.zhgd.xmgl.modules.sprayrt.mapper.SprayRtDevMapper;
|
||||||
|
import com.zhgd.xmgl.modules.sprayrt.service.ISprayRtDataService;
|
||||||
import com.zhgd.xmgl.modules.sprayrt.service.ISprayRtDevService;
|
import com.zhgd.xmgl.modules.sprayrt.service.ISprayRtDevService;
|
||||||
import com.zhgd.xmgl.modules.sprayrt.service.impl.SprayRtDevServiceImpl;
|
import com.zhgd.xmgl.modules.sprayrt.service.impl.SprayRtDevServiceImpl;
|
||||||
import com.zhgd.xmgl.task.dto.EnvironmentDustDataDto;
|
import com.zhgd.xmgl.task.dto.EnvironmentDustDataDto;
|
||||||
@ -44,6 +49,7 @@ import javax.annotation.Resource;
|
|||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,6 +62,9 @@ import java.util.stream.Collectors;
|
|||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/xmgl/task")
|
@RequestMapping("/xmgl/task")
|
||||||
public class EnvironmentDevTask {
|
public class EnvironmentDevTask {
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
IProjectService projectService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private EnvironmentDevMapper environmentDevMapper;
|
private EnvironmentDevMapper environmentDevMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -70,7 +79,6 @@ public class EnvironmentDevTask {
|
|||||||
private boolean isGetEnvironmentData;
|
private boolean isGetEnvironmentData;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ProjectMapper projectMapper;
|
private ProjectMapper projectMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private XiwonUtil xiwonUtil;
|
private XiwonUtil xiwonUtil;
|
||||||
@Lazy
|
@Lazy
|
||||||
@ -82,6 +90,9 @@ public class EnvironmentDevTask {
|
|||||||
@Lazy
|
@Lazy
|
||||||
@Autowired
|
@Autowired
|
||||||
private EnvironmentUtil environmentUtil;
|
private EnvironmentUtil environmentUtil;
|
||||||
|
@Lazy
|
||||||
|
@Autowired
|
||||||
|
private ISprayRtDataService sprayRtDataService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 定时调用外部接口拉取设备实时数据
|
* 定时调用外部接口拉取设备实时数据
|
||||||
@ -264,6 +275,36 @@ public class EnvironmentDevTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 喷淋自动关闭(RenZhi测控)
|
||||||
|
*/
|
||||||
|
@SchedulerLock(name = "sprayAutoCloseByRzck", lockAtMostFor = 1000 * 60 * 5, lockAtLeastFor = 1000 * 60 * 3)
|
||||||
|
@Scheduled(cron = "0 0/2 * * * ?")
|
||||||
|
@RequestMapping("sprayAutoCloseByRzck")
|
||||||
|
public void sprayAutoCloseByRzck() {
|
||||||
|
List<SprayRtData> sprayDatas = sprayRtDataService.list(new LambdaQueryWrapper<SprayRtData>()
|
||||||
|
.eq(SprayRtData::getDevType, 1)
|
||||||
|
.eq(SprayRtData::getSprayStatus, 1)
|
||||||
|
.le(SprayRtData::getEndTime, DateUtil.formatDateTime(new Date()))
|
||||||
|
);
|
||||||
|
Map<String, List<SprayRtData>> dustDevMap = sprayDatas.stream().collect(Collectors.groupingBy(SprayRtData::getDevSn));
|
||||||
|
Map<String, Project> projectMap = projectService.list(null).stream().collect(Collectors.toMap(Project::getProjectSn, Function.identity(), (o1, o2) -> o1));
|
||||||
|
for (Map.Entry<String, List<SprayRtData>> entry : dustDevMap.entrySet()) {
|
||||||
|
try {
|
||||||
|
List<SprayRtData> datas = entry.getValue();
|
||||||
|
Project project = projectMap.get(datas.get(0).getProjectSn());
|
||||||
|
RenZhiUtil.httpOptSpray(entry.getKey(), 2, project.getJnrzckAccount(), project.getJnrzckPw());
|
||||||
|
sprayRtDataService.update(null, new LambdaUpdateWrapper<SprayRtData>()
|
||||||
|
.set(SprayRtData::getSprayStatus, 2)
|
||||||
|
.in(SprayRtData::getId, datas.stream().map(SprayRtData::getId).collect(Collectors.toList()))
|
||||||
|
);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.debug("", e);
|
||||||
|
log.error("喷淋自动关闭(RenZhi测控)错误:{}", e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 机场项目推送扬尘
|
* 机场项目推送扬尘
|
||||||
*/
|
*/
|
||||||
@ -282,8 +323,8 @@ public class EnvironmentDevTask {
|
|||||||
for (EnvironmentDev dev : devs) {
|
for (EnvironmentDev dev : devs) {
|
||||||
DustNoiseData data = dustNoiseDataService.getOne(new LambdaQueryWrapper<DustNoiseData>()
|
DustNoiseData data = dustNoiseDataService.getOne(new LambdaQueryWrapper<DustNoiseData>()
|
||||||
.eq(DustNoiseData::getDeviceId, dev.getDeviceId())
|
.eq(DustNoiseData::getDeviceId, dev.getDeviceId())
|
||||||
.ge(DustNoiseData::getUploadDate,DateUtil.formatDateTime(offsetHour))
|
.ge(DustNoiseData::getUploadDate, DateUtil.formatDateTime(offsetHour))
|
||||||
.le(DustNoiseData::getUploadDate,DateUtil.formatDateTime(now))
|
.le(DustNoiseData::getUploadDate, DateUtil.formatDateTime(now))
|
||||||
.orderByDesc(DustNoiseData::getUploadDate).last("limit 1"));
|
.orderByDesc(DustNoiseData::getUploadDate).last("limit 1"));
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
JcHttpUtil.SmartDustDataForm e = new JcHttpUtil.SmartDustDataForm();
|
JcHttpUtil.SmartDustDataForm e = new JcHttpUtil.SmartDustDataForm();
|
||||||
|
|||||||
@ -1,12 +1,20 @@
|
|||||||
package com.zhgd.xmgl.util;
|
package com.zhgd.xmgl.util;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.core.util.URLUtil;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import cn.hutool.http.HttpUtil;
|
import cn.hutool.http.HttpUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.gexin.fastjson.JSON;
|
||||||
|
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class RenZhiUtil {
|
public class RenZhiUtil {
|
||||||
public static final String host = "http://www.0531yun.com";
|
public static final String host = "http://www.0531yun.com";
|
||||||
@ -79,5 +87,43 @@ public class RenZhiUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 继电器操作(喷淋)
|
||||||
|
*
|
||||||
|
* @param deviceId
|
||||||
|
* @param opt 设备操作 0:闭合 1:断开
|
||||||
|
* @param token
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static JSONObject setRelay(String deviceId, Integer opt, String token) {
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
paramMap.put("deviceAddr", deviceId);
|
||||||
|
paramMap.put("opt", opt);
|
||||||
|
paramMap.put("relayNo", "1");//继电器编号
|
||||||
|
String url = "http://www.0531yun.com/api/device/setRelay";
|
||||||
|
log.info("继电器操作(喷淋),url:{},body:{}", url, JSON.toJSONString(paramMap));
|
||||||
|
String result = HttpRequest.post(url).form(paramMap).header("authorization", token).execute().body();
|
||||||
|
log.info("继电器操作(喷淋),rs:{}", result);
|
||||||
|
return JSONObject.parseObject(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* http操作喷淋
|
||||||
|
*
|
||||||
|
* @param deviceId
|
||||||
|
* @param sprayStatus 喷淋状态(1投运2未投运)
|
||||||
|
* @param jnrzckAccount
|
||||||
|
* @param jnrzckPw
|
||||||
|
*/
|
||||||
|
public static void httpOptSpray(String deviceId, Integer sprayStatus, String jnrzckAccount, String jnrzckPw) {
|
||||||
|
String token = RenZhiUtil.getToken(jnrzckAccount, jnrzckPw);
|
||||||
|
if (StrUtil.isBlank(token)) {
|
||||||
|
throw new OpenAlertException("token获取失败");
|
||||||
|
}
|
||||||
|
Integer opt = Objects.equals(sprayStatus, 1) ? 0 : 1;
|
||||||
|
JSONObject jsonObject = RenZhiUtil.setRelay(deviceId, opt, token);
|
||||||
|
if (!Objects.equals(jsonObject.getInteger("code"), 1000)) {
|
||||||
|
throw new OpenAlertException("喷淋失败:" + jsonObject.getString("message"));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user