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
84bb548f
Commit
84bb548f
authored
Mar 18, 2024
by
廖旭伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
05b68d67
165fa452
Changes
19
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1742 additions
and
1021 deletions
+1742
-1021
attendance-performance-manager-ui/admin/src/views/perform/attend/record/drawershow.vue
...r-ui/admin/src/views/perform/attend/record/drawershow.vue
+39
-4
attendance-performance-manager-ui/admin/src/views/perform/complain/record/drawershow.vue
...ui/admin/src/views/perform/complain/record/drawershow.vue
+39
-1
attendance-performance-manager-ui/admin/src/views/perform/effect/record/drawershow.vue
...r-ui/admin/src/views/perform/effect/record/drawershow.vue
+39
-2
attendance-performance-manager-ui/admin/src/views/perform/gowork/record/drawershow.vue
...r-ui/admin/src/views/perform/gowork/record/drawershow.vue
+37
-2
attendance-performance-manager-ui/admin/src/views/perform/other/record/drawershow.vue
...er-ui/admin/src/views/perform/other/record/drawershow.vue
+37
-1
attendance-performance-manager-ui/admin/src/views/perform/review/record/drawershow.vue
...r-ui/admin/src/views/perform/review/record/drawershow.vue
+37
-1
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
...manager-ui/admin/src/views/staff/perform/summary/list.vue
+127
-13
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncRegisterUserPicTaskImpl.java
.../mortals/xhx/daemon/task/SyncRegisterUserPicTaskImpl.java
+18
-5
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
...in/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
+51
-36
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
...java/com/mortals/xhx/module/dept/service/DeptService.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
...mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
+8
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java
...in/java/com/mortals/xhx/module/door/model/DoorEntity.java
+48
-25
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java
...ain/java/com/mortals/xhx/module/door/model/DoorQuery.java
+576
-408
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/service/impl/DoorServiceImpl.java
...mortals/xhx/module/door/service/impl/DoorServiceImpl.java
+0
-5
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java
...va/com/mortals/xhx/module/staff/service/StaffService.java
+6
-0
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
...rtals/xhx/module/staff/service/impl/StaffServiceImpl.java
+75
-45
attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml
...ager/src/main/resources/sqlmap/module/door/DoorMapper.xml
+569
-449
db/add.sql
db/add.sql
+28
-24
doc/考勤绩效管理系统.docx
doc/考勤绩效管理系统.docx
+0
-0
No files found.
attendance-performance-manager-ui/admin/src/views/perform/attend/record/drawershow.vue
View file @
84bb548f
...
@@ -29,11 +29,31 @@
...
@@ -29,11 +29,31 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属大厅:"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
salaName
}}
</p>
<el-select
v-else
v-model=
"form.salaId"
style=
"width: 100%;"
disabled
>
<el-option
v-for=
"item in salaArr"
:key=
"item.id"
:label=
"item.deptName"
:value=
"item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属部门:"
>
<el-form-item
label=
"所属部门:"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
deptName
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
deptName
}}
</p>
<el-select
<el-select
v-else
v-else
v-model=
"form.deptId"
v-model=
"form.deptId"
...
@@ -87,7 +107,7 @@
...
@@ -87,7 +107,7 @@
</el-row>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"异常时间:"
>
<el-form-item
label=
"异常时间:"
prop=
"errorTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
errorTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
errorTime
}}
</p>
<el-date-picker
<el-date-picker
v-else
v-else
...
@@ -103,7 +123,7 @@
...
@@ -103,7 +123,7 @@
</el-row>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"实际打卡时间:"
>
<el-form-item
label=
"实际打卡时间:"
prop=
"actualAttendTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
actualAttendTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
actualAttendTime
}}
</p>
<el-date-picker
<el-date-picker
...
@@ -368,6 +388,16 @@ export default {
...
@@ -368,6 +388,16 @@ export default {
this
.
staffArr
=
[];
this
.
staffArr
=
[];
}
}
});
});
// 获取大厅列表
this
.
$get
(
"
/dept/getSalaList
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
salaArr
=
res
.
data
.
data
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
// 获取部门列表
// 获取部门列表
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
...
@@ -415,9 +445,12 @@ export default {
...
@@ -415,9 +445,12 @@ export default {
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
errorTime
:
[{
required
:
true
,
message
:
"
请选择异常时间
"
}],
actualAttendTime
:
[{
required
:
true
,
message
:
"
请选择实际打卡时间
"
}],
},
},
staffArr
:
[],
staffArr
:
[],
deptArr
:
[],
deptArr
:
[],
salaArr
:
[],
kaoqinArr
:
[],
kaoqinArr
:
[],
fileList
:
[],
fileList
:
[],
kaoqinCateArr
:
[],
kaoqinCateArr
:
[],
...
@@ -465,9 +498,9 @@ export default {
...
@@ -465,9 +498,9 @@ export default {
this
.
$forceUpdate
(
this
.
form
);
this
.
$forceUpdate
(
this
.
form
);
},
},
staffChange
(
val
)
{
staffChange
(
val
)
{
console
.
log
(
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
salaId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
salaId
:
""
;
},
},
/** 编辑 */
/** 编辑 */
edit
(
row
)
{
edit
(
row
)
{
...
@@ -608,6 +641,8 @@ export default {
...
@@ -608,6 +641,8 @@ export default {
subAddType
:
""
,
subAddType
:
""
,
subMethod
:
""
,
subMethod
:
""
,
workNum
:
""
,
workNum
:
""
,
salaId
:
null
,
salaName
:
""
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
...
attendance-performance-manager-ui/admin/src/views/perform/complain/record/drawershow.vue
View file @
84bb548f
...
@@ -29,6 +29,27 @@
...
@@ -29,6 +29,27 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属大厅:"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
salaName
}}
</p>
<el-select
v-else
v-model=
"form.salaId"
style=
"width: 100%;"
disabled
>
<el-option
v-for=
"item in salaArr"
:key=
"item.id"
:label=
"item.deptName"
:value=
"item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属部门:"
>
<el-form-item
label=
"所属部门:"
>
...
@@ -155,7 +176,7 @@
...
@@ -155,7 +176,7 @@
</el-row>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"投诉时间:"
>
<el-form-item
label=
"投诉时间:"
prop=
"complainTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
complainTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
complainTime
}}
</p>
<el-date-picker
<el-date-picker
...
@@ -415,6 +436,16 @@ export default {
...
@@ -415,6 +436,16 @@ export default {
this
.
staffArr
=
[];
this
.
staffArr
=
[];
}
}
});
});
// 获取大厅列表
this
.
$get
(
"
/dept/getSalaList
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
salaArr
=
res
.
data
.
data
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
// 获取部门列表
// 获取部门列表
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
...
@@ -455,11 +486,13 @@ export default {
...
@@ -455,11 +486,13 @@ export default {
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
complainTime
:
[{
required
:
true
,
message
:
"
请选择投诉时间
"
}],
},
},
staffArr
:
[],
staffArr
:
[],
deptArr
:
[],
deptArr
:
[],
kaoqinArr
:
[],
kaoqinArr
:
[],
fileList
:
[],
fileList
:
[],
salaArr
:
[],
kaoqinCateArr
:
[],
kaoqinCateArr
:
[],
ruleArr
:
[],
ruleArr
:
[],
sourceArr
:
[
sourceArr
:
[
...
@@ -531,6 +564,7 @@ export default {
...
@@ -531,6 +564,7 @@ export default {
staffChange
(
val
)
{
staffChange
(
val
)
{
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
salaId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
salaId
:
""
;
},
},
/** 编辑 */
/** 编辑 */
edit
(
row
)
{
edit
(
row
)
{
...
@@ -609,6 +643,8 @@ export default {
...
@@ -609,6 +643,8 @@ export default {
remark
:
""
,
remark
:
""
,
filePaths
:
""
,
filePaths
:
""
,
fileNames
:
""
,
fileNames
:
""
,
salaId
:
null
,
salaName
:
""
,
};
};
this
.
open
=
true
;
this
.
open
=
true
;
...
@@ -693,6 +729,8 @@ export default {
...
@@ -693,6 +729,8 @@ export default {
score
:
""
,
score
:
""
,
processStatus
:
1
,
processStatus
:
1
,
remark
:
""
,
remark
:
""
,
salaId
:
null
,
salaName
:
""
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
...
attendance-performance-manager-ui/admin/src/views/perform/effect/record/drawershow.vue
View file @
84bb548f
...
@@ -29,6 +29,27 @@
...
@@ -29,6 +29,27 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属大厅:"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
salaName
}}
</p>
<el-select
v-else
v-model=
"form.salaId"
style=
"width: 100%;"
disabled
>
<el-option
v-for=
"item in salaArr"
:key=
"item.id"
:label=
"item.deptName"
:value=
"item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属部门:"
>
<el-form-item
label=
"所属部门:"
>
...
@@ -101,7 +122,7 @@
...
@@ -101,7 +122,7 @@
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"发生时间:"
>
<el-form-item
label=
"发生时间:"
prop=
"happenTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
happenTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
happenTime
}}
</p>
<el-date-picker
<el-date-picker
...
@@ -131,7 +152,7 @@
...
@@ -131,7 +152,7 @@
</el-row>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"报警时间:"
>
<el-form-item
label=
"报警时间:"
prop=
"alarmTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
alarmTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
alarmTime
}}
</p>
<el-date-picker
<el-date-picker
...
@@ -385,6 +406,16 @@ export default {
...
@@ -385,6 +406,16 @@ export default {
this
.
staffArr
=
[];
this
.
staffArr
=
[];
}
}
});
});
// 获取大厅列表
this
.
$get
(
"
/dept/getSalaList
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
salaArr
=
res
.
data
.
data
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
// 获取部门列表
// 获取部门列表
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
...
@@ -425,6 +456,8 @@ export default {
...
@@ -425,6 +456,8 @@ export default {
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
alarmTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
happenTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
},
},
staffArr
:
[
staffArr
:
[
{
{
...
@@ -436,6 +469,7 @@ export default {
...
@@ -436,6 +469,7 @@ export default {
deptArr
:
[],
deptArr
:
[],
kaoqinArr
:
[],
kaoqinArr
:
[],
fileList
:
[],
fileList
:
[],
salaArr
:
[],
kaoqinCateArr
:
[],
kaoqinCateArr
:
[],
ruleArr
:
[],
ruleArr
:
[],
sourceArr
:
[
sourceArr
:
[
...
@@ -504,6 +538,7 @@ export default {
...
@@ -504,6 +538,7 @@ export default {
console
.
log
(
val
);
console
.
log
(
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
salaId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
salaId
:
""
;
},
},
/** 编辑 */
/** 编辑 */
edit
(
row
)
{
edit
(
row
)
{
...
@@ -644,6 +679,8 @@ export default {
...
@@ -644,6 +679,8 @@ export default {
processStatus
:
1
,
processStatus
:
1
,
remark
:
""
,
remark
:
""
,
categoryId
:
""
,
categoryId
:
""
,
salaId
:
null
,
salaName
:
""
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
...
attendance-performance-manager-ui/admin/src/views/perform/gowork/record/drawershow.vue
View file @
84bb548f
...
@@ -29,6 +29,27 @@
...
@@ -29,6 +29,27 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属大厅:"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
salaName
}}
</p>
<el-select
v-else
v-model=
"form.salaId"
style=
"width: 100%;"
disabled
>
<el-option
v-for=
"item in salaArr"
:key=
"item.id"
:label=
"item.deptName"
:value=
"item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属部门:"
>
<el-form-item
label=
"所属部门:"
>
...
@@ -108,7 +129,7 @@
...
@@ -108,7 +129,7 @@
</el-row>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"办件时间:"
>
<el-form-item
label=
"办件时间:"
prop=
"goworkTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
goworkTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
goworkTime
}}
</p>
<el-date-picker
<el-date-picker
...
@@ -355,6 +376,16 @@ export default {
...
@@ -355,6 +376,16 @@ export default {
this
.
staffArr
=
[];
this
.
staffArr
=
[];
}
}
});
});
// 获取大厅列表
this
.
$get
(
"
/dept/getSalaList
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
salaArr
=
res
.
data
.
data
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
// 获取部门列表
// 获取部门列表
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
...
@@ -395,6 +426,7 @@ export default {
...
@@ -395,6 +426,7 @@ export default {
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
goworkTime
:
[{
required
:
true
,
message
:
"
请选择办件时间
"
}],
},
},
staffArr
:
[],
staffArr
:
[],
deptArr
:
[],
deptArr
:
[],
...
@@ -402,6 +434,7 @@ export default {
...
@@ -402,6 +434,7 @@ export default {
fileList
:
[],
fileList
:
[],
kaoqinCateArr
:
[],
kaoqinCateArr
:
[],
ruleArr
:
[],
ruleArr
:
[],
salaArr
:
[],
sourceArr
:
[
sourceArr
:
[
{
{
label
:
"
窗口评价系统
"
,
label
:
"
窗口评价系统
"
,
...
@@ -469,9 +502,9 @@ export default {
...
@@ -469,9 +502,9 @@ export default {
this
.
$forceUpdate
(
this
.
form
);
this
.
$forceUpdate
(
this
.
form
);
},
},
staffChange
(
val
)
{
staffChange
(
val
)
{
console
.
log
(
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
salaId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
salaId
:
""
;
},
},
/** 编辑 */
/** 编辑 */
edit
(
row
)
{
edit
(
row
)
{
...
@@ -606,6 +639,8 @@ export default {
...
@@ -606,6 +639,8 @@ export default {
score
:
""
,
score
:
""
,
processStatus
:
1
,
processStatus
:
1
,
remark
:
""
,
remark
:
""
,
salaId
:
null
,
salaName
:
""
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
...
attendance-performance-manager-ui/admin/src/views/perform/other/record/drawershow.vue
View file @
84bb548f
...
@@ -29,6 +29,27 @@
...
@@ -29,6 +29,27 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属大厅:"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
salaName
}}
</p>
<el-select
v-else
v-model=
"form.salaId"
style=
"width: 100%;"
disabled
>
<el-option
v-for=
"item in salaArr"
:key=
"item.id"
:label=
"item.deptName"
:value=
"item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属部门:"
>
<el-form-item
label=
"所属部门:"
>
...
@@ -67,7 +88,7 @@
...
@@ -67,7 +88,7 @@
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"发生时间:"
>
<el-form-item
label=
"发生时间:"
prop=
"happenTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
happenTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
happenTime
}}
</p>
<el-date-picker
<el-date-picker
v-else
v-else
...
@@ -315,6 +336,16 @@ export default {
...
@@ -315,6 +336,16 @@ export default {
this
.
staffArr
=
[];
this
.
staffArr
=
[];
}
}
});
});
// 获取大厅列表
this
.
$get
(
"
/dept/getSalaList
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
salaArr
=
res
.
data
.
data
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
// 获取部门列表
// 获取部门列表
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
...
@@ -355,6 +386,7 @@ export default {
...
@@ -355,6 +386,7 @@ export default {
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
happenTime
:
[{
required
:
true
,
message
:
"
请选择发生时间
"
}],
},
},
staffArr
:
[],
staffArr
:
[],
deptArr
:
[],
deptArr
:
[],
...
@@ -362,6 +394,7 @@ export default {
...
@@ -362,6 +394,7 @@ export default {
fileList
:
[],
fileList
:
[],
kaoqinCateArr
:
[],
kaoqinCateArr
:
[],
ruleArr
:
[],
ruleArr
:
[],
salaArr
:
[],
sourceArr
:
[
sourceArr
:
[
{
{
label
:
"
窗口评价系统
"
,
label
:
"
窗口评价系统
"
,
...
@@ -432,6 +465,7 @@ export default {
...
@@ -432,6 +465,7 @@ export default {
console
.
log
(
val
);
console
.
log
(
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
salaId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
salaId
:
""
;
},
},
/** 编辑 */
/** 编辑 */
edit
(
row
)
{
edit
(
row
)
{
...
@@ -569,6 +603,8 @@ export default {
...
@@ -569,6 +603,8 @@ export default {
categoryId
:
""
,
categoryId
:
""
,
happenTime
:
""
,
happenTime
:
""
,
filePaths
:
""
,
filePaths
:
""
,
salaId
:
null
,
salaName
:
""
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
...
attendance-performance-manager-ui/admin/src/views/perform/review/record/drawershow.vue
View file @
84bb548f
...
@@ -29,6 +29,27 @@
...
@@ -29,6 +29,27 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属大厅:"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
salaName
}}
</p>
<el-select
v-else
v-model=
"form.salaId"
style=
"width: 100%;"
disabled
>
<el-option
v-for=
"item in salaArr"
:key=
"item.id"
:label=
"item.deptName"
:value=
"item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"所属部门:"
>
<el-form-item
label=
"所属部门:"
>
...
@@ -120,7 +141,7 @@
...
@@ -120,7 +141,7 @@
</el-row>
</el-row>
<el-row>
<el-row>
<el-col
:span=
"22"
>
<el-col
:span=
"22"
>
<el-form-item
label=
"评价时间"
>
<el-form-item
label=
"评价时间"
prop=
"reviewTime"
>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
reviewTime
}}
</p>
<p
v-if=
"form.view == '查看'"
>
{{
form
.
reviewTime
}}
</p>
<el-date-picker
<el-date-picker
...
@@ -370,6 +391,16 @@ export default {
...
@@ -370,6 +391,16 @@ export default {
this
.
staffArr
=
[];
this
.
staffArr
=
[];
}
}
});
});
// 获取大厅列表
this
.
$get
(
"
/dept/getSalaList
"
)
.
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
this
.
salaArr
=
res
.
data
.
data
;
}
})
.
catch
((
error
)
=>
{
this
.
$message
.
error
(
error
.
message
);
});
// 获取部门列表
// 获取部门列表
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
this
.
$post
(
"
/dept/list
"
,
{
page
:
1
,
size
:
-
1
}).
then
((
res
)
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
...
@@ -410,12 +441,14 @@ export default {
...
@@ -410,12 +441,14 @@ export default {
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
{
max
:
64
,
message
:
"
最多只能录入64个字符
"
,
trigger
:
"
blur
"
},
],
],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
createTime
:
[{
required
:
true
,
message
:
"
请选择创建时间
"
}],
reviewTime
:
[{
required
:
true
,
message
:
"
请选择评价时间
"
}],
},
},
staffArr
:
[],
staffArr
:
[],
deptArr
:
[],
deptArr
:
[],
kaoqinArr
:
[],
kaoqinArr
:
[],
fileList
:
[],
fileList
:
[],
kaoqinCateArr
:
[],
kaoqinCateArr
:
[],
salaArr
:
[],
ruleArr
:
[],
ruleArr
:
[],
sourceArr
:
[
sourceArr
:
[
{
{
...
@@ -487,6 +520,7 @@ export default {
...
@@ -487,6 +520,7 @@ export default {
console
.
log
(
val
);
console
.
log
(
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
let
arr
=
this
.
staffArr
.
filter
((
v
)
=>
v
.
id
==
val
);
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
deptId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
deptId
:
""
;
this
.
form
.
salaId
=
arr
&&
arr
.
length
>
0
?
arr
[
0
].
salaId
:
""
;
},
},
/** 编辑 */
/** 编辑 */
edit
(
row
)
{
edit
(
row
)
{
...
@@ -627,6 +661,8 @@ export default {
...
@@ -627,6 +661,8 @@ export default {
windowNum
:
""
,
windowNum
:
""
,
workNum
:
""
,
workNum
:
""
,
categoryId
:
""
,
categoryId
:
""
,
salaId
:
null
,
salaName
:
""
,
};
};
this
.
resetForm
(
"
form
"
);
this
.
resetForm
(
"
form
"
);
},
},
...
...
attendance-performance-manager-ui/admin/src/views/staff/perform/summary/list.vue
View file @
84bb548f
...
@@ -111,13 +111,30 @@ export default {
...
@@ -111,13 +111,30 @@ export default {
{
label
:
"
姓名
"
,
prop
:
"
staffName
"
,
formatter
:
this
.
formatter
},
{
label
:
"
姓名
"
,
prop
:
"
staffName
"
,
formatter
:
this
.
formatter
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
,
formatter
:
this
.
formatter
},
{
label
:
"
工号
"
,
prop
:
"
workNum
"
,
formatter
:
this
.
formatter
,
width
:
80
,
},
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
,
formatter
:
this
.
formatter
},
{
label
:
"
手机号
"
,
prop
:
"
phoneNumber
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
所属大厅
"
,
prop
:
"
salaName
"
,
formatter
:
this
.
formatter
},
{
label
:
"
所属大厅
"
,
prop
:
"
salaName
"
,
formatter
:
this
.
formatter
,
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
,
formatter
:
this
.
formatter
},
{
label
:
"
所属部门
"
,
prop
:
"
deptName
"
,
formatter
:
this
.
formatter
,
},
{
{
label
:
"
所属中心
"
,
label
:
"
所属中心
"
,
formatter
:
(
row
)
=>
{
formatter
:
(
row
)
=>
{
...
@@ -128,31 +145,128 @@ export default {
...
@@ -128,31 +145,128 @@ export default {
{
{
label
:
"
考勤绩效指标分数
"
,
label
:
"
考勤绩效指标分数
"
,
prop
:
"
attendScore
"
,
prop
:
"
attendScore
"
,
width
:
140
,
formatter
:
(
row
)
=>
{
console
.
log
(
row
,
this
.
tableData
.
dict
,
"
1111
"
);
return
(
this
.
tableData
.
dict
.
weightPdu
.
attendWeight
-
row
.
attendScore
).
toFixed
(
2
)
>
0
?
(
<
span
style
=
"
color:red
"
>
{
row
.
attendScore
+
"
(-
"
+
(
this
.
tableData
.
dict
.
weightPdu
.
attendWeight
-
row
.
attendScore
).
toFixed
(
2
)
+
"
)
"
}
<
/span
>
)
:
(
row
.
attendScore
+
`(
${(
this
.
tableData
.
dict
.
weightPdu
.
attendWeight
-
row
.
attendScore
).
toFixed
(
2
)}
)`
);
},
},
},
{
{
label
:
"
评价绩效指标分数
"
,
label
:
"
评价绩效指标分数
"
,
prop
:
"
reviewScore
"
,
prop
:
"
reviewScore
"
,
width
:
140
,
formatter
:
(
row
)
=>
{
return
(
this
.
tableData
.
dict
.
weightPdu
.
reviewWeight
-
row
.
reviewScore
).
toFixed
(
2
)
>
0
?
(
<
span
style
=
"
color:red
"
>
{
row
.
reviewScore
+
"
(-
"
+
(
this
.
tableData
.
dict
.
weightPdu
.
reviewWeight
-
row
.
reviewScore
).
toFixed
(
2
)
+
"
)
"
}
<
/span
>
)
:
(
row
.
reviewScore
+
`(
${(
this
.
tableData
.
dict
.
weightPdu
.
reviewWeight
-
row
.
reviewScore
).
toFixed
(
2
)}
)`
);
},
},
},
{
// {
label
:
"
投诉绩效指标分数
"
,
// label: "投诉绩效指标分数",
prop
:
"
complainScore
"
,
// prop: "complainScore",
},
// formatter: (row) => {
// return (
// row.complainScore +
// `(${this.tableData.dict.attendWeight - row.complainScore})`
// );
// },
// },
{
{
label
:
"
办件绩效分数
"
,
label
:
"
办件绩效分数
"
,
prop
:
"
goworkScore
"
,
prop
:
"
goworkScore
"
,
width
:
140
,
formatter
:
(
row
)
=>
{
return
(
this
.
tableData
.
dict
.
weightPdu
.
goworkWeight
-
row
.
goworkScore
).
toFixed
(
2
)
>
0
?
(
<
span
style
=
"
color:red
"
>
{
row
.
goworkScore
+
"
(-
"
+
(
this
.
tableData
.
dict
.
weightPdu
.
goworkWeight
-
row
.
goworkScore
).
toFixed
(
2
)
+
"
)
"
}
<
/span
>
)
:
(
row
.
goworkScore
+
`(
${(
this
.
tableData
.
dict
.
weightPdu
.
goworkWeight
-
row
.
goworkScore
).
toFixed
(
2
)}
)`
);
},
},
},
{
{
label
:
"
效能绩效分数
"
,
label
:
"
效能绩效分数
"
,
prop
:
"
effectScore
"
,
prop
:
"
effectScore
"
,
width
:
140
,
formatter
:
(
row
)
=>
{
return
(
this
.
tableData
.
dict
.
weightPdu
.
effectWeight
-
row
.
effectScore
).
toFixed
(
2
)
>
0
?
(
<
span
style
=
"
color:red
"
>
{
row
.
effectScore
+
"
(-
"
+
(
this
.
tableData
.
dict
.
weightPdu
.
effectWeight
-
row
.
effectScore
).
toFixed
(
2
)
+
"
)
"
}
<
/span
>
)
:
(
row
.
effectScore
+
`(
${(
this
.
tableData
.
dict
.
weightPdu
.
effectWeight
-
row
.
effectScore
).
toFixed
(
2
)}
)`
);
},
},
},
{
// {
label
:
"
自评绩效分数
"
,
// label: "自评绩效分数",
prop
:
"
otherScore
"
,
// prop: "otherScore",
},
// formatter: (row) => {
// return (
// row.attendScore +
// `(${this.tableData.dict.selfWeight - row.attendScore})`
// );
// },
// },
// {
// {
// label: "累计异常分数",
// label: "累计异常分数",
...
@@ -167,7 +281,7 @@ export default {
...
@@ -167,7 +281,7 @@ export default {
{
label
:
"
月
"
,
prop
:
"
month
"
,
formatter
:
this
.
formatter
},
{
label
:
"
月
"
,
prop
:
"
month
"
,
formatter
:
this
.
formatter
},
{
{
label
:
"
操作
"
,
label
:
"
操作
"
,
width
:
24
0
,
width
:
12
0
,
formatter
:
(
row
)
=>
{
formatter
:
(
row
)
=>
{
return
(
return
(
<
table
-
buttons
<
table
-
buttons
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncRegisterUserPicTaskImpl.java
View file @
84bb548f
package
com.mortals.xhx.daemon.task
;
package
com.mortals.xhx.daemon.task
;
import
cn.hutool.http.HttpUtil
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.service.ITask
;
import
com.mortals.framework.service.ITask
;
import
com.mortals.framework.service.ITaskExcuteService
;
import
com.mortals.framework.service.ITaskExcuteService
;
import
com.mortals.framework.utils.ServletUtils
;
import
com.mortals.framework.utils.ServletUtils
;
import
com.mortals.xhx.base.system.upload.service.UploadService
;
import
com.mortals.xhx.base.system.upload.service.UploadService
;
import
com.mortals.xhx.module.door.model.DoorEntity
;
import
com.mortals.xhx.module.door.model.DoorQuery
;
import
com.mortals.xhx.module.door.service.DoorService
;
import
com.mortals.xhx.module.hik.face.model.req.img.ImgReq
;
import
com.mortals.xhx.module.hik.face.model.req.img.ImgReq
;
import
com.mortals.xhx.module.hik.face.service.IHikFaceService
;
import
com.mortals.xhx.module.hik.face.service.IHikFaceService
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffEntity
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.model.StaffQuery
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.checkerframework.checker.units.qual.A
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.ByteArrayInputStream
;
import
java.io.InputStream
;
import
java.io.InputStream
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -38,11 +38,25 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
...
@@ -38,11 +38,25 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
@Autowired
@Autowired
private
StaffService
staffService
;
private
StaffService
staffService
;
@Value
(
"${hik.host:}"
)
protected
String
hikhost
;
@Autowired
private
DoorService
doorService
;
@Override
@Override
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
log
.
info
(
"同步员工照片任务"
);
log
.
info
(
"同步员工照片任务"
);
syncRegisterUsersPhotos
();
if
(!
ObjectUtils
.
isEmpty
(
hikhost
))
{
staffService
.
syncRegisterUsersPhotos
();
}
else
{
List
<
DoorEntity
>
doorEntities
=
doorService
.
find
(
new
DoorQuery
());
for
(
DoorEntity
doorEntity
:
doorEntities
)
{
//todo 直连设备
}
}
// syncRegisterUsersPhotos();
log
.
info
(
"同步员工任务照片完成"
);
log
.
info
(
"同步员工任务照片完成"
);
}
}
...
@@ -53,7 +67,6 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
...
@@ -53,7 +67,6 @@ public class SyncRegisterUserPicTaskImpl implements ITaskExcuteService {
.
filter
(
item
->
ObjectUtils
.
isEmpty
(
item
.
getPhotoPath
()))
.
filter
(
item
->
ObjectUtils
.
isEmpty
(
item
.
getPhotoPath
()))
.
filter
(
item
->
!
ObjectUtils
.
isEmpty
(
item
.
getPicUri
())).
collect
(
Collectors
.
toList
());
.
filter
(
item
->
!
ObjectUtils
.
isEmpty
(
item
.
getPicUri
())).
collect
(
Collectors
.
toList
());
for
(
StaffEntity
staff
:
staffList
)
{
for
(
StaffEntity
staff
:
staffList
)
{
ImgReq
imgReq
=
new
ImgReq
();
ImgReq
imgReq
=
new
ImgReq
();
imgReq
.
setServerIndexCode
(
staff
.
getServerIndexCode
());
imgReq
.
setServerIndexCode
(
staff
.
getServerIndexCode
());
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/daemon/task/SyncUserTaskImpl.java
View file @
84bb548f
...
@@ -23,6 +23,7 @@ import com.mortals.xhx.module.staff.service.StaffLeaveService;
...
@@ -23,6 +23,7 @@ import com.mortals.xhx.module.staff.service.StaffLeaveService;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
com.mortals.xhx.module.staff.service.StaffService
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.ObjectUtils
;
...
@@ -47,53 +48,67 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
...
@@ -47,53 +48,67 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
private
IHikPersonService
hikPersonService
;
private
IHikPersonService
hikPersonService
;
@Autowired
@Autowired
private
IDingPersonService
dingPersonService
;
private
IDingPersonService
dingPersonService
;
@Value
(
"${hik.host:}"
)
protected
String
hikhost
;
@Override
@Override
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
public
void
excuteTask
(
ITask
task
)
throws
AppException
{
try
{
try
{
log
.
info
(
"同步部门"
);
if
(!
ObjectUtils
.
isEmpty
(
hikhost
))
{
deptService
.
syncDept
(
null
);
log
.
info
(
"同步部门"
);
log
.
info
(
"同步用户"
);
deptService
.
syncDept
(
null
);
staffService
.
syncPersons
(
null
);
log
.
info
(
"同步用户"
);
log
.
info
(
"同步钉钉usreId"
);
staffService
.
syncPersons
(
null
);
try
{
log
.
info
(
"同步钉钉usreId"
);
List
<
UserEntity
>
userList
=
userService
.
getCacheList
().
stream
()
try
{
.
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getCustomerId
()))
List
<
UserEntity
>
userList
=
userService
.
getCacheList
().
stream
()
.
filter
(
f
->
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
.
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getCustomerId
()))
List
<
UserEntity
>
updateUserList
=
userList
.
stream
().
map
(
item
->
{
.
filter
(
f
->
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
UserEntity
userEntity
=
new
UserEntity
();
List
<
UserEntity
>
updateUserList
=
userList
.
stream
().
map
(
item
->
{
userEntity
.
setId
(
item
.
getId
());
UserEntity
userEntity
=
new
UserEntity
();
userEntity
.
setId
(
item
.
getId
());
String
mobile
=
""
;
StaffEntity
staffCache
=
staffService
.
getCache
(
item
.
getCustomerId
().
toString
());
String
mobile
=
""
;
if
(!
ObjectUtils
.
isEmpty
(
staffCache
)
&&
!
ObjectUtils
.
isEmpty
(
staffCache
.
getPhoneNumber
()))
{
StaffEntity
staffCache
=
staffService
.
getCache
(
item
.
getCustomerId
().
toString
());
mobile
=
staffCache
.
getPhoneNumber
();
if
(!
ObjectUtils
.
isEmpty
(
staffCache
)
&&
!
ObjectUtils
.
isEmpty
(
staffCache
.
getPhoneNumber
()))
{
if
(
ObjectUtils
.
isEmpty
(
item
.
getMobile
()))
{
mobile
=
staffCache
.
getPhoneNumber
();
userEntity
.
setMobile
(
mobile
);
if
(
ObjectUtils
.
isEmpty
(
item
.
getMobile
()))
{
userEntity
.
setMobile
(
mobile
);
}
}
}
}
if
(!
ObjectUtils
.
isEmpty
(
mobile
))
{
if
(!
ObjectUtils
.
isEmpty
(
mobile
))
{
Rest
<
String
>
personByMobile
=
dingPersonService
.
getPersonByMobile
(
mobile
);
Rest
<
String
>
personByMobile
=
dingPersonService
.
getPersonByMobile
(
mobile
);
if
(!
ObjectUtils
.
isEmpty
(
personByMobile
)
&&
if
(!
ObjectUtils
.
isEmpty
(
personByMobile
)
&&
YesNoEnum
.
YES
.
getValue
()
==
personByMobile
.
getCode
()
YesNoEnum
.
YES
.
getValue
()
==
personByMobile
.
getCode
()
&&
!
ObjectUtils
.
isEmpty
(
personByMobile
.
getData
()))
{
&&
!
ObjectUtils
.
isEmpty
(
personByMobile
.
getData
()))
{
userEntity
.
setDingUserId
(
personByMobile
.
getData
());
userEntity
.
setDingUserId
(
personByMobile
.
getData
());
}
}
}
}
userEntity
.
setUpdateTime
(
new
Date
());
userEntity
.
setUpdateTime
(
new
Date
());
userEntity
.
setUpdateUserId
(
1L
);
userEntity
.
setUpdateUserId
(
1L
);
return
userEntity
;
return
userEntity
;
}).
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
}).
filter
(
f
->
!
ObjectUtils
.
isEmpty
(
f
.
getDingUserId
())).
collect
(
Collectors
.
toList
());
if
(!
ObjectUtils
.
isEmpty
(
updateUserList
))
{
if
(!
ObjectUtils
.
isEmpty
(
updateUserList
))
{
log
.
info
(
"更新用户钉钉id信息数量:{}"
,
updateUserList
.
size
());
log
.
info
(
"更新用户钉钉id信息数量:{}"
,
updateUserList
.
size
());
userService
.
getUserDao
().
updateBatch
(
updateUserList
);
userService
.
getUserDao
().
updateBatch
(
updateUserList
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"同步钉钉usreId失败"
);
}
}
}
catch
(
Exception
e
)
{
}
else
{
log
.
error
(
"同步钉钉usreId失败"
);
//todo 设备直连
deptService
.
syncDeptByDevice
(
null
);
staffService
.
syncPersonsByDevices
(
null
);
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"同步人事异常"
,
e
);
log
.
error
(
"同步人事异常"
,
e
);
}
}
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/DeptService.java
View file @
84bb548f
...
@@ -91,4 +91,12 @@ public interface DeptService extends ICRUDService<DeptEntity, Long> {
...
@@ -91,4 +91,12 @@ public interface DeptService extends ICRUDService<DeptEntity, Long> {
*/
*/
Rest
<
String
>
syncDept
(
Context
context
);
Rest
<
String
>
syncDept
(
Context
context
);
/**
* 通过设备同步部门信息
* @param context
* @return
*/
Rest
<
String
>
syncDeptByDevice
(
Context
context
);
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/dept/service/impl/DeptServiceImpl.java
View file @
84bb548f
...
@@ -341,4 +341,12 @@ public class DeptServiceImpl extends AbstractCRUDServiceImpl<DeptDao, DeptEntity
...
@@ -341,4 +341,12 @@ public class DeptServiceImpl extends AbstractCRUDServiceImpl<DeptDao, DeptEntity
return
Rest
.
ok
();
return
Rest
.
ok
();
}
}
@Override
public
Rest
<
String
>
syncDeptByDevice
(
Context
context
)
{
//todo
return
Rest
.
ok
();
}
}
}
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorEntity.java
View file @
84bb548f
package
com.mortals.xhx.module.door.model
;
package
com.mortals.xhx.module.door.model
;
import
java.util.List
;
import
java.util.ArrayList
;
import
java.math.BigDecimal
;
import
cn.hutool.core.date.DateUtil
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.mortals.framework.annotation.Excel
;
import
com.mortals.framework.model.BaseEntityLong
;
import
com.mortals.xhx.module.door.model.vo.DoorVo
;
import
com.mortals.xhx.module.door.model.vo.DoorVo
;
import
lombok.Data
;
import
lombok.Data
;
/**
/**
* 门禁设备实体对象
* 门禁设备实体对象
*
*
* @author zxfei
* @author zxfei
* @date 2023-11-22
* @date 2024-03-18
*/
*/
@Data
@Data
public
class
DoorEntity
extends
DoorVo
{
public
class
DoorEntity
extends
DoorVo
{
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/**
/**
* 设备名称
* 设备名称
*/
*/
private
String
deviceName
;
private
String
deviceName
;
/**
/**
* 设备编码
* 设备编码
*/
*/
private
String
deviceCode
;
private
String
deviceCode
;
/**
/**
* Ip地址
* Ip地址
*/
*/
private
String
ip
;
private
String
ip
;
/**
/**
* 端口
* 端口
*/
*/
private
Integer
port
;
private
Integer
port
;
/**
/**
* 用户名
* 用户名
*/
*/
private
String
username
;
private
String
username
;
/**
/**
* 密码
* 密码
*/
*/
private
String
password
;
private
String
password
;
/**
* 所属部门id
*/
private
String
deptId
;
/**
* 所属部门名称
*/
private
String
deptName
;
/**
* 备注
*/
private
String
remark
;
@Override
@Override
public
int
hashCode
()
{
public
int
hashCode
()
{
return
this
.
getId
().
hashCode
();
return
this
.
getId
().
hashCode
();
}
}
@Override
@Override
public
boolean
equals
(
Object
obj
)
{
public
boolean
equals
(
Object
obj
)
{
...
@@ -45,18 +65,21 @@ public class DoorEntity extends DoorVo {
...
@@ -45,18 +65,21 @@ public class DoorEntity extends DoorVo {
if
(
obj
instanceof
DoorEntity
)
{
if
(
obj
instanceof
DoorEntity
)
{
DoorEntity
tmp
=
(
DoorEntity
)
obj
;
DoorEntity
tmp
=
(
DoorEntity
)
obj
;
if
(
this
.
getId
()
==
tmp
.
getId
())
{
if
(
this
.
getId
()
==
tmp
.
getId
())
{
return
true
;
return
true
;
}
}
}
}
return
false
;
return
false
;
}
}
public
void
initAttrValue
(){
public
void
initAttrValue
(){
this
.
deviceName
=
""
;
this
.
deviceName
=
""
;
this
.
deviceCode
=
""
;
this
.
deviceCode
=
""
;
this
.
ip
=
""
;
this
.
ip
=
""
;
this
.
port
=
0
;
this
.
port
=
0
;
this
.
username
=
""
;
this
.
username
=
""
;
this
.
password
=
""
;
this
.
password
=
""
;
this
.
deptId
=
""
;
this
.
deptName
=
""
;
this
.
remark
=
""
;
}
}
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/model/DoorQuery.java
View file @
84bb548f
This diff is collapsed.
Click to expand it.
attendance-performance-manager/src/main/java/com/mortals/xhx/module/door/service/impl/DoorServiceImpl.java
View file @
84bb548f
...
@@ -51,11 +51,6 @@ public class DoorServiceImpl extends AbstractCRUDServiceImpl<DoorDao, DoorEntity
...
@@ -51,11 +51,6 @@ public class DoorServiceImpl extends AbstractCRUDServiceImpl<DoorDao, DoorEntity
@Autowired
@Autowired
private
IHikDoorService
hikDoorService
;
private
IHikDoorService
hikDoorService
;
private
Integer
day
;
@Autowired
private
ICacheService
cacheService
;
@Override
@Override
public
Rest
<
Void
>
syncDoorDeviceEvents
(
DoorEntity
doorEntity
,
HikDoorEventReq
hikDoorEventReq
)
{
public
Rest
<
Void
>
syncDoorDeviceEvents
(
DoorEntity
doorEntity
,
HikDoorEventReq
hikDoorEventReq
)
{
...
...
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/StaffService.java
View file @
84bb548f
...
@@ -53,4 +53,10 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> {
...
@@ -53,4 +53,10 @@ public interface StaffService extends ICRUDCacheService<StaffEntity,Long> {
*/
*/
void
doUpdateSala
();
void
doUpdateSala
();
/**
* 通过海康云同步用户 照片
* @return
*/
Rest
<
Void
>
syncRegisterUsersPhotos
();
}
}
\ No newline at end of file
attendance-performance-manager/src/main/java/com/mortals/xhx/module/staff/service/impl/StaffServiceImpl.java
View file @
84bb548f
This diff is collapsed.
Click to expand it.
attendance-performance-manager/src/main/resources/sqlmap/module/door/DoorMapper.xml
View file @
84bb548f
This diff is collapsed.
Click to expand it.
db/add.sql
View file @
84bb548f
...
@@ -1175,29 +1175,6 @@ ADD COLUMN `salaId` bigint(20) COMMENT '所属大厅' AFTER `deptName`,
...
@@ -1175,29 +1175,6 @@ ADD COLUMN `salaId` bigint(20) COMMENT '所属大厅' AFTER `deptName`,
ADD
COLUMN
`salaName`
varchar
(
128
)
COMMENT
'所属大厅名称'
AFTER
`salaId`
;
ADD
COLUMN
`salaName`
varchar
(
128
)
COMMENT
'所属大厅名称'
AFTER
`salaId`
;
-- ----------------------------
2024
-
02
-
29
-- ----------------------------
-- ----------------------------
-- 门禁设备表
-- ----------------------------
DROP
TABLE
IF
EXISTS
`mortals_xhx_door`
;
CREATE
TABLE
mortals_xhx_door
(
`id`
bigint
(
20
)
AUTO_INCREMENT
COMMENT
'序号,主键,自增长'
,
`deviceName`
varchar
(
64
)
COMMENT
'设备名称'
,
`deviceCode`
varchar
(
64
)
COMMENT
'设备编码'
,
`ip`
varchar
(
64
)
COMMENT
'Ip地址'
,
`port`
int
(
9
)
COMMENT
'端口'
,
`username`
varchar
(
64
)
COMMENT
'用户名'
,
`password`
varchar
(
64
)
COMMENT
'密码'
,
`createTime`
datetime
COMMENT
'创建时间'
,
`createUserId`
bigint
(
20
)
COMMENT
'创建用户'
,
`updateUserId`
bigint
(
20
)
COMMENT
'更新用户'
,
`updateTime`
datetime
COMMENT
'修改时间'
,
PRIMARY
KEY
(
`id`
)
,
KEY
`deviceCode`
(
`deviceCode`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
COMMENT
=
'门禁设备'
;
-- ------------------
-- ------------------
-- 2024-03-12
-- 2024-03-12
-- 绩效表增加人员大厅字段
-- 绩效表增加人员大厅字段
...
@@ -1270,4 +1247,31 @@ ALTER TABLE `mortals_xhx_staff_perform_stat`
...
@@ -1270,4 +1247,31 @@ ALTER TABLE `mortals_xhx_staff_perform_stat`
ALTER
TABLE
`mortals_xhx_staff_perform_summary`
ALTER
TABLE
`mortals_xhx_staff_perform_summary`
ADD
COLUMN
`salaId`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'所属大厅'
AFTER
`deptName`
,
ADD
COLUMN
`salaId`
bigint
(
20
)
DEFAULT
NULL
COMMENT
'所属大厅'
AFTER
`deptName`
,
ADD
COLUMN
`salaName`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'所属大厅名称'
AFTER
`salaId`
;
ADD
COLUMN
`salaName`
varchar
(
128
)
DEFAULT
NULL
COMMENT
'所属大厅名称'
AFTER
`salaId`
;
\ No newline at end of file
-- ----------------------------
2024
-
03
-
18
-- ----------------------------
-- ----------------------------
-- 门禁设备表
-- ----------------------------
DROP
TABLE
IF
EXISTS
`mortals_xhx_door`
;
CREATE
TABLE
mortals_xhx_door
(
`id`
bigint
(
20
)
AUTO_INCREMENT
COMMENT
'序号,主键,自增长'
,
`deviceName`
varchar
(
64
)
COMMENT
'设备名称'
,
`deviceCode`
varchar
(
64
)
COMMENT
'设备编码'
,
`ip`
varchar
(
64
)
COMMENT
'Ip地址'
,
`port`
int
(
9
)
COMMENT
'端口'
,
`username`
varchar
(
64
)
COMMENT
'用户名'
,
`password`
varchar
(
64
)
COMMENT
'密码'
,
`createTime`
datetime
COMMENT
'创建时间'
,
`createUserId`
bigint
(
20
)
COMMENT
'创建用户'
,
`updateUserId`
bigint
(
20
)
COMMENT
'更新用户'
,
`updateTime`
datetime
COMMENT
'修改时间'
,
`deptId`
bigint
(
20
)
COMMENT
'所属部门id'
,
`deptName`
varchar
(
64
)
COMMENT
'所属部门名称'
,
`remark`
varchar
(
256
)
COMMENT
'备注'
,
PRIMARY
KEY
(
`id`
)
,
KEY
`deviceCode`
(
`deviceCode`
)
USING
BTREE
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
COMMENT
=
'门禁设备'
;
doc/考勤绩效管理系统.docx
View file @
84bb548f
No preview for this file type
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