36 changed files with 895 additions and 129 deletions
@ -0,0 +1,22 @@ |
|||||
|
package com.ccsens.logistics.bean.dto; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
/** |
||||
|
* @author 马 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class HttpDto { |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("温湿度登录接口") |
||||
|
public static class Login{ |
||||
|
@ApiModelProperty("账号") |
||||
|
private String loginName; |
||||
|
@ApiModelProperty("密码") |
||||
|
private String password; |
||||
|
} |
||||
|
|
||||
|
} |
@ -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<RealData> relTimeData;
|
||||
|
} |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("实时数据") |
||||
|
public static class RealData{ |
||||
|
@ApiModelProperty("模拟量名称") |
||||
|
private String dataName; |
||||
|
@ApiModelProperty("实时数据") |
||||
|
private String dataValue; |
||||
|
@ApiModelProperty("是否报警") |
||||
|
private Boolean isAlarm; |
||||
|
@ApiModelProperty("报警信息") |
||||
|
private String alarmMsg; |
||||
|
} |
||||
|
} |
@ -0,0 +1,25 @@ |
|||||
|
package com.ccsens.logistics.bean.vo; |
||||
|
|
||||
|
import io.swagger.annotations.ApiModel; |
||||
|
import io.swagger.annotations.ApiModelProperty; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @author 马 |
||||
|
*/ |
||||
|
@Data |
||||
|
public class ParkVo { |
||||
|
|
||||
|
@Data |
||||
|
@ApiModel("仓库及摄像头") |
||||
|
public static class ParkInfo{ |
||||
|
@ApiModelProperty("园区设备") |
||||
|
private List<EquipmentVo.ParkEquipment> parkEquipment = new ArrayList<>(); |
||||
|
@ApiModelProperty("仓库信息") |
||||
|
private List<WarehouseVo.AllWarehouse> warehouseInfo = new ArrayList<>(); |
||||
|
} |
||||
|
|
||||
|
} |
@ -1,11 +1,21 @@ |
|||||
package com.ccsens.logistics.persist.dao; |
package com.ccsens.logistics.persist.dao; |
||||
|
|
||||
|
import com.ccsens.logistics.bean.vo.EquipmentVo; |
||||
import com.ccsens.logistics.persist.mapper.LogisticsParkEquipmentMapper; |
import com.ccsens.logistics.persist.mapper.LogisticsParkEquipmentMapper; |
||||
import org.springframework.stereotype.Repository; |
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
/** |
/** |
||||
* @author 马 |
* @author 马 |
||||
*/ |
*/ |
||||
@Repository |
@Repository |
||||
public interface LogisticsParkEquipmentDao extends LogisticsParkEquipmentMapper { |
public interface LogisticsParkEquipmentDao extends LogisticsParkEquipmentMapper { |
||||
|
/** |
||||
|
* 查询园区下的设备 |
||||
|
* @param parkId 园区id |
||||
|
* @return 园区设备列表 |
||||
|
*/ |
||||
|
List<EquipmentVo.ParkEquipment> selParkEquipment(Long parkId); |
||||
|
|
||||
} |
} |
||||
|
@ -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(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,170 @@ |
|||||
|
package com.ccsens.logistics.service; |
||||
|
|
||||
|
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.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.RestTemplateUtil; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.apache.http.Header; |
||||
|
import org.apache.http.HttpResponse; |
||||
|
import org.apache.http.client.HttpClient; |
||||
|
import org.apache.http.client.methods.HttpGet; |
||||
|
import org.apache.http.impl.client.HttpClients; |
||||
|
import org.apache.http.util.EntityUtils; |
||||
|
import org.apache.http.HttpEntity; |
||||
|
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.math.BigDecimal; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Arrays; |
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* @author 马 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
@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<HttpVo.Groups> groupsList = new ArrayList<>(); |
||||
|
HttpDto.Login login = new HttpDto.Login(); |
||||
|
login.setLoginName("t210510sxck"); |
||||
|
login.setPassword("ccsens123"); |
||||
|
//调取登录接口 获取userId
|
||||
|
String userId = getUserId(login); |
||||
|
//获取设备分组列表
|
||||
|
// String getGroupOfUrl = "http://iot.0531yun.cn/wsjc/app/GetUserDeviceGroups";
|
||||
|
// String groupString = getBody(getGroupOfUrl,userId);
|
||||
|
// JsonResponse<JSONArray> 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); |
||||
|
//获取设备运行状态 0未运行,1离线,2在线
|
||||
|
Integer deviceStatus = oneObject.getInteger("deviceStatus"); |
||||
|
//如果设备为在线状态 将数据存入到数据库
|
||||
|
if (2 == deviceStatus){ |
||||
|
environmentRecord.setEquipmentNum(oneObject.getString("deviceAddr")); |
||||
|
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(); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 温湿度登录接口 获取设备的userId 调用其他接口 |
||||
|
* @param login 账号密码 |
||||
|
* @return userId |
||||
|
*/ |
||||
|
public String getUserId(HttpDto.Login login){ |
||||
|
String requestUrl = "http://iot.0531yun.cn/app/Login"; |
||||
|
String s = RestTemplateUtil.postBody(requestUrl, login); |
||||
|
JsonResponse<JSONObject> a = JSONObject.parseObject(s, JsonResponse.class); |
||||
|
JSONObject data = a.getData(); |
||||
|
return data.getString("userId"); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//get请求
|
||||
|
public static String getBody(String url,String userId){ |
||||
|
try { |
||||
|
HttpGet get = new HttpGet(url); |
||||
|
get.setHeader("userId",userId); |
||||
|
HttpClient httpClient = HttpClients.createDefault(); |
||||
|
HttpResponse response = httpClient.execute(get); |
||||
|
return getResult(response); |
||||
|
} catch (IOException e) { |
||||
|
e.printStackTrace(); |
||||
|
} |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
public static String getResult(HttpResponse response) throws IOException { |
||||
|
// 获取状态码
|
||||
|
int code = response.getStatusLine().getStatusCode(); |
||||
|
System.out.println(code); |
||||
|
// 获取body
|
||||
|
HttpEntity entity = response.getEntity(); |
||||
|
String body = EntityUtils.toString(entity); |
||||
|
System.out.println(body); |
||||
|
// 获取头信息
|
||||
|
Header[] allHeaders = response.getAllHeaders(); |
||||
|
String headers = Arrays.toString(allHeaders); |
||||
|
System.out.println(headers); |
||||
|
|
||||
|
// 返回body
|
||||
|
return body; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,13 @@ |
|||||
|
package com.ccsens.logistics.service; |
||||
|
|
||||
|
/** |
||||
|
* @author 马 |
||||
|
*/ |
||||
|
public interface IHttpService { |
||||
|
|
||||
|
/** |
||||
|
* 获取温度和湿度 |
||||
|
*/ |
||||
|
void getTemperatureAndHumidity(); |
||||
|
|
||||
|
} |
Loading…
Reference in new issue