Browse Source

修改查询温度湿度接口

logistics
ma 4 years ago
parent
commit
06a0c4a86e
  1. 4
      logistics/src/main/java/com/ccsens/logistics/bean/dto/MbpsDto.java
  2. 6
      logistics/src/main/java/com/ccsens/logistics/bean/vo/MbpsVo.java
  3. 12
      logistics/src/main/java/com/ccsens/logistics/persist/dao/LogisticsEnvironmentRecordDao.java
  4. 2
      logistics/src/main/java/com/ccsens/logistics/service/HttpService.java
  5. 28
      logistics/src/main/java/com/ccsens/logistics/service/MbpsService.java
  6. 78
      logistics/src/main/resources/mapper_dao/LogisticsEnvironmentRecordDao.xml

4
logistics/src/main/java/com/ccsens/logistics/bean/dto/MbpsDto.java

@ -25,6 +25,8 @@ public class MbpsDto {
@NotNull(message = "请选择查询类型")
@ApiModelProperty("查询类型(0-按天,1-按周,2-按月,3-按年)")
private Byte queryType;
@ApiModelProperty("查询的天数")
private Integer queryOfDay = 10;
@ApiModelProperty("开始时间")
private Long startTime;
@ApiModelProperty("结束时间")
@ -41,6 +43,8 @@ public class MbpsDto {
private Long startTime;
@ApiModelProperty("结束时间")
private Long endTime;
@ApiModelProperty("查询的几个小时的数据")
private Integer queryOfDay = 5;
}
@Data

6
logistics/src/main/java/com/ccsens/logistics/bean/vo/MbpsVo.java

@ -86,18 +86,16 @@ public class MbpsVo {
@Data
@ApiModel("温度变化")
public static class Temps{
@JsonFormat(pattern = "HH:mm:ss")
@ApiModelProperty("时间")
private Date time;
private String time;
@ApiModelProperty("温度")
private BigDecimal temp;
}
@Data
@ApiModel("湿度变化")
public static class Humiditys{
@JsonFormat(pattern = "HH:mm:ss")
@ApiModelProperty("时间")
private Date time;
private String time;
@ApiModelProperty("湿度")
private BigDecimal humidity;
}

12
logistics/src/main/java/com/ccsens/logistics/persist/dao/LogisticsEnvironmentRecordDao.java

@ -16,20 +16,20 @@ public interface LogisticsEnvironmentRecordDao extends LogisticsEnvironmentRecor
/**
* 查询温度变化
* @param warehouseId 仓库id
* @param startTime 开始时间
* @param endTime 结束时间
* @param countArr 需要查询几天的数据
* @param nowDate 现在的时间
* @return 温度列表
*/
List<MbpsVo.Temps> selTempByTime(@Param("warehouseId") Long warehouseId,@Param("startTime") Long startTime,@Param("endTime") Long endTime);
List<MbpsVo.Temps> selTempByTime(@Param("warehouseId") Long warehouseId,@Param("countArr") String[] countArr,@Param("nowDate") String nowDate);
/**
* 查询湿度变化
* @param warehouseId 仓库id
* @param startTime 开始时间
* @param endTime 结束时间
* @param countArr 需要查询几天的数据
* @param nowDate 现在的时间
* @return 湿度列表
*/
List<MbpsVo.Humiditys> selHumidityByTime(@Param("warehouseId") Long warehouseId,@Param("startTime") Long startTime,@Param("endTime") Long endTime);
List<MbpsVo.Humiditys> selHumidityByTime(@Param("warehouseId") Long warehouseId,@Param("countArr") String[] countArr,@Param("nowDate") String nowDate);
/**
* 是否有火灾

2
logistics/src/main/java/com/ccsens/logistics/service/HttpService.java

@ -71,7 +71,7 @@ public class HttpService implements IHttpService{
for (int i = 0; i < dataArray.size(); i++) {
LogisticsEnvironmentRecord environmentRecord = new LogisticsEnvironmentRecord();
JSONObject oneObject = dataArray.getJSONObject(i);
environmentRecord.setEquipmentNum(oneObject.getString("deviceKey"));
environmentRecord.setEquipmentNum(oneObject.getString("deviceAddr"));
environmentRecord.setRecordTime(System.currentTimeMillis());
JSONArray realTimeData = oneObject.getJSONArray("realTimeData");

28
logistics/src/main/java/com/ccsens/logistics/service/MbpsService.java

@ -16,6 +16,7 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@ -57,7 +58,7 @@ public class MbpsService implements IMbpsService {
@Override
public MbpsVo.SelMbpsByTime selMbpsByTime(MbpsDto.SelMbpsByTime param) {
String[] countArr = new String[10];
String[] countArr = new String[param.getQueryOfDay()];
//查找当前时间
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
@ -92,12 +93,33 @@ public class MbpsService implements IMbpsService {
@Override
public MbpsVo.SelTempAndHumidity selTeamAndHumidity(MbpsDto.SelTeamAndHumidity param) {
MbpsVo.SelTempAndHumidity tempAndHumidity = new MbpsVo.SelTempAndHumidity();
String[] countArr = new String[param.getQueryOfDay()];
//查找当前时间
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH");
String nowDate = format.format(date);
//查询温度
List<MbpsVo.Temps> tempsList = environmentRecordDao.selTempByTime(param.getWarehouseId(),param.getStartTime(),param.getEndTime());
List<MbpsVo.Temps> tempsList = environmentRecordDao.selTempByTime(param.getWarehouseId(),countArr,nowDate);
if (CollectionUtil.isNotEmpty(tempsList)){
for (MbpsVo.Temps temps : tempsList) {
if (ObjectUtil.isNull(temps.getTemp())){
temps.setTemp(new BigDecimal(0));
}
}
}
tempAndHumidity.getTemps().addAll(tempsList);
//查询湿度
List<MbpsVo.Humiditys> humidityList = environmentRecordDao.selHumidityByTime(param.getWarehouseId(),param.getStartTime(),param.getEndTime());
List<MbpsVo.Humiditys> humidityList = environmentRecordDao.selHumidityByTime(param.getWarehouseId(),countArr,nowDate);
if (CollectionUtil.isNotEmpty(humidityList)){
for (MbpsVo.Humiditys humidity : humidityList) {
if (ObjectUtil.isNull(humidity.getHumidity())){
humidity.setHumidity(new BigDecimal(0));
}
}
}
tempAndHumidity.getHumiditys().addAll(humidityList);
return tempAndHumidity;

78
logistics/src/main/resources/mapper_dao/LogisticsEnvironmentRecordDao.xml

@ -4,46 +4,56 @@
<select id="selTempByTime" resultType="com.ccsens.logistics.bean.vo.MbpsVo$Temps">
SELECT
id,
FROM_UNIXTIME(
record_time / 1000,
'%H:%i:%s') AS time,
MAX(num_value) AS temp
s.date AS time,
MAX(newEr.numValue) AS temp
FROM
t_logistics_environment_record
WHERE
num_type = 0
AND warehouse_id = #{warehouseId}
AND rec_status = 0
AND record_time BETWEEN #{startTime} AND #{endTime}
GROUP BY
HOUR (
FROM_UNIXTIME(
record_time / 1000,
'%H:%i:%s'
))
(select date_add(#{nowDate},interval @i:=@i-1 HOUR) as date
from (
SELECT 1
<foreach item="index" collection="countArr">
union all select 1
</foreach>
) AS tmp,
( SELECT @i := + 1 ) t ) AS s
LEFT JOIN
(
SELECT
FROM_UNIXTIME(er.record_time/1000,'%Y-%m-%d %H:00:00') AS recordTime,
er.num_value AS numValue
FROM
t_logistics_environment_record AS er
LEFT JOIN t_logistics_equipment AS e ON er.equipment_num = e.equipment_number
LEFT JOIN t_logistics_warehouse AS w ON w.id = e.warehouse_id
WHERE er.rec_status = 0 AND e.rec_status = 0 AND w.rec_status = 0 AND er.num_type = 0 AND e.warehouse_id = #{warehouseId} AND w.park_id = 1
) AS newEr ON newEr.recordTime = s.date
group by s.date ORDER BY s.date
</select>
<select id="selHumidityByTime" resultType="com.ccsens.logistics.bean.vo.MbpsVo$Humiditys">
SELECT
id,
FROM_UNIXTIME(
record_time / 1000,
'%H:%i:%s') AS time,
MAX(num_value) AS humidity
s.date AS time,
MAX(newEr.numValue) AS humidity
FROM
t_logistics_environment_record
WHERE
num_type = 1
AND warehouse_id = #{warehouseId}
AND rec_status = 0
AND record_time BETWEEN #{startTime} AND #{endTime}
GROUP BY
HOUR (
FROM_UNIXTIME(
record_time / 1000,
'%H:%i:%s'
))
(select date_add(#{nowDate},interval @i:=@i-1 HOUR) as date
from (
SELECT 1
<foreach item="index" collection="countArr">
union all select 1
</foreach>
) AS tmp,
( SELECT @i := + 1 ) t ) AS s
LEFT JOIN
(
SELECT
FROM_UNIXTIME(er.record_time/1000,'%Y-%m-%d %H:00:00') AS recordTime,
er.num_value AS numValue
FROM
t_logistics_environment_record AS er
LEFT JOIN t_logistics_equipment AS e ON er.equipment_num = e.equipment_number
LEFT JOIN t_logistics_warehouse AS w ON w.id = e.warehouse_id
WHERE er.rec_status = 0 AND e.rec_status = 0 AND w.rec_status = 0 AND er.num_type = 1 AND e.warehouse_id = #{warehouseId} AND w.park_id = 1
) AS newEr ON newEr.recordTime = s.date
group by s.date ORDER BY s.date
</select>
<select id="selFire" resultType="java.lang.Byte">

Loading…
Cancel
Save