diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzApplyForPayrollSettlementAddReq.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzApplyForPayrollSettlementAddReq.java index c44e7e8..4118a44 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzApplyForPayrollSettlementAddReq.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/bo/req/WgzApplyForPayrollSettlementAddReq.java @@ -56,7 +56,7 @@ public class WgzApplyForPayrollSettlementAddReq implements Serializable { private BigDecimal recruitAmount; @ApiModelProperty("出勤天数") - private Long num; + private Integer num; @ApiModelProperty("务工状态") private String workingState; diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java index e7f09af..9577213 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/domain/WgzPayCalculation.java @@ -163,4 +163,7 @@ public class WgzPayCalculation implements Serializable { @ApiModelProperty("备注") private String remark; + + @ApiModelProperty("结算截止时间(后端用来判断最后一次结算的终止时间)") + private LocalDate cutOffTime; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java index 891ea16..aacc424 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/mapper/WgzMessageMapper.java @@ -25,7 +25,7 @@ import java.util.Map; @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface WgzMessageMapper extends BaseMapperPlus { - Page userGetMessageList(@Param("page") Page page); + Page userGetMessageList(@Param("page") Page page,@Param("req") WgzAppGetMessageListReq req); // //根据招工id获取到招工的信息+附件 WgzAppRegistrationInformationRes findByRecruitIdData(@Param("recruitId") Long recruitId); 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 be320b3..fd603c1 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 @@ -128,4 +128,10 @@ public interface IWgzAttendanceService extends IServicePlus { */ Boolean addAMissingCardRecord (List list); + + /** + * 获取对应用户指定天数的工资结算日期 + */ + LocalDate findByNumGetDate(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 e9b1881..e76a72b 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 @@ -10,6 +10,7 @@ import com.ruoyi.bgt.domain.BgtProjectRecruit; import com.ruoyi.bgt.domain.BgtProjectRecruitApply; import com.ruoyi.bgt.domain.dto.BgtAttendanceDTO; import com.ruoyi.bgt.domain.dto.BgtAttendanceDetailDTO; +import com.ruoyi.bgt.domain.dto.BgtPayCalculationDetailListVO; import com.ruoyi.bgt.domain.vo.BgtAttendanceCountVO; import com.ruoyi.bgt.domain.vo.BgtAttendanceDetailVO; import com.ruoyi.bgt.domain.vo.BgtAttendanceVO; @@ -33,6 +34,7 @@ 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.WgzPayCalculation; import com.ruoyi.wgz.domain.WgzUser; import com.ruoyi.wgz.mapper.WgzAttendanceMapper; import com.ruoyi.wgz.service.IWgzAttendanceService; @@ -666,4 +668,27 @@ public class WgzAttendanceServiceImpl extends ServicePlusImpl list) { return super.saveBatch(list); } + + /** + * 获取对应用户指定天数的工资结算日期 + * @param userId + * @param recruitId + * @param num 结算天数 + * @return + */ + public LocalDate findByNumGetDate(Long userId, Long recruitId,Integer num) { + LambdaQueryWrapper wra = new LambdaQueryWrapper<>(); + wra.eq(WgzAttendance::getRecruitId, recruitId); + wra.eq(WgzAttendance::getUserId, userId); + wra.orderByAsc(WgzAttendance::getDate); + // 使用 last 方法添加 limit 语句 + // 注意:num - 1 是因为 SQL 中的 limit 偏移量从 0 开始 + wra.last("LIMIT " + (num - 1) + ", 1"); + + WgzAttendance attendance = baseMapper.selectOne(wra); + if (attendance != null) { + return attendance.getDate(); + } + return null; + } } 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 5fd9dd8..871d991 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 @@ -157,7 +157,7 @@ public class WgzMessageServiceImpl extends ServicePlusImpl queryDTOPage = new Page<>(); queryDTOPage.setCurrent(req.getPageNum()); queryDTOPage.setSize(req.getPageSize()); - return PageUtils.buildDataInfo(baseMapper.userGetMessageList(queryDTOPage)); + return PageUtils.buildDataInfo(baseMapper.userGetMessageList(queryDTOPage,req)); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java index f291039..a0c26cc 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/wgz/service/impl/WgzPayCalculationServiceImpl.java @@ -41,6 +41,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Collection; import java.util.HashMap; @@ -86,6 +87,9 @@ public class WgzPayCalculationServiceImpl extends ServicePlusImpllambdaQuery(). +// eq(WgzPayCalculation::getUserId, user.getUserId()). +// eq(WgzPayCalculation::getRecruitId, recruitApply.getId()). +// orderByDesc(WgzPayCalculation::getCreateTime). +// last("LIMIT 1") +// ); +// if (wgzts != null) { +// LocalDate cutOffTime = wgzts.getCutOffTime(); +// Integer num = iWgzAttendanceService.attendanceDetail(user.getUserId(), recruitApply.getRecruitId(), null); +// } + + //2、获取当前人一共考勤打卡了多少天,然后计算当前结算的天数得到具体是考勤打卡对应的哪一天 + Integer num = iWgzAttendanceService.attendanceDetail(user.getUserId(), recruitApply.getRecruitId(), null); + if (num < req.getNum()) { + throw new RuntimeException("你的剩余考勤天数不满足你当前想要结算的天数!"); + } + LocalDate byNumGetDate = iWgzAttendanceService.findByNumGetDate(user.getUserId(), recruitApply.getRecruitId(), req.getNum()); //2、组装数据 WgzPayCalculation wgzPayCalculation = new WgzPayCalculation(); BeanUtils.copyProperties(req,wgzPayCalculation); wgzPayCalculation. setUserId(user.getUserId()). setUserName(user.getUserName()). - setAuditorUserId(recruit.getUserId()); + setAuditorUserId(recruit.getUserId()). + setCutOffTime(byNumGetDate); //3、获取附件信息并插入 iWgzPayCalculationFilesService.saveBatch(req.getPayCalculation()); //4、插入工资结算信息 diff --git a/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml b/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml index af30261..28f186e 100644 --- a/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/wgz/WgzMessageMapper.xml @@ -35,15 +35,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" a.table_name as tableName, a.read_status as readStatus, a.create_time as createTime - + ,c.recruit_name as recruitName ,c.id as recruitId - + ,d.id as jsId ,d.recruit_name as jsName - + ,e.id as otherId ,e.now_time as otherFillingTime ,e.reason as otherReason @@ -52,41 +52,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" FROM wgz_message as a - + LEFT JOIN bgt_project_recruit_apply as b ON b.id = a.table_id LEFT JOIN bgt_project_recruit as c ON c.id = b.recruit_id - + LEFT JOIN wgz_pay_calculation as d ON d.id = a.table_id - + LEFT JOIN wgz_reissueacard as e ON e.id = a.table_id LEFT JOIN wgz_user as f ON f.id = e.user_id - + LEFT JOIN wgz_reissueacard as e ON e.id = a.table_id LEFT JOIN wgz_user as f ON f.id = e.user_id - + LEFT JOIN wgz_reissueacard as e ON e.id = a.table_id LEFT JOIN wgz_user as f ON f.id = e.user_id a.recipient_type = "1" AND - a.recipient_id = #{page.recipientId} AND + a.recipient_id = #{req.recipientId} AND a.del_flag = "0" - + AND b.del_flag = "0" AND c.del_flag = "0" - + AND d.del_flag = "0" - + AND e.del_flag = "0" AND f.del_flag = "0" - + AND a.sender_type = "0" diff --git a/ruoyi/uploadPath/upload/2025/02/27/083d29f1-db13-4828-b79e-97d1f511f736.jpg b/ruoyi/uploadPath/upload/2025/02/27/083d29f1-db13-4828-b79e-97d1f511f736.jpg new file mode 100644 index 0000000..3add86f Binary files /dev/null and b/ruoyi/uploadPath/upload/2025/02/27/083d29f1-db13-4828-b79e-97d1f511f736.jpg differ