正在编写请假模块

This commit is contained in:
2025-02-19 16:10:02 +08:00
parent 3ae103157b
commit f855833966
22 changed files with 1432 additions and 29 deletions

View File

@ -0,0 +1,88 @@
package com.ruoyi.wgz.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.LocalDate;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 日报打卡分页查询对象 wgz_daily_clock
*
* @author ruoyi
* @date 2025-02-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("日报打卡分页查询对象")
public class WgzDailyClockQueryBo extends BaseEntity {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
/** 排序列 */
@ApiModelProperty("排序列")
private String orderByColumn;
/** 排序的方向desc或者asc */
@ApiModelProperty(value = "排序的方向", example = "asc,desc")
private String isAsc;
/** 项目ID */
@ApiModelProperty("项目ID")
private Long recruitId;
/** 人员ID */
@ApiModelProperty("人员ID")
private Long userId;
/** 日报时间 */
@ApiModelProperty("日报时间")
private LocalDateTime dilyTime;
/** 日报标记 */
@ApiModelProperty("日报标记")
private Integer dailyMark;
/** 日报位置 */
@ApiModelProperty("日报位置")
private String pnchOsition;
/** 今日完成工作 */
@ApiModelProperty("今日完成工作")
private String finishToday;
/** 未完成工作 */
@ApiModelProperty("未完成工作")
private String unfinished;
/** 明日工作 */
@ApiModelProperty("明日工作")
private String workTomorrow;
/** 协调与帮助 */
@ApiModelProperty("协调与帮助")
private String coordinate;
/** 附件,多个逗号分隔 */
@ApiModelProperty("附件,多个逗号分隔")
private String attachment;
/** 审核人ID */
@ApiModelProperty("审核人ID")
private Long auditorUserId;
/** 审核状态0未读 1未审核 2已审核 */
@ApiModelProperty("审核状态0未读 1未审核 2已审核")
private String auditorType;
/** 审核意见 */
@ApiModelProperty("审核意见")
private String auditorOpinion;
/** 已读|审核时间 */
@ApiModelProperty("已读|审核时间")
private LocalDateTime auditorTime;
/** 类型0正常 1迟到 2早退 3上班缺卡 4下班缺卡 5补卡 6请假 */
@ApiModelProperty("类型0正常 1迟到 2早退 3上班缺卡 4下班缺卡 5补卡 6请假")
private String exceptionType;
}

View File

@ -0,0 +1,79 @@
package com.ruoyi.wgz.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.LocalDate;
import lombok.EqualsAndHashCode;
import java.util.Date;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 请假分页查询对象 wgz_leave
*
* @author ruoyi
* @date 2025-02-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("请假分页查询对象")
public class WgzLeaveQueryBo extends BaseEntity {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
/** 排序列 */
@ApiModelProperty("排序列")
private String orderByColumn;
/** 排序的方向desc或者asc */
@ApiModelProperty(value = "排序的方向", example = "asc,desc")
private String isAsc;
/** 项目ID */
@ApiModelProperty("项目ID")
private Long recruitId;
/** 招工主题 */
@ApiModelProperty("招工主题")
private String subject;
/** 请假类型(字典) */
@ApiModelProperty("请假类型(字典)")
private String leaveType;
/** 开始时间 */
@ApiModelProperty("开始时间")
private LocalDateTime startTime;
/** 结束时间 */
@ApiModelProperty("结束时间")
private LocalDateTime endTime;
/** 请假事由 */
@ApiModelProperty("请假事由")
private String reason;
/** 审核人ID */
@ApiModelProperty("审核人ID")
private Long auditorUserId;
/** 审核状态0待审核 1审核中 2已同意 3已拒绝 */
@ApiModelProperty("审核状态0待审核 1审核中 2已同意 3已拒绝")
private String auditorType;
/** 审核意见 */
@ApiModelProperty("审核意见")
private String auditorOpinion;
/** 同意|拒绝时间 */
@ApiModelProperty("同意|拒绝时间")
private LocalDateTime auditorTime;
/** 上班时间 */
@ApiModelProperty("上班时间")
private LocalTime workingTime;
/** 下班时间 */
@ApiModelProperty("下班时间")
private LocalTime closingTime;
}

