Commit 623fac14 authored by 姬鋆屾's avatar 姬鋆屾
parents 4b1cba4f ae529035
...@@ -46,6 +46,13 @@ public class AttendanceSummaryQuery { ...@@ -46,6 +46,13 @@ public class AttendanceSummaryQuery {
private Integer dayOfWeek; private Integer dayOfWeek;
/**
* 正常缺勤类型等,['正常', '迟到', '早退', '请假', '旷工', '出差', '加班', '调休', '补签', '其他']
*/
private List<String> summaryTypeList;
private List<Long> staffIdList;
public AttendanceSummaryQuery(String summaryTime) { public AttendanceSummaryQuery(String summaryTime) {
this.summaryTime = summaryTime; this.summaryTime = summaryTime;
} }
......
...@@ -163,9 +163,6 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At ...@@ -163,9 +163,6 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At
attendanceRecordHikQuery.setAttendanceDateEnd(DateUtil.formatDate(entity.getEndTime())); attendanceRecordHikQuery.setAttendanceDateEnd(DateUtil.formatDate(entity.getEndTime()));
}*/ }*/
//todo: 存在多线程问题 这里不能使用
DateTime attendStart = DateUtil.parseDate(DateUtil.formatDate(entity.getStartTime())); DateTime attendStart = DateUtil.parseDate(DateUtil.formatDate(entity.getStartTime()));
DateTime attendEnd = DateUtil.parseDate(DateUtil.formatDate(entity.getEndTime())); DateTime attendEnd = DateUtil.parseDate(DateUtil.formatDate(entity.getEndTime()));
Long compare1 = DateUtil.between(attendEnd, attendStart, DateUnit.DAY); Long compare1 = DateUtil.between(attendEnd, attendStart, DateUnit.DAY);
......
...@@ -673,15 +673,36 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc ...@@ -673,15 +673,36 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc
if (pageInfo == null) { if (pageInfo == null) {
pageInfo = new PageInfo(10); pageInfo = new PageInfo(10);
} }
if(!ObjectUtils.isEmpty(params.getSummaryTypeList())){
pageInfo = new PageInfo(-1);
}
Result<AttendanceStatEntity> result = dao.getListExt(params, pageInfo); Result<AttendanceStatEntity> result = dao.getListExt(params, pageInfo);
if (CollectionUtils.isNotEmpty(result.getList())) { if (CollectionUtils.isNotEmpty(result.getList())) {
for (AttendanceStatEntity item : result.getList()) { //todo 循环查询改造
List<Long> staffIdList = result.getList().parallelStream().map(AttendanceStatEntity::getStaffId).collect(Collectors.toList());
if(!ObjectUtils.isEmpty(staffIdList)){
params.setStaffIdList(staffIdList);
}
Map<Long, List<AttendanceStaffStatEntity>> staffGroupCollect = attendanceStaffStatService.getListExt(params).parallelStream().collect(Collectors.groupingBy(AttendanceStaffStatEntity::getStaffId));
Iterator<AttendanceStatEntity> iterator = result.getList().iterator();
while (iterator.hasNext()) {
AttendanceStatEntity item = iterator.next();
List<AttendanceStaffStatEntity> statEntities = staffGroupCollect.get(item.getStaffId());
if (CollectionUtils.isNotEmpty(statEntities)) {
item.setAttendanceStaffStatEntities(statEntities);
}else {
iterator.remove();
}
}
/* for (AttendanceStatEntity item : result.getList()) {
params.setStaffId(item.getStaffId()); params.setStaffId(item.getStaffId());
List<AttendanceStaffStatEntity> statEntities = attendanceStaffStatService.getListExt(params); List<AttendanceStaffStatEntity> statEntities = attendanceStaffStatService.getListExt(params);
if (CollectionUtils.isNotEmpty(statEntities)) { if (CollectionUtils.isNotEmpty(statEntities)) {
item.setAttendanceStaffStatEntities(statEntities); item.setAttendanceStaffStatEntities(statEntities);
} }
} }*/
} }
return result; return result;
} }
......
...@@ -6,10 +6,23 @@ ...@@ -6,10 +6,23 @@
<select id="getListExt" parameterType="com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery" resultMap="AttendanceStaffStatEntity-Map"> <select id="getListExt" parameterType="com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery" resultMap="AttendanceStaffStatEntity-Map">
select s.* select s.*
from mortals_xhx_attendance_staff_stat as s from mortals_xhx_attendance_staff_stat as s
where s.staffId=#{staffId} where
AND STR_TO_DATE(CONCAT(s.`year`,'-',s.`month`,'-',s.`day`),'%Y-%m-%d') <![CDATA[ >= ]]> STR_TO_DATE(#{summaryTimeStart},'%Y-%m-%d') <if test="staffId != null">
s.staffId=#{staffId} AND
</if>
STR_TO_DATE(CONCAT(s.`year`,'-',s.`month`,'-',s.`day`),'%Y-%m-%d') <![CDATA[ >= ]]> STR_TO_DATE(#{summaryTimeStart},'%Y-%m-%d')
AND STR_TO_DATE(CONCAT(s.`year`,'-',s.`month`,'-',s.`day`),'%Y-%m-%d') <![CDATA[ <= ]]> STR_TO_DATE(#{summaryTimeEnd},'%Y-%m-%d') AND STR_TO_DATE(CONCAT(s.`year`,'-',s.`month`,'-',s.`day`),'%Y-%m-%d') <![CDATA[ <= ]]> STR_TO_DATE(#{summaryTimeEnd},'%Y-%m-%d')
<if test="staffIdList != null and staffIdList.size>0">
AND s.staffId in
<foreach collection="staffIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="summaryTypeList != null and summaryTypeList.size>0">
AND s.attendanceSummary REGEXP
replace(<foreach collection="summaryTypeList" open="'" close="'" index="index" item="item" separator="|">${item}</foreach>,' ','')
</if>
</select> </select>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment