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
aa954fd0
Commit
aa954fd0
authored
Dec 28, 2022
by
zhangyingbin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改96333处置记录、接警记录、通话记录列表筛选规则
parent
edaaab59
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
70 additions
and
36 deletions
+70
-36
AlertCalledMapper.java
...in/amos/boot/module/tzs/api/mapper/AlertCalledMapper.java
+3
-1
VoiceRecordFileMapper.java
...mos/boot/module/tzs/api/mapper/VoiceRecordFileMapper.java
+3
-1
AlertCalledMapper.xml
...e-tzs-api/src/main/resources/mapper/AlertCalledMapper.xml
+6
-1
VoiceRecordFileMapper.xml
...s-api/src/main/resources/mapper/VoiceRecordFileMapper.xml
+6
-0
AlertCalledController.java
...boot/module/tzs/biz/controller/AlertCalledController.java
+16
-19
AlertCalledServiceImpl.java
...t/module/tzs/biz/service/impl/AlertCalledServiceImpl.java
+15
-9
VoiceRecordFileServiceImpl.java
...dule/tzs/biz/service/impl/VoiceRecordFileServiceImpl.java
+21
-5
No files found.
amos-boot-system-tzs/amos-boot-module-tzs-api/src/main/java/com/yeejoin/amos/boot/module/tzs/api/mapper/AlertCalledMapper.java
View file @
aa954fd0
...
@@ -18,6 +18,7 @@ import org.typroject.tyboot.core.rdbms.annotation.Operator;
...
@@ -18,6 +18,7 @@ import org.typroject.tyboot.core.rdbms.annotation.Operator;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
/**
/**
* 警情接警填报记录 Mapper 接口
* 警情接警填报记录 Mapper 接口
...
@@ -73,7 +74,8 @@ public interface AlertCalledMapper extends BaseMapper<AlertCalled> {
...
@@ -73,7 +74,8 @@ public interface AlertCalledMapper extends BaseMapper<AlertCalled> {
@Param
(
"alertStage"
)
String
alertStage
,
@Param
(
"alertStage"
)
String
alertStage
,
@Param
(
"alertStatus"
)
String
alertStatus
,
@Param
(
"alertStatus"
)
String
alertStatus
,
@Param
(
"sortParam"
)
String
sortParam
,
@Param
(
"sortParam"
)
String
sortParam
,
@Param
(
"sortRule"
)
String
sortRule
);
@Param
(
"sortRule"
)
String
sortRule
,
@Param
(
"userIds"
)
Set
<
String
>
userIds
);
Map
<
String
,
Integer
>
getTodayEmergencyCount
(
String
regionCode
);
Map
<
String
,
Integer
>
getTodayEmergencyCount
(
String
regionCode
);
...
...
amos-boot-system-tzs/amos-boot-module-tzs-api/src/main/java/com/yeejoin/amos/boot/module/tzs/api/mapper/VoiceRecordFileMapper.java
View file @
aa954fd0
...
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
...
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
/**
/**
* 通话记录附件 Mapper 接口
* 通话记录附件 Mapper 接口
...
@@ -23,7 +24,8 @@ public interface VoiceRecordFileMapper extends BaseMapper<VoiceRecordFile> {
...
@@ -23,7 +24,8 @@ public interface VoiceRecordFileMapper extends BaseMapper<VoiceRecordFile> {
@Param
(
"tel"
)
String
tel
,
@Param
(
"tel"
)
String
tel
,
@Param
(
"workNum"
)
String
workNum
,
@Param
(
"workNum"
)
String
workNum
,
@Param
(
"sortParam"
)
String
sortParam
,
@Param
(
"sortParam"
)
String
sortParam
,
@Param
(
"sortRule"
)
String
sortRule
);
@Param
(
"sortRule"
)
String
sortRule
,
@Param
(
"userIds"
)
Set
<
String
>
UserIds
);
VoiceRecordFileDto
getRecordById
(
@Param
(
"sequenceNbr"
)
Long
sequenceNbr
);
VoiceRecordFileDto
getRecordById
(
@Param
(
"sequenceNbr"
)
Long
sequenceNbr
);
...
...
amos-boot-system-tzs/amos-boot-module-tzs-api/src/main/resources/mapper/AlertCalledMapper.xml
View file @
aa954fd0
...
@@ -252,10 +252,15 @@
...
@@ -252,10 +252,15 @@
<if
test=
"alertStatus != null and alertStatus != ''"
>
<if
test=
"alertStatus != null and alertStatus != ''"
>
AND a.alert_status = #{alertStatus}
AND a.alert_status = #{alertStatus}
</if>
</if>
<if
test=
"userIds != null and userIds.size>0"
>
AND a.rec_user_id in
<foreach
collection=
"userIds"
item=
"item"
index=
"index"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</if>
<if
test=
"sortParam != null and sortParam != '' and sortRule != null and sortRule != '' "
>
<if
test=
"sortParam != null and sortParam != '' and sortRule != null and sortRule != '' "
>
ORDER BY ${sortParam} ${sortRule}
ORDER BY ${sortParam} ${sortRule}
</if>
</if>
</select>
</select>
<select
id=
"getTodayEmergencyCount"
resultType=
"java.util.Map"
>
<select
id=
"getTodayEmergencyCount"
resultType=
"java.util.Map"
>
...
...
amos-boot-system-tzs/amos-boot-module-tzs-api/src/main/resources/mapper/VoiceRecordFileMapper.xml
View file @
aa954fd0
...
@@ -39,6 +39,12 @@
...
@@ -39,6 +39,12 @@
<if
test=
"fileType != null and fileType != ''"
>
<if
test=
"fileType != null and fileType != ''"
>
AND r.file_type = #{fileType}
AND r.file_type = #{fileType}
</if>
</if>
<if
test=
"userIds != null and userIds.size>0"
>
and a.rec_user_id in
<foreach
collection=
"userIds"
item=
"item"
index=
"index"
open=
"("
separator=
","
close=
")"
>
#{item}
</foreach>
</if>
<choose>
<choose>
<when
test=
"sortParam != null and sortParam != '' and sortRule != null and sortRule != '' "
>
<when
test=
"sortParam != null and sortParam != '' and sortRule != null and sortRule != '' "
>
ORDER BY ${sortParam} ${sortRule}
ORDER BY ${sortParam} ${sortRule}
...
...
amos-boot-system-tzs/amos-boot-module-tzs-biz/src/main/java/com/yeejoin/amos/boot/module/tzs/biz/controller/AlertCalledController.java
View file @
aa954fd0
...
@@ -16,22 +16,12 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
...
@@ -16,22 +16,12 @@ import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import
com.yeejoin.amos.boot.module.common.api.excel.ExcelUtil
;
import
com.yeejoin.amos.boot.module.common.api.excel.ExcelUtil
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.MaintenanceCompanyServiceImpl
;
import
com.yeejoin.amos.boot.module.common.biz.service.impl.MaintenanceCompanyServiceImpl
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.*
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.*
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.AlertCalled
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.*
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.DispatchPaper
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.Elevator
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.TemplateExport
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.WechatRelation
;
import
com.yeejoin.amos.boot.module.tzs.api.enums.AlertStageEnums
;
import
com.yeejoin.amos.boot.module.tzs.api.enums.AlertStageEnums
;
import
com.yeejoin.amos.boot.module.tzs.api.service.IMaintenanceUnitService
;
import
com.yeejoin.amos.boot.module.tzs.api.service.IMaintenanceUnitService
;
import
com.yeejoin.amos.boot.module.tzs.api.service.IUseUnitService
;
import
com.yeejoin.amos.boot.module.tzs.api.service.IUseUnitService
;
import
com.yeejoin.amos.boot.module.tzs.api.service.TzsAuthService
;
import
com.yeejoin.amos.boot.module.tzs.api.service.TzsAuthService
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.AlertCalledServiceImpl
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.*
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.AlertFormValueServiceImpl
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.DispatchPaperServiceImpl
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.ESAlertCalledService
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.ElevatorServiceImpl
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.TemplateExportServiceImpl
;
import
com.yeejoin.amos.boot.module.tzs.biz.service.impl.WechatRelationServiceImpl
;
import
com.yeejoin.amos.boot.module.tzs.biz.utils.AlertBeanDtoVoUtils
;
import
com.yeejoin.amos.boot.module.tzs.biz.utils.AlertBeanDtoVoUtils
;
import
com.yeejoin.amos.boot.module.tzs.biz.utils.BeanDtoVoUtils
;
import
com.yeejoin.amos.boot.module.tzs.biz.utils.BeanDtoVoUtils
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
import
com.yeejoin.amos.feign.privilege.Privilege
;
...
@@ -62,13 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
...
@@ -62,13 +52,7 @@ import org.typroject.tyboot.core.restful.utils.ResponseModel;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.Iterator
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* 警情接警填报记录
* 警情接警填报记录
...
@@ -122,6 +106,8 @@ public class AlertCalledController extends BaseController {
...
@@ -122,6 +106,8 @@ public class AlertCalledController extends BaseController {
@Autowired
@Autowired
TzsAuthService
tzsAuthService
;
TzsAuthService
tzsAuthService
;
@Autowired
TzsCitInfoServiceImpl
citInfoService
;
@Autowired
@Autowired
private
ElevatorServiceImpl
iElevatorService
;
private
ElevatorServiceImpl
iElevatorService
;
...
@@ -437,6 +423,17 @@ public class AlertCalledController extends BaseController {
...
@@ -437,6 +423,17 @@ public class AlertCalledController extends BaseController {
String
sort
)
{
String
sort
)
{
queryWrapper
.
eq
(
"is_delete"
,
0
);
queryWrapper
.
eq
(
"is_delete"
,
0
);
//根据当前登陆人的所在区域 找到该区域内的接警人id 再找到相关警情
Set
<
String
>
userIds
=
new
HashSet
<>();
String
regionCode
=
this
.
getSelectedOrgInfo
().
getCompany
().
getRegionCode
();
List
<
TzsCitInfo
>
citInfoList
=
citInfoService
.
list
(
new
LambdaQueryWrapper
<
TzsCitInfo
>().
eq
(
TzsCitInfo:
:
getRegionCode
,
regionCode
));
if
(!
ValidationUtil
.
isEmpty
(
citInfoList
)){
for
(
TzsCitInfo
citInfo
:
citInfoList
){
userIds
.
add
(
citInfo
.
getCtiUserId
());
}
}
queryWrapper
.
in
(
"rec_user_id"
,
userIds
);
if
(
sort
!=
null
)
{
// 排序失效
if
(
sort
!=
null
)
{
// 排序失效
String
[]
date
=
sort
.
split
(
","
);
String
[]
date
=
sort
.
split
(
","
);
if
(
date
[
1
].
equals
(
"ascend"
))
{
if
(
date
[
1
].
equals
(
"ascend"
))
{
...
...
amos-boot-system-tzs/amos-boot-module-tzs-biz/src/main/java/com/yeejoin/amos/boot/module/tzs/biz/service/impl/AlertCalledServiceImpl.java
View file @
aa954fd0
...
@@ -41,14 +41,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
...
@@ -41,14 +41,7 @@ import org.typroject.tyboot.core.restful.exception.instance.BadRequest;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
/**
/**
...
@@ -239,10 +232,23 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
...
@@ -239,10 +232,23 @@ public class AlertCalledServiceImpl extends BaseService<AlertCalledDto,AlertCall
String
sortParam
,
String
sortParam
,
String
sortRule
String
sortRule
)
{
)
{
//获取当前登陆人所在单位的下的所有接警人员的userId
Set
<
String
>
userIds
=
new
HashSet
<>();
String
regionCode
=
citInfoService
.
getReginParams
().
getCompany
().
getRegionCode
();
List
<
TzsCitInfo
>
citInfoList
=
citInfoService
.
list
(
new
LambdaQueryWrapper
<
TzsCitInfo
>().
eq
(
TzsCitInfo:
:
getRegionCode
,
regionCode
));
if
(!
ValidationUtil
.
isEmpty
(
citInfoList
)){
for
(
TzsCitInfo
citInfo
:
citInfoList
){
userIds
.
add
(
citInfo
.
getCtiUserId
());
}
}
if
(
ValidationUtil
.
isEmpty
(
userIds
))
{
return
new
Page
<>();
}
Page
<
List
<
AlertCalledQueryDto
>>
list
=
alertCalledMapper
.
queryAlertListByQueryDto
(
page
,
Page
<
List
<
AlertCalledQueryDto
>>
list
=
alertCalledMapper
.
queryAlertListByQueryDto
(
page
,
workOrderNumber
,
creator
,
emergency
,
emergencyTimeStart
,
workOrderNumber
,
creator
,
emergency
,
emergencyTimeStart
,
emergencyTimeEnd
,
emergencyCall
,
deviceId
,
elevatorAddress
,
district
,
alertType
,
emergencyTimeEnd
,
emergencyCall
,
deviceId
,
elevatorAddress
,
district
,
alertType
,
alertSource
,
alertStage
,
alertStatus
,
sortParam
,
sortRule
);
alertSource
,
alertStage
,
alertStatus
,
sortParam
,
sortRule
,
userIds
);
Page
<
AlertCalledQueryDto
>
page1
=
new
Page
<>();
Page
<
AlertCalledQueryDto
>
page1
=
new
Page
<>();
List
<
AlertCalledQueryDto
>
resultDtoList
=
JSONArray
.
parseArray
(
JSONArray
.
toJSONString
(
list
.
getRecords
()),
AlertCalledQueryDto
.
class
);
List
<
AlertCalledQueryDto
>
resultDtoList
=
JSONArray
.
parseArray
(
JSONArray
.
toJSONString
(
list
.
getRecords
()),
AlertCalledQueryDto
.
class
);
page1
.
setCurrent
(
page
.
getCurrent
());
page1
.
setCurrent
(
page
.
getCurrent
());
...
...
amos-boot-system-tzs/amos-boot-module-tzs-biz/src/main/java/com/yeejoin/amos/boot/module/tzs/biz/service/impl/VoiceRecordFileServiceImpl.java
View file @
aa954fd0
...
@@ -2,12 +2,14 @@ package com.yeejoin.amos.boot.module.tzs.biz.service.impl;
...
@@ -2,12 +2,14 @@ package com.yeejoin.amos.boot.module.tzs.biz.service.impl;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.yeejoin.amos.boot.biz.common.feign.AmosFeignService
;
import
com.yeejoin.amos.boot.biz.common.feign.AmosFeignService
;
import
com.yeejoin.amos.boot.biz.common.utils.DateUtils
;
import
com.yeejoin.amos.boot.biz.common.utils.DateUtils
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledFormDto
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledFormDto
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledQueryDto
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.AlertCalledQueryDto
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.VoiceRecordFileDto
;
import
com.yeejoin.amos.boot.module.tzs.api.dto.VoiceRecordFileDto
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.TzsCitInfo
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.VoiceRecordFile
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.VoiceRecordFile
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.VoiceRecordLog
;
import
com.yeejoin.amos.boot.module.tzs.api.entity.VoiceRecordLog
;
import
com.yeejoin.amos.boot.module.tzs.api.mapper.VoiceRecordFileMapper
;
import
com.yeejoin.amos.boot.module.tzs.api.mapper.VoiceRecordFileMapper
;
...
@@ -20,12 +22,10 @@ import org.eclipse.paho.client.mqttv3.MqttException;
...
@@ -20,12 +22,10 @@ import org.eclipse.paho.client.mqttv3.MqttException;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.component.emq.EmqKeeper
;
import
org.typroject.tyboot.core.foundation.utils.ValidationUtil
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
org.typroject.tyboot.core.rdbms.service.BaseService
;
import
java.util.Arrays
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* 通话记录附件服务实现类
* 通话记录附件服务实现类
...
@@ -55,6 +55,9 @@ public class VoiceRecordFileServiceImpl extends BaseService<VoiceRecordFileDto,V
...
@@ -55,6 +55,9 @@ public class VoiceRecordFileServiceImpl extends BaseService<VoiceRecordFileDto,V
@Autowired
@Autowired
VoiceRecordLogServiceImpl
iVoiceRecordLogServiceImpl
;
VoiceRecordLogServiceImpl
iVoiceRecordLogServiceImpl
;
@Autowired
TzsCitInfoServiceImpl
citInfoService
;
/**
/**
* 分页查询
* 分页查询
*/
*/
...
@@ -84,9 +87,22 @@ public class VoiceRecordFileServiceImpl extends BaseService<VoiceRecordFileDto,V
...
@@ -84,9 +87,22 @@ public class VoiceRecordFileServiceImpl extends BaseService<VoiceRecordFileDto,V
@Override
@Override
public
Page
<
VoiceRecordFileDto
>
queryRecordListByQueryDto
(
Page
<
VoiceRecordFileDto
>
page
,
String
telStartTimeStr
,
String
telEndTimeStr
,
String
fileType
,
String
tel
,
String
workNum
,
String
sortParam
,
String
sortRule
)
{
public
Page
<
VoiceRecordFileDto
>
queryRecordListByQueryDto
(
Page
<
VoiceRecordFileDto
>
page
,
String
telStartTimeStr
,
String
telEndTimeStr
,
String
fileType
,
String
tel
,
String
workNum
,
String
sortParam
,
String
sortRule
)
{
//获取当前登陆人所在单位的下的所有接警人员的userId
Set
<
String
>
userIds
=
new
HashSet
<>();
String
regionCode
=
citInfoService
.
getReginParams
().
getCompany
().
getRegionCode
();
List
<
TzsCitInfo
>
citInfoList
=
citInfoService
.
list
(
new
LambdaQueryWrapper
<
TzsCitInfo
>().
eq
(
TzsCitInfo:
:
getRegionCode
,
regionCode
));
if
(!
ValidationUtil
.
isEmpty
(
citInfoList
)){
for
(
TzsCitInfo
citInfo
:
citInfoList
){
userIds
.
add
(
citInfo
.
getCtiUserId
());
}
}
if
(
ValidationUtil
.
isEmpty
(
userIds
))
{
return
page
;
}
Page
<
List
<
VoiceRecordFileDto
>>
list
=
baseMapper
.
queryRecordListByQueryDto
(
page
,
Page
<
List
<
VoiceRecordFileDto
>>
list
=
baseMapper
.
queryRecordListByQueryDto
(
page
,
telStartTimeStr
,
telEndTimeStr
,
fileType
,
tel
,
telStartTimeStr
,
telEndTimeStr
,
fileType
,
tel
,
workNum
,
sortParam
,
sortRule
);
workNum
,
sortParam
,
sortRule
,
userIds
);
Page
<
VoiceRecordFileDto
>
page1
=
new
Page
<>();
Page
<
VoiceRecordFileDto
>
page1
=
new
Page
<>();
List
<
VoiceRecordFileDto
>
resultDtoList
=
JSONArray
.
parseArray
(
JSONArray
.
toJSONString
(
list
.
getRecords
()),
VoiceRecordFileDto
.
class
);
List
<
VoiceRecordFileDto
>
resultDtoList
=
JSONArray
.
parseArray
(
JSONArray
.
toJSONString
(
list
.
getRecords
()),
VoiceRecordFileDto
.
class
);
page1
.
setCurrent
(
page
.
getCurrent
());
page1
.
setCurrent
(
page
.
getCurrent
());
...
...
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