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
d1569044
Commit
d1569044
authored
Jun 22, 2021
by
付培阳
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改优化力量调派列表查询接口和任务派发接口
parent
316b2127
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
101 additions
and
187 deletions
+101
-187
PowerTransferListMapper.java
...s/boot/module/jcs/api/mapper/PowerTransferListMapper.java
+0
-20
PowerTransferMapper.java
.../amos/boot/module/jcs/api/mapper/PowerTransferMapper.java
+9
-6
IPowerTransferService.java
...os/boot/module/jcs/api/service/IPowerTransferService.java
+7
-7
PowerTransferListVo.java
...join/amos/boot/module/jcs/api/vo/PowerTransferListVo.java
+0
-30
PowerTransferVo.java
.../yeejoin/amos/boot/module/jcs/api/vo/PowerTransferVo.java
+14
-44
PowerTransferListMapper.xml
...api/src/main/resources/mapper/PowerTransferListMapper.xml
+0
-24
PowerTransferMapper.xml
...jcs-api/src/main/resources/mapper/PowerTransferMapper.xml
+19
-1
PowerTransferController.java
...ot/module/jcs/biz/controller/PowerTransferController.java
+2
-2
PowerTransferServiceImpl.java
...module/jcs/biz/service/impl/PowerTransferServiceImpl.java
+50
-53
No files found.
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/mapper/PowerTransferListMapper.java
deleted
100644 → 0
View file @
316b2127
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransferListVo
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
/**
* @title: PowerTransferListMapper
* @Author fpy
* @Date: 2021/6/18 13:48
* @Version 1.0
*/
@Mapper
public
interface
PowerTransferListMapper
extends
BaseMapper
<
PowerTransferListVo
>
{
List
<
PowerTransferListVo
>
getPowerTransferList
(
Long
alertCalledId
);
}
\ No newline at end of file
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/mapper/PowerTransferMapper.java
View file @
d1569044
...
...
@@ -2,13 +2,16 @@ package com.yeejoin.amos.boot.module.jcs.api.mapper;
import
com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransfer
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransferVo
;
import
java.util.List
;
/**
* 力量调派 Mapper 接口
*
* @author tb
* @date 2021-06-17
*/
* 力量调派 Mapper 接口
*
* @author tb
* @date 2021-06-17
*/
public
interface
PowerTransferMapper
extends
BaseMapper
<
PowerTransfer
>
{
List
<
PowerTransferVo
>
getPowerTransferList
(
Long
alertCalledId
);
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/service/IPowerTransferService.java
View file @
d1569044
...
...
@@ -3,19 +3,19 @@ package com.yeejoin.amos.boot.module.jcs.api.service;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.PowerTransfer
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransfer
List
Vo
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransferVo
;
import
java.util.List
;
/**
* 力量调派 服务类
*
* @author tb
* @date 2021-06-17
*/
* 力量调派 服务类
*
* @author tb
* @date 2021-06-17
*/
public
interface
IPowerTransferService
extends
IService
<
PowerTransfer
>
{
List
<
PowerTransfer
List
Vo
>
getPowerTransferList
(
Long
alertCalledId
);
List
<
PowerTransferVo
>
getPowerTransferList
(
Long
alertCalledId
);
boolean
createPowerTransfer
(
PowerTransferDto
powerTransferDto
);
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/vo/PowerTransferListVo.java
deleted
100644 → 0
View file @
316b2127
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jcs
.
api
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* @title: PowerTransferListVo
* @Author fpy
* @Date: 2021/6/18 12:01
* @Version 1.0
*/
@Data
@EqualsAndHashCode
()
@Accessors
(
chain
=
true
)
@ApiModel
(
value
=
"PowerTransfer对象"
,
description
=
"力量调派"
)
public
class
PowerTransferListVo
{
@ApiModelProperty
(
value
=
" 单位名称"
)
private
String
companyName
;
@ApiModelProperty
(
value
=
"资源类型"
)
private
String
type
;
@ApiModelProperty
(
value
=
"资源编号(如车牌号)"
)
private
String
resourcesNum
;
}
\ No newline at end of file
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/java/com/yeejoin/amos/boot/module/jcs/api/vo/PowerTransferVo.java
View file @
d1569044
...
...
@@ -5,58 +5,28 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 力量调派
*
* @author tb
* @date 2021-06-17
*/
* 力量调派
*
* @author tb
* @date 2021-06-17
*/
@Data
@Accessors
(
chain
=
true
)
@TableName
(
"jc_power_transfer"
)
@ApiModel
(
value
=
"PowerTransferVo"
,
description
=
"力量调派"
)
public
class
PowerTransferVo
{
@ApiModel
(
value
=
"PowerTransferVo"
,
description
=
"力量调派"
)
public
class
PowerTransferVo
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
" 单位名称"
)
private
String
companyName
;
@ApiModelProperty
(
value
=
"警情id"
)
private
Long
alertCalledId
;
@ApiModelProperty
(
value
=
"调派单号"
)
private
String
dispatchNum
;
@ApiModelProperty
(
value
=
"调派类型"
)
private
String
dispatchType
;
@ApiModelProperty
(
value
=
"发送者"
)
private
String
taskSenderName
;
@ApiModelProperty
(
value
=
"发送者id"
)
private
Long
taskSenderId
;
@ApiModelProperty
(
value
=
"地址"
)
private
String
address
;
@ApiModelProperty
(
value
=
"坐标x"
)
private
String
coordinateX
;
@ApiModelProperty
(
value
=
"坐标y"
)
private
String
coordinateY
;
@ApiModelProperty
(
value
=
"救援方格"
)
private
String
rescueGrid
;
@ApiModelProperty
(
value
=
"车地址"
)
private
String
carAddress
;
@ApiModelProperty
(
value
=
"车坐标x"
)
private
String
carCoordinateX
;
@ApiModelProperty
(
value
=
"车坐标y"
)
private
String
carCoordinateY
;
@ApiModelProperty
(
value
=
"资源类型"
)
private
String
type
;
@ApiModelProperty
(
value
=
"
操作人名称
"
)
private
String
re
cUserName
;
@ApiModelProperty
(
value
=
"
资源编号(如车牌号)
"
)
private
String
re
sourcesNum
;
}
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/resources/mapper/PowerTransferListMapper.xml
deleted
100644 → 0
View file @
316b2127
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yeejoin.amos.boot.module.jcs.api.mapper.PowerTransferListMapper"
>
<select
id=
"getPowerTransferList"
resultType=
"com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransferListVo"
>
select company_name,type,resources_num
from (
select ptc.company_name, ptcr.type, ptcr.resources_num, ptcr.rec_date
from jc_power_transfer_company ptc
left join jc_power_transfer pt on ptc.power_transfer_id = pt.sequence_nbr
right join jc_power_transfer_company_resources ptcr
on ptcr.power_transfer_company_id = ptc.sequence_nbr
where pt.alert_called_id = #{alertCalledId}
and ptc.is_distribution_agencies = 0
union all
select ptc.company_name, "" type, "" resources_num, ptc.rec_date
from jc_power_transfer_company ptc
left join jc_power_transfer pt on ptc.power_transfer_id = pt.sequence_nbr
where pt.alert_called_id = #{alertCalledId}
and ptc.is_distribution_agencies = 1
) jcpt
order by rec_date desc
</select>
</mapper>
amos-boot-module/amos-boot-module-api/amos-boot-module-jcs-api/src/main/resources/mapper/PowerTransferMapper.xml
View file @
d1569044
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.yeejoin.amos.boot.module.jcs.api.mapper.PowerTransferMapper"
>
<select
id=
"getPowerTransferList"
resultType=
"com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransferVo"
>
select company_name, type, resources_num
from (
select ptc.company_name, ptcr.type, ptcr.resources_num, ptcr.rec_date
from jc_power_transfer_company ptc
left join jc_power_transfer pt on ptc.power_transfer_id = pt.sequence_nbr
right join jc_power_transfer_company_resources ptcr
on ptcr.power_transfer_company_id = ptc.sequence_nbr
where pt.alert_called_id = #{alertCalledId}
and ptc.is_distribution_agencies = 0
union all
select ptc.company_name, "" type, "" resources_num, ptc.rec_date
from jc_power_transfer_company ptc
left join jc_power_transfer pt on ptc.power_transfer_id = pt.sequence_nbr
where pt.alert_called_id = #{alertCalledId}
and ptc.is_distribution_agencies = 1
) jcpt
order by rec_date desc
</select>
</mapper>
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/controller/PowerTransferController.java
View file @
d1569044
...
...
@@ -2,7 +2,7 @@ package com.yeejoin.amos.boot.module.jcs.biz.controller;
import
com.yeejoin.amos.boot.biz.common.utils.CommonResponseUtil
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransfer
List
Vo
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransferVo
;
import
com.yeejoin.amos.feign.privilege.model.AgencyUserModel
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -150,7 +150,7 @@ public class PowerTransferController extends BaseController {
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据警情id获取力量调派列表"
,
notes
=
"根据警情id获取力量调派列表"
)
public
ResponseModel
<
Object
>
list
(
@PathVariable
String
alert_called_id
)
{
List
<
PowerTransfer
List
Vo
>
powerTransferList
=
List
<
PowerTransferVo
>
powerTransferList
=
iPowerTransferService
.
getPowerTransferList
(
Long
.
parseLong
(
alert_called_id
));
return
CommonResponseUtil
.
success
(
powerTransferList
);
...
...
amos-boot-module/amos-boot-module-biz/amos-boot-module-jcs-biz/src/main/java/com/yeejoin/amos/boot/module/jcs/biz/service/impl/PowerTransferServiceImpl.java
View file @
d1569044
...
...
@@ -5,17 +5,17 @@ import com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyDto;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferCompanyResourcesDto
;
import
com.yeejoin.amos.boot.module.jcs.api.dto.PowerTransferDto
;
import
com.yeejoin.amos.boot.module.jcs.api.entity.*
;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.PowerTransferListMapper
;
import
com.yeejoin.amos.boot.module.jcs.api.mapper.PowerTransferMapper
;
import
com.yeejoin.amos.boot.module.jcs.api.service.*
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransfer
List
Vo
;
import
com.yeejoin.amos.boot.module.jcs.api.vo.PowerTransferVo
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.*
;
/**
...
...
@@ -27,8 +27,8 @@ import java.util.*;
@Service
public
class
PowerTransferServiceImpl
extends
ServiceImpl
<
PowerTransferMapper
,
PowerTransfer
>
implements
IPowerTransferService
{
@
Autowired
PowerTransfer
ListMapper
powerTransferList
Mapper
;
@
Resource
PowerTransfer
Mapper
powerTransfer
Mapper
;
@Autowired
IAlertCalledService
iAlertCalledService
;
...
...
@@ -45,8 +45,8 @@ public class PowerTransferServiceImpl extends ServiceImpl<PowerTransferMapper, P
@Autowired
IAlertFormValueService
iAlertFormValueService
;
public
List
<
PowerTransfer
List
Vo
>
getPowerTransferList
(
Long
alertCalledId
)
{
return
powerTransfer
List
Mapper
.
getPowerTransferList
(
alertCalledId
);
public
List
<
PowerTransferVo
>
getPowerTransferList
(
Long
alertCalledId
)
{
return
powerTransferMapper
.
getPowerTransferList
(
alertCalledId
);
}
@Override
...
...
@@ -59,51 +59,68 @@ public class PowerTransferServiceImpl extends ServiceImpl<PowerTransferMapper, P
// 获取警情详情
AlertCalled
alertCalled
=
iAlertCalledService
.
getById
(
alertCalledId
);
String
rescueGrid
=
StringUtils
.
isEmpty
(
alertCalled
.
getRescueGrid
())
?
""
:
alertCalled
.
getRescueGrid
();
String
alertType
=
StringUtils
.
isEmpty
(
alertCalled
.
getAlertType
())
?
""
:
alertCalled
.
getAlertType
();
String
address
=
StringUtils
.
isEmpty
(
alertCalled
.
getAddress
())
?
""
:
alertCalled
.
getAddress
();
String
coordinateX
=
alertCalled
.
getCoordinateX
();
String
coordinateY
=
alertCalled
.
getCoordinateY
();
// 创建力量调派
PowerTransfer
powerTransfer
=
new
PowerTransfer
();
powerTransfer
.
setAlertCalledId
(
alertCalledId
);
BeanUtils
.
copyProperties
(
powerTransferDto
,
powerTransfer
);
BeanUtils
.
copyProperties
(
alertCalled
,
powerTransfer
);
powerTransfer
.
setDispatchNum
(
dispatch_num
);
powerTransfer
.
setDispatchType
(
powerTransferDto
.
getDispatchType
());
powerTransfer
.
setTaskSenderName
(
powerTransferDto
.
getTaskSenderName
());
powerTransfer
.
setTaskSenderId
(
powerTransferDto
.
getTaskSenderId
());
powerTransfer
.
setAddress
(
address
);
powerTransfer
.
setCoordinateX
(
coordinateX
);
powerTransfer
.
setCoordinateY
(
coordinateY
);
powerTransfer
.
setRescueGrid
(
rescueGrid
);
powerTransfer
.
setCarAddress
(
address
);
powerTransfer
.
setCarCoordinateX
(
coordinateX
);
powerTransfer
.
setCarCoordinateY
(
coordinateY
);
powerTransfer
.
setSequenceNbr
(
null
);
save
(
powerTransfer
);
Long
powerTransferSequenceNbr
=
powerTransfer
.
getSequenceNbr
();
// 创建力量调派单位
List
<
PowerTransferCompanyDto
>
powerTransferCompanyDotList
=
powerTransferDto
.
getPowerTransferCompanyDotList
();
PowerTransferCompany
powerTransferCompany
;
List
<
AlertFormValue
>
alertFormValue
=
iAlertFormValueService
.
list
(
new
QueryWrapper
<
AlertFormValue
>().
eq
(
"alert_called_id"
,
alertCalledId
));
// 获取任务派发模板
Template
template
=
iTemplateService
.
getOne
(
new
QueryWrapper
<
Template
>().
eq
(
"type"
,
"ptransfer"
));
String
content
=
template
.
getContent
();
Map
<
String
,
String
>
definitions
=
new
HashMap
<>();
definitions
.
put
(
"rescueGrid"
,
rescueGrid
);
definitions
.
put
(
"alertType"
,
alertType
);
definitions
.
put
(
"address"
,
address
);
initDefinitions
(
definitions
,
alertCalled
,
powerTransferDto
);
// 创建力量调派单位
createPowerTransferCompany
(
powerTransferDto
,
powerTransferSequenceNbr
,
definitions
,
content
);
return
true
;
}
private
List
<
PowerTransferCompanyResources
>
DtoEntityBatchConvert
(
List
<
PowerTransferCompanyResourcesDto
>
powerTransferCompanyResourcesDtoList
,
Long
powerTransferCompanySequenceNbr
)
{
ArrayList
<
PowerTransferCompanyResources
>
powerTransferCompanyResourcesList
=
new
ArrayList
<>();
PowerTransferCompanyResources
powerTransferCompanyResources
;
for
(
PowerTransferCompanyResourcesDto
powerTransferCompanyResourcesDto
:
powerTransferCompanyResourcesDtoList
)
{
powerTransferCompanyResources
=
new
PowerTransferCompanyResources
();
BeanUtils
.
copyProperties
(
powerTransferCompanyResourcesDto
,
powerTransferCompanyResources
);
powerTransferCompanyResources
.
setPowerTransferCompanyId
(
powerTransferCompanySequenceNbr
);
powerTransferCompanyResourcesList
.
add
(
powerTransferCompanyResources
);
}
return
powerTransferCompanyResourcesList
;
}
private
void
initDefinitions
(
Map
<
String
,
String
>
definitions
,
AlertCalled
alertCalled
,
PowerTransferDto
powerTransferDto
)
{
List
<
AlertFormValue
>
alertFormValue
=
iAlertFormValueService
.
list
(
new
QueryWrapper
<
AlertFormValue
>().
eq
(
"alert_called_id"
,
alertCalled
.
getSequenceNbr
()));
definitions
.
put
(
"rescueGrid"
,
alertCalled
.
getRescueGrid
());
definitions
.
put
(
"alertType"
,
alertCalled
.
getAlertType
());
definitions
.
put
(
"address"
,
alertCalled
.
getAddress
());
definitions
.
put
(
"trappedNum"
,
alertCalled
.
getTrappedNum
().
toString
());
definitions
.
put
(
"casualtiesNum"
,
alertCalled
.
getCasualtiesNum
().
toString
());
definitions
.
put
(
"companyName"
,
powerTransferDto
.
getCompanyName
());
for
(
AlertFormValue
formValue
:
alertFormValue
)
{
content
=
StringUtils
.
replaceOnce
(
content
,
formValue
.
getFieldCode
(),
formValue
.
getFieldValue
());
definitions
.
put
(
formValue
.
getFieldCode
(),
formValue
.
getFieldValue
());
}
}
private
String
getTaskInformation
(
String
content
,
Map
<
String
,
String
>
definitions
)
{
int
size
=
definitions
.
size
();
String
[]
keys
=
definitions
.
keySet
().
toArray
(
new
String
[
size
]);
String
[]
values
=
definitions
.
values
().
toArray
(
new
String
[
size
]);
return
StringUtils
.
replaceEach
(
content
,
keys
,
values
);
}
private
void
createPowerTransferCompany
(
PowerTransferDto
powerTransferDto
,
Long
powerTransferSequenceNbr
,
Map
<
String
,
String
>
definitions
,
String
content
)
{
List
<
PowerTransferCompanyDto
>
powerTransferCompanyDotList
=
powerTransferDto
.
getPowerTransferCompanyDotList
();
PowerTransferCompany
powerTransferCompany
;
for
(
PowerTransferCompanyDto
powerTransferCompanyDto
:
powerTransferCompanyDotList
)
{
powerTransferCompany
=
new
PowerTransferCompany
();
BeanUtils
.
copyProperties
(
powerTransferCompanyDto
,
powerTransferCompany
);
...
...
@@ -134,25 +151,5 @@ public class PowerTransferServiceImpl extends ServiceImpl<PowerTransferMapper, P
iPowerTransferCompanyResourcesService
.
saveBatch
(
powerTransferCompanyResourcesList
);
}
}
return
true
;
}
private
List
<
PowerTransferCompanyResources
>
DtoEntityBatchConvert
(
List
<
PowerTransferCompanyResourcesDto
>
powerTransferCompanyResourcesDtoList
,
Long
powerTransferCompanySequenceNbr
)
{
ArrayList
<
PowerTransferCompanyResources
>
powerTransferCompanyResourcesList
=
new
ArrayList
<>();
PowerTransferCompanyResources
powerTransferCompanyResources
;
for
(
PowerTransferCompanyResourcesDto
powerTransferCompanyResourcesDto
:
powerTransferCompanyResourcesDtoList
)
{
powerTransferCompanyResources
=
new
PowerTransferCompanyResources
();
BeanUtils
.
copyProperties
(
powerTransferCompanyResourcesDto
,
powerTransferCompanyResources
);
powerTransferCompanyResources
.
setPowerTransferCompanyId
(
powerTransferCompanySequenceNbr
);
powerTransferCompanyResourcesList
.
add
(
powerTransferCompanyResources
);
}
return
powerTransferCompanyResourcesList
;
}
private
String
getTaskInformation
(
String
taskInformation
,
Map
<
String
,
String
>
definitions
)
{
int
size
=
definitions
.
size
();
String
[]
keys
=
definitions
.
keySet
().
toArray
(
new
String
[
size
]);
String
[]
values
=
definitions
.
values
().
toArray
(
new
String
[
size
]);
return
StringUtils
.
replaceEach
(
taskInformation
,
keys
,
values
);
}
}
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