|
@@ -1,14 +1,21 @@
|
|
|
package com.ruoyi.system.service.impl;
|
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysRole;
|
|
|
+import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
+import com.ruoyi.common.utils.PageUtils;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
import com.ruoyi.system.domain.ClockUserInfo;
|
|
|
+import com.ruoyi.system.domain.DutySchedule;
|
|
|
import com.ruoyi.system.domain.OrderFood;
|
|
|
import com.ruoyi.system.mapper.ClockUserInfoMapper;
|
|
|
+import com.ruoyi.system.mapper.DutyScheduleMapper;
|
|
|
import com.ruoyi.system.mapper.OrderFoodMapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -31,6 +38,8 @@ public class ClockRecordServiceImpl implements IClockRecordService
|
|
|
private ClockUserInfoMapper clockUserInfoMapper;
|
|
|
@Autowired
|
|
|
private OrderFoodMapper orderFoodMapper;
|
|
|
+ @Autowired
|
|
|
+ private DutyScheduleMapper dutyScheduleMapper;
|
|
|
|
|
|
/**
|
|
|
* 查询打卡记录
|
|
@@ -53,6 +62,17 @@ public class ClockRecordServiceImpl implements IClockRecordService
|
|
|
@Override
|
|
|
public List<ClockRecord> selectClockRecordList(ClockRecord clockRecord)
|
|
|
{
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ List<SysRole> roles = user.getRoles();
|
|
|
+ boolean bl = true;
|
|
|
+ for (SysRole role : roles) {
|
|
|
+ if("admin".equals(role.getRoleKey()) || "administrators".equals(role.getRoleKey())){
|
|
|
+ bl = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(bl){
|
|
|
+ clockRecord.setUserId(user.getUserId());
|
|
|
+ }
|
|
|
return clockRecordMapper.selectClockRecordList(clockRecord);
|
|
|
}
|
|
|
|
|
@@ -65,6 +85,20 @@ public class ClockRecordServiceImpl implements IClockRecordService
|
|
|
@Override
|
|
|
public int insertClockRecord(ClockRecord clockRecord)
|
|
|
{
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ clockRecord.setUserId(user.getUserId());
|
|
|
+ clockRecord.setUserName(user.getNickName());
|
|
|
+ clockRecord.setPhonenumber(user.getPhonenumber());
|
|
|
+ /*String[] dt = clockRecord.getRecordDt().split(" ");
|
|
|
+ clockRecord.setRecordDate(dt[0]);
|
|
|
+ clockRecord.setRecordTime(dt[1]);*/
|
|
|
+ //判断传入的时间是周几
|
|
|
+ try {
|
|
|
+ int dayForWeek = DateUtils.dayForWeek(clockRecord.getRecordDate());
|
|
|
+ clockRecord.setWeek(String.valueOf(dayForWeek));
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
clockRecord.setCreateTime(DateUtils.getNowDate());
|
|
|
return clockRecordMapper.insertClockRecord(clockRecord);
|
|
|
}
|
|
@@ -114,18 +148,19 @@ public class ClockRecordServiceImpl implements IClockRecordService
|
|
|
resultMap.put("name",clockUserInfo.getUserName());
|
|
|
//查询最新打卡数据
|
|
|
ClockRecord clockRecordNew = clockRecordMapper.selectClockRecordNew(clockRecord);
|
|
|
- resultMap.put("time",clockRecordNew.getRecordTime());
|
|
|
+ resultMap.put("time",clockRecordNew.getRecordDate());
|
|
|
//todo 上下班时间
|
|
|
- resultMap.put("workTime","");
|
|
|
+ DutySchedule dutySchedule = dutyScheduleMapper.selectDutyScheduleByDutyNew();
|
|
|
+ resultMap.put("workTime",dutySchedule.getStartWorkTime()+" - "+dutySchedule.getEndWorkTime());
|
|
|
//查询查询月打卡数据
|
|
|
List<ClockRecord> clockRecords = clockRecordMapper.selectOrderFoodListRl(clockRecord);
|
|
|
//按日期分类
|
|
|
Map<String, List<ClockRecord>> clockTime = new HashMap<>();
|
|
|
if (clockRecords != null && clockRecords.size() > 0){
|
|
|
- clockTime = clockRecords.stream().collect(Collectors.groupingBy(ClockRecord::getRecordTime));
|
|
|
+ clockTime = clockRecords.stream().collect(Collectors.groupingBy(ClockRecord::getRecordDate));
|
|
|
}
|
|
|
//查询传入月所有日期
|
|
|
- List<String> dayList = DateUtils.getDay(DateUtils.parseDate(clockRecord.getRecordTime()));
|
|
|
+ List<String> dayList = DateUtils.getDay(DateUtils.parseDate(clockRecord.getRecordDate()));
|
|
|
//写入数据
|
|
|
List<Map> mapList = new ArrayList<>();
|
|
|
if (dayList.size()> 0){
|
|
@@ -133,26 +168,36 @@ public class ClockRecordServiceImpl implements IClockRecordService
|
|
|
Map<String,Object> map = new HashMap<>(5);
|
|
|
map.put("date",day);
|
|
|
map.put("am","未打卡");
|
|
|
- //上午打卡标识 1:打卡,2:未打卡
|
|
|
- map.put("amex","2");
|
|
|
+ //上午打卡标识 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("amex","5");
|
|
|
map.put("pm","未打卡");
|
|
|
- //下午打卡标识 1:打卡,2:未打卡
|
|
|
- map.put("pmex","2");
|
|
|
+ //下午打卡标识 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("pmex","5");
|
|
|
if (clockTime.size() > 0){
|
|
|
List<ClockRecord> clockRecordList = clockTime.get(day);
|
|
|
if (clockRecordList != null && clockRecordList.size() > 0){
|
|
|
- for (ClockRecord clock : clockRecordList) {
|
|
|
- if(StringUtils.isNotEmpty(clock.getWorkingTime())){
|
|
|
- map.put("am",clock.getWorkingTime());
|
|
|
- //上午打卡表示 1:打卡,2:未打卡
|
|
|
- map.put("amex","1");
|
|
|
- }
|
|
|
- if(StringUtils.isNotEmpty(clock.getDutyTime())){
|
|
|
- map.put("pm",clock.getDutyTime());
|
|
|
- //下午打卡表示 1:打卡,2:未打卡
|
|
|
- map.put("pmex","1");
|
|
|
- }
|
|
|
+ clockRecordList = clockRecordList.stream().sorted(Comparator.comparing(ClockRecord::getRecordTime).reversed()).collect(Collectors.toList());
|
|
|
+ if("1".equals(clockRecordList.get(clockRecordList.size()-1).getType())){
|
|
|
+ map.put("am",clockRecordList.get(clockRecordList.size()-1).getRecordTime());
|
|
|
+ //上午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("amex",clockRecordList.get(clockRecordList.size()-1).getIsOutwork());
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(clockRecordList.size()-1).getType())){
|
|
|
+ map.put("pm",clockRecordList.get(clockRecordList.size()-1).getRecordTime());
|
|
|
+ //下午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("pmex",clockRecordList.get(clockRecordList.size()-1).getIsOutwork());
|
|
|
}
|
|
|
+ if("1".equals(clockRecordList.get(0).getType())){
|
|
|
+ map.put("am",clockRecordList.get(0).getRecordTime());
|
|
|
+ //上午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("amex",clockRecordList.get(0).getIsOutwork());
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(0).getType())){
|
|
|
+ map.put("pm",clockRecordList.get(0).getRecordTime());
|
|
|
+ //下午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("pmex",clockRecordList.get(0).getIsOutwork());
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
mapList.add(map);
|
|
@@ -171,22 +216,24 @@ public class ClockRecordServiceImpl implements IClockRecordService
|
|
|
//查询当天应打卡人数
|
|
|
int dkzs = 0;
|
|
|
ClockRecord clockRecord = new ClockRecord();
|
|
|
- clockRecord.setRecordTime(day);
|
|
|
+ clockRecord.setRecordDate(day);
|
|
|
List<ClockRecord> clockRecords = clockRecordMapper.selectClockRecordList(clockRecord);
|
|
|
+ Map<String, List<ClockRecord>> clockUserId = clockRecords.stream().collect(Collectors.groupingBy(ClockRecord::getUserName));
|
|
|
+ //查询打卡人员
|
|
|
+ ClockUserInfo clockUserInfo = new ClockUserInfo();
|
|
|
+ clockUserInfo.setDelFlag("0");
|
|
|
+ List<ClockUserInfo> clockUserInfoList = clockUserInfoMapper.selectClockUserInfoList(clockUserInfo);
|
|
|
//已打卡人数
|
|
|
int ydk = 0;
|
|
|
//未打卡人数
|
|
|
int wdk = 0;
|
|
|
- if(clockRecords!=null && clockRecords.size()>0){
|
|
|
- dkzs = clockRecords.size();
|
|
|
- for (ClockRecord record : clockRecords) {
|
|
|
- if(StringUtils.isNotEmpty(record.getWorkingTime()) || StringUtils.isNotEmpty(record.getDutyTime())){
|
|
|
- ydk++;
|
|
|
- }else{
|
|
|
- wdk++;
|
|
|
- }
|
|
|
- }
|
|
|
+ if(clockUserId!=null && clockUserId.size()>0){
|
|
|
+ ydk = clockUserId.size();
|
|
|
+ }
|
|
|
+ if(clockUserInfoList!=null && clockUserInfoList.size()>0){
|
|
|
+ wdk = clockUserInfoList.size()-clockUserId.size();
|
|
|
}
|
|
|
+
|
|
|
//订餐统计
|
|
|
OrderFood orderFood = new OrderFood();
|
|
|
orderFood.setOrderFoodTime(DateUtils.parseDate(day));
|
|
@@ -216,4 +263,173 @@ public class ClockRecordServiceImpl implements IClockRecordService
|
|
|
resultMap.put("dcDinner",dcDinner);
|
|
|
return AjaxResult.success(resultMap);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AjaxResult selectClockRecordListInfo(ClockRecord clockRecord) {
|
|
|
+ Map<String, Object> resultMap = new HashMap<>();
|
|
|
+
|
|
|
+ DutySchedule dutySchedule = dutyScheduleMapper.selectDutyScheduleByDutyNew();
|
|
|
+ resultMap.put("workTime",dutySchedule.getStartWorkTime()+" - "+dutySchedule.getEndWorkTime());
|
|
|
+
|
|
|
+ //查询查询月打卡数据
|
|
|
+ List<ClockRecord> clockRecords = clockRecordMapper.selectClockRecordList(clockRecord);
|
|
|
+ //按日期分类
|
|
|
+ Map<String, List<ClockRecord>> clockTime = new HashMap<>();
|
|
|
+ if (clockRecords != null && clockRecords.size() > 0){
|
|
|
+ clockTime = clockRecords.stream().collect(Collectors.groupingBy(ClockRecord::getRecordDate));
|
|
|
+ }
|
|
|
+ //查询传入月所有日期
|
|
|
+ List<Date> dayList = DateUtils.getDatesBetween(clockRecord.getStartTime(),clockRecord.getEndTime());
|
|
|
+ //写入数据
|
|
|
+ List<Map> mapList = new ArrayList<>();
|
|
|
+ if (dayList.size()> 0){
|
|
|
+ for (Date day : dayList) {
|
|
|
+ Map<String,Object> map = new HashMap<>(5);
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ map.put("date",format.format(day));
|
|
|
+ map.put("am","未打卡");
|
|
|
+ //上午打卡标识 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("amex","5");
|
|
|
+ map.put("pm","未打卡");
|
|
|
+ //下午打卡标识 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("pmex","5");
|
|
|
+ if (clockTime.size() > 0){
|
|
|
+ List<ClockRecord> clockRecordList = clockTime.get(format.format(day));
|
|
|
+ if (clockRecordList != null && clockRecordList.size() > 0){
|
|
|
+ clockRecordList = clockRecordList.stream().sorted(Comparator.comparing(ClockRecord::getRecordTime).reversed()).collect(Collectors.toList());
|
|
|
+ if("1".equals(clockRecordList.get(clockRecordList.size()-1).getType())){
|
|
|
+ map.put("am",clockRecordList.get(clockRecordList.size()-1).getRecordTime());
|
|
|
+ //上午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("amex",clockRecordList.get(clockRecordList.size()-1).getIsOutwork());
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(clockRecordList.size()-1).getType())){
|
|
|
+ map.put("pm",clockRecordList.get(clockRecordList.size()-1).getRecordTime());
|
|
|
+ //下午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("pmex",clockRecordList.get(clockRecordList.size()-1).getIsOutwork());
|
|
|
+ }
|
|
|
+ if("1".equals(clockRecordList.get(0).getType())){
|
|
|
+ map.put("am",clockRecordList.get(0).getRecordTime());
|
|
|
+ //上午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("amex",clockRecordList.get(0).getIsOutwork());
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(0).getType())){
|
|
|
+ map.put("pm",clockRecordList.get(0).getRecordTime());
|
|
|
+ //下午打卡表示 1:正常打卡,2:外勤打卡,3:迟到,4:早退,5:未打卡
|
|
|
+ map.put("pmex",clockRecordList.get(0).getIsOutwork());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ mapList.add(map);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //日历数据
|
|
|
+ resultMap.put("rlData",mapList);
|
|
|
+ return AjaxResult.success(resultMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AjaxResult personage(ClockRecord clockRecord) {
|
|
|
+ SysUser user = SecurityUtils.getLoginUser().getUser();
|
|
|
+ clockRecord.setUserId(user.getUserId());
|
|
|
+ Map<String, Object> resultMap = statistics(clockRecord);
|
|
|
+ return AjaxResult.success(resultMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Map<String,Object>> all(ClockUserInfo clockUserInfo) {
|
|
|
+ List<Map<String,Object>> listMap = new ArrayList<>();
|
|
|
+ startPage();
|
|
|
+ List<ClockUserInfo> clockUserList = clockUserInfoMapper.selectClockUserInfoList(clockUserInfo);
|
|
|
+ clearPage();
|
|
|
+ for (ClockUserInfo userInfo : clockUserList) {
|
|
|
+ ClockRecord clockRecord = new ClockRecord();
|
|
|
+ clockRecord.setUserId(userInfo.getUserId());
|
|
|
+ clockRecord.setRecordDate(clockUserInfo.getRecordDate()+"-01");
|
|
|
+ Map<String, Object> resultMap = statistics(clockRecord);
|
|
|
+ resultMap.put("name",userInfo.getUserName());
|
|
|
+ listMap.add(resultMap);
|
|
|
+ }
|
|
|
+ return listMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 设置请求分页数据
|
|
|
+ */
|
|
|
+ protected void startPage() {
|
|
|
+ PageUtils.startPage();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 清理分页的线程变量
|
|
|
+ */
|
|
|
+ protected void clearPage() {
|
|
|
+ PageUtils.clearPage();
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Object> statistics(ClockRecord clockRecord) {
|
|
|
+ Map<String, Object> resultMap = new HashMap<>();
|
|
|
+ //迟到
|
|
|
+ int cd = 0;
|
|
|
+ //早退
|
|
|
+ int zt = 0;
|
|
|
+ //外勤
|
|
|
+ int wq = 0;
|
|
|
+
|
|
|
+ if(StringUtils.isEmpty(clockRecord.getRecordDate())){
|
|
|
+ clockRecord.setRecordDate(DateUtils.getDate());
|
|
|
+ }
|
|
|
+ //查询查询月打卡数据
|
|
|
+ List<ClockRecord> clockRecords = clockRecordMapper.selectClockRecordList(clockRecord);
|
|
|
+ //按日期分类
|
|
|
+ Map<String, List<ClockRecord>> clockTime = new HashMap<>();
|
|
|
+ if (clockRecords != null && clockRecords.size() > 0){
|
|
|
+ clockTime = clockRecords.stream().collect(Collectors.groupingBy(ClockRecord::getRecordDate));
|
|
|
+ }
|
|
|
+ for (String key : clockTime.keySet()) {
|
|
|
+ List<ClockRecord> clockRecordList = clockTime.get(key);
|
|
|
+ clockRecordList = clockRecordList.stream().sorted(Comparator.comparing(ClockRecord::getRecordTime).reversed()).collect(Collectors.toList());
|
|
|
+ for (ClockRecord record : clockRecordList) {
|
|
|
+ if("1".equals(clockRecordList.get(clockRecordList.size()-1).getType())){
|
|
|
+ if("3".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ cd++;
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ wq++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(clockRecordList.size()-1).getType())){
|
|
|
+ if("4".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ zt++;
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ wq++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if("1".equals(clockRecordList.get(0).getType())){
|
|
|
+ if("3".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ cd++;
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ wq++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(0).getType())){
|
|
|
+ if("4".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ zt++;
|
|
|
+ }
|
|
|
+ if("2".equals(clockRecordList.get(clockRecordList.size()-1).getIsOutwork())){
|
|
|
+ wq++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ resultMap.put("cd",cd);
|
|
|
+ resultMap.put("zt",zt);
|
|
|
+ resultMap.put("wq",wq);
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|