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
e7a6072b
Commit
e7a6072b
authored
4 years ago
by
lal
Committed by
chenzg
3 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交
parent
156d3b06
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
520 additions
and
124 deletions
+520
-124
src/main/java/cn/timer/api/controller/kqgl/ClockInTool.java
+46
-2
src/main/java/cn/timer/api/controller/kqgl/TimeCardController.java
+47
-1
src/main/java/cn/timer/api/controller/kqgl/atttimer/AttendanceTaskTiming.java
+59
-52
src/main/java/cn/timer/api/dao/kqmk/KqglAssoMonthPunchSummaryMapper.java
+8
-2
src/main/java/cn/timer/api/dto/kqmk/AttendanceSummaryQueryDto.java
+26
-0
src/main/java/cn/timer/api/dto/kqmk/KqglAssoMonthPunchSummaryDto.java
+228
-0
src/main/resources/mapping/kqmk/KqglAssoMonthPunchSummaryMapper.xml
+106
-67
No files found.
src/main/java/cn/timer/api/controller/kqgl/ClockInTool.java
View file @
e7a6072b
...
...
@@ -21,6 +21,50 @@ public class ClockInTool {
static
SimpleDateFormat
famt
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
/**
* 获取指定年月的第一天
*
* @param year
* @param month
* @return
*/
public
static
String
getFirstDayOfMonth1
(
int
year
,
int
month
)
{
Calendar
cal
=
Calendar
.
getInstance
();
// 设置年份
cal
.
set
(
Calendar
.
YEAR
,
year
);
// 设置月份
cal
.
set
(
Calendar
.
MONTH
,
month
-
1
);
// 获取某月最小天数
int
firstDay
=
cal
.
getMinimum
(
Calendar
.
DATE
);
// 设置日历中月份的最小天数
cal
.
set
(
Calendar
.
DAY_OF_MONTH
,
firstDay
);
// 格式化日期
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
return
sdf
.
format
(
cal
.
getTime
());
}
/**
* 获取指定年月的最后一天
*
* @param year
* @param month
* @return
*/
public
static
String
getLastDayOfMonth1
(
int
year
,
int
month
)
{
Calendar
cal
=
Calendar
.
getInstance
();
// 设置年份
cal
.
set
(
Calendar
.
YEAR
,
year
);
// 设置月份
cal
.
set
(
Calendar
.
MONTH
,
month
-
1
);
// 获取某月最大天数
int
lastDay
=
cal
.
getActualMaximum
(
Calendar
.
DATE
);
// 设置日历中月份的最大天数
cal
.
set
(
Calendar
.
DAY_OF_MONTH
,
lastDay
);
// 格式化日期
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
return
sdf
.
format
(
cal
.
getTime
());
}
// 数组容量的扩容,当空间(.length)不够的时候,增加一
public
static
String
[]
arrycopy
(
String
[]
ss
)
{
// TODO Auto-generated method stub
...
...
@@ -269,7 +313,7 @@ public class ClockInTool {
* @return true在时间段内,false不在时间段内
* @throws Exception
*/
public
static
boolean
hourMinuteBetween
(
String
nowDate
,
String
startDate
,
String
endDate
,
String
date_format
)
{
public
static
boolean
hourMinuteBetween
(
String
nowDate
,
String
startDate
,
String
endDate
,
String
date_format
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
date_format
);
...
...
@@ -341,7 +385,7 @@ public class ClockInTool {
df2
=
new
SimpleDateFormat
(
"yyyy-MM-dd' 'HH:mm:ss"
);
}
else
if
(
num
==
2
)
{
df2
=
new
SimpleDateFormat
(
"HH:mm"
);
}
else
if
(
num
==
3
)
{
}
else
if
(
num
==
3
)
{
df2
=
new
SimpleDateFormat
(
"yyyy-MM-dd' 'HH:mm"
);
}
...
...
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/controller/kqgl/TimeCardController.java
View file @
e7a6072b
...
...
@@ -4,6 +4,7 @@ import java.lang.reflect.InvocationTargetException;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -78,6 +79,7 @@ import cn.timer.api.dao.kqmk.KqglAssoKqjMapper;
import
cn.timer.api.dao.kqmk.KqglAssoKqzdkfsMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoLeaveBalanceMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoLeaveRulesMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoMonthPunchSummaryMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoOvertimeRangeMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoOvertimeRulesMapper
;
import
cn.timer.api.dao.kqmk.KqglAssoPbmxMapper
;
...
...
@@ -90,11 +92,13 @@ import cn.timer.api.dao.kqmk.KqglMainKqzMapper;
import
cn.timer.api.dto.kqmk.AttMemberSettings
;
import
cn.timer.api.dto.kqmk.AttSchedulingDto
;
import
cn.timer.api.dto.kqmk.AttendanceAssistantDto
;
import
cn.timer.api.dto.kqmk.AttendanceSummaryQueryDto
;
import
cn.timer.api.dto.kqmk.AttqueryCriteriaDto
;
import
cn.timer.api.dto.kqmk.CompensateDto
;
import
cn.timer.api.dto.kqmk.EmployeeLeaveBalanceDto
;
import
cn.timer.api.dto.kqmk.IndividualOvertimeRuleDto
;
import
cn.timer.api.dto.kqmk.KqglAssoLeaveRulesDto
;
import
cn.timer.api.dto.kqmk.KqglAssoMonthPunchSummaryDto
;
import
cn.timer.api.dto.kqmk.KqglAssoOvertimeRulesDto
;
import
cn.timer.api.dto.kqmk.KqglAssoPbmxDto
;
import
cn.timer.api.dto.kqmk.KqglAssoRulesViceDto
;
...
...
@@ -926,7 +930,7 @@ public class TimeCardController {
@ApiOperation
(
value
=
"38:获取员工数据-根据 组织机构代码"
,
httpMethod
=
"GET"
,
notes
=
"接口发布说明"
)
@ApiOperationSupport
(
order
=
38
)
public
Result
<
Object
>
getEmployeeData
(
@CurrentUser
UserBean
userBean
)
{
List
<
YgglMainEmp
>
yggl
=
YgglMainEmp
.
builder
().
build
().
selectList
(
new
QueryWrapper
<
YgglMainEmp
>().
lambda
().
eq
(
YgglMainEmp:
:
getOrgCode
,
userBean
.
getOrgCode
()));
List
<
YgglMainEmp
>
yggl
=
YgglMainEmp
.
builder
().
build
().
selectList
(
new
QueryWrapper
<
YgglMainEmp
>().
lambda
().
eq
(
YgglMainEmp:
:
getOrgCode
,
userBean
.
getOrgCode
())
.
eq
(
YgglMainEmp:
:
getJobStatus
,
"1"
)
);
return
ResultUtil
.
data
(
yggl
);
}
...
...
@@ -1988,6 +1992,48 @@ public class TimeCardController {
return
ResultUtil
.
data
(
attoverrul
,
"操作成功!"
);
}
@Autowired
private
KqglAssoMonthPunchSummaryMapper
kqglassomonthpunchsummarymapper
;
@PostMapping
(
value
=
"/Summary_data"
)
@ApiOperation
(
value
=
"获取考勤报表汇总数据"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
Object
>
SummarydataList
(
@CurrentUser
UserBean
userBean
,
@Validated
@RequestBody
AttendanceSummaryQueryDto
attesummqueto
)
throws
ParseException
{
IPage
<
KqglAssoMonthPunchSummaryDto
>
page
=
new
Page
<
KqglAssoMonthPunchSummaryDto
>(
attesummqueto
.
getCurrentPage
()
==
null
?
1
:
attesummqueto
.
getCurrentPage
(),
attesummqueto
.
getTotalPage
()
==
null
?
10
:
attesummqueto
.
getTotalPage
());
attesummqueto
.
setOrgCode
(
userBean
.
getOrgCode
());
String
year
=
null
,
month
=
null
;
String
staapptime
=
null
,
endapptime
=
null
;
if
(
attesummqueto
.
getTimes
()
!=
null
&&
!(
""
).
equals
(
attesummqueto
.
getTimes
()))
{
year
=
attesummqueto
.
getTimes
().
substring
(
0
,
4
);
month
=
attesummqueto
.
getTimes
().
substring
(
5
,
7
);
staapptime
=
ClockInTool
.
getFirstDayOfMonth1
(
Integer
.
valueOf
(
year
),
Integer
.
valueOf
(
month
));
endapptime
=
ClockInTool
.
getLastDayOfMonth1
(
Integer
.
valueOf
(
year
),
Integer
.
valueOf
(
month
));
}
else
{
year
=
new
SimpleDateFormat
(
"yyyy"
).
format
(
new
Date
()).
toString
();
month
=
new
SimpleDateFormat
(
"MM"
).
format
(
new
Date
()).
toString
();
Calendar
c
=
Calendar
.
getInstance
();
c
.
add
(
Calendar
.
MONTH
,
0
);
c
.
set
(
Calendar
.
DAY_OF_MONTH
,
1
);
staapptime
=
DateUtil
.
getStringFormat
(
DateUtil
.
getStringTime
(
mat
.
format
(
c
.
getTime
()),
"yyyy-MM-dd"
));
Calendar
ca
=
Calendar
.
getInstance
();
ca
.
set
(
Calendar
.
DAY_OF_MONTH
,
ca
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
endapptime
=
DateUtil
.
getStringFormat
(
DateUtil
.
getStringTime
(
mat
.
format
(
ca
.
getTime
()),
"yyyy-MM-dd"
));
}
attesummqueto
.
setYear
(
year
);
attesummqueto
.
setMonth
(
month
);
attesummqueto
.
setStaapptime
(
staapptime
);
attesummqueto
.
setEndapptime
(
endapptime
);
// 缺-部门id 搜索
IPage
<
KqglAssoMonthPunchSummaryDto
>
pageAs
=
kqglassomonthpunchsummarymapper
.
AttendanceSummaryData
(
page
,
attesummqueto
);
List
<
KqglAssoMonthPunchSummaryDto
>
listAs
=
pageAs
.
getRecords
();
return
ResultUtil
.
data
(
pageAs
,
listAs
,
"操作成功!"
);
}
// @GetMapping(value = "/summary_report")
// @ApiOperation(value = "考勤汇总报表(暂时不用)", httpMethod = "GET", notes = "接口发布说明")
// public Result<Object> attendance_summary_report() {
...
...
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/controller/kqgl/atttimer/AttendanceTaskTiming.java
View file @
e7a6072b
...
...
@@ -11,11 +11,10 @@ import java.util.List;
import
java.util.Locale
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Lazy
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.scheduling.annotation.SchedulingConfigurer
;
import
org.springframework.scheduling.config.ScheduledTaskRegistrar
;
import
org.springframework.scheduling.support.CronTrigger
;
import
org.springframework.stereotype.Component
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
...
...
@@ -32,8 +31,6 @@ import cn.timer.api.bean.kqmk.KqglAssoRelationSummary;
import
cn.timer.api.bean.kqmk.KqglAssoTeshu
;
import
cn.timer.api.bean.kqmk.KqglAssoZhoupaiban
;
import
cn.timer.api.bean.kqmk.KqglMainKqz
;
import
cn.timer.api.bean.kqmk.KqglTaskTiming
;
import
cn.timer.api.bean.qyzx.QyzxEntInfoM
;
import
cn.timer.api.controller.kqgl.ClockInTool
;
import
cn.timer.api.dao.kqgl.AttendanceWeeklySchMapper
;
import
cn.timer.api.dao.kqgl.PunchCardDetailsMapper
;
...
...
@@ -53,9 +50,11 @@ import cn.timer.api.utils.DateUtil;
* @author lal
* 考勤报表汇总数据
*/
@Component
@Lazy
public
class
AttendanceTaskTiming
implements
SchedulingConfigurer
{
//@Component
//@Lazy
@Configuration
//1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling
// 2.开启定时任务
public
class
AttendanceTaskTiming
{
// private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
static
String
tablename
=
null
;
...
...
@@ -79,20 +78,20 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
/**
* 数据库动态更改定时配置(attendance_socks)
*/
@Override
public
void
configureTasks
(
ScheduledTaskRegistrar
taskRegistrar
)
{
taskRegistrar
.
addTriggerTask
(()
->
{
// 任务逻辑
try
{
tablename
=
AttendanceTask
();
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
},
triggerContext
->
{
CronTrigger
cron
=
new
CronTrigger
(
AttendanceUtil
.
getCron
(
tablename
));
// cron配置
return
cron
.
nextExecutionTime
(
triggerContext
);
// 下次执行任务的时间
});
}
//
@Override
//
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
//
taskRegistrar.addTriggerTask(() -> {
//
// 任务逻辑
//
try {
//
tablename = AttendanceTask();
//
} catch (ParseException e) {
//
e.printStackTrace();
//
}
//
}, triggerContext -> {
//
CronTrigger cron = new CronTrigger(AttendanceUtil.getCron(tablename)); // cron配置
//
return cron.nextExecutionTime(triggerContext); // 下次执行任务的时间
//
});
//
}
@Autowired
private
KqglAssoRelationSummaryMapper
kqglassorelationsummarymapper
;
...
...
@@ -104,24 +103,31 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
* @return
* @throws ParseException
*/
// @Scheduled(cron = "0/5 * * * * ?") // 测试:5秒执行一次
public
String
AttendanceTask
()
throws
ParseException
{
//3.添加定时任务
@Scheduled
(
cron
=
"0 10 15 * * ?"
)
//或直接指定时间间隔,例如:5秒
//@Scheduled(fixedRate=5000)
// @Scheduled(cron = "0/5 * * * * ?") // 测试:5秒执行一次 0 0 19 * * ?
public
void
AttendanceTask
()
throws
ParseException
{
boolean
implement
=
false
;
int
sockid
=
0
;
KqglTaskTiming
sock
=
KqglTaskTiming
.
builder
().
build
().
selectOne
(
new
QueryWrapper
<
KqglTaskTiming
>().
lambda
().
eq
(
KqglTaskTiming:
:
getTask
,
"AttendanceTask"
));
if
(
sock
==
null
)
{
KqglTaskTiming
sock1
=
KqglTaskTiming
.
builder
().
task
(
"AttendanceTask"
).
executionStatus
(
1
).
lastExecutionTime
(
new
Date
().
getTime
()).
build
();
sock1
.
insert
();
sockid
=
sock1
.
getId
();
implement
=
true
;
}
else
{
sockid
=
sock
.
getId
();
if
(
sock
.
getExecutionStatus
()
==
0
)
{
KqglTaskTiming
.
builder
().
task
(
"AttendanceTask"
).
id
(
sock
.
getId
()).
executionStatus
(
1
).
lastExecutionTime
(
new
Date
().
getTime
()).
build
().
updateById
();
implement
=
true
;
}
}
// boolean implement = false;
// int sockid = 0;
// KqglTaskTiming sock = KqglTaskTiming.builder().build().selectOne(new QueryWrapper<KqglTaskTiming>().lambda().eq(KqglTaskTiming::getTask, "AttendanceTask"));
// if(sock == null) {
// KqglTaskTiming sock1 = KqglTaskTiming.builder().task("AttendanceTask").executionStatus(1).lastExecutionTime(new Date().getTime()).build();
// sock1.insert();
// sockid = sock1.getId();
// implement = true;
// }else {
// sockid = sock.getId();
// if(sock.getExecutionStatus() == 0) {
// KqglTaskTiming.builder().task("AttendanceTask").id(sock.getId()).executionStatus(1).lastExecutionTime(new Date().getTime()).build().updateById();
// implement = true;
// }
// }
boolean
implement
=
true
;
//逻辑
if
(
implement
)
{
...
...
@@ -136,7 +142,7 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
ca
.
set
(
Calendar
.
DAY_OF_MONTH
,
ca
.
getActualMaximum
(
Calendar
.
DAY_OF_MONTH
));
Long
endDate
=
DateUtil
.
getnowEndTime
(
23
,
DateUtil
.
getStringTime
(
sdf1
.
format
(
ca
.
getTime
()),
"yyyy-MM-dd"
)).
getTime
();
List
<
QyzxEntInfoM
>
orgcodelist
=
qyzxentinfommapper
.
selectList
(
new
QueryWrapper
<
QyzxEntInfoM
>());
//系统中的所有公司 所有未到期的公司
//
List<QyzxEntInfoM> orgcodelist = qyzxentinfommapper.selectList(new QueryWrapper<QyzxEntInfoM>());//系统中的所有公司 所有未到期的公司
String
str
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
).
format
(
new
Date
()).
toString
();
//
String
ttstr
=
new
SimpleDateFormat
(
"yyyy-MM"
).
format
(
new
Date
()).
toString
();
//
...
...
@@ -148,8 +154,8 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
KqglAssoMonthPunchSummary
.
builder
().
build
().
delete
(
new
QueryWrapper
<
KqglAssoMonthPunchSummary
>().
lambda
().
eq
(
KqglAssoMonthPunchSummary:
:
getBelongYear
,
year
).
eq
(
KqglAssoMonthPunchSummary:
:
getBelongMonth
,
month
));
for
(
int
t
=
0
;
t
<
orgcodelist
.
size
();
t
++){
int
org_code
=
orgcodelist
.
get
(
t
).
getId
();
//企业组织代码
//
for(int t = 0;t<orgcodelist.size();t++){
int
org_code
=
117
;
//
orgcodelist.get(t).getId();//企业组织代码
List
<
AdditionalDto
>
userlist
=
kqglassoleavebalancemapper
.
selectAdditionalList
(
org_code
);
for
(
AdditionalDto
user
:
userlist
)
{
double
traveltotal
=
0
,
egresstotal
=
0
,
overtimetotal
=
0
;
...
...
@@ -434,7 +440,7 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
}
}
//排查请假是否在最后一次打卡范围内
//排查请假是否在最后一次打卡范围内
查询当月的请假所有日期
List
<
KqglAssoRelationSummary
>
leainv
=
kqglassorelationsummarymapper
.
LeaveInvestigation
(
user
.
getEmpnum
(),
2
,
ttstr
);
KqglAssoBcsz
shif
=
KqglAssoBcsz
.
builder
().
build
();
String
beginTime
=
sdf1
.
format
(
new
Date
());
...
...
@@ -570,11 +576,11 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
//最后一次应打卡时间
String
latimeclock
=
""
;
if
(
answer
==
1
)
{
latimeclock
=
ClockInTool
.
dealDateFormat
(
shif
.
getXbdk1
(),
3
);
latimeclock
=
num
+
" "
+
shif
.
getXbdk1
();
//
ClockInTool.dealDateFormat(shif.getXbdk1(),3);
}
else
if
(
answer
==
2
)
{
latimeclock
=
ClockInTool
.
dealDateFormat
(
shif
.
getXbdk2
(),
3
);
latimeclock
=
num
+
" "
+
shif
.
getXbdk2
();
//
ClockInTool.dealDateFormat(shif.getXbdk2(),3);
}
else
{
latimeclock
=
ClockInTool
.
dealDateFormat
(
shif
.
getXbdk3
(),
3
);
latimeclock
=
num
+
" "
+
shif
.
getXbdk3
();
//
ClockInTool.dealDateFormat(shif.getXbdk3(),3);
}
for
(
KqglAssoRelationSummary
learel:
leainv
)
{
boolean
adopt
=
ClockInTool
.
hourMinuteBetween
(
latimeclock
,
learel
.
getStartTime
().
substring
(
0
,
16
),
learel
.
getEndTime
().
substring
(
0
,
16
),
"yyyy-MM-dd HH:mm"
);
...
...
@@ -678,13 +684,14 @@ public class AttendanceTaskTiming implements SchedulingConfigurer {
summary
.
setDay31
(
noticesArray
[
30
]);
summary
.
insert
();
}
}
//
}
// KqglTaskTiming.builder().task("AttendanceTask").id(sockid).executionStatus(0).lastExecutionTime(new Date().getTime()).build().updateById();
return
new
Exception
().
getStackTrace
()[
0
].
getMethodName
();
}
else
{
return
null
;
}
// return new Exception().getStackTrace()[0].getMethodName();
}
// else {
// return null;
// }
}
...
...
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/dao/kqmk/KqglAssoMonthPunchSummaryMapper.java
View file @
e7a6072b
package
cn
.
timer
.
api
.
dao
.
kqmk
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
cn.timer.api.bean.kqmk.KqglAssoMonthPunchSummary
;
import
cn.timer.api.dto.kqmk.AttendanceSummaryQueryDto
;
import
cn.timer.api.dto.kqmk.KqglAssoMonthPunchSummaryDto
;
/**
* 打卡月汇总
...
...
@@ -12,5 +17,6 @@ import cn.timer.api.bean.kqmk.KqglAssoMonthPunchSummary;
*/
@Repository
public
interface
KqglAssoMonthPunchSummaryMapper
extends
BaseMapper
<
KqglAssoMonthPunchSummary
>
{
IPage
<
KqglAssoMonthPunchSummaryDto
>
AttendanceSummaryData
(
IPage
<
KqglAssoMonthPunchSummaryDto
>
page
,
@Param
(
"param"
)
AttendanceSummaryQueryDto
attendancesummaryquerydto
);
}
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/dto/kqmk/AttendanceSummaryQueryDto.java
0 → 100644
View file @
e7a6072b
package
cn
.
timer
.
api
.
dto
.
kqmk
;
import
cn.timer.api.utils.Page
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
AttendanceSummaryQueryDto
extends
Page
{
private
Integer
orgCode
;
@ApiModelProperty
(
value
=
"关键字"
,
example
=
""
)
private
String
query
;
private
String
times
;
private
Integer
attid
;
private
String
year
;
private
String
month
;
private
String
staapptime
;
private
String
endapptime
;
}
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/dto/kqmk/KqglAssoMonthPunchSummaryDto.java
0 → 100644
View file @
e7a6072b
package
cn
.
timer
.
api
.
dto
.
kqmk
;
import
java.util.List
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @author lal 2020-05-15
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public
class
KqglAssoMonthPunchSummaryDto
{
@Id
@GeneratedValue
@TableId
(
type
=
IdType
.
AUTO
)
@ApiModelProperty
(
value
=
"id id"
,
example
=
"101"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
"姓名 "
,
example
=
"姓名"
)
private
String
name
;
@ApiModelProperty
(
value
=
"工号 工号"
,
example
=
"101"
)
private
Integer
num
;
@ApiModelProperty
(
value
=
"部门 "
,
example
=
"部门"
)
private
String
dept
;
@ApiModelProperty
(
value
=
"职位 "
,
example
=
"职位"
)
private
String
post
;
@ApiModelProperty
(
value
=
"考勤组id 考勤组id"
,
example
=
"101"
)
private
Integer
attGroup
;
@ApiModelProperty
(
value
=
"班次id 班次id"
,
example
=
"101"
)
private
Integer
shift
;
@ApiModelProperty
(
value
=
"应出勤天数 "
,
example
=
"应出勤天数"
)
private
Double
daysOnDuty
;
@ApiModelProperty
(
value
=
"实际出勤天数 "
,
example
=
"实际出勤天数"
)
private
Double
actualAttDays
;
@ApiModelProperty
(
value
=
"休息天数 "
,
example
=
"休息天数"
)
private
Double
daysOff
;
@ApiModelProperty
(
value
=
"工作时长(分钟) "
,
example
=
"工作时长(分钟)"
)
private
Double
workingHours
;
@ApiModelProperty
(
value
=
"迟到次数 "
,
example
=
"迟到次数"
)
private
Double
lateTimes
;
@ApiModelProperty
(
value
=
"迟到时长(分钟) "
,
example
=
"迟到时长(分钟)"
)
private
Double
lateHours
;
@ApiModelProperty
(
value
=
"严重迟到次数 "
,
example
=
"严重迟到次数"
)
private
Double
seriousLateTimes
;
@ApiModelProperty
(
value
=
"严重迟到时长(分钟) "
,
example
=
"严重迟到时长(分钟)"
)
private
Double
seriousLateHours
;
@ApiModelProperty
(
value
=
"旷工迟到次数 "
,
example
=
"旷工迟到次数"
)
private
Double
absenLateTimes
;
@ApiModelProperty
(
value
=
"早退次数 "
,
example
=
"早退次数"
)
private
Double
earlyLeaveTimes
;
@ApiModelProperty
(
value
=
"早退时长(分钟) "
,
example
=
"早退时长(分钟)"
)
private
Double
lengthEarlyLeave
;
@ApiModelProperty
(
value
=
"上班缺卡次数 "
,
example
=
"上班缺卡次数"
)
private
Double
numberWorkCardShortage
;
@ApiModelProperty
(
value
=
"下班缺卡次数 "
,
example
=
"下班缺卡次数"
)
private
Double
numberDutyCardShortage
;
@ApiModelProperty
(
value
=
"旷工天数 "
,
example
=
"旷工天数"
)
private
Double
absenteeismDays
;
@ApiModelProperty
(
value
=
"出差时长 "
,
example
=
"出差时长"
)
private
Double
lengthBusinessTrip
;
@ApiModelProperty
(
value
=
"外出时长 "
,
example
=
"外出时长"
)
private
Double
timeOut
;
@ApiModelProperty
(
value
=
"加班总时长 "
,
example
=
"加班总时长"
)
private
Double
totalOvertimeHours
;
@ApiModelProperty
(
value
=
"工作日(转调休) "
,
example
=
"工作日(转调休)"
)
private
Double
workingTurnCompenLeave
;
@ApiModelProperty
(
value
=
"休息日(转调休) "
,
example
=
"休息日(转调休)"
)
private
Double
restTurnCompenLeave
;
@ApiModelProperty
(
value
=
"节假日(转调休) "
,
example
=
"节假日(转调休)"
)
private
Double
holidayTurnCompenLeave
;
@ApiModelProperty
(
value
=
"工作日(转加班费) "
,
example
=
"工作日(转加班费)"
)
private
Double
workingTransferOvertime
;
@ApiModelProperty
(
value
=
"休息日(转加班费) "
,
example
=
"休息日(转加班费)"
)
private
Double
restTransferOvertime
;
@ApiModelProperty
(
value
=
"节假日(转加班费) "
,
example
=
"节假日(转加班费)"
)
private
Double
holidayTransferOvertime
;
@ApiModelProperty
(
value
=
"day1 "
,
example
=
"day1"
)
private
String
day1
;
@ApiModelProperty
(
value
=
"day2 "
,
example
=
"day2"
)
private
String
day2
;
@ApiModelProperty
(
value
=
"day3 "
,
example
=
"day3"
)
private
String
day3
;
@ApiModelProperty
(
value
=
"day4 "
,
example
=
"day4"
)
private
String
day4
;
@ApiModelProperty
(
value
=
"day5 "
,
example
=
"day5"
)
private
String
day5
;
@ApiModelProperty
(
value
=
"day6 "
,
example
=
"day6"
)
private
String
day6
;
@ApiModelProperty
(
value
=
"day7 "
,
example
=
"day7"
)
private
String
day7
;
@ApiModelProperty
(
value
=
"day8 "
,
example
=
"day8"
)
private
String
day8
;
@ApiModelProperty
(
value
=
"day9 "
,
example
=
"day9"
)
private
String
day9
;
@ApiModelProperty
(
value
=
"day10 "
,
example
=
"day10"
)
private
String
day10
;
@ApiModelProperty
(
value
=
"day11 "
,
example
=
"day11"
)
private
String
day11
;
@ApiModelProperty
(
value
=
"day12 "
,
example
=
"day12"
)
private
String
day12
;
@ApiModelProperty
(
value
=
"day13 "
,
example
=
"day13"
)
private
String
day13
;
@ApiModelProperty
(
value
=
"day14 "
,
example
=
"day14"
)
private
String
day14
;
@ApiModelProperty
(
value
=
"day15 "
,
example
=
"day15"
)
private
String
day15
;
@ApiModelProperty
(
value
=
"day16 "
,
example
=
"day16"
)
private
String
day16
;
@ApiModelProperty
(
value
=
"day17 "
,
example
=
"day17"
)
private
String
day17
;
@ApiModelProperty
(
value
=
"day18 "
,
example
=
"day18"
)
private
String
day18
;
@ApiModelProperty
(
value
=
"day19 "
,
example
=
"day19"
)
private
String
day19
;
@ApiModelProperty
(
value
=
"day20 "
,
example
=
"day20"
)
private
String
day20
;
@ApiModelProperty
(
value
=
"day21 "
,
example
=
"day21"
)
private
String
day21
;
@ApiModelProperty
(
value
=
"day22 "
,
example
=
"day22"
)
private
String
day22
;
@ApiModelProperty
(
value
=
"day23 "
,
example
=
"day23"
)
private
String
day23
;
@ApiModelProperty
(
value
=
"day24 "
,
example
=
"day24"
)
private
String
day24
;
@ApiModelProperty
(
value
=
"day25 "
,
example
=
"day25"
)
private
String
day25
;
@ApiModelProperty
(
value
=
"day26 "
,
example
=
"day26"
)
private
String
day26
;
@ApiModelProperty
(
value
=
"day27 "
,
example
=
"day27"
)
private
String
day27
;
@ApiModelProperty
(
value
=
"day28 "
,
example
=
"day28"
)
private
String
day28
;
@ApiModelProperty
(
value
=
"day29 "
,
example
=
"day29"
)
private
String
day29
;
@ApiModelProperty
(
value
=
"day30 "
,
example
=
"day30"
)
private
String
day30
;
@ApiModelProperty
(
value
=
"day31 "
,
example
=
"day31"
)
private
String
day31
;
@ApiModelProperty
(
value
=
"年 年"
,
example
=
"101"
)
private
Integer
belongYear
;
@ApiModelProperty
(
value
=
"月 月"
,
example
=
"101"
)
private
Integer
belongMonth
;
@ApiModelProperty
(
value
=
"企业组织代码 企业组织代码"
,
example
=
"101"
)
private
Integer
orgCode
;
@ApiModelProperty
(
value
=
"最后修改时间 最后修改时间"
,
example
=
"101"
)
private
Long
lastModified
;
@ApiModelProperty
(
value
=
"表数据"
,
example
=
"字段说明"
)
List
<
BalanceSheetDataDto
>
balanceTo
;
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
src/main/resources/mapping/kqmk/KqglAssoMonthPunchSummaryMapper.xml
View file @
e7a6072b
...
...
@@ -70,6 +70,81 @@
<result
column=
"org_code"
property=
"orgCode"
/>
<result
column=
"last_modified"
property=
"lastModified"
/>
</resultMap>
<resultMap
id=
"SummarydataMap"
type=
"cn.timer.api.dto.kqmk.KqglAssoMonthPunchSummaryDto"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"name"
property=
"name"
/>
<result
column=
"num"
property=
"num"
/>
<result
column=
"dept"
property=
"dept"
/>
<result
column=
"post"
property=
"post"
/>
<result
column=
"att_group"
property=
"attGroup"
/>
<result
column=
"shift"
property=
"shift"
/>
<result
column=
"days_on_duty"
property=
"daysOnDuty"
/>
<result
column=
"actual_att_days"
property=
"actualAttDays"
/>
<result
column=
"days_off"
property=
"daysOff"
/>
<result
column=
"working_hours"
property=
"workingHours"
/>
<result
column=
"late_times"
property=
"lateTimes"
/>
<result
column=
"late_hours"
property=
"lateHours"
/>
<result
column=
"serious_late_times"
property=
"seriousLateTimes"
/>
<result
column=
"serious_late_hours"
property=
"seriousLateHours"
/>
<result
column=
"absen_late_times"
property=
"absenLateTimes"
/>
<result
column=
"early_leave_times"
property=
"earlyLeaveTimes"
/>
<result
column=
"length_early_leave"
property=
"lengthEarlyLeave"
/>
<result
column=
"number_work_card_shortage"
property=
"numberWorkCardShortage"
/>
<result
column=
"number_duty_card_shortage"
property=
"numberDutyCardShortage"
/>
<result
column=
"absenteeism_days"
property=
"absenteeismDays"
/>
<result
column=
"length_business_trip"
property=
"lengthBusinessTrip"
/>
<result
column=
"time_out"
property=
"timeOut"
/>
<result
column=
"total_overtime_hours"
property=
"totalOvertimeHours"
/>
<result
column=
"working_turn_compen_leave"
property=
"workingTurnCompenLeave"
/>
<result
column=
"rest_turn_compen_leave"
property=
"restTurnCompenLeave"
/>
<result
column=
"holiday_turn_compen_leave"
property=
"holidayTurnCompenLeave"
/>
<result
column=
"working_transfer_overtime"
property=
"workingTransferOvertime"
/>
<result
column=
"rest_transfer_overtime"
property=
"restTransferOvertime"
/>
<result
column=
"holiday_transfer_overtime"
property=
"holidayTransferOvertime"
/>
<result
column=
"day1"
property=
"day1"
/>
<result
column=
"day2"
property=
"day2"
/>
<result
column=
"day3"
property=
"day3"
/>
<result
column=
"day4"
property=
"day4"
/>
<result
column=
"day5"
property=
"day5"
/>
<result
column=
"day6"
property=
"day6"
/>
<result
column=
"day7"
property=
"day7"
/>
<result
column=
"day8"
property=
"day8"
/>
<result
column=
"day9"
property=
"day9"
/>
<result
column=
"day10"
property=
"day10"
/>
<result
column=
"day11"
property=
"day11"
/>
<result
column=
"day12"
property=
"day12"
/>
<result
column=
"day13"
property=
"day13"
/>
<result
column=
"day14"
property=
"day14"
/>
<result
column=
"day15"
property=
"day15"
/>
<result
column=
"day16"
property=
"day16"
/>
<result
column=
"day17"
property=
"day17"
/>
<result
column=
"day18"
property=
"day18"
/>
<result
column=
"day19"
property=
"day19"
/>
<result
column=
"day20"
property=
"day20"
/>
<result
column=
"day21"
property=
"day21"
/>
<result
column=
"day22"
property=
"day22"
/>
<result
column=
"day23"
property=
"day23"
/>
<result
column=
"day24"
property=
"day24"
/>
<result
column=
"day25"
property=
"day25"
/>
<result
column=
"day26"
property=
"day26"
/>
<result
column=
"day27"
property=
"day27"
/>
<result
column=
"day28"
property=
"day28"
/>
<result
column=
"day29"
property=
"day29"
/>
<result
column=
"day30"
property=
"day30"
/>
<result
column=
"day31"
property=
"day31"
/>
<result
column=
"belong_year"
property=
"belongYear"
/>
<result
column=
"belong_month"
property=
"belongMonth"
/>
<result
column=
"org_code"
property=
"orgCode"
/>
<result
column=
"last_modified"
property=
"lastModified"
/>
<collection
property=
"balanceTo"
ofType=
"cn.timer.api.dto.kqmk.BalanceSheetDataDto"
>
<result
column=
"leaverulesid"
property=
"leaverulesid"
/>
<result
column=
"balancedays"
property=
"balancedays"
/>
</collection>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,
...
...
@@ -139,73 +214,37 @@
last_modified
</sql>
<sql
id=
"Base_Column_List_Alias"
>
id KqglAssoMonthPunchSummary_id,
name KqglAssoMonthPunchSummary_name,
num KqglAssoMonthPunchSummary_num,
dept KqglAssoMonthPunchSummary_dept,
post KqglAssoMonthPunchSummary_post,
att_group KqglAssoMonthPunchSummary_att_group,
shift KqglAssoMonthPunchSummary_shift,
days_on_duty KqglAssoMonthPunchSummary_days_on_duty,
actual_att_days KqglAssoMonthPunchSummary_actual_att_days,
days_off KqglAssoMonthPunchSummary_days_off,
working_hours KqglAssoMonthPunchSummary_working_hours,
late_times KqglAssoMonthPunchSummary_late_times,
late_hours KqglAssoMonthPunchSummary_late_hours,
serious_late_times KqglAssoMonthPunchSummary_serious_late_times,
serious_late_hours KqglAssoMonthPunchSummary_serious_late_hours,
absen_late_times KqglAssoMonthPunchSummary_absen_late_times,
early_leave_times KqglAssoMonthPunchSummary_early_leave_times,
length_early_leave KqglAssoMonthPunchSummary_length_early_leave,
number_work_card_shortage KqglAssoMonthPunchSummary_number_work_card_shortage,
number_duty_card_shortage KqglAssoMonthPunchSummary_number_duty_card_shortage,
absenteeism_days KqglAssoMonthPunchSummary_absenteeism_days,
length_business_trip KqglAssoMonthPunchSummary_length_business_trip,
time_out KqglAssoMonthPunchSummary_time_out,
total_overtime_hours KqglAssoMonthPunchSummary_total_overtime_hours,
working_turn_compen_leave KqglAssoMonthPunchSummary_working_turn_compen_leave,
rest_turn_compen_leave KqglAssoMonthPunchSummary_rest_turn_compen_leave,
holiday_turn_compen_leave KqglAssoMonthPunchSummary_holiday_turn_compen_leave,
working_transfer_overtime KqglAssoMonthPunchSummary_working_transfer_overtime,
rest_transfer_overtime KqglAssoMonthPunchSummary_rest_transfer_overtime,
holiday_transfer_overtime KqglAssoMonthPunchSummary_holiday_transfer_overtime,
day1 KqglAssoMonthPunchSummary_day1,
day2 KqglAssoMonthPunchSummary_day2,
day3 KqglAssoMonthPunchSummary_day3,
day4 KqglAssoMonthPunchSummary_day4,
day5 KqglAssoMonthPunchSummary_day5,
day6 KqglAssoMonthPunchSummary_day6,
day7 KqglAssoMonthPunchSummary_day7,
day8 KqglAssoMonthPunchSummary_day8,
day9 KqglAssoMonthPunchSummary_day9,
day10 KqglAssoMonthPunchSummary_day10,
day11 KqglAssoMonthPunchSummary_day11,
day12 KqglAssoMonthPunchSummary_day12,
day13 KqglAssoMonthPunchSummary_day13,
day14 KqglAssoMonthPunchSummary_day14,
day15 KqglAssoMonthPunchSummary_day15,
day16 KqglAssoMonthPunchSummary_day16,
day17 KqglAssoMonthPunchSummary_day17,
day18 KqglAssoMonthPunchSummary_day18,
day19 KqglAssoMonthPunchSummary_day19,
day20 KqglAssoMonthPunchSummary_day20,
day21 KqglAssoMonthPunchSummary_day21,
day22 KqglAssoMonthPunchSummary_day22,
day23 KqglAssoMonthPunchSummary_day23,
day24 KqglAssoMonthPunchSummary_day24,
day25 KqglAssoMonthPunchSummary_day25,
day26 KqglAssoMonthPunchSummary_day26,
day27 KqglAssoMonthPunchSummary_day27,
day28 KqglAssoMonthPunchSummary_day28,
day29 KqglAssoMonthPunchSummary_day29,
day30 KqglAssoMonthPunchSummary_day30,
day31 KqglAssoMonthPunchSummary_day31,
belong_year KqglAssoMonthPunchSummary_belong_year,
belong_month KqglAssoMonthPunchSummary_belong_month,
org_code KqglAssoMonthPunchSummary_org_code,
last_modified KqglAssoMonthPunchSummary_last_modified
</sql>
<select
id=
"AttendanceSummaryData"
resultMap=
"SummarydataMap"
>
select sum.*,
yz.leaverulesid as leaverulesid,
yz.duration as balancedays
from kqgl_asso_month_punch_summary sum
LEFT JOIN (SELECT les.id as leaverulesid,
hz.user_id,
hz.duration
FROM kqgl_asso_leave_rules les
LEFT JOIN (select rel.user_id,rel.leave_type_id,SUM(rel.duration) as duration
from kqgl_asso_relation_summary rel
where rel.approval_type = 2
and rel.app_time
>
= #{param.staapptime}
and rel.app_time
<
= #{param.endapptime}
GROUP BY rel.user_id,rel.leave_type_id
) as hz on hz.leave_type_id = les.id
WHERE les.org_code = #{param.orgCode}
AND (les.leave_type = 2 OR les.is_open = 1)
) as yz on yz.user_id = sum.num
where sum.org_code = #{param.orgCode}
and sum.belong_year = #{param.year}
and sum.belong_month = #{param.month}
<if
test=
"param.query != null and param.query != ''"
>
and ( sum.`name` like CONCAT('%',#{param.query},'%') or
sum.num like CONCAT('%',#{param.query},'%'))
</if>
<if
test=
"param.attid != null and param.attid != ''"
>
and sum.att_group = #{param.attid}
</if>
</select>
<!--
...
...
This diff is collapsed.
Click to expand it.
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