喷淋修改
This commit is contained in:
parent
2902ea6a45
commit
00a832dc4f
@ -175,4 +175,17 @@ public class EnvironmentDevController {
|
||||
environmentDevService.updateEnvironmentDevSprayStatus(map);
|
||||
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);
|
||||
|
||||
void updateEnvironmentDevSprayStatus(Map<String, Object> map);
|
||||
|
||||
void optSpray(Map<String, Object> map);
|
||||
|
||||
}
|
||||
|
||||
@ -1,8 +1,14 @@
|
||||
package com.zhgd.xmgl.modules.environment.service.impl;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
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.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
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.mapper.*;
|
||||
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.RenZhiUtil;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
@ -50,6 +62,15 @@ public class EnvironmentDevServiceImpl extends ServiceImpl<EnvironmentDevMapper,
|
||||
private BigDeviceVideoMapper bigDeviceVideoMapper;
|
||||
@Autowired
|
||||
private AsyncEnvironment asyncEnvironment;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IProjectService projectService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private ISprayRtDataService sprayRtDataService;
|
||||
@Lazy
|
||||
@Autowired
|
||||
private IEnvironmentDevService environmentDevService;
|
||||
|
||||
@Override
|
||||
public void saveEnvironmentDev(EnvironmentDev environmentDev) {
|
||||
@ -248,4 +269,44 @@ public class EnvironmentDevServiceImpl extends ServiceImpl<EnvironmentDevMapper,
|
||||
environmentDev.setSprayStatus(sprayStatus);
|
||||
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")
|
||||
@ApiModelProperty(value = "结束时间")
|
||||
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
|
||||
*/
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.zhgd.xmgl.task;
|
||||
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
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.project.entity.Project;
|
||||
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.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.impl.SprayRtDevServiceImpl;
|
||||
import com.zhgd.xmgl.task.dto.EnvironmentDustDataDto;
|
||||
@ -44,6 +49,7 @@ import javax.annotation.Resource;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -56,6 +62,9 @@ import java.util.stream.Collectors;
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/task")
|
||||
public class EnvironmentDevTask {
|
||||
@Lazy
|
||||
@Autowired
|
||||
IProjectService projectService;
|
||||
@Autowired
|
||||
private EnvironmentDevMapper environmentDevMapper;
|
||||
@Autowired
|
||||
@ -70,7 +79,6 @@ public class EnvironmentDevTask {
|
||||
private boolean isGetEnvironmentData;
|
||||
@Autowired
|
||||
private ProjectMapper projectMapper;
|
||||
|
||||
@Resource
|
||||
private XiwonUtil xiwonUtil;
|
||||
@Lazy
|
||||
@ -82,6 +90,9 @@ public class EnvironmentDevTask {
|
||||
@Lazy
|
||||
@Autowired
|
||||
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) {
|
||||
DustNoiseData data = dustNoiseDataService.getOne(new LambdaQueryWrapper<DustNoiseData>()
|
||||
.eq(DustNoiseData::getDeviceId, dev.getDeviceId())
|
||||
.ge(DustNoiseData::getUploadDate,DateUtil.formatDateTime(offsetHour))
|
||||
.le(DustNoiseData::getUploadDate,DateUtil.formatDateTime(now))
|
||||
.ge(DustNoiseData::getUploadDate, DateUtil.formatDateTime(offsetHour))
|
||||
.le(DustNoiseData::getUploadDate, DateUtil.formatDateTime(now))
|
||||
.orderByDesc(DustNoiseData::getUploadDate).last("limit 1"));
|
||||
if (data != null) {
|
||||
JcHttpUtil.SmartDustDataForm e = new JcHttpUtil.SmartDustDataForm();
|
||||
|
||||
@ -1,12 +1,20 @@
|
||||
package com.zhgd.xmgl.util;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.gexin.fastjson.JSON;
|
||||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
public class RenZhiUtil {
|
||||
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