Commit cee77e2f authored by xixinzhao's avatar xixinzhao

科士达数据接入

parent a1578464
......@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.api.householdapi.constant.GoLangConstant;
import com.yeejoin.amos.api.householdapi.constant.KSolarConstant;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.jcajce.provider.symmetric.AES;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -20,7 +21,8 @@ import java.util.List;
@Component
public class KSolarRequestUtil {
@Slf4j
public class KsolarRequestUtil {
/**
* @return HashMap<String, Object> 发送请求前的准备 准备header信息
......@@ -66,6 +68,7 @@ public class KSolarRequestUtil {
String url = KSolarConstant.baseurl + apiurl;
respone = sendRequest(requestMethod, url, requestParmInfo, headMap);
jsonArray = handlerResponseByResultResolverule(ResultResolveRule, respone);
log.info("原始数据:{}", jsonArray);
if (!ObjectUtils.isEmpty(jsonArray)) {
result = JSONArray.parseArray(jsonArray.toJSONString(), tClass);
}
......@@ -82,24 +85,29 @@ public class KSolarRequestUtil {
* @desc 根据解析规则解析请求返回数据
*/
public JSONArray handlerResponseByResultResolverule(String resultResovle, String response) {
JSONObject jsonObject = JSONObject.parseObject(response);
JSONArray jsonArray = new JSONArray();
if (ObjectUtil.isNotEmpty(resultResovle)) {
String[] rules = resultResovle.split(",");
if (rules.length > 0) {
for (int i = 0; i < rules.length; i++) {
try {
jsonObject = (JSONObject) jsonObject.get(rules[i]);
if (jsonObject == null) {
if ("arr".equals(resultResovle)) {
jsonArray = JSONArray.parseArray(response);
} else {
JSONObject jsonObject = JSONObject.parseObject(response);
if (ObjectUtil.isNotEmpty(resultResovle)) {
String[] rules = resultResovle.split(",");
if (rules.length > 0) {
for (int i = 0; i < rules.length; i++) {
try {
jsonObject = (JSONObject) jsonObject.get(rules[i]);
if (jsonObject == null) {
jsonArray = (JSONArray) jsonObject.get(rules[i]);
}
} catch (Exception exception) {
jsonArray = (JSONArray) jsonObject.get(rules[i]);
}
} catch (Exception exception) {
jsonArray = (JSONArray) jsonObject.get(rules[i]);
}
}
}
if (jsonArray.size() == 0) {
jsonArray.add(jsonObject);
if (jsonArray.size() == 0) {
jsonArray.add(jsonObject);
}
}
}
return jsonArray;
......
package com.yeejoin.amos.api.householdapi.constant;
import java.util.HashMap;
public class KSolarConstant {
public static String baseurl ="http://111.230.136.62:8092";
public static String account ="三一硅能";
......@@ -11,6 +13,47 @@ public class KSolarConstant {
public static String requestPOST="POST";
public static String requestGET="GET";
public static String stationListUrl="/station/list/info";
public static String stationInfoByIdUrl="/station/list/info/by/id";
public static String stationEarnUrl="/station/detail/earn";
public static String stationEarnChartUrl="/protocol/station/statistic/elec/chart";
public static String stationCollectListUrl="/station/detail/collect/list";
public static String stationCollectDataUrl="/station/detail/get/realdata/by/collectid";
public static String stationCollectAlarmUrl="/alarm/bi/list";
public static String resovle_rows="rows";
public static String resovle_data="data";
public static String resovle_arr="arr";
public static Double kwhToMwh = 0.0001;
public static final HashMap<String, String> stationStaus = new HashMap<String, String>() {
{
put("1", "在线");
put("0", "离线");
put("2", "报警");
}
};
public static final HashMap<String, String> collectStaus = new HashMap<String, String>() {
{
put("0", "在线");
put("1", "离线");
put("2", "报警");
}
};
public static final HashMap<String, String> alarmLevel = new HashMap<String, String>() {
{
put("1", "低级");
put("2", "中级");
put("3", "高级");
}
};
public static final HashMap<String, String> alarmstatus = new HashMap<String, String>() {
{
put("0", "未恢复");
put("1", "已恢复");
}
};
}
package com.yeejoin.amos.api.householdapi.controller;
import com.yeejoin.amos.api.householdapi.Utils.HouseholdPvUtils;
import com.yeejoin.amos.api.householdapi.Utils.KSolarRequestUtil;
import com.yeejoin.amos.api.householdapi.face.service.GoLangDataAcquisitionService;
import com.yeejoin.amos.api.householdapi.face.service.KSolarDataAcquisitionService;
import fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -15,7 +13,6 @@ import org.typroject.tyboot.core.foundation.enumeration.UserType;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import java.io.IOException;
import java.util.HashMap;
/**
......@@ -111,9 +108,11 @@ public class HouseholdTestController {
@PostMapping(value = "/ksolarnew")
@ApiOperation(httpMethod = "POST", value = "科士达", notes = "科士达")
public void ksolarnew() throws IOException {
// kSolarDataAcquisitionService.stationList();
kSolarDataAcquisitionService.stationDetail();
kSolarDataAcquisitionService.stationList();
// goLangDataAcquisitionService.stationDetail();
// goLangDataAcquisitionService.collectorList();
kSolarDataAcquisitionService.collectorList();
kSolarDataAcquisitionService.collectorDetail();
//// goLangDataAcquisitionService.inverterList();
// goLangDataAcquisitionService.collectorDetail();
// goLangDataAcquisitionService.inverterDetail();
......
package com.yeejoin.amos.api.householdapi.face.dto;
import lombok.Data;
/**
* @author DELL
*/
@Data
public class KsolarAlarmDto {
private String alarmId;
private String attribId;
private String collectName;
private String deviceId;
private String inverterId;
private String levels;
private String message;
private String removeTime;
private String saveTime;
private String solution;
private String stationId;
private String stationName;
private String status;
}
......@@ -54,7 +54,7 @@ public class JpInverter implements Serializable {
* 采集器id
*/
@TableField("collector_id")
private Long collectorId;
private String collectorId;
/**
* 采集器sn编码
......
......@@ -43,7 +43,7 @@ public class JpInverterElectricity implements Serializable {
* 逆变器id
*/
@TableField("inverter_id")
private Long inverterId;
private String inverterId;
/**
* sn编码
......
......@@ -16,7 +16,7 @@ public class HYGFJPInverterHistory implements Serializable {
private Double powerGeneration;
private Double dailyReturn;
private Double generationHours;
private Long inverterId;
private String inverterId;
private String thirdStationId;
private String thirdCode;
}
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import lombok.Data;
import java.io.Serializable;
/**
* @author DELL
*/
@Data
public class KsolarStationCollectData implements Serializable {
private Long createdTime;
private String inverterId;
private String status;
private String deviceModel;
private String version;
private Double powerApparent;
private Double dayGeneration;
private Double monthGeneration;
private Double yearGeneration;
private Double totalGeneration;
private Double currentPv1;
private Double currentPv2;
private Double currentPv3;
private Double currentPv4;
private Double currentPv5;
private Double currentPv6;
private Double currentPv7;
private Double currentPv8;
private Double currentPv9;
private Double currentPv10;
private Double currentPv11;
private Double currentPv12;
private Double currentR;
private Double currents;
private Double currentT;
private Double voltagePv1;
private Double voltagePv2;
private Double voltagePv3;
private Double voltagePv4;
private Double voltagePv5;
private Double voltagePv6;
private Double voltagePv7;
private Double voltagePv8;
private Double voltagePv9;
private Double voltagePv10;
private Double voltagePv11;
private Double voltagePv12;
private Double voltagePbus;
private Double voltagelbus;
private Double voltageRs;
private Double voltageSt;
private Double voltageTr;
private Double powerPv1;
private Double powerPv2;
private Double powerPv3;
private Double powerPv4;
private Double powerPv5;
private Double powerPv6;
private Double powerPv7;
private Double powerPv8;
private Double powerPv9;
private Double powerPv10;
private Double powerPv11;
private Double powerPv12;
private Double frequencyRs;
private Double frequencySt;
private Double frequencyTr;
}
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* @author DELL
*/
@Data
@TableName(value = "ksolar_collector_list" ,autoResultMap = true)
public class KsolarStationCollectList implements Serializable {
private Long createdTime;
private String address;
private String armVersion;
private String bstVersion;
private String collectId;
private String collectName;
private String collectVersion;
private String dayGeneration;
private String deviceModel;
private String dspVersion;
private String inverterId;
private String trafficType;
private Integer interfaceType;
private Integer modelId;
private Integer phaseStandard;
private String stationName;
private Integer phaseType;
private Double signal;
private String status;
private Double powerInter;
private Double totalGeneration;
private String thirdStationId;
}
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* @author DELL
*/
@Data
@TableName(value = "ksolar_station_detail" ,autoResultMap = true)
public class KsolarStationDetails implements Serializable {
private Long createdTime;
private String area;
private Double installCapacity;
private Double elecPrice;
private String city;
private String elecUnit;
private Integer stationType;
private String latitude;
private String timeZone;
private String countries;
private String userCode;
private String stationAddressDetail;
private String province;
private String stationName;
private String longitude;
}
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
* @author DELL
*/
@Data
@TableName(value = "ksolar_station_earn" ,autoResultMap = true)
public class KsolarStationEarn implements Serializable {
private Long createdTime;
private Double co2;
private Double coal;
private Double dayEarn;
private Double dayGeneration;
private Double forest;
private Double monthGeneration;
private Double realPower;
private Double totalEarn;
private Double totalGeneration;
private Double totalPower;
private Double yearGeneration;
}
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName(value = "ksolar_station_earn_chart" ,autoResultMap = true)
public class KsolarStationEarnChart {
private Long createdTime;
private String attribValue;
private String earnValue;
private String saveTime;
}
package com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.models.auth.In;
import lombok.Data;
import java.io.Serializable;
/**
* @author DELL
*/
@Data
public class KSolarStationList {
@TableName(value = "ksolar_station_list" ,autoResultMap = true)
public class KsolarStationList implements Serializable {
private Long createdTime;
private String stationId;
private String stationName;
private Integer stationType;
......
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.GolangCollectorList;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.KsolarStationCollectList;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface KsolarStationCollectListMapper extends BaseMapper<KsolarStationCollectList> {
@Select("select collect_id from ksolar_collector_list group by collect_id")
List<String> getCollectIds();
}
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.KsolarStationDetails;
/**
* @author DELL
*/
public interface KsolarStationDetailsMapper extends BaseMapper<KsolarStationDetails> {
}
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.KsolarStationEarn;
/**
* @author DELL
*/
public interface KsolarStationEarnMapper extends BaseMapper<KsolarStationEarn> {
}
package com.yeejoin.amos.api.householdapi.face.orm.mapper.tdengine;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.KsolarStationList;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author DELL
*/
public interface KsolarStationMapper extends BaseMapper<KsolarStationList> {
@Select("select station_id from ksolar_station_list group by station_id")
List<String> getStationIds();
}
......@@ -25,8 +25,5 @@ public interface KSolarDataAcquisitionService {
* @descrption 逆变器详情数据入库
*/
void inverterDetail();
/**
* @descrption 采集器告警列表数据入库
*/
void inverAlramInfo();
}
......@@ -364,7 +364,7 @@ public class GoLangDataAcquisitionServiceImpl implements GoLangDataAcquisitionSe
}
jpInverter.setSnCode(inverterDetailDto.getSn());
jpInverter.setState(GoLangConstant.stationStaus.get(inverterDetailDto.getCurrentState()));
jpInverter.setCollectorId(inverterDetailDto.getCollectorId());
jpInverter.setCollectorId(String.valueOf(inverterDetailDto.getCollectorId()));
jpInverter.setCollectorSnCode(inverterDetailDto.getCollectorsn());
jpInverter.setUpdateTime(new Date());
jpInverter.setCurrentPower(inverterDetailDto.getPac());
......@@ -398,7 +398,7 @@ public class GoLangDataAcquisitionServiceImpl implements GoLangDataAcquisitionSe
if (ObjectUtils.isEmpty(jpInverterElectricity)) {
jpInverterElectricity = new JpInverterElectricity();
}
jpInverterElectricity.setInverterId(inverterDetailDto.getId());
jpInverterElectricity.setInverterId(String.valueOf(inverterDetailDto.getId()));
jpInverterElectricity.setSnCode(inverterDetailDto.getSn());
jpInverterElectricity.setThirdCode(PVProducerInfoEnum.JLY.getCode());
jpInverterElectricity.setThirdStationId(String.valueOf(inverterDetailDto.getStationId()));
......@@ -421,7 +421,7 @@ public class GoLangDataAcquisitionServiceImpl implements GoLangDataAcquisitionSe
if (ObjectUtils.isEmpty(jpInverterElectricity)) {
jpInverterElectricity = new JpInverterElectricity();
}
jpInverterElectricity.setInverterId(inverterDetailDto.getId());
jpInverterElectricity.setInverterId(String.valueOf(inverterDetailDto.getId()));
jpInverterElectricity.setSnCode(inverterDetailDto.getSn());
jpInverterElectricity.setThirdCode(PVProducerInfoEnum.JLY.getCode());
jpInverterElectricity.setThirdStationId(String.valueOf(inverterDetailDto.getStationId()));
......@@ -457,7 +457,7 @@ public class GoLangDataAcquisitionServiceImpl implements GoLangDataAcquisitionSe
}
hygfjpInverterHistory.setDate(today);
hygfjpInverterHistory.setThirdStationId(String.valueOf(inverterDetailDto.getStationId()));
hygfjpInverterHistory.setInverterId(inverterDetailDto.getId());
hygfjpInverterHistory.setInverterId(String.valueOf(inverterDetailDto.getId()));
hygfjpInverterHistory.setSnCode(inverterDetailDto.getSn());
hygfjpInverterHistory.setThirdCode(PVProducerInfoEnum.JLY.getCode());
hygfjpInverterHistory.setGenerationHours(inverterDetailDto.getFullHour());
......
package com.yeejoin.amos.api.householdapi.face.service.impl;
import com.yeejoin.amos.api.householdapi.Utils.KSolarRequestUtil;
import com.yeejoin.amos.api.householdapi.constant.KSolarConstant;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.KSolarStationList;
import com.yeejoin.amos.api.householdapi.face.service.KSolarDataAcquisitionService;
import fastjson.JSON;
import jdk.nashorn.internal.ir.RuntimeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
@Service
public class KSolarDataAcquisitionServiceImpl implements KSolarDataAcquisitionService {
@Autowired
KSolarRequestUtil kSolarRequestUtil;
@Override
public void stationList() {
HashMap<String, Object> requestInfo = new HashMap<>();
String requestParaminfo = JSON.toJSONString(requestInfo);
List<KSolarStationList> kSolarStationListList = kSolarRequestUtil.getResPonse(
KSolarConstant.stationListUrl,
KSolarConstant.requestGET,
requestParaminfo,
KSolarConstant.resovle_rows,
KSolarStationList.class);
for (int i = 0; i < kSolarStationListList.size(); i++) {
KSolarStationList kSolarStationList = kSolarStationListList.get(i);
kSolarStationList.getStationId();
}
}
@Override
public void stationDetail() {
}
@Override
public void collectorList() {
}
@Override
public void collectorDetail() {
}
@Override
public void inverterList() {
}
@Override
public void inverterDetail() {
}
@Override
public void inverAlramInfo() {
}
}
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="log" />
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/jpush.log.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--日志文件大小-->
<MaxFileSize>30mb</MaxFileSize>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- show parameters for hibernate sql 专为 Hibernate 定制
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
-->
<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="DEBUG"/>
<logger name="org.mybatis" level="DEBUG" />
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<logger name="org.springframework" level="DEBUG"/>
<!-- 日志输出级别 -->
<root level="ERROR">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment