|
@@ -25,6 +25,8 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.sql.Timestamp;
|
|
import java.sql.Timestamp;
|
|
|
|
+import java.text.ParseException;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
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))) {
|
|
if (isNotEmpty(attendance.get(ATTENDANCE_TABLE_OFFWORK)) && isEmpty(attendance.get(ATTENDANCE_TABLE_WORK))) {
|
|
goOffWorkTime = attendance.getTimestamp(ATTENDANCE_TABLE_OFFWORK);
|
|
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
|
|
* @return com.alibaba.fastjson.JSONObject
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
@@ -301,29 +303,139 @@ public class AttendanceServiceImpl implements AttendanceService {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 按月统计人员考勤信息
|
|
* 按月统计人员考勤信息
|
|
|
|
+ *
|
|
* @param map
|
|
* @param map
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public AjaxResult statisticsByMonth(Map<String,String> map) {
|
|
|
|
|
|
+ public AjaxResult statisticsByMonth(Map<String, String> map) {
|
|
String date = map.get("date");
|
|
String date = map.get("date");
|
|
String page = map.get("page");
|
|
String page = map.get("page");
|
|
Long pageSize = Long.parseLong(map.get("pageSize"));
|
|
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);
|
|
return AjaxResult.success(jsonObjects);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 查询用户某月的上班打卡时间
|
|
* 查询用户某月的上班打卡时间
|
|
|
|
+ *
|
|
* @param date
|
|
* @param date
|
|
* @param userId
|
|
* @param userId
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
public AjaxResult findDate(String date, Long userId) {
|
|
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;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|