From dc3ff3251f82fc67ec9f4b3a7c371945a430f3a8 Mon Sep 17 00:00:00 2001 From: jiangchao Date: Fri, 10 Mar 2023 15:14:15 +0800 Subject: [PATCH] feature(*): 薪酬组开始时间、结束时间处理 --- fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupUserDao.java | 11 +++++++++++ fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupUserMapper.xml | 15 +++++++++++++++ fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java | 9 +++++++++ fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryPoolBizService.java | 30 ++++++++++++++++++++++++++---- fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/SalaryGroupUserService.java | 9 +++++++++ fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/impl/SalaryGroupUserServiceImpl.java | 4 ++++ 6 files changed, 74 insertions(+), 4 deletions(-) diff --git a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupUserDao.java b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupUserDao.java index 3dd0aba..6259777 100644 --- a/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupUserDao.java +++ b/fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupUserDao.java @@ -40,4 +40,15 @@ public interface SalaryGroupUserDao extends BaseMapper { SalaryGroupUser getMonthLastData(@Param("sgc") String sgc, @Param("userId") Long userId, @Param("monthly") YearMonth monthly); + + /** + * 获取某月最近的绩效组人员数据 + * + * @param sgc + * @param monthly + * @return + */ + SalaryGroupUser getMonthFirstData(@Param("sgc") String sgc, + @Param("userId") Long userId, + @Param("monthly") YearMonth monthly); } diff --git a/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupUserMapper.xml b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupUserMapper.xml index 4c59f4d..07bae08 100644 --- a/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupUserMapper.xml +++ b/fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupUserMapper.xml @@ -35,4 +35,19 @@ LIMIT 1 + + diff --git a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java index bc1e0d1..886e0c5 100644 --- a/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java +++ b/fw-morax-domain/src/main/java/cn/fw/morax/domain/vo/salary/StaffSalaryVO.java @@ -4,6 +4,7 @@ import cn.fw.morax.domain.enums.StarLevelEnum; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.YearMonth; import java.util.List; @@ -53,6 +54,14 @@ public class StaffSalaryVO { */ private String shopName; /** + * 开始时间 + */ + private LocalDate startTime; + /** + * 开始时间 + */ + private LocalDate endTime; + /** * 本月薪资(剩余应发) */ private BigDecimal wages; diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryPoolBizService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryPoolBizService.java index efc4f08..e981b30 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryPoolBizService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryPoolBizService.java @@ -184,10 +184,11 @@ public class SalaryPoolBizService { * @return 详情 */ private StaffSalaryVO getPoolDetail(SalaryPool pool) { - LocalDate localDate = getPoolLastData(pool); - List salaryDetailList = salaryPoolDetailService.queryByPoolId(pool.getId(), pool.getSalaryGroupId(), localDate); - BV.isNotEmpty(salaryDetailList, () -> "该人员薪酬数据不存在"); StaffSalaryVO vo = this.convertToSalaryVO(pool); + buildPoolData(pool, vo); + LocalDate dataDate = vo.getEndTime(); + List salaryDetailList = salaryPoolDetailService.queryByPoolId(pool.getId(), pool.getSalaryGroupId(), dataDate); + BV.isNotEmpty(salaryDetailList, () -> "该人员薪酬数据不存在"); Map> salaryTypeMap = salaryDetailList.stream().collect(Collectors.groupingBy(SalaryPoolDetailVO::getType)); for (Map.Entry> salaryDetail : salaryTypeMap.entrySet()) { detailClassification(vo, salaryDetail.getKey(), salaryDetail.getValue()); @@ -198,7 +199,28 @@ public class SalaryPoolBizService { } /** - * 获取绩效池详情最近日期 + * 查询薪酬开始日期,结束日期 + * + * @param salaryPool + * @return + */ + public void buildPoolData(SalaryPool salaryPool, StaffSalaryVO vo) { + SalaryGroupUser salaryGroupUser = salaryGroupUserService.getMonthLastData(salaryPool.getSgc(), + salaryPool.getUserId(), salaryPool.getMonthly()); + if (PublicUtil.isEmpty(salaryGroupUser)) { + log.error("员工薪酬池:{},不存在绩效组人员数据", JSON.toJSONString(salaryPool)); + vo.setEndTime(PublicUtil.getYesterdayOrEndOfMonthDay(salaryPool.getMonthly())); + vo.setStartTime(salaryPool.getMonthly().atDay(1)); + return; + } + vo.setEndTime(salaryGroupUser.getDataDate()); + SalaryGroupUser firstSalaryGroupUser = salaryGroupUserService.getMonthFirstData(salaryPool.getSgc(), + salaryPool.getUserId(), salaryPool.getMonthly()); + vo.setStartTime(firstSalaryGroupUser.getDataDate()); + } + + /** + * 查询薪酬结束日期 * * @param salaryPool * @return diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/SalaryGroupUserService.java b/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/SalaryGroupUserService.java index 0da87f4..af55433 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/SalaryGroupUserService.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/SalaryGroupUserService.java @@ -32,4 +32,13 @@ public interface SalaryGroupUserService extends IService { * @return */ SalaryGroupUser getMonthLastData(String sgc, Long userId, YearMonth monthly); + + /** + * 获取某月最早的薪酬组人员数据 + * + * @param sgc + * @param monthly + * @return + */ + SalaryGroupUser getMonthFirstData(String sgc, Long userId, YearMonth monthly); } diff --git a/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/impl/SalaryGroupUserServiceImpl.java b/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/impl/SalaryGroupUserServiceImpl.java index d898dd9..fa8d84b 100644 --- a/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/impl/SalaryGroupUserServiceImpl.java +++ b/fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/impl/SalaryGroupUserServiceImpl.java @@ -28,4 +28,8 @@ public class SalaryGroupUserServiceImpl extends ServiceImpl