获取考勤规则
This commit is contained in:
parent
18ab3c1693
commit
272875ea64
@ -354,4 +354,30 @@ public class DateUtils {
|
|||||||
JSONObject jsonObject = JSONUtil.parseObj(json);
|
JSONObject jsonObject = JSONUtil.parseObj(json);
|
||||||
return jsonObject.getJSONArray("days");
|
return jsonObject.getJSONArray("days");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将1-7的数字转换为对应的中文星期表示
|
||||||
|
* @param dayOfWeek 数字形式的星期几,1-7分别代表星期一到星期日
|
||||||
|
* @return 中文表示的星期几
|
||||||
|
*/
|
||||||
|
public static String convertToChineseWeekday(int dayOfWeek) {
|
||||||
|
switch (dayOfWeek) {
|
||||||
|
case 1:
|
||||||
|
return "星期一";
|
||||||
|
case 2:
|
||||||
|
return "星期二";
|
||||||
|
case 3:
|
||||||
|
return "星期三";
|
||||||
|
case 4:
|
||||||
|
return "星期四";
|
||||||
|
case 5:
|
||||||
|
return "星期五";
|
||||||
|
case 6:
|
||||||
|
return "星期六";
|
||||||
|
case 7:
|
||||||
|
return "星期日";
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("输入的数字必须在1-7之间,代表星期一到星期日");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,6 +38,15 @@ public class AttendanceController {
|
|||||||
return success(vo);
|
return success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/getRules/{groupId}")
|
||||||
|
@Operation(summary = "获取考勤规则")
|
||||||
|
public CommonResult<AttendanceRulesVO> getRules(@PathVariable Long groupId) {
|
||||||
|
AttendanceRulesVO vo = attendanceService.getRules(groupId);
|
||||||
|
return success(vo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/statisticsByDay")
|
@GetMapping("/statisticsByDay")
|
||||||
@Operation(summary = "统计按天")
|
@Operation(summary = "统计按天")
|
||||||
public CommonResult<Map<String, AttendanceStatusByDayVO>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) {
|
public CommonResult<Map<String, AttendanceStatusByDayVO>> statisticsByDay(@ModelAttribute AttendanceStatisticsByDayDTO dto) {
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.admin.attendance.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Accessors(chain = true)
|
||||||
|
public class AttendanceRulesVO {
|
||||||
|
@Schema(description = "上班规则 - 一条数据一行 前端记得换行")
|
||||||
|
private List<WorkRules> workRules;
|
||||||
|
@Schema(description = "办公地点")
|
||||||
|
private String officeLocation;
|
||||||
|
@Schema(description = "是否允许外勤打卡 0否 1是")
|
||||||
|
private Integer fieldworkFlag;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public static class WorkRules {
|
||||||
|
@Schema(description = "星期几/第几天")
|
||||||
|
private String indexStr;
|
||||||
|
@Schema(description = "规则")
|
||||||
|
private String rule;
|
||||||
|
@Schema(description = "是否当天")
|
||||||
|
private boolean flag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.system.controller.admin.group.vo;
|
package cn.iocoder.yudao.module.system.controller.admin.group.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
@ -33,6 +34,9 @@ public class AttendanceGroupPageReqVO extends PageParam {
|
|||||||
@Schema(description = "纬度")
|
@Schema(description = "纬度")
|
||||||
private String latitude;
|
private String latitude;
|
||||||
|
|
||||||
|
@Schema(description = "地址")
|
||||||
|
private String address;
|
||||||
|
|
||||||
@Schema(description = "范围(米)")
|
@Schema(description = "范围(米)")
|
||||||
private Integer scope;
|
private Integer scope;
|
||||||
|
|
||||||
|
@ -41,6 +41,11 @@ public class AttendanceGroupRespVO {
|
|||||||
@ExcelProperty("纬度")
|
@ExcelProperty("纬度")
|
||||||
private String latitude;
|
private String latitude;
|
||||||
|
|
||||||
|
@Schema(description = "地址")
|
||||||
|
@ExcelProperty("地址")
|
||||||
|
private String address;
|
||||||
|
|
||||||
|
|
||||||
@Schema(description = "范围(米)")
|
@Schema(description = "范围(米)")
|
||||||
@ExcelProperty("范围(米)")
|
@ExcelProperty("范围(米)")
|
||||||
private Integer scope;
|
private Integer scope;
|
||||||
|
@ -32,6 +32,9 @@ public class AttendanceGroupSaveReqVO {
|
|||||||
@Schema(description = "纬度")
|
@Schema(description = "纬度")
|
||||||
private String latitude;
|
private String latitude;
|
||||||
|
|
||||||
|
@Schema(description = "地址")
|
||||||
|
private String address;
|
||||||
|
|
||||||
@Schema(description = "范围(米)")
|
@Schema(description = "范围(米)")
|
||||||
private Integer scope;
|
private Integer scope;
|
||||||
|
|
||||||
|
@ -55,6 +55,10 @@ public class AttendanceGroupDO extends BaseDO {
|
|||||||
* 纬度
|
* 纬度
|
||||||
*/
|
*/
|
||||||
private String latitude;
|
private String latitude;
|
||||||
|
/**
|
||||||
|
* 地址
|
||||||
|
*/
|
||||||
|
private String address;
|
||||||
/**
|
/**
|
||||||
* 范围(米)
|
* 范围(米)
|
||||||
*/
|
*/
|
||||||
|
@ -85,7 +85,16 @@ public interface AttendanceService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前登录用户所属的考勤组以及是否具有管理员权限
|
* 获取当前登录用户所属的考勤组以及是否具有管理员权限
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<AttendanceGroupSystemVO> getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights();
|
List<AttendanceGroupSystemVO> getTheAttendanceGroupToWhichTheCurrentlyLoggedInUserBelongsAndWhetherTheyHaveAdministratorRights();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取考勤规则
|
||||||
|
*
|
||||||
|
* @param groupId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
AttendanceRulesVO getRules(Long groupId);
|
||||||
}
|
}
|
@ -737,6 +737,18 @@ public class AttendanceServiceImpl implements AttendanceService {
|
|||||||
return attendanceGroupSystemVOS;
|
return attendanceGroupSystemVOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AttendanceRulesVO getRules(Long groupId) {
|
||||||
|
AttendanceRulesVO vo = new AttendanceRulesVO();
|
||||||
|
AttendanceGroupDO group = attendanceGroupService.getGroup(groupId);
|
||||||
|
PunchService punchService = punchHandler.getResource(AttendanceGroupDO.getCodeByType(group.getType()));
|
||||||
|
List<AttendanceRulesVO.WorkRules> workRules = punchService.getRule(groupId);
|
||||||
|
vo.setFieldworkFlag(group.getFieldworkFlag());
|
||||||
|
vo.setWorkRules(workRules);
|
||||||
|
vo.setOfficeLocation(group.getAddress());
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 外勤计算
|
* 外勤计算
|
||||||
*
|
*
|
||||||
|
@ -67,6 +67,8 @@ public interface AttendanceFixedService {
|
|||||||
*/
|
*/
|
||||||
AttendanceFixedDO getByGroupIdAndWeek(Long attendanceGroupId, Integer week);
|
AttendanceFixedDO getByGroupIdAndWeek(Long attendanceGroupId, Integer week);
|
||||||
|
|
||||||
|
List<AttendanceFixedDO> getByGroupId(Long attendanceGroupId);
|
||||||
|
|
||||||
List<AttendanceFixedDO> getByGroupIdAndWeek(List<Long> attendanceGroupIds, Integer week);
|
List<AttendanceFixedDO> getByGroupIdAndWeek(List<Long> attendanceGroupIds, Integer week);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2,17 +2,21 @@ package cn.iocoder.yudao.module.system.service.attendance.fixed;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.Constants;
|
import cn.iocoder.yudao.framework.common.Constants;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO;
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO;
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendanceRulesVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedRespVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.fixed.vo.AttendanceFixedSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceGroupShiftVO;
|
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceGroupShiftVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.fixed.AttendanceFixedDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.fixed.AttendanceFixedDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.attendance.fixed.AttendanceFixedMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.attendance.fixed.AttendanceFixedMapper;
|
||||||
import cn.iocoder.yudao.module.system.service.attendance.AttendanceService;
|
import cn.iocoder.yudao.module.system.service.attendance.AttendanceService;
|
||||||
import cn.iocoder.yudao.module.system.service.attendance.groupshift.AttendanceGroupShiftService;
|
import cn.iocoder.yudao.module.system.service.attendance.groupshift.AttendanceGroupShiftService;
|
||||||
@ -20,6 +24,7 @@ import cn.iocoder.yudao.module.system.service.attendance.punch.PunchService;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
@ -48,6 +53,8 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch
|
|||||||
private AttendanceService attendanceService;
|
private AttendanceService attendanceService;
|
||||||
@Resource
|
@Resource
|
||||||
private AttendanceGroupShiftService attendanceGroupShiftService;
|
private AttendanceGroupShiftService attendanceGroupShiftService;
|
||||||
|
@Resource
|
||||||
|
private StringRedisTemplate stringRedisTemplate;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@ -141,6 +148,12 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttendanceFixedDO> getByGroupId(Long attendanceGroupId) {
|
||||||
|
return attendanceFixedMapper.selectList(new LambdaQueryWrapper<AttendanceFixedDO>()
|
||||||
|
.eq(attendanceGroupId != null, AttendanceFixedDO::getAttendanceGroupId, attendanceGroupId));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AttendanceFixedDO> getByGroupIdAndWeek(List<Long> attendanceGroupIds, Integer week) {
|
public List<AttendanceFixedDO> getByGroupIdAndWeek(List<Long> attendanceGroupIds, Integer week) {
|
||||||
return attendanceFixedMapper.selectList(new LambdaQueryWrapper<AttendanceFixedDO>()
|
return attendanceFixedMapper.selectList(new LambdaQueryWrapper<AttendanceFixedDO>()
|
||||||
@ -224,5 +237,36 @@ public class AttendanceFixedServiceImpl implements AttendanceFixedService, Punch
|
|||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttendanceRulesVO.WorkRules> getRule(Long attendanceGroupId) {
|
||||||
|
List<AttendanceRulesVO.WorkRules> rules = new ArrayList<>();
|
||||||
|
List<AttendanceFixedDO> list = this.getByGroupId(attendanceGroupId);
|
||||||
|
List<Long> attendanceGroupShiftIds = list.stream().map(AttendanceFixedDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
|
List<AttendanceGroupShiftVO> vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds);
|
||||||
|
Map<Long, AttendanceGroupShiftVO> map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a));
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
for (AttendanceFixedDO attendanceFixedDO : list) {
|
||||||
|
AttendanceRulesVO.WorkRules workRules = new AttendanceRulesVO.WorkRules();
|
||||||
|
String weekday = DateUtils.convertToChineseWeekday(attendanceFixedDO.getWeekTime());
|
||||||
|
workRules.setIndexStr(weekday);
|
||||||
|
workRules.setFlag(false);
|
||||||
|
if (now.getDayOfWeek().getValue() == attendanceFixedDO.getWeekTime()) {
|
||||||
|
workRules.setFlag(true);
|
||||||
|
}
|
||||||
|
if (attendanceFixedDO.getAttendanceGroupShiftId() == null) {
|
||||||
|
workRules.setRule("休息");
|
||||||
|
} else {
|
||||||
|
AttendanceGroupShiftVO attendanceGroupShiftVOS = map.get(attendanceFixedDO.getAttendanceGroupShiftId());
|
||||||
|
List<String> itemRule = new ArrayList<>();
|
||||||
|
for (AttendanceGroupShiftItemDO attendanceGroupShiftItemDO : attendanceGroupShiftVOS.getAttendanceGroupShiftItemDOList()) {
|
||||||
|
itemRule.add(attendanceGroupShiftItemDO.getBeginTime() + "-" + attendanceGroupShiftItemDO.getEndTime());
|
||||||
|
}
|
||||||
|
String rule = String.join(",", itemRule);
|
||||||
|
workRules.setRule(rule);
|
||||||
|
}
|
||||||
|
rules.add(workRules);
|
||||||
|
}
|
||||||
|
return rules;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -267,6 +267,7 @@ public class AttendanceGroupShiftServiceImpl implements AttendanceGroupShiftServ
|
|||||||
AttendanceGroupShiftVO attendanceGroupShiftVO = BeanUtils.toBean(item, AttendanceGroupShiftVO.class);
|
AttendanceGroupShiftVO attendanceGroupShiftVO = BeanUtils.toBean(item, AttendanceGroupShiftVO.class);
|
||||||
List<AttendanceGroupShiftItemDO> attendanceGroupShiftItemDOS = map.get(item.getId());
|
List<AttendanceGroupShiftItemDO> attendanceGroupShiftItemDOS = map.get(item.getId());
|
||||||
if (CollectionUtil.isNotEmpty(attendanceGroupShiftItemDOS)) {
|
if (CollectionUtil.isNotEmpty(attendanceGroupShiftItemDOS)) {
|
||||||
|
attendanceGroupShiftItemDOS = attendanceGroupShiftItemDOS.stream().sorted(Comparator.comparing(AttendanceGroupShiftItemDO::getLevel)).collect(Collectors.toList());
|
||||||
attendanceGroupShiftVO.setAttendanceGroupShiftItemDOList(attendanceGroupShiftItemDOS);
|
attendanceGroupShiftVO.setAttendanceGroupShiftItemDOList(attendanceGroupShiftItemDOS);
|
||||||
}
|
}
|
||||||
vos.add(attendanceGroupShiftVO);
|
vos.add(attendanceGroupShiftVO);
|
||||||
|
@ -2,6 +2,9 @@ package cn.iocoder.yudao.module.system.service.attendance.punch;
|
|||||||
|
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO;
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO;
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendanceRulesVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 打卡 Service 接口
|
* 打卡 Service 接口
|
||||||
@ -17,4 +20,12 @@ public interface PunchService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
AttendancePunchPageVO getPunchPage(AttendancePunchPageDTO dto);
|
AttendancePunchPageVO getPunchPage(AttendancePunchPageDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取规则
|
||||||
|
*
|
||||||
|
* @param attendanceGroupId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<AttendanceRulesVO.WorkRules> getRule(Long attendanceGroupId);
|
||||||
}
|
}
|
@ -67,6 +67,8 @@ public interface AttendanceSchedulingService {
|
|||||||
*/
|
*/
|
||||||
AttendanceSchedulingDO getSchedulingByIndexDay(Long attendanceGroupId, Integer indexDay);
|
AttendanceSchedulingDO getSchedulingByIndexDay(Long attendanceGroupId, Integer indexDay);
|
||||||
|
|
||||||
|
List<AttendanceSchedulingDO> getSchedulingByGroupId(Long attendanceGroupId);
|
||||||
|
|
||||||
Integer getCycleDay(Long attendanceGroupId);
|
Integer getCycleDay(Long attendanceGroupId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,11 +8,13 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO;
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.dto.AttendancePunchPageDTO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO;
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendancePunchPageVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.attendance.vo.AttendanceRulesVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceGroupShiftVO;
|
import cn.iocoder.yudao.module.system.controller.admin.groupshift.vo.AttendanceGroupShiftVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingPageReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingPageReqVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingRespVO;
|
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingRespVO;
|
||||||
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingSaveReqVO;
|
import cn.iocoder.yudao.module.system.controller.admin.scheduling.vo.AttendanceSchedulingSaveReqVO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.group.AttendanceGroupDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.groupshiftitem.AttendanceGroupShiftItemDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.attendance.scheduling.AttendanceSchedulingDO;
|
||||||
import cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling.AttendanceSchedulingMapper;
|
import cn.iocoder.yudao.module.system.dal.mysql.attendance.scheduling.AttendanceSchedulingMapper;
|
||||||
import cn.iocoder.yudao.module.system.service.attendance.AttendanceService;
|
import cn.iocoder.yudao.module.system.service.attendance.AttendanceService;
|
||||||
@ -143,6 +145,12 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttendanceSchedulingDO> getSchedulingByGroupId(Long attendanceGroupId) {
|
||||||
|
return schedulingMapper.selectList(new LambdaQueryWrapper<AttendanceSchedulingDO>()
|
||||||
|
.eq(AttendanceSchedulingDO::getAttendanceGroupId, attendanceGroupId));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getCycleDay(Long attendanceGroupId) {
|
public Integer getCycleDay(Long attendanceGroupId) {
|
||||||
return Math.toIntExact(schedulingMapper.selectCount(new LambdaQueryWrapper<AttendanceSchedulingDO>()
|
return Math.toIntExact(schedulingMapper.selectCount(new LambdaQueryWrapper<AttendanceSchedulingDO>()
|
||||||
@ -224,5 +232,40 @@ public class AttendanceSchedulingServiceImpl implements AttendanceSchedulingServ
|
|||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttendanceRulesVO.WorkRules> getRule(Long attendanceGroupId) {
|
||||||
|
List<AttendanceSchedulingDO> list = this.getSchedulingByGroupId(attendanceGroupId);
|
||||||
|
|
||||||
|
List<AttendanceRulesVO.WorkRules> rules = new ArrayList<>();
|
||||||
|
List<Long> attendanceGroupShiftIds = list.stream().map(AttendanceSchedulingDO::getAttendanceGroupShiftId).filter(Objects::nonNull).collect(Collectors.toList());
|
||||||
|
List<AttendanceGroupShiftVO> vos = attendanceGroupShiftService.listByShiftIds(attendanceGroupShiftIds);
|
||||||
|
Map<Long, AttendanceGroupShiftVO> map = vos.stream().collect(Collectors.toMap(AttendanceGroupShiftVO::getId, a -> a));
|
||||||
|
//获取到当天是第几天
|
||||||
|
String schedulingKey = Constants.SCHEDULING + Constants.UNDERLINE + attendanceGroupId;
|
||||||
|
String indexDayObj = stringRedisTemplate.opsForValue().get(schedulingKey);
|
||||||
|
|
||||||
|
for (AttendanceSchedulingDO attendanceSchedulingDO : list) {
|
||||||
|
AttendanceRulesVO.WorkRules workRules = new AttendanceRulesVO.WorkRules();
|
||||||
|
String indexDay = "第" + attendanceSchedulingDO.getIndexDay() + "天";
|
||||||
|
workRules.setIndexStr(indexDay);
|
||||||
|
workRules.setFlag(false);
|
||||||
|
if (StrUtil.isNotEmpty(indexDayObj) && Integer.parseInt(indexDayObj) == attendanceSchedulingDO.getIndexDay()) {
|
||||||
|
workRules.setFlag(true);
|
||||||
|
}
|
||||||
|
if (attendanceSchedulingDO.getAttendanceGroupShiftId() == null) {
|
||||||
|
workRules.setRule("休息");
|
||||||
|
} else {
|
||||||
|
AttendanceGroupShiftVO attendanceGroupShiftVOS = map.get(attendanceSchedulingDO.getAttendanceGroupShiftId());
|
||||||
|
List<String> itemRule = new ArrayList<>();
|
||||||
|
for (AttendanceGroupShiftItemDO attendanceGroupShiftItemDO : attendanceGroupShiftVOS.getAttendanceGroupShiftItemDOList()) {
|
||||||
|
itemRule.add(attendanceGroupShiftItemDO.getBeginTime() + "-" + attendanceGroupShiftItemDO.getEndTime());
|
||||||
|
}
|
||||||
|
String rule = String.join(",", itemRule);
|
||||||
|
workRules.setRule(rule);
|
||||||
|
}
|
||||||
|
rules.add(workRules);
|
||||||
|
}
|
||||||
|
return rules;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user