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
099be078
Commit
099be078
authored
Apr 13, 2023
by
tangwei
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop_dl_0410' into develop_dl
parents
f060fb4e
328a7cdc
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
142 additions
and
36 deletions
+142
-36
pom.xml
.../amos-boot-module-api/amos-boot-module-patrol-api/pom.xml
+7
-0
MyIdGeneratorConfig.java
.../amos/patrol/core/common/request/MyIdGeneratorConfig.java
+59
-0
BasicEntity.java
.../java/com/yeejoin/amos/patrol/dao/entity/BasicEntity.java
+6
-1
pom.xml
.../amos-boot-module-biz/amos-boot-module-patrol-biz/pom.xml
+19
-0
InputItemController.java
.../amos/patrol/business/controller/InputItemController.java
+4
-3
PlanController.java
...ejoin/amos/patrol/business/controller/PlanController.java
+9
-1
InputItemMapper.java
...join/amos/patrol/business/dao/mapper/InputItemMapper.java
+2
-1
InputItemExcelDto.java
...m/yeejoin/amos/patrol/business/dto/InputItemExcelDto.java
+14
-7
InputItemExcelVo.java
...om/yeejoin/amos/patrol/business/dto/InputItemExcelVo.java
+0
-0
CheckServiceImpl.java
...n/amos/patrol/business/service/impl/CheckServiceImpl.java
+5
-1
application.properties
...t-system-patrol/src/main/resources/application.properties
+7
-2
dbTemplate_input_item.xml
...ol/src/main/resources/db/mapper/dbTemplate_input_item.xml
+10
-20
No files found.
amos-boot-module/amos-boot-module-api/amos-boot-module-patrol-api/pom.xml
View file @
099be078
...
@@ -12,6 +12,13 @@
...
@@ -12,6 +12,13 @@
<artifactId>
amos-boot-module-patrol-api
</artifactId>
<artifactId>
amos-boot-module-patrol-api
</artifactId>
<dependencies>
<dependencies>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
5.3.10
</version>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
...
...
amos-boot-module/amos-boot-module-api/amos-boot-module-patrol-api/src/main/java/com/yeejoin/amos/patrol/core/common/request/MyIdGeneratorConfig.java
0 → 100644
View file @
099be078
package
com
.
yeejoin
.
amos
.
patrol
.
core
.
common
.
request
;
import
cn.hutool.core.lang.Snowflake
;
import
cn.hutool.core.net.NetUtil
;
import
cn.hutool.core.util.IdUtil
;
import
org.hibernate.HibernateException
;
import
org.hibernate.engine.spi.SharedSessionContractImplementor
;
import
org.hibernate.id.IdentifierGenerator
;
import
org.springframework.beans.factory.annotation.Value
;
import
javax.annotation.PostConstruct
;
import
java.io.Serializable
;
/**
* @description:
* @author: tw
* @createDate: 2023/4/10
*/
public
class
MyIdGeneratorConfig
implements
IdentifierGenerator
{
/**
* 终端ID
*/
@Value
(
"${generator.worker_id}"
)
public
long
WORKER_ID
;
/**
* 数据中心id
*/
@Value
(
"${generator.datacenter_id}"
)
public
long
DATACENTER_ID
;
private
Snowflake
snowflake
=
IdUtil
.
createSnowflake
(
WORKER_ID
,
DATACENTER_ID
);
@PostConstruct
public
void
init
()
{
WORKER_ID
=
NetUtil
.
ipv4ToLong
(
NetUtil
.
getLocalhostStr
());
}
public
synchronized
long
snowflakeId
()
{
return
snowflake
.
nextId
();
}
public
synchronized
long
snowflakeId
(
long
workerId
,
long
datacenterId
)
{
Snowflake
snowflake
=
IdUtil
.
createSnowflake
(
workerId
,
datacenterId
);
return
snowflake
.
nextId
();
}
@Override
public
Serializable
generate
(
SharedSessionContractImplementor
session
,
Object
object
)
throws
HibernateException
{
return
snowflakeId
(
WORKER_ID
,
DATACENTER_ID
);
}
}
amos-boot-module/amos-boot-module-api/amos-boot-module-patrol-api/src/main/java/com/yeejoin/amos/patrol/dao/entity/BasicEntity.java
View file @
099be078
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.patrol.dao.entity;
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.patrol.dao.entity;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
lombok.Data
;
import
org.hibernate.annotations.GenericGenerator
;
import
org.springframework.data.annotation.CreatedDate
;
import
org.springframework.data.annotation.CreatedDate
;
import
org.springframework.data.jpa.domain.support.AuditingEntityListener
;
import
org.springframework.data.jpa.domain.support.AuditingEntityListener
;
...
@@ -35,7 +36,11 @@ public class BasicEntity implements Serializable{
...
@@ -35,7 +36,11 @@ public class BasicEntity implements Serializable{
private
Date
createDate
;
private
Date
createDate
;
@Id
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@GeneratedValue
(
generator
=
"myIdGeneratorConfig"
,
strategy
=
GenerationType
.
AUTO
)
@GenericGenerator
(
name
=
"myIdGeneratorConfig"
,
strategy
=
"com.yeejoin.amos.patrol.core.common.request.MyIdGeneratorConfig"
)
@Column
(
name
=
"ID"
,
nullable
=
false
,
unique
=
true
)
@Column
(
name
=
"ID"
,
nullable
=
false
,
unique
=
true
)
public
long
getId
()
{
public
long
getId
()
{
return
id
;
return
id
;
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-patrol-biz/pom.xml
View file @
099be078
...
@@ -18,6 +18,25 @@
...
@@ -18,6 +18,25 @@
<version>
${amos-biz-boot.version}
</version>
<version>
${amos-biz-boot.version}
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
easyexcel
</artifactId>
<version>
3.1.1
</version>
<exclusions>
<exclusion>
<groupId>
org.ow2.asm
</groupId>
<artifactId>
asm
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.apache.poi
</groupId>
<artifactId>
poi
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.apache.poi
</groupId>
<artifactId>
poi-ooxml
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
com.yeejoin
</groupId>
<groupId>
com.yeejoin
</groupId>
<artifactId>
amos-component-rule
</artifactId>
<artifactId>
amos-component-rule
</artifactId>
<exclusions>
<exclusions>
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-patrol-biz/src/main/java/com/yeejoin/amos/patrol/business/controller/InputItemController.java
View file @
099be078
...
@@ -12,6 +12,7 @@ import com.yeejoin.amos.patrol.business.dao.repository.IPointInputItemDao;
...
@@ -12,6 +12,7 @@ import com.yeejoin.amos.patrol.business.dao.repository.IPointInputItemDao;
import
com.yeejoin.amos.patrol.business.dto.InputItemDataDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemDataDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemDataJsonlDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemDataJsonlDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemExcelDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemExcelDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemExcelVo
;
import
com.yeejoin.amos.patrol.business.feign.JcsFeignClient
;
import
com.yeejoin.amos.patrol.business.feign.JcsFeignClient
;
import
com.yeejoin.amos.patrol.business.param.InputItemPageParam
;
import
com.yeejoin.amos.patrol.business.param.InputItemPageParam
;
import
com.yeejoin.amos.patrol.business.param.InputItemParam
;
import
com.yeejoin.amos.patrol.business.param.InputItemParam
;
...
@@ -370,9 +371,9 @@ public class InputItemController extends AbstractBaseController {
...
@@ -370,9 +371,9 @@ public class InputItemController extends AbstractBaseController {
@RequestMapping
(
value
=
"/exportData"
,
produces
=
"application/json;charset=UTF-8"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/exportData"
,
produces
=
"application/json;charset=UTF-8"
,
method
=
RequestMethod
.
GET
)
public
void
exportData
(
HttpServletResponse
response
)
{
public
void
exportData
(
HttpServletResponse
response
)
{
InputItemPageParam
criterias
=
new
InputItemPageParam
();
InputItemPageParam
criterias
=
new
InputItemPageParam
();
List
<
InputItemExcel
Dt
o
>
content
=
inputItemMapper
.
getInputItemInfoExcelNew
(
criterias
);
List
<
InputItemExcel
V
o
>
content
=
inputItemMapper
.
getInputItemInfoExcelNew
(
criterias
);
//此处对数据做统一处理 拼接为易读内容
//此处对数据做统一处理 拼接为易读内容
for
(
InputItemExcel
Dt
o
inputItemExcelDto
:
content
)
{
for
(
InputItemExcel
V
o
inputItemExcelDto
:
content
)
{
String
text
=
""
;
String
text
=
""
;
if
(
inputItemExcelDto
.
getItemType
().
equals
(
"选择"
)&&
!
inputItemExcelDto
.
getDataJson
().
equals
(
"[]"
))
{
if
(
inputItemExcelDto
.
getItemType
().
equals
(
"选择"
)&&
!
inputItemExcelDto
.
getDataJson
().
equals
(
"[]"
))
{
List
<
Map
>
maps
=
JSONObject
.
parseArray
(
inputItemExcelDto
.
getDataJson
(),
Map
.
class
);
List
<
Map
>
maps
=
JSONObject
.
parseArray
(
inputItemExcelDto
.
getDataJson
(),
Map
.
class
);
...
@@ -395,7 +396,7 @@ public class InputItemController extends AbstractBaseController {
...
@@ -395,7 +396,7 @@ public class InputItemController extends AbstractBaseController {
}
}
}
}
ExcelUtil
.
createTemplate
(
response
,
"检查项"
,
"检查项"
,
content
,
InputItemExcel
Dt
o
.
class
,
null
,
true
);
ExcelUtil
.
createTemplate
(
response
,
"检查项"
,
"检查项"
,
content
,
InputItemExcel
V
o
.
class
,
null
,
true
);
}
}
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-patrol-biz/src/main/java/com/yeejoin/amos/patrol/business/controller/PlanController.java
View file @
099be078
package
com
.
yeejoin
.
amos
.
patrol
.
business
.
controller
;
package
com
.
yeejoin
.
amos
.
patrol
.
business
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.boot.biz.common.bo.ReginParams
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.component.feign.model.FeignClientResult
;
import
com.yeejoin.amos.patrol.business.constants.XJConstant
;
import
com.yeejoin.amos.patrol.business.constants.XJConstant
;
...
@@ -238,7 +240,13 @@ public class PlanController extends AbstractBaseController {
...
@@ -238,7 +240,13 @@ public class PlanController extends AbstractBaseController {
public
CommonResponse
queryPointById
(
@ApiParam
(
value
=
"计划id"
,
required
=
true
)
@PathVariable
(
name
=
"id"
)
Long
id
)
{
public
CommonResponse
queryPointById
(
@ApiParam
(
value
=
"计划id"
,
required
=
true
)
@PathVariable
(
name
=
"id"
)
Long
id
)
{
Plan
plan
=
planService
.
queryPlanById
(
id
);
Plan
plan
=
planService
.
queryPlanById
(
id
);
return
CommonResponseUtil
.
success
(
plan
);
String
json
=
plan
!=
null
?
JSON
.
toJSONString
(
plan
):
null
;
JSONObject
obj
=
json
!=
null
?
JSON
.
parseObject
(
json
):
null
;
if
(
obj
!=
null
){
obj
.
put
(
"id"
,
obj
.
get
(
"id"
).
toString
());
}
return
CommonResponseUtil
.
success
(
obj
);
}
}
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-patrol-biz/src/main/java/com/yeejoin/amos/patrol/business/dao/mapper/InputItemMapper.java
View file @
099be078
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.patrol.business.dao.mapper;
...
@@ -2,6 +2,7 @@ package com.yeejoin.amos.patrol.business.dao.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.patrol.business.dto.InputItemExcelDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemExcelDto
;
import
com.yeejoin.amos.patrol.business.dto.InputItemExcelVo
;
import
com.yeejoin.amos.patrol.business.param.InputItemPageParam
;
import
com.yeejoin.amos.patrol.business.param.InputItemPageParam
;
import
com.yeejoin.amos.patrol.business.vo.InputItemVo
;
import
com.yeejoin.amos.patrol.business.vo.InputItemVo
;
import
com.yeejoin.amos.patrol.business.vo.PointInputItemVo
;
import
com.yeejoin.amos.patrol.business.vo.PointInputItemVo
;
...
@@ -31,7 +32,7 @@ public interface InputItemMapper extends BaseMapper<InputItem> {
...
@@ -31,7 +32,7 @@ public interface InputItemMapper extends BaseMapper<InputItem> {
public
List
<
InputItemVo
>
getInputItemInfoNew
(
InputItemPageParam
param
);
public
List
<
InputItemVo
>
getInputItemInfoNew
(
InputItemPageParam
param
);
public
List
<
InputItemExcel
Dt
o
>
getInputItemInfoExcelNew
(
InputItemPageParam
param
);
public
List
<
InputItemExcel
V
o
>
getInputItemInfoExcelNew
(
InputItemPageParam
param
);
Map
<
Long
,
Long
>
getAllCountInfo
();
Map
<
Long
,
Long
>
getAllCountInfo
();
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-patrol-biz/src/main/java/com/yeejoin/amos/patrol/business/dto/InputItemExcelDto.java
View file @
099be078
...
@@ -71,7 +71,7 @@ public class InputItemExcelDto extends BaseDto {
...
@@ -71,7 +71,7 @@ public class InputItemExcelDto extends BaseDto {
@ExplicitConstraint
(
indexNum
=
11
,
source
=
{
"是"
,
"否"
})
@ExplicitConstraint
(
indexNum
=
11
,
source
=
{
"是"
,
"否"
})
@ExcelProperty
(
value
=
"是否必填"
,
index
=
11
)
@ExcelProperty
(
value
=
"是否必填"
,
index
=
11
)
@ApiModelProperty
(
value
=
"是否必填"
)
@ApiModelProperty
(
value
=
"是否必填"
)
private
String
isMust
=
"
0
"
;
private
String
isMust
=
"
否
"
;
@ExplicitConstraint
(
indexNum
=
12
,
source
=
{
"是"
,
"否"
})
@ExplicitConstraint
(
indexNum
=
12
,
source
=
{
"是"
,
"否"
})
@ExcelProperty
(
value
=
"是否评分"
,
index
=
12
)
@ExcelProperty
(
value
=
"是否评分"
,
index
=
12
)
...
@@ -298,20 +298,27 @@ public class InputItemExcelDto extends BaseDto {
...
@@ -298,20 +298,27 @@ public class InputItemExcelDto extends BaseDto {
}
}
public
String
getKeyPartsType
()
{
public
String
getKeyPartsType
()
{
return
keyPartsType
.
equals
(
"是"
)?
"0"
:
"1"
;
return
keyPartsType
;
// keyPartsType.equals("是")?"0":"1";
}
}
public
void
setKeyPartsType
(
String
keyPartsType
)
{
public
void
setKeyPartsType
(
String
keyPartsType
)
{
this
.
keyPartsType
=
StringUtils
.
isEmpty
(
keyPartsType
)
?
"1"
:
keyPartsType
;
// this.keyPartsType = StringUtils.isEmpty(keyPartsType) ? "1":keyPartsType;
this
.
keyPartsType
=
StringUtils
.
isNotEmpty
(
keyPartsType
)
?
(
keyPartsType
.
equals
(
"是"
)?
"0"
:
"1"
)
:
keyPartsType
;
}
}
public
String
getCustomType
()
{
public
String
getCustomType
()
{
return
customType
.
equals
(
"是"
)?
"0"
:
"1"
;
return
customType
;
}
}
public
void
setCustomType
(
String
customType
)
{
/*
public void setCustomType(String customType) {
this.customType = StringUtils.isEmpty(customType) ? "1":customType;
this.customType = StringUtils.isEmpty(customType) ? "1":customType;
}*/
public
void
setCustomType
(
String
customType
)
{
this
.
customType
=
StringUtils
.
isNotEmpty
(
customType
)
?
(
customType
.
equals
(
"是"
)?
"0"
:
"1"
)
:
customType
;
}
}
public
String
getUnit
()
{
public
String
getUnit
()
{
...
@@ -347,11 +354,11 @@ public class InputItemExcelDto extends BaseDto {
...
@@ -347,11 +354,11 @@ public class InputItemExcelDto extends BaseDto {
}
}
public
String
getLevel
()
{
public
String
getLevel
()
{
return
level
==
null
?
null
:
String
.
valueOf
(
PointLevelEnum
.
getValue
(
level
))
;
return
level
;
}
}
public
void
setLevel
(
String
level
)
{
public
void
setLevel
(
String
level
)
{
this
.
level
=
level
;
this
.
level
=
level
==
null
?
null
:
String
.
valueOf
(
PointLevelEnum
.
getValue
(
level
))
;
}
}
public
long
getCatalogId
()
{
public
long
getCatalogId
()
{
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-patrol-biz/src/main/java/com/yeejoin/amos/patrol/business/dto/InputItemExcelVo.java
0 → 100644
View file @
099be078
This diff is collapsed.
Click to expand it.
amos-boot-module/amos-boot-module-biz/amos-boot-module-patrol-biz/src/main/java/com/yeejoin/amos/patrol/business/service/impl/CheckServiceImpl.java
View file @
099be078
...
@@ -614,7 +614,11 @@ public class CheckServiceImpl implements ICheckService {
...
@@ -614,7 +614,11 @@ public class CheckServiceImpl implements ICheckService {
imgList
.
add
(
img
);
imgList
.
add
(
img
);
}
}
}
}
List
<
CheckInput
>
checkInputList
=
checkInputDao
.
saveAll
(
checkItemList
);
List
<
CheckInput
>
checkInputList
=
new
ArrayList
<>();
for
(
CheckInput
checkInput
:
checkItemList
)
{
checkInputDao
.
saveAndFlush
(
checkInput
);
checkInputList
.
add
(
checkInput
);
}
//规则请求结果
//规则请求结果
checkInputList
.
forEach
(
checkInput
->
{
checkInputList
.
forEach
(
checkInput
->
{
InputItem
inputItem
=
inputItemDao
.
findById
(
checkInput
.
getInputId
()).
get
();
InputItem
inputItem
=
inputItemDao
.
findById
(
checkInput
.
getInputId
()).
get
();
...
...
amos-boot-system-patrol/src/main/resources/application.properties
View file @
099be078
...
@@ -67,4 +67,9 @@ equipment.hierarchy=1,2,4,6
...
@@ -67,4 +67,9 @@ equipment.hierarchy=1,2,4,6
management.security.enabled
=
true
management.security.enabled
=
true
spring.security.user.name
=
admin
spring.security.user.name
=
admin
spring.security.user.password
=
a1234560
spring.security.user.password
=
a1234560
\ No newline at end of file
#雪花算法参数 终端ID
generator.worker_id
=
1
#雪花算法参数 数据中心id
generator.datacenter_id
=
1
\ No newline at end of file
amos-boot-system-patrol/src/main/resources/db/mapper/dbTemplate_input_item.xml
View file @
099be078
...
@@ -388,7 +388,7 @@
...
@@ -388,7 +388,7 @@
</choose>
</choose>
</select>
</select>
<select
id=
"getInputItemInfoExcelNew"
resultType=
"com.yeejoin.amos.patrol.business.dto.InputItemExcel
Dt
o"
>
<select
id=
"getInputItemInfoExcelNew"
resultType=
"com.yeejoin.amos.patrol.business.dto.InputItemExcel
V
o"
>
SELECT
SELECT
a.id,
a.id,
a.name,
a.name,
...
@@ -402,40 +402,30 @@
...
@@ -402,40 +402,30 @@
a.input_classify,
a.input_classify,
a.check_method,
a.check_method,
(CASE a.equipment_type
(CASE a.equipment_type
WHEN
a.equipment_type is not null and a.equipment_type =
'-1'
WHEN '-1'
THEN '通用消防装备'
THEN '通用消防装备'
ELSE
ELSE
(select name from wl_equipment_category where code = a.equipment_type AND industry_code = 2)
(select name from wl_equipment_category where code = a.equipment_type AND industry_code = 2)
END) as equipment_type,
END) as equipment_type,
(CASE a.facilities_type
(CASE a.facilities_type
WHEN
a.facilities_type is not null and a.facilities_type =
'-1'
WHEN '-1'
THEN '通用消防设施'
THEN '通用消防设施'
ELSE (select name from wl_equipment_category where code = a.facilities_type AND industry_code = 2)
ELSE (select name from wl_equipment_category where code = a.facilities_type AND industry_code = 2)
END) as facilities_type,
END) as facilities_type,
(CASE a.level
(CASE a.level
WHEN 1 THEN
WHEN 1 THEN
'
1
级'
'
一
级'
WHEN 2 THEN
WHEN 2 THEN
'
2
级'
'
二
级'
WHEN 3 THEN
WHEN 3 THEN
'
3
级'
'
三
级'
WHEN 4 THEN
WHEN 4 THEN
'
4
级'
'
四
级'
ELSE
ELSE
'
5
级'
'
五
级'
END )AS level,
END )AS level,
(CASE a.key_parts_type
IFNULL(a.key_parts_type,1) AS keyPartsType,
WHEN 0 THEN
IFNULL(a.custom_type,1) AS customType,
'是'
WHEN 1 THEN
'否'
END )AS keyPartsType,
(CASE a.custom_type
WHEN 0 THEN
'是'
WHEN 1 THEN
'否'
END )AS customType,
a.risk_desc,
a.risk_desc,
a.data_json
a.data_json
from
from
...
...
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