Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
9247233c
Commit
9247233c
authored
Oct 13, 2023
by
litengwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对接第三方北向数据
parent
048ede6f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
451 additions
and
1 deletion
+451
-1
ImasterUtils.java
...com/yeejoin/amos/api/householdapi/Utils/ImasterUtils.java
+0
-0
RedisUtils.java
...a/com/yeejoin/amos/api/householdapi/Utils/RedisUtils.java
+0
-0
ImasterConstant.java
...ejoin/amos/api/householdapi/constant/ImasterConstant.java
+52
-0
HouseholdTestController.java
.../api/householdapi/controller/HouseholdTestController.java
+28
-0
ImasterAlarmDto.java
...ejoin/amos/api/householdapi/face/dto/ImasterAlarmDto.java
+21
-0
JpInverter.java
...ouseholdapi/face/orm/houseapi/entity/hygf/JpInverter.java
+1
-1
ImasterCollectorList.java
...e/orm/houseapi/entity/tdeingine/ImasterCollectorList.java
+21
-0
ImasterInverterList.java
...ce/orm/houseapi/entity/tdeingine/ImasterInverterList.java
+23
-0
ImasterInverterListDetails.java
...houseapi/entity/tdeingine/ImasterInverterListDetails.java
+101
-0
ImasterStationDetail.java
...e/orm/houseapi/entity/tdeingine/ImasterStationDetail.java
+18
-0
ImasterStationDetailsDay.java
...m/houseapi/entity/tdeingine/ImasterStationDetailsDay.java
+25
-0
ImasterStationDetailsMonth.java
...houseapi/entity/tdeingine/ImasterStationDetailsMonth.java
+24
-0
ImasterStationDetailsYear.java
.../houseapi/entity/tdeingine/ImasterStationDetailsYear.java
+25
-0
ImasterStationList.java
...ace/orm/houseapi/entity/tdeingine/ImasterStationList.java
+21
-0
ImasterCollectorListMapper.java
.../face/orm/mapper/tdengine/ImasterCollectorListMapper.java
+13
-0
ImasterInverterListDetailsMapper.java
...orm/mapper/tdengine/ImasterInverterListDetailsMapper.java
+8
-0
ImasterInverterListMapper.java
...i/face/orm/mapper/tdengine/ImasterInverterListMapper.java
+13
-0
ImasterStationDetailsMapper.java
...face/orm/mapper/tdengine/ImasterStationDetailsMapper.java
+8
-0
ImasterStationMapper.java
...oldapi/face/orm/mapper/tdengine/ImasterStationMapper.java
+16
-0
ImasterDataService.java
...mos/api/householdapi/face/service/ImasterDataService.java
+33
-0
ImasterDataServiceImpl.java
...ouseholdapi/face/service/impl/ImasterDataServiceImpl.java
+0
-0
No files found.
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/Utils/ImasterUtils.java
0 → 100644
View file @
9247233c
This diff is collapsed.
Click to expand it.
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/Utils/RedisUtils.java
0 → 100644
View file @
9247233c
This diff is collapsed.
Click to expand it.
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/constant/ImasterConstant.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
constant
;
import
java.util.HashMap
;
/**
* 北向-华为常量
*/
public
class
ImasterConstant
{
public
static
final
HashMap
<
String
,
String
>
stationStaus
=
new
HashMap
<
String
,
String
>()
{
{
put
(
"1"
,
"离线"
);
put
(
"2"
,
"告警"
);
put
(
"3"
,
"在线"
);
}
};
public
static
final
HashMap
<
String
,
String
>
alarmstatus
=
new
HashMap
<
String
,
String
>()
{
{
put
(
"1"
,
"未处理"
);
}
};
public
static
final
HashMap
<
String
,
String
>
alarmLevel
=
new
HashMap
<
String
,
String
>()
{
{
put
(
"1"
,
"严重"
);
put
(
"2"
,
"重要"
);
put
(
"3"
,
"次要"
);
put
(
"4"
,
"提示"
);
}
};
public
static
String
baseurl
=
"https://cn.fusionsolar.huawei.com"
;
public
static
String
account
=
"ahsjmg-API"
;
public
static
String
password
=
"huawei123"
;
public
static
String
tokenUrl
=
"/thirdData/login"
;
public
static
String
requestPOST
=
"POST"
;
public
static
String
requestGET
=
"GET"
;
public
static
String
stationListUrl
=
"/thirdData/stations"
;
public
static
String
stationDetailUrl
=
"/thirdData/getStationRealKpi"
;
public
static
String
collectorListUrl
=
"/thirdData/getDevList"
;
public
static
String
collectorDetailUrl
=
"/thirdData/getDevRealKpi"
;
public
static
String
alarmListUrl
=
"/thirdData/getAlarmList"
;
public
static
String
resovleRule_data_page_records
=
"data"
;
public
static
String
resovle_rows
=
"rows"
;
public
static
int
devTypeC
=
62
;
public
static
int
devTypeI
=
1
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/controller/HouseholdTestController.java
View file @
9247233c
...
...
@@ -2,7 +2,10 @@ package com.yeejoin.amos.api.householdapi.controller;
import
com.yeejoin.amos.api.householdapi.Utils.HouseholdPvUtils
;
import
com.yeejoin.amos.api.householdapi.face.service.GoLangDataAcquisitionService
;
import
com.yeejoin.amos.api.householdapi.face.service.ImasterDataService
;
import
com.yeejoin.amos.api.householdapi.face.service.KSolarDataAcquisitionService
;
import
com.yeejoin.amos.api.householdapi.face.service.impl.ImasterDataServiceImpl
;
import
fastjson.JSON
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -31,6 +34,8 @@ public class HouseholdTestController {
private
GoLangDataAcquisitionService
goLangDataAcquisitionService
;
@Autowired
private
KSolarDataAcquisitionService
kSolarDataAcquisitionService
;
@Autowired
private
ImasterDataService
imasterDataService
;
/**
...
...
@@ -119,4 +124,27 @@ public class HouseholdTestController {
// goLangDataAcquisitionService.inverAlramInfo();
}
/**
* 新增户用光伏-厂商API haders
*
* @return
*/
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
,
needAuth
=
false
)
@PostMapping
(
value
=
"/imasterNew"
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"北向"
,
notes
=
"北向"
)
public
void
imasterNew
()
throws
IOException
{
// imasterDataService.stationList();
// imasterDataService.stationDetail();
// imasterDataService.collectorList();
// imasterDataService.inverterList();
imasterDataService
.
inverterDetail
();
// goLangDataAcquisitionService.collectorList();
//// goLangDataAcquisitionService.inverterList();
// goLangDataAcquisitionService.collectorDetail();
// goLangDataAcquisitionService.inverterDetail();
// goLangDataAcquisitionService.inverAlramInfo();
}
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/dto/ImasterAlarmDto.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
dto
;
import
lombok.Data
;
@Data
public
class
ImasterAlarmDto
{
private
Integer
alarmId
;
private
Integer
alarmType
;
private
Long
raiseTime
;
private
String
stationName
;
private
Integer
lev
;
private
Integer
devTypeId
;
private
String
stationCode
;
private
String
alarmName
;
private
String
alarmCause
;
private
String
devName
;
private
String
repairSuggestion
;
private
String
esnCode
;
private
Integer
status
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/hygf/JpInverter.java
View file @
9247233c
...
...
@@ -16,7 +16,7 @@ import java.util.Date;
@Data
@Accessors
(
chain
=
true
)
@TableName
(
"hygf_jp_inverter"
)
public
class
JpInverter
implements
Serializable
{
public
class
JpInverter
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterCollectorList.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"imaster_collector_list"
,
autoResultMap
=
true
)
public
class
ImasterCollectorList
{
private
Long
createdTime
;
private
Long
id
;
private
String
stationCode
;
private
String
stationName
;
private
String
devName
;
private
String
esnCode
;
private
Integer
devTypeId
;
private
String
softwareVersion
;
private
String
invType
;
private
Double
longitude
;
private
Double
latitude
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterInverterList.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"imaster_inverter_list"
,
autoResultMap
=
true
)
public
class
ImasterInverterList
{
private
Long
createdTime
;
private
Long
id
;
private
String
stationCode
;
private
String
stationName
;
private
String
collectorSnCode
;
private
String
devName
;
private
String
esnCode
;
private
Integer
devTypeId
;
private
String
softwareVersion
;
private
String
invType
;
private
Double
longitude
;
private
Double
latitude
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterInverterListDetails.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"imaster_inverter_list_details"
,
autoResultMap
=
true
)
public
class
ImasterInverterListDetails
{
private
Long
createdTime
;
private
String
inverterId
;
Double
pv26_i
;
Double
pv2_u
;
Double
pv28_i
;
Double
pv4_u
;
Double
pv22_i
;
Double
power_factor
;
Double
pv6_u
;
Double
mppt_total_cap
;
Double
pv24_i
;
Double
pv8_u
;
Double
open_time
;
Double
pv22_u
;
Double
a_i
;
Double
pv24_u
;
Double
mppt_9_cap
;
Double
c_i
;
Double
pv20_u
;
Double
pv19_u
;
Double
pv15_u
;
Double
reactive_power
;
Double
a_u
;
Double
pv17_u
;
Double
c_u
;
Double
mppt_8_cap
;
Double
pv20_i
;
Double
pv15_i
;
Double
efficiency
;
Double
pv17_i
;
Double
pv11_i
;
Double
pv13_i
;
Double
pv11_u
;
Double
mppt_power
;
Double
pv13_u
;
Double
run_state
;
Double
close_time
;
Double
pv19_i
;
Double
mppt_7_cap
;
Double
mppt_5_cap
;
Double
pv27_u
;
Double
pv2_i
;
Double
active_power
;
Double
pv4_i
;
Double
pv6_i
;
Double
pv8_i
;
Double
mppt_6_cap
;
Double
pv27_i
;
Double
pv1_u
;
Double
pv3_u
;
Double
pv23_i
;
Double
pv5_u
;
Double
pv25_i
;
Double
pv7_u
;
Double
pv23_u
;
Double
inverter_state
;
Double
pv9_u
;
Double
pv25_u
;
Double
total_cap
;
Double
mppt_3_cap
;
Double
b_i
;
Double
pv21_u
;
Double
mppt_10_cap
;
Double
pv16_u
;
Double
pv18_u
;
Double
temperature
;
Double
bc_u
;
Double
b_u
;
Double
pv21_i
;
Double
elec_freq
;
Double
mppt_4_cap
;
Double
pv16_i
;
Double
pv18_i
;
Double
day_cap
;
Double
pv12_i
;
Double
pv14_i
;
Double
pv12_u
;
Double
mppt_1_cap
;
Double
pv14_u
;
Double
pv10_u
;
Double
pv26_u
;
Double
pv1_i
;
Double
pv28_u
;
Double
pv3_i
;
Double
mppt_2_cap
;
Double
pv5_i
;
Double
ab_u
;
Double
ca_u
;
Double
pv7_i
;
Double
pv10_i
;
Double
pv9_i
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterStationDetail.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"imaster_station_details"
,
autoResultMap
=
true
)
public
class
ImasterStationDetail
{
private
Long
createdTime
;
private
String
stationCode
;
private
Double
day_power
;
private
Double
month_power
;
private
Double
total_power
;
private
Double
day_income
;
private
Double
total_income
;
private
Integer
real_health_state
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterStationDetailsDay.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"imaster_station_details_day"
,
autoResultMap
=
true
)
public
class
ImasterStationDetailsDay
{
private
Long
createdTime
;
private
String
stationCode
;
private
Double
installedCapacity
;
private
Double
radiationIntensity
;
private
Double
theoryPower
;
private
Double
performanceRatio
;
private
Double
inverterPower
;
private
Double
ongridPower
;
private
Double
usePower
;
private
Double
powerProfit
;
private
Double
perpowerRatio
;
private
Double
reductionTotalCo2
;
private
Double
reductionTotalCoal
;
private
Double
reductionTotalTree
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterStationDetailsMonth.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"imaster_station_details_month"
,
autoResultMap
=
true
)
public
class
ImasterStationDetailsMonth
{
private
Long
createdTime
;
private
String
stationCode
;
private
Double
installedCapacity
;
private
Double
radiationIntensity
;
private
Double
theoryPower
;
private
Double
performanceRatio
;
private
Double
inverterPower
;
private
Double
ongridPower
;
private
Double
usePower
;
private
Double
powerProfit
;
private
Double
perpowerRatio
;
private
Double
reductionTotalCo2
;
private
Double
reductionTotalCoal
;
private
Double
reductionTotalTree
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterStationDetailsYear.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
value
=
"imaster_station_details_year"
,
autoResultMap
=
true
)
public
class
ImasterStationDetailsYear
{
private
Long
createdTime
;
private
String
stationCode
;
private
Double
installedCapacity
;
private
Double
radiationIntensity
;
private
Double
theoryPower
;
private
Double
performanceRatio
;
private
Double
inverterPower
;
private
Double
ongridPower
;
private
Double
usePower
;
private
Double
powerProfit
;
private
Double
perpowerRatio
;
private
Double
reductionTotalCo2
;
private
Double
reductionTotalCoal
;
private
Double
reductionTotalTree
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/houseapi/entity/tdeingine/ImasterStationList.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
orm
.
houseapi
.
entity
.
tdeingine
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
@Data
@TableName
(
value
=
"imaster_station_list"
,
autoResultMap
=
true
)
public
class
ImasterStationList
implements
Serializable
{
private
Long
createdTime
;
private
String
latitude
;
private
String
longitude
;
private
String
plantAddress
;
private
String
plantName
;
private
String
plantCode
;
private
String
contactPerson
;
private
String
contactMethod
;
private
String
gridConnectionDate
;
private
Double
capacity
;
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/mapper/tdengine/ImasterCollectorListMapper.java
0 → 100644
View file @
9247233c
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.ImasterCollectorList
;
import
org.apache.ibatis.annotations.Select
;
import
java.util.List
;
public
interface
ImasterCollectorListMapper
extends
BaseMapper
<
ImasterCollectorList
>
{
@Select
(
"select id from imaster_collector_list where esn_code is not null group by id"
)
List
<
Long
>
getCollectIds
();
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/mapper/tdengine/ImasterInverterListDetailsMapper.java
0 → 100644
View file @
9247233c
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.ImasterInverterListDetails
;
public
interface
ImasterInverterListDetailsMapper
extends
BaseMapper
<
ImasterInverterListDetails
>
{
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/mapper/tdengine/ImasterInverterListMapper.java
0 → 100644
View file @
9247233c
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.ImasterInverterList
;
import
org.apache.ibatis.annotations.Select
;
import
java.util.List
;
public
interface
ImasterInverterListMapper
extends
BaseMapper
<
ImasterInverterList
>
{
@Select
(
"select esn_code from imaster_inverter_list where esn_code is not null group by esn_code"
)
List
<
String
>
getCollectIds
();
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/mapper/tdengine/ImasterStationDetailsMapper.java
0 → 100644
View file @
9247233c
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.ImasterInverterListDetails
;
import
com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.tdeingine.ImasterStationDetail
;
public
interface
ImasterStationDetailsMapper
extends
BaseMapper
<
ImasterStationDetail
>
{
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/orm/mapper/tdengine/ImasterStationMapper.java
0 → 100644
View file @
9247233c
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.ImasterStationList
;
import
org.apache.ibatis.annotations.Select
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
public
interface
ImasterStationMapper
extends
BaseMapper
<
ImasterStationList
>
{
@Select
(
"select * from imaster_station_list"
)
List
<
ImasterStationList
>
getStationInfo
();
@Select
(
"select plant_code as plantCode from imaster_station_list group by plant_code"
)
List
<
String
>
getStationIds
();
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/service/ImasterDataService.java
0 → 100644
View file @
9247233c
package
com
.
yeejoin
.
amos
.
api
.
householdapi
.
face
.
service
;
public
interface
ImasterDataService
{
/**
* @descrption 场站列表数据入库
*/
void
stationList
();
/**
* @descrption 场站详情数据入库
*/
void
stationDetail
();
/**
* @descrption 采集器列表数据入库
*/
void
collectorList
();
/**
* @descrption 采集器详情数据入库
*/
void
collectorDetail
();
/**
* @descrption 逆变器列表数据入库
*/
void
inverterList
();
/**
* @descrption 逆变器详情数据入库
*/
void
inverterDetail
();
/**
* @descrption 采集器告警列表数据入库
*/
void
inverAlramInfo
();
}
amos-boot-data/amos-boot-data-housepvapi/src/main/java/com/yeejoin/amos/api/householdapi/face/service/impl/ImasterDataServiceImpl.java
0 → 100644
View file @
9247233c
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment