liujie
20 小时以前 4f9901f28b7a312834ed37aad536db3e418bd6cc
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/util/KsolarUtils.java
@@ -19,10 +19,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.*;
/**
@@ -34,9 +31,17 @@
    private static String token;
    private static String accessToken;
    private static List<String> stationIds= Arrays.asList("2025060710462417","2025060711331323","2025060715425437","2025060716010425");
    /**
     * 获取今日总发电量
     * @param time
     * @return
     */
    public static Double getTodayEnergy(String time) {
        try {
            HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/station/list/earn");
@@ -60,7 +65,49 @@
            return getTodayEnergy(time);
        }
    }
    public static ArrayList<Map<String, Object>> getMonthEnergy(String time,String time1) {
        ArrayList<Map<String, Object>> list = new ArrayList<>();
        try {
            HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/protocol/user/statistic/elec/chart");
            get.header("Authorization", "Bearer "+token);
            get.form("stime", time);
            get.form("attribId", "201");
            HttpResponse execute = get.execute();
            String body = execute.body();
            if(body.contains("code")){
                token = token();
                return getMonthEnergy(time,time1);
            }
            JSONArray jsonArray = JSONArray.parseArray(body);
            for (Object o1 : jsonArray) {
                HashMap<String, Object> stringObjectHashMap = new HashMap<>();
                JSONObject jsonObject = JSONObject.parseObject(o1.toString()) ;
                stringObjectHashMap.put("time", jsonObject.getString("saveTime"));
                stringObjectHashMap.put("value", jsonObject.getString("attribValue"));
                list.add(stringObjectHashMap);
            }
            // 相同月份
            if(!time.equals(time1)){
                list.addAll(getMonthEnergy(time1,time1));
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
            token = token();
            return getMonthEnergy(time,time1);
        }
    }
    public static void main(String[] args) throws Exception {
        ArrayList<Map<String, Object>> monthEnergy = getMonthEnergy("2025-05", "2025-06");
        System.out.println(monthEnergy);
    }
    /**
     * 光伏累计
     * @return
     */
    public static Double getAllEnergy(String time) {
        try {
            HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/station/list/earn");
@@ -100,11 +147,13 @@
        return divide;
    }
    private static Double getYearAllEnergy(String stationId) {
        try {
            HttpRequest get = HttpUtil.createGet("http://111.230.136.62:8092/protocol/station/statistic/elec/chart");
            get.header("Authorization", "Bearer "+token);
            get.form("stationId", "2025060710462417");
            get.form("stationId", stationId);
            get.form("attribId", "202");
            get.form("stime",LocalDate.now().getYear()+"" );
            HttpResponse execute = get.execute();
@@ -118,7 +167,7 @@
        } catch (Exception e) {
            e.printStackTrace();
            token = token();
            return getYearAllEnergy(LocalDate.now().getYear()+"");
            return getYearAllEnergy(stationId);
        }
    }
@@ -138,9 +187,50 @@
        return  access_token;
    }
    public static void main(String[] args) throws Exception {
        System.out.println(getYearAllEnergy("2025",""));
    public static String getAccessToken(){
        HttpRequest post = HttpRequest.post("https://www.zsdcloud.cn:8443/openApi/getAccessToken.action?accessId=87bde117-1f29-4371-8d4d-82324d17ddc3");
        HttpResponse execute = post.execute();
        String body = execute.body();
        JSONObject jsonObject = JSONObject.parseObject(body);
        return jsonObject.getString("result");
    }
    /**
     * 消纳数据
     * @return
     */
    public static String getElectricity(){
        String value = "0";
        HttpRequest post = HttpRequest.post("https://www.zsdcloud.cn:8443/openApi/equipment/select.action");
        post.form("token", accessToken);
        post.form("keyCode", "869916072003947");
        post.form("version", "V2");
        HttpResponse execute = post.execute();
        String body = execute.body();
        JSONObject jsonObject = JSONObject.parseObject(body);
        String string = jsonObject.get("statusCode").toString();
        if(!string.equals("200")){
           accessToken =  getAccessToken();
           return getElectricity();
        }
        String string1 = jsonObject.getString("result");
        JSONObject jsonObject1 = JSONObject.parseObject(string1);
        String realInfo = jsonObject1.getString("realInfo");
        JSONArray jsonArray = JSONArray.parseArray(realInfo);
        for (Object o : jsonArray) {
            JSONObject jsonObject2 = JSONObject.parseObject(o.toString());
            if(jsonObject2.get("Name").toString().equals("累积日充电量")){
                value=  jsonObject2.get("Value").toString();
                break;
            }
        }
        return value;
    }
}