正在编写请假模块
This commit is contained in:
		@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										133
									
								
								ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzLeave.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzLeave.java
									
									
									
									
									
										Normal 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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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> {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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> {
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -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;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user