薪资档案增加调薪时间 筛选

This commit is contained in:
Harryxzy 2024-11-08 16:08:49 +08:00
parent 5953c2b938
commit a2f8803e76
6 changed files with 63 additions and 0 deletions

View File

@ -112,4 +112,10 @@ public class SalaryArchiveQueryParam extends BaseQueryParam {
// 最后发薪日期止
private Date payEndDateEndDate;
// 调薪起始日期
private Date adjustSalaryStartDate;
// 调薪结束日期
private Date adjustSalaryEndDate;
}

View File

@ -1,5 +1,6 @@
package com.engine.salary.mapper.archive;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam;
import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam;
@ -97,4 +98,5 @@ public interface SalaryArchiveItemMapper {
int batchUpdate(@Param("collection") List<SalaryArchiveItemPO> pos);
List<SalaryArchiveItemPO> listByArchiveIdAndEffectiveTime(@Param("salaryArchivesIds")List<Long> salaryArchiveIds, @Param("effectiveRange")LocalDateRange dateRange);
}

View File

@ -1071,6 +1071,28 @@
ORDER BY t.effective_time DESC
</select>
<select id="listByArchiveIdAndEffectiveTime"
resultType="com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_salary_archive_item t
WHERE delete_type = 0
<if test="effectiveRange != null and effectiveRange.fromDate != null">
AND t.effective_time <![CDATA[ >= ]]> #{effectiveRange.fromDate}
</if>
<if test="effectiveRange != null and effectiveRange.endDate != null">
AND t.effective_time <![CDATA[ <= ]]> #{effectiveRange.endDate}
</if>
<if test="salaryArchivesIds != null and salaryArchivesIds.size()>0">
AND t.salary_archive_id IN
<foreach collection="salaryArchivesIds" open="(" item="salaryArchiveId" separator="," close=")">
#{salaryArchiveId}
</foreach>
</if>
ORDER BY t.effective_time DESC
</select>
<update id="deleteBatchIds">
UPDATE hrsa_salary_archive_item

View File

@ -1,5 +1,6 @@
package com.engine.salary.service;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.entity.salaryarchive.config.ArchiveFieldConfig;
import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemSaveParam;
@ -163,4 +164,13 @@ public interface SalaryArchiveItemService {
ArchiveFieldConfig getConfig();
UploadConfigResponse.Result parseConfig(ArchiveFieldConfig config);
/**
* 根据薪资档案id和生效日期范围获取数据
*
* @param salaryArchiveIds
* @param dateRange
* @return
*/
List<SalaryArchiveItemPO> listByArchiveIdAndEffectiveTime(List<Long> salaryArchiveIds, LocalDateRange dateRange);
}

View File

@ -7,6 +7,7 @@ import com.engine.core.impl.Service;
import com.engine.salary.biz.SalaryArchiveBiz;
import com.engine.salary.biz.SalaryArchiveItemBiz;
import com.engine.salary.biz.SalaryItemBiz;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.config.SalaryElogConfig;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
@ -807,4 +808,16 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
return result;
}
@Override
public List<SalaryArchiveItemPO> listByArchiveIdAndEffectiveTime(List<Long> salaryArchiveIds, LocalDateRange dateRange) {
if (CollectionUtils.isEmpty(salaryArchiveIds)) {
return Collections.emptyList();
}
List<SalaryArchiveItemPO> resultList = new ArrayList<>();
List<List<Long>> partition = Lists.partition(salaryArchiveIds, 1000);
partition.forEach(part -> {
resultList.addAll(getSalaryArchiveItemMapper().listByArchiveIdAndEffectiveTime(salaryArchiveIds, dateRange));
});
return resultList;
}
}

View File

@ -185,6 +185,16 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
}
List<SalaryArchiveListDTO> list = getSalaryArchiveMapper().list(queryParam);
// 过滤调薪日期
if (queryParam.getAdjustSalaryStartDate() != null || queryParam.getAdjustSalaryEndDate() != null) {
List<Long> salaryArchiveIds = list.stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList());
LocalDateRange dateRange = LocalDateRange.builder().fromDate(queryParam.getAdjustSalaryStartDate()).endDate(queryParam.getAdjustSalaryEndDate()).build();
List<SalaryArchiveItemPO> salaryArchiveItemPOList = getSalaryArchiveItemService(user).listByArchiveIdAndEffectiveTime(salaryArchiveIds, dateRange);
List<Long> archiveIds = salaryArchiveItemPOList.stream().map(SalaryArchiveItemPO::getSalaryArchiveId).distinct().collect(Collectors.toList());
list = list.stream().filter(dto -> archiveIds.contains(dto.getId())).collect(Collectors.toList());
}
return SalaryI18nUtil.i18nList(list);
}