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 4299478..df1ed50 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 @@ -3,14 +3,11 @@ import com.ruoyi.bgt.domain.BgtProjectRecruit; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; - import com.ruoyi.bgt.domain.dto.BgtProjectRecruitQueryDTO; - import com.ruoyi.bgt.domain.vo.BgtProjectRecruitVO; import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.bgt.service.IBgtUserService; import com.ruoyi.common.bo.AnnexQueryBo; import com.ruoyi.common.core.domain.AjaxResult; - import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.entity.BgtUser; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.page.TableDataInfo; @@ -18,30 +15,25 @@ import com.ruoyi.common.service.IAnnexService; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.system.service.ISysDictTypeService; - import com.ruoyi.web.controller.bgt.BgtUserController; 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.domain.WgzDailyClock; import com.ruoyi.wgz.domain.WgzPayCalculation; import com.ruoyi.wgz.domain.WgzQuestionsConfiguration; import com.ruoyi.wgz.service.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; - import lombok.var; 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.NotEmpty; import javax.validation.constraints.NotNull; import java.math.BigDecimal; - import java.time.LocalDate; import java.time.LocalTime; import java.util.ArrayList; import java.util.HashMap; @@ -327,6 +319,16 @@ return iWgzReissueacardService.userReplacementCardRecord(req); } + /** + * 【考勤打卡】【打卡日历】 补卡记录·详情 + */ + @ApiOperation("【考勤打卡】【打卡日历】 补卡记录·详情)") + //@PreAuthorize("@ss.hasPermi('wgzApp:user:userReplacementCardRecordDetails')") + @GetMapping("/WgzAppUserReplacementCardRecordDetails/{id}") + public AjaxResult userReplacementCardRecordDetails(@NotNull(message = "主键不能为空") @PathVariable("id") Long id) { + return AjaxResult.success(iWgzReissueacardService.userReplacementCardRecordDetails(id)); + } + /** * 【首页】【项目详情】 项目详情 */ @@ -372,9 +374,9 @@ */ @ApiOperation("【首页】【已报名项目】 已报名项目·项目详情") //@PreAuthorize("@ss.hasPermi('wgzApp:user:userCancelRegistrationProjectDetails')") - @GetMapping("/WgzAppUserCancelRegistrationProjectDetails/{recruitId}") - public AjaxResult userCancelRegistrationProjectDetails(@NotEmpty(message = "招工主键不能为空") @PathVariable Long recruitId) { - return AjaxResult.success(iBgtProjectRecruitService.userCancelRegistrationProjectDetails(recruitId)); + @GetMapping("/WgzAppUserCancelRegistrationProjectDetails") + public AjaxResult userCancelRegistrationProjectDetails(@Validated WgzAppUserCancelRegistrationProjectDetailsReq req) { + return AjaxResult.success(iBgtProjectRecruitService.userCancelRegistrationProjectDetails(req)); } /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java index 16c73c1..2751667 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitMapper.java @@ -6,11 +6,8 @@ import com.ruoyi.bgt.domain.dto.BgtProjectRecruitQueryDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitVO; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.wgz.bo.req.WgzAppGetMessageListReq; import com.ruoyi.wgz.bo.req.WgzAppJobListingReq; import com.ruoyi.wgz.bo.req.WgzAppRegisteredProjectReq; -import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq; import com.ruoyi.wgz.bo.res.*; import com.ruoyi.wgz.bo.rests.WgzAppCancelRegistrationProjectDetailsTwo; import org.apache.ibatis.annotations.CacheNamespace; diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitService.java index 034ccc4..dd4f66e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitService.java @@ -10,6 +10,7 @@ import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wgz.bo.req.WgzAppJobListingReq; import com.ruoyi.wgz.bo.req.WgzAppRegisteredProjectReq; +import com.ruoyi.wgz.bo.req.WgzAppUserCancelRegistrationProjectDetailsReq; import com.ruoyi.wgz.bo.res.WgzAppCancelRegistrationProjectDetailsRes; import com.ruoyi.wgz.bo.res.WgzAppJobListingRes; import com.ruoyi.wgz.bo.res.WgzAppProjectDetailsRes; @@ -122,7 +123,7 @@ public interface IBgtProjectRecruitService extends IServicePlus pe = new Page<>(); pe.setCurrent(req.getPageNum()); pe.setSize(req.getPageSize()); - return PageUtils.buildDataInfo(baseMapper.userRegisteredProject(pe, userId)); + TableDataInfo wgzAppRegisteredProjectResTableDataInfo = PageUtils.buildDataInfo(baseMapper.userRegisteredProject(pe, userId)); + wgzAppRegisteredProjectResTableDataInfo.getRows().forEach(registeredProjectRes -> { + //1、获取当前用户的取消、满员、失效、同意、拒绝状态 + //1、获取当前项目下的成员 + List wgzUser = baseMapper.GetsTheMembersUnderTheCurrentProject(registeredProjectRes.getId()); + }); + return wgzAppRegisteredProjectResTableDataInfo; } @Override - public WgzAppCancelRegistrationProjectDetailsRes userCancelRegistrationProjectDetails(Long recruitId) { + public WgzAppCancelRegistrationProjectDetailsRes userCancelRegistrationProjectDetails(WgzAppUserCancelRegistrationProjectDetailsReq req) { + //0、获取当前用户 + Long appUserId = SecurityUtils.getAppUserId(); //1、获取项目基础信息 - WgzAppProjectDetailsRes wgzAppProjectDetailsRes = baseMapper.userProjectDetails(recruitId); + WgzAppProjectDetailsRes wgzAppProjectDetailsRes = baseMapper.userProjectDetails(req.getRecruitId()); //2、获取当前项目下的成员 List wgzUser = baseMapper.GetsTheMembersUnderTheCurrentProject(wgzAppProjectDetailsRes.getId()); //3、数据组装 @@ -237,6 +254,21 @@ public class BgtProjectRecruitServiceImpl extends ServicePlusImpllambdaQuery() + .in(WgzMessage::getSenderType, USERTYPE_BGT) + .in(WgzMessage::getSenderId, wgzAppProjectDetailsRes.getUserId()) + .in(WgzMessage::getRecipientType, USERTYPE_WGZ) + .in(WgzMessage::getRecipientId, appUserId) + .in(WgzMessage::getTableId, req.getRecruitApplyId()) + .in(WgzMessage::getTableName, SqlHelper.table(BgtProjectRecruitApply.class).getTableName()) + ); + res.setIsOperation(one.getIsOperation()); + res.setFull(wgzAppProjectDetailsRes.getStatus()); + //5、获取当前申请人是否操作的对应状态 + BgtProjectRecruitApply byId = bgtProjectRecruitApplyService.getById(req.getRecruitApplyId()); + res.setStatus(byId.getStatus()); return res; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/util/LocalDateToChineseWeekday.java b/ruoyi-system/src/main/java/com/ruoyi/common/util/LocalDateToChineseWeekday.java new file mode 100644 index 0000000..5cf95ac --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/util/LocalDateToChineseWeekday.java @@ -0,0 +1,26 @@ +package com.ruoyi.common.util; + +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.util.HashMap; +import java.util.Map; + +public class LocalDateToChineseWeekday { + public static String getChineseWeekday(LocalDate localDate) { + // 获取 LocalDate 对应的 DayOfWeek 枚举实例 + DayOfWeek dayOfWeek = localDate.getDayOfWeek(); + + // 定义一个映射关系,将 DayOfWeek 枚举值映射为中文的星期几 + Map weekdayMap = new HashMap<>(); + weekdayMap.put(DayOfWeek.MONDAY, "星期一"); + weekdayMap.put(DayOfWeek.TUESDAY, "星期二"); + weekdayMap.put(DayOfWeek.WEDNESDAY, "星期三"); + weekdayMap.put(DayOfWeek.THURSDAY, "星期四"); + weekdayMap.put(DayOfWeek.FRIDAY, "星期五"); + weekdayMap.put(DayOfWeek.SATURDAY, "星期六"); + weekdayMap.put(DayOfWeek.SUNDAY, "星期日"); + + // 根据映射关系获取对应的中文表示 + return weekdayMap.get(dayOfWeek); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppRegisteredProjectReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppRegisteredProjectReq.java index c6383a6..7909ceb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppRegisteredProjectReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppRegisteredProjectReq.java @@ -2,15 +2,10 @@ package com.ruoyi.wgz.bo.req; import com.ruoyi.common.bo.PageReq; 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.math.BigDecimal; -import java.time.LocalDateTime; - @Data @NoArgsConstructor diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUserCancelRegistrationProjectDetailsReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUserCancelRegistrationProjectDetailsReq.java new file mode 100644 index 0000000..d7ac999 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUserCancelRegistrationProjectDetailsReq.java @@ -0,0 +1,24 @@ +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.NotNull; +import java.io.Serializable; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("已报名项目·项目详情请求对象") +public class WgzAppUserCancelRegistrationProjectDetailsReq implements Serializable { + @ApiModelProperty("招工主键ID") + @NotNull + private Long recruitId; + + @ApiModelProperty("招工申请主键ID") + @NotNull + private Long recruitApplyId; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCancelRegistrationProjectDetailsRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCancelRegistrationProjectDetailsRes.java index e70ec07..efa35cf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCancelRegistrationProjectDetailsRes.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppCancelRegistrationProjectDetailsRes.java @@ -101,4 +101,16 @@ public class WgzAppCancelRegistrationProjectDetailsRes implements Serializable { @ApiModelProperty("招工地址") private String recruitAddress; + + //----------- + //----------- + //----------- + @ApiModelProperty("是否需要操作(0不需要 1需要 2已操作)") + private String isOperation; + + @ApiModelProperty("招工是否正常(0正常 1已招满 2已失效)") + private String full; + + @ApiModelProperty("务工者同意拒绝状态:3务工者同意 4务工者拒绝") + private String status; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppProjectDetailsRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppProjectDetailsRes.java index 53bf8b7..fb17441 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppProjectDetailsRes.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppProjectDetailsRes.java @@ -68,6 +68,12 @@ public class WgzAppProjectDetailsRes implements Serializable { @ApiModelProperty("联系电话") private String recruitContactPhone; + @ApiModelProperty("创建者") + private String userId; + + @ApiModelProperty("招工状态(1-进行中,2-已招满,3-已过期)") + private String status; + @ApiModelProperty("备注") private String remark; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java index cb0af66..c599499 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppRegisteredProjectRes.java @@ -20,12 +20,9 @@ import java.time.LocalTime; @Accessors(chain = true) @ApiModel("已报名项目返回对象") public class WgzAppRegisteredProjectRes implements Serializable { - @ApiModelProperty("招工ID") + @ApiModelProperty("招工主键ID") private Long id; -// @ApiModelProperty("招工ID") -// private Long projectId; - @ApiModelProperty("招工申请ID") private Long recruitApplyId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUserReplacementCardRecordDetailsRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUserReplacementCardRecordDetailsRes.java new file mode 100644 index 0000000..7002c8e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUserReplacementCardRecordDetailsRes.java @@ -0,0 +1,73 @@ +package com.ruoyi.wgz.bo.res; + +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; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("补卡记录·详情") +public class WgzAppUserReplacementCardRecordDetailsRes implements Serializable { + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("项目ID") + private Long recruitId; + + @ApiModelProperty("申请人ID") + private Long userId; + + @ApiModelProperty("申请人姓名") + private String userName; + + @ApiModelProperty("打卡ID") + private Long attendanceId; + + @ApiModelProperty("状态(0上班补卡 1下班补卡)") + private String type; + + @ApiModelProperty("项目名称") + private String recruitName; + + @ApiModelProperty("原打卡时间") + private String rawTime; + + @ApiModelProperty("现补卡时间") + private LocalDateTime nowTime; + + @ApiModelProperty("补卡理由") + private String reason; + + @ApiModelProperty("审核人ID") + private Long auditorUserId; + + @ApiModelProperty("审核人头像") + private String auditorHead; + + @ApiModelProperty("审核人名称") + private String auditorname; + + @ApiModelProperty("审核状态(0待审核 1审核中 2已同意 3已拒绝)") + private String auditorType; + + @ApiModelProperty("审核意见") + private String auditorOpinion; + + /** 同意|拒绝时间 */ + @Excel(name = "同意|拒绝时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("同意|拒绝时间") + private LocalDateTime auditorTime; + + + @ApiModelProperty("创建时间|申请时间") + private LocalDateTime createTime; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java index 6658d31..b4a618a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzReissueacardMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.wgz.mapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.bgt.domain.dto.BgtReissueacardListDTO; import com.ruoyi.wgz.bo.req.WgzAppReplacementCardRecordReq; +import com.ruoyi.wgz.bo.res.WgzAppUserReplacementCardRecordDetailsRes; import com.ruoyi.wgz.bo.res.WgzReplacementCardRecordRes; import com.ruoyi.wgz.domain.WgzReissueacard; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; @@ -28,4 +29,6 @@ public interface WgzReissueacardMapper extends BaseMapperPlus { Page appQueryPageList(@Param("page") Page page,@Param("dto") BgtReissueacardListDTO dto); + WgzAppUserReplacementCardRecordDetailsRes userReplacementCardRecordDetails(@Param("userId") Long id); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java index 31d1e3f..58f0e2b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/IWgzReissueacardService.java @@ -7,11 +7,14 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.wgz.bo.WgzReissueacardQueryBo; import com.ruoyi.wgz.bo.req.WgzAppCardReplacementApplicationReq; import com.ruoyi.wgz.bo.req.WgzAppReplacementCardRecordReq; +import com.ruoyi.wgz.bo.res.WgzAppUserReplacementCardRecordDetailsRes; import com.ruoyi.wgz.bo.res.WgzReplacementCardRecordRes; import com.ruoyi.wgz.domain.WgzReissueacard; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; +import javax.validation.constraints.NotNull; import java.util.Collection; import java.util.List; @@ -87,4 +90,6 @@ public interface IWgzReissueacardService extends IServicePlus { */ Boolean appUpdate(BgtReissueacardUpdateDTO dto); + WgzAppUserReplacementCardRecordDetailsRes userReplacementCardRecordDetails(Long id); + } 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 50ecb63..3b39f32 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 @@ -17,6 +17,7 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.BaseException; import com.ruoyi.common.util.DataUtil; +import com.ruoyi.common.util.LocalDateToChineseWeekday; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; @@ -333,17 +334,17 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl apply = new LambdaQueryWrapper(). eq(WgzAttendance::getUserId, appUserId). - eq(WgzAttendance::getRecruitId, by.getId()). - eq(WgzAttendance::getRecruitId, by.getId()) + eq(WgzAttendance::getRecruitId, appById.getId()) .and(wrapper -> wrapper .eq(WgzAttendance::getLate, 1) .or() @@ -371,7 +372,7 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl list) { LocalDate date = wgzAttendance.getDate(); - DayOfWeek dayOfWeek = date.getDayOfWeek(); - String week = dayOfWeek.toString(); + String chineseWeekday = LocalDateToChineseWeekday.getChineseWeekday(date); WgzAppCardReplacementApplicationTwo two = new WgzAppCardReplacementApplicationTwo() .setId(wgzAttendance.getId()) .setType(type) .setFillingData(date) - .setWeek(week) + .setWeek(chineseWeekday) .setFillingDataTime(fillingDataTime); list.add(two); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java index 2721abd..60ccccd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzMessageServiceImpl.java @@ -235,10 +235,10 @@ public class WgzMessageServiceImpl extends ServicePlusImpl + +