diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtAttendanceController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtAttendanceController.java index b3ab938..6b8abbc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtAttendanceController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtAttendanceController.java @@ -1,17 +1,17 @@ package com.ruoyi.web.controller.bgt; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtAttendanceDTO; import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; import com.ruoyi.bgt.domain.dto.BgtAttendanceDetailDTO; -import com.ruoyi.bgt.domain.vo.BgtAttendanceDetailVO; -import com.ruoyi.bgt.domain.vo.BgtAttendanceVO; -import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO; -import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; +import com.ruoyi.bgt.domain.vo.*; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.wgz.domain.WgzUser; import com.ruoyi.wgz.service.IWgzAttendanceService; +import com.ruoyi.wgz.service.IWgzUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -33,30 +33,51 @@ public class AppBgtAttendanceController { private final IBgtProjectRecruitApplyService iBgtProjectRecruitApplyService; + private final IWgzUserService wgzUserService; - @ApiOperation("App包工头总体考勤情况-统计") - @GetMapping("attendance") - public AjaxResult attendanceDetail(@Validated BgtAttendanceDTO dto) { - return AjaxResult.success(attendanceService.attendanceDetail(dto)); + @ApiOperation("总体考勤情况-统计") + @GetMapping("/count") + public AjaxResult allCount(@Validated BgtAttendanceDTO dto) { + return AjaxResult.success(attendanceService.allCount(dto)); } - @ApiOperation("App包工头总体考勤情况-柱状图") - @GetMapping("attendanceList") - public AjaxResult> attendanceList(@Validated BgtAttendanceDTO dto) { - return AjaxResult.success(attendanceService.attendanceList(dto)); + @ApiOperation("总体考勤情况-柱状图") + @GetMapping("/histogram") + public AjaxResult> histogram(@Validated BgtAttendanceDTO dto) { + return AjaxResult.success(attendanceService.histogram(dto)); } - @ApiOperation("App包工头总体考勤情况-人员出勤情况") - @GetMapping("/todayAttendanceList") - public TableDataInfo todayAttendanceList(@Validated BgtAttendanceDayDTO req) { - return iBgtProjectRecruitApplyService.dayAttendanceList(req); + @ApiOperation("总体考勤情况-人员出勤情况") + @GetMapping("/user") + public TableDataInfo userList(@Validated BgtAttendanceDayDTO req) { + return iBgtProjectRecruitApplyService.userList(req); } + @ApiOperation("务工者个人考勤统计详情-基础信息") + @GetMapping("/person/baseInfo") + public AjaxResult baseInfo(@Validated BgtAttendanceDetailDTO dto) { - @ApiOperation("App包工头考勤统计详情") - @GetMapping("attendanceDetail") - public AjaxResult attendanceDetail(@Validated BgtAttendanceDetailDTO dto) { - return AjaxResult.success(attendanceService.bgtAttendanceDetail(dto)); + BgtAttendancePersonBaseInfoVO vo = new BgtAttendancePersonBaseInfoVO(); + + //务工者信息 + WgzUser wgzUser = wgzUserService.findByUserId(dto.getUserId()); + vo.setUserId(wgzUser.getUserId()); + vo.setUsername(wgzUser.getUsername()); + vo.setAvatarName(wgzUser.getAvatarName()); + + //务工者的申请信息 + BgtProjectRecruitApply recruitApply = iBgtProjectRecruitApplyService.getOne(dto.getTaskId(),wgzUser.getUserId()); + vo.setEntryTime(recruitApply.getEntryTime()); + vo.setLeaveTime(recruitApply.getLeaveTime()); + vo.setStatus(recruitApply.getStatus()); + + return AjaxResult.success(vo); + } + + @ApiOperation("务工者个人考勤统计详情-统计数据") + @GetMapping("/person/count") + public AjaxResult personCount(@Validated BgtAttendanceDetailDTO dto) { + return AjaxResult.success(attendanceService.personCount(dto)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java index ac5eef5..881ea3c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtMessageController.java @@ -1,15 +1,21 @@ package com.ruoyi.web.controller.bgt; import com.ruoyi.bgt.domain.BgtMessage; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtMessageDetailDTO; import com.ruoyi.bgt.domain.dto.BgtMessageMyListDTO; import com.ruoyi.bgt.domain.vo.BgtMessageCountVO; import com.ruoyi.bgt.domain.vo.BgtMessageDetailVO; import com.ruoyi.bgt.domain.vo.BgtMessageVO; import com.ruoyi.bgt.service.IBgtMessageService; +import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.RecruitApplyStatus; +import com.ruoyi.wgz.bo.req.WgzAppPersonalBasicInformationReq; +import com.ruoyi.wgz.bo.res.WgzAppPersonalBasicInformationRes; +import com.ruoyi.wgz.service.IWgzUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -30,6 +36,10 @@ public class AppBgtMessageController extends BaseController { private final IBgtMessageService iBgtMessageService; + private final IBgtProjectRecruitApplyService iBgtProjectRecruitApplyService; + + private final IWgzUserService wgzUserService; + @ApiOperation("未读消息统计") @GetMapping("/countUnread") public AjaxResult count() { @@ -57,5 +67,16 @@ public class AppBgtMessageController extends BaseController { return AjaxResult.success(iBgtMessageService.updateById(bgtMessage)); } + @ApiOperation("App务工者消息个人详情") + @GetMapping("/userInfo") + public AjaxResult wgzMessageInformation(Long userId, Long recruitApplyId) { + WgzAppPersonalBasicInformationReq req = new WgzAppPersonalBasicInformationReq(); + req.setUserId(userId); + WgzAppPersonalBasicInformationRes res = wgzUserService.userPersonalBasicInformation(req); + BgtProjectRecruitApply apply = iBgtProjectRecruitApplyService.getById(recruitApplyId); + res.setIsChoose(!apply.getStatus().equals(RecruitApplyStatus.SIGN_UP.getCode())); + return AjaxResult.success(res); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java index ce76540..aa781ef 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java @@ -1,6 +1,5 @@ package com.ruoyi.web.controller.bgt; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; @@ -13,7 +12,6 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.enums.RecruitApplyStatus; import com.ruoyi.wgz.bo.req.WgzAppPersonalBasicInformationReq; import com.ruoyi.wgz.bo.res.WgzAppPersonalBasicInformationRes; import com.ruoyi.wgz.service.IWgzUserService; @@ -56,10 +54,11 @@ public class AppBgtProjectRecruitApplyController extends BaseController { return iBgtProjectRecruitApplyService.appQueryPageList(dto); } + @ApiOperation("App务工者列表") @GetMapping("/listAll") public AjaxResult> list(@Validated BgtProjectRecruitApplyQueryDTO dto) { - return AjaxResult.success(iBgtProjectRecruitApplyService.appQueryList(dto)); + return AjaxResult.success(iBgtProjectRecruitApplyService.appAllList(dto)); } @ApiOperation("App务工者个人详情") @@ -68,18 +67,6 @@ public class AppBgtProjectRecruitApplyController extends BaseController { return AjaxResult.success(wgzUserService.userPersonalBasicInformation(req)); } - @ApiOperation("App务工者消息个人详情") - @GetMapping("/userMessageInfo") - public AjaxResult wgzMessageInformation(Long userId,Long recruitId) { - WgzAppPersonalBasicInformationReq req = new WgzAppPersonalBasicInformationReq(); - req.setUserId(userId); - WgzAppPersonalBasicInformationRes res = wgzUserService.userPersonalBasicInformation(req); - BgtProjectRecruitApply one = iBgtProjectRecruitApplyService.getOne(Wrappers.lambdaQuery() - .eq(BgtProjectRecruitApply::getUserId, userId) - .eq(BgtProjectRecruitApply::getRecruitId, recruitId)); - res.setIsChoose(!one.getStatus().equals(RecruitApplyStatus.SIGN_UP.getCode())); - return AjaxResult.success(res); - } @ApiOperation("App务工者招工报名") @Log(title = "App务工者招工报名", businessType = BusinessType.INSERT) @@ -98,7 +85,6 @@ public class AppBgtProjectRecruitApplyController extends BaseController { } - @ApiOperation("App务工者退场") @Log(title = "App务工者退场", businessType = BusinessType.UPDATE) @RepeatSubmit diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitController.java index 45e4ed2..9c8c707 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitController.java @@ -1,10 +1,13 @@ package com.ruoyi.web.controller.bgt; import com.ruoyi.bgt.domain.BgtProjectRecruit; +import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyUserDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitQueryDTO; +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitDetailVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitDetailWgzListVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitVO; +import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; @@ -20,6 +23,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; +import java.util.List; /** * 包工头招工Controller @@ -35,38 +39,46 @@ public class AppBgtProjectRecruitController extends BaseController { private final IBgtProjectRecruitService iBgtProjectRecruitService; + private final IBgtProjectRecruitApplyService iBgtProjectRecruitApplyService; + /** * 查询包工头招工列表 状态为通过和报名 */ - @ApiOperation(value = "我的招工",notes = "1.查询包工头招工列表 状态为通过(1)和报名(0)") + @ApiOperation(value = "我的招工(分页)",notes = "1.查询包工头招工列表 状态为通过(1)和报名(0)") @GetMapping("/list") public TableDataInfo list(@Validated BgtProjectRecruitQueryDTO dto) { return iBgtProjectRecruitService.appQueryPageList(dto); } + @ApiOperation(value = "我的招工列表",notes = "1.查询包工头招工列表 状态为通过(1)和报名(0)") + @GetMapping("/allList") + public AjaxResult> allList() { + return AjaxResult.success(iBgtProjectRecruitService.appQueryList()); + } + + /** * 获取包工头招工详细信息 */ - @ApiOperation("我的招工任务详情") + @ApiOperation("我的招工任务详情-基础信息") @GetMapping("/{id}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { return AjaxResult.success(iBgtProjectRecruitService.appQueryById(id)); } - @ApiOperation("我的招工任务详情-务工者申请列表") - @GetMapping("/wgzList/{id}") - public AjaxResult wgzList(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(iBgtProjectRecruitService.wgzList(id)); + @ApiOperation(value = "我的招工任务详情-务工者申请列表分页") + @GetMapping("/wgzList") + public TableDataInfo listPage(@Validated BgtProjectRecruitApplyUserDTO dto) { + return iBgtProjectRecruitApplyService.recruitApplyList(dto); } - @ApiOperation("务工者申请列表数量统计") + + @ApiOperation("我的招工任务详情-务工者申请列表数量统计") @GetMapping("/wgzCount/{id}") public AjaxResult wgzCount(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { - BgtProjectRecruitDetailWgzListVO bgtProjectRecruitDetailWgzListVO = iBgtProjectRecruitService.wgzList(id); - bgtProjectRecruitDetailWgzListVO.setApplyList(null); + BgtProjectRecruitDetailWgzListVO bgtProjectRecruitDetailWgzListVO = iBgtProjectRecruitService.wgzCount(id); return AjaxResult.success(bgtProjectRecruitDetailWgzListVO); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java index 29dd757..0e97667 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskController.java @@ -1,8 +1,16 @@ package com.ruoyi.web.controller.bgt; +import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; +import com.ruoyi.bgt.domain.vo.BgtProjectTaskUseCountVO; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.fbs.domain.FbsProjectTask; import com.ruoyi.fbs.domain.dto.AppTaskDTO; import com.ruoyi.fbs.domain.vo.*; import com.ruoyi.fbs.service.IFbsProjectTaskService; @@ -11,10 +19,7 @@ import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.constraints.NotNull; import java.util.List; @@ -38,7 +43,7 @@ public class AppBgtProjectTaskController extends BaseController { * 我的任务列表 任务状态 申请(0) 进行(1) 完成(2) 是否我的任务 true * */ - @ApiOperation(value = "App包工头任务列表/我的任务" + @ApiOperation(value = "包工头任务列表/我的任务" ,notes = "1.首页任务列表 任务状态(status) 申请(0) 是否我的任务(myTask) false\n"+ "2.我的任务列表 任务状态(status) 申请(0) 进行(1) 完成(2) 是否我的任务(myTask) true") @GetMapping("/list") @@ -46,7 +51,7 @@ public class AppBgtProjectTaskController extends BaseController { return iFbsProjectTaskService.appQueryPageList(dto); } - @ApiOperation("App包工头任务列表(不分页)") + @ApiOperation("包工头进行中任务列表") @GetMapping("/listAll") public AjaxResult> list() { return AjaxResult.success(iFbsProjectTaskService.appQueryList()); @@ -88,6 +93,33 @@ public class AppBgtProjectTaskController extends BaseController { return AjaxResult.success(iFbsProjectTaskService.recruit(id)); } + @ApiOperation(value = "项目任务详细信息-务工人员分页") + @GetMapping("/taskUser") + public TableDataInfo taskUserList(@Validated BgtProjectTaskUserDTO dto) { + return iFbsProjectTaskService.taskUserList(dto); + } + + @ApiOperation(value = "项目任务详细信息-务工人员统计") + @GetMapping("/taskUserCount/{id}") + public AjaxResult taskUserCount(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsProjectTaskService.taskUserCount(id)); + } + + + @ApiOperation("新增项目") + @Log(title = "包工头新增项目", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping() + public AjaxResult add(@Validated @RequestBody FbsProjectTask bo) { + Long num = 1L; + bo.setProjectId(num); + bo.setSectionId(num); + bo.setSubId(num); + bo.setUserId(SecurityUtils.getAppUserId()); + bo.setStatus("1"); + return AjaxResult.success(iFbsProjectTaskService.insert(bo)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java index bf1faa0..86cb7f2 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectTaskProgressController.java @@ -39,7 +39,7 @@ public class AppBgtProjectTaskProgressController extends BaseController { /** * 查询包工头项目任务进度列表 */ - @ApiOperation("App查询包工头项目任务进度列表") + @ApiOperation("查询项目任务进度列表") @GetMapping("/list") public TableDataInfo list(@Validated BgtProjectTaskProgressQueryDTO bo) { return iBgtProjectTaskProgressService.appQueryPageList(bo); @@ -49,7 +49,7 @@ public class AppBgtProjectTaskProgressController extends BaseController { /** * 获取包工头项目任务进度详细信息 */ - @ApiOperation("App获取包工头项目任务进度详细信息") + @ApiOperation("获取项目任务进度详细信息") @GetMapping("/{id}") public AjaxResult getInfo(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { @@ -59,7 +59,7 @@ public class AppBgtProjectTaskProgressController extends BaseController { /** * 新增包工头项目任务进度 */ - @ApiOperation("App上传任务进度") + @ApiOperation("上传任务进度") @Log(title = "App上传任务进度", businessType = BusinessType.INSERT) @RepeatSubmit @PostMapping() diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java index 7a0615f..8267cea 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java @@ -1,5 +1,8 @@ package com.ruoyi.common.enums; +import java.util.Arrays; +import java.util.List; + /** * 招工申请状态 * @@ -34,4 +37,8 @@ public enum RecruitApplyStatus { return info; } + + public static List getTaskStatus(){ + return Arrays.asList(WGZ_PASS.getCode(),WORKING.getCode(), OUT_WORK.getCode()); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDetailDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDetailDTO.java index 5b20b63..a8a2a3a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDetailDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtAttendanceDetailDTO.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; +import javax.validation.constraints.NotNull; import java.time.LocalDate; @Data @@ -20,6 +21,7 @@ public class BgtAttendanceDetailDTO { private Long userId; @ApiModelProperty("任务Id") + @NotNull(message = "任务Id不能为空") private Long taskId; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtLeaveUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtLeaveUpdateDTO.java index 970e00c..db6824d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtLeaveUpdateDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtLeaveUpdateDTO.java @@ -25,7 +25,6 @@ public class BgtLeaveUpdateDTO { @ApiModelProperty("审核状态(0待审核 1审核中 2已同意 3已拒绝 4=已取消)") private String auditorType; - @ApiModelProperty("审核意见") private String auditorOpinion; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java index 9c9b744..e8a3b3c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyConsentDTO.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.time.LocalDate; import java.util.List; @@ -23,12 +25,15 @@ public class BgtProjectRecruitApplyConsentDTO{ private Long id; @ApiModelProperty("进场时间") + @NotNull(message = "进场时间不能为空") private LocalDate entryTime; @ApiModelProperty("入场材料") + @Size(min = 1, message = "入场材料不能为空") List entryMaterials; @ApiModelProperty("保险") + @Size(min = 1, message = "保险不能为空") List insurances; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyUserDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyUserDTO.java new file mode 100644 index 0000000..3a5e15f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectRecruitApplyUserDTO.java @@ -0,0 +1,28 @@ +package com.ruoyi.bgt.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("包工头招工详情务工者申请列表查询对象") +public class BgtProjectRecruitApplyUserDTO { + + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("招工任务Id") + @NotNull(message = "招工任务Id不能为空") + private Long recruitId; + + @ApiModelProperty("选择状态(0选择 1未选择") + private Integer status; + + @ApiModelProperty("务工者名字") + private String username; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectTaskUserDTO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectTaskUserDTO.java new file mode 100644 index 0000000..3847824 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/dto/BgtProjectTaskUserDTO.java @@ -0,0 +1,28 @@ +package com.ruoyi.bgt.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel("包工头任务详情务工者申请列表查询对象") +public class BgtProjectTaskUserDTO { + + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("任务Id") + @NotNull(message = "任务Id不能为空") + private Long taskId; + + @ApiModelProperty("选择状态(3-未进场,5-进场,6-离场") + private Integer status; + + @ApiModelProperty("务工者名字") + private String username; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonBaseInfoVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonBaseInfoVO.java new file mode 100644 index 0000000..5137063 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonBaseInfoVO.java @@ -0,0 +1,36 @@ +package com.ruoyi.bgt.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.time.LocalDate; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("App包工头总体考勤视图对象") +public class BgtAttendancePersonBaseInfoVO { + + @ApiModelProperty("务工者Id") + @JsonFormat(shape = JsonFormat.Shape.STRING) + private Long userId; + + @ApiModelProperty("姓名") + private String username; + + @ApiModelProperty("头像") + private String avatarName; + + @ApiModelProperty("进场时间") + private LocalDate entryTime; + + @ApiModelProperty("离场时间") + private LocalDate leaveTime; + + @ApiModelProperty("选择状态(0未选择 1已选择)") + private String status; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendanceDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonCountVO.java similarity index 69% rename from ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendanceDetailVO.java rename to ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonCountVO.java index 564a52b..8fffdc9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendanceDetailVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtAttendancePersonCountVO.java @@ -1,36 +1,18 @@ package com.ruoyi.bgt.domain.vo; -import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import java.time.LocalDate; import java.util.List; @Data @NoArgsConstructor @Accessors(chain = true) @ApiModel("App包工头总体考勤视图对象") -public class BgtAttendanceDetailVO { - - @ApiModelProperty("务工者Id") - @JsonFormat(shape = JsonFormat.Shape.STRING) - private Long userId; - - @ApiModelProperty("姓名") - private String username; - - @ApiModelProperty("头像") - private String avatarName; - - @ApiModelProperty("进场时间") - private LocalDate entryTime; - - @ApiModelProperty("选择状态(0未选择 1已选择)") - private String status; +public class BgtAttendancePersonCountVO { @ApiModelProperty("出勤天数") private Double dayNum=0D; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java index 8af432d..7c11e86 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectRecruitDetailWgzListVO.java @@ -6,9 +6,6 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; -import java.io.Serializable; -import java.util.List; - /** * 包工头招工对象 bgt_project_recruit * @@ -18,17 +15,8 @@ import java.util.List; @Data @NoArgsConstructor @Accessors(chain = true) -@ApiModel("App包工头招工详情-务工者申请列表对象") -public class BgtProjectRecruitDetailWgzListVO implements Serializable { - - private static final long serialVersionUID=1L; - - /** 主键ID */ - @ApiModelProperty("主键ID") - private Long id; - - @ApiModelProperty("申请者列表") - List applyList; +@ApiModel("App包工头招工详情-务工者申请列表统计对象") +public class BgtProjectRecruitDetailWgzListVO { @ApiModelProperty("总人数") private Integer totalNum; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectTaskUseCountVO.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectTaskUseCountVO.java new file mode 100644 index 0000000..562af3b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/domain/vo/BgtProjectTaskUseCountVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.bgt.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("包工头任务详情务工者申请列表统计视图对象") +public class BgtProjectTaskUseCountVO { + + @ApiModelProperty("未进场") + private Long wgzPassNum; + /** 当前页数 */ + @ApiModelProperty("进场") + private Long workingNum; + + @ApiModelProperty("离场") + private Long outWorkNum; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java index 006a15a..8de9ae7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; +import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyUserDTO; +import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; @@ -30,8 +32,15 @@ public interface BgtProjectRecruitApplyMapper extends BaseMapperPlus dayAttendanceList(@Param("page")Page queryDTOPage,@Param("dto") BgtAttendanceDayDTO dto); + // 总体考勤情况-人员出勤情况 Page todayAttendanceList(@Param("page")Page queryDTOPage,@Param("dto") BgtAttendanceDayDTO dto); + // 获取指定项目下的所有成员(分页) Page underwayPage (@Param("page") Page page,@Param("req") WgzAppUnderwayReq req); + // 我的招工任务详情-务工者申请列表分页 + Page recruitApplyList(@Param("page")Page queryDTOPage,@Param("dto") BgtProjectRecruitApplyUserDTO dto); + + // 我的任务详情-务工者人员列表分页 + Page taskUserList(@Param("page")Page queryDTOPage, @Param("dto") BgtProjectTaskUserDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java index fb287d8..140fa77 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java @@ -2,10 +2,7 @@ package com.ruoyi.bgt.service; import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; -import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; -import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO; -import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; -import com.ruoyi.bgt.domain.dto.BgtScoreDTO; +import com.ruoyi.bgt.domain.dto.*; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; @@ -68,10 +65,21 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus appQueryPageList(BgtProjectRecruitApplyQueryDTO dto); + + /** + * 我的招工任务详情-务工者申请列表分页 + */ + TableDataInfo recruitApplyList(BgtProjectRecruitApplyUserDTO dto); + + /** + * 我的任务详情-务工者人员列表分页 + */ + TableDataInfo taskUserList(BgtProjectTaskUserDTO dto); + /** * 查询列表 */ - List appQueryList(BgtProjectRecruitApplyQueryDTO dto); + List appAllList(BgtProjectRecruitApplyQueryDTO dto); /** * LC-APP相关 @@ -96,9 +104,9 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus dayAttendanceList(BgtAttendanceDayDTO dto); + TableDataInfo userList(BgtAttendanceDayDTO dto); /** * 退场 @@ -130,6 +138,8 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus ids, Boolean isValid); /** - * 查询列表 + * 查询分页列表 */ TableDataInfo appQueryPageList(BgtProjectRecruitQueryDTO dto); + /** + * 查询我发布的所有招工 + */ + List appQueryList(); + /** * 查询单个 */ BgtProjectRecruitDetailVO appQueryById(Long id); /** - * 务工者统计 + * 务工者申请列表统计 */ - BgtProjectRecruitDetailWgzListVO wgzList(Long id); + BgtProjectRecruitDetailWgzListVO wgzCount(Long id); /** * 获取任务下的所有招工Id diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java index 386f7df..9f916c8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitApplyServiceImpl.java @@ -11,10 +11,7 @@ import com.ruoyi.bgt.bo.BgtProjectRecruitApplyQueryBo; import com.ruoyi.bgt.domain.BgtMessage; import com.ruoyi.bgt.domain.BgtProjectRecruit; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; -import com.ruoyi.bgt.domain.dto.BgtAttendanceDayDTO; -import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyConsentDTO; -import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; -import com.ruoyi.bgt.domain.dto.BgtScoreDTO; +import com.ruoyi.bgt.domain.dto.*; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.mapper.BgtProjectRecruitApplyMapper; import com.ruoyi.bgt.service.IBgtMessageService; @@ -159,7 +156,25 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl appQueryList(BgtProjectRecruitApplyQueryDTO dto) { + public TableDataInfo recruitApplyList(BgtProjectRecruitApplyUserDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + Page queryVOPage = baseMapper.recruitApplyList(queryDTOPage, dto); + return PageUtils.buildDataInfo(queryVOPage); + } + + @Override + public TableDataInfo taskUserList(BgtProjectTaskUserDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + Page queryVOPage = baseMapper.taskUserList(queryDTOPage, dto); + return PageUtils.buildDataInfo(queryVOPage); + } + + @Override + public List appAllList(BgtProjectRecruitApplyQueryDTO dto) { if (dto.getTaskId() != null) { List recruitIdsByTaskId = iBgtProjectRecruitService.getRecruitIdsByTaskId(dto.getTaskId()); if (dto.getRecruitIds() == null) { @@ -168,6 +183,11 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl dayAttendanceList(BgtAttendanceDayDTO dto) { + @Override + public TableDataInfo userList(BgtAttendanceDayDTO dto) { Page queryDTOPage = new Page<>(); queryDTOPage.setCurrent(dto.getPageNum()); queryDTOPage.setSize(dto.getPageSize()); @@ -368,7 +389,7 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl bgtProjectRecruitApplyVOS = appQueryList(dto); + List bgtProjectRecruitApplyVOS = appAllList(dto); if (CollectionUtil.isNotEmpty(bgtProjectRecruitApplyVOS)) { //发消息 @@ -560,9 +581,9 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl list = baseMapper.selectList(Wrappers.lambdaQuery().eq(BgtProjectRecruitApply::getRecruitId, recruitId) + public BgtProjectRecruitApply getOne(Long taskId, Long userId) { + List list = baseMapper.selectList(Wrappers.lambdaQuery().eq(BgtProjectRecruitApply::getTaskId, taskId) .eq(BgtProjectRecruitApply::getUserId, userId)); - return list.get(0); + return CollectionUtil.isNotEmpty(list)?list.get(0):new BgtProjectRecruitApply(); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java index 6b45d94..88aad65 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/impl/BgtProjectRecruitServiceImpl.java @@ -7,7 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.bgt.bo.BgtProjectRecruitQueryBo; import com.ruoyi.bgt.domain.BgtProjectRecruit; -import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; +import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyUserDTO; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitQueryDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitDetailVO; @@ -139,14 +140,23 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl queryVOPage = baseMapper.appQueryPageList(queryDTOPage, dto); for(BgtProjectRecruitVO vo : queryVOPage.getRecords()) { - BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO(); - bgtProjectRecruitApplyQueryDTO.setRecruitIds(Collections.singletonList(vo.getId())); - bgtProjectRecruitApplyQueryDTO.setStatus(applyStatus); - vo.setApplyList(bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO)); + BgtProjectRecruitApplyUserDTO userDTO = new BgtProjectRecruitApplyUserDTO(); + userDTO.setPageNum(1); + userDTO.setPageSize(3); + userDTO.setRecruitId(vo.getId()); + + TableDataInfo page = bgtProjectRecruitApplyService.recruitApplyList(userDTO); + vo.setApplyList(page.getRows()); } return PageUtils.buildDataInfo(queryVOPage); } + @Override + public List appQueryList() { + return list(Wrappers.lambdaQuery() + .eq(BgtProjectRecruit::getUserId, SecurityUtils.getAppUserId())); + } + @Override public BgtProjectRecruitDetailVO appQueryById(Long id) { BgtProjectRecruit recruit = getById(id); @@ -157,19 +167,19 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpl bgtProjectRecruitApplyVOS = bgtProjectRecruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO); - vo.setTotalNum(bgtProjectRecruitApplyVOS.size()); - int count = (int)bgtProjectRecruitApplyVOS.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.BGT_PASS.getCode())).count(); - vo.setPassNum(count); - vo.setNotSelectNum(vo.getTotalNum()-vo.getPassNum()); - vo.setApplyList(bgtProjectRecruitApplyVOS.subList(0, Math.min(vo.getTotalNum(), 3))); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BgtProjectRecruitApply::getRecruitId, id); + wrapper.orderByDesc(BgtProjectRecruitApply::getCreateTime); + List list = bgtProjectRecruitApplyService.list(wrapper); + List bgtProjectRecruitApplyVOS = BeanUtil.copyToList(list, BgtProjectRecruitApplyVO.class); + + int count = (int)bgtProjectRecruitApplyVOS.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.SIGN_UP.getCode())).count(); + vo.setTotalNum(bgtProjectRecruitApplyVOS.size()); + vo.setNotSelectNum(count); + vo.setPassNum(vo.getTotalNum()-count); return vo; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java index 5b64e37..6a46032 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsProjectTaskService.java @@ -1,6 +1,9 @@ package com.ruoyi.fbs.service; +import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; +import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; +import com.ruoyi.bgt.domain.vo.BgtProjectTaskUseCountVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.fbs.bo.FbsProjectTaskQueryBo; @@ -92,6 +95,16 @@ public interface IFbsProjectTaskService extends IServicePlus { */ AppTaskDetailRecruitVO recruit(Long id); + /** + * 任务详情-务工人员分页 + */ + TableDataInfo taskUserList(BgtProjectTaskUserDTO dto); + + /** + * 任务详情-务工人员统计 + */ + BgtProjectTaskUseCountVO taskUserCount(Long id); + /** * 查询所有在进行中的任务 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java index 203fdcc..e60db60 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsProjectTaskServiceImpl.java @@ -6,15 +6,14 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.bgt.bo.BgtProjectRecruitQueryBo; -import com.ruoyi.bgt.domain.BgtProjectRecruit; -import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; +import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO; import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO; import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; +import com.ruoyi.bgt.domain.vo.BgtProjectTaskUseCountVO; import com.ruoyi.bgt.domain.vo.BgtWageApplicationListVO; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; -import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.bgt.service.IBgtProjectTaskProgressService; import com.ruoyi.bgt.service.IBgtWageApplicationService; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; @@ -43,10 +42,8 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** * 分包商项目任务Service业务层处理 @@ -59,8 +56,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl recruitIds = recruitService.queryList(bgtProjectRecruitQueryBo).stream().map(BgtProjectRecruit::getId).collect(Collectors.toList()); - BgtProjectRecruitApplyQueryDTO bgtProjectRecruitApplyQueryDTO = new BgtProjectRecruitApplyQueryDTO(); - bgtProjectRecruitApplyQueryDTO.setRecruitIds(recruitIds); - bgtProjectRecruitApplyQueryDTO.setStatus(Collections.singletonList(RecruitApplyStatus.WORKING.getCode())); - List vos = recruitApplyService.appQueryList(bgtProjectRecruitApplyQueryDTO); - appTaskDetailVO.setTotal(vos.size()); - appTaskDetailVO.setApplyList(vos.subList(0, Math.min(vos.size(), 3))); + BgtProjectTaskUserDTO dto = new BgtProjectTaskUserDTO(); + dto.setPageNum(1); + dto.setPageSize(3); + dto.setTaskId(id); + TableDataInfo page = recruitApplyService.taskUserList(dto); + appTaskDetailVO.setTotal((int)page.getTotal()); + appTaskDetailVO.setApplyList(page.getRows()); return appTaskDetailVO; } + @Override + public TableDataInfo taskUserList(BgtProjectTaskUserDTO dto) { + return recruitApplyService.taskUserList(dto); + } + + @Override + public BgtProjectTaskUseCountVO taskUserCount(Long id) { + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BgtProjectRecruitApply::getTaskId, id); + wrapper.in(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.getTaskStatus()); + List list = recruitApplyService.list(wrapper); + long wgzPassNum = list.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.WGZ_PASS.getCode())).count(); + long outWorkNum = list.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.OUT_WORK.getCode())).count(); + long workingNum = list.stream().filter(apply -> apply.getStatus().equals(RecruitApplyStatus.WORKING.getCode())).count(); + return new BgtProjectTaskUseCountVO(wgzPassNum,workingNum,outWorkNum); + } @Override public List findOngoingTask() { diff --git a/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java b/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java index 88147d3..57d99e5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java +++ b/ruoyi-system/src/main/java/com/ruoyi/task/BusinessTask.java @@ -96,7 +96,7 @@ public class BusinessTask { Console.log("开始招工进场任务"); recruitApplyService.lambdaUpdate() - .eq(BgtProjectRecruitApply::getEntryTime, LocalDate.now()) + .le(BgtProjectRecruitApply::getEntryTime, LocalDate.now()) .eq(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.WGZ_PASS.getCode()) .set(BgtProjectRecruitApply::getStatus,RecruitApplyStatus.BGT_REFUSE.getCode()) .update(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzAttendanceService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzAttendanceService.java index d57c353..807991c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzAttendanceService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzAttendanceService.java @@ -3,7 +3,7 @@ package com.ruoyi.wgz.service; import com.ruoyi.bgt.domain.dto.BgtAttendanceDTO; import com.ruoyi.bgt.domain.dto.BgtAttendanceDetailDTO; import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO; -import com.ruoyi.bgt.domain.vo.BgtAttendanceDetailVO; +import com.ruoyi.bgt.domain.vo.BgtAttendancePersonCountVO; import com.ruoyi.bgt.domain.vo.BgtAttendanceVO; import com.ruoyi.bgt.domain.vo.BgtDayAttendanceCountVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; @@ -121,9 +121,9 @@ public interface IWgzAttendanceService extends IServicePlus { /** * 总体考勤情况-统计 */ - BgtAttendanceVO attendanceDetail(BgtAttendanceDTO dto); + BgtAttendanceVO allCount(BgtAttendanceDTO dto); - List attendanceList(BgtAttendanceDTO dto); + List histogram(BgtAttendanceDTO dto); /** * 考勤详情,查询指定用户指定项目的指定天数考勤情况统计(如若用户输入20,但实际只有2天出勤); @@ -132,9 +132,9 @@ public interface IWgzAttendanceService extends IServicePlus { Integer attendanceDetail(Long userId,Long recruitId, Integer num); /** - * 考勤统计详情 + * 务工者个人考勤统计 */ - BgtAttendanceDetailVO bgtAttendanceDetail(BgtAttendanceDetailDTO dto); + BgtAttendancePersonCountVO personCount(BgtAttendanceDetailDTO dto); /** * 添加缺卡记录 diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java index ec6d4ec..d815788 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzAttendanceServiceImpl.java @@ -31,7 +31,6 @@ import com.ruoyi.wgz.bo.rests.WgzAppCardReplacementApplicationTwo; import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordThree; import com.ruoyi.wgz.bo.rests.WgzAppPunchTheCalendarRecordTwo; import com.ruoyi.wgz.domain.WgzAttendance; -import com.ruoyi.wgz.domain.WgzUser; import com.ruoyi.wgz.mapper.WgzAttendanceMapper; import com.ruoyi.wgz.service.IWgzAttendanceService; import com.ruoyi.wgz.service.IWgzLeaveService; @@ -416,9 +415,7 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl attendanceList(BgtAttendanceDTO dto) { + public List histogram(BgtAttendanceDTO dto) { FbsProjectTask task = taskService.getById(dto.getTaskId()); validTaskTime(task, dto.getDate()); @@ -604,103 +601,100 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl bgtProjectRecruits = iBgtProjectRecruitService.getBaseMapper().selectList(Wrappers.lambdaQuery() .eq(BgtProjectRecruit::getTaskId, dto.getTaskId())); List recruitIds = bgtProjectRecruits.stream().map(BgtProjectRecruit::getId).collect(Collectors.toList()); - BgtProjectRecruitApply recruitApply = iBgtProjectRecruitApplyService.getOne(recruitIds.get(0),wgzUser.getUserId()); - bgtAttendanceDetailVO.setEntryTime(recruitApply.getEntryTime()); - bgtAttendanceDetailVO.setStatus(recruitApply.getStatus()); - + //查询该务工者在这个项目里指定月份的所有考勤数据 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(WgzAttendance::getUserId, dto.getUserId()); - wrapper.in(WgzAttendance::getRecruitId, recruitIds); LocalDate date = dto.getDate(); LocalDate startDate = date.with(TemporalAdjusters.firstDayOfMonth()); LocalDate endData = date.with(TemporalAdjusters.lastDayOfMonth()); wrapper.between(WgzAttendance::getDate, startDate, endData); List wgzAttendances = baseMapper.selectList(wrapper); - // 创建SimpleDateFormat对象,格式化日期为中文星期 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE", Locale.CHINA); //获取招工打卡时间 List list = iBgtProjectRecruitService.list(Wrappers.lambdaQuery().in(BgtProjectRecruit::getId,recruitIds)); Map recruitMap = list.stream().collect(Collectors.toMap(BgtProjectRecruit::getId, recruit -> recruit)); + // 创建SimpleDateFormat对象,格式化日期为中文星期 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE", Locale.CHINA); + //考勤数据分类 List lateRecords = new ArrayList<>(); List earlyLeaveRecords = new ArrayList<>(); List missRecords = new ArrayList<>(); List records = new ArrayList<>(); - for (WgzAttendance wgzAttendance : wgzAttendances) { + + //上下班时间 + BgtProjectRecruit recruit = recruitMap.get(wgzAttendance.getRecruitId()); + LocalTime beginWorkTime = recruit.getBeginWorkTime(); + LocalTime endWorkTime = recruit.getEndWorkTime(); + //上下班打卡时间 + LocalDateTime clockInTime = wgzAttendance.getClockInTime(); + LocalDateTime clockOutTime = wgzAttendance.getClockOutTime(); + WgzAttendanceRecordVO recordVO = new WgzAttendanceRecordVO(); recordVO.setDate(wgzAttendance.getDate()); recordVO.setWeek(wgzAttendance.getDate().format(formatter)); - if (wgzAttendance.getMissedIn() == 0 && wgzAttendance.getMissedOut() == 0) { + //统计出勤天数 + if (clockInTime != null && clockOutTime != null) { recordVO.setDay(1D); records.add(recordVO); - } else if (wgzAttendance.getMissedIn() == 1 && wgzAttendance.getMissedOut() == 1) { + } else if (clockInTime == null && clockOutTime == null) { recordVO.setDay(0D); } else { recordVO.setDay(0.5D); records.add(recordVO); } - BgtProjectRecruit recruit = recruitMap.get(wgzAttendance.getRecruitId()); - LocalDateTime clockInTime = wgzAttendance.getClockInTime(); - LocalDateTime clockOutTime = wgzAttendance.getClockOutTime(); - LocalTime beginWorkTime = recruit.getBeginWorkTime(); - LocalTime endWorkTime = recruit.getEndWorkTime(); + //统计迟到天数 if (wgzAttendance.getLate() == 1) { WgzAttendanceRecordVO LateRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); LateRecordVO.setTime(clockInTime.toLocalTime()); LateRecordVO.setMinutes(DataUtil.getMinutes(clockInTime, beginWorkTime)); lateRecords.add(LateRecordVO); } + //统计早退天数 if (wgzAttendance.getEarlyLeave() == 1) { WgzAttendanceRecordVO earlyLeaveRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); earlyLeaveRecordVO.setTime(clockOutTime.toLocalTime()); earlyLeaveRecordVO.setMinutes(DataUtil.getMinutes(clockOutTime, endWorkTime)); earlyLeaveRecords.add(earlyLeaveRecordVO); } - + //统计缺卡天数 if (wgzAttendance.getMissedIn() == 1) { WgzAttendanceRecordVO missRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); missRecordVO.setTime(beginWorkTime); missRecords.add(missRecordVO); } - if (wgzAttendance.getMissedOut() == 1) { WgzAttendanceRecordVO missRecordVO = BeanUtil.copyProperties(recordVO, WgzAttendanceRecordVO.class); missRecordVO.setTime(endWorkTime); missRecords.add(missRecordVO); } } + //出勤数据 bgtAttendanceDetailVO.setDayNum(records.stream().mapToDouble(WgzAttendanceRecordVO::getDay).sum()); - + //迟到数据 bgtAttendanceDetailVO.setLateNum(lateRecords.size()); bgtAttendanceDetailVO.setLateMinute(lateRecords.stream().mapToInt(WgzAttendanceRecordVO::getMinutes).sum()); bgtAttendanceDetailVO.setLateRecords(lateRecords); - + //早退数据 bgtAttendanceDetailVO.setEarlyLeaveNum(earlyLeaveRecords.size()); bgtAttendanceDetailVO.setEarlyLeaveMinute(earlyLeaveRecords.stream().mapToInt(WgzAttendanceRecordVO::getMinutes).sum()); bgtAttendanceDetailVO.setEarlyLeaveRecords(earlyLeaveRecords); - + //缺卡数据 bgtAttendanceDetailVO.setMissNum(missRecords.size()); bgtAttendanceDetailVO.setMissRecords(missRecords); return bgtAttendanceDetailVO; - - } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java index 866db30..74ec327 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzReissueacardServiceImpl.java @@ -251,12 +251,18 @@ public class WgzReissueacardServiceImpl extends ServicePlusImpl + + + + + + diff --git a/ruoyi-ui/.env.development b/ruoyi-ui/.env.development index d458b86..af0322b 100644 --- a/ruoyi-ui/.env.development +++ b/ruoyi-ui/.env.development @@ -5,7 +5,7 @@ VUE_APP_TITLE = RuoYi-Vue-Plus后台管理系统 ENV = 'development' # 若依管理系统/开发环境 -VUE_APP_BASE_API = 'http://127.0.0.1:9099/ruoyi' +VUE_APP_BASE_API = 'http://192.168.110.3:9099/ruoyi' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/ruoyi-ui/.env.production b/ruoyi-ui/.env.production index 7179b32..3e61984 100644 --- a/ruoyi-ui/.env.production +++ b/ruoyi-ui/.env.production @@ -5,4 +5,4 @@ VUE_APP_TITLE = RuoYi-Vue-Plus后台管理系统 ENV = 'production' # 若依管理系统/生产环境 -VUE_APP_BASE_API = '/prod-api' +VUE_APP_BASE_API = 'http://192.168.110.3:9099/ruoyi' diff --git a/ruoyi/uploadPath/avatar/2025/03/05/0b763eb9-ad8f-4de3-a500-38712da4379a.jpeg b/ruoyi/uploadPath/avatar/2025/03/05/0b763eb9-ad8f-4de3-a500-38712da4379a.jpeg new file mode 100644 index 0000000..49e04ab Binary files /dev/null and b/ruoyi/uploadPath/avatar/2025/03/05/0b763eb9-ad8f-4de3-a500-38712da4379a.jpeg differ diff --git a/ruoyi/uploadPath/avatar/2025/03/05/ddf71042-98f8-49e3-9ed2-a2a82bb55d32.jpeg b/ruoyi/uploadPath/avatar/2025/03/05/ddf71042-98f8-49e3-9ed2-a2a82bb55d32.jpeg new file mode 100644 index 0000000..ce1bf32 Binary files /dev/null and b/ruoyi/uploadPath/avatar/2025/03/05/ddf71042-98f8-49e3-9ed2-a2a82bb55d32.jpeg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/0b99bdf7-d34d-4fe6-bfb9-460022cc6063.jpg b/ruoyi/uploadPath/upload/2025/02/27/0b99bdf7-d34d-4fe6-bfb9-460022cc6063.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/0b99bdf7-d34d-4fe6-bfb9-460022cc6063.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/111642bd-7cd1-44e7-b8e5-e7a37b66b094.jpg b/ruoyi/uploadPath/upload/2025/02/27/111642bd-7cd1-44e7-b8e5-e7a37b66b094.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/111642bd-7cd1-44e7-b8e5-e7a37b66b094.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/3b07135f-f4ea-458d-8ac4-407d5ab56a57.jpg b/ruoyi/uploadPath/upload/2025/02/27/3b07135f-f4ea-458d-8ac4-407d5ab56a57.jpg new file mode 100644 index 0000000..0fe5706 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/3b07135f-f4ea-458d-8ac4-407d5ab56a57.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/501c7607-aaba-4a8d-a101-df40cd297bf1.jpg b/ruoyi/uploadPath/upload/2025/02/27/501c7607-aaba-4a8d-a101-df40cd297bf1.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/501c7607-aaba-4a8d-a101-df40cd297bf1.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/54f58cd8-18b2-4075-8639-a2dbe2832698.jpg b/ruoyi/uploadPath/upload/2025/02/27/54f58cd8-18b2-4075-8639-a2dbe2832698.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/54f58cd8-18b2-4075-8639-a2dbe2832698.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/5d0cccd6-bbe9-424c-b57d-8a981a9d3efa.jpg b/ruoyi/uploadPath/upload/2025/02/27/5d0cccd6-bbe9-424c-b57d-8a981a9d3efa.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/5d0cccd6-bbe9-424c-b57d-8a981a9d3efa.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/a7d90268-4652-42da-b061-c016202ea2e8.jpg b/ruoyi/uploadPath/upload/2025/02/27/a7d90268-4652-42da-b061-c016202ea2e8.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/a7d90268-4652-42da-b061-c016202ea2e8.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/27/de01533a-f297-480f-b28d-71cfcf1f38f4.jpg b/ruoyi/uploadPath/upload/2025/02/27/de01533a-f297-480f-b28d-71cfcf1f38f4.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/de01533a-f297-480f-b28d-71cfcf1f38f4.jpg differ diff --git a/ruoyi/uploadPath/upload/2025/02/28/3f0389d1-76d9-4867-befa-b309015bd888.pdf b/ruoyi/uploadPath/upload/2025/02/28/3f0389d1-76d9-4867-befa-b309015bd888.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/28/3f0389d1-76d9-4867-befa-b309015bd888.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/02/28/8015aadc-dda1-467e-8a05-4783e7233fce.pdf b/ruoyi/uploadPath/upload/2025/02/28/8015aadc-dda1-467e-8a05-4783e7233fce.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/28/8015aadc-dda1-467e-8a05-4783e7233fce.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/02/28/cab203b6-6309-4565-b66a-dd66ef35e0d3.pdf b/ruoyi/uploadPath/upload/2025/02/28/cab203b6-6309-4565-b66a-dd66ef35e0d3.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/28/cab203b6-6309-4565-b66a-dd66ef35e0d3.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/02/28/cc9c0802-27f4-445c-9e5c-7d7cc9dc3df7.pdf b/ruoyi/uploadPath/upload/2025/02/28/cc9c0802-27f4-445c-9e5c-7d7cc9dc3df7.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/28/cc9c0802-27f4-445c-9e5c-7d7cc9dc3df7.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/03/04/0904b634-01a5-411d-8ff6-bfb4c81ce566.pdf b/ruoyi/uploadPath/upload/2025/03/04/0904b634-01a5-411d-8ff6-bfb4c81ce566.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/03/04/0904b634-01a5-411d-8ff6-bfb4c81ce566.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/03/04/3b76be6b-1a32-47dd-8424-dc8d516103f2.pdf b/ruoyi/uploadPath/upload/2025/03/04/3b76be6b-1a32-47dd-8424-dc8d516103f2.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/03/04/3b76be6b-1a32-47dd-8424-dc8d516103f2.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/03/04/586c1a01-c313-4dc1-83ce-fe98fb211eb1.pdf b/ruoyi/uploadPath/upload/2025/03/04/586c1a01-c313-4dc1-83ce-fe98fb211eb1.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/03/04/586c1a01-c313-4dc1-83ce-fe98fb211eb1.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/03/04/9fe33348-0bb3-4af0-b2cc-15acab62f9aa.pdf b/ruoyi/uploadPath/upload/2025/03/04/9fe33348-0bb3-4af0-b2cc-15acab62f9aa.pdf new file mode 100644 index 0000000..be39a00 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/03/04/9fe33348-0bb3-4af0-b2cc-15acab62f9aa.pdf differ diff --git a/ruoyi/uploadPath/upload/2025/03/06/1140bbd1-0a02-412e-9887-36aa231f4f8c.png b/ruoyi/uploadPath/upload/2025/03/06/1140bbd1-0a02-412e-9887-36aa231f4f8c.png new file mode 100644 index 0000000..57d7c83 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/03/06/1140bbd1-0a02-412e-9887-36aa231f4f8c.png differ diff --git a/ruoyi/uploadPath/upload/2025/03/06/5efe5883-0af4-489b-9726-eb19d60269c7.png b/ruoyi/uploadPath/upload/2025/03/06/5efe5883-0af4-489b-9726-eb19d60269c7.png new file mode 100644 index 0000000..57d7c83 Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/03/06/5efe5883-0af4-489b-9726-eb19d60269c7.png differ