diff --git a/logistics/src/main/java/com/ccsens/logistics/Util/Constant.java b/logistics/src/main/java/com/ccsens/logistics/Util/Constant.java index e60eeba2..0ba266aa 100644 --- a/logistics/src/main/java/com/ccsens/logistics/Util/Constant.java +++ b/logistics/src/main/java/com/ccsens/logistics/Util/Constant.java @@ -3,7 +3,7 @@ package com.ccsens.logistics.Util; /** * @author 逗 */ -public class Constant { +public class Constant { /** * 心跳信息 */ @@ -12,4 +12,24 @@ public class Constant { * 热成像图片 */ public static final String THERMAL_IMAGERY = "SN4Image"; + /** + * 温度检测 + */ + public static final String TEMP = "温度(℃)"; + /** + * 湿度检测 + */ + public static final String HUMIDITY = "湿度(%RH)"; + /** + * 水浸检测 + */ + public static final String WATER_OUT = "水浸"; + /** + * 有水 + */ + public static final String HAVE_WATER = "有水"; + /** + * 无水 + */ + public static final String NO_WATER = "无水"; } diff --git a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecord.java b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecord.java index 47ff7535..8cee93b8 100644 --- a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecord.java +++ b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecord.java @@ -15,6 +15,8 @@ public class LogisticsEnvironmentRecord implements Serializable { private Long warehouseId; + private String equipmentNum; + private Long recordTime; private Byte isAlarm; @@ -67,6 +69,14 @@ public class LogisticsEnvironmentRecord implements Serializable { this.warehouseId = warehouseId; } + public String getEquipmentNum() { + return equipmentNum; + } + + public void setEquipmentNum(String equipmentNum) { + this.equipmentNum = equipmentNum == null ? null : equipmentNum.trim(); + } + public Long getRecordTime() { return recordTime; } @@ -118,6 +128,7 @@ public class LogisticsEnvironmentRecord implements Serializable { sb.append(", numType=").append(numType); sb.append(", equipmentId=").append(equipmentId); sb.append(", warehouseId=").append(warehouseId); + sb.append(", equipmentNum=").append(equipmentNum); sb.append(", recordTime=").append(recordTime); sb.append(", isAlarm=").append(isAlarm); sb.append(", createdAt=").append(createdAt); diff --git a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecordExample.java b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecordExample.java index 8260fb10..42c43fd0 100644 --- a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecordExample.java +++ b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsEnvironmentRecordExample.java @@ -406,6 +406,76 @@ public class LogisticsEnvironmentRecordExample { return (Criteria) this; } + public Criteria andEquipmentNumIsNull() { + addCriterion("equipment_num is null"); + return (Criteria) this; + } + + public Criteria andEquipmentNumIsNotNull() { + addCriterion("equipment_num is not null"); + return (Criteria) this; + } + + public Criteria andEquipmentNumEqualTo(String value) { + addCriterion("equipment_num =", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotEqualTo(String value) { + addCriterion("equipment_num <>", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumGreaterThan(String value) { + addCriterion("equipment_num >", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumGreaterThanOrEqualTo(String value) { + addCriterion("equipment_num >=", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumLessThan(String value) { + addCriterion("equipment_num <", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumLessThanOrEqualTo(String value) { + addCriterion("equipment_num <=", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumLike(String value) { + addCriterion("equipment_num like", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotLike(String value) { + addCriterion("equipment_num not like", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumIn(List values) { + addCriterion("equipment_num in", values, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotIn(List values) { + addCriterion("equipment_num not in", values, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumBetween(String value1, String value2) { + addCriterion("equipment_num between", value1, value2, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotBetween(String value1, String value2) { + addCriterion("equipment_num not between", value1, value2, "equipmentNum"); + return (Criteria) this; + } + public Criteria andRecordTimeIsNull() { addCriterion("record_time is null"); return (Criteria) this; diff --git a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecord.java b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecord.java index 98c33c75..30f6e9a5 100644 --- a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecord.java +++ b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecord.java @@ -23,6 +23,8 @@ public class LogisticsHeatImagingRecord implements Serializable { private Long warehouseId; + private String equipmentNum; + private Date createdAt; private Date updatedAt; @@ -105,6 +107,14 @@ public class LogisticsHeatImagingRecord implements Serializable { this.warehouseId = warehouseId; } + public String getEquipmentNum() { + return equipmentNum; + } + + public void setEquipmentNum(String equipmentNum) { + this.equipmentNum = equipmentNum == null ? null : equipmentNum.trim(); + } + public Date getCreatedAt() { return createdAt; } @@ -152,6 +162,7 @@ public class LogisticsHeatImagingRecord implements Serializable { sb.append(", recordTime=").append(recordTime); sb.append(", equipmentId=").append(equipmentId); sb.append(", warehouseId=").append(warehouseId); + sb.append(", equipmentNum=").append(equipmentNum); sb.append(", createdAt=").append(createdAt); sb.append(", updatedAt=").append(updatedAt); sb.append(", recStatus=").append(recStatus); diff --git a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecordExample.java b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecordExample.java index 8593f474..dc860177 100644 --- a/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecordExample.java +++ b/logistics/src/main/java/com/ccsens/logistics/bean/po/LogisticsHeatImagingRecordExample.java @@ -666,6 +666,76 @@ public class LogisticsHeatImagingRecordExample { return (Criteria) this; } + public Criteria andEquipmentNumIsNull() { + addCriterion("equipment_num is null"); + return (Criteria) this; + } + + public Criteria andEquipmentNumIsNotNull() { + addCriterion("equipment_num is not null"); + return (Criteria) this; + } + + public Criteria andEquipmentNumEqualTo(String value) { + addCriterion("equipment_num =", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotEqualTo(String value) { + addCriterion("equipment_num <>", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumGreaterThan(String value) { + addCriterion("equipment_num >", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumGreaterThanOrEqualTo(String value) { + addCriterion("equipment_num >=", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumLessThan(String value) { + addCriterion("equipment_num <", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumLessThanOrEqualTo(String value) { + addCriterion("equipment_num <=", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumLike(String value) { + addCriterion("equipment_num like", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotLike(String value) { + addCriterion("equipment_num not like", value, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumIn(List values) { + addCriterion("equipment_num in", values, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotIn(List values) { + addCriterion("equipment_num not in", values, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumBetween(String value1, String value2) { + addCriterion("equipment_num between", value1, value2, "equipmentNum"); + return (Criteria) this; + } + + public Criteria andEquipmentNumNotBetween(String value1, String value2) { + addCriterion("equipment_num not between", value1, value2, "equipmentNum"); + return (Criteria) this; + } + public Criteria andCreatedAtIsNull() { addCriterion("created_at is null"); return (Criteria) this; diff --git a/logistics/src/main/java/com/ccsens/logistics/bean/vo/HttpVo.java b/logistics/src/main/java/com/ccsens/logistics/bean/vo/HttpVo.java new file mode 100644 index 00000000..5b6c264b --- /dev/null +++ b/logistics/src/main/java/com/ccsens/logistics/bean/vo/HttpVo.java @@ -0,0 +1,63 @@ +package com.ccsens.logistics.bean.vo; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author 马 + */ +@Data +public class HttpVo { + + @Data + @ApiModel("温湿度设备分组") + public static class Groups{ + @ApiModelProperty("分组id") + private String groupId; + @ApiModelProperty("分组名称") + private String groupName; + } + + @Data + @ApiModel("温湿度设备的数据") + public static class EnvironmentOfData{ + @ApiModelProperty("分组id") + private String groupId; + @ApiModelProperty("设备编号") + private String deviceKey; + @ApiModelProperty("设备地址") + private Integer deviceAddr; + @ApiModelProperty("节点编号") + private Integer nodeID; + @ApiModelProperty("节点类型") + private Integer nodeType; + @ApiModelProperty("停用状态,true停用") + private Integer deviceDisabled; + @ApiModelProperty("设备名称") + private String deviceName; + @ApiModelProperty("设备状态0未运行,1离线,2在线") + private Integer deviceStatus; + @ApiModelProperty("实时数据") + private JSONArray relTimeData; +// @ApiModelProperty("实时数据") +// private List relTimeData; + } + + @Data + @ApiModel("实时数据") + public static class RealData{ + @ApiModelProperty("模拟量名称") + private String dataName; + @ApiModelProperty("实时数据") + private String dataValue; + @ApiModelProperty("是否报警") + private Boolean isAlarm; + @ApiModelProperty("报警信息") + private String alarmMsg; + } +} diff --git a/logistics/src/main/java/com/ccsens/logistics/scheduled/ScheduledService.java b/logistics/src/main/java/com/ccsens/logistics/scheduled/ScheduledService.java new file mode 100644 index 00000000..81508aec --- /dev/null +++ b/logistics/src/main/java/com/ccsens/logistics/scheduled/ScheduledService.java @@ -0,0 +1,31 @@ +package com.ccsens.logistics.scheduled; + + +import com.ccsens.logistics.service.IHttpService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + +/** + * @author 逗 + */ +@Slf4j +@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) +@Component +@EnableScheduling +public class ScheduledService { + + @Resource + private IHttpService iHttpService; + + @Scheduled(cron = "*/30 * * * * ?") + public void runfirst(){ + iHttpService.getTemperatureAndHumidity(); + } + + +} diff --git a/logistics/src/main/java/com/ccsens/logistics/service/HttpService.java b/logistics/src/main/java/com/ccsens/logistics/service/HttpService.java index f437be2a..f801a96b 100644 --- a/logistics/src/main/java/com/ccsens/logistics/service/HttpService.java +++ b/logistics/src/main/java/com/ccsens/logistics/service/HttpService.java @@ -1,33 +1,34 @@ package com.ccsens.logistics.service; -import com.alibaba.fastjson.JSON; +import cn.hutool.core.lang.Snowflake; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.ccsens.logistics.bean.dto.HttpDto; -import com.ccsens.util.CodeEnum; +import com.ccsens.logistics.bean.po.LogisticsEnvironmentRecord; +import com.ccsens.logistics.bean.vo.HttpVo; +import com.ccsens.logistics.persist.dao.LogisticsEnvironmentRecordDao; import com.ccsens.util.JsonResponse; -import com.ccsens.util.PropUtil; import com.ccsens.util.RestTemplateUtil; -import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; import org.apache.http.Header; import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import org.apache.http.HttpEntity; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import com.ccsens.logistics.Util.Constant; +import javax.annotation.Resource; import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Arrays; -import java.util.Map; +import java.util.List; + /** * @author 马 @@ -37,15 +38,75 @@ import java.util.Map; @Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class) public class HttpService implements IHttpService{ + @Resource + private LogisticsEnvironmentRecordDao environmentRecordDao; + @Resource + private Snowflake snowflake; + @Override public void getTemperatureAndHumidity() { try { + List groupsList = new ArrayList<>(); HttpDto.Login login = new HttpDto.Login(); - login.setLoginName("jnrstest"); - login.setPassword("jnrstest321"); + login.setLoginName("t210510sxck"); + login.setPassword("ccsens123"); //调取登录接口 获取userId String userId = getUserId(login); - String body = getBody(userId); + //获取设备分组列表 +// String getGroupOfUrl = "http://iot.0531yun.cn/wsjc/app/GetUserDeviceGroups"; +// String groupString = getBody(getGroupOfUrl,userId); +// JsonResponse groups = JSONObject.parseObject(groupString,JsonResponse.class); +// JSONArray data = groups.getData(); +// for (int i = 0; i < data.size(); i++) { +// HttpVo.Groups oneData = JSONObject.parseObject(data.get(i).toString(), HttpVo.Groups.class); +// groupsList.add(oneData); +// } + + //循环查询分组id下的设备数据并存入数据库 + String getDataAndSaveOfUrl = "http://iot.0531yun.cn/wsjc/app/GetDeviceData?groupId="; + String environmentOfData = getBody(getDataAndSaveOfUrl, userId); + + JSONObject jsonObject = JSONObject.parseObject(environmentOfData); + JSONArray dataArray = jsonObject.getJSONArray("data"); + for (int i = 0; i < dataArray.size(); i++) { + LogisticsEnvironmentRecord environmentRecord = new LogisticsEnvironmentRecord(); + JSONObject oneObject = dataArray.getJSONObject(i); + environmentRecord.setEquipmentNum(oneObject.getString("deviceKey")); + environmentRecord.setRecordTime(System.currentTimeMillis()); + + JSONArray realTimeData = oneObject.getJSONArray("realTimeData"); + for (int j = 0; j < realTimeData.size(); j++) { + JSONObject realData = realTimeData.getJSONObject(j); + switch (realData.getString("dataName")){ + case Constant.TEMP : + environmentRecord.setId(snowflake.nextId()); + environmentRecord.setNumType((byte)1); + environmentRecord.setNumValue(new BigDecimal(realData.getString("dataValue"))); + environmentRecord.setIsAlarm(realData.getBoolean("isAlarm") ? (byte) 1 : (byte) 0); + break; + case Constant.HUMIDITY: + environmentRecord.setId(snowflake.nextId()); + environmentRecord.setNumType((byte)0); + environmentRecord.setNumValue(new BigDecimal(realData.getString("dataValue"))); + environmentRecord.setIsAlarm(realData.getBoolean("isAlarm") ? (byte) 1 : (byte) 0); + break; + case Constant.WATER_OUT: + environmentRecord.setId(snowflake.nextId()); + environmentRecord.setNumType((byte)2); + if(Constant.HAVE_WATER.equals(realData.getString("dataValue"))){ + environmentRecord.setNumValue(new BigDecimal(100)); + environmentRecord.setIsAlarm((byte)1); + }else{ + environmentRecord.setNumValue(new BigDecimal(0)); + environmentRecord.setIsAlarm((byte)0); + } + break; + default: + break; + } + environmentRecordDao.insertSelective(environmentRecord); + } + } }catch (Exception e){ e.printStackTrace(); @@ -59,26 +120,22 @@ public class HttpService implements IHttpService{ * @return userId */ public String getUserId(HttpDto.Login login){ - String requestUrl = "http://www.0531yun.cn/wsjc/app/Login"; + String requestUrl = "http://iot.0531yun.cn/app/Login"; String s = RestTemplateUtil.postBody(requestUrl, login); JsonResponse a = JSONObject.parseObject(s, JsonResponse.class); JSONObject data = a.getData(); - String userId = data.getString("userId"); - return userId; + return data.getString("userId"); } - - public static String getBody(String userId) throws IOException { + //get请求 + public static String getBody(String url,String userId){ try { - String url = "http://www.0531yun.cn/app/GetUserDeviceGroups"; HttpGet get = new HttpGet(url); get.setHeader("userId",userId); HttpClient httpClient = HttpClients.createDefault(); HttpResponse response = httpClient.execute(get); return getResult(response); - } catch (ClientProtocolException e) { - e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } @@ -103,4 +160,5 @@ public class HttpService implements IHttpService{ } + } diff --git a/logistics/src/main/resources/mapper_raw/LogisticsEnvironmentRecordMapper.xml b/logistics/src/main/resources/mapper_raw/LogisticsEnvironmentRecordMapper.xml index fdaf2c87..e5010c92 100644 --- a/logistics/src/main/resources/mapper_raw/LogisticsEnvironmentRecordMapper.xml +++ b/logistics/src/main/resources/mapper_raw/LogisticsEnvironmentRecordMapper.xml @@ -7,6 +7,7 @@ + @@ -72,8 +73,8 @@ - id, num_value, num_type, equipment_id, warehouse_id, record_time, is_alarm, created_at, - updated_at, rec_status + id, num_value, num_type, equipment_id, warehouse_id, equipment_num, record_time, + is_alarm, created_at, updated_at, rec_status