ソースを参照

查询班次出勤情况。

tomatozq 3 年 前
コミット
5de59ce3a6

+ 2 - 0
common/src/main/java/com/jpsoft/shinestar/modules/business/dao/WorkScheduleAttendanceDAO.java

@@ -50,4 +50,6 @@ public interface WorkScheduleAttendanceDAO {
 
     WorkScheduleAttendance findOneBySupplementWorkPersonId(String supplementWorkPersonId);
     WorkScheduleAttendance findOneByWorkOverPersonId(String workOverPersonId);
+
+    List<Map> statScheduleAttendanceByDate(Long personId, Date startDate, Date endDate);
 }

+ 2 - 0
common/src/main/java/com/jpsoft/shinestar/modules/business/service/WorkScheduleAttendanceService.java

@@ -75,4 +75,6 @@ public interface WorkScheduleAttendanceService {
     WorkScheduleAttendance findOneBySupplementWorkPersonId(String supplementWorkPersonId);
 
     WorkScheduleAttendance findOneByWorkOverPersonId(String workOverPersonId);
+
+    List<Map> statScheduleAttendanceByDate(Long personId, Date startDate, Date endDate);
 }

+ 5 - 0
common/src/main/java/com/jpsoft/shinestar/modules/business/service/impl/WorkScheduleAttendanceServiceImpl.java

@@ -1245,4 +1245,9 @@ public class WorkScheduleAttendanceServiceImpl implements WorkScheduleAttendance
     public WorkScheduleAttendance findOneByWorkOverPersonId(String workOverPersonId) {
         return workScheduleAttendanceDAO.findOneByWorkOverPersonId(workOverPersonId);
     }
+
+    @Override
+    public List<Map> statScheduleAttendanceByDate(Long personId, Date startDate, Date endDate) {
+        return workScheduleAttendanceDAO.statScheduleAttendanceByDate(personId,startDate,endDate);
+    }
 }

+ 13 - 0
common/src/main/resources/mapper/business/WorkScheduleAttendance.xml

@@ -640,4 +640,17 @@
         order by create_time desc
         limit 1
     </select>
+    <select id="statScheduleAttendanceByDate" resultType="java.util.Map">
+        <![CDATA[
+            select work_shift_id as workShiftId,
+            count(distinct(attendance_date)) as dayCount
+            from business_work_schedule_attendance
+            where person_id=47592
+            and record_time>=#{startDate}
+            and record_time<=#{endDate}
+            and result_<>0
+            and del_flag=0
+            group by work_shift_id
+        ]]>
+    </select>
 </mapper>

+ 32 - 3
web/src/main/java/com/jpsoft/shinestar/modules/business/controller/WorkScheduleAttendanceController.java

@@ -381,8 +381,10 @@ public class WorkScheduleAttendanceController {
                 BigDecimal leaveNum = requestForLeaveInfoService.sumDaysByPersonIdAndTimeRange(pi.getId(),startDate,endDate);
                 wsaDTO.setLeaveNum(leaveNum);
 
-                String remark = queryRemark(String.valueOf(pi.getId()),startMonth,endMonth);
+                //String remark = queryRemark(String.valueOf(pi.getId()),startMonth,endMonth);
+                String remark = statScheduleAttendanceByDate(pi.getId(),startDate,endDate);
                 wsaDTO.setRemark(remark);
+
               wsaList.add(wsaDTO);
 
             }
@@ -405,6 +407,35 @@ public class WorkScheduleAttendanceController {
         return msgResult;
     }
 
+    /**
+     * 查询人员班次按天考勤次数
+     * @param personId
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    private String statScheduleAttendanceByDate(Long personId, Date startDate, Date endDate) {
+         List<Map> mapList = workScheduleAttendanceService.statScheduleAttendanceByDate(personId,startDate,endDate);
+        
+         StringBuilder sb = new StringBuilder();
+
+        for (Map map : mapList) {
+            if(sb.length()>0){
+                sb.append(",");
+            }
+
+            String shiftId = map.get("workShiftId").toString();
+            WorkShiftInfo workShiftInfo = workShiftInfoService.get(shiftId);
+            Long dayCount = Long.valueOf(map.get("dayCount").toString());
+
+            if(workShiftInfo!=null) {
+                sb.append(workShiftInfo.getName() + ":" + dayCount + "次");
+            }
+        }
+
+        return sb.toString();
+    }
+
 
     public String queryRemark(String personId,String startMonth,String endMonth){
 
@@ -465,8 +496,6 @@ public class WorkScheduleAttendanceController {
                 }
             }
 
-
-
             Set<Map.Entry<String, Object>> entryseSet = workShiftDayMap.entrySet();
 
             for (Map.Entry<String, Object> entry:entryseSet) {