Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
8
8timerapiv200
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
8timerv2
8timerapiv200
Commits
214aab91
Commit
214aab91
authored
Jun 10, 2020
by
lal
Committed by
chenzg
Jul 05, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复考勤BUG
parent
e38a8e2b
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
195 additions
and
30 deletions
+195
-30
src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
+169
-23
src/main/java/cn/timer/api/controller/kqgl/ClockInTool.java
+11
-3
src/main/java/cn/timer/api/controller/kqgl/TimeCardController.java
+9
-1
src/main/java/cn/timer/api/dto/kqmk/DailyDetailsDto.java
+1
-0
src/main/resources/mapping/kqmk/KqglAssoMonthPunchSummaryMapper.xml
+5
-3
No files found.
src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
View file @
214aab91
...
@@ -81,7 +81,7 @@ public class ClockInController {
...
@@ -81,7 +81,7 @@ public class ClockInController {
String
current_time
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
format
(
new
Date
());
String
current_time
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
format
(
new
Date
());
String
current
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
).
format
(
new
Date
());
String
current
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
).
format
(
new
Date
());
String
yesterday
=
ClockInTool
.
requires_extra_times
(
current
,-
1
,
3
);
//前一天
String
yesterday
=
ClockInTool
.
requires_extra_times
(
current
,-
1
,
3
,
1
);
//前一天
Long
startDateyesterday
=
DateUtil
.
getStartTime
(
0
,
DateUtil
.
getStringTime
(
yesterday
,
"yyyy-MM-dd"
)).
getTime
();
Long
startDateyesterday
=
DateUtil
.
getStartTime
(
0
,
DateUtil
.
getStringTime
(
yesterday
,
"yyyy-MM-dd"
)).
getTime
();
Long
endDateyesterday
=
DateUtil
.
getnowEndTime
(
23
,
DateUtil
.
getStringTime
(
yesterday
,
"yyyy-MM-dd"
)).
getTime
();
Long
endDateyesterday
=
DateUtil
.
getnowEndTime
(
23
,
DateUtil
.
getStringTime
(
yesterday
,
"yyyy-MM-dd"
)).
getTime
();
...
@@ -90,7 +90,7 @@ public class ClockInController {
...
@@ -90,7 +90,7 @@ public class ClockInController {
String
toweek
=
""
;
String
toweek
=
""
;
String
msg
=
"未知错误,请联系管理员"
;
String
msg
=
"未知错误,请联系管理员"
;
int
sbyf
=
0
;
//0:失败;1:成功
int
sbyf
=
1
;
//0:失败;1:成功
JSONObject
jsonArray
=
new
JSONObject
(
json
);
JSONObject
jsonArray
=
new
JSONObject
(
json
);
String
asDevId
=
jsonArray
.
get
(
"dev_id"
).
toString
();
//考勤机编码
String
asDevId
=
jsonArray
.
get
(
"dev_id"
).
toString
();
//考勤机编码
...
@@ -123,26 +123,25 @@ public class ClockInController {
...
@@ -123,26 +123,25 @@ public class ClockInController {
int
atttype
=
0
;
int
atttype
=
0
;
ClockCollectData
clockt
=
new
ClockCollectData
();
ClockCollectData
clockt
=
new
ClockCollectData
();
//putime: 根据日期 得到打卡所需的详细信息
AttendanceCardListDto
attdate
=
MethodCall
(
qyid
,
userid
,
putime
);
/*******/
/*******/
if
(
attgro
!=
null
)
{
//判断考勤组是否存在
if
(
attgro
!=
null
)
{
//判断考勤组是否存在
List
<
KqglAssoKqzdkfs
>
kqjs
=
KqglAssoKqzdkfs
.
builder
().
build
().
selectList
(
new
QueryWrapper
<
KqglAssoKqzdkfs
>().
lambda
().
eq
(
KqglAssoKqzdkfs:
:
getKqzId
,
attgro
.
getId
()));
List
<
KqglAssoKqzdkfs
>
kqjs
=
KqglAssoKqzdkfs
.
builder
().
build
().
selectList
(
new
QueryWrapper
<
KqglAssoKqzdkfs
>().
lambda
().
eq
(
KqglAssoKqzdkfs:
:
getKqzId
,
attgro
.
getId
()));
if
(
kqjs
.
size
()
>
0
)
{
if
(
kqjs
.
size
()
>
0
)
{
// long time_ = DateUtil.getStringTime(sStdIoTime, "yyyy-MM-dd HH:mm:ss");
// String putime = new SimpleDateFormat("yyyy-MM-dd").format(time_);//转换打卡时间格式
//打卡当天开始时间,打卡当天结束时间
// Long startDate = DateUtil.getStartTime(0,DateUtil.getStringTime(putime,"yyyy-MM-dd")).getTime();
// Long endDate = DateUtil.getnowEndTime(23,DateUtil.getStringTime(putime,"yyyy-MM-dd")).getTime();
/**
* 当考勤组为“固定排班”和“自定义排班”时 方可使用
*/
if
(
attdate
.
getAttgrouptype
()
!=
3
)
{
//查询打卡当天是否有记录**********************************
//查询打卡当天是否有记录**********************************
// KqglAssoDkmx dkmc = KqglAssoDkmx.builder().build().selectOne(new QueryWrapper<KqglAssoDkmx>().lambda().eq(KqglAssoDkmx::getUserid, userid)
// .ge(KqglAssoDkmx::getDksj, startDate).le(KqglAssoDkmx::getDksj, endDate));
KqglAssoDkmx
dkmc
=
KqglAssoDkmx
.
builder
().
build
();
KqglAssoDkmx
dkmc
=
KqglAssoDkmx
.
builder
().
build
();
//putime: 根据日期 得到打卡所需的详细信息
//putime: 根据日期 得到打卡所需的详细信息
AttendanceCardListDto
attdate
=
MethodCall
(
qyid
,
userid
,
putime
);
//
AttendanceCardListDto attdate = MethodCall(qyid,userid,putime);
String
dakariqi
=
new
SimpleDateFormat
(
"yy-MM-dd"
).
format
(
Double
.
valueOf
(
startDateyesterday
))+
" "
+
ClockInTool
.
dateToWeek2
(
yesterday
);
String
dakariqi
=
new
SimpleDateFormat
(
"yy-MM-dd"
).
format
(
Double
.
valueOf
(
startDateyesterday
))+
" "
+
ClockInTool
.
dateToWeek2
(
yesterday
);
...
@@ -154,7 +153,6 @@ public class ClockInController {
...
@@ -154,7 +153,6 @@ public class ClockInController {
int
dkcs
=
shif
.
getSxbcs
()*
2
;
int
dkcs
=
shif
.
getSxbcs
()*
2
;
List
<
AttSchedule
>
ashss
=
attdate
.
getAttsch
();
//获取今天应打卡时间
List
<
AttSchedule
>
ashss
=
attdate
.
getAttsch
();
//获取今天应打卡时间
System
.
out
.
println
(
ashss
.
get
(
0
).
getTime
());
boolean
dnck
=
false
;
boolean
dnck
=
false
;
if
(
ashss
.
size
()
>
0
)
{
if
(
ashss
.
size
()
>
0
)
{
Date
sd1
=
df1
.
parse
(
ClockInTool
.
stampToDate
(
String
.
valueOf
(
ashss
.
get
(
0
).
getTime
())));
//当天应打的首次上班卡时间
Date
sd1
=
df1
.
parse
(
ClockInTool
.
stampToDate
(
String
.
valueOf
(
ashss
.
get
(
0
).
getTime
())));
//当天应打的首次上班卡时间
...
@@ -206,7 +204,7 @@ public class ClockInController {
...
@@ -206,7 +204,7 @@ public class ClockInController {
}
else
{
}
else
{
dkmc
=
KqglAssoDkmx
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
KqglAssoDkmx
>().
lambda
().
eq
(
KqglAssoDkmx:
:
getUserid
,
userid
)
dkmc
=
KqglAssoDkmx
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
KqglAssoDkmx
>().
lambda
().
eq
(
KqglAssoDkmx:
:
getUserid
,
userid
)
.
ge
(
KqglAssoDkmx:
:
getDksj
,
startDate
).
le
(
KqglAssoDkmx:
:
getDksj
,
endDate
));
.
ge
(
KqglAssoDkmx:
:
getDksj
,
startDate
).
le
(
KqglAssoDkmx:
:
getDksj
,
endDate
));
// attdate = MethodCall(qyid,userid,putime);
// attdate = MethodCall(qyid,userid,putime);
attendance_date
=
startDate
;
attendance_date
=
startDate
;
toweek
=
putime
;
toweek
=
putime
;
}
}
...
@@ -215,12 +213,10 @@ public class ClockInController {
...
@@ -215,12 +213,10 @@ public class ClockInController {
AttendanceCardListDto
attdate1
=
MethodCall
(
qyid
,
userid
,
yesterday
);
AttendanceCardListDto
attdate1
=
MethodCall
(
qyid
,
userid
,
yesterday
);
}
}
//putime: 根据日期 得到打卡所需的详细信息
//putime: 根据日期 得到打卡所需的详细信息
// AttendanceCardListDto attdate = MethodCall(qyid,userid,putime);
// AttendanceCardListDto attdate = MethodCall(qyid,userid,putime);
// ClockCollectData clockt = new ClockCollectData();
// ClockCollectData clockt = new ClockCollectData();
long
starttime1
=
0
,
starttime1ks
=
0
,
starttime1js
=
0
,
endtime1
=
0
,
endtime1ks
=
0
,
endtime1js
=
0
,
starttime2
=
0
,
starttime2ks
=
0
,
starttime2js
=
0
,
endtime2
=
0
,
endtime2ks
=
0
,
endtime2js
=
0
,
starttime3
=
0
,
starttime3ks
=
0
,
starttime3js
=
0
,
long
starttime1
=
0
,
starttime1ks
=
0
,
starttime1js
=
0
,
endtime1
=
0
,
endtime1ks
=
0
,
endtime1js
=
0
,
starttime2
=
0
,
starttime2ks
=
0
,
starttime2js
=
0
,
endtime2
=
0
,
endtime2ks
=
0
,
endtime2js
=
0
,
starttime3
=
0
,
starttime3ks
=
0
,
starttime3js
=
0
,
endtime3
=
0
,
endtime3ks
=
0
,
endtime3js
=
0
;
endtime3
=
0
,
endtime3ks
=
0
,
endtime3js
=
0
;
if
(
attdate
.
getAttsch
().
size
()
>
0
)
{
if
(
attdate
.
getAttsch
().
size
()
>
0
)
{
...
@@ -242,9 +238,8 @@ public class ClockInController {
...
@@ -242,9 +238,8 @@ public class ClockInController {
}
}
}
}
// long punchcardtime,punchstart,punchend = 0;//应打卡时间,应打卡开始时间,应打卡结束时间
// long punchcardtime,punchstart,punchend = 0;//应打卡时间,应打卡开始时间,应打卡结束时间
// int atttype = 0;
// int atttype = 0;
if
(
dkmc
==
null
)
{
//上班1 ****新增
if
(
dkmc
==
null
)
{
//上班1 ****新增
punchcardtime
=
starttime1
;
punchcardtime
=
starttime1
;
punchstart
=
starttime1ks
;
punchstart
=
starttime1ks
;
...
@@ -295,7 +290,7 @@ public class ClockInController {
...
@@ -295,7 +290,7 @@ public class ClockInController {
}
}
//打卡记录录入 -- 打卡是否有时间范围限制
//打卡记录录入 -- 打卡是否有时间范围限制
// boolean isRange = true;
// boolean isRange = true;
if
(
punchstart
>
0
&&
punchend
>
0
)
{
if
(
punchstart
>
0
&&
punchend
>
0
)
{
String
staputime
=
new
SimpleDateFormat
(
"HH:mm"
).
format
(
punchstart
);
//应打卡开始时间
String
staputime
=
new
SimpleDateFormat
(
"HH:mm"
).
format
(
punchstart
);
//应打卡开始时间
String
entputime
=
new
SimpleDateFormat
(
"HH:mm"
).
format
(
punchend
);
//应打卡结束时间
String
entputime
=
new
SimpleDateFormat
(
"HH:mm"
).
format
(
punchend
);
//应打卡结束时间
...
@@ -305,7 +300,7 @@ public class ClockInController {
...
@@ -305,7 +300,7 @@ public class ClockInController {
System
.
out
.
println
(
"当前打卡时间不在范围内"
);
System
.
out
.
println
(
"当前打卡时间不在范围内"
);
// 手动抛出异常
// 手动抛出异常
isRange
=
false
;
isRange
=
false
;
// throw new Exception();
// throw new Exception();
}
}
}
}
if
(
isRange
)
{
if
(
isRange
)
{
...
@@ -460,6 +455,137 @@ public class ClockInController {
...
@@ -460,6 +455,137 @@ public class ClockInController {
sbyf
=
0
;
sbyf
=
0
;
}
}
}
else
{
}
else
{
//自由工时打卡
Long
stapclotime
=
attdate
.
getStapclotime
();
// 今天考勤 自由排班开始时间
int
canpunchworkdate
=
Integer
.
valueOf
(
String
.
valueOf
(
attdate
.
getCanpunchworkdate
()).
replaceAll
(
"(\\d+)(?:(\\.\\d*[^0])|\\.)0*"
,
"$1$2"
));
// 上班打卡后多久大下班卡
KqglAssoDkmx
zydkmc
=
KqglAssoDkmx
.
builder
().
build
();
Date
sd1
=
df1
.
parse
(
ClockInTool
.
stampToDate
(
String
.
valueOf
(
stapclotime
)));
//应打卡时间 2020-06-10 18:30:00
Date
sd2
=
df1
.
parse
(
current_time
);
//当前时间 2020-06-10 16:06:58
if
(
sd1
.
after
(
sd2
))
{
//为true时 打的是昨天的卡
zydkmc
=
KqglAssoDkmx
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
KqglAssoDkmx
>().
lambda
().
eq
(
KqglAssoDkmx:
:
getUserid
,
userid
)
.
ge
(
KqglAssoDkmx:
:
getDksj
,
startDateyesterday
).
le
(
KqglAssoDkmx:
:
getDksj
,
endDateyesterday
));
attendance_date
=
startDateyesterday
;
toweek
=
yesterday
;
}
else
{
zydkmc
=
KqglAssoDkmx
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
KqglAssoDkmx
>().
lambda
().
eq
(
KqglAssoDkmx:
:
getUserid
,
userid
)
.
ge
(
KqglAssoDkmx:
:
getDksj
,
startDate
).
le
(
KqglAssoDkmx:
:
getDksj
,
endDate
));
attendance_date
=
startDate
;
toweek
=
putime
;
}
if
(
zydkmc
==
null
)
{
//新增
KqglAssoDkmx
pcd
=
KqglAssoDkmx
.
builder
().
build
();
if
(
sd1
.
after
(
sd2
))
{
pcd
=
KqglAssoDkmx
.
builder
().
userid
(
userid
).
data
(
yesterday
).
sbdk1
(
time_
).
sbdk1jg
(
0
).
ydkcs
(
0
).
qyid
(
qyid
).
dksj
(
startDateyesterday
).
yzcdcs
(
0
).
yzcdsc
(
Double
.
valueOf
(
0
)).
kgcdfzs
(
0
).
build
();
}
else
{
pcd
=
KqglAssoDkmx
.
builder
().
userid
(
userid
).
data
(
putime
).
sbdk1
(
time_
).
sbdk1jg
(
0
).
ydkcs
(
0
).
qyid
(
qyid
).
dksj
(
startDate
).
yzcdcs
(
0
).
yzcdsc
(
Double
.
valueOf
(
0
)).
kgcdfzs
(
0
).
build
();
}
// KqglAssoDkmx pcd = KqglAssoDkmx.builder().userid(userid).data(putime).sbdk1(time_).sbdk1jg(0).ydkcs(0).qyid(qyid).dksj(startDate).yzcdcs(0).yzcdsc(Double.valueOf(0)).kgcdfzs(0).build();
if
(!
pcd
.
insert
())
{
throw
new
CustomException
(
"打卡明细-新增异常-1"
);
}
dkmx
=
pcd
.
getId
();
atttype
=
1
;
}
else
{
//修改
dkmx
=
zydkmc
.
getId
();
KqglAssoDkmx
zypcd
=
KqglAssoDkmx
.
builder
().
build
();
if
((!(
""
).
equals
(
zydkmc
.
getSbdk1
())
||
zydkmc
.
getSbdk1
()
!=
null
)
&&
((
""
).
equals
(
zydkmc
.
getXbdk1
())
||
zydkmc
.
getXbdk1
()
==
null
)){
//下班1
String
clock_time
=
ClockInTool
.
requires_extra_times
(
ClockInTool
.
stampToDate
(
String
.
valueOf
(
zydkmc
.
getSbdk1
())),
canpunchworkdate
,
5
,
2
);
Date
zysd1
=
df1
.
parse
(
clock_time
);
//上班打卡后多久大下班卡的时间
Date
zysd2
=
df1
.
parse
(
current_time
);
//当前时间
if
(
zysd1
.
after
(
zysd2
))
{
//当zysd1大于zysd2时,返回TRUE,当小于等于时,返回false;
msg
=
"自由工时:上班打卡后"
+
canpunchworkdate
+
"小时后,才可打下班卡"
;
sbyf
=
0
;
}
else
{
zypcd
.
setId
(
zydkmc
.
getId
());
zypcd
.
setXbdk1
(
time_
);
//下班1打卡时间
if
(
zydkmc
.
getSbdk1
()
!=
null
){
Long
time
=
(
time_
-
zydkmc
.
getSbdk1
())/
1000
/
60
;
zypcd
.
setGzsc
(
Math
.
abs
(
Double
.
valueOf
(
time
.
toString
())));
//只打一次卡时计算工作时长
}
kqglassodkmxmapper
.
updateByPrimaryKeySelective
(
zypcd
);
//修改打卡记录
}
atttype
=
2
;
}
else
if
((!(
""
).
equals
(
zydkmc
.
getSbdk1
())
||
zydkmc
.
getSbdk1
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getXbdk1
())
||
zydkmc
.
getXbdk1
()
!=
null
)
&&
((
""
).
equals
(
zydkmc
.
getSbdk2
())
||
zydkmc
.
getSbdk2
()
==
null
)){
//上班2
zypcd
.
setId
(
zydkmc
.
getId
());
zypcd
.
setSbdk2
(
time_
);
//上班1打卡时间
kqglassodkmxmapper
.
updateByPrimaryKeySelective
(
zypcd
);
//修改打卡记录
atttype
=
3
;
}
else
if
((!(
""
).
equals
(
zydkmc
.
getSbdk1
())
||
zydkmc
.
getSbdk1
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getXbdk1
())
||
zydkmc
.
getXbdk1
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getSbdk2
())
||
zydkmc
.
getSbdk2
()
!=
null
)
&&
((
""
).
equals
(
zydkmc
.
getXbdk2
())
||
zydkmc
.
getXbdk2
()
==
null
)){
//下班2
String
clock_time
=
ClockInTool
.
requires_extra_times
(
ClockInTool
.
stampToDate
(
String
.
valueOf
(
zydkmc
.
getSbdk2
())),
canpunchworkdate
,
5
,
2
);
Date
zysd1
=
df1
.
parse
(
clock_time
);
//上班打卡后多久大下班卡的时间
Date
zysd2
=
df1
.
parse
(
current_time
);
//当前时间
if
(
zysd1
.
after
(
zysd2
))
{
//当zysd1大于zysd2时,返回TRUE,当小于等于时,返回false;
msg
=
"自由工时:上班打卡后"
+
canpunchworkdate
+
"小时后,才可打下班卡"
;
sbyf
=
0
;
}
else
{
zypcd
.
setId
(
zydkmc
.
getId
());
zypcd
.
setXbdk2
(
time_
);
//下班1打卡时间
//班次为4次时,计算工作时长
if
(
zydkmc
.
getSbdk2
()
!=
null
){
Long
time
=
(
time_
-
zydkmc
.
getSbdk2
())/
1000
/
60
;
BigDecimal
om
=
new
BigDecimal
(
zydkmc
.
getGzsc
());
BigDecimal
on
=
new
BigDecimal
(
time
);
double
worktime
=
Math
.
abs
(
om
.
add
(
on
).
doubleValue
());
zypcd
.
setGzsc
(
worktime
);
}
kqglassodkmxmapper
.
updateByPrimaryKeySelective
(
zypcd
);
//修改打卡记录
}
atttype
=
4
;
}
else
if
((!(
""
).
equals
(
zydkmc
.
getSbdk1
())
||
zydkmc
.
getSbdk1
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getXbdk1
())
||
zydkmc
.
getXbdk1
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getSbdk2
())
||
zydkmc
.
getSbdk2
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getXbdk2
())
||
zydkmc
.
getXbdk2
()
!=
null
)
&&
((
""
).
equals
(
zydkmc
.
getSbdk3
())
||
zydkmc
.
getSbdk3
()
==
null
)){
//上班3
zypcd
.
setId
(
zydkmc
.
getId
());
zypcd
.
setSbdk3
(
time_
);
//上班1打卡时间
kqglassodkmxmapper
.
updateByPrimaryKeySelective
(
zypcd
);
//修改打卡记录
atttype
=
5
;
}
else
if
((!(
""
).
equals
(
zydkmc
.
getSbdk1
())
||
zydkmc
.
getSbdk1
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getXbdk1
())
||
zydkmc
.
getXbdk1
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getSbdk2
())
||
zydkmc
.
getSbdk2
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getXbdk2
())
||
zydkmc
.
getXbdk2
()
!=
null
)
&&
(!(
""
).
equals
(
zydkmc
.
getSbdk3
())
||
zydkmc
.
getSbdk3
()
!=
null
)
&&
((
""
).
equals
(
zydkmc
.
getXbdk3
())
||
zydkmc
.
getXbdk3
()
==
null
)){
//下班3
String
clock_time
=
ClockInTool
.
requires_extra_times
(
ClockInTool
.
stampToDate
(
String
.
valueOf
(
zydkmc
.
getSbdk3
())),
canpunchworkdate
,
5
,
2
);
Date
zysd1
=
df1
.
parse
(
clock_time
);
//上班打卡后多久大下班卡的时间
Date
zysd2
=
df1
.
parse
(
current_time
);
//当前时间
if
(
zysd1
.
after
(
zysd2
))
{
//当zysd1大于zysd2时,返回TRUE,当小于等于时,返回false;
msg
=
"自由工时:上班打卡后"
+
canpunchworkdate
+
"小时后,才可打下班卡"
;
sbyf
=
0
;
}
else
{
zypcd
.
setId
(
zydkmc
.
getId
());
zypcd
.
setXbdk3
(
time_
);
//下班1打卡时间
//班次为6次时,计算工作时长
if
(
zydkmc
.
getSbdk3
()
!=
null
){
Long
time
=
(
time_
-
zydkmc
.
getSbdk3
())/
1000
/
60
;
BigDecimal
om
=
new
BigDecimal
(
zydkmc
.
getGzsc
());
//第二次
BigDecimal
on
=
new
BigDecimal
(
time
);
double
worktime
=
Math
.
abs
(
om
.
add
(
on
).
doubleValue
());
zypcd
.
setGzsc
(
worktime
);
}
kqglassodkmxmapper
.
updateByPrimaryKeySelective
(
zypcd
);
//修改打卡记录
}
atttype
=
6
;
}
else
{
atttype
=
7
;
}
}
}
}
else
{
msg
=
"未检测到考勤机"
;
msg
=
"未检测到考勤机"
;
sbyf
=
0
;
sbyf
=
0
;
}
}
...
@@ -478,9 +604,12 @@ public class ClockInController {
...
@@ -478,9 +604,12 @@ public class ClockInController {
}
}
}
}
}
}
int
type
,
status
=
0
;
int
type
,
status
=
0
;
if
((
atttype
)%
2
>
0
){
if
((
atttype
)%
2
>
0
){
type
=
1
;
// 类型(类型 0:无排班打卡 1:上班 2:下班) punchcardtime == 0:无班次打卡
type
=
1
;
// 类型(类型 0:无排班打卡 1:上班 2:下班) punchcardtime == 0:无班次打卡
if
(
attdate
.
getAttgrouptype
()
!=
3
)
{
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
!=
0
){
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
!=
0
){
status
=
1
;
status
=
1
;
}
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
==
0
)
{
}
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
==
0
)
{
...
@@ -496,8 +625,17 @@ public class ClockInController {
...
@@ -496,8 +625,17 @@ public class ClockInController {
status
=
2
;
status
=
2
;
}
}
}
}
}
else
{
if
(
sbyf
==
1
)
{
status
=
1
;
}
else
{
status
=
2
;
}
}
}
else
{
}
else
{
type
=
2
;
// 类型(类型 0:无排班打卡 1:上班 2:下班)
type
=
2
;
// 类型(类型 0:无排班打卡 1:上班 2:下班)
if
(
attdate
.
getAttgrouptype
()
!=
3
)
{
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
!=
0
){
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
!=
0
){
status
=
1
;
status
=
1
;
}
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
==
0
)
{
}
if
(
punchcardtime
==
0
&&
clockt
.
getShifid
()
==
0
)
{
...
@@ -513,7 +651,15 @@ public class ClockInController {
...
@@ -513,7 +651,15 @@ public class ClockInController {
status
=
2
;
status
=
2
;
}
}
}
}
}
else
{
if
(
sbyf
==
1
)
{
status
=
1
;
}
else
{
status
=
2
;
}
}
}
}
String
attdate_
=
new
SimpleDateFormat
(
"yy-MM-dd"
).
format
(
Double
.
valueOf
(
attendance_date
));
//转换打卡时间格式
String
attdate_
=
new
SimpleDateFormat
(
"yy-MM-dd"
).
format
(
Double
.
valueOf
(
attendance_date
));
//转换打卡时间格式
long
attime
;
long
attime
;
// if(punchcardtime == 0 && !isRange){attime = new Date().getTime();}else{attime = punchcardtime;}// 考勤时间(应打卡时间)
// if(punchcardtime == 0 && !isRange){attime = new Date().getTime();}else{attime = punchcardtime;}// 考勤时间(应打卡时间)
...
@@ -715,7 +861,7 @@ public class ClockInController {
...
@@ -715,7 +861,7 @@ public class ClockInController {
int
isXbdk3Cr
=
shiftm
.
getIsXbdk3Cr
();
//下班3是否次日(0:否;1:是)
int
isXbdk3Cr
=
shiftm
.
getIsXbdk3Cr
();
//下班3是否次日(0:否;1:是)
//次日专用
//次日专用
String
next_day
=
ClockInTool
.
requires_extra_times
(
str
,
1
,
2
);
String
next_day
=
ClockInTool
.
requires_extra_times
(
str
,
1
,
2
,
1
);
List
<
AttSchedule
>
atts
=
new
ArrayList
<
AttSchedule
>();
List
<
AttSchedule
>
atts
=
new
ArrayList
<
AttSchedule
>();
if
(
shiftm
.
getSxbcs
()
==
1
||
shiftm
.
getSxbcs
()
==
2
||
shiftm
.
getSxbcs
()
==
3
){
//1次上下班
if
(
shiftm
.
getSxbcs
()
==
1
||
shiftm
.
getSxbcs
()
==
2
||
shiftm
.
getSxbcs
()
==
3
){
//1次上下班
...
...
src/main/java/cn/timer/api/controller/kqgl/ClockInTool.java
View file @
214aab91
...
@@ -28,9 +28,15 @@ public class ClockInTool {
...
@@ -28,9 +28,15 @@ public class ClockInTool {
* @param numtime
* @param numtime
* @return 1:增加一年、2:增加一天、3:减10天、4:增加一个月
* @return 1:增加一年、2:增加一天、3:减10天、4:增加一个月
*/
*/
public
static
String
requires_extra_times
(
String
timeStr
,
int
num
,
int
numtime
)
{
public
static
String
requires_extra_times
(
String
timeStr
,
int
num
,
int
numtime
,
int
daft
)
{
DateFormat
df
;
if
(
daft
==
1
)
{
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
}
else
{
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
}
DateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
date
=
null
;
Date
date
=
null
;
try
{
try
{
date
=
df
.
parse
(
timeStr
);
date
=
df
.
parse
(
timeStr
);
...
@@ -46,8 +52,10 @@ public class ClockInTool {
...
@@ -46,8 +52,10 @@ public class ClockInTool {
cal
.
add
(
Calendar
.
DATE
,
num
);
//增加一天
cal
.
add
(
Calendar
.
DATE
,
num
);
//增加一天
}
else
if
(
numtime
==
3
)
{
}
else
if
(
numtime
==
3
)
{
cal
.
add
(
Calendar
.
DATE
,
num
);
//减10天
cal
.
add
(
Calendar
.
DATE
,
num
);
//减10天
}
else
{
}
else
if
(
numtime
==
4
)
{
cal
.
add
(
Calendar
.
MONTH
,
num
);
//增加一个月
cal
.
add
(
Calendar
.
MONTH
,
num
);
//增加一个月
}
else
if
(
numtime
==
5
)
{
cal
.
add
(
Calendar
.
HOUR
,
num
);
}
}
return
df
.
format
(
cal
.
getTime
());
return
df
.
format
(
cal
.
getTime
());
}
}
...
...
src/main/java/cn/timer/api/controller/kqgl/TimeCardController.java
View file @
214aab91
...
@@ -986,7 +986,7 @@ public class TimeCardController {
...
@@ -986,7 +986,7 @@ public class TimeCardController {
@ApiOperation
(
value
=
"39:删除考勤组"
,
httpMethod
=
"DELETE"
,
notes
=
"接口发布说明"
)
@ApiOperation
(
value
=
"39:删除考勤组"
,
httpMethod
=
"DELETE"
,
notes
=
"接口发布说明"
)
@ApiOperationSupport
(
order
=
39
)
@ApiOperationSupport
(
order
=
39
)
public
Result
<
Integer
>
DelAttendanceGroup
(
@CurrentUser
UserBean
userBean
,
@PathVariable
(
"id"
)
Integer
id
)
{
public
Result
<
Integer
>
DelAttendanceGroup
(
@CurrentUser
UserBean
userBean
,
@PathVariable
(
"id"
)
Integer
id
)
{
if
(
KqglMainKqz
.
builder
().
id
(
id
).
build
().
deleteById
())
{
List
<
UserAttendanceRel
>
attusers
=
userattendancerelmapper
.
selectAttendanceOfficerByKqzid
(
id
,
userBean
.
getOrgCode
());
//该考勤组人数
List
<
UserAttendanceRel
>
attusers
=
userattendancerelmapper
.
selectAttendanceOfficerByKqzid
(
id
,
userBean
.
getOrgCode
());
//该考勤组人数
//该考勤组所绑定的考勤机
//该考勤组所绑定的考勤机
List
<
KqglAssoKqzdkfs
>
kqjs
=
kqglassokqzdkfsmapper
.
selectList
(
new
QueryWrapper
<
KqglAssoKqzdkfs
>().
lambda
().
eq
(
KqglAssoKqzdkfs:
:
getKqzId
,
id
).
eq
(
KqglAssoKqzdkfs:
:
getType
,
1
));
List
<
KqglAssoKqzdkfs
>
kqjs
=
kqglassokqzdkfsmapper
.
selectList
(
new
QueryWrapper
<
KqglAssoKqzdkfs
>().
lambda
().
eq
(
KqglAssoKqzdkfs:
:
getKqzId
,
id
).
eq
(
KqglAssoKqzdkfs:
:
getType
,
1
));
...
@@ -1005,12 +1005,20 @@ public class TimeCardController {
...
@@ -1005,12 +1005,20 @@ public class TimeCardController {
params
.
add
(
"userId"
,
user_id
);
params
.
add
(
"userId"
,
user_id
);
RestTemplate
restTemplate
=
new
RestTemplate
();
RestTemplate
restTemplate
=
new
RestTemplate
();
HttpEntity
httpEntity
=
new
HttpEntity
(
params
,
headers
);
HttpEntity
httpEntity
=
new
HttpEntity
(
params
,
headers
);
try
{
ResponseEntity
<
String
>
request
=
restTemplate
.
postForEntity
(
url
,
httpEntity
,
String
.
class
);
ResponseEntity
<
String
>
request
=
restTemplate
.
postForEntity
(
url
,
httpEntity
,
String
.
class
);
System
.
err
.
print
(
request
.
getBody
());
System
.
err
.
print
(
request
.
getBody
());
}
catch
(
RestClientException
e
)
{
System
.
err
.
println
(
"提示:考勤机服务出错"
);
return
ResultUtil
.
error
(
"删除失败:提示:考勤机服务出错"
);
}
}
}
}
}
}
}
if
(
KqglMainKqz
.
builder
().
id
(
id
).
build
().
deleteById
())
{
userequirelationmapper
.
deleteBykqzid
(
id
);
userequirelationmapper
.
deleteBykqzid
(
id
);
//删除考勤组绑定的打卡方式
//删除考勤组绑定的打卡方式
...
...
src/main/java/cn/timer/api/dto/kqmk/DailyDetailsDto.java
View file @
214aab91
...
@@ -19,6 +19,7 @@ public class DailyDetailsDto {
...
@@ -19,6 +19,7 @@ public class DailyDetailsDto {
private
String
dept
;
// 部门
private
String
dept
;
// 部门
private
String
post
;
// 岗位
private
String
post
;
// 岗位
private
String
attname
;
// 考勤组名称
private
String
attname
;
// 考勤组名称
private
Integer
attpbfs
;
// 排班方式(1:固定排班;2:自由排班;3:自由工时)
private
String
attdate
;
// 考勤日期
private
String
attdate
;
// 考勤日期
private
Integer
userid
;
// 用户ID
private
Integer
userid
;
// 用户ID
private
String
data
;
// 日期
private
String
data
;
// 日期
...
...
src/main/resources/mapping/kqmk/KqglAssoMonthPunchSummaryMapper.xml
View file @
214aab91
...
@@ -167,6 +167,7 @@
...
@@ -167,6 +167,7 @@
<result
column=
"bcxbdk3"
property=
"bcxbdk3"
/>
<result
column=
"bcxbdk3"
property=
"bcxbdk3"
/>
<result
column=
"attname"
property=
"attname"
/>
<result
column=
"attname"
property=
"attname"
/>
<result
column=
"attpbfs"
property=
"attpbfs"
/>
<result
column=
"attdate"
property=
"attdate"
/>
<result
column=
"attdate"
property=
"attdate"
/>
<result
column=
"userid"
property=
"userid"
/>
<result
column=
"userid"
property=
"userid"
/>
<result
column=
"data"
property=
"data"
/>
<result
column=
"data"
property=
"data"
/>
...
@@ -249,7 +250,8 @@
...
@@ -249,7 +250,8 @@
<select
id=
"Dailydetails"
resultMap=
"DailyDetailsMap"
>
<select
id=
"Dailydetails"
resultMap=
"DailyDetailsMap"
>
select sum.`name`,sum.num,sum.dept,sum.post,
select sum.`name`,sum.num,sum.dept,sum.post,
(select kqz.name from kqgl_main_kqz kqz where kqz.id = sum.att_group) as attname,
IFNULL((select kqz.name from kqgl_main_kqz kqz where kqz.id = sum.att_group),'') as attname,
IFNULL((select kqz.pbfs from kqgl_main_kqz kqz where kqz.id = sum.att_group),'') as attpbfs,
'' address,
'' address,
'' remarks,
'' remarks,
'' cardtype,
'' cardtype,
...
@@ -296,8 +298,8 @@
...
@@ -296,8 +298,8 @@
sum.working_transfer_overtime as workingtransferovertime,
sum.working_transfer_overtime as workingtransferovertime,
sum.rest_transfer_overtime as resttransferovertime,
sum.rest_transfer_overtime as resttransferovertime,
sum.holiday_transfer_overtime as holidaytransferovertime,
sum.holiday_transfer_overtime as holidaytransferovertime,
mrtj.
leaverulesid,
IFNULL(mrtj.leaverulesid,'') as
leaverulesid,
mrtj.duration
as balancedays
IFNULL(mrtj.duration,'')
as balancedays
from kqgl_asso_month_punch_summary sum
from kqgl_asso_month_punch_summary sum
LEFT JOIN (
LEFT JOIN (
select DISTINCT info.`name` as username ,
select DISTINCT info.`name` as username ,
...
...
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