Administrator 3 éve
szülő
commit
ed04dda7ef

+ 2 - 2
boman-web-core/src/main/java/com/boman/web/core/mapper/StandardlyMapper.java

@@ -226,9 +226,9 @@ public interface StandardlyMapper {
 
     @Select("SELECT\n" +
             "\tDATE_FORMAT(attendance_table_work,'%Y-%m-%d %H:%i:%s') as attendanceTableWork,\n" +
-            "\tDATE_FORMAT(attendance_table_offwork,'%Y-%m-%d %H:%i:%s') AS attendanceTableOffwork,\n" +
+            "\tDATE_FORMAT(attendance_table_offwork,'%Y-%m-%d %H:%i:%s') AS attendanceTableOffWork,\n" +
             "\tDATE_FORMAT(attendance_table_work_pm,'%Y-%m-%d %H:%i:%s') AS attendanceTableWorkPm,\n" +
-            "\tDATE_FORMAT(attendance_table_offwork_pm,'%Y-%m-%d %H:%i:%s') as  attendanceTableOffworkPm\n" +
+            "\tDATE_FORMAT(attendance_table_offwork_pm,'%Y-%m-%d %H:%i:%s') as  attendanceTableOffWorkPm\n" +
             "FROM\n" +
             "\tattendance_table \n" +
             "WHERE\n" +

+ 119 - 7
boman-web-core/src/main/java/com/boman/web/core/service/attendance/AttendanceServiceImpl.java

@@ -25,6 +25,8 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -251,7 +253,7 @@ public class AttendanceServiceImpl implements AttendanceService {
             }
         }
 
-         for (JSONObject attendance : attendanceList) {
+        for (JSONObject attendance : attendanceList) {
             if (isNotEmpty(attendance.get(ATTENDANCE_TABLE_OFFWORK)) && isEmpty(attendance.get(ATTENDANCE_TABLE_WORK))) {
                 goOffWorkTime = attendance.getTimestamp(ATTENDANCE_TABLE_OFFWORK);
             }
@@ -265,7 +267,7 @@ public class AttendanceServiceImpl implements AttendanceService {
     /**
      * 功能描述: 打卡
      *
-     * @param dto     dto
+     * @param dto dto
      * @return com.alibaba.fastjson.JSONObject
      */
     @Override
@@ -301,29 +303,139 @@ public class AttendanceServiceImpl implements AttendanceService {
 
     /**
      * 按月统计人员考勤信息
+     *
      * @param map
      * @return
      */
     @Override
-    public AjaxResult statisticsByMonth(Map<String,String> map) {
+    public AjaxResult statisticsByMonth(Map<String, String> map) {
         String date = map.get("date");
         String page = map.get("page");
         Long pageSize = Long.parseLong(map.get("pageSize"));
-        Long pageNo = (Long.parseLong(page)-1) * pageSize;
-        List<JSONObject> jsonObjects = standardlyMapper.statisticsByMonth(date,pageNo,pageSize);
+        Long pageNo = (Long.parseLong(page) - 1) * pageSize;
+        List<JSONObject> jsonObjects = standardlyMapper.statisticsByMonth(date, pageNo, pageSize);
         return AjaxResult.success(jsonObjects);
     }
 
     /**
      * 查询用户某月的上班打卡时间
+     *
      * @param date
      * @param userId
      * @return
      */
     @Override
     public AjaxResult findDate(String date, Long userId) {
-        List<JSONObject>  jsonObjects= standardlyMapper.findDate(date, userId);
-        return AjaxResult.success(jsonObjects);
+        //定义返回值
+        List<JSONObject> jsonObjectList = new ArrayList<>();
+        //根据日期 年-月和用户id查询用户当月打卡记录
+        List<JSONObject> jsonObjects = standardlyMapper.findDate(date, userId);
+        //获取某月的所有日期
+        List<String> monthEveryDays = getMonthEveryDays(date);
+        //给返回值中添加所有日期数据
+        if (monthEveryDays != null && monthEveryDays.size() > 0) {
+            for (String monthEveryDay : monthEveryDays) {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("date", monthEveryDay);
+                jsonObject.put("attendanceTableWork", "未打卡");
+                jsonObject.put("attendanceTableOffWork", "未打卡");
+                jsonObject.put("attendanceTableWorkPm", "未打卡");
+                jsonObject.put("attendanceTableOffWorkPm", "未打卡");
+                jsonObjectList.add(jsonObject);
+            }
+            if (jsonObjects.size() > 0) {
+                for (JSONObject jsonObjectDay : jsonObjectList) {
+                    String dateDay = String.valueOf(jsonObjectDay.get("date"));
+                    for (JSONObject jsonObject : jsonObjects) {
+                        Object attendanceTableWork = jsonObject.get("attendanceTableWork");
+                        if (ObjectUtils.isNotEmpty(attendanceTableWork)) {
+                            String[] s = String.valueOf(attendanceTableWork).split(" ");
+                            if (s[0].equals(dateDay)) {
+                                jsonObjectDay.put("attendanceTableWork", s[1] + " 上班打卡 已打卡");
+                            } else {
+                                break;
+                            }
+                        }
+                        Object attendanceTableOffWork = jsonObject.get("attendanceTableOffWork");
+                        if (ObjectUtils.isNotEmpty(attendanceTableOffWork)) {
+                            String[] s = String.valueOf(attendanceTableOffWork).split(" ");
+                            if (s[0].equals(dateDay)) {
+                                jsonObjectDay.put("attendanceTableOffWork", s[1] + " 下班打卡 已打卡");
+                            } else {
+                                break;
+                            }
+                        }
+                        Object attendanceTableWorkPm = jsonObject.get("attendanceTableWorkPm");
+                        if (ObjectUtils.isNotEmpty(attendanceTableWorkPm)) {
+                            String[] s = String.valueOf(attendanceTableWorkPm).split(" ");
+                            if (s[0].equals(dateDay)) {
+                                jsonObjectDay.put("attendanceTableWorkPm", s[1] + " 上班打卡 已打卡");
+                            } else {
+                                break;
+                            }
+                        }
+                        Object attendanceTableOffWorkPm = jsonObject.get("attendanceTableOffWorkPm");
+                        if (ObjectUtils.isNotEmpty(attendanceTableOffWorkPm)) {
+                            String[] s = String.valueOf(attendanceTableOffWorkPm).split(" ");
+                            if (s[0].equals(dateDay)) {
+                                jsonObjectDay.put("attendanceTableOffWorkPm", s[1] + " 下班打卡 已打卡");
+                            } else {
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        return AjaxResult.success(jsonObjectList);
+    }
+
+
+    /**
+     * 获取某年某月每一天日期
+     *
+     * @return
+     */
+    public static List<String> getMonthEveryDays(String date) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
+        List<String> arr = new ArrayList<>();
+        try {
+            Date parse = simpleDateFormat.parse(date);
+            Calendar c = Calendar.getInstance();
+            c.setTime(parse);
+            int year = c.get(Calendar.YEAR);
+            int monthInt = c.get(Calendar.MONTH) + 1;
+            int num = getDaysByYearMonth(year, monthInt);
+            for (int i = 1; i <= num; i++) {
+                String day = String.valueOf(i);
+                if (i < 10) {
+                    day = "0" + i;
+                }
+                String month = String.valueOf(monthInt);
+                if (monthInt < 10) {
+                    month = "0" + monthInt;
+                }
+                arr.add(year + "-" + month + "-" + day);
+            }
+            return arr;
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 根据年 月 获取对应的月份 天数
+     */
+    public static int getDaysByYearMonth(int year, int month) {
+        Calendar a = Calendar.getInstance();
+        a.set(Calendar.YEAR, year);
+        a.set(Calendar.MONTH, month - 1);
+        a.set(Calendar.DATE, 1);
+        a.roll(Calendar.DATE, -1);
+        int maxDate = a.get(Calendar.DATE);
+        return maxDate;
     }
 
     /**