From f855833966e6e2867cc92ab3ee2c1a072e17900a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E6=88=90?= <2847920761@qq.com> Date: Wed, 19 Feb 2025 16:10:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E5=9C=A8=E7=BC=96=E5=86=99=E8=AF=B7?= =?UTF-8?q?=E5=81=87=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wgz/controller/WgzAppController.java | 108 +++++++++---- .../controller/WgzDailyClockController.java | 108 +++++++++++++ .../wgz/controller/WgzLeaveController.java | 108 +++++++++++++ .../ruoyi/wgz/bo/WgzDailyClockQueryBo.java | 88 +++++++++++ .../com/ruoyi/wgz/bo/WgzLeaveQueryBo.java | 79 ++++++++++ .../req/WgzAppAttachmentAcquisitionReq.java | 3 + .../ruoyi/wgz/bo/req/WgzAppJobListingReq.java | 25 +++ .../wgz/bo/req/WgzAppSubmitLeaveRes.java | 41 +++++ .../bo/req/WgzAppUserDailyCalendarRes.java | 20 +++ .../wgz/bo/res/WfzUserDailyCalendarRes.java | 22 +++ .../ruoyi/wgz/bo/res/WgzAppJobListingRes.java | 48 ++++++ .../rests/WgzAppAttachmentAcquisitionTwo.java | 30 ++++ .../com/ruoyi/wgz/domain/WgzDailyClock.java | 148 +++++++++++++++++ .../java/com/ruoyi/wgz/domain/WgzLeave.java | 133 ++++++++++++++++ .../ruoyi/wgz/mapper/WgzDailyClockMapper.java | 18 +++ .../com/ruoyi/wgz/mapper/WgzLeaveMapper.java | 18 +++ .../wgz/service/IWgzDailyClockService.java | 71 +++++++++ .../ruoyi/wgz/service/IWgzLeaveService.java | 72 +++++++++ .../impl/WgzDailyClockServiceImpl.java | 149 ++++++++++++++++++ .../wgz/service/impl/WgzLeaveServiceImpl.java | 109 +++++++++++++ .../mapper/wgz/WgzDailyClockMapper.xml | 33 ++++ .../resources/mapper/wgz/WgzLeaveMapper.xml | 30 ++++ 22 files changed, 1432 insertions(+), 29 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzDailyClockController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzLeaveController.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzDailyClockQueryBo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzLeaveQueryBo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppJobListingReq.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppSubmitLeaveRes.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUserDailyCalendarRes.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WfzUserDailyCalendarRes.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppJobListingRes.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppAttachmentAcquisitionTwo.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzLeave.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzDailyClockMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzDailyClockService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java index 039e0c6..47b28f4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzAppController.java @@ -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 userRegister(@Validated @RequestBody WgzAppUserRegisterReq bo) { return AjaxResult.success(iWgzUserService.userRegister(bo)); } + /** + * 【首页】【首页界面】招工列表 + */ + @ApiOperation("首页-招工列表") + @PreAuthorize("@ss.hasPermi('wgzApp:user:userJobListing')") + @GetMapping("/WgzUserJobListing") + public AjaxResult userJobListing(@Validated WgzAppJobListingReq req) { + //1、请求转换 + BgtProjectRecruitQueryDTO dto = new BgtProjectRecruitQueryDTO(); + BeanUtils.copyProperties(req,dto); + //2、查询招工列表信息 + TableDataInfo 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 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 userPersonalBasicInformation(@Validated WgzAppPersonalBasicInformationReq req) { return AjaxResult.success(iWgzUserService.userPersonalBasicInformation(req)); } -// /** -// * 【我的】【实名认证】实名认证·删除附件 -// */ -// @ApiOperation("APP务工者-实名认证·删除附件") -// @PreAuthorize("@ss.hasPermi('wgzApp:user:userDeleteAttachment')") -// @DeleteMapping("/WgzUserDeleteAttachment/{attachmentId}") -// public AjaxResult 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 userRealNameAuthentication(@Validated @RequestBody WgzAppRealNameAuthenticationReq req) { return AjaxResult.success(iWgzUserService.userRealNameAuthentication(req)); } - /** * 【我的】【岗前培训】获取安全教育考试试卷(随机获取) */ - @ApiOperation("APP务工者-岗前培训·获取随机试卷") + @ApiOperation("我的-岗前培训·获取随机试卷") @PreAuthorize("@ss.hasPermi('wgzApp:user:userGetTestPaper')") @GetMapping("/WgzUserGetTestPaper") public AjaxResult userGetTestPaper() { @@ -147,13 +161,36 @@ public class WgzAppController { /** * 【我的】【岗前培训】提交用户的试卷(只保存最高分的试卷信息) */ - @ApiOperation("APP务工者-岗前培训·提交试卷") + @ApiOperation("我的-岗前培训·提交试卷") @PreAuthorize("@ss.hasPermi('wgzApp:user:userSubmitATestPaper')") @PostMapping("/WgzUserSubmitATestPaper") public AjaxResult userSubmitATestPaper(@Validated @RequestBody WgzAppSubmitATestPaperReq req) { return AjaxResult.success(iWgzQuestionSaveService.userSubmitATestPaper(req)); } + /** + * 【我的】【请假】 提交请假 + */ + @ApiOperation("我的-请假·提交请假") + @PreAuthorize("@ss.hasPermi('wgzApp:user:userSubmitLeave')") + @PostMapping("/WgzAppSubmitLeave") + public AjaxResult userSubmitLeave(@Validated @RequestBody WgzAppSubmitLeaveRes req) { +// iWgzLeaveService + return AjaxResult.success(true); + } + + /** + * 【日报】日报日历 + */ + @ApiOperation("日报-日报日历") + @PreAuthorize("@ss.hasPermi('wgzApp:user:userDailyCalendar')") + @GetMapping("/WgzUserDailyCalendar") + public AjaxResult 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 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 userDeleteAttachment(@NotEmpty(message = "主键不能为空") @PathVariable Long attachmentId) { +// return AjaxResult.success(iAnnexService.deleteByIds(attachmentId)); +// } + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzDailyClockController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzDailyClockController.java new file mode 100644 index 0000000..6708731 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzDailyClockController.java @@ -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 list(@Validated WgzDailyClockQueryBo bo) { + return iWgzDailyClockService.queryPageList(bo); + } + + /** + * 导出日报打卡列表 + */ + @ApiOperation("导出日报打卡列表") + @PreAuthorize("@ss.hasPermi('wgz:clock:export')") + @Log(title = "日报打卡", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(@Validated WgzDailyClockQueryBo bo) { + List list = iWgzDailyClockService.queryList(bo); + ExcelUtil util = new ExcelUtil(WgzDailyClock.class); + return util.exportExcel(list, "日报打卡"); + } + + /** + * 获取日报打卡详细信息 + */ + @ApiOperation("获取日报打卡详细信息") + @PreAuthorize("@ss.hasPermi('wgz:clock:query')") + @GetMapping("/{id}") + public AjaxResult 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 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iWgzDailyClockService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzLeaveController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzLeaveController.java new file mode 100644 index 0000000..0a133f3 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/wgz/controller/WgzLeaveController.java @@ -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 list(@Validated WgzLeaveQueryBo bo) { + return iWgzLeaveService.queryPageList(bo); + } + + /** + * 导出请假列表 + */ + @ApiOperation("导出请假列表") + @PreAuthorize("@ss.hasPermi('wgz:leave:export')") + @Log(title = "请假", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(@Validated WgzLeaveQueryBo bo) { + List list = iWgzLeaveService.queryList(bo); + ExcelUtil util = new ExcelUtil(WgzLeave.class); + return util.exportExcel(list, "请假"); + } + + /** + * 获取请假详细信息 + */ + @ApiOperation("获取请假详细信息") + @PreAuthorize("@ss.hasPermi('wgz:leave:query')") + @GetMapping("/{id}") + public AjaxResult 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 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iWgzLeaveService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzDailyClockQueryBo.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzDailyClockQueryBo.java new file mode 100644 index 0000000..bd77faa --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzDailyClockQueryBo.java @@ -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; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzLeaveQueryBo.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzLeaveQueryBo.java new file mode 100644 index 0000000..25663bb --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/WgzLeaveQueryBo.java @@ -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; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java index 22b320f..554eac3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppAttachmentAcquisitionReq.java @@ -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; + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppJobListingReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppJobListingReq.java new file mode 100644 index 0000000..b7e2b01 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppJobListingReq.java @@ -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; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppSubmitLeaveRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppSubmitLeaveRes.java new file mode 100644 index 0000000..c77fbf9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppSubmitLeaveRes.java @@ -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; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUserDailyCalendarRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUserDailyCalendarRes.java new file mode 100644 index 0000000..5ce0a23 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUserDailyCalendarRes.java @@ -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; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WfzUserDailyCalendarRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WfzUserDailyCalendarRes.java new file mode 100644 index 0000000..244cae1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WfzUserDailyCalendarRes.java @@ -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 dailyCalendar; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppJobListingRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppJobListingRes.java new file mode 100644 index 0000000..1cacabf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppJobListingRes.java @@ -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 applylist; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppAttachmentAcquisitionTwo.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppAttachmentAcquisitionTwo.java new file mode 100644 index 0000000..16956af --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppAttachmentAcquisitionTwo.java @@ -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; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java new file mode 100644 index 0000000..5ca2dc5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzDailyClock.java @@ -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; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzLeave.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzLeave.java new file mode 100644 index 0000000..95e8d4f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzLeave.java @@ -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; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzDailyClockMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzDailyClockMapper.java new file mode 100644 index 0000000..dc189f2 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzDailyClockMapper.java @@ -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 { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java new file mode 100644 index 0000000..0e3182e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzLeaveMapper.java @@ -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 { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzDailyClockService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzDailyClockService.java new file mode 100644 index 0000000..1106a63 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzDailyClockService.java @@ -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 { + /** + * 查询单个 + * @return + */ + WgzDailyClock queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(WgzDailyClockQueryBo bo); + + /** + * 查询列表 + */ + List 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 ids, Boolean isValid); + + /** + * 务工者APP相关 + * ================================================================================================================= + * ================================================================================================================= + * ================================================================================================================= + */ + + /** + * 日报日历 + */ + WfzUserDailyCalendarRes userDailyCalendar(@Validated WgzAppUserDailyCalendarRes req); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java new file mode 100644 index 0000000..30d3e30 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzLeaveService.java @@ -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 { + /** + * 查询单个 + * @return + */ + WgzLeave queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(WgzLeaveQueryBo bo); + + /** + * 查询列表 + */ + List 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 ids, Boolean isValid); + + + /** + * APP相关 + * ================================================================================================================= + * ================================================================================================================= + * ================================================================================================================= + */ + + /* + * 提交请假申请 + */ + Boolean userSubmitLeave(@Validated @RequestBody WgzAppSubmitLeaveRes req); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java new file mode 100644 index 0000000..ff51a8a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzDailyClockServiceImpl.java @@ -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 implements IWgzDailyClockService { + + @Override + public WgzDailyClock queryById(Long id){ + return getById(id); + } + + @Override + public TableDataInfo queryPageList(WgzDailyClockQueryBo bo) { + Page result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); + return PageUtils.buildDataInfo(result); + } + + @Override + public List queryList(WgzDailyClockQueryBo bo) { + return list(buildQueryWrapper(bo)); + } + + private LambdaQueryWrapper buildQueryWrapper(WgzDailyClockQueryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 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 dates = new ArrayList<>(); + LocalDate tempDate = firstDayOfMonth; + while (!tempDate.isAfter(lastDayOfMonth)) { + dates.add(tempDate); + tempDate = tempDate.plusDays(1); + } + //2、查询当前人员指定日期的所有日报情况 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.apply("DATE_FORMAT(dily_time, '%Y-%m') = {0}", req.getYearMonth()); // 使用 apply 方法添加自定义 SQL 条件 + List wgzDailyClocks = baseMapper.selectList(queryWrapper); + //3、查看当前人,当前月是否有请假 + + //4、将获取的年月与数据库中的日期进行比对,然后填充数据 + Map 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); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java new file mode 100644 index 0000000..578e501 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzLeaveServiceImpl.java @@ -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 implements IWgzLeaveService { + + @Override + public WgzLeave queryById(Long id){ + return getById(id); + } + + @Override + public TableDataInfo queryPageList(WgzLeaveQueryBo bo) { + Page result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); + return PageUtils.buildDataInfo(result); + } + + @Override + public List queryList(WgzLeaveQueryBo bo) { + return list(buildQueryWrapper(bo)); + } + + private LambdaQueryWrapper buildQueryWrapper(WgzLeaveQueryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return removeByIds(ids); + } + + /** + * APP相关 + * ================================================================================================================= + * ================================================================================================================= + * ================================================================================================================= + */ + + @Override + public Boolean userSubmitLeave(WgzAppSubmitLeaveRes req) { + //1、 + return null; + } +} diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml new file mode 100644 index 0000000..6d4461e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzDailyClockMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml new file mode 100644 index 0000000..d999b16 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzLeaveMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + +