| src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/common/enums/ApproveTypeEnum.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/common/utils/http/HttpUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/home/controller/HomeController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/http/service/RealTimeEnergyConsumptionService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ruoyi/approve/pojo/ApproveProcess.java
@@ -131,6 +131,9 @@ */ private Integer approveType; @TableField(exist = false) private String approveTypeName; /** * 审æ¹å¤æ³¨ */ src/main/java/com/ruoyi/common/enums/ApproveTypeEnum.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,42 @@ package com.ruoyi.common.enums; import lombok.AllArgsConstructor; import lombok.Getter; /** * <br> * 审æ¹ç±»åæä¸¾ * </br> * * @author deslrey * @version 1.0 * @since 2026/1/27 17:10 */ @Getter @AllArgsConstructor public enum ApproveTypeEnum { PUBLIC_AFFAIRS(1, "å ¬åºç®¡ç"), LEAVE(2, "请å管ç"), BUSINESS_TRIP(3, "åºå·®ç®¡ç"), REIMBURSEMENT(4, "æ¥é管ç"), PURCHASE(5, "éè´å®¡æ¹"), QUOTATION(6, "æ¥ä»·å®¡æ¹"), DELIVERY(7, "å货审æ¹"); private final Integer code; private final String name; /** * æ ¹æ® code è·å对åºçåç§° */ public static String getNameByCode(Integer code) { if (code == null) return null; for (ApproveTypeEnum type : ApproveTypeEnum.values()) { if (type.getCode().equals(code)) { return type.getName(); } } return ""; } } src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -290,4 +290,93 @@ return true; } } /** * åæå®URLåéJSONæ ¼å¼çPOST请æ±ï¼æ¨èéç¨æ¹æ³ï¼é»è®¤UTF-8ç¼ç ï¼ * @param url åé请æ±çURL * @param jsonParam JSONæ ¼å¼ç请æ±åæ°ï¼ç´æ¥ä¼ å ¥JSONåç¬¦ä¸²ï¼ * @return è¿ç¨èµæºçååºç»æ */ public static String sendPostJson(String url, String jsonParam) { // éè½½è°ç¨ï¼é»è®¤ä½¿ç¨UTF-8ç¼ç ï¼Content-Typeåºå®ä¸ºapplication/json return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),null); } /** * åæå®URLåéJSONæ ¼å¼çPOST请æ±ï¼èªå®ä¹ç¼ç ï¼çµæ´»éé ç¹æ®åºæ¯ï¼ * @param url åé请æ±çURL * @param jsonParam JSONæ ¼å¼ç请æ±åæ°ï¼ç´æ¥ä¼ å ¥JSONåç¬¦ä¸²ï¼ * @param headerValue 请æ±å¤´çå¼ * @return è¿ç¨èµæºçååºç»æ */ public static String sendPostJson(String url, String jsonParam, String headerValue) { // éè½½è°ç¨ï¼é»è®¤ä½¿ç¨UTF-8ç¼ç ï¼Content-Typeåºå®ä¸ºapplication/json return sendPostJson(url, jsonParam, StandardCharsets.UTF_8.name(),headerValue); } /** * åæå®URLåéJSONæ ¼å¼çPOST请æ±ï¼èªå®ä¹ç¼ç ï¼çµæ´»éé ç¹æ®åºæ¯ï¼ * @param url åé请æ±çURL * @param jsonParam JSONæ ¼å¼ç请æ±åæ°ï¼ç´æ¥ä¼ å ¥JSONåç¬¦ä¸²ï¼ * @param charset ç¼ç ç±»åï¼å¦UTF-8ãGBKçï¼å»ºè®®ä½¿ç¨StandardCharsets常éï¼ * @return è¿ç¨èµæºçååºç»æ */ public static String sendPostJson(String url, String jsonParam, String charset,String headerValue) { PrintWriter out = null; BufferedReader in = null; StringBuilder result = new StringBuilder(); try { log.info("sendPostJson - {}", url); URL realUrl = new URL(url); URLConnection conn = realUrl.openConnection(); // 1. 设置请æ±å¤´ï¼åºå®Content-Type为application/jsonï¼éé JSONä¼ åè§è conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"); conn.setRequestProperty("Content-Type", MediaType.APPLICATION_JSON_VALUE); // æ ¸å¿ï¼JSONä¸å±Content-Type conn.setRequestProperty("Accept-Charset", charset); // 1.1 设置请æ±å¤´ï¼å¯éï¼æ ¹æ®å®é éè¦è®¾ç½® if(StringUtils.isNotEmpty(headerValue)){ conn.setRequestProperty("Authorization", headerValue); } // 2. å¼å¯è¾å ¥è¾åºæµï¼POST请æ±å¿ é¡»ï¼ conn.setDoOutput(true); conn.setDoInput(true); // 3. åå ¥JSONåæ°ï¼ä½¿ç¨æå®ç¼ç ï¼é¿å 䏿乱ç ï¼ out = new PrintWriter(conn.getOutputStream(), true); out.print(jsonParam); out.flush(); // 4. 读åååºç»æï¼ä¸è¯·æ±ç¼ç ä¸è´ï¼ä¿è¯è§£ææ£ç¡®ï¼ in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); String line; while ((line = in.readLine()) != null) { result.append(line); } log.info("recv - {}", result); } catch (ConnectException e) { log.error("è°ç¨HttpUtils.sendPostJson ConnectException, url=" + url + ",jsonParam=" + jsonParam, e); } catch (SocketTimeoutException e) { log.error("è°ç¨HttpUtils.sendPostJson SocketTimeoutException, url=" + url + ",jsonParam=" + jsonParam, e); } catch (IOException e) { log.error("è°ç¨HttpUtils.sendPostJson IOException, url=" + url + ",jsonParam=" + jsonParam, e); } catch (Exception e) { log.error("è°ç¨HttpUtils.sendPostJson Exception, url=" + url + ",jsonParam=" + jsonParam, e); } finally { // 5. å ³éæµèµæºï¼é¿å å åæ³æ¼ï¼ä¸å代ç finallyé»è¾ä¿æä¸è´ï¼ try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { log.error("è°ç¨æµå ³éå¼å¸¸ sendPostJson, url=" + url + ",jsonParam=" + jsonParam, ex); } } return result.toString(); } } src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -70,14 +70,14 @@ @GetMapping("/supplierPurchaseRanking") @ApiOperation("ä¾åºåéè´æå") public AjaxResult supplierPurchaseRanking(@RequestParam(value = "type", defaultValue = "0") Integer type) { public AjaxResult supplierPurchaseRanking(@RequestParam(value = "type", defaultValue = "1") Integer type) { List<SupplierPurchaseRankingDto> list = homeService.supplierPurchaseRanking(type); return AjaxResult.success(list); } @GetMapping("/customerRevenueAnalysis") @ApiOperation("客æ·è¥æ¶è´¡ç®æ°å¼åæ") public AjaxResult customerRevenueAnalysis(@RequestParam("customerId") Long customerId, @RequestParam(value = "type", defaultValue = "0") Integer type) { public AjaxResult customerRevenueAnalysis(@RequestParam("customerId") Long customerId, @RequestParam(value = "type", defaultValue = "1") Integer type) { CustomerRevenueAnalysisDto dto = homeService.customerRevenueAnalysis(customerId, type); return AjaxResult.success(dto); } src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -16,6 +16,7 @@ import com.ruoyi.basic.pojo.SupplierManage; import com.ruoyi.collaborativeApproval.mapper.NoticeMapper; import com.ruoyi.collaborativeApproval.pojo.Notice; import com.ruoyi.common.enums.ApproveTypeEnum; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.device.mapper.DeviceRepairMapper; import com.ruoyi.device.pojo.DeviceRepair; @@ -32,9 +33,11 @@ import com.ruoyi.production.mapper.ProductWorkOrderMapper; import com.ruoyi.production.pojo.ProductWorkOrder; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.domain.SysUserDept; import com.ruoyi.project.system.mapper.SysDeptMapper; import com.ruoyi.project.system.mapper.SysUserDeptMapper; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.purchase.mapper.PaymentRegistrationMapper; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.PaymentRegistration; @@ -44,8 +47,6 @@ import com.ruoyi.sales.mapper.ReceiptPaymentMapper; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.sales.pojo.ReceiptPayment; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; @@ -399,6 +400,12 @@ if (CollectionUtils.isEmpty(approveProcesses)) { approveProcesses = new ArrayList<>(); } approveProcesses.forEach(a -> { if (a.getApproveType() != null) { a.setApproveTypeName(ApproveTypeEnum.getNameByCode(a.getApproveType())); } }); // // æ¥è¯¢æªé¢ç¨å³ä¿è®°å½ // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // @@ -416,6 +423,8 @@ // approveProcesses.add(approveProcess); // } // } return approveProcesses; } @@ -695,15 +704,15 @@ LocalDate startDate; LocalDate endDate; switch (type) { case 0: // å¨ case 1: // å¨ startDate = today.with(DayOfWeek.MONDAY); endDate = today.with(DayOfWeek.SUNDAY); break; case 1: // æ case 2: // æ startDate = today.with(TemporalAdjusters.firstDayOfMonth()); endDate = today.with(TemporalAdjusters.lastDayOfMonth()); break; case 2: // å£åº¦ case 3: // å£åº¦ Month currentMonth = today.getMonth(); Month firstMonthOfQuarter = currentMonth.firstMonthOfQuarter(); Month lastMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2); @@ -745,15 +754,15 @@ boolean groupByMonth = false; switch (type) { case 0: // å¨ case 1: // å¨ start = today.with(DayOfWeek.MONDAY); end = today.with(DayOfWeek.SUNDAY); break; case 1: // æ case 2: // æ start = today.with(TemporalAdjusters.firstDayOfMonth()); end = today.with(TemporalAdjusters.lastDayOfMonth()); break; case 2: // å£åº¦ case 3: // å£åº¦ Month firstMonthOfQuarter = today.getMonth().firstMonthOfQuarter(); start = today.withMonth(firstMonthOfQuarter.getValue()).with(TemporalAdjusters.firstDayOfMonth()); end = today.withMonth(firstMonthOfQuarter.plus(2).getValue()).with(TemporalAdjusters.lastDayOfMonth()); @@ -814,109 +823,54 @@ ProductCategoryDistributionDto dto = new ProductCategoryDistributionDto(); List<ProductCategoryDistributionDto.MajorCategoryDto> majorItems = new ArrayList<>(); // ææç产å大类åå°ç±» List<Product> allProducts = productMapper.selectList(new LambdaQueryWrapper<Product>()); // æ¥è¯¢ææç产åç±»å« List<Product> allProducts = productMapper.selectList(new LambdaQueryWrapper<>()); if (CollectionUtils.isEmpty(allProducts)) { dto.setItems(majorItems); return dto; } List<Product> majorCategories = allProducts.stream().filter(p -> p.getParentId() == null).collect(Collectors.toList()); List<Product> minorCategories = allProducts.stream().filter(p -> p.getParentId() != null).collect(Collectors.toList()); // å离大类åå°ç±» List<Product> majorCategories = allProducts.stream() .filter(p -> p.getParentId() == null) .collect(Collectors.toList()); List<Product> minorCategories = allProducts.stream() .filter(p -> p.getParentId() != null) .collect(Collectors.toList()); // ä» sales_ledger_product æ¿å°æ¯ä¸ªäº§åçåå·åºå // éå å«è§æ ¼åå·ä»¥æ¯æä¸çº§åå¸ List<Map<String, Object>> quantityMaps = salesLedgerProductMapper.selectMaps(new QueryWrapper<SalesLedgerProduct>() .select("product_id", "specification_model", "type", "SUM(quantity) as sum_qty") .isNotNull("product_id") .groupBy("product_id", "specification_model", "type")); // æç¶ç±»ID对å°ç±»è¿è¡åç» Map<Long, List<Product>> minorGroupMap = minorCategories.stream() .collect(Collectors.groupingBy(Product::getParentId)); Map<Long, Map<String, Map<Integer, BigDecimal>>> modelStockGroups = new HashMap<>(); for (Map<String, Object> map : quantityMaps) { Long productId = Long.parseLong(map.get("product_id").toString()); String model = map.get("specification_model") != null ? map.get("specification_model").toString() : "æªç¥åå·"; Integer type = Integer.parseInt(map.get("type").toString()); BigDecimal sum = map.get("sum_qty") != null ? new BigDecimal(map.get("sum_qty").toString()) : BigDecimal.ZERO; int totalMinorCount = minorCategories.size(); modelStockGroups.computeIfAbsent(productId, k -> new HashMap<>()) .computeIfAbsent(model, k -> new HashMap<>()) .put(type, sum); } // åºåå¹¶æ±æ» Map<Long, List<MapDto>> productModelsMap = new HashMap<>(); Map<Long, BigDecimal> productTotalStockMap = new HashMap<>(); for (Long pid : modelStockGroups.keySet()) { Map<String, Map<Integer, BigDecimal>> models = modelStockGroups.get(pid); BigDecimal productStock = BigDecimal.ZERO; List<MapDto> modelDtos = new ArrayList<>(); for (String modelName : models.keySet()) { Map<Integer, BigDecimal> types = models.get(modelName); BigDecimal procurement = types.getOrDefault(2, BigDecimal.ZERO); BigDecimal sales = types.getOrDefault(1, BigDecimal.ZERO); BigDecimal stock = procurement.subtract(sales); if (stock.compareTo(BigDecimal.ZERO) < 0) stock = BigDecimal.ZERO; MapDto modelDto = new MapDto(); modelDto.setName(modelName); modelDto.setValue(stock.stripTrailingZeros().toPlainString()); modelDtos.add(modelDto); productStock = productStock.add(stock); } productModelsMap.put(pid, modelDtos); productTotalStockMap.put(pid, productStock); } BigDecimal totalInventory = productTotalStockMap.values().stream().reduce(BigDecimal.ZERO, BigDecimal::add); // åå·å æ¯ if (totalInventory.compareTo(BigDecimal.ZERO) > 0) { for (List<MapDto> dtos : productModelsMap.values()) { for (MapDto m : dtos) { BigDecimal val = new BigDecimal(m.getValue()); m.setRate(val.multiply(new BigDecimal("100")) .divide(totalInventory, 2, RoundingMode.HALF_UP).toString()); } } } // å屿°æ® for (Product major : majorCategories) { ProductCategoryDistributionDto.MajorCategoryDto majorDto = new ProductCategoryDistributionDto.MajorCategoryDto(); majorDto.setName(major.getProductName()); List<ProductCategoryDistributionDto.MinorCategoryDto> minorDtos = new ArrayList<>(); BigDecimal majorStock = BigDecimal.ZERO; List<Product> children = minorGroupMap.getOrDefault(major.getId(), new ArrayList<>()); int childrenSize = children.size(); // 设置å°ç±»çæ»æ° majorDto.setValue(String.valueOf(childrenSize)); for (Product minor : minorCategories) { if (major.getId().equals(minor.getParentId())) { BigDecimal stock = productTotalStockMap.getOrDefault(minor.getId(), BigDecimal.ZERO); ProductCategoryDistributionDto.MinorCategoryDto minorDto = new ProductCategoryDistributionDto.MinorCategoryDto(); minorDto.setName(minor.getProductName()); minorDto.setValue(stock.stripTrailingZeros().toPlainString()); if (totalInventory.compareTo(BigDecimal.ZERO) > 0) { minorDto.setRate(stock.multiply(new BigDecimal("100")) .divide(totalInventory, 2, RoundingMode.HALF_UP).toString()); } else { minorDto.setRate("0.00"); } minorDto.setChildren(productModelsMap.getOrDefault(minor.getId(), new ArrayList<>())); minorDtos.add(minorDto); majorStock = majorStock.add(stock); } } majorDto.setValue(majorStock.stripTrailingZeros().toPlainString()); if (totalInventory.compareTo(BigDecimal.ZERO) > 0) { majorDto.setRate(majorStock.multiply(new BigDecimal("100")) .divide(totalInventory, 2, RoundingMode.HALF_UP).toString()); // 计ç®å æ¯ if (totalMinorCount > 0) { BigDecimal rate = BigDecimal.valueOf(childrenSize) .multiply(new BigDecimal("100")) .divide(BigDecimal.valueOf(totalMinorCount), 2, RoundingMode.HALF_UP); majorDto.setRate(rate.toString()); } else { majorDto.setRate("0.00"); } List<ProductCategoryDistributionDto.MinorCategoryDto> minorDtos = new ArrayList<>(); for (Product minor : children) { ProductCategoryDistributionDto.MinorCategoryDto minorDto = new ProductCategoryDistributionDto.MinorCategoryDto(); minorDto.setName(minor.getProductName()); minorDto.setValue("0"); minorDto.setRate("0.00"); minorDto.setChildren(new ArrayList<>()); minorDtos.add(minorDto); } majorDto.setChildren(minorDtos); majorItems.add(majorDto); @@ -932,15 +886,15 @@ LocalDate startDate = null; LocalDate endDate = null; switch (type) { case 0: case 1: startDate = today.with(DayOfWeek.MONDAY); endDate = today.with(DayOfWeek.SUNDAY); break; case 1: case 2: startDate = today.with(TemporalAdjusters.firstDayOfMonth()); endDate = today.with(TemporalAdjusters.lastDayOfMonth()); break; case 2: case 3: Month currentMonth = today.getMonth(); Month firstMonthOfQuarter = currentMonth.firstMonthOfQuarter(); Month lastMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2); src/main/java/com/ruoyi/http/service/RealTimeEnergyConsumptionService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,8 @@ package com.ruoyi.http.service; /** * @author :yys * @date : 2026/1/27 16:02 */ public interface RealTimeEnergyConsumptionService { } src/main/java/com/ruoyi/http/service/impl/RealTimeEnergyConsumptionServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,130 @@ package com.ruoyi.http.service.impl; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.utils.http.HttpUtils; import com.ruoyi.http.service.RealTimeEnergyConsumptionService; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author :yys * @date : 2026/1/27 16:02 */ @Service @Slf4j public class RealTimeEnergyConsumptionServiceImpl implements RealTimeEnergyConsumptionService { private static final String URL = "https://new.e-elitech.cn/api/data-api"; private static final String TOKEN_URL = "/elitechAccess/getToken"; private static final String REAL_TIME_URL = "/elitechAccess/v2/getRealTimeData"; //è·å设å¤å®æ¶æ°æ® private static final String KET_ID = "75804708"; private static final String KEY_SECRET = "xTUGToozKpYgUPqTsZzB"; private static final String USER_NAME = "ç¨æ·30773662"; private static final String PASS_WORD = "y17775163675"; private static final String DEVICE_GUID = "90444196515214284663"; /** * æ ¹æ®paramCodeæåæ¢å¤´åæ° * @param paramList 设å¤åæ°æ°ç» * @param targetCode ç®æ æ¢å¤´ç¼ç * @return æ¢å¤´åæ°å¯¹è±¡ï¼å å«name/value/unitï¼ */ private static JSONObject getProbeParam(JSONArray paramList, String targetCode) { for (int i = 0; i < paramList.size(); i++) { JSONObject paramObj = paramList.getJSONObject(i); if (targetCode.equals(paramObj.getString("paramCode"))) { return paramObj; } } return new JSONObject(); // æªå¹é å°è¿å空对象ï¼é¿å 空æé } /** * 宿¶è·å温湿度ï¼äºæ°§åç¢³æ°æ® */ public static void main(String[] args) { String realTimeData = getRealTimeData(getToken()); Map<String, Object> map = JSON.parseObject(realTimeData, Map.class); if(map.get("code").equals(0)){ // 1. è§£æå¤å±data为JSONæ°ç»ï¼æ¥å£è¿åç设å¤åè¡¨ï¼ JSONArray deviceList = JSON.parseArray(map.get("data").toString()); // 2. éå设å¤åè¡¨ï¼æ¤å¤ä» å第ä¸ä¸ªè®¾å¤ï¼è¥æå¤ä¸ªè®¾å¤å¯å¾ªç¯å¤çï¼ if (!deviceList.isEmpty()) { JSONObject deviceObj = deviceList.getJSONObject(0); // 3. è§£æè®¾å¤å çåæ°æ°ç»ï¼ææparamCode对åºçåæ°ï¼ JSONArray paramList = deviceObj.getJSONArray("data"); // 4. å®ä¹ç®æ æ¢å¤´çparamCodeï¼æéæ©å± String[] targetCodes = {"0100", "0110", "0120", "0130"}; for (String code : targetCodes) { // 5. éååæ°æ°ç»ï¼å¹é ç®æ paramCode for (int i = 0; i < paramList.size(); i++) { JSONObject paramObj = paramList.getJSONObject(i); String currentCode = paramObj.getString("paramCode"); if (code.equals(currentCode)) { // 6. æåæ ¸å¿å段ï¼å¼ãåä½ãæ¢å¤´åç§°ï¼ String paramName = paramObj.getString("paramName"); // æ¢å¤´1/æ¢å¤´2... String value = paramObj.getString("value"); // æ°å¼ï¼345.80/24.90...ï¼ String unitCode = paramObj.getString("unitCode"); // åä½ï¼Lux/â/%RH/ppmï¼ // 7. ä¸å¡å¤çï¼æå°/èµå¼/åå¨çï¼æéä¿®æ¹ï¼ System.out.println(paramName + "ï¼" + value + " " + unitCode); // å¹é å°åç´æ¥è·³åºå å±å¾ªç¯ï¼æåæç break; } } } } } System.out.println(); } public static String getToken(){ Map<String, String> param = new HashMap<>(); param.put("keyId", KET_ID); param.put("keySecret", KEY_SECRET); param.put("userName", USER_NAME); param.put("password", PASS_WORD); log.info("请æ±åæ°ï¼{}", JSON.toJSONString( param)); String result = HttpUtils.sendPostJson(URL + TOKEN_URL, JSON.toJSONString(param)); log.info("è¿åç»æï¼{}", result); Map<String, Object> map = JSON.parseObject(result, Map.class); if (map.get("code").equals(0)) { Object token = map.get("data"); log.info("token:{}", token); return token.toString(); } return result; } public static String getRealTimeData(String token){ Map<String, Object> param = new HashMap<>(); param.put("keyId", KET_ID); param.put("keySecret", KEY_SECRET); param.put("deviceGuids", Collections.singletonList(DEVICE_GUID)); log.info("请æ±åæ°ï¼{}", JSON.toJSONString( param)); String result = HttpUtils.sendPostJson(URL + REAL_TIME_URL, JSON.toJSONString(param),token); log.info("è¿åç»æï¼{}", result); return result; } }