From ae52903567b7e8141f217321f05ab7e7daae90d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com> Date: Wed, 4 Sep 2024 10:39:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=80=83=E5=8B=A4=E6=B1=87?= =?UTF-8?q?=E6=80=BB=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/vo/AttendanceSummaryQuery.java | 7 ++++++ .../AttendanceLeaveRecordServiceImpl.java | 3 --- .../impl/AttendanceStatServiceImpl.java | 25 +++++++++++++++++-- .../AttendanceStaffStatMapperExt.xml | 17 +++++++++++-- 4 files changed, 45 insertions(+), 7 deletions(-) diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceSummaryQuery.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceSummaryQuery.java index 8a015830..07051296 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceSummaryQuery.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/model/vo/AttendanceSummaryQuery.java @@ -46,6 +46,13 @@ public class AttendanceSummaryQuery { private Integer dayOfWeek; + /** + * 姝e父缂哄嫟绫诲瀷绛夛紝['姝e父', '杩熷埌', '鏃╅€€', '璇峰亣', '鏃峰伐', '鍑哄樊', '鍔犵彮', '璋冧紤', '琛ョ', '鍏朵粬'] + */ + private List<String> summaryTypeList; + + private List<Long> staffIdList; + public AttendanceSummaryQuery(String summaryTime) { this.summaryTime = summaryTime; } diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceLeaveRecordServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceLeaveRecordServiceImpl.java index fb697f41..cb134bc3 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceLeaveRecordServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceLeaveRecordServiceImpl.java @@ -163,9 +163,6 @@ public class AttendanceLeaveRecordServiceImpl extends AbstractCRUDServiceImpl<At attendanceRecordHikQuery.setAttendanceDateEnd(DateUtil.formatDate(entity.getEndTime())); }*/ - - //todo: 瀛樺湪澶氱嚎绋嬮棶棰� 杩欓噷涓嶈兘浣跨敤 - DateTime attendStart = DateUtil.parseDate(DateUtil.formatDate(entity.getStartTime())); DateTime attendEnd = DateUtil.parseDate(DateUtil.formatDate(entity.getEndTime())); Long compare1 = DateUtil.between(attendEnd, attendStart, DateUnit.DAY); diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java index 8b02c9ae..6c271274 100644 --- a/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java +++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/service/impl/AttendanceStatServiceImpl.java @@ -673,15 +673,36 @@ public class AttendanceStatServiceImpl extends AbstractCRUDServiceImpl<Attendanc if (pageInfo == null) { pageInfo = new PageInfo(10); } + if(!ObjectUtils.isEmpty(params.getSummaryTypeList())){ + pageInfo = new PageInfo(-1); + } Result<AttendanceStatEntity> result = dao.getListExt(params, pageInfo); 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()); List<AttendanceStaffStatEntity> statEntities = attendanceStaffStatService.getListExt(params); if (CollectionUtils.isNotEmpty(statEntities)) { item.setAttendanceStaffStatEntities(statEntities); } - } + }*/ } return result; } diff --git a/attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceStaffStatMapperExt.xml b/attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceStaffStatMapperExt.xml index 504bd288..16d4b14c 100644 --- a/attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceStaffStatMapperExt.xml +++ b/attendance-performance-manager/src/main/resources/sqlmap/module/attendance/AttendanceStaffStatMapperExt.xml @@ -6,10 +6,23 @@ <select id="getListExt" parameterType="com.mortals.xhx.module.attendance.model.vo.AttendanceSummaryQuery" resultMap="AttendanceStaffStatEntity-Map"> select s.* from mortals_xhx_attendance_staff_stat as s - where s.staffId=#{staffId} - AND STR_TO_DATE(CONCAT(s.`year`,'-',s.`month`,'-',s.`day`),'%Y-%m-%d') <![CDATA[ >= ]]> STR_TO_DATE(#{summaryTimeStart},'%Y-%m-%d') + where + <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') + <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> </mapper> \ No newline at end of file -- 2.24.3