View File

@ -6,9 +6,11 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.Year;
@Data
@NoArgsConstructor
@ -23,4 +25,5 @@ public class WgzAppAttachmentAcquisitionReq implements Serializable {
@NotNull(message = "唯一标识不能为空")
@Size(min = 1, message = "唯一标识数组必须至少包含一个元素")
private String[] specifiedAttachment;
}

View File

@ -0,0 +1,25 @@
package com.ruoyi.wgz.bo.req;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("首页-招工列表请求对象")
public class WgzAppJobListingReq extends BaseEntity {
/** 分页大小 */
@ApiModelProperty("分页大小")
private Integer pageSize;
/** 当前页数 */
@ApiModelProperty("当前页数")
private Integer pageNum;
@ApiModelProperty("创建者Id")
private Long userId;
@ApiModelProperty("招工名称")
private String recruitName;
}

View File

@ -0,0 +1,41 @@
package com.ruoyi.wgz.bo.req;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.LocalTime;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-提交请假请求对象")
public class WgzAppSubmitLeaveRes implements Serializable {
/** 请假类型(字典) */
@Excel(name = "请假类型" , readConverterExp = "字=典")
@ApiModelProperty("请假类型(字典)")
private String leaveType;
/** 开始时间 */
@Excel(name = "开始时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间")
private LocalDateTime startTime;
/** 结束时间 */
@Excel(name = "结束时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("结束时间")
private LocalDateTime endTime;
/** 请假事由 */
@Excel(name = "请假事由")
@ApiModelProperty("请假事由")
private String reason;
}

View File

@ -0,0 +1,20 @@
package com.ruoyi.wgz.bo.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-日报日历请求对象")
public class WgzAppUserDailyCalendarRes implements Serializable {
@ApiModelProperty("年月日期2025-02")
@NotBlank(message = "年月不能为空")
private String yearMonth;
}

View File

@ -0,0 +1,22 @@
package com.ruoyi.wgz.bo.res;
import com.ruoyi.wgz.bo.rests.WgzAppAttachmentAcquisitionTwo;
import com.ruoyi.wgz.bo.rests.WgzAutonymAnnex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("日报日历结构返回对象")
public class WfzUserDailyCalendarRes implements Serializable {
@ApiModelProperty("日报日历")
private Map<String, WgzAppAttachmentAcquisitionTwo> dailyCalendar;
}

View File

@ -0,0 +1,48 @@
package com.ruoyi.wgz.bo.res;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("首页-招工列表返回对象")
public class WgzAppJobListingRes implements Serializable {
/** 主键ID */
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("任务名称")
private String taskName;
@ApiModelProperty("招工名称")
private String recruitName;
@ApiModelProperty("招工地址")
private String recruitAddress;
@ApiModelProperty("招工金额")
private Long recruitAmount;
@ApiModelProperty("招工数量")
private Long recruitStaffNum;
@ApiModelProperty("招工要求")
private String recruitRequirement;
@ApiModelProperty("发布时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime createTime;
@ApiModelProperty("申请者列表")
List<BgtProjectRecruitApplyVO> applylist;
}

View File

@ -0,0 +1,30 @@
package com.ruoyi.wgz.bo.rests;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("务工者APP-实名认证·附件结构返回对象")
public class WgzAppAttachmentAcquisitionTwo implements Serializable {
@ApiModelProperty("主键自增ID")
private Long id;
@ApiModelProperty("日报状态(0正常 1未上传 2请假)")
private String status;
@ApiModelProperty("日报时间")
private LocalDateTime dilyTime;
@ApiModelProperty("日报地点")
private String pnchOsition;
}

View File

@ -0,0 +1,148 @@
package com.ruoyi.wgz.domain;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.LocalDate;
/**
* 日报打卡对象 wgz_daily_clock
*
* @author ruoyi
* @date 2025-02-18
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("wgz_daily_clock")
@ApiModel("日报打卡视图对象")
public class WgzDailyClock implements Serializable {
private static final long serialVersionUID=1L;
/** 自增ID */
@ApiModelProperty("自增ID")
@TableId(value = "id")
private Long id;
/** 项目ID */
@Excel(name = "项目ID")
@ApiModelProperty("项目ID")
private Long recruitId;
/** 人员ID */
@Excel(name = "人员ID")
@ApiModelProperty("人员ID")
private Long userId;
/** 日报时间 */
@Excel(name = "日报时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("日报时间")
private LocalDateTime dilyTime;
/** 日报标记 */
@Excel(name = "日报标记")
@ApiModelProperty("日报标记")
private Integer dailyMark;
/** 日报位置 */
@Excel(name = "日报位置")
@ApiModelProperty("日报位置")
private String pnchOsition;
/** 今日完成工作 */
@Excel(name = "今日完成工作")
@ApiModelProperty("今日完成工作")
private String finishToday;
/** 未完成工作 */
@Excel(name = "未完成工作")
@ApiModelProperty("未完成工作")
private String unfinished;
/** 明日工作 */
@Excel(name = "明日工作")
@ApiModelProperty("明日工作")
private String workTomorrow;
/** 协调与帮助 */
@Excel(name = "协调与帮助")
@ApiModelProperty("协调与帮助")
private String coordinate;
/** 附件,多个逗号分隔 */
@Excel(name = "附件,多个逗号分隔")
@ApiModelProperty("附件,多个逗号分隔")
private String attachment;
/** 审核人ID */
@Excel(name = "审核人ID")
@ApiModelProperty("审核人ID")
private Long auditorUserId;
/** 审核状态0未读 1未审核 2已审核 */
@Excel(name = "审核状态" , readConverterExp = "0=未读,1=未审核,2=已审核")
@ApiModelProperty("审核状态0未读 1未审核 2已审核")
private String auditorType;
/** 审核意见 */
@Excel(name = "审核意见")
@ApiModelProperty("审核意见")
private String auditorOpinion;
/** 已读|审核时间 */
@Excel(name = "已读|审核时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("已读|审核时间")
private LocalDateTime auditorTime;
/** 类型0正常 1迟到 2早退 3上班缺卡 4下班缺卡 5补卡 6请假 */
@Excel(name = "类型" , readConverterExp = "0=正常,1=迟到,2=早退,3=上班缺卡,4=下班缺卡,5=补卡,6=请假")
@ApiModelProperty("类型0正常 1迟到 2早退 3上班缺卡 4下班缺卡 5补卡 6请假")
private String exceptionType;
/** 删除标志0代表存在 2代表删除 */
@Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除")
@ApiModelProperty("删除标志0代表存在 2代表删除")
private String delFlag;
/** 创建者 */
@Excel(name = "创建者")
@ApiModelProperty("创建者")
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 创建时间 */
@Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 更新者 */
@Excel(name = "更新者")
@ApiModelProperty("更新者")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/** 更新时间 */
@Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/** 备注 */
@Excel(name = "备注")
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,133 @@
package com.ruoyi.wgz.domain;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.LocalDate;
/**
* 请假对象 wgz_leave
*
* @author ruoyi
* @date 2025-02-19
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("wgz_leave")
@ApiModel("请假视图对象")
public class WgzLeave implements Serializable {
private static final long serialVersionUID=1L;
/** 主键自增ID */
@ApiModelProperty("主键自增ID")
@TableId(value = "id")
private Long id;
/** 项目ID */
@Excel(name = "项目ID")
@ApiModelProperty("项目ID")
private Long recruitId;
/** 招工主题 */
@Excel(name = "招工主题")
@ApiModelProperty("招工主题")
private String subject;
/** 请假类型(字典) */
@Excel(name = "请假类型" , readConverterExp = "字=典")
@ApiModelProperty("请假类型(字典)")
private String leaveType;
/** 开始时间 */
@Excel(name = "开始时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间")
private LocalDateTime startTime;
/** 结束时间 */
@Excel(name = "结束时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("结束时间")
private LocalDateTime endTime;
/** 请假事由 */
@Excel(name = "请假事由")
@ApiModelProperty("请假事由")
private String reason;
/** 审核人ID */
@Excel(name = "审核人ID")
@ApiModelProperty("审核人ID")
private Long auditorUserId;
/** 审核状态0待审核 1审核中 2已同意 3已拒绝 */
@Excel(name = "审核状态" , readConverterExp = "0=待审核,1=审核中,2=已同意,3=已拒绝")
@ApiModelProperty("审核状态0待审核 1审核中 2已同意 3已拒绝")
private String auditorType;
/** 审核意见 */
@Excel(name = "审核意见")
@ApiModelProperty("审核意见")
private String auditorOpinion;
/** 同意|拒绝时间 */
@Excel(name = "同意|拒绝时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("同意|拒绝时间")
private LocalDateTime auditorTime;
/** 上班时间 */
@Excel(name = "上班时间")
@ApiModelProperty("上班时间")
private LocalTime workingTime;
/** 下班时间 */
@Excel(name = "下班时间")
@ApiModelProperty("下班时间")
private LocalTime closingTime;
/** 删除标志0代表存在 2代表删除 */
@Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除")
@ApiModelProperty("删除标志0代表存在 2代表删除")
private String delFlag;
/** 创建者 */
@Excel(name = "创建者")
@ApiModelProperty("创建者")
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 创建时间 */
@Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 更新者 */
@Excel(name = "更新者")
@ApiModelProperty("更新者")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/** 更新时间 */
@Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/** 备注 */
@Excel(name = "备注")
@ApiModelProperty("备注")
private String remark;
}

View File

@ -0,0 +1,18 @@
package com.ruoyi.wgz.mapper;
import com.ruoyi.wgz.domain.WgzDailyClock;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import org.apache.ibatis.annotations.CacheNamespace;
/**
* 日报打卡Mapper接口
*
* @author ruoyi
* @date 2025-02-18
*/
// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface WgzDailyClockMapper extends BaseMapperPlus<WgzDailyClock> {
}

View File

@ -0,0 +1,18 @@
package com.ruoyi.wgz.mapper;
import com.ruoyi.wgz.domain.WgzLeave;
import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus;
import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache;
import org.apache.ibatis.annotations.CacheNamespace;
/**
* 请假Mapper接口
*
* @author ruoyi
* @date 2025-02-19
*/
// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象
@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class)
public interface WgzLeaveMapper extends BaseMapperPlus<WgzLeave> {
}

View File

@ -0,0 +1,71 @@
package com.ruoyi.wgz.service;
import com.ruoyi.wgz.bo.req.WgzAppJobListingReq;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyCalendarRes;
import com.ruoyi.wgz.bo.res.WfzUserDailyCalendarRes;
import com.ruoyi.wgz.domain.WgzDailyClock;
import com.ruoyi.wgz.bo.WgzDailyClockQueryBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.validation.annotation.Validated;
import java.util.Collection;
import java.util.List;
/**
* 日报打卡Service接口
*
* @author ruoyi
* @date 2025-02-18
*/
public interface IWgzDailyClockService extends IServicePlus<WgzDailyClock> {
/**
* 查询单个
* @return
*/
WgzDailyClock queryById(Long id);
/**
* 查询列表
*/
TableDataInfo<WgzDailyClock> queryPageList(WgzDailyClockQueryBo bo);
/**
* 查询列表
*/
List<WgzDailyClock> queryList(WgzDailyClockQueryBo bo);
/**
* 根据新增业务对象插入日报打卡
* @param bo 日报打卡新增业务对象
* @return
*/
Boolean insert(WgzDailyClock bo);
/**
* 根据编辑业务对象修改日报打卡
* @param bo 日报打卡编辑业务对象
* @return
*/
Boolean update(WgzDailyClock bo);
/**
* 校验并删除数据
* @param ids 主键集合
* @param isValid 是否校验,true-删除前校验,false-不校验
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 务工者APP相关
* =================================================================================================================
* =================================================================================================================
* =================================================================================================================
*/
/**
* 日报日历
*/
WfzUserDailyCalendarRes userDailyCalendar(@Validated WgzAppUserDailyCalendarRes req);
}

View File

@ -0,0 +1,72 @@
package com.ruoyi.wgz.service;
import com.ruoyi.wgz.bo.req.WgzAppSubmitLeaveRes;
import com.ruoyi.wgz.domain.WgzLeave;
import com.ruoyi.wgz.bo.WgzLeaveQueryBo;
import com.ruoyi.common.core.mybatisplus.core.IServicePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.sun.org.apache.xpath.internal.operations.Bool;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Collection;
import java.util.List;
/**
* 请假Service接口
*
* @author ruoyi
* @date 2025-02-19
*/
public interface IWgzLeaveService extends IServicePlus<WgzLeave> {
/**
* 查询单个
* @return
*/
WgzLeave queryById(Long id);
/**
* 查询列表
*/
TableDataInfo<WgzLeave> queryPageList(WgzLeaveQueryBo bo);
/**
* 查询列表
*/
List<WgzLeave> queryList(WgzLeaveQueryBo bo);
/**
* 根据新增业务对象插入请假
* @param bo 请假新增业务对象
* @return
*/
Boolean insert(WgzLeave bo);
/**
* 根据编辑业务对象修改请假
* @param bo 请假编辑业务对象
* @return
*/
Boolean update(WgzLeave bo);
/**
* 校验并删除数据
* @param ids 主键集合
* @param isValid 是否校验,true-删除前校验,false-不校验
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* APP相关
* =================================================================================================================
* =================================================================================================================
* =================================================================================================================
*/
/*
* 提交请假申请
*/
Boolean userSubmitLeave(@Validated @RequestBody WgzAppSubmitLeaveRes req);
}

View File

@ -0,0 +1,149 @@
package com.ruoyi.wgz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.wgz.bo.req.WgzAppUserDailyCalendarRes;
import com.ruoyi.wgz.bo.res.WfzUserDailyCalendarRes;
import com.ruoyi.wgz.bo.rests.WgzAppAttachmentAcquisitionTwo;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.wgz.bo.WgzDailyClockQueryBo;
import com.ruoyi.wgz.domain.WgzDailyClock;
import com.ruoyi.wgz.mapper.WgzDailyClockMapper;
import com.ruoyi.wgz.service.IWgzDailyClockService;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
/**
* 日报打卡Service业务层处理
*
* @author ruoyi
* @date 2025-02-18
*/
@Service
public class WgzDailyClockServiceImpl extends ServicePlusImpl<WgzDailyClockMapper, WgzDailyClock> implements IWgzDailyClockService {
@Override
public WgzDailyClock queryById(Long id){
return getById(id);
}
@Override
public TableDataInfo<WgzDailyClock> queryPageList(WgzDailyClockQueryBo bo) {
Page<WgzDailyClock> result = page(PageUtils.buildPage(), buildQueryWrapper(bo));
return PageUtils.buildDataInfo(result);
}
@Override
public List<WgzDailyClock> queryList(WgzDailyClockQueryBo bo) {
return list(buildQueryWrapper(bo));
}
private LambdaQueryWrapper<WgzDailyClock> buildQueryWrapper(WgzDailyClockQueryBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WgzDailyClock> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getRecruitId() != null, WgzDailyClock::getRecruitId, bo.getRecruitId());
lqw.eq(bo.getUserId() != null, WgzDailyClock::getUserId, bo.getUserId());
lqw.eq(bo.getDilyTime() != null, WgzDailyClock::getDilyTime, bo.getDilyTime());
lqw.eq(bo.getDailyMark() != null, WgzDailyClock::getDailyMark, bo.getDailyMark());
lqw.eq(StrUtil.isNotBlank(bo.getPnchOsition()), WgzDailyClock::getPnchOsition, bo.getPnchOsition());
lqw.eq(StrUtil.isNotBlank(bo.getFinishToday()), WgzDailyClock::getFinishToday, bo.getFinishToday());
lqw.eq(StrUtil.isNotBlank(bo.getUnfinished()), WgzDailyClock::getUnfinished, bo.getUnfinished());
lqw.eq(StrUtil.isNotBlank(bo.getWorkTomorrow()), WgzDailyClock::getWorkTomorrow, bo.getWorkTomorrow());
lqw.eq(StrUtil.isNotBlank(bo.getCoordinate()), WgzDailyClock::getCoordinate, bo.getCoordinate());
lqw.eq(StrUtil.isNotBlank(bo.getAttachment()), WgzDailyClock::getAttachment, bo.getAttachment());
lqw.eq(bo.getAuditorUserId() != null, WgzDailyClock::getAuditorUserId, bo.getAuditorUserId());
lqw.eq(StrUtil.isNotBlank(bo.getAuditorType()), WgzDailyClock::getAuditorType, bo.getAuditorType());
lqw.eq(StrUtil.isNotBlank(bo.getAuditorOpinion()), WgzDailyClock::getAuditorOpinion, bo.getAuditorOpinion());
lqw.eq(bo.getAuditorTime() != null, WgzDailyClock::getAuditorTime, bo.getAuditorTime());
lqw.eq(StrUtil.isNotBlank(bo.getExceptionType()), WgzDailyClock::getExceptionType, bo.getExceptionType());
return lqw;
}
@Override
public Boolean insert(WgzDailyClock bo) {
WgzDailyClock add = BeanUtil.toBean(bo, WgzDailyClock.class);
validEntityBeforeSave(add);
return save(add);
}
@Override
public Boolean update(WgzDailyClock bo) {
WgzDailyClock update = BeanUtil.toBean(bo, WgzDailyClock.class);
validEntityBeforeSave(update);
return updateById(update);
}
/**
* 保存前的数据校验
*
* @param entity 实体类数据
*/
private void validEntityBeforeSave(WgzDailyClock entity){
//TODO 做一些数据校验,如唯一约束
}
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return removeByIds(ids);
}
/**
* 务工者APP相关
* =================================================================================================================
* =================================================================================================================
* =================================================================================================================
*/
@Override
public WfzUserDailyCalendarRes userDailyCalendar(WgzAppUserDailyCalendarRes req) {
//1、获取当月的所有日期
LocalDate currentDate = LocalDate.now();
LocalDate firstDayOfMonth = currentDate.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = currentDate.with(TemporalAdjusters.lastDayOfMonth());
List<LocalDate> dates = new ArrayList<>();
LocalDate tempDate = firstDayOfMonth;
while (!tempDate.isAfter(lastDayOfMonth)) {
dates.add(tempDate);
tempDate = tempDate.plusDays(1);
}
//2、查询当前人员指定日期的所有日报情况
QueryWrapper<WgzDailyClock> queryWrapper = new QueryWrapper<>();
queryWrapper.apply("DATE_FORMAT(dily_time, '%Y-%m') = {0}", req.getYearMonth()); // 使用 apply 方法添加自定义 SQL 条件
List<WgzDailyClock> wgzDailyClocks = baseMapper.selectList(queryWrapper);
//3、查看当前人当前月是否有请假
//4、将获取的年月与数据库中的日期进行比对然后填充数据
Map<String, WgzAppAttachmentAcquisitionTwo> fh = new HashMap<>();
dates.forEach(date -> {
wgzDailyClocks.forEach(wgzDailyClock -> {
LocalDate clockDate = wgzDailyClock.getDilyTime().toLocalDate();
//两个时间一致就填充数据;如若有请假的日期需要将状态改为请假
if (clockDate.equals(date)) {
WgzAppAttachmentAcquisitionTwo wgzAppAttachmentAcquisitionTwo = new WgzAppAttachmentAcquisitionTwo().
setStatus("0").//正常上传日志
setId(wgzDailyClock.getId()).
setDilyTime(wgzDailyClock.getDilyTime()).
setPnchOsition(wgzDailyClock.getPnchOsition());
// if (StrUtil.isNotBlank(wgzDailyClock.getDailyMark())) {
// wgzAppAttachmentAcquisitionTwo.setStatus("2") //请假
// }
fh.put(date.toString(),wgzAppAttachmentAcquisitionTwo);
}
});
});
return new WfzUserDailyCalendarRes().setDailyCalendar(fh);
}
}

View File

@ -0,0 +1,109 @@
package com.ruoyi.wgz.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.PageUtils;
import com.ruoyi.common.core.page.PagePlus;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.wgz.bo.req.WgzAppSubmitLeaveRes;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.wgz.bo.WgzLeaveQueryBo;
import com.ruoyi.wgz.domain.WgzLeave;
import com.ruoyi.wgz.mapper.WgzLeaveMapper;
import com.ruoyi.wgz.service.IWgzLeaveService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 请假Service业务层处理
*
* @author ruoyi
* @date 2025-02-19
*/
@Service
public class WgzLeaveServiceImpl extends ServicePlusImpl<WgzLeaveMapper, WgzLeave> implements IWgzLeaveService {
@Override
public WgzLeave queryById(Long id){
return getById(id);
}
@Override
public TableDataInfo<WgzLeave> queryPageList(WgzLeaveQueryBo bo) {
Page<WgzLeave> result = page(PageUtils.buildPage(), buildQueryWrapper(bo));
return PageUtils.buildDataInfo(result);
}
@Override
public List<WgzLeave> queryList(WgzLeaveQueryBo bo) {
return list(buildQueryWrapper(bo));
}
private LambdaQueryWrapper<WgzLeave> buildQueryWrapper(WgzLeaveQueryBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WgzLeave> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getRecruitId() != null, WgzLeave::getRecruitId, bo.getRecruitId());
lqw.eq(StrUtil.isNotBlank(bo.getSubject()), WgzLeave::getSubject, bo.getSubject());
lqw.eq(StrUtil.isNotBlank(bo.getLeaveType()), WgzLeave::getLeaveType, bo.getLeaveType());
lqw.eq(bo.getStartTime() != null, WgzLeave::getStartTime, bo.getStartTime());
lqw.eq(bo.getEndTime() != null, WgzLeave::getEndTime, bo.getEndTime());
lqw.eq(StrUtil.isNotBlank(bo.getReason()), WgzLeave::getReason, bo.getReason());
lqw.eq(bo.getAuditorUserId() != null, WgzLeave::getAuditorUserId, bo.getAuditorUserId());
lqw.eq(StrUtil.isNotBlank(bo.getAuditorType()), WgzLeave::getAuditorType, bo.getAuditorType());
lqw.eq(StrUtil.isNotBlank(bo.getAuditorOpinion()), WgzLeave::getAuditorOpinion, bo.getAuditorOpinion());
lqw.eq(bo.getAuditorTime() != null, WgzLeave::getAuditorTime, bo.getAuditorTime());
lqw.eq(bo.getWorkingTime() != null, WgzLeave::getWorkingTime, bo.getWorkingTime());
lqw.eq(bo.getClosingTime() != null, WgzLeave::getClosingTime, bo.getClosingTime());
return lqw;
}
@Override
public Boolean insert(WgzLeave bo) {
WgzLeave add = BeanUtil.toBean(bo, WgzLeave.class);
validEntityBeforeSave(add);
return save(add);
}
@Override
public Boolean update(WgzLeave bo) {
WgzLeave update = BeanUtil.toBean(bo, WgzLeave.class);
validEntityBeforeSave(update);
return updateById(update);
}
/**
* 保存前的数据校验
*
* @param entity 实体类数据
*/
private void validEntityBeforeSave(WgzLeave entity){
//TODO 做一些数据校验,如唯一约束
}
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return removeByIds(ids);
}
/**
* APP相关
* =================================================================================================================
* =================================================================================================================
* =================================================================================================================
*/
@Override
public Boolean userSubmitLeave(WgzAppSubmitLeaveRes req) {
//1、
return null;
}
}