package com.ruoyi.other.util;
|
|
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpResponse;
|
import cn.hutool.http.HttpUtil;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.ruoyi.other.api.domain.TSystemConfiguration;
|
import com.ruoyi.other.mapper.TSystemConfigurationMapper;
|
import com.ruoyi.other.vo.ScreenStorageConfigVO;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.LocalTime;
|
import java.util.*;
|
|
|
/**
|
* 定时任务:储能放电情况 光伏发电情况
|
*/
|
@Service
|
public class KsolarUtils {
|
|
|
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");
|
get.header("Authorization", "Bearer "+token);
|
get.form("startDate", time);
|
HttpResponse execute = get.execute();
|
String body = execute.body();
|
JSONObject jsonObject = JSONObject.parseObject(body);
|
String code = jsonObject.get("code").toString();
|
if(!"200".equals(code)){
|
token = token();
|
return getTodayEnergy(time);
|
}
|
Object data = jsonObject.get("data");
|
JSONObject jsonObject1 = JSONObject.parseObject(data.toString());
|
Double earn = jsonObject1.getDouble("dayGeneration");
|
return earn;
|
} catch (Exception e) {
|
e.printStackTrace();
|
token = token();
|
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");
|
get.header("Authorization", "Bearer "+token);
|
get.form("startDate", time);
|
HttpResponse execute = get.execute();
|
String body = execute.body();
|
JSONObject jsonObject = JSONObject.parseObject(body);
|
String code = jsonObject.get("code").toString();
|
if(!"200".equals(code)){
|
token = token();
|
return getAllEnergy(time);
|
}
|
Object data = jsonObject.get("data");
|
JSONObject jsonObject1 = JSONObject.parseObject(data.toString());
|
Double earn = jsonObject1.getDouble("totalGeneration");
|
return earn;
|
} catch (Exception e) {
|
e.printStackTrace();
|
token = token();
|
return getAllEnergy(time);
|
}
|
}
|
|
|
/**
|
* 光伏碳减排
|
* @return
|
*/
|
public static BigDecimal getYearAllEnergy() {
|
Double yearAllEnergy = getYearAllEnergy(stationIds.get(0));
|
Double yearAllEnergy1 = getYearAllEnergy(stationIds.get(1));
|
Double yearAllEnergy2 = getYearAllEnergy(stationIds.get(2));
|
Double yearAllEnergy3 = getYearAllEnergy(stationIds.get(3));
|
double v = yearAllEnergy + yearAllEnergy1 + yearAllEnergy2 + yearAllEnergy3;
|
BigDecimal divide = new BigDecimal(v).multiply(new BigDecimal("0.1404")).divide(new BigDecimal("1000"), 2, RoundingMode.DOWN);
|
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", stationId);
|
get.form("attribId", "202");
|
get.form("stime",LocalDate.now().getYear()+"" );
|
HttpResponse execute = get.execute();
|
String body = execute.body();
|
JSONArray jsonArray = JSONArray.parseArray(body);
|
Object o1 = jsonArray.get(0);
|
JSONObject jsonObject = JSONObject.parseObject(o1.toString());
|
String code = jsonObject.get("attribValue").toString();
|
Double earn = Double.valueOf(code);
|
return earn;
|
} catch (Exception e) {
|
e.printStackTrace();
|
token = token();
|
return getYearAllEnergy(stationId);
|
}
|
}
|
|
|
|
public static String token() {
|
HttpRequest post = HttpUtil.createPost("http://111.230.136.62:8092/authentication/form");
|
post.basicAuth("kstar","kstarSecret");
|
post.form("username", "环岛光伏");
|
post.form("password", "cR8GGwIXMI462A8Dfl9eXg==");
|
HttpResponse execute = post.execute();
|
String body = execute.body();
|
JSONObject jsonObject = JSONObject.parseObject(body);
|
String token = jsonObject.getString("token");
|
JSONObject jsonObject1 = JSONObject.parseObject(token);
|
String access_token = jsonObject1.getString("access_token");
|
return access_token;
|
}
|
|
|
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;
|
}
|
|
|
|
|
}
|