正在编写请假模块

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

@ -1,34 +1,33 @@
package com.ruoyi.web.controller.wgz.controller;
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitQueryDTO;
import com.ruoyi.bgt.domain.vo.BgtProjectRecruitVO;
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
import com.ruoyi.common.bo.AnnexQueryBo;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.domain.Annex;
import com.ruoyi.common.service.IAnnexService;
import com.ruoyi.system.service.ISysDictTypeService;
import com.ruoyi.wgz.bo.res.WgzAppGetTestPaperRes;
import com.ruoyi.wgz.bo.res.WgzAppSubmitATestPaperRes;
import com.ruoyi.wgz.bo.res.*;
import com.ruoyi.wgz.bo.rests.WgzAppGetTestPaperThree;
import com.ruoyi.wgz.bo.rests.WgzAppGetTestPaperTwo;
import com.ruoyi.wgz.bo.rests.WgzAutonymAnnex;
import com.ruoyi.wgz.bo.req.*;
import com.ruoyi.wgz.bo.res.WgzAppAttachmentAcquisitionRes;
import com.ruoyi.wgz.bo.res.WgzAppPersonalBasicInformationRes;
import com.ruoyi.wgz.domain.WgzQuestionsConfiguration;
import com.ruoyi.wgz.service.IWgzQuestionBankService;
import com.ruoyi.wgz.service.IWgzQuestionSaveService;
import com.ruoyi.wgz.service.IWgzQuestionsConfigurationService;
import com.ruoyi.wgz.service.IWgzUserService;
import com.ruoyi.wgz.service.*;
import com.sun.org.apache.xpath.internal.operations.Bool;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
@ -38,7 +37,7 @@ import java.util.List;
* @author ruoyi
* @date 2025-02-14
*/
@Api(value = "APP务工者接口", tags = {"APP务工者接口管理"})
@Api(value = "APP务工者接口", tags = {"务工者-APP接口"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@ -62,22 +61,48 @@ public class WgzAppController {
@Autowired
private IWgzQuestionSaveService iWgzQuestionSaveService;
@Autowired
private IBgtProjectRecruitService iBgtProjectRecruitService;
@Autowired
private IWgzDailyClockService iWgzDailyClockService;
@Autowired
private IWgzLeaveService iWgzLeaveService;
/**
* 【注册】务工者注册
*/
@ApiOperation("APP务工者注册")
@ApiOperation("APP务工者-注册")
@PreAuthorize("@ss.hasPermi('wgzApp:user:register')")
@PostMapping("/wgzRegister")
public AjaxResult<Boolean> userRegister(@Validated @RequestBody WgzAppUserRegisterReq bo) {
return AjaxResult.success(iWgzUserService.userRegister(bo));
}
/**
* 【首页】【首页界面】招工列表
*/
@ApiOperation("首页-招工列表")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userJobListing')")
@GetMapping("/WgzUserJobListing")
public AjaxResult<WgzAppJobListingRes> userJobListing(@Validated WgzAppJobListingReq req) {
//1、请求转换
BgtProjectRecruitQueryDTO dto = new BgtProjectRecruitQueryDTO();
BeanUtils.copyProperties(req,dto);
//2、查询招工列表信息
TableDataInfo<BgtProjectRecruitVO> info = iBgtProjectRecruitService.appQueryPageList(dto);
//3、将招工信息转换
WgzAppJobListingRes wgzAppJobListingRes = new WgzAppJobListingRes();
BeanUtils.copyProperties(info,wgzAppJobListingRes);
return AjaxResult.success(wgzAppJobListingRes);
}
/**
* 【我的】【个人基本信息】修改用户头像
*/
@ApiOperation("APP务工者-修改用户头像")
@ApiOperation("我的-修改用户头像")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userModifyingUserProfilePicture')")
@PutMapping("/wgzUserModifyingUserProfilePicture")
public AjaxResult<Boolean> userModifyingUserProfilePicture(@Validated @RequestBody WgzAppModifyingUserProfilePictureReq req) {
@ -87,38 +112,27 @@ public class WgzAppController {
/**
* 【我的】【个人基本信息】查询基础用户信息(还未带附件信息)
*/
@ApiOperation("APP务工者-个人基本信息(还未带附件信息)")
@ApiOperation("我的-个人基本信息(还未带附件信息)")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userPersonalBasicInformation')")
@GetMapping("/wgzUserPersonalBasicInformation")
public AjaxResult<WgzAppPersonalBasicInformationRes> userPersonalBasicInformation(@Validated WgzAppPersonalBasicInformationReq req) {
return AjaxResult.success(iWgzUserService.userPersonalBasicInformation(req));
}
// /**
// * 【我的】【实名认证】实名认证·删除附件
// */
// @ApiOperation("APP务工者-实名认证·删除附件")
// @PreAuthorize("@ss.hasPermi('wgzApp:user:userDeleteAttachment')")
// @DeleteMapping("/WgzUserDeleteAttachment/{attachmentId}")
// public AjaxResult<Boolean> userDeleteAttachment(@NotEmpty(message = "主键不能为空") @PathVariable Long attachmentId) {
// return AjaxResult.success(iAnnexService.deleteByIds(attachmentId));
// }
/**
* 【我的】【实名认证】实名认证
*/
@ApiOperation("APP务工者-实名认证")
@ApiOperation("我的-实名认证")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userRealNameAuthentication')")
@PutMapping("/wgzUserRealNameAuthentication")
public AjaxResult<Boolean> userRealNameAuthentication(@Validated @RequestBody WgzAppRealNameAuthenticationReq req) {
return AjaxResult.success(iWgzUserService.userRealNameAuthentication(req));
}
/**
* 【我的】【岗前培训】获取安全教育考试试卷(随机获取)
*/
@ApiOperation("APP务工者-岗前培训·获取随机试卷")
@ApiOperation("我的-岗前培训·获取随机试卷")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userGetTestPaper')")
@GetMapping("/WgzUserGetTestPaper")
public AjaxResult<WgzAppGetTestPaperRes> userGetTestPaper() {
@ -147,13 +161,36 @@ public class WgzAppController {
/**
* 【我的】【岗前培训】提交用户的试卷(只保存最高分的试卷信息)
*/
@ApiOperation("APP务工者-岗前培训·提交试卷")
@ApiOperation("我的-岗前培训·提交试卷")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userSubmitATestPaper')")
@PostMapping("/WgzUserSubmitATestPaper")
public AjaxResult<WgzAppSubmitATestPaperRes> userSubmitATestPaper(@Validated @RequestBody WgzAppSubmitATestPaperReq req) {
return AjaxResult.success(iWgzQuestionSaveService.userSubmitATestPaper(req));
}
/**
* 【我的】【请假】 提交请假
*/
@ApiOperation("我的-请假·提交请假")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userSubmitLeave')")
@PostMapping("/WgzAppSubmitLeave")
public AjaxResult<Boolean> userSubmitLeave(@Validated @RequestBody WgzAppSubmitLeaveRes req) {
// iWgzLeaveService
return AjaxResult.success(true);
}
/**
* 【日报】日报日历
*/
@ApiOperation("日报-日报日历")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userDailyCalendar')")
@GetMapping("/WgzUserDailyCalendar")
public AjaxResult<WfzUserDailyCalendarRes> userDailyCalendar(@Validated WgzAppUserDailyCalendarRes req) {
WfzUserDailyCalendarRes wfzUserDailyCalendarRes = iWgzDailyClockService.userDailyCalendar(req);
return AjaxResult.success(wfzUserDailyCalendarRes);
}
/**
* 通用接口
* =================================================================================================================
@ -167,7 +204,7 @@ public class WgzAppController {
* 【我的】【签协议】协议列表
1-劳动合同
*/
@ApiOperation("APP务工者-通用·附件获取")
@ApiOperation("通用·附件获取")
@PreAuthorize("@ss.hasPermi('wgzApp:user:userAttachmentAcquisition')")
@GetMapping("/wgzUserAttachmentAcquisition")
public AjaxResult<WgzAppAttachmentAcquisitionRes> userAttachmentAcquisition(@Validated WgzAppAttachmentAcquisitionReq req) {
@ -204,6 +241,8 @@ public class WgzAppController {
return AjaxResult.success(wgzAppAttachmentAcquisitionRes.setWgzAutonymAnnex(resData));
}
/**
* 控制层业务
* =================================================================================================================
@ -211,7 +250,6 @@ public class WgzAppController {
* =================================================================================================================
*/
/**
* 创建题目板块
* @param topicPrefix 板块标题前缀
@ -227,4 +265,16 @@ public class WgzAppController {
section.setList(questions);
return section;
}
// /**
// * 【我的】【实名认证】实名认证·删除附件
// */
// @ApiOperation("APP务工者-实名认证·删除附件")
// @PreAuthorize("@ss.hasPermi('wgzApp:user:userDeleteAttachment')")
// @DeleteMapping("/WgzUserDeleteAttachment/{attachmentId}")
// public AjaxResult<Boolean> userDeleteAttachment(@NotEmpty(message = "主键不能为空") @PathVariable Long attachmentId) {
// return AjaxResult.success(iAnnexService.deleteByIds(attachmentId));
// }
}

View File

@ -0,0 +1,108 @@
package com.ruoyi.web.controller.wgz.controller;
import java.util.List;
import java.util.Arrays;
import com.ruoyi.wgz.domain.WgzDailyClock;
import lombok.RequiredArgsConstructor;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.wgz.bo.WgzDailyClockQueryBo;
import com.ruoyi.wgz.service.IWgzDailyClockService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 日报打卡Controller
*
* @author ruoyi
* @date 2025-02-18
*/
@Api(value = "日报打卡控制器", tags = {"日报打卡管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/wgz/clock")
public class WgzDailyClockController extends BaseController {
private final IWgzDailyClockService iWgzDailyClockService;
/**
* 查询日报打卡列表
*/
@ApiOperation("查询日报打卡列表")
@PreAuthorize("@ss.hasPermi('wgz:clock:list')")
@GetMapping("/list")
public TableDataInfo<WgzDailyClock> list(@Validated WgzDailyClockQueryBo bo) {
return iWgzDailyClockService.queryPageList(bo);
}
/**
* 导出日报打卡列表
*/
@ApiOperation("导出日报打卡列表")
@PreAuthorize("@ss.hasPermi('wgz:clock:export')")
@Log(title = "日报打卡", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult<WgzDailyClock> export(@Validated WgzDailyClockQueryBo bo) {
List<WgzDailyClock> list = iWgzDailyClockService.queryList(bo);
ExcelUtil<WgzDailyClock> util = new ExcelUtil<WgzDailyClock>(WgzDailyClock.class);
return util.exportExcel(list, "日报打卡");
}
/**
* 获取日报打卡详细信息
*/
@ApiOperation("获取日报打卡详细信息")
@PreAuthorize("@ss.hasPermi('wgz:clock:query')")
@GetMapping("/{id}")
public AjaxResult<WgzDailyClock> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return AjaxResult.success(iWgzDailyClockService.queryById(id));
}
/**
* 新增日报打卡
*/
@ApiOperation("新增日报打卡")
@PreAuthorize("@ss.hasPermi('wgz:clock:add')")
@Log(title = "日报打卡", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
public AjaxResult<Void> add(@Validated @RequestBody WgzDailyClock bo) {
return toAjax(iWgzDailyClockService.insert(bo) ? 1 : 0);
}
/**
* 修改日报打卡
*/
@ApiOperation("修改日报打卡")
@PreAuthorize("@ss.hasPermi('wgz:clock:edit')")
@Log(title = "日报打卡", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
public AjaxResult<Void> edit(@Validated @RequestBody WgzDailyClock bo) {
return toAjax(iWgzDailyClockService.update(bo) ? 1 : 0);
}
/**
* 删除日报打卡
*/
@ApiOperation("删除日报打卡")
@PreAuthorize("@ss.hasPermi('wgz:clock:remove')")
@Log(title = "日报打卡" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iWgzDailyClockService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
}
}

View File

@ -0,0 +1,108 @@
package com.ruoyi.web.controller.wgz.controller;
import java.util.List;
import java.util.Arrays;
import com.ruoyi.wgz.domain.WgzLeave;
import lombok.RequiredArgsConstructor;
import javax.validation.constraints.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.wgz.bo.WgzLeaveQueryBo;
import com.ruoyi.wgz.service.IWgzLeaveService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
* 请假Controller
*
* @author ruoyi
* @date 2025-02-19
*/
@Api(value = "请假控制器", tags = {"请假管理"})
@RequiredArgsConstructor(onConstructor_ = @Autowired)
@RestController
@RequestMapping("/wgz/leave")
public class WgzLeaveController extends BaseController {
private final IWgzLeaveService iWgzLeaveService;
/**
* 查询请假列表
*/
@ApiOperation("查询请假列表")
@PreAuthorize("@ss.hasPermi('wgz:leave:list')")
@GetMapping("/list")
public TableDataInfo<WgzLeave> list(@Validated WgzLeaveQueryBo bo) {
return iWgzLeaveService.queryPageList(bo);
}
/**
* 导出请假列表
*/
@ApiOperation("导出请假列表")
@PreAuthorize("@ss.hasPermi('wgz:leave:export')")
@Log(title = "请假", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult<WgzLeave> export(@Validated WgzLeaveQueryBo bo) {
List<WgzLeave> list = iWgzLeaveService.queryList(bo);
ExcelUtil<WgzLeave> util = new ExcelUtil<WgzLeave>(WgzLeave.class);
return util.exportExcel(list, "请假");
}
/**
* 获取请假详细信息
*/
@ApiOperation("获取请假详细信息")
@PreAuthorize("@ss.hasPermi('wgz:leave:query')")
@GetMapping("/{id}")
public AjaxResult<WgzLeave> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
return AjaxResult.success(iWgzLeaveService.queryById(id));
}
/**
* 新增请假
*/
@ApiOperation("新增请假")
@PreAuthorize("@ss.hasPermi('wgz:leave:add')")
@Log(title = "请假", businessType = BusinessType.INSERT)
@RepeatSubmit
@PostMapping()
public AjaxResult<Void> add(@Validated @RequestBody WgzLeave bo) {
return toAjax(iWgzLeaveService.insert(bo) ? 1 : 0);
}
/**
* 修改请假
*/
@ApiOperation("修改请假")
@PreAuthorize("@ss.hasPermi('wgz:leave:edit')")
@Log(title = "请假", businessType = BusinessType.UPDATE)
@RepeatSubmit
@PutMapping()
public AjaxResult<Void> edit(@Validated @RequestBody WgzLeave bo) {
return toAjax(iWgzLeaveService.update(bo) ? 1 : 0);
}
/**
* 删除请假
*/
@ApiOperation("删除请假")
@PreAuthorize("@ss.hasPermi('wgz:leave:remove')")
@Log(title = "请假" , businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(iWgzLeaveService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0);
}
}

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;
}
}

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.wgz.mapper.WgzDailyClockMapper">
<resultMap type="com.ruoyi.wgz.domain.WgzDailyClock" id="WgzDailyClockResult">
<result property="id" column="id"/>
<result property="recruitId" column="recruit_id"/>
<result property="userId" column="user_id"/>
<result property="dilyTime" column="dily_time"/>
<result property="dailyMark" column="daily_mark"/>
<result property="pnchOsition" column="pnch_osition"/>
<result property="finishToday" column="finish_today"/>
<result property="unfinished" column="unfinished"/>
<result property="workTomorrow" column="work_tomorrow"/>
<result property="coordinate" column="coordinate"/>
<result property="attachment" column="attachment"/>
<result property="auditorUserId" column="auditor_user_id"/>
<result property="auditorType" column="auditor_type"/>
<result property="auditorOpinion" column="auditor_opinion"/>
<result property="auditorTime" column="auditor_time"/>
<result property="exceptionType" column="exception_type"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
</resultMap>
</mapper>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.wgz.mapper.WgzLeaveMapper">
<resultMap type="com.ruoyi.wgz.domain.WgzLeave" id="WgzLeaveResult">
<result property="id" column="id"/>
<result property="recruitId" column="recruit_id"/>
<result property="subject" column="subject"/>
<result property="leaveType" column="leave_type"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="reason" column="reason"/>
<result property="auditorUserId" column="auditor_user_id"/>
<result property="auditorType" column="auditor_type"/>
<result property="auditorOpinion" column="auditor_opinion"/>
<result property="auditorTime" column="auditor_time"/>
<result property="workingTime" column="working_time"/>
<result property="closingTime" column="closing_time"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
</resultMap>
</mapper>