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
b46988e1
Commit
b46988e1
authored
May 18, 2020
by
lal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交
parent
18b6f52f
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
349 additions
and
6 deletions
+349
-6
src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
+122
-5
src/main/java/cn/timer/api/controller/kqgl/ClockInTool.java
+13
-0
src/main/java/cn/timer/api/controller/kqgl/TimeCardController.java
+1
-1
src/main/java/cn/timer/api/dao/kqmk/KqglAssoLeaveBalanceMapper.java
+5
-0
src/main/java/cn/timer/api/dao/kqmk/KqglAssoTeshuMapper.java
+2
-0
src/main/java/cn/timer/api/dto/kqmk/AdditionalDto.java
+26
-0
src/main/java/cn/timer/api/dto/kqmk/SpecialDateDto.java
+151
-0
src/main/resources/mapping/kqmk/KqglAssoLeaveBalanceMapper.xml
+20
-0
src/main/resources/mapping/kqmk/KqglAssoTeshuMapper.xml
+9
-0
No files found.
src/main/java/cn/timer/api/controller/kqgl/ClockInController.java
View file @
b46988e1
...
...
@@ -4,10 +4,11 @@ import java.math.BigDecimal;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Calendar
;
import
java.util.Date
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -19,6 +20,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import
com.github.xiaoymin.knife4j.annotations.ApiOperationSupport
;
import
cn.hutool.json.JSONObject
;
import
cn.timer.api.bean.kqgl.AttendanceWeeklySch
;
import
cn.timer.api.bean.kqgl.PunchCardDetails
;
import
cn.timer.api.bean.kqgl.Schedule
;
import
cn.timer.api.bean.kqmk.KqglAssoBcsz
;
import
cn.timer.api.bean.kqmk.KqglAssoDkjl
;
import
cn.timer.api.bean.kqmk.KqglAssoDkmx
;
...
...
@@ -30,8 +34,15 @@ import cn.timer.api.bean.kqmk.KqglAssoZhoupaiban;
import
cn.timer.api.bean.kqmk.KqglMainKqz
;
import
cn.timer.api.bean.yggl.YgglMainEmp
;
import
cn.timer.api.config.exception.CustomException
;
import
cn.timer.api.dao.kqgl.AttendanceWeeklySchMapper
;
import
cn.timer.api.dao.kqgl.PunchCardDetailsMapper
;
import
cn.timer.api.dao.kqgl.PunchRecordMapper
;
import
cn.timer.api.dao.kqgl.ScheduleMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoLeaveBalanceMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoPbmxMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoTeshuMapper
;
import
cn.timer.api.dao.kqmk.KqglMainKqzMapper
;
import
cn.timer.api.dto.kqmk.AdditionalDto
;
import
cn.timer.api.dto.kqmk.AttLateLate
;
import
cn.timer.api.dto.kqmk.AttSchedule
;
import
cn.timer.api.dto.kqmk.AttendanceCardListDto
;
...
...
@@ -50,6 +61,20 @@ import io.swagger.annotations.ApiOperation;
public
class
ClockInController
{
@Autowired
private
KqglMainKqzMapper
kqglmainkqzmapper
;
@Autowired
private
KqglAssoLeaveBalanceMapper
kqglassoleavebalancemapper
;
@Autowired
private
KqglAssoTeshuMapper
kqglassoteshumapper
;
@Autowired
private
PunchCardDetailsMapper
punchcarddetailsmapper
;
@Autowired
private
AttendanceWeeklySchMapper
attendanceweeklyschservice
;
@Autowired
private
ScheduleMapper
scheduleservice
;
SimpleDateFormat
sdf1
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
SimpleDateFormat
sdf2
=
new
SimpleDateFormat
(
"EEE"
);
/**
* 考勤打卡
*
...
...
@@ -244,15 +269,108 @@ public class ClockInController {
KqglAssoMonthPunchSummary
isyessum
=
KqglAssoMonthPunchSummary
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
KqglAssoMonthPunchSummary
>().
lambda
()
.
eq
(
KqglAssoMonthPunchSummary:
:
getNum
,
asUserId
).
eq
(
KqglAssoMonthPunchSummary:
:
getOrgCode
,
user
.
getOrgCode
()));
// KqglAssoMonthPunchSummary summary = KqglAssoMonthPunchSummary.builder().name().build();
AdditionalDto
kqry
=
kqglassoleavebalancemapper
.
selectAdditional
(
user
.
getOrgCode
(),
user
.
getEmpNum
());
/*******************************************************/
int
year
=
Calendar
.
getInstance
().
get
(
Calendar
.
YEAR
);
int
month
=
Calendar
.
getInstance
().
get
(
Calendar
.
MONTH
)
+
1
;
if
(
attgro
!=
null
){
//该员工是否加入到考勤组 排班方式 1:固定排班;2:自由排班;3:自由工时 计算出应出勤,实际出勤,休息天数
//休息天数,应出勤天数,实际出勤
double
daysOff
=
0
,
daysOnDuty
=
0
,
actualAttDays
=
0
;
if
(
attgro
.
getPbfs
()
==
1
){
List
<
KqglAssoTeshu
>
bxdklist
=
kqglassoteshumapper
.
ShouldSpecialDatessetByKqzid
(
attgro
.
getId
(),
month
,
1
);
//当前月 必须打卡日期
int
bxdk
=
bxdklist
.
size
();
List
<
KqglAssoTeshu
>
wxdk
=
kqglassoteshumapper
.
ShouldSpecialDatessetByKqzid
(
attgro
.
getId
(),
month
,
2
);
//当前月 无需打卡日期
String
[]
appmaps
=
new
String
[
wxdk
.
size
()];
int
d1
=
0
;
for
(
KqglAssoTeshu
spe:
wxdk
){
appmaps
[
d1
]
=
spe
.
getTsrq
();
d1
++;
}
List
<
AttendanceWeeklySch
>
atwek
=
attendanceweeklyschservice
.
selectAttendanceMadeByUserid
(
Integer
.
valueOf
(
user
.
getEmpNum
()));
String
[]
week
=
new
String
[
atwek
.
size
()];
int
e
=
0
;
for
(
AttendanceWeeklySch
awek
:
atwek
){
week
[
e
]
=
awek
.
getWekmc
();
e
++;
}
String
yemo
=
year
+
"-"
+
month
;
sdf1
.
setLenient
(
false
);
int
y
=
0
,
q
=
0
;
for
(
int
i
=
1
;
i
<=
ClockInTool
.
getDaysByYearMonth
(
year
,
month
);
i
++){
Date
date1
=
sdf1
.
parse
(
yemo
+
"-"
+
i
);
for
(
int
u
=
0
;
u
<
week
.
length
;
u
++){
if
(
sdf2
.
format
(
date1
).
equals
(
week
[
u
])){
q
++;
y
++;
if
(
Arrays
.
asList
(
appmaps
).
contains
(
String
.
valueOf
(
sdf1
.
format
(
date1
)))){
y
=
y
-
1
;
}
}
}
}
int
xiuxi
=
ClockInTool
.
getDaysByYearMonth
(
year
,
month
)
-
q
-
bxdk
+
wxdk
.
size
();
daysOff
=
xiuxi
;
daysOnDuty
=
y
+
bxdk
;
}
else
if
(
attgro
.
getPbfs
()
==
2
){
List
<
Schedule
>
ycqs
=
scheduleservice
.
getAttendanceShouldList
(
Integer
.
valueOf
(
user
.
getEmpNum
()),
startDate
,
endDate
);
int
xiuxi
=
0
;
int
shangban
=
0
;
for
(
Schedule
sc
:
ycqs
){
if
(
sc
.
getBcid
().
equals
(
0
)){
xiuxi
++;
}
else
{
shangban
++;
}
}
daysOff
=
xiuxi
;
daysOnDuty
=
shangban
;
}
else
{
List
<
AttendanceWeeklySch
>
atwek
=
attendanceweeklyschservice
.
selectAttendanceMadeByUserid
(
Integer
.
valueOf
(
user
.
getEmpNum
()));
String
[]
week
=
new
String
[
atwek
.
size
()];
int
e
=
0
;
for
(
AttendanceWeeklySch
awek
:
atwek
){
week
[
e
]
=
awek
.
getWekmc
();
e
++;
}
String
yemo
=
year
+
"-"
+
month
;
sdf1
.
setLenient
(
false
);
int
y
=
0
;
for
(
int
i
=
1
;
i
<=
ClockInTool
.
getDaysByYearMonth
(
year
,
month
);
i
++){
try
{
Date
date1
=
sdf1
.
parse
(
yemo
+
"-"
+
i
);
for
(
int
u
=
0
;
u
<
week
.
length
;
u
++){
if
(
sdf2
.
format
(
date1
).
equals
(
week
[
u
])){
y
++;
}
}
}
catch
(
ParseException
c
)
{
c
.
printStackTrace
();
}
}
int
xiuxi
=
ClockInTool
.
getDaysByYearMonth
(
year
,
month
)
-
y
;
daysOff
=
xiuxi
;
daysOnDuty
=
y
;
}
List
<
PunchCardDetails
>
attendance
=
punchcarddetailsmapper
.
selectAttendanceDays
(
Integer
.
valueOf
(
user
.
getEmpNum
()),
startDate
,
endDate
);
//打卡记录
actualAttDays
=
attendance
.
size
();
}
else
{
System
.
out
.
println
(
"该员工未加入考勤组"
);
}
/****************************************************/
int
answer
=
shif
.
getSxbcs
();
//1=2次 2=4次 3=6次
if
(
isyessum
==
null
)
{
//无汇总记录
KqglAssoMonthPunchSummary
summary
=
KqglAssoMonthPunchSummary
.
builder
().
name
(
user
.
getName
()).
num
(
user
.
getEmpNum
()).
dept
(
kqry
.
getDepartment
())
.
post
(
kqry
.
getPosition
()).
attGroup
(
attgro
.
getId
()).
shift
(
shif
.
getId
()).
build
();
}
else
{
int
id
=
isyessum
.
getId
();
}
}
else
{
System
.
out
.
println
(
"当前打卡时间不在范围内"
);
}
...
...
@@ -308,7 +426,6 @@ public class ClockInController {
return
ResultUtil
.
data
(
null
,
"打卡成功"
);
}
@Autowired
private
KqglAssoPbmxMapper
kqglassopbmxmapper
;
...
...
src/main/java/cn/timer/api/controller/kqgl/ClockInTool.java
View file @
b46988e1
...
...
@@ -21,6 +21,19 @@ public class ClockInTool {
static
SimpleDateFormat
famt
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
/**
* 使用java正则表达式去掉多余的.与0
* @param s
* @return string
*/
public
static
String
replace
(
String
s
){
if
(
null
!=
s
&&
s
.
indexOf
(
"."
)
>
0
){
s
=
s
.
replaceAll
(
"0+?$"
,
""
);
//去掉多余的0
s
=
s
.
replaceAll
(
"[.]$"
,
""
);
//如最后一位是.则去掉
}
return
s
;
}
/**
* 根据 年、月 获取对应的月份 的 天数
*/
...
...
src/main/java/cn/timer/api/controller/kqgl/TimeCardController.java
View file @
b46988e1
...
...
@@ -1838,7 +1838,7 @@ public class TimeCardController {
@PostMapping
(
value
=
"/leave_balance_list"
)
@ApiOperation
(
value
=
"45:获取
修改的排班明细
"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
@ApiOperation
(
value
=
"45:获取
假期余额列表数据
"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
@ApiOperationSupport
(
order
=
45
)
public
Result
<
Object
>
LeaveBalanceList
(
@CurrentUser
UserBean
userBean
,
@Validated
@RequestBody
AttqueryCriteriaDto
attquerycriteriadto
)
{
IPage
<
EmployeeLeaveBalanceDto
>
page
=
new
Page
<
EmployeeLeaveBalanceDto
>(
...
...
src/main/java/cn/timer/api/dao/kqmk/KqglAssoLeaveBalanceMapper.java
View file @
b46988e1
package
cn
.
timer
.
api
.
dao
.
kqmk
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -7,6 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
cn.timer.api.bean.kqmk.KqglAssoLeaveBalance
;
import
cn.timer.api.dto.kqmk.AdditionalDto
;
import
cn.timer.api.dto.kqmk.AttqueryCriteriaDto
;
import
cn.timer.api.dto.kqmk.EmployeeLeaveBalanceDto
;
...
...
@@ -19,4 +22,6 @@ import cn.timer.api.dto.kqmk.EmployeeLeaveBalanceDto;
public
interface
KqglAssoLeaveBalanceMapper
extends
BaseMapper
<
KqglAssoLeaveBalance
>
{
IPage
<
EmployeeLeaveBalanceDto
>
selectPageByQueryLeaveBalance
(
IPage
<
EmployeeLeaveBalanceDto
>
page
,
@Param
(
"param"
)
AttqueryCriteriaDto
attquerycriteriadto
);
AdditionalDto
selectAdditional
(
int
orgcode
,
int
empnum
);
}
src/main/java/cn/timer/api/dao/kqmk/KqglAssoTeshuMapper.java
View file @
b46988e1
...
...
@@ -17,5 +17,7 @@ import cn.timer.api.bean.kqmk.KqglAssoTeshu;
public
interface
KqglAssoTeshuMapper
extends
BaseMapper
<
KqglAssoTeshu
>
{
int
insertKqglAssoTeshuList
(
List
<
KqglAssoTeshu
>
kqglassoteshu
);
List
<
KqglAssoTeshu
>
ShouldSpecialDatessetByKqzid
(
int
kqzid
,
int
tsrq
,
int
type
);
}
src/main/java/cn/timer/api/dto/kqmk/AdditionalDto.java
0 → 100644
View file @
b46988e1
package
cn
.
timer
.
api
.
dto
.
kqmk
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
AdditionalDto
{
@ApiModelProperty
(
value
=
"员工工号 "
,
example
=
"字段说明"
)
private
Integer
empnum
;
@ApiModelProperty
(
value
=
"员工名称 "
,
example
=
"字段说明"
)
private
String
empname
;
@ApiModelProperty
(
value
=
"部门 "
,
example
=
"字段说明"
)
private
String
department
;
@ApiModelProperty
(
value
=
"职位 "
,
example
=
"字段说明"
)
private
String
position
;
}
src/main/java/cn/timer/api/dto/kqmk/SpecialDateDto.java
0 → 100644
View file @
b46988e1
package
cn
.
timer
.
api
.
dto
.
kqmk
;
import
java.io.Serializable
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author lalqq
*
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
SpecialDateDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
465028562478360263L
;
private
Integer
id
;
private
Integer
kqzid
;
// 考勤组id
private
String
tsrq
;
// 日期
private
Integer
bcid
;
// 班次id
private
Long
lusjTime
;
// 录入时间
private
Integer
luryid
;
// 录入人员
private
Integer
type
;
// 类型 1:必须打卡日期;2:不用打卡日期(扩展字段)
private
String
bcname
;
private
String
sbdk1
;
private
String
xbdk1
;
private
String
sbdk2
;
private
String
xbdk2
;
private
String
sbdk3
;
private
String
xbdk3
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
Integer
getKqzid
()
{
return
kqzid
;
}
public
void
setKqzid
(
Integer
kqzid
)
{
this
.
kqzid
=
kqzid
;
}
public
String
getTsrq
()
{
return
tsrq
;
}
public
void
setTsrq
(
String
tsrq
)
{
this
.
tsrq
=
tsrq
==
null
?
null
:
tsrq
.
trim
();
}
public
Integer
getBcid
()
{
return
bcid
;
}
public
void
setBcid
(
Integer
bcid
)
{
this
.
bcid
=
bcid
;
}
public
Long
getLusjTime
()
{
return
lusjTime
;
}
public
void
setLusjTime
(
Long
lusjTime
)
{
this
.
lusjTime
=
lusjTime
;
}
public
Integer
getLuryid
()
{
return
luryid
;
}
public
void
setLuryid
(
Integer
luryid
)
{
this
.
luryid
=
luryid
;
}
public
Integer
getType
()
{
return
type
;
}
public
void
setType
(
Integer
type
)
{
this
.
type
=
type
;
}
public
String
getBcname
()
{
return
bcname
;
}
public
void
setBcname
(
String
bcname
)
{
this
.
bcname
=
bcname
;
}
public
String
getSbdk1
()
{
return
sbdk1
;
}
public
void
setSbdk1
(
String
sbdk1
)
{
this
.
sbdk1
=
sbdk1
;
}
public
String
getXbdk1
()
{
return
xbdk1
;
}
public
void
setXbdk1
(
String
xbdk1
)
{
this
.
xbdk1
=
xbdk1
;
}
public
String
getSbdk2
()
{
return
sbdk2
;
}
public
void
setSbdk2
(
String
sbdk2
)
{
this
.
sbdk2
=
sbdk2
;
}
public
String
getXbdk2
()
{
return
xbdk2
;
}
public
void
setXbdk2
(
String
xbdk2
)
{
this
.
xbdk2
=
xbdk2
;
}
public
String
getSbdk3
()
{
return
sbdk3
;
}
public
void
setSbdk3
(
String
sbdk3
)
{
this
.
sbdk3
=
sbdk3
;
}
public
String
getXbdk3
()
{
return
xbdk3
;
}
public
void
setXbdk3
(
String
xbdk3
)
{
this
.
xbdk3
=
xbdk3
;
}
}
\ No newline at end of file
src/main/resources/mapping/kqmk/KqglAssoLeaveBalanceMapper.xml
View file @
b46988e1
...
...
@@ -27,6 +27,13 @@
<result
column=
"balancedays"
property=
"balancedays"
/>
</collection>
</resultMap>
<resultMap
id=
"AdditionalMap"
type=
"cn.timer.api.dto.kqmk.AdditionalDto"
>
<result
column=
"empnum"
property=
"empnum"
/>
<result
column=
"empname"
property=
"empname"
/>
<result
column=
"department"
property=
"department"
/>
<result
column=
"position"
property=
"position"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,
...
...
@@ -78,6 +85,19 @@
</if>
ORDER BY emp.emp_num DESC
</select>
<select
id=
"selectAdditional"
resultMap=
"AdditionalMap"
>
SELECT emp.emp_num as empnum,
emp.`name` as empname,
IFNULL(c.name,'') as department,
gw.`name` as position
from yggl_main_emp emp
LEFT JOIN zzgl_bmgw_m as gw on gw.id = emp.bmgw_id
LEFT JOIN zzgl_bmgw_m as c ON c.id = gw.up_id
where emp.org_code = #{orgcode}
and emp.emp_num = #{empnum}
</select>
<!--
...
...
src/main/resources/mapping/kqmk/KqglAssoTeshuMapper.xml
View file @
b46988e1
...
...
@@ -58,6 +58,15 @@
)
</foreach>
</insert>
<select
id=
"ShouldSpecialDatessetByKqzid"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from kqgl_asso_teshu teshu
where teshu.kqzid = #{kqzid}
and substring(teshu.tsrq,6,2) = #{tsrq}
and teshu.type = #{type}
</select>
<!--
<insert id="insert" useGeneratedKeys="true" keyColumn="id" parameterType="cn.timer.api.bean.kqmk.KqglAssoTeshu">
...
...
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