package com.ruoyi; | |||||
import java.time.LocalDate; | |||||
import java.time.LocalDateTime; | |||||
import java.time.LocalTime; | |||||
/** | |||||
* @author zhouwenhao | |||||
* @date 2025/6/11 | |||||
* @dec 描述 | |||||
*/ | |||||
public class Test { | |||||
public static void main(String[] args) { | |||||
// 获取当前日期 | |||||
LocalDateTime today = LocalDateTime.now(); | |||||
// 获取当前月的第一天和最后一天 | |||||
LocalDateTime firstDayOfMonth = today.withDayOfMonth(1).with(LocalTime.MIN); | |||||
LocalDateTime lastDayOfMonth = today.plusMonths(1).withDayOfMonth(1).with(LocalTime.MIN).minusSeconds(1); | |||||
// 打印结果 | |||||
System.out.println("Start of month: " + firstDayOfMonth); | |||||
System.out.println("End of month: " + lastDayOfMonth); | |||||
} | |||||
} |
package com.ruoyi.zhushi.controller; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.domain.R; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.zhushi.entity.DkAttendanceGroupDTO; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfigDTO; | |||||
import com.ruoyi.zhushi.service.DkAttendanceGroupService; | |||||
import com.ruoyi.zhushi.service.DkConfigService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import java.util.List; | |||||
/** | |||||
* 打卡配置控制台 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/dk/attendanceGroup") | |||||
@Slf4j | |||||
public class DkAttendanceGroupController extends BaseController { | |||||
@Autowired | |||||
private DkAttendanceGroupService dkAttendanceGroupService; | |||||
@PostMapping("/add") | |||||
public R<Void> add(@RequestBody DkAttendanceGroupDTO dkAttendanceGroupDTO) { | |||||
return toAjax(dkAttendanceGroupService.add(dkAttendanceGroupDTO)); | |||||
} | |||||
} |
package com.ruoyi.zhushi.controller; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.domain.R; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.core.validate.AddGroup; | |||||
import com.ruoyi.common.core.validate.EditGroup; | |||||
import com.ruoyi.common.utils.poi.ExcelUtil; | |||||
import com.ruoyi.system.domain.bo.ZsOperationWarnresultBo; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfigDTO; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import com.ruoyi.zhushi.mapper.DkConfigMapper; | |||||
import com.ruoyi.zhushi.service.DkConfigService; | |||||
import com.ruoyi.zhushi.service.DkService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import javax.servlet.http.HttpServletResponse; | |||||
import javax.validation.constraints.NotEmpty; | |||||
import java.util.Arrays; | |||||
import java.util.List; | |||||
/** | |||||
* 打卡配置控制台 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/dk/config") | |||||
@Slf4j | |||||
public class DkConfigController extends BaseController { | |||||
@Autowired | |||||
private DkConfigService dkConfigService; | |||||
// 主页面查询 | |||||
@GetMapping("/list") | |||||
public List<DkCheckInConfigDTO> list(DkCheckInConfigDTO dkCheckInConfigDTO, PageQuery pageQuery) { | |||||
return dkConfigService.queryList(); | |||||
} | |||||
@PostMapping("/add") | |||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody DkCheckInConfigDTO dkCheckInConfigDTO) { | |||||
return toAjax(dkConfigService.addConfig(dkCheckInConfigDTO)); | |||||
} | |||||
@DeleteMapping("/deleteConfig/{id}") | |||||
public R<Void> remove(@PathVariable Long id) { | |||||
return toAjax(dkConfigService.deleteConfig(id)); | |||||
} | |||||
@PutMapping("/updateConfig") | |||||
public R<Void> edit(@RequestBody DkCheckInConfigDTO bo) { | |||||
return toAjax(dkConfigService.updateConfig(bo)); | |||||
} | |||||
} |
package com.ruoyi.zhushi.controller; | |||||
import com.ruoyi.common.core.controller.BaseController; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.common.utils.poi.ExcelUtil; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import com.ruoyi.zhushi.service.DkService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.GetMapping; | |||||
import org.springframework.web.bind.annotation.PostMapping; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
import javax.servlet.http.HttpServletResponse; | |||||
import java.util.List; | |||||
/** | |||||
* 打卡控制台 | |||||
*/ | |||||
@Validated | |||||
@RequiredArgsConstructor | |||||
@RestController | |||||
@RequestMapping("/dk/record") | |||||
@Slf4j | |||||
public class DkController extends BaseController { | |||||
@Autowired | |||||
private DkService dkService; | |||||
// 主页面查询 | |||||
@GetMapping("/list") | |||||
public TableDataInfo<DkCheckInRecordDTO> list(DkCheckInRecordDTO dkCheckInRecordDTO, PageQuery pageQuery) { | |||||
return dkService.queryPageList(dkCheckInRecordDTO, pageQuery); | |||||
} | |||||
/** | |||||
* 导出结果列表 | |||||
*/ | |||||
@PostMapping("/export") | |||||
public void export(DkCheckInRecordDTO bo, HttpServletResponse response) { | |||||
List<DkCheckInRecordDTO> list = dkService.queryList(bo); | |||||
ExcelUtil.exportExcel(list, "打卡结果", DkCheckInRecordDTO.class, response); | |||||
} | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import io.swagger.models.auth.In; | |||||
import lombok.Data; | |||||
@Data | |||||
@TableName("dk_check_in_attendance_team") | |||||
public class DkAttendanceGroup extends BaseEntity { | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private int id; | |||||
@TableField(value = "`name`") | |||||
private String name; | |||||
@TableField(value = "`description`") | |||||
private String description; | |||||
@TableField(value = "`work_days`") | |||||
private String workDays; | |||||
@TableField(value = "`work_start_time`") | |||||
private String workStartTime; | |||||
@TableField(value = "`work_end_time`") | |||||
private String workEndTime; | |||||
@TableField(value = "`allow_late`") | |||||
private Boolean allowLate; | |||||
@TableField(value = "`late_range`") | |||||
private Integer lateRange; | |||||
@TableField(value = "`allow_early`") | |||||
private Boolean allowEarly; | |||||
@TableField(value = "`early_range`") | |||||
private Integer earlyRange; | |||||
@TableField(value = "area_id") | |||||
private int areaId; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
@Data | |||||
@TableName("dk_check_in_attendance_team_and_user") | |||||
public class DkAttendanceGroupAndUser extends BaseEntity { | |||||
@TableId(value = "id", type = IdType.ASSIGN_ID) | |||||
private int id; | |||||
@TableField(value = "`attendance_team_id`") | |||||
private int attendanceTeamId; | |||||
@TableField(value = "`user_id`") | |||||
private int userId; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
@Data | |||||
public class DkAttendanceGroupAndUserDTO extends BaseEntity { | |||||
private int id; | |||||
private int attendanceTeamId; | |||||
private int configId; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
@Data | |||||
public class DkAttendanceGroupDTO extends BaseEntity { | |||||
private int id; | |||||
private String name; | |||||
private String description; | |||||
private List<String> workDays; | |||||
// private List<String> workDaysList; | |||||
private String workStartTime; | |||||
private String workEndTime; | |||||
private Boolean allowLate; | |||||
private Integer lateRange; | |||||
private Boolean allowEarly; | |||||
private Integer earlyRange; | |||||
private int areaId; | |||||
private List<DkUsers> members; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
@Data | |||||
@TableName("dk_check_in_config") | |||||
public class DkCheckInConfig extends BaseEntity { | |||||
@TableId(value = "id", type = IdType.ASSIGN_ID) | |||||
private String id; | |||||
@TableField(value = "`name`") | |||||
private String name; | |||||
@TableField(value = "`radius`") | |||||
private Integer radius; | |||||
@TableField(value = "`enable_status`") | |||||
private String enableStatus; | |||||
@TableField(value = "`lng`") | |||||
private String lng; | |||||
@TableField(value = "`lat`") | |||||
private String lat; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
@Data | |||||
public class DkCheckInConfigDTO extends BaseEntity { | |||||
private String id; | |||||
private String name; | |||||
private Integer radius; | |||||
private String enableStatus; | |||||
private String lng; | |||||
private String lat; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
import java.time.LocalDateTime; | |||||
@Data | |||||
@TableName("dk_check_in_record") | |||||
public class DkCheckInRecord extends BaseEntity { | |||||
@TableId(value = "id", type = IdType.ASSIGN_ID) | |||||
private String id; | |||||
@TableField(value = "`sys_user_id`") | |||||
private String sysUserId; | |||||
@TableField(value = "`sys_user_name`") | |||||
private String sysUserName; | |||||
@TableField(value = "`check_in_time`") | |||||
private LocalDateTime checkInTime; | |||||
@TableField(value = "`latitude`") | |||||
private String latitude; | |||||
@TableField(value = "`longitude`") | |||||
private String longitude; | |||||
@TableField(value = "`check_in_status`") | |||||
private String checkInStatus; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | |||||
import com.alibaba.excel.annotation.ExcelProperty; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableField; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
import java.time.LocalDate; | |||||
import java.time.LocalDateTime; | |||||
@Data | |||||
@ExcelIgnoreUnannotated | |||||
public class DkCheckInRecordDTO extends BaseEntity { | |||||
@TableId(value = "id", type = IdType.ASSIGN_ID) | |||||
// @ExcelProperty(value = "主键ID") | |||||
private String id; | |||||
@TableField(value = "`sys_user_id`") | |||||
// @ExcelProperty(value = "用户id") | |||||
private String sysUserId; | |||||
@TableField(value = "`sys_user_name`") | |||||
@ExcelProperty(value = "用户姓名") | |||||
private String sysUserName; | |||||
@TableField(value = "`check_in_time`") | |||||
@ExcelProperty(value = "打卡时间") | |||||
private LocalDateTime checkInTime; | |||||
@TableField(value = "`latitude`") | |||||
private String latitude; | |||||
@TableField(value = "`longitude`") | |||||
private String longitude; | |||||
@TableField(value = "`check_in_status`") | |||||
@ExcelProperty(value = "打卡状态") | |||||
private String checkInStatus; | |||||
private String exportRange; | |||||
} |
package com.ruoyi.zhushi.entity; | |||||
import com.ruoyi.common.core.domain.BaseEntity; | |||||
import lombok.Data; | |||||
@Data | |||||
public class DkUsers extends BaseEntity { | |||||
private int id; | |||||
private String name; | |||||
private String position; | |||||
private String employeeId; | |||||
private String department; | |||||
} |
package com.ruoyi.zhushi.mapper; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
import com.ruoyi.zhushi.entity.DkAttendanceGroupAndUser; | |||||
import com.ruoyi.zhushi.entity.DkAttendanceGroupAndUserDTO; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
@Mapper | |||||
public interface DkAttendanceGroupAndUserMapper extends BaseMapperPlus<DkAttendanceGroupAndUserMapper, DkAttendanceGroupAndUser, DkAttendanceGroupAndUserDTO> { | |||||
} |
package com.ruoyi.zhushi.mapper; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
import com.ruoyi.zhushi.entity.DkAttendanceGroup; | |||||
import com.ruoyi.zhushi.entity.DkAttendanceGroupDTO; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfig; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfigDTO; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
@Mapper | |||||
public interface DkAttendanceGroupMapper extends BaseMapperPlus<DkAttendanceGroupMapper, DkAttendanceGroup, DkAttendanceGroupDTO> { | |||||
} |
package com.ruoyi.zhushi.mapper; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfig; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfigDTO; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecord; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
@Mapper | |||||
public interface DkConfigMapper extends BaseMapperPlus<DkConfigMapper, DkCheckInConfig, DkCheckInConfigDTO> { | |||||
} |
package com.ruoyi.zhushi.mapper; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import com.ruoyi.common.core.mapper.BaseMapperPlus; | |||||
import com.ruoyi.system.domain.ZsOperationWarnresult; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnresultVo; | |||||
import com.ruoyi.system.mapper.ZsOperationWarnresultMapper; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecord; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import com.ruoyi.zhushi.entity.ProductRanking; | |||||
import org.apache.ibatis.annotations.Mapper; | |||||
import org.apache.ibatis.annotations.Param; | |||||
import org.apache.ibatis.annotations.Select; | |||||
import java.util.List; | |||||
@Mapper | |||||
public interface DkMapper extends BaseMapperPlus<DkMapper, DkCheckInRecord, DkCheckInRecordDTO> { | |||||
} |
package com.ruoyi.zhushi.service; | |||||
import com.ruoyi.zhushi.entity.DkAttendanceGroupDTO; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfigDTO; | |||||
import java.util.List; | |||||
public interface DkAttendanceGroupService { | |||||
public int add(DkAttendanceGroupDTO dkAttendanceGroupDTO); | |||||
} |
package com.ruoyi.zhushi.service; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfigDTO; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import java.util.List; | |||||
public interface DkConfigService { | |||||
public List<DkCheckInConfigDTO> queryList(); | |||||
public boolean addConfig(DkCheckInConfigDTO dkCheckInConfigDTO); | |||||
public int deleteConfig(long id); | |||||
public int updateConfig(DkCheckInConfigDTO dkCheckInConfigDTO); | |||||
} |
package com.ruoyi.zhushi.service; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.system.domain.bo.ZsOperationWarnresultBo; | |||||
import com.ruoyi.system.domain.vo.ZsOperationWarnresultVo; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecord; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import com.ruoyi.zhushi.entity.ProductRanking; | |||||
import java.util.List; | |||||
public interface DkService { | |||||
TableDataInfo<DkCheckInRecordDTO> queryPageList(DkCheckInRecordDTO dkCheckInRecordDTO, PageQuery pageQuery); | |||||
List<DkCheckInRecordDTO> queryList(DkCheckInRecordDTO bo); | |||||
} |
package com.ruoyi.zhushi.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.ruoyi.zhushi.entity.*; | |||||
import com.ruoyi.zhushi.mapper.DkAttendanceGroupAndUserMapper; | |||||
import com.ruoyi.zhushi.mapper.DkAttendanceGroupMapper; | |||||
import com.ruoyi.zhushi.service.DkAttendanceGroupService; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
@Service | |||||
public class DkAttendanceGroupServiceImpl implements DkAttendanceGroupService { | |||||
@Autowired | |||||
private DkAttendanceGroupMapper dkAttendanceGroupMapper; | |||||
@Autowired | |||||
private DkAttendanceGroupAndUserMapper dkAttendanceGroupAndUserMapper; | |||||
@Override | |||||
public int add(DkAttendanceGroupDTO dkAttendanceGroupDTO) { | |||||
DkAttendanceGroup dkAttendanceGroup = BeanUtil.toBean(dkAttendanceGroupDTO, DkAttendanceGroup.class); | |||||
dkAttendanceGroupMapper.insertOrUpdate(dkAttendanceGroup); | |||||
dkAttendanceGroupDTO.getMembers().forEach(e -> { | |||||
DkAttendanceGroupAndUser dkAttendanceGroupAndUser = new DkAttendanceGroupAndUser(); | |||||
dkAttendanceGroupAndUser.setAttendanceTeamId(dkAttendanceGroup.getId()); | |||||
dkAttendanceGroupAndUser.setUserId(e.getId()); | |||||
dkAttendanceGroupAndUserMapper.insertOrUpdate(dkAttendanceGroupAndUser); | |||||
}); | |||||
return 1; | |||||
} | |||||
} |
package com.ruoyi.zhushi.service.impl; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.system.domain.ZsBanner; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfig; | |||||
import com.ruoyi.zhushi.entity.DkCheckInConfigDTO; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecord; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import com.ruoyi.zhushi.mapper.DkConfigMapper; | |||||
import com.ruoyi.zhushi.mapper.DkMapper; | |||||
import com.ruoyi.zhushi.service.DkConfigService; | |||||
import com.ruoyi.zhushi.service.DkService; | |||||
import com.ruoyi.zhushi.util.TimeUtils; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import java.text.SimpleDateFormat; | |||||
import java.time.LocalDate; | |||||
import java.time.LocalDateTime; | |||||
import java.time.LocalTime; | |||||
import java.util.Date; | |||||
import java.util.List; | |||||
import java.util.stream.Collectors; | |||||
@Service | |||||
public class DkConfigServiceImpl implements DkConfigService { | |||||
@Autowired | |||||
private DkConfigMapper dkConfigMapper; | |||||
@Override | |||||
public List<DkCheckInConfigDTO> queryList() { | |||||
List<DkCheckInConfig> dkCheckInConfigs = dkConfigMapper.selectList(); | |||||
List<DkCheckInConfigDTO> dkCheckInConfigDTOS = dkCheckInConfigs.stream() | |||||
.map(dkCheckInConfig -> { | |||||
DkCheckInConfigDTO dkCheckInConfigDTO = new DkCheckInConfigDTO(); | |||||
dkCheckInConfigDTO.setId(dkCheckInConfig.getId()); | |||||
dkCheckInConfigDTO.setName(dkCheckInConfig.getName()); | |||||
dkCheckInConfigDTO.setRadius(dkCheckInConfig.getRadius()); | |||||
dkCheckInConfigDTO.setEnableStatus(dkCheckInConfig.getEnableStatus()); | |||||
dkCheckInConfigDTO.setLng(dkCheckInConfig.getLng()); | |||||
dkCheckInConfigDTO.setLat(dkCheckInConfig.getLat()); | |||||
// 这里需要返回DTO对象 | |||||
return dkCheckInConfigDTO; | |||||
}) | |||||
.collect(Collectors.toList()); | |||||
// 返回转换后的DTO列表,而不是null | |||||
return dkCheckInConfigDTOS; | |||||
} | |||||
@Override | |||||
public boolean addConfig(DkCheckInConfigDTO dkCheckInConfigDTO) { | |||||
DkCheckInConfig dkCheckInConfig = BeanUtil.toBean(dkCheckInConfigDTO, DkCheckInConfig.class); | |||||
// DkCheckInConfig dkCheckInConfig = new DkCheckInConfig(); | |||||
// dkCheckInConfig.setAreaName(dkCheckInConfigDTO.getAreaName()); | |||||
// dkCheckInConfig.setCheckInRadious(dkCheckInConfigDTO.getCheckInRadious()); | |||||
// dkCheckInConfig.setEnableStatus(dkCheckInConfigDTO.getEnableStatus()); | |||||
// dkCheckInConfig.setLatitude(dkCheckInConfigDTO.getLatitude()); | |||||
// dkCheckInConfig.setLongitude(dkCheckInConfigDTO.getLongitude()); | |||||
// dkCheckInConfig.setCreateTime(new Date()); | |||||
// dkCheckInConfig.setUpdateTime(new Date()); | |||||
// dkCheckInConfig.setCreateBy(dkCheckInConfigDTO.getCreateBy()); | |||||
return dkConfigMapper.insertOrUpdate(dkCheckInConfig); | |||||
} | |||||
@Override | |||||
public int deleteConfig(long id) { | |||||
return dkConfigMapper.deleteById(id); | |||||
} | |||||
@Override | |||||
public int updateConfig(DkCheckInConfigDTO dkCheckInConfigDTO) { | |||||
DkCheckInConfig dkCheckInConfig = new DkCheckInConfig(); | |||||
dkCheckInConfig.setId(dkCheckInConfigDTO.getId()); | |||||
dkCheckInConfig.setEnableStatus(dkCheckInConfigDTO.getEnableStatus()); | |||||
return dkConfigMapper.updateById(dkCheckInConfig); | |||||
} | |||||
} |
package com.ruoyi.zhushi.service.impl; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ruoyi.common.core.domain.PageQuery; | |||||
import com.ruoyi.common.core.page.TableDataInfo; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecord; | |||||
import com.ruoyi.zhushi.entity.DkCheckInRecordDTO; | |||||
import com.ruoyi.zhushi.mapper.DkMapper; | |||||
import com.ruoyi.zhushi.service.DkService; | |||||
import com.ruoyi.zhushi.util.TimeUtils; | |||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Service; | |||||
import java.text.SimpleDateFormat; | |||||
import java.time.LocalDate; | |||||
import java.time.LocalDateTime; | |||||
import java.time.LocalTime; | |||||
import java.util.Date; | |||||
import java.util.List; | |||||
@Service | |||||
public class DkServiceImpl implements DkService { | |||||
@Autowired | |||||
private DkMapper dkMapper; | |||||
public String getTime() { | |||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |||||
Date currentDate = new Date(); | |||||
return sdf.format(currentDate); | |||||
} | |||||
@Override | |||||
public TableDataInfo<DkCheckInRecordDTO> queryPageList(DkCheckInRecordDTO dkCheckInRecordDTO, PageQuery pageQuery) { | |||||
LambdaQueryWrapper<DkCheckInRecord> queryWrapper = buildQueryWrapper(dkCheckInRecordDTO); | |||||
Page<DkCheckInRecordDTO> result = dkMapper.selectVoPage(pageQuery.build(), queryWrapper); | |||||
return TableDataInfo.build(result); | |||||
} | |||||
private LambdaQueryWrapper<DkCheckInRecord> buildQueryWrapper(DkCheckInRecordDTO dkCheckInRecordDTO) { | |||||
LambdaQueryWrapper<DkCheckInRecord> queryWrapper = Wrappers.lambdaQuery(); | |||||
queryWrapper.eq(null != dkCheckInRecordDTO.getSysUserName() ,DkCheckInRecord::getSysUserName, dkCheckInRecordDTO.getSysUserName()); | |||||
queryWrapper.eq(null != dkCheckInRecordDTO.getCheckInTime(), DkCheckInRecord::getCheckInTime, dkCheckInRecordDTO.getCheckInTime()); | |||||
queryWrapper.eq(null != dkCheckInRecordDTO.getCheckInStatus(), DkCheckInRecord::getCheckInStatus, dkCheckInRecordDTO.getCheckInStatus()); | |||||
// queryWrapper.eq(null != dkCheckInRecordDTO.getExportRange(), DkCheckInRecord::getExportRange, dkCheckInRecordDTO.getExportRange()); | |||||
if("day".equals(dkCheckInRecordDTO.getExportRange())){ | |||||
queryWrapper.between(DkCheckInRecord::getCheckInTime, TimeUtils.getStartTime(), TimeUtils.getEndTime()); | |||||
} | |||||
if("month".equals(dkCheckInRecordDTO.getExportRange())){ | |||||
queryWrapper.between(DkCheckInRecord::getCheckInTime, TimeUtils.getFirstDayOfMonth(), TimeUtils.getLastDayOfMonth()); | |||||
} | |||||
queryWrapper.orderByDesc(DkCheckInRecord::getSysUserName).orderByDesc(DkCheckInRecord::getCheckInTime); | |||||
return queryWrapper; | |||||
} | |||||
public LocalDateTime getStartTime() { | |||||
LocalDate today = LocalDate .now(); | |||||
// 定义一天的开始和结束时间 | |||||
LocalTime startTime = LocalTime.of(0, 0, 0); // 00:00:00 | |||||
LocalDateTime startOfDay = today.atTime(startTime); | |||||
return startOfDay; | |||||
} | |||||
public LocalDateTime getEndTime() { | |||||
LocalDate today = LocalDate .now(); | |||||
// 定义一天的开始和结束时间 | |||||
LocalTime endTime = LocalTime.of(23, 59, 59); // 23:59:59 | |||||
LocalDateTime endOfDay = today.atTime(endTime); | |||||
return endOfDay; | |||||
} | |||||
/** | |||||
* 查询预警结果列表 | |||||
*/ | |||||
@Override | |||||
public List<DkCheckInRecordDTO> queryList(DkCheckInRecordDTO dkCheckInRecordDTO) { | |||||
LambdaQueryWrapper<DkCheckInRecord> queryWrapper = buildQueryWrapper(dkCheckInRecordDTO); | |||||
List<DkCheckInRecordDTO> dkCheckInRecordDTOS = dkMapper.selectVoList(queryWrapper); | |||||
dkCheckInRecordDTOS.forEach(dk -> { | |||||
if("0".equals(dk.getCheckInStatus())){ | |||||
dk.setCheckInStatus("正常"); | |||||
} | |||||
if("1".equals(dk.getCheckInStatus())){ | |||||
dk.setCheckInStatus("迟到"); | |||||
} | |||||
if("2".equals(dk.getCheckInStatus())){ | |||||
dk.setCheckInStatus("缺卡"); | |||||
} | |||||
}); | |||||
return dkCheckInRecordDTOS; | |||||
} | |||||
} |
package com.ruoyi.zhushi.util; | |||||
import java.text.SimpleDateFormat; | |||||
import java.time.LocalDate; | |||||
import java.time.LocalDateTime; | |||||
import java.time.LocalTime; | |||||
import java.time.ZoneId; | |||||
import java.time.format.DateTimeFormatter; | |||||
import java.util.Date; | |||||
public class TimeUtils { | |||||
public static String getStartTime() { | |||||
LocalDate today = LocalDate.now(); | |||||
// 定义一天的开始和结束时间 | |||||
LocalTime startTime = LocalTime.of(0, 0, 0); // 00:00:00 | |||||
LocalDateTime startOfDay = today.atTime(startTime); | |||||
// 格式化输出 | |||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | |||||
String startOfDayStr = startOfDay.format(formatter); | |||||
return startOfDayStr; | |||||
} | |||||
public static String getEndTime() { | |||||
LocalDate today = LocalDate.now(); | |||||
// 定义一天的开始和结束时间 | |||||
LocalTime endTime = LocalTime.of(23, 59, 59); // 23:59:59 | |||||
LocalDateTime endOfDay = today.atTime(endTime); | |||||
// 格式化输出 | |||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | |||||
String endOfDayStr = endOfDay.format(formatter); | |||||
return endOfDayStr ; | |||||
} | |||||
// 获取当月开始时间 | |||||
public static Date getMonthStart() { | |||||
LocalDateTime startOfMonth = LocalDateTime.now() | |||||
.withDayOfMonth(1) | |||||
.with(LocalTime.MIN); | |||||
return Date.from(startOfMonth.atZone(ZoneId.systemDefault()).toInstant()); | |||||
} | |||||
// 获取当月结束时间 | |||||
public static Date getMonthEnd() { | |||||
LocalDateTime endOfMonth = LocalDateTime.now() | |||||
.plusMonths(1) | |||||
.withDayOfMonth(1) | |||||
.with(LocalTime.MIN) | |||||
.minusSeconds(1); | |||||
return Date.from(endOfMonth.atZone(ZoneId.systemDefault()).toInstant()); | |||||
} | |||||
// 格式化日期 | |||||
private static String formatDate(Date date, DateTimeFormatter formatter) { | |||||
LocalDateTime localDateTime = date.toInstant() | |||||
.atZone(ZoneId.systemDefault()) | |||||
.toLocalDateTime(); | |||||
return localDateTime.format(formatter); | |||||
} | |||||
public static String getFirstDayOfMonth() { | |||||
Date monthStart = getMonthStart(); | |||||
// 格式化输出 | |||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | |||||
return formatDate(monthStart, formatter); | |||||
} | |||||
public static String getLastDayOfMonth() { | |||||
Date monthEnd = getMonthEnd(); | |||||
// 格式化输出 | |||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); | |||||
return formatDate(monthEnd, formatter); | |||||
} | |||||
} |