Commit 2b9a3278 authored by jichao's avatar jichao

no message

parent 53eb12c6
......@@ -2,9 +2,9 @@ package org.rcisoft.business.device.assets.dao;
import org.apache.ibatis.annotations.*;
import org.rcisoft.business.device.assets.vo.DeviceAssetStatisticVo;
import org.rcisoft.core.base.BaseMapper;
import org.rcisoft.business.device.assets.entity.BusDevice;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
......@@ -14,7 +14,7 @@ import java.util.Map;
* Created with on 2018-4-12 15:33:23.
*/
@Repository
public interface BusDeviceRepository extends BaseMapper<BusDevice> {
public interface BusDeviceRepository extends Mapper<BusDevice> {
/**
* 分页查询 busDevice
......@@ -73,9 +73,10 @@ public interface BusDeviceRepository extends BaseMapper<BusDevice> {
* @return
*/
@Select("<script>select d.DEV_ID,d.SHUT_POWER,d.RUN_TM,sum(e.elec) ELEC from bus_device d,bus_device_meter m,energy_count_m e " +
"where d.DEV_NUM=m.DEV_NUM and m.MET_NUM=e.MET_NUM and date_format(e.CREATE_TIME, '%Y-%m-%d %H:%i')=#{time}" +
"where d.DEV_NUM=m.DEV_NUM and m.MET_NUM=e.MET_NUM and date_format(e.CREATE_TIME, '%Y-%m-%d %H:%i')=#{time} " +
"group by d.DEV_ID,d.SHUT_POWER,d.RUN_TM</script>")
List<Map<String, Object>> addRunTime(@Param("time") String time);
@ResultType(Map.class)
List<Map<String, Object>> selectRunTime(@Param("time") String time);
/**
* 批量更新设备的运行时长
......
......@@ -229,9 +229,9 @@ public class BusDeviceServiceImpl implements BusDeviceService {
//最后需要保存的数据
List<BusDevice> saveList = new ArrayList<>();
//得到当前时间前10分钟的时间
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date(System.currentTimeMillis() - 600000));
String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date(System.currentTimeMillis() - 900000));
//查询10分钟前所有数据的耗电量信息
List<Map<String, Object>> list = busDeviceRepository.addRunTime(time);
List<Map<String, Object>> list = busDeviceRepository.selectRunTime(time);
list.forEach(map -> {
BigDecimal shutPower = (BigDecimal) map.get("SHUT_POWER");
shutPower = shutPower == null ? new BigDecimal(0) : shutPower;
......
......@@ -18,7 +18,7 @@ public class BusDeviceTask {
/**
* 每10分钟查询更新一次
*/
@Scheduled(cron = "0 0/10 * * * ?")
@Scheduled(cron = "0 5,15,25,35,45,55 * * * ?")
public void runTime() {
busDeviceServiceImpl.addRunTime();
}
......
......@@ -179,23 +179,44 @@ public class SystemServiceImpl implements SystemService {
@Override
public String selectDataByCache(String proId) {
String newData = redisServiceImpl.get(proId);
String oldData = redisServiceImpl.get(proId + "-old");
return "{\"newData\":" + newData + ",\"oldData\":" + oldData + "}";
// String newData = redisServiceImpl.get(proId);
// String oldData = redisServiceImpl.get(proId + "-old");
// return "{\"newData\":" + newData + ",\"oldData\":" + oldData + "}";
return redisServiceImpl.get(proId);
}
@Override
public List<ParamStatus> selectDeviceAll(String proId) {
// 根据proId得到redis中的数据
String data = redisServiceImpl.get(proId);
// 得到json数据
JSONObject json = JSON.parseObject(data);
List<ParamStatus> list = deviceParamRepository.selectDeviceAll(proId);
list.forEach(paramStatus -> {
// 设备来源
String devNum = paramStatus.getDevNum();
// 参数
String param = paramStatus.getParam();
// 如果devNum不是空,截取字符串
if (StringUtils.isNotEmpty(devNum)) {
devNum = devNum.split(proId + "_")[1];
}
paramStatus.setDevNum(devNum);
// 默认都设为掉线状态
paramStatus.setStatus(2);
// paramStatus.setStatus(2);
// 默认值为0
paramStatus.setValue(0);
// 获得数据
JSONObject jsonObject = (JSONObject) json.get(devNum);
if (jsonObject != null) {
JSONObject valueObject = (JSONObject) jsonObject.get("REG_VAL");
if (valueObject != null) {
Object value = valueObject.get(param);
if (value != null) {
paramStatus.setValue(value);
}
}
}
});
return list;
}
......@@ -211,55 +232,30 @@ public class SystemServiceImpl implements SystemService {
if (!proId.equals("")) {
// 根据proId得到redis中的数据
String newData = redisServiceImpl.get(proId);
String oldData = redisServiceImpl.get(proId + "-old");
// 循环list,根据param查询数据,新的-旧的 > 0.003:认为是开启状态
JSONObject newJson = JSON.parseObject(newData);
JSONObject oldJson = JSON.parseObject(oldData);
if (newJson != null && oldJson != null) {
if (newJson != null) {
// 循环,获取两个数据做对比
for (ParamStatus paramStatus : paramStatusList) {
String devNum = paramStatus.getDevNum();
String param = paramStatus.getParam();
if (StringUtils.isNotEmpty(devNum) && StringUtils.isNotEmpty(param)) {
BigDecimal newElec = null, oldElec = null;
// 新数据
JSONObject newObj = (JSONObject) newJson.get(devNum);
if (newObj != null) {
// 先判断设备中的status,如果=0,是掉线状态,用2表示
// 赋值status
Integer status = (Integer) newObj.get("status");
if (status == 0) {
paramStatus.setStatus(2);
continue;
}
// status=1,在线状态,继续判断
// status=0,掉线状态,前台直接变成掉线状态
paramStatus.setStatus(status);
JSONObject newVal = (JSONObject) newObj.get("REG_VAL");
if (newVal != null) {
Object o = newVal.get(param);
if (o != null) {
newElec = new BigDecimal(o.toString());
}
}
}
// 旧数据
JSONObject oldObj = (JSONObject) oldJson.get(devNum);
if (oldObj != null) {
JSONObject oldVal = (JSONObject) oldObj.get("REG_VAL");
if (oldVal != null) {
Object o = oldVal.get(param);
if (o != null) {
oldElec = new BigDecimal(o.toString());
}
// 赋值value
paramStatus.setValue(o);
}
}
// 判断两个比较电量大小
if (newElec != null && oldElec != null) {
// 如果两数相减小于0.003,认为是关闭,大于等于认为是开启
if (newElec.subtract(oldElec).compareTo(new BigDecimal(0.001)) < 0)
paramStatus.setStatus(0);
else
paramStatus.setStatus(1);
}
} else {
paramStatus.setStatus(2);
}
}
}
......
......@@ -23,5 +23,7 @@ public class ParamStatus {
private Integer status;
// 用来截取电量 13388062265_power_ct01 -> power_ct01
private String proId;
// 需要对比的数值
private Object value;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment