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 dcf698e..0f51d82 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 @@ -34,6 +34,8 @@ 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; @@ -363,7 +365,46 @@ public class WgzAppController { @ApiOperation("【首页】【项目进行中】 项目进行中") @PreAuthorize("@ss.hasPermi('wgzApp:user:userUnderway')") @GetMapping("/WgzAppUserUnderway") - public TableDataInfo userUnderway(@Validated WgzAppUnderwayReq req) { + public TableDataInfo userUnderway(@Validated WgzAppUnderwayReq req) { + return iBgtProjectRecruitApplyService.userUnderway(req); + } + + /** + * 【首页】【项目进行中】 项目进行中·申请工资结算(查询) + */ + @ApiOperation("【首页】【项目进行中】 项目进行中·申请工资结算(查询)") + @PreAuthorize("@ss.hasPermi('wgzApp:user:userApplyForPayrollSettlementFind')") + @GetMapping("/WgzAppUserApplyForPayrollSettlementFind") + public AjaxResult userApplyForPayrollSettlementFind(@Validated WgzApplyForPayrollSettlementFindReq req) { + Long appUserId = SecurityUtils.getAppUserId(); + BgtProjectRecruitApply by = iBgtProjectRecruitApplyService.selectByUserIdProjectRecruitApplyId(appUserId); + BgtProjectRecruit appById = iBgtProjectRecruitService.getAppById(by.getId()); + //1、查询入场时间、退场时间、单天金额 + BigDecimal recruitAmount = appById.getRecruitAmount(); + //2、查询实际考勤时间(只要有打卡就算出勤一条,异常也视为正常出勤,也就是说只要有上班or下班至少有一个有数据,那就证明出勤ok) + Integer i = iWgzAttendanceService.attendanceDetail(appUserId, appById.getId(), 1); + if (i == 0){ + throw new RuntimeException("您还未打卡"); + } + //3、单天金额*实际考勤总天数=实际工资 + BigDecimal totalAmount = recruitAmount.multiply(BigDecimal.valueOf(i)); + WgzApplyForPayrollSettlementFindRes res = new WgzApplyForPayrollSettlementFindRes(). + setEntryTime(by.getEntryTime()). + setLeaveTime(by.getLeaveTime()). + setAmount(recruitAmount). + setNum(i). + setTotalAmount(totalAmount); + return AjaxResult.success(res); + } + + /** + * 【首页】【项目进行中】 项目进行中·申请工资结算(新增) + */ + @ApiOperation("【首页】【项目进行中】 项目进行中·申请工资结算(新增)") + @PreAuthorize("@ss.hasPermi('wgzApp:user:userApplyForPayrollSettlementAdd')") + @GetMapping("/WgzAppUserApplyForPayrollSettlementAdd") + public AjaxResult userApplyForPayrollSettlementAdd(@Validated WgzApplyForPayrollSettlementFindReq req) { + return null; } 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 f1cbddc..b94fc14 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 @@ -1,10 +1,13 @@ package com.ruoyi.bgt.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq; +import com.ruoyi.wgz.bo.res.WgzAppUnderwayRes; import org.apache.ibatis.annotations.CacheNamespace; import org.apache.ibatis.annotations.Param; @@ -21,4 +24,7 @@ import java.util.List; public interface BgtProjectRecruitApplyMapper extends BaseMapperPlus { List appQueryList(@Param("dto") BgtProjectRecruitApplyQueryDTO dto); + + // 获取指定项目下的所有成员(分页) + Page underwayPage (@Param("page") Page page, @Param("userId") Long userId); } 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 472e8a5..0250ebe 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 @@ -7,9 +7,11 @@ 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.wgz.bo.req.WgzAppRegisteredProjectReq; +import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq; import com.ruoyi.wgz.bo.res.WgzAppCancelRegistrationProjectDetailsRes; import com.ruoyi.wgz.bo.res.WgzAppProjectDetailsRes; import com.ruoyi.wgz.bo.res.WgzAppRegisteredProjectRes; +import com.ruoyi.wgz.bo.res.WgzAppUnderwayRes; import com.ruoyi.wgz.bo.rests.WgzAppCancelRegistrationProjectDetailsTwo; import org.apache.ibatis.annotations.CacheNamespace; import org.apache.ibatis.annotations.Param; @@ -30,7 +32,9 @@ public interface BgtProjectRecruitMapper extends BaseMapperPlus userRegisteredProject(@Param("page") Page page,@Param("userId") Long userId); + // 获取指定项目下的所有成员 List GetsTheMembersUnderTheCurrentProject (@Param("recruitId") Long recruitId); } 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 5f3333e..886dad7 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 @@ -7,6 +7,9 @@ import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO; import com.ruoyi.bgt.domain.vo.BgtProjectRecruitApplyVO; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq; +import com.ruoyi.wgz.bo.res.WgzAppUnderwayRes; +import org.springframework.validation.annotation.Validated; import java.util.Collection; import java.util.List; @@ -89,5 +92,10 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus userUnderway(@Validated WgzAppUnderwayReq req); + } 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 b2bb5a9..38c8c22 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 @@ -20,6 +20,9 @@ import com.ruoyi.common.exception.BaseException; import com.ruoyi.common.service.IAnnexService; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.wgz.bo.req.WgzAppRegisteredProjectReq; +import com.ruoyi.wgz.bo.req.WgzAppUnderwayReq; +import com.ruoyi.wgz.bo.res.WgzAppUnderwayRes; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -176,4 +179,14 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl().eq(BgtProjectRecruitApply::getRecruitId, recruitId)) >0; } + + @Override + public TableDataInfo userUnderway(WgzAppUnderwayReq req) { + Long userId = SecurityUtils.getAppUserId(); + Page pe = new Page<>(); + pe.setCurrent(req.getPageNum()); + pe.setSize(req.getPageSize()); + return PageUtils.buildDataInfo(baseMapper.underwayPage(pe, userId)); + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUnderwayReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUnderwayReq.java index ba676ed..d813672 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUnderwayReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzAppUnderwayReq.java @@ -2,15 +2,19 @@ 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 @Accessors(chain = true) @ApiModel("项目进行中请求对象") public class WgzAppUnderwayReq extends PageReq { + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzApplyForPayrollSettlementFindReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzApplyForPayrollSettlementFindReq.java new file mode 100644 index 0000000..421a4d5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzApplyForPayrollSettlementFindReq.java @@ -0,0 +1,21 @@ +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 java.io.Serializable; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("工作结算查询请求对象") +public class WgzApplyForPayrollSettlementFindReq implements Serializable { + @ApiModelProperty("招工ID") + private Long recruitId; + + @ApiModelProperty("工资结算天数") + private int num; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUnderwayRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUnderwayRes.java new file mode 100644 index 0000000..4276642 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzAppUnderwayRes.java @@ -0,0 +1,55 @@ +package com.ruoyi.wgz.bo.res; + +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 +@Accessors(chain = true) +@ApiModel("项目进行中返回对象") +public class WgzAppUnderwayRes implements Serializable { + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("项目ID") + private Long projectId; + + @ApiModelProperty("招工名称") + private String recruitName; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + @ApiModelProperty("封面图(多个逗号分隔)") + private String coverPlan; + + @ApiModelProperty("招工数量") + private Integer recruitStaffNum; + + @ApiModelProperty("招工金额") + private BigDecimal recruitAmount; + + @ApiModelProperty("任务ID") + private Long taskId; + + @ApiModelProperty("任务名称") + private String taskName; + + @ApiModelProperty("任务地址") + private String taskAddress; + + @ApiModelProperty("招工要求") + private String recruitRequirement; + + @ApiModelProperty("已报名数量") + private Integer numberOfRegistered; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzApplyForPayrollSettlementFindRes.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzApplyForPayrollSettlementFindRes.java new file mode 100644 index 0000000..05a508d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/res/WgzApplyForPayrollSettlementFindRes.java @@ -0,0 +1,32 @@ +package com.ruoyi.wgz.bo.res; + +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.LocalDate; + +@Data +@NoArgsConstructor +@Accessors(chain = true) +@ApiModel("工资结算查询返回") +public class WgzApplyForPayrollSettlementFindRes implements Serializable { + @ApiModelProperty("进场时间") + private LocalDate entryTime; + + @ApiModelProperty("离场时间") + private LocalDate leaveTime; + + @ApiModelProperty("单天金额") + private BigDecimal amount; + + @ApiModelProperty("出勤天数") + private Integer num; + + @ApiModelProperty("总的金额") + private BigDecimal TotalAmount; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/GetsTheMembersUnderTheCurrentProject.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/GetsTheMembersUnderTheCurrentProject.java new file mode 100644 index 0000000..5d65be7 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/GetsTheMembersUnderTheCurrentProject.java @@ -0,0 +1,6 @@ +package com.ruoyi.wgz.bo.rests; + +import java.io.Serializable; + +public class GetsTheMembersUnderTheCurrentProject implements Serializable { +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppCancelRegistrationProjectDetailsTwo.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppCancelRegistrationProjectDetailsTwo.java index ef9f206..6f96b42 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppCancelRegistrationProjectDetailsTwo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/rests/WgzAppCancelRegistrationProjectDetailsTwo.java @@ -21,6 +21,9 @@ public class WgzAppCancelRegistrationProjectDetailsTwo implements Serializable { @ApiModelProperty("务工者ID") private Long userId; + @ApiModelProperty("0报名 1包工同意 2包工头拒绝(截止时间)3务工者同意 4务工者拒绝 5进场 6离场") + private String status; + @ApiModelProperty("务工者名称") private String username; 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 3047324..626dcf0 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 @@ -114,5 +114,9 @@ public interface IWgzAttendanceService extends IServicePlus { */ BgtAttendanceVO attendanceDetail(BgtAttendanceDTO dto); + /** + * 考勤详情,查询指定用户指定项目的指定天数考勤情况统计(如若用户输入20,但实际只有2天出勤) + */ + Integer attendanceDetail(Long userId,Long recruitId, Integer num); } 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 7ba74a4..4941ffa 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 @@ -309,6 +309,20 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl apply = new LambdaQueryWrapper(). + eq(WgzAttendance::getUserId, userId). + eq(WgzAttendance::getRecruitId, recruitId).and(wrapper -> wrapper + .isNotNull(WgzAttendance::getClockInTime) + .or() + .isNotNull(WgzAttendance::getClockOutTime) + ); + apply.orderByAsc(WgzAttendance::getDate); + apply.last("LIMIT " + num); + return baseMapper.selectCount(apply); + } + @Override public List countByTaskId(Long taskId, LocalDate beginDate, LocalDate endDate) { return baseMapper.countByTaskId(taskId, beginDate, endDate); diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml index 8fb27cb..c4b4304 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml @@ -29,4 +29,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml index 0304c29..753d9c7 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitMapper.xml @@ -56,21 +56,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"