@@ -0,0 +1,23 @@ | |||
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); | |||
} | |||
} |
@@ -0,0 +1,39 @@ | |||
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)); | |||
} | |||
} |
@@ -0,0 +1,63 @@ | |||
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)); | |||
} | |||
} |
@@ -0,0 +1,51 @@ | |||
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); | |||
} | |||
} |
@@ -0,0 +1,46 @@ | |||
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; | |||
} |
@@ -0,0 +1,22 @@ | |||
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; | |||
} |
@@ -0,0 +1,17 @@ | |||
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; | |||
} |
@@ -0,0 +1,45 @@ | |||
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; | |||
} |
@@ -0,0 +1,31 @@ | |||
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; | |||
} |
@@ -0,0 +1,26 @@ | |||
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; | |||
} |
@@ -0,0 +1,36 @@ | |||
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; | |||
} |
@@ -0,0 +1,45 @@ | |||
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; | |||
} |
@@ -0,0 +1,20 @@ | |||
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; | |||
} |
@@ -0,0 +1,11 @@ | |||
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> { | |||
} |
@@ -0,0 +1,13 @@ | |||
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> { | |||
} |
@@ -0,0 +1,13 @@ | |||
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> { | |||
} |
@@ -0,0 +1,20 @@ | |||
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> { | |||
} |
@@ -0,0 +1,11 @@ | |||
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); | |||
} |
@@ -0,0 +1,19 @@ | |||
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); | |||
} |
@@ -0,0 +1,19 @@ | |||
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); | |||
} |
@@ -0,0 +1,34 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,86 @@ | |||
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); | |||
} | |||
} |
@@ -0,0 +1,96 @@ | |||
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; | |||
} | |||
} |
@@ -0,0 +1,77 @@ | |||
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); | |||
} | |||
} |