diff --git a/fastbee-framework/src/main/java/com/fastbee/framework/web/service/SysLoginService.java b/fastbee-framework/src/main/java/com/fastbee/framework/web/service/SysLoginService.java index 79e25c6..c38540d 100644 --- a/fastbee-framework/src/main/java/com/fastbee/framework/web/service/SysLoginService.java +++ b/fastbee-framework/src/main/java/com/fastbee/framework/web/service/SysLoginService.java @@ -1,5 +1,6 @@ package com.fastbee.framework.web.service; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.fastbee.common.constant.CacheConstants; import com.fastbee.common.constant.Constants; import com.fastbee.common.core.domain.entity.SysDept; @@ -19,6 +20,7 @@ import com.fastbee.common.utils.ip.IpUtils; import com.fastbee.framework.manager.AsyncManager; import com.fastbee.framework.manager.factory.AsyncFactory; import com.fastbee.framework.security.context.AuthenticationContextHolder; +import com.fastbee.system.mapper.SysDeptMapper; import com.fastbee.system.service.ISysConfigService; import com.fastbee.system.service.ISysDeptService; import com.fastbee.system.service.ISysUserService; @@ -59,8 +61,11 @@ public class SysLoginService { @Resource private SysPasswordService passwordService; - @Resource - private ISysDeptService sysDeptService; +// @Resource +// private ISysDeptService sysDeptService; + + @Autowired + private SysDeptMapper deptMapper; /** * 登录验证 @@ -111,7 +116,11 @@ public class SysLoginService { // throw new ServiceException("只允许终端用户登录!"); // } // } - SysDept sysDept = sysDeptService.selectDeptById(deptId); + + SysDept sysDept = new LambdaQueryChainWrapper<>(deptMapper) + .select(SysDept::getDeptUserId) + .eq(SysDept::getDeptId, deptId) + .one(); recordLoginInfo(loginUser.getUserId()); loginUser.setLanguage(language); loginUser.setDeptUserId(sysDept.getDeptUserId()); diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java index 1b4c7eb..1198feb 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceAlarmController.java @@ -1,12 +1,10 @@ package com.fastbee.data.controller.aaScreenAgricultural; -import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.fastbee.common.core.controller.BaseController; import com.fastbee.common.core.domain.AjaxResult; -import com.fastbee.deviceData.api.devlink.service.DevLinkBaseService; +import com.fastbee.deviceData.api.devlink.service.ZhanLianBaseService; import com.fastbee.deviceInfo.manager.DeviceInformationManager; import com.fastbee.iot.domain.AlertLog; import com.fastbee.iot.mapper.AlertLogMapper; @@ -26,7 +24,7 @@ import java.util.Map; public class DeviceAlarmController extends BaseController { @Autowired - private DevLinkBaseService devLinkBaseService; + private ZhanLianBaseService zhanLianBaseService; @Autowired private AlertLogMapper alertLogMapper; @@ -75,7 +73,7 @@ public class DeviceAlarmController extends BaseController { HashMap body = new HashMap<>(); body.put("method","get"); body.put("path","api/v1/product/device/list"); - JSONObject data = devLinkBaseService.baseRequest(body); + JSONObject data = zhanLianBaseService.baseRequest(body); //仁科设备 diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMeteorologyController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMeteorologyController.java index eb07746..05e85db 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMeteorologyController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMeteorologyController.java @@ -1,6 +1,7 @@ package com.fastbee.data.controller.aaScreenAgricultural; import com.fastbee.common.core.domain.AjaxResult; +import com.fastbee.deviceData.service.IDeviceRealtimedataMeteorologyService; import com.fastbee.deviceData.service.impl.DeviceRealtimedataMeteorologyServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -12,7 +13,7 @@ import org.springframework.web.bind.annotation.RestController; public class DeviceRealtimedataMeteorologyController { @Autowired - private DeviceRealtimedataMeteorologyServiceImpl deviceRealtimedataMeteorologyService; + private IDeviceRealtimedataMeteorologyService deviceRealtimedataMeteorologyService; /** * 获取最新的一条气象数据 diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMoistureController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMoistureController.java index 4a75386..2716768 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMoistureController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataMoistureController.java @@ -2,7 +2,9 @@ package com.fastbee.data.controller.aaScreenAgricultural; import com.fastbee.common.core.domain.AjaxResult; import com.fastbee.deviceData.domain.DeviceRealtimedataMoisture; +import com.fastbee.deviceData.service.IDeviceRealtimedataMoistureService; import com.fastbee.deviceData.service.impl.DeviceRealtimedataMoistureServiceImpl; +import com.fastbee.deviceInfo.service.IDeviceInformationMoistureService; import com.fastbee.deviceInfo.service.impl.DeviceInformationMoistureServiceImpl; import io.lettuce.core.dynamic.annotation.Param; import org.springframework.beans.factory.annotation.Autowired; @@ -14,21 +16,26 @@ import org.springframework.web.bind.annotation.RestController; @RestController() @RequestMapping("/moisture") public class DeviceRealtimedataMoistureController { + + @Autowired - private DeviceRealtimedataMoistureServiceImpl deviceRealtimedataMoistureServiceImpl; + private IDeviceRealtimedataMoistureService deviceRealtimedataMoistureService; @Autowired - private DeviceInformationMoistureServiceImpl deviceInformationMoistureServiceImpl; + private IDeviceInformationMoistureService deviceInformationMoistureService; + + /** * 获取最新一条墒情数据 - * @return */ @GetMapping("/weather/realtimedata") public AjaxResult getLatestWeatherRealtimedata( String deviceId) { - return AjaxResult.success(deviceRealtimedataMoistureServiceImpl.getLatestWeatherRealtimedata(deviceId)); + return AjaxResult.success(deviceRealtimedataMoistureService.getLatestWeatherRealtimedata(deviceId)); } - + /** + * 获取最新一条墒情设备下拉列表 + */ @GetMapping("/weather/pullDown") public AjaxResult getLatestWeatherPullDown() { - return AjaxResult.success(deviceInformationMoistureServiceImpl.selectDeviceInformationMoistureList(null)); + return AjaxResult.success(deviceInformationMoistureService.selectDeviceInformationMoistureList(null)); } } diff --git a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataSeedlingGrowthController.java b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataSeedlingGrowthController.java index 0a1f301..3d0fc4d 100644 --- a/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataSeedlingGrowthController.java +++ b/fastbee-open-api/src/main/java/com/fastbee/data/controller/aaScreenAgricultural/DeviceRealtimedataSeedlingGrowthController.java @@ -38,8 +38,6 @@ public class DeviceRealtimedataSeedlingGrowthController { .list(); //获取监控播放地址 list.forEach(this::setPlayUrl); - - return AjaxResult.success(list); } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkAuthorizationService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkAuthorizationService.java deleted file mode 100644 index d4d0e23..0000000 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkAuthorizationService.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.fastbee.deviceData.api.devlink.service; - -import org.springframework.stereotype.Component; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; -import java.nio.charset.StandardCharsets; - - -@Component -public class DevLinkAuthorizationService { - - private final static String ak = "suibin"; - - private final static String sk = "MZALH5WB"; - - private final static String authId = "23"; - - private final static String BASE_URL = "https://plat.developlink.cloud/prod-api/iot/data/forward"; - - - public String getBaseUrl(){ - return BASE_URL; - } - - public String getAuth(){ - String sign; -// long time = 1731480451430L; - long time = System.currentTimeMillis(); - String message = "ak=" + ak + "&authId=" + authId + "&time=" + time; - try { - SecretKeySpec keySpec = new SecretKeySpec( - sk.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); - Mac mac = Mac.getInstance("HmacSHA256"); - mac.init(keySpec); - byte[] rawHmac = mac.doFinal(message.getBytes(StandardCharsets.UTF_8)); - sign = DatatypeConverter.printHexBinary(rawHmac).toLowerCase(); -// System.out.println("d6dbca6837dcfec70954b7261eb6dfadc06fcdfdb771d86ee901ab4823bbb33c"); - System.err.println("result:"+sign); - } catch (Exception e) { - throw new RuntimeException("Unable to generate HMAC : " + e.getMessage(), e); - } - return "?ak="+ak+"&time="+time+"&sign="+sign+"&authId="+authId; - } - - public static void main(String[] args) { - DevLinkAuthorizationService de = new DevLinkAuthorizationService(); - de.getAuth(); - System.out.println(de.getBaseUrl()+de.getAuth()); - - } -} diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianAuthorizationService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianAuthorizationService.java new file mode 100644 index 0000000..fccdae6 --- /dev/null +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianAuthorizationService.java @@ -0,0 +1,82 @@ +package com.fastbee.deviceData.api.devlink.service; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import javax.xml.bind.DatatypeConverter; +import java.nio.charset.StandardCharsets; + + +@Component +@AllArgsConstructor +@Builder +@NoArgsConstructor +@Data +public class ZhanLianAuthorizationService { + + private String ak = "suibin"; + + private String sk = "MZALH5WB"; + + private String authId = "23"; + + private String endpoint = "https://plat.developlink.cloud/prod-api/iot/data/forward"; + + public String getAuthEndpoint(){ + return endpoint + getDefaultAuth(); + } + + + /** + * 鉴权参数生成 + */ + public String getDefaultAuth(){ + String sign; + long time = System.currentTimeMillis(); + String message = "ak=" + ak + "&authId=" + authId + "&time=" + time; + try { + SecretKeySpec keySpec = new SecretKeySpec( + sk.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(keySpec); + byte[] rawHmac = mac.doFinal(message.getBytes(StandardCharsets.UTF_8)); + sign = DatatypeConverter.printHexBinary(rawHmac).toLowerCase(); +// System.err.println("result:"+sign); + } catch (Exception e) { + throw new RuntimeException("签名生成失败! : " + e.getMessage(), e); + } + return "?ak="+ak+"&time="+time+"&sign="+sign+"&authId="+authId; + } + + public String getAuth(ZhanLianConfig zhanLianConfig){ + String ak = zhanLianConfig.getAk(); + String sk = zhanLianConfig.getSk(); + String authId = zhanLianConfig.getAuthId(); + String sign; + long time = System.currentTimeMillis(); + String message = "ak=" + ak + "&authId=" + authId + "&time=" + time; + try { + SecretKeySpec keySpec = new SecretKeySpec( + sk.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(keySpec); + byte[] rawHmac = mac.doFinal(message.getBytes(StandardCharsets.UTF_8)); + sign = DatatypeConverter.printHexBinary(rawHmac).toLowerCase(); + } catch (Exception e) { + throw new RuntimeException("签名生成失败! : " + e.getMessage(), e); + } + return "?ak="+ak+"&time="+time+"&sign="+sign+"&authId="+authId; + } + + + public static void main(String[] args) { + ZhanLianAuthorizationService de = new ZhanLianAuthorizationService(); + System.out.println("完整请求路径:"+de.getAuthEndpoint()); + + } +} diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkBaseService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianBaseService.java similarity index 62% rename from fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkBaseService.java rename to fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianBaseService.java index bd131d8..6286b4b 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkBaseService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianBaseService.java @@ -5,7 +5,6 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.fastbee.common.exception.ServiceException; -import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -14,38 +13,70 @@ import java.util.HashMap; import java.util.Map; @Component -public class DevLinkBaseService { +public class ZhanLianBaseService { + @Autowired - private DevLinkAuthorizationService authorizationService; + private ZhanLianAuthorizationService authorizationService; /** - * 获取设备实时数据 + * 基本请求 + * @param body 请求负载 + * @return 请求结果 data + */ + public JSONObject baseRequest(Map body){ + String jsonStr = JSONUtil.toJsonStr(body); + String respStr = HttpUtil.post(authorizationService.getAuthEndpoint(), jsonStr); + JSONObject resp = JSONUtil.parseObj(respStr); + if(!resp.get("code").toString().equals("200")){ + throw new ServiceException(resp.get("message").toString()); + } + return resp.getJSONObject("data"); + } + + + + + /** + * 请求设备实时数据 * @param deviceId 设备id * @return 实时数据 */ - public Map getMetDeviceRealData(String deviceId){ - String result = requestDeviceData(deviceId); + private JSONObject requestDeviceData(String deviceId) { + //构建请求体 + HashMap body = new HashMap<>(); + body.put("method","get"); + body.put("path","api/v1/product/device/run_status"); + Map params=new HashMap<>(); + params.put("id", deviceId); + body.put("params",params); + return baseRequest(body); + } + + + + /** + * 根据设备id请求数据并解析设备实时数据为易于存储的map键值对 + * @param deviceId 设备id + * @return 实时数据 + */ + public Map getDeviceRealTimeData(String deviceId){ //解析返回数据 - JSONObject jsonObject = JSONUtil.parseObj(result); - Object data = jsonObject.get("data"); + JSONObject data = requestDeviceData(deviceId); //获取设备状态 JSONObject jsonObjectData = JSONUtil.parseObj(data); Object status = jsonObjectData.get("status"); -// System.err.println("status:"+status); //获取设备属性以及实时数据值 Object properties = jsonObjectData.get("properties"); //获取数据上报时间 String time = jsonObjectData.get("lastOnlineTime").toString(); JSONArray propertiesArray = JSONUtil.parseArray(properties); - DeviceRealtimedataMeteorology realData = new DeviceRealtimedataMeteorology(); //获取设备各项属性实时数据 //设备属性与值建立map Map propertiesMap = new HashMap<>(); propertiesArray.forEach(p -> { Object property = JSONUtil.parseObj(p).get("property"); JSONObject propertyMap = JSONUtil.parseObj(property); -// System.err.println("propertyMap:"+propertyMap); //属性名称 String name = propertyMap.get("name").toString(); //属性key @@ -59,71 +90,32 @@ public class DevLinkBaseService { //TODO 属性值历史数据,是否需要 Object list = JSONUtil.parseObj(p).get("list"); -// System.err.print("name:"+name); -// System.err.print("key:"+key); -// System.err.println("------------value:"+value); //建立属性-值映射关系 propertiesMap.put(key,value); -// saveRealData(key,value,realData); + }); propertiesMap.put("status",status.toString()); propertiesMap.put("deviceId",deviceId); propertiesMap.put("realTime",time); - return propertiesMap; } - /** - * 请求设备实时数据 - * @param deviceId 设备id - * @return 实时数据 - */ - private String requestDeviceData(String deviceId) { - DevLinkAuthorizationService authorization = new DevLinkAuthorizationService(); - //构建请求体 - HashMap body = new HashMap<>(); - body.put("method","get"); - body.put("path","api/v1/product/device/run_status"); - Map params=new HashMap<>(); - params.put("id", deviceId); - body.put("params",params); - String jsonStr = JSONUtil.toJsonStr(body); - System.err.println(authorization.getBaseUrl() + authorization.getAuth()); - return HttpUtil.post(authorization.getBaseUrl() + authorization.getAuth(), jsonStr); - } - /** - * 基本请求 - * @return 请求结果data - */ - public JSONObject baseRequest(Map body){ - DevLinkAuthorizationService authorization = new DevLinkAuthorizationService(); - String jsonStr = JSONUtil.toJsonStr(body); - System.err.println(authorization.getBaseUrl() + authorization.getAuth()); - String respStr = HttpUtil.post(authorization.getBaseUrl() + authorization.getAuth(), jsonStr); - JSONObject resp = JSONUtil.parseObj(respStr); - if(!resp.get("code").toString().equals("200")){ - throw new ServiceException(resp.get("message").toString()); - } - return resp.getJSONObject("data"); - } + + + public BigDecimal toBigDecimalValue(String str) { - if (str == null||"".equals(str)) { + if (str == null|| str.isEmpty()) { return null; } return new BigDecimal(str); } public Long toLongValue(String str) { - if (str == null||"".equals(str)) { + if (str == null|| str.isEmpty()) { return null; } return Long.parseLong(str); } - public static void main(String[] args) { - DevLinkBaseService devLinkBaseService = new DevLinkBaseService(); - Map metDeviceRealData = devLinkBaseService.getMetDeviceRealData("3270"); -// System.err.println(metDeviceRealData); - } } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianConfig.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianConfig.java new file mode 100644 index 0000000..0743b83 --- /dev/null +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianConfig.java @@ -0,0 +1,21 @@ +package com.fastbee.deviceData.api.devlink.service; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@Builder +@NoArgsConstructor +@Data +public class ZhanLianConfig { + + private String ak; + + private String sk; + + private String authId; + + private String endpoint; +} diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkCountService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianCountService.java similarity index 77% rename from fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkCountService.java rename to fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianCountService.java index 6e44bf9..fd1f904 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkCountService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianCountService.java @@ -4,9 +4,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service -public class DevLinkCountService { +public class ZhanLianCountService { @Autowired - private DevLinkAuthorizationService authorizationService; + private ZhanLianAuthorizationService authorizationService; /** diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMetDataService.java similarity index 91% rename from fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java rename to fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMetDataService.java index d4538c9..9816d95 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMetDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMetDataService.java @@ -17,10 +17,10 @@ import java.util.Map; * devLink气象设备数据服务 */ @Service -public class DevLinkMetDataService extends DevLinkBaseService { +public class ZhanLianMetDataService extends ZhanLianBaseService { @Autowired - private DevLinkAuthorizationService authorizationService; + private ZhanLianAuthorizationService authorizationService; @Autowired private DeviceRealtimedataMeteorologyMapper deviceRealtimedataMeteorologyMapper; @@ -59,8 +59,8 @@ public class DevLinkMetDataService extends DevLinkBaseService { } public static void main(String[] args) { - DevLinkMetDataService devLinkMetDataService = new DevLinkMetDataService(); - Map metDeviceRealData = devLinkMetDataService.getMetDeviceRealData("3269"); + ZhanLianMetDataService devLinkMetDataService = new ZhanLianMetDataService(); + Map metDeviceRealData = devLinkMetDataService.getDeviceRealTimeData("3269"); devLinkMetDataService.setData(metDeviceRealData); } } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMiaoQingDataService.java similarity index 92% rename from fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java rename to fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMiaoQingDataService.java index fe78fb0..d937d4b 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMiaoQingDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMiaoQingDataService.java @@ -16,9 +16,9 @@ import java.util.Map; * devLink苗情设备数据服务 */ @Service -public class DevLinkMiaoQingDataService extends DevLinkBaseService { +public class ZhanLianMiaoQingDataService extends ZhanLianBaseService { @Autowired - private DevLinkAuthorizationService authorizationService; + private ZhanLianAuthorizationService authorizationService; @Autowired private DeviceRealtimedataMiaoqingMapper deviceRealtimedataMiaoqingMapper; public DeviceRealtimedataMiaoqing setData(Map propertiesMap){ @@ -61,8 +61,8 @@ public class DevLinkMiaoQingDataService extends DevLinkBaseService { } public static void main(String[] args) { - DevLinkMiaoQingDataService devLinkMiaoQingDataService = new DevLinkMiaoQingDataService(); - Map metDeviceRealData = devLinkMiaoQingDataService.getMetDeviceRealData("3275"); + ZhanLianMiaoQingDataService devLinkMiaoQingDataService = new ZhanLianMiaoQingDataService(); + Map metDeviceRealData = devLinkMiaoQingDataService.getDeviceRealTimeData("3275"); devLinkMiaoQingDataService.setData(metDeviceRealData); } } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMoistureDataService.java similarity index 93% rename from fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java rename to fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMoistureDataService.java index 74b43c3..e3476be 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkMoistureDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianMoistureDataService.java @@ -16,9 +16,9 @@ import java.util.Map; * devLink墒情设备数据服务 */ @Service -public class DevLinkMoistureDataService extends DevLinkBaseService { +public class ZhanLianMoistureDataService extends ZhanLianBaseService { @Autowired - private DevLinkAuthorizationService authorizationService; + private ZhanLianAuthorizationService authorizationService; @Autowired private DeviceRealtimedataMoistureMapper moistureMapper; //封装数据 @@ -74,8 +74,8 @@ public class DevLinkMoistureDataService extends DevLinkBaseService { } public static void main(String[] args) { - DevLinkMoistureDataService devLinkMoistureDataService = new DevLinkMoistureDataService(); - Map metDeviceRealData = devLinkMoistureDataService.getMetDeviceRealData("3270"); + ZhanLianMoistureDataService devLinkMoistureDataService = new ZhanLianMoistureDataService(); + Map metDeviceRealData = devLinkMoistureDataService.getDeviceRealTimeData("3270"); devLinkMoistureDataService.setData(metDeviceRealData); } } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianPhotovoltaicDataService.java similarity index 94% rename from fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java rename to fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianPhotovoltaicDataService.java index f73942e..5824db0 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/DevLinkPhotovoltaicDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/devlink/service/ZhanLianPhotovoltaicDataService.java @@ -16,9 +16,9 @@ import java.util.Map; * devLink光伏设备数据服务 */ @Service -public class DevLinkPhotovoltaicDataService extends DevLinkBaseService { +public class ZhanLianPhotovoltaicDataService extends ZhanLianBaseService { @Autowired - private DevLinkAuthorizationService authorizationService; + private ZhanLianAuthorizationService authorizationService; @Autowired private DeviceRealtimedataPhotovoltaicMapper photovoltaicMapper; //封装数据 @@ -84,8 +84,8 @@ public class DevLinkPhotovoltaicDataService extends DevLinkBaseService { return photovoltaic; } public static void main(String[] args) { - DevLinkPhotovoltaicDataService devLinkPhotovoltaicDataService = new DevLinkPhotovoltaicDataService(); - Map metDeviceRealData = devLinkPhotovoltaicDataService.getMetDeviceRealData("3276"); + ZhanLianPhotovoltaicDataService devLinkPhotovoltaicDataService = new ZhanLianPhotovoltaicDataService(); + Map metDeviceRealData = devLinkPhotovoltaicDataService.getDeviceRealTimeData("3276"); devLinkPhotovoltaicDataService.setData(metDeviceRealData); } diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java index c35d1c7..419ac31 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeDeviceDataService.java @@ -86,14 +86,18 @@ public class RenkeDeviceDataService { JSONArray jsonArray = JSONUtil.parseArray(respBody1.get("data")); JSONObject entries = JSONUtil.parseObj(jsonArray.get(0)); - //获取拍照图片 - Object imagesUrl = entries .get("imagesUrl"); - //获取虫情分析后的图片地址 - Object analyseCoordUrl = entries .get("analyseCoordUrl"); - - deviceRealtimedataWorms.setPestPhotos(analyseCoordUrl.toString()); - deviceRealtimedataWorms.setCamera(imagesUrl.toString()); + //获取害虫种类以及数量 + JSONArray analyseData = JSONUtil.parseArray(entries.get("analyseData")); + //有害虫时保存 + if(!analyseData.isEmpty()){ + //获取拍照图片 + Object imagesUrl = entries .get("imagesUrl"); + //获取虫情分析后的图片地址 + Object analyseCoordUrl = entries .get("analyseCoordUrl"); + deviceRealtimedataWorms.setPestPhotos(analyseCoordUrl.toString()); + deviceRealtimedataWorms.setCamera(imagesUrl.toString()); + } deviceRealtimedataWorms.setSaveTime(DateUtils.getNowDate()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeMetDeviceService.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeMetDeviceService.java index e018fdd..f747f70 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeMetDeviceService.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/api/renke/service/RenkeMetDeviceService.java @@ -21,8 +21,6 @@ public class RenkeMetDeviceService { private RenKeAuthorizationService authorizationService; - - /** * 获取气象设备全部信息 * @param deviceStr 设备地址,支持多个用英文逗号分隔 diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMeteorologyServiceImpl.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMeteorologyServiceImpl.java index d6d5dba..361449e 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMeteorologyServiceImpl.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMeteorologyServiceImpl.java @@ -1,9 +1,6 @@ package com.fastbee.deviceData.service.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -111,9 +108,11 @@ public class DeviceRealtimedataMeteorologyServiceImpl implements IDeviceRealtime queryWrapper.orderByDesc("real_time"); queryWrapper.last("limit 1"); DeviceRealtimedataMeteorology meteorology = deviceRealtimedataMeteorologyMapper.selectOne(queryWrapper); - List> mapList = new ArrayList<>(); - Map map = new HashMap(); + List devicePropertiesList = new ArrayList<>(); + if(Objects.isNull(meteorology)){ + return devicePropertiesList; + } devicePropertiesList.add(DeviceProperties.builder().name("空气温度").value(meteorology.getAirTemp().toString()).unit("°C").build()); devicePropertiesList.add(DeviceProperties.builder().name("空气湿度").value(meteorology.getAirHumi().toString()).unit("°C").build()); devicePropertiesList.add(DeviceProperties.builder().name("风速").value(meteorology.getWindSpeed().toString()).unit("m/s").build()); diff --git a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMoistureServiceImpl.java b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMoistureServiceImpl.java index 8a834d6..278b3b2 100644 --- a/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMoistureServiceImpl.java +++ b/fastbee-service/fastbee-device-service/src/main/java/com/fastbee/deviceData/service/impl/DeviceRealtimedataMoistureServiceImpl.java @@ -1,9 +1,6 @@ package com.fastbee.deviceData.service.impl; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fastbee.deviceData.domain.dto.DeviceProperties; @@ -101,14 +98,17 @@ public class DeviceRealtimedataMoistureServiceImpl implements IDeviceRealtimedat * @return */ public List getLatestWeatherRealtimedata(String deviceId){ + System.err.println(deviceId); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.orderByDesc("real_time"); queryWrapper.last("limit 1"); queryWrapper.eq("device_id",deviceId); DeviceRealtimedataMoisture moisture = deviceRealtimedataMoistureMapper.selectOne(queryWrapper); - List> mapList = new ArrayList<>(); - Map map = new HashMap(); + List devicePropertiesList = new ArrayList<>(); + if(Objects.isNull(moisture)){ + return devicePropertiesList; + } devicePropertiesList.add(DeviceProperties.builder().name("土壤温度").value(moisture.getSoilTemp().toString()).unit("°C").build()); devicePropertiesList.add(DeviceProperties.builder().name("土壤湿度").value(moisture.getSoilHumi().toString()).unit("%").build()); devicePropertiesList.add(DeviceProperties.builder().name("土壤EC").value(moisture.getSoilEc().toString()).unit("MS/cm").build()); diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/strategy/DeviceRealTimeDataStrategy.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/strategy/DeviceRealTimeDataStrategy.java new file mode 100644 index 0000000..352c125 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/strategy/DeviceRealTimeDataStrategy.java @@ -0,0 +1,8 @@ +package com.fastbee.iot.strategy; + +import cn.hutool.json.JSONObject; +import java.util.List; +public interface DeviceRealTimeDataStrategy { + + List getDeviceRealTimeData(String deviceId); +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/strategy/impl/ZhanLianDeviceRealTimeDataStrategy.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/strategy/impl/ZhanLianDeviceRealTimeDataStrategy.java new file mode 100644 index 0000000..cf2693e --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/strategy/impl/ZhanLianDeviceRealTimeDataStrategy.java @@ -0,0 +1,130 @@ +package com.fastbee.iot.strategy.impl; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; + + +import com.fastbee.deviceData.api.devlink.service.ZhanLianConfig; +import com.fastbee.iot.domain.Device; +import com.fastbee.iot.mapper.DeviceMapper; +import com.fastbee.iot.strategy.DeviceRealTimeDataStrategy; +import com.fastbee.iot.zhanlian.ZhanLianAuthorizationService; +import com.fastbee.iot.zhanlian.ZhanLianBaseService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +public class ZhanLianDeviceRealTimeDataStrategy implements DeviceRealTimeDataStrategy { + + + + @Autowired + private DeviceMapper deviceMapper; + + @Override + public List getDeviceRealTimeData(String deviceId) { + + //根据产品查询对应设备 + Device device = new LambdaQueryChainWrapper<>(deviceMapper) + .select(Device::getDeviceId,Device::getSerialNumber,Device::getDevParams) + .eq(Device::getSerialNumber,deviceId) + .eq(Device::getDelFlag, 0) + .one(); + if(device == null){ + throw new RuntimeException("展连设备不存在!设备id为:"+deviceId); + } + + //解析设备对接参数 + String devParams = device.getDevParams(); + if(StringUtils.isBlank(devParams)){ + throw new RuntimeException("展连设备对接参数为空!设备id为:"+device.getDeviceId()); + } + JSONArray paramArray = JSONUtil.parseArray(devParams); + //解析参数列表建立map + Map params = new HashMap<>(); + //解析参数列表建立map + paramArray.forEach(paramObj->{ + JSONObject entries = JSONUtil.parseObj(paramObj); + Object key = entries.get("key"); + Object value = entries.get("value"); + params.put(key.toString(),value.toString()); + }); + + + //获取请求地址 + String authEndpoint = ZhanLianAuthorizationService.getAuthEndpoint(ZhanLianConfig.builder() + .ak(params.get("ak")) + .sk(params.get("sk")) + .authId( params.get("authId")) + .endpoint("https://plat.developlink.cloud/prod-api/iot/data/forward") + .build()); + + //请求参数构建 + HashMap reqBody = new HashMap<>(); + reqBody.put("method","get"); + reqBody.put("path","api/v1/product/device/run_status"); + Map param =new HashMap<>(); + param.put("id", deviceId); + reqBody.put("params",params); + + ZhanLianBaseService zhanLianBaseService = new ZhanLianBaseService(); + //请求设备 + JSONObject respObj = zhanLianBaseService.baseRequest(reqBody, authEndpoint); + //解析设备实时数据 + Map deviceRealTimeData = getDeviceRealTimeData(respObj, deviceId); + //映射为数据存储对象 + return null; + } + + /** + * 根据设备id请求数据并解析设备实时数据为易于存储的map键值对 + * @param deviceId 设备id + * @return 实时数据 + */ + public Map getDeviceRealTimeData(JSONObject data ,String deviceId){ + + //获取设备状态 + JSONObject jsonObjectData = JSONUtil.parseObj(data); + Object status = jsonObjectData.get("status"); + //获取设备属性以及实时数据值 + Object properties = jsonObjectData.get("properties"); + //获取数据上报时间 + String time = jsonObjectData.get("lastOnlineTime").toString(); + JSONArray propertiesArray = JSONUtil.parseArray(properties); + //获取设备各项属性实时数据 + //设备属性与值建立map + Map propertiesMap = new HashMap<>(); + propertiesArray.forEach(p -> { + Object property = JSONUtil.parseObj(p).get("property"); + JSONObject propertyMap = JSONUtil.parseObj(property); + //属性名称 + String name = propertyMap.get("name").toString(); + //属性key + String key = propertyMap.get("key").toString(); + //属性值 + Object value1 = JSONUtil.parseObj(p).get("value"); + String value="" ; + if(value1!=null){ + value = value1.toString(); + } + + //TODO 属性值历史数据,是否需要 + Object list = JSONUtil.parseObj(p).get("list"); + //建立属性-值映射关系 + propertiesMap.put(key,value); + + }); + propertiesMap.put("status",status.toString()); + propertiesMap.put("deviceId",deviceId); + propertiesMap.put("realTime",time); + return propertiesMap; + } + +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java index e916d92..8966bf8 100644 --- a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/timer/DeviceDateTask.java @@ -1,28 +1,16 @@ package com.fastbee.iot.timer; -import cn.hutool.core.date.DateTime; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; - -import cn.hutool.json.JSONArray; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.fastbee.deviceData.api.devlink.service.DevLinkMetDataService; -import com.fastbee.deviceData.api.devlink.service.DevLinkMiaoQingDataService; -import com.fastbee.deviceData.api.devlink.service.DevLinkMoistureDataService; -import com.fastbee.deviceData.api.devlink.service.DevLinkPhotovoltaicDataService; -import com.fastbee.deviceData.api.renke.constant.RenKeDeviceTypeConstant; -import com.fastbee.deviceData.api.renke.service.RenKeAuthorizationService; +import com.fastbee.deviceData.api.devlink.service.ZhanLianMetDataService; +import com.fastbee.deviceData.api.devlink.service.ZhanLianMiaoQingDataService; +import com.fastbee.deviceData.api.devlink.service.ZhanLianMoistureDataService; +import com.fastbee.deviceData.api.devlink.service.ZhanLianPhotovoltaicDataService; import com.fastbee.deviceData.api.renke.service.RenkeDeviceDataService; import com.fastbee.deviceData.domain.*; import com.fastbee.deviceData.mapper.*; -import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService; -import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl; -import org.apache.commons.lang3.StringUtils; +import com.fastbee.iot.mapper.DeviceMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; /** @@ -38,6 +26,9 @@ public class DeviceDateTask { // @Autowired // private ThreadPoolTaskExecutor taskExecutor; + @Autowired + private DeviceMapper deviceMapper; + @Autowired private DeviceRealtimedataWormsMapper deviceRealtimedataWormsMapper; @@ -57,16 +48,16 @@ public class DeviceDateTask { private RenkeDeviceDataService wormsService; //虫情设备数据获取 @Autowired - private DevLinkMetDataService metDataService; //气象设备数据获取 + private ZhanLianMetDataService metDataService; //气象设备数据获取 @Autowired - private DevLinkMoistureDataService moistureDataService; //墒情设备数据获取 + private ZhanLianMoistureDataService moistureDataService; //墒情设备数据获取 @Autowired - private DevLinkPhotovoltaicDataService photovoltaicDataService; //光伏设备数据获取 + private ZhanLianPhotovoltaicDataService photovoltaicDataService; //光伏设备数据获取 @Autowired - private DevLinkMiaoQingDataService miaoQingDataService; //苗情设备数据获取 + private ZhanLianMiaoQingDataService miaoQingDataService; //苗情设备数据获取 @@ -76,6 +67,7 @@ public class DeviceDateTask { * 获取虫情设备实时数据并保存 */ public void getWormsDeviceRealtimeData() throws Exception{ + DeviceRealtimedataWorms deviceRealtimedataWorms = wormsService.setData("1017240042"); int i = deviceRealtimedataWormsMapper.insert(deviceRealtimedataWorms); if (i<1){ @@ -87,7 +79,7 @@ public class DeviceDateTask { * 获取气象设备实时数据并保存 */ public void getDevLinkMetDeviceRealtimeData() throws Exception{ - DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = metDataService.setData(metDataService.getMetDeviceRealData("3269")); + DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = metDataService.setData(metDataService.getDeviceRealTimeData("3269")); int i = deviceRealtimedataMeteorologyMapper.insert(deviceRealtimedataMeteorology); if (i<1){ System.out.println("插入数据失败!"); @@ -98,7 +90,7 @@ public class DeviceDateTask { * 获取墒情设备实时数据并保存 */ public void getDevLinkMoistureDeviceRealtimeData() throws Exception{ - DeviceRealtimedataMoisture deviceRealtimedataMoisture = moistureDataService.setData(moistureDataService.getMetDeviceRealData("3270")); + DeviceRealtimedataMoisture deviceRealtimedataMoisture = moistureDataService.setData(moistureDataService.getDeviceRealTimeData("3270")); int i = deviceRealtimedataMoistureMapper.insert(deviceRealtimedataMoisture); if (i<1) System.out.println("插入数据失败!"); @@ -108,7 +100,7 @@ public class DeviceDateTask { * 获取光伏设备实时数据并保存 */ public void getDevLinkPhotovoltaicDeviceRealtimeData() throws Exception{ - DeviceRealtimedataPhotovoltaic deviceRealtimedataPhotovoltaic = photovoltaicDataService.setData(photovoltaicDataService.getMetDeviceRealData("3276")); + DeviceRealtimedataPhotovoltaic deviceRealtimedataPhotovoltaic = photovoltaicDataService.setData(photovoltaicDataService.getDeviceRealTimeData("3276")); int i = deviceRealtimedataPhotovoltaicMapper.insert(deviceRealtimedataPhotovoltaic); if (i<1) System.out.println("插入数据失败!"); @@ -118,7 +110,7 @@ public class DeviceDateTask { * 获取苗情设备实时数据并保存 */ public void getDevLinkMiaoqingDeviceRealtimeData() throws Exception{ - DeviceRealtimedataMiaoqing deviceRealtimedataMiaoqing = miaoQingDataService.setData(miaoQingDataService.getMetDeviceRealData("3275")); + DeviceRealtimedataMiaoqing deviceRealtimedataMiaoqing = miaoQingDataService.setData(miaoQingDataService.getDeviceRealTimeData("3275")); int i = deviceRealtimedataMiaoqingMapper.insert(deviceRealtimedataMiaoqing); if (i<1) System.out.println("插入数据失败!"); diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianAuthorizationService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianAuthorizationService.java new file mode 100644 index 0000000..5206f24 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianAuthorizationService.java @@ -0,0 +1,49 @@ +package com.fastbee.iot.zhanlian; + +import com.fastbee.deviceData.api.devlink.service.ZhanLianConfig; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.stereotype.Component; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; +import javax.xml.bind.DatatypeConverter; +import java.nio.charset.StandardCharsets; + + + +@AllArgsConstructor +@Builder + +@Data +public class ZhanLianAuthorizationService { + + + public static String getAuthEndpoint(ZhanLianConfig zhanLianConfig){ + String ak = zhanLianConfig.getAk(); + String sk = zhanLianConfig.getSk(); + String authId = zhanLianConfig.getAuthId(); + String endpoint = zhanLianConfig.getEndpoint(); + String sign; + long time = System.currentTimeMillis(); + String message = "ak=" + ak + "&authId=" + authId + "&time=" + time; + try { + SecretKeySpec keySpec = new SecretKeySpec( + sk.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); + Mac mac = Mac.getInstance("HmacSHA256"); + mac.init(keySpec); + byte[] rawHmac = mac.doFinal(message.getBytes(StandardCharsets.UTF_8)); + sign = DatatypeConverter.printHexBinary(rawHmac).toLowerCase(); + } catch (Exception e) { + throw new RuntimeException("签名生成失败! : " + e.getMessage(), e); + } + return endpoint+"?ak="+ak+"&time="+time+"&sign="+sign+"&authId="+authId; + } + + + public static void main(String[] args) { + + } +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianBaseService.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianBaseService.java new file mode 100644 index 0000000..f1bdd02 --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianBaseService.java @@ -0,0 +1,55 @@ +package com.fastbee.iot.zhanlian; + +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.fastbee.common.exception.ServiceException; +import com.fastbee.deviceData.api.devlink.service.ZhanLianAuthorizationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + + +public class ZhanLianBaseService { + + /** + * 基本请求 + * @param body 请求负载 + * @return 请求结果 data + */ + public JSONObject baseRequest(Map body,String url){ + String jsonStr = JSONUtil.toJsonStr(body); + String respStr = HttpUtil.post(url,jsonStr); + JSONObject resp = JSONUtil.parseObj(respStr); + if(!resp.get("code").toString().equals("200")){ + throw new ServiceException(resp.get("message").toString()); + } + return resp.getJSONObject("data"); + } + + + + + + + + + + public BigDecimal toBigDecimalValue(String str) { + if (str == null|| str.isEmpty()) { + return null; + } + return new BigDecimal(str); + } + public Long toLongValue(String str) { + if (str == null|| str.isEmpty()) { + return null; + } + return Long.parseLong(str); + } + +} diff --git a/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianConfig.java b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianConfig.java new file mode 100644 index 0000000..681ceef --- /dev/null +++ b/fastbee-service/fastbee-iot-service/src/main/java/com/fastbee/iot/zhanlian/ZhanLianConfig.java @@ -0,0 +1,21 @@ +package com.fastbee.iot.zhanlian; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@Builder +@NoArgsConstructor +@Data +public class ZhanLianConfig { + + private String ak; + + private String sk; + + private String authId; + + private String endpoint; +} diff --git a/fastbee-service/fastbee-project-service/src/main/java/com/fastbee/project/service/impl/ProjectServiceImpl.java b/fastbee-service/fastbee-project-service/src/main/java/com/fastbee/project/service/impl/ProjectServiceImpl.java index c3576fd..64fbf66 100644 --- a/fastbee-service/fastbee-project-service/src/main/java/com/fastbee/project/service/impl/ProjectServiceImpl.java +++ b/fastbee-service/fastbee-project-service/src/main/java/com/fastbee/project/service/impl/ProjectServiceImpl.java @@ -129,7 +129,11 @@ public class ProjectServiceImpl implements IProjectService @Transactional(rollbackFor = Exception.class) public int insertProject(Project project) { + System.err.println("项目类型:"+project.getType()); //TODO 参数校验 + if (Objects.isNull(project.getType())||!ProjectTypeConstant.isValidProjectType(project.getType())) { + throw new ServiceException("项目类型不能为空或者非法!"); + } //获取当前时间 Date nowDate = DateUtils.getNowDate(); //处理项目行政区划 @@ -152,7 +156,6 @@ public class ProjectServiceImpl implements IProjectService newSysDept.setAdministrativeLevel(3); //设置机构所属项目id - //设置机构型行政区域信息 newSysDept.setAdministrativeAreaCode(Objects.nonNull(project.getAdministrativeAreaCode())?project.getAdministrativeAreaCode():null); newSysDept.setAdministrativeArea(Objects.nonNull(project.getAdministrativeArea())?project.getAdministrativeArea():null); @@ -175,9 +178,7 @@ public class ProjectServiceImpl implements IProjectService .map(SysMenu::getMenuId) .toArray(Long[]::new); //根据项目类型过滤菜单 - if (!Objects.nonNull(project.getType())||ProjectTypeConstant.isValidProjectType(project.getType())) { - throw new ServiceException("项目类型不能为空或者非法!"); - } + if (Objects.equals(project.getType(),ProjectTypeConstant.WATER)) { List menuList=Arrays.asList(menuIdList); diff --git a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDeptServiceImpl.java b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDeptServiceImpl.java index ad526fe..6c0d7a7 100644 --- a/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDeptServiceImpl.java +++ b/fastbee-service/fastbee-system-service/src/main/java/com/fastbee/system/service/impl/SysDeptServiceImpl.java @@ -3,6 +3,7 @@ package com.fastbee.system.service.impl; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONException; import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.fastbee.common.annotation.DataScope; import com.fastbee.common.constant.UserConstants; import com.fastbee.common.core.domain.TreeSelect; @@ -133,7 +134,7 @@ public class SysDeptServiceImpl implements ISysDeptService * @param roleId 角色ID * @return 选中部门列表 */ - @Cacheable(value = "dept", key = "#root.methodName + '_' + #roleId", unless = "#result == null") +// @Cacheable(value = "dept", key = "#root.methodName + '_' + #roleId", unless = "#result == null") @Override public List selectDeptListByRoleId(Long roleId) { @@ -151,7 +152,13 @@ public class SysDeptServiceImpl implements ISysDeptService @Override public SysDept selectDeptById(Long deptId) { - return deptMapper.selectDeptById(deptId); +// return deptMapper.selectDeptById(deptId); + SysDept sysDept = new LambdaQueryChainWrapper<>(deptMapper) + .select(SysDept::getDeptUserId) + .eq(SysDept::getDeptId, deptId) + .one(); + System.err.println(sysDept); + return sysDept; } /**