Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
attendance-performance-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
赵啸非
attendance-performance-platform
Commits
eba3618f
Commit
eba3618f
authored
Apr 13, 2023
by
daijunxiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改定时任务 修改人员统计
parent
a11b1988
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
115 additions
and
62 deletions
+115
-62
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
...in/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
+44
-54
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationRecordController.java
...le/attendance/web/AttendanceVacationRecordController.java
+3
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/dao/DeptDao.java
...rc/main/java/com/mortals/xhx/module/dept/dao/DeptDao.java
+9
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/dao/ibatis/DeptDaoImpl.java
...a/com/mortals/xhx/module/dept/dao/ibatis/DeptDaoImpl.java
+10
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
...java/com/mortals/xhx/module/dept/service/DeptService.java
+13
-2
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
...mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
+15
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/dao/StaffDao.java
.../main/java/com/mortals/xhx/module/staff/dao/StaffDao.java
+1
-1
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java
...va/com/mortals/xhx/module/staff/service/StaffService.java
+2
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
...rtals/xhx/module/staff/service/impl/StaffServiceImpl.java
+1
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java
...ava/com/mortals/xhx/module/staff/web/StaffController.java
+11
-2
attendance-performance-manager/src/main/resources/sqlmap/module/dept/DeptMapper.xml
...ager/src/main/resources/sqlmap/module/dept/DeptMapper.xml
+6
-0
No files found.
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
View file @
eba3618f
...
@@ -19,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -19,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Objects
;
/**
/**
...
@@ -48,12 +47,14 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
...
@@ -48,12 +47,14 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
for
(
ListItem
list
:
personHikData
.
getList
())
{
for
(
ListItem
list
:
personHikData
.
getList
())
{
//根据id获取本地数据
//根据id获取本地数据
StaffEntity
staffEntity1
=
staffDao
.
queryHik
(
list
.
getPersonId
());
StaffEntity
staffEntity1
=
staffDao
.
queryHik
(
list
.
getPersonId
());
List
<
StaffEntity
>
staffEntities
=
staffDao
.
queryAllList
(
);
DeptEntity
deptEntity
=
deptDao
.
queryDept
(
list
.
getOrgIndexCode
()
);
//判断本地数据是否为空
//判断本地数据是否为空
if
(
Objects
.
isNull
(
staffEntity1
))
{
if
(
Objects
.
isNull
(
staffEntity1
))
{
//如果为空则将数据存入数据库
//如果为空则将数据存入数据库
StaffEntity
staffEntity
=
new
StaffEntity
();
StaffEntity
staffEntity
=
new
StaffEntity
();
System
.
out
.
println
(
list
.
getPersonName
());
if
(
Objects
.
nonNull
(
deptEntity
))
{
staffEntity
.
setDeptId
(
deptEntity
.
getId
());
}
staffEntity
.
setName
(
list
.
getPersonName
());
staffEntity
.
setName
(
list
.
getPersonName
());
staffEntity
.
setRemarkId
(
list
.
getPersonId
());
staffEntity
.
setRemarkId
(
list
.
getPersonId
());
staffEntity
.
setPhotoPath
(
list
.
getPersonPhoto
().
getPicUri
());
staffEntity
.
setPhotoPath
(
list
.
getPersonPhoto
().
getPicUri
());
...
@@ -74,83 +75,71 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
...
@@ -74,83 +75,71 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
}
}
//本地数据不为空
//本地数据不为空
else
{
else
{
//本地数据遍历数据
//执行修改
for
(
StaffEntity
staffEntity
:
staffEntities
)
{
if
(
Objects
.
nonNull
(
deptEntity
))
{
//如果本地的id等于海康的id
staffEntity1
.
setDeptId
(
deptEntity
.
getId
());
if
(
staffEntity
.
getRemarkId
().
equals
(
list
.
getPersonId
()))
{
}
//执行修改
staffEntity1
.
setName
(
list
.
getPersonName
());
StaffEntity
staffEntity2
=
new
StaffEntity
();
staffEntity1
.
setRemarkId
(
list
.
getPersonId
());
System
.
out
.
println
(
list
.
getPersonName
());
staffEntity1
.
setPhotoPath
(
list
.
getPersonPhoto
().
getPicUri
());
staffEntity2
.
setName
(
list
.
getPersonName
());
staffEntity1
.
setDeptName
(
list
.
getOrgName
());
staffEntity2
.
setRemarkId
(
list
.
getPersonId
());
staffEntity1
.
setSource
(
1
);
staffEntity2
.
setPhotoPath
(
list
.
getPersonPhoto
().
getPicUri
());
staffEntity1
.
setStatus
(
1
);
staffEntity2
.
setDeptName
(
list
.
getOrgName
());
staffEntity1
.
setGender
(
list
.
getGender
());
staffEntity2
.
setSource
(
1
);
staffEntity1
.
setWorkNum
(
list
.
getJobNo
());
staffEntity2
.
setStatus
(
1
);
staffEntity1
.
setCreateUserId
(
Long
.
valueOf
(
1
));
staffEntity2
.
setGender
(
list
.
getGender
());
staffEntity1
.
setCreateTime
(
new
Date
());
staffEntity2
.
setWorkNum
(
list
.
getJobNo
());
if
(
list
.
getBirthday
()
!=
null
)
{
staffEntity2
.
setCreateUserId
(
Long
.
valueOf
(
1
));
staffEntity1
.
setBirthday
((
Date
)
list
.
getBirthday
());
staffEntity2
.
setCreateTime
(
new
Date
());
}
if
(
list
.
getBirthday
()
!=
null
)
{
if
(
list
.
getPhoneNo
()
!=
null
)
{
staffEntity2
.
setBirthday
((
Date
)
list
.
getBirthday
());
staffEntity1
.
setPhoneNumber
(
String
.
valueOf
(
list
.
getPhoneNo
()));
}
if
(
list
.
getPhoneNo
()
!=
null
)
{
staffEntity2
.
setPhoneNumber
(
String
.
valueOf
(
list
.
getPhoneNo
()));
}
staffDao
.
update
(
staffEntity2
);
}
for
(
ListItem
item
:
personHikData
.
getList
())
{
//如果本地id不等于海康id并且海康id不等于本地id
if
(!
item
.
getPersonId
().
equals
(
staffEntity
.
getRemarkId
()))
{
//否则执行删除
staffDao
.
delete
(
staffEntity
.
getId
());
}
}
}
}
staffDao
.
update
(
staffEntity1
);
}
}
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
try
{
try
{
String
resultDept
=
ArtemisPostTest
.
callPostApiGetDeptList
();
String
resultDept
=
ArtemisPostTest
.
callPostApiGetDeptList
();
JSONObject
jsonObjectDept
=
JSON
.
parseObject
(
resultDept
);
JSONObject
jsonObjectDept
=
JSON
.
parseObject
(
resultDept
);
JSONObject
jsonObjectDept1
=
jsonObjectDept
.
getJSONObject
(
"data"
);
JSONObject
jsonObjectDept1
=
jsonObjectDept
.
getJSONObject
(
"data"
);
DeptHikData
deptHikData
=
JSONObject
.
parseObject
(
jsonObjectDept1
.
toJSONString
(),
DeptHikData
.
class
);
DeptHikData
deptHikData
=
JSONObject
.
parseObject
(
jsonObjectDept1
.
toJSONString
(),
DeptHikData
.
class
);
System
.
out
.
println
(
resultDept
);
if
(
Objects
.
nonNull
(
deptHikData
))
{
if
(
Objects
.
nonNull
(
deptHikData
))
{
for
(
ListDept
listDept
:
deptHikData
.
getList
())
{
for
(
ListDept
listDept
:
deptHikData
.
getList
())
{
//查询数据库信息
DeptEntity
deptEntity
=
deptDao
.
queryDept
(
listDept
.
getOrgIndexCode
());
DeptEntity
deptEntity
=
deptDao
.
queryDept
(
listDept
.
getOrgIndexCode
());
List
<
DeptEntity
>
deptEntities
=
deptDao
.
queryAllList
();
DeptEntity
deptEntityParent
=
deptDao
.
queryDeptParient
(
listDept
.
getParentOrgIndexCode
());
DeptEntity
deptEntity1
=
new
DeptEntity
();
if
(
Objects
.
isNull
(
deptEntity
))
{
if
(
Objects
.
isNull
(
deptEntity
))
{
DeptEntity
deptEntity1
=
new
DeptEntity
();
if
(
Objects
.
nonNull
(
deptEntityParent
))
{
deptEntity1
.
setParentId
(
deptEntityParent
.
getId
());
}
deptEntity1
.
setDeptName
(
listDept
.
getOrgName
());
deptEntity1
.
setDeptName
(
listDept
.
getOrgName
());
deptEntity1
.
setDeptCode
(
listDept
.
getOrgIndexCode
());
deptEntity1
.
setDeptCode
(
listDept
.
getOrgIndexCode
());
deptEntity1
.
setAncestors
(
listDept
.
getOrgPath
());
deptEntity1
.
setAncestors
(
listDept
.
getOrgPath
());
deptEntity1
.
setDeptStatus
(
1
);
deptEntity1
.
setDeptStatus
(
1
);
deptEntity1
.
setOrderNum
(
0
);
deptEntity1
.
setOrderNum
(
0
);
deptEntity1
.
set
PersonNum
(
0
);
deptEntity1
.
set
Remark
(
listDept
.
getParentOrgIndexCode
()
);
deptEntity1
.
setCreateTime
(
new
Date
());
deptEntity1
.
setCreateTime
(
new
Date
());
deptEntity1
.
setCreateUserId
(
Long
.
valueOf
(
1
));
deptEntity1
.
setCreateUserId
(
Long
.
valueOf
(
1
));
System
.
out
.
println
(
deptEntity1
);
deptDao
.
insert
(
deptEntity1
);
deptDao
.
insert
(
deptEntity1
);
}
else
{
}
else
{
for
(
DeptEntity
deptEntity2
:
deptEntities
)
{
if
(
Objects
.
nonNull
(
deptEntityParent
))
{
if
(!
deptEntity2
.
getDeptCode
().
equals
(
listDept
.
getOrgIndexCode
()))
{
deptEntity
.
setParentId
(
deptEntityParent
.
getId
());
deptEntity2
.
setDeptName
(
listDept
.
getOrgName
());
deptEntity2
.
setDeptCode
(
listDept
.
getOrgIndexCode
());
deptEntity2
.
setAncestors
(
listDept
.
getOrgPath
());
deptEntity2
.
setCreateTime
(
new
Date
());
deptEntity2
.
setCreateUserId
(
Long
.
valueOf
(
1
));
deptDao
.
update
(
deptEntity2
);
}
for
(
ListDept
dept
:
deptHikData
.
getList
())
{
if
(!
dept
.
getOrgIndexCode
().
equals
(
deptEntity2
.
getDeptCode
()))
{
deptDao
.
delete
(
deptEntity2
.
getId
());
}
}
}
}
deptEntity
.
setDeptName
(
listDept
.
getOrgName
());
deptEntity
.
setDeptCode
(
listDept
.
getOrgIndexCode
());
deptEntity
.
setAncestors
(
listDept
.
getOrgPath
());
deptEntity
.
setCreateTime
(
new
Date
());
deptEntity
.
setCreateUserId
(
Long
.
valueOf
(
1
));
deptDao
.
update
(
deptEntity
);
}
}
}
}
}
}
...
@@ -159,6 +148,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
...
@@ -159,6 +148,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
e
.
printStackTrace
();
e
.
printStackTrace
();
}
}
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceVacationRecordController.java
View file @
eba3618f
...
@@ -39,10 +39,11 @@ public class AttendanceVacationRecordController extends BaseCRUDJsonBodyMappingC
...
@@ -39,10 +39,11 @@ public class AttendanceVacationRecordController extends BaseCRUDJsonBodyMappingC
super
.
init
(
model
,
context
);
super
.
init
(
model
,
context
);
}
}
@Override
@Override
protected
void
saveBefore
(
AttendanceVacationRecordEntity
entity
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
protected
int
saveAfter
(
AttendanceVacationRecordEntity
entity
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
AttendanceVacationBalanceEntity
attendanceVacationBalanceEntity
=
attendanceVacationBalanceService
.
get
(
entity
.
getStaffId
());
AttendanceVacationBalanceEntity
attendanceVacationBalanceEntity
=
attendanceVacationBalanceService
.
get
(
entity
.
getStaffId
());
model
.
put
(
"allHoliday"
,
attendanceVacationBalanceEntity
);
model
.
put
(
"allHoliday"
,
attendanceVacationBalanceEntity
);
super
.
saveBefore
(
entity
,
model
,
context
);
return
super
.
saveAfter
(
entity
,
model
,
context
);
}
}
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/dao/DeptDao.java
View file @
eba3618f
...
@@ -27,9 +27,17 @@ public interface DeptDao extends ICRUDDao<DeptEntity,Long>{
...
@@ -27,9 +27,17 @@ public interface DeptDao extends ICRUDDao<DeptEntity,Long>{
List
<
DeptEntity
>
queryAllList
();
List
<
DeptEntity
>
queryAllList
();
/**
/**
*
统计部门人数
*
查询部门信息
* */
* */
DeptEntity
queryDept
(
String
deptCode
);
DeptEntity
queryDept
(
String
deptCode
);
/**
* 查询是否作为上级本门
* */
DeptEntity
queryDeptParient
(
String
parentCode
);
/**
*
* */
int
queryDeptParentId
(
Long
deptId
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/dao/ibatis/DeptDaoImpl.java
View file @
eba3618f
...
@@ -32,5 +32,15 @@ public class DeptDaoImpl extends BaseCRUDDaoMybatis<DeptEntity,Long> implements
...
@@ -32,5 +32,15 @@ public class DeptDaoImpl extends BaseCRUDDaoMybatis<DeptEntity,Long> implements
return
getSqlSession
().
selectOne
(
getSqlId
(
"queryDept"
),
deptCode
);
return
getSqlSession
().
selectOne
(
getSqlId
(
"queryDept"
),
deptCode
);
}
}
@Override
public
DeptEntity
queryDeptParient
(
String
parentCode
)
{
return
getSqlSession
().
selectOne
(
getSqlId
(
"queryDeptParient"
),
parentCode
);
}
@Override
public
int
queryDeptParentId
(
Long
deptId
)
{
return
getSqlSession
().
selectOne
(
getSqlId
(
"queryDeptParentId"
),
deptId
);
}
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
View file @
eba3618f
package
com.mortals.xhx.module.dept.service
;
package
com.mortals.xhx.module.dept.service
;
import
com.mortals.framework.model.Context
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.framework.service.ICRUDService
;
import
com.mortals.xhx.module.dept.model.DeptEntity
;
import
com.mortals.xhx.module.dept.model.DeptEntity
;
import
com.mortals.xhx.module.dept.model.DeptTreeSelect
;
import
com.mortals.xhx.module.dept.model.DeptTreeSelect
;
import
java.util.List
;
import
java.util.List
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.model.Context
;
/**
/**
* DeptService
* DeptService
*
*
...
@@ -48,4 +48,15 @@ public interface DeptService extends ICRUDService<DeptEntity,Long>{
...
@@ -48,4 +48,15 @@ public interface DeptService extends ICRUDService<DeptEntity,Long>{
* @return
* @return
*/
*/
List
<
DeptTreeSelect
>
getListByParentId
(
Long
parentId
,
Context
context
);
List
<
DeptTreeSelect
>
getListByParentId
(
Long
parentId
,
Context
context
);
/**
* 查询部门人数
* */
DeptEntity
queryDept
(
String
deptCode
);
DeptEntity
queryParent
(
String
parentCode
);
int
queryParentId
(
Long
deptId
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
View file @
eba3618f
...
@@ -191,4 +191,19 @@ public class DeptServiceImpl extends AbstractCRUDServiceImpl<DeptDao, DeptEntity
...
@@ -191,4 +191,19 @@ public class DeptServiceImpl extends AbstractCRUDServiceImpl<DeptDao, DeptEntity
return
collect
;
return
collect
;
}
}
@Override
public
DeptEntity
queryDept
(
String
deptCode
)
{
return
dao
.
queryDept
(
deptCode
);
}
@Override
public
DeptEntity
queryParent
(
String
parentCode
)
{
return
dao
.
queryDeptParient
(
parentCode
);
}
@Override
public
int
queryParentId
(
Long
deptId
)
{
return
dao
.
queryDeptParentId
(
deptId
);
}
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/dao/StaffDao.java
View file @
eba3618f
...
@@ -59,7 +59,7 @@ public interface StaffDao extends ICRUDDao<StaffEntity,Long>{
...
@@ -59,7 +59,7 @@ public interface StaffDao extends ICRUDDao<StaffEntity,Long>{
/**
/**
*
*
查询部门信息
* */
* */
StaffEntity
queryHik
(
String
remarkId
);
StaffEntity
queryHik
(
String
remarkId
);
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java
View file @
eba3618f
...
@@ -18,4 +18,6 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> {
...
@@ -18,4 +18,6 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> {
int
queryDeptNum
(
Long
deptId
);
int
queryDeptNum
(
Long
deptId
);
int
queryAllPerson
();
int
queryAllPerson
();
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
View file @
eba3618f
...
@@ -65,4 +65,5 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
...
@@ -65,4 +65,5 @@ public class StaffServiceImpl extends AbstractCRUDCacheServiceImpl<StaffDao, Sta
}
}
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/web/StaffController.java
View file @
eba3618f
...
@@ -104,10 +104,19 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
...
@@ -104,10 +104,19 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
@Override
@Override
protected
int
saveAfter
(
StaffEntity
entity
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
protected
int
saveAfter
(
StaffEntity
entity
,
Map
<
String
,
Object
>
model
,
Context
context
)
throws
AppException
{
int
personNum
=
service
.
queryDeptNum
(
entity
.
getDeptId
());
//统计当前部门
DeptEntity
deptEntity
=
deptService
.
get
(
entity
.
getDeptId
());
DeptEntity
deptEntity
=
deptService
.
get
(
entity
.
getDeptId
());
deptEntity
.
setPersonNum
(
personNum
);
int
personNumcount
=
service
.
queryDeptNum
(
entity
.
getDeptId
());
deptEntity
.
setPersonNum
(
personNumcount
);
deptService
.
update
(
deptEntity
);
deptService
.
update
(
deptEntity
);
//统计上级部门
int
personNumId
=
deptService
.
queryParentId
(
entity
.
getDeptId
());
if
(
personNumId
!=
0
){
DeptEntity
deptEntity1
=
deptService
.
get
(
entity
.
getDeptId
());
int
personParentNumcount
=
service
.
queryDeptNum
(
deptEntity1
.
getParentId
());
deptEntity1
.
setPersonNum
(
personParentNumcount
);
deptService
.
update
(
deptEntity1
);
}
return
super
.
saveAfter
(
entity
,
model
,
context
);
return
super
.
saveAfter
(
entity
,
model
,
context
);
}
}
...
...
attendance-performance-manager/src/main/resources/sqlmap/module/dept/DeptMapper.xml
View file @
eba3618f
...
@@ -881,4 +881,10 @@
...
@@ -881,4 +881,10 @@
<select
id=
"queryDept"
resultType=
"com.mortals.xhx.module.dept.model.DeptEntity"
>
<select
id=
"queryDept"
resultType=
"com.mortals.xhx.module.dept.model.DeptEntity"
>
select * from mortals_xhx_dept where deptCode = #{deptCode}
select * from mortals_xhx_dept where deptCode = #{deptCode}
</select>
</select>
<select
id=
"queryDeptParient"
resultType=
"com.mortals.xhx.module.dept.model.DeptEntity"
>
select * from mortals_xhx_dept where deptCode = #{parentCode}
</select>
<select
id=
"queryDeptParentId"
resultType=
"integer"
>
select parentId from mortals_xhx_dept where deptId = #{deptId}
</select>
</mapper>
</mapper>
\ No newline at end of file
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