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