Commit dc3ff3251f82fc67ec9f4b3a7c371945a430f3a8
1 parent
f72163d1
feature(*): 薪酬组开始时间、结束时间处理
薪酬组开始时间、结束时间处理
Showing
6 changed files
with
74 additions
and
4 deletions
fw-morax-dao/src/main/java/cn/fw/morax/dao/salary/SalaryGroupUserDao.java
... | ... | @@ -40,4 +40,15 @@ public interface SalaryGroupUserDao extends BaseMapper<SalaryGroupUser> { |
40 | 40 | SalaryGroupUser getMonthLastData(@Param("sgc") String sgc, |
41 | 41 | @Param("userId") Long userId, |
42 | 42 | @Param("monthly") YearMonth monthly); |
43 | + | |
44 | + /** | |
45 | + * 获取某月最近的绩效组人员数据 | |
46 | + * | |
47 | + * @param sgc | |
48 | + * @param monthly | |
49 | + * @return | |
50 | + */ | |
51 | + SalaryGroupUser getMonthFirstData(@Param("sgc") String sgc, | |
52 | + @Param("userId") Long userId, | |
53 | + @Param("monthly") YearMonth monthly); | |
43 | 54 | } | ... | ... |
fw-morax-dao/src/main/resources/mapper/salary/SalaryGroupUserMapper.xml
... | ... | @@ -35,4 +35,19 @@ |
35 | 35 | LIMIT 1 |
36 | 36 | </select> |
37 | 37 | |
38 | + <select id="getMonthFirstData" resultType="cn.fw.morax.domain.db.salary.SalaryGroupUser"> | |
39 | + SELECT | |
40 | + * | |
41 | + FROM | |
42 | + salary_group_user | |
43 | + WHERE | |
44 | + sgc = #{sgc} | |
45 | + AND user_id = #{userId} | |
46 | + AND DATE_FORMAT(data_date, '%Y-%m') = #{monthly} | |
47 | + AND yn = 1 | |
48 | + ORDER BY | |
49 | + data_date ASC | |
50 | + LIMIT 1 | |
51 | + </select> | |
52 | + | |
38 | 53 | </mapper> | ... | ... |
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; |
4 | 4 | import lombok.Data; |
5 | 5 | |
6 | 6 | import java.math.BigDecimal; |
7 | +import java.time.LocalDate; | |
7 | 8 | import java.time.YearMonth; |
8 | 9 | import java.util.List; |
9 | 10 | |
... | ... | @@ -53,6 +54,14 @@ public class StaffSalaryVO { |
53 | 54 | */ |
54 | 55 | private String shopName; |
55 | 56 | /** |
57 | + * 开始时间 | |
58 | + */ | |
59 | + private LocalDate startTime; | |
60 | + /** | |
61 | + * 开始时间 | |
62 | + */ | |
63 | + private LocalDate endTime; | |
64 | + /** | |
56 | 65 | * 本月薪资(剩余应发) |
57 | 66 | */ |
58 | 67 | private BigDecimal wages; | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/biz/salary/SalaryPoolBizService.java
... | ... | @@ -184,10 +184,11 @@ public class SalaryPoolBizService { |
184 | 184 | * @return 详情 |
185 | 185 | */ |
186 | 186 | private StaffSalaryVO getPoolDetail(SalaryPool pool) { |
187 | - LocalDate localDate = getPoolLastData(pool); | |
188 | - List<SalaryPoolDetailVO> salaryDetailList = salaryPoolDetailService.queryByPoolId(pool.getId(), pool.getSalaryGroupId(), localDate); | |
189 | - BV.isNotEmpty(salaryDetailList, () -> "该人员薪酬数据不存在"); | |
190 | 187 | StaffSalaryVO vo = this.convertToSalaryVO(pool); |
188 | + buildPoolData(pool, vo); | |
189 | + LocalDate dataDate = vo.getEndTime(); | |
190 | + List<SalaryPoolDetailVO> salaryDetailList = salaryPoolDetailService.queryByPoolId(pool.getId(), pool.getSalaryGroupId(), dataDate); | |
191 | + BV.isNotEmpty(salaryDetailList, () -> "该人员薪酬数据不存在"); | |
191 | 192 | Map<SalaryTypeEnum, List<SalaryPoolDetailVO>> salaryTypeMap = salaryDetailList.stream().collect(Collectors.groupingBy(SalaryPoolDetailVO::getType)); |
192 | 193 | for (Map.Entry<SalaryTypeEnum, List<SalaryPoolDetailVO>> salaryDetail : salaryTypeMap.entrySet()) { |
193 | 194 | detailClassification(vo, salaryDetail.getKey(), salaryDetail.getValue()); |
... | ... | @@ -198,7 +199,28 @@ public class SalaryPoolBizService { |
198 | 199 | } |
199 | 200 | |
200 | 201 | /** |
201 | - * 获取绩效池详情最近日期 | |
202 | + * 查询薪酬开始日期,结束日期 | |
203 | + * | |
204 | + * @param salaryPool | |
205 | + * @return | |
206 | + */ | |
207 | + public void buildPoolData(SalaryPool salaryPool, StaffSalaryVO vo) { | |
208 | + SalaryGroupUser salaryGroupUser = salaryGroupUserService.getMonthLastData(salaryPool.getSgc(), | |
209 | + salaryPool.getUserId(), salaryPool.getMonthly()); | |
210 | + if (PublicUtil.isEmpty(salaryGroupUser)) { | |
211 | + log.error("员工薪酬池:{},不存在绩效组人员数据", JSON.toJSONString(salaryPool)); | |
212 | + vo.setEndTime(PublicUtil.getYesterdayOrEndOfMonthDay(salaryPool.getMonthly())); | |
213 | + vo.setStartTime(salaryPool.getMonthly().atDay(1)); | |
214 | + return; | |
215 | + } | |
216 | + vo.setEndTime(salaryGroupUser.getDataDate()); | |
217 | + SalaryGroupUser firstSalaryGroupUser = salaryGroupUserService.getMonthFirstData(salaryPool.getSgc(), | |
218 | + salaryPool.getUserId(), salaryPool.getMonthly()); | |
219 | + vo.setStartTime(firstSalaryGroupUser.getDataDate()); | |
220 | + } | |
221 | + | |
222 | + /** | |
223 | + * 查询薪酬结束日期 | |
202 | 224 | * |
203 | 225 | * @param salaryPool |
204 | 226 | * @return | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/SalaryGroupUserService.java
... | ... | @@ -32,4 +32,13 @@ public interface SalaryGroupUserService extends IService<SalaryGroupUser> { |
32 | 32 | * @return |
33 | 33 | */ |
34 | 34 | SalaryGroupUser getMonthLastData(String sgc, Long userId, YearMonth monthly); |
35 | + | |
36 | + /** | |
37 | + * 获取某月最早的薪酬组人员数据 | |
38 | + * | |
39 | + * @param sgc | |
40 | + * @param monthly | |
41 | + * @return | |
42 | + */ | |
43 | + SalaryGroupUser getMonthFirstData(String sgc, Long userId, YearMonth monthly); | |
35 | 44 | } | ... | ... |
fw-morax-service/src/main/java/cn/fw/morax/service/data/salary/impl/SalaryGroupUserServiceImpl.java
... | ... | @@ -28,4 +28,8 @@ public class SalaryGroupUserServiceImpl extends ServiceImpl<SalaryGroupUserDao, |
28 | 28 | public SalaryGroupUser getMonthLastData(String sgc, Long userId, YearMonth monthly) { |
29 | 29 | return this.getBaseMapper().getMonthLastData(sgc, userId, monthly); |
30 | 30 | } |
31 | + @Override | |
32 | + public SalaryGroupUser getMonthFirstData(String sgc, Long userId, YearMonth monthly) { | |
33 | + return this.getBaseMapper().getMonthFirstData(sgc, userId, monthly); | |
34 | + } | |
31 | 35 | } | ... | ... |