|
@ -0,0 +1,392 @@
|
|
|
package com.yihu.iot.service.monitorPlatform;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yihu.iot.service.common.MyJdbcTemplate;
|
|
|
import com.yihu.iot.service.device.IotPatientDeviceService;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.jw.util.http.HttpClientUtil;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
import iot.device.LocationDataVO;
|
|
|
import org.apache.http.Consts;
|
|
|
import org.apache.http.client.utils.URLEncodedUtils;
|
|
|
import org.apache.http.message.BasicNameValuePair;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by yeshijie on 2020/5/11.
|
|
|
*/
|
|
|
@Service
|
|
|
public class MonitorPlatformService {
|
|
|
|
|
|
@Value("${spring.wlyy.url}")
|
|
|
private String wlyyUrl;
|
|
|
@Value("${spring.wlyy.appid}")
|
|
|
private String appid;
|
|
|
@Value("${spring.wlyy.appsecret}")
|
|
|
private String appSecret;
|
|
|
public static Map<String,String> tokenMap = new HashMap<>();
|
|
|
|
|
|
@Autowired
|
|
|
private HttpClientUtil httpClientUtil;
|
|
|
@Autowired
|
|
|
private IotPatientDeviceService iotPatientDeviceService;
|
|
|
@Autowired
|
|
|
private MyJdbcTemplate myJdbcTemplate;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 质控情况
|
|
|
* @param page
|
|
|
* @param pageSize
|
|
|
* @param deviceSn
|
|
|
* @return
|
|
|
*/
|
|
|
public List<JSONObject> deviceOverhaulList(Integer page,Integer pageSize,String deviceSn){
|
|
|
String sql = "SELECT o.time,o.`status`,o.remark from iot_patient_device d,iot_device_overhaul o" +
|
|
|
" WHERE d.device_sn = '"+deviceSn+"' and d.id = o.patient_device_id ORDER BY o.time desc limit ?,?";
|
|
|
return myJdbcTemplate.queryJson(sql.toString(),new Object[]{(page-1)*pageSize,pageSize});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 入住情况
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject residentUserType(){
|
|
|
String sql = "SELECT IFNULL(enter_type,'0') type,COUNT(id) num from iot_company WHERE del =1 GROUP BY enter_type";
|
|
|
List<JSONObject> list = myJdbcTemplate.queryJson(sql.toString(),new Object[]{});
|
|
|
int total = 0;
|
|
|
int manufacturer = 0;//厂商
|
|
|
int supplier = 0;// 供应商
|
|
|
int agent = 0;//代理商
|
|
|
int platform = 0;//接入平台
|
|
|
for(JSONObject json:list){
|
|
|
switch (json.getString("type")){
|
|
|
case "0":
|
|
|
platform = json.getInteger("num");
|
|
|
break;
|
|
|
case "3":
|
|
|
manufacturer = json.getInteger("num");
|
|
|
break;
|
|
|
case "1":
|
|
|
supplier = json.getInteger("num");
|
|
|
break;
|
|
|
case "2":
|
|
|
agent = json.getInteger("num");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
total = manufacturer+supplier+agent+platform;
|
|
|
JSONObject json = new JSONObject();
|
|
|
json.put("total",total);
|
|
|
json.put("manufacturer",manufacturer);
|
|
|
json.put("supplier",supplier);
|
|
|
json.put("agent",agent);
|
|
|
json.put("platform",platform);
|
|
|
if(total>0){
|
|
|
DecimalFormat df = new DecimalFormat("0.00");
|
|
|
json.put("manufacturerRange", df.format(manufacturer > 0.0 ? (manufacturer/ (total * 1.0000) * 100) : 0.0) + "%");
|
|
|
json.put("supplierRange", df.format(supplier > 0.0 ? (supplier/ (total * 1.0000) * 100) : 0.0) + "%");
|
|
|
json.put("agentRange", df.format(agent > 0.0 ? (agent/ (total * 1.0000) * 100) : 0.0) + "%");
|
|
|
json.put("platformRange", df.format(platform > 0.0 ? (platform/ (total * 1.0000) * 100) : 0.0) + "%");
|
|
|
|
|
|
}else {
|
|
|
json.put("manufacturerRange","0.0%");
|
|
|
json.put("supplierRange","0.0%");
|
|
|
json.put("agentRange","0.0%");
|
|
|
json.put("platformRange","0.0%");
|
|
|
}
|
|
|
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 接口调用情况
|
|
|
* @param startTime
|
|
|
* @param endTime
|
|
|
* @param type
|
|
|
* @return
|
|
|
*/
|
|
|
public List<JSONObject> intefaceLogList(String startTime,String endTime,String type){
|
|
|
String sql = "SELECT ";
|
|
|
switch (type){
|
|
|
case "month":
|
|
|
sql+= " date_format(time,'%m') ";
|
|
|
break;
|
|
|
case "year":
|
|
|
sql+= " date_format(time,'%Y') ";
|
|
|
break;
|
|
|
case "day":
|
|
|
sql+= " date_format(time,'%j') ";
|
|
|
break;
|
|
|
case "week":
|
|
|
sql+= " date_format(time,'%u') ";
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
sql+= " date ,COUNT(*) num from iot_interface_log where 1=1 ";
|
|
|
if(StringUtils.isEmpty(startTime)){
|
|
|
sql+= " and time>='"+startTime+"'";
|
|
|
}
|
|
|
if(StringUtils.isEmpty(endTime)){
|
|
|
sql+= " and time>='"+endTime+"'";
|
|
|
}
|
|
|
|
|
|
sql+=" GROUP BY date ";
|
|
|
|
|
|
return myJdbcTemplate.queryJson(sql.toString(),new Object[]{});
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 智能设备发放
|
|
|
*/
|
|
|
public JSONArray smartDeviceDistribution(String type,String name){
|
|
|
String url = "/wlyygc/iot_monitoring/smartDeviceDistribution";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("type",type);
|
|
|
params.put("name",name);
|
|
|
String response = sendGet(url,params);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
if(json.getInteger("status")==200){
|
|
|
return json.getJSONArray("data");
|
|
|
}
|
|
|
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设备使用数据
|
|
|
* @param page
|
|
|
* @param pageSize
|
|
|
* @param deviceSn
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray deviceUseData(Integer page,Integer pageSize,String deviceSn){
|
|
|
String url = "/wlyygc/iot_monitoring/deviceUseData";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("page",page);
|
|
|
params.put("pageSize",pageSize);
|
|
|
params.put("deviceSn",deviceSn);
|
|
|
String response = sendGet(url,params);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
if(json.getInteger("status")==200){
|
|
|
return json.getJSONArray("data");
|
|
|
}
|
|
|
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设备使用数据
|
|
|
* @param patient
|
|
|
* @param deviceSn
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject deviceInfo(String deviceSn,String patient){
|
|
|
String url = "/wlyygc/iot_monitoring/deviceInfo";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("patient",patient);
|
|
|
params.put("deviceSn",deviceSn);
|
|
|
String response = sendGet(url,params);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
if(json.getInteger("status")==200){
|
|
|
return json.getJSONObject("data");
|
|
|
}
|
|
|
|
|
|
return new JSONObject();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 设备使用情况分析
|
|
|
* @param type
|
|
|
* @param name
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject deviceUsageAnalysis(String type,String name){
|
|
|
String url = "/wlyygc/iot_monitoring/deviceUsageAnalysis";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("type",type);
|
|
|
params.put("name",name);
|
|
|
String response = sendGet(url,params);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
if(json.getInteger("status")==200){
|
|
|
return json.getJSONObject("data");
|
|
|
}
|
|
|
|
|
|
return new JSONObject();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 预警信息警报
|
|
|
* @param page
|
|
|
* @param pageSize
|
|
|
* @param startTime
|
|
|
* @param endTime
|
|
|
* @param deviceType
|
|
|
* @param area
|
|
|
* @param hospital
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray warningInformationAlarm_new(Integer page,Integer pageSize,String startTime,String endTime,
|
|
|
String deviceType,String area,String hospital){
|
|
|
String url = "/wlyygc/iot_monitoring/warningInformationAlarm_new";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("page",page);
|
|
|
params.put("pageSize",pageSize);
|
|
|
params.put("startTime",startTime);
|
|
|
params.put("endTime",endTime);
|
|
|
params.put("deviceType",deviceType);
|
|
|
params.put("area",area);
|
|
|
params.put("hospital",hospital);
|
|
|
String response = sendGet(url,params);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
if(json.getInteger("status")==200){
|
|
|
return json.getJSONArray("data");
|
|
|
}
|
|
|
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 预警信息警报
|
|
|
* @param startTime
|
|
|
* @param endTime
|
|
|
* @param deviceType
|
|
|
* @param area
|
|
|
* @param hospital
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject yellowAndRedRange(String startTime,String endTime,
|
|
|
String deviceType,String area,String hospital){
|
|
|
String url = "/wlyygc/iot_monitoring/yellowAndRedRange";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("startTime",startTime);
|
|
|
params.put("endTime",endTime);
|
|
|
params.put("deviceType",deviceType);
|
|
|
params.put("area",area);
|
|
|
params.put("hospital",hospital);
|
|
|
String response = sendGet(url,params);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
if(json.getInteger("status")==200){
|
|
|
return json.getJSONObject("data");
|
|
|
}
|
|
|
return new JSONObject();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 数据筛选
|
|
|
* @param name
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray datafiltering(String name){
|
|
|
String url = "/wlyygc/iot_monitoring/datafiltering";
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("name",name);
|
|
|
String response = sendGet(url,params);
|
|
|
JSONObject json = JSONObject.parseObject(response);
|
|
|
if(json.getInteger("status")==200){
|
|
|
JSONArray jsonArray = json.getJSONArray("data");
|
|
|
for(int i=0;i<jsonArray.size();i++){
|
|
|
JSONObject data = jsonArray.getJSONObject(i);
|
|
|
String deviceSn = data.getString("deviceSn");
|
|
|
|
|
|
JSONArray jsonArray1 = new JSONArray();
|
|
|
JSONObject json1 = new JSONObject();
|
|
|
json1.put("andOr","and");
|
|
|
json1.put("field","deviceSn");
|
|
|
json1.put("condition","=");
|
|
|
json1.put("value",deviceSn);
|
|
|
jsonArray1.add(json1);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("filter",jsonArray1);
|
|
|
jsonObject.put("page",1);
|
|
|
jsonObject.put("size",5);
|
|
|
List<LocationDataVO> list = null;
|
|
|
try {
|
|
|
list = iotPatientDeviceService.findDeviceLocationsBySn(jsonObject.toString());
|
|
|
if(list.size()>0){
|
|
|
data.put("locationData",list.get(0).getLocation());
|
|
|
}else{
|
|
|
data.put("locationData","{}");
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return jsonArray;
|
|
|
}
|
|
|
|
|
|
return new JSONArray();
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 访问i健康接口,自带登录信息
|
|
|
* @param url
|
|
|
* @return
|
|
|
*/
|
|
|
private String sendGet(String url,Map<String, Object> params){
|
|
|
String response = null;
|
|
|
try{
|
|
|
params.put("accesstoken",getAccessToken());
|
|
|
List<BasicNameValuePair> jsonParams = new ArrayList<>();
|
|
|
//配置参数
|
|
|
if(params!=null) {
|
|
|
for (String key : params.keySet()) {
|
|
|
if (!StringUtils.isEmpty(String.valueOf(params.get(key))) && !"null".equals( String.valueOf(params.get(key)))) {
|
|
|
jsonParams.add(new BasicNameValuePair(key, String.valueOf(params.get(key))));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
response = httpClientUtil.get(wlyyUrl+url+"?"+ URLEncodedUtils.format(jsonParams, Consts.UTF_8),"utf-8");
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 返回accessToken
|
|
|
* @return
|
|
|
* @throws IOException
|
|
|
*/
|
|
|
private synchronized String getAccessToken(){
|
|
|
String token = "";
|
|
|
if(tokenMap.get("token")!=null){
|
|
|
token = tokenMap.get("token");
|
|
|
Long outTime = Long.valueOf(tokenMap.get("outTime"));
|
|
|
if(new Date().getTime()<outTime){
|
|
|
return token;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
try {
|
|
|
Map params = new HashMap();
|
|
|
params.put("appid", appid);
|
|
|
params.put("appSecret", appSecret);
|
|
|
String url = "/gc/accesstoken";
|
|
|
String response = httpClientUtil.httpPost(wlyyUrl + url, params);
|
|
|
JSONObject jsonObject = JSON.parseObject(response);
|
|
|
if(jsonObject.getInteger("status")==10000){
|
|
|
String accesstoken = jsonObject.getJSONObject("result").getString("accesstoken");
|
|
|
tokenMap.put("token",accesstoken);
|
|
|
tokenMap.put("outTime", jsonObject.getJSONObject("result").getLong("outTime")+"");
|
|
|
return accesstoken;
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
|
|
|
return null;
|
|
|
}
|
|
|
}
|