部分发放

This commit is contained in:
钱涛 2025-04-15 17:49:38 +08:00
parent eea9093cfd
commit b0fb2b3866
1 changed files with 13 additions and 1 deletions

View File

@ -7,6 +7,8 @@ import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeTaxAgentDTO;
import com.engine.salary.mapper.salarybill.SalarySendRangeObjMapper; import com.engine.salary.mapper.salarybill.SalarySendRangeObjMapper;
import com.engine.salary.service.TaxAgentService; import com.engine.salary.service.TaxAgentService;
import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl;
import com.engine.salary.util.db.MapperProxyFactory;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSession;
import weaver.conn.mybatis.MyBatisFactory; import weaver.conn.mybatis.MyBatisFactory;
@ -23,6 +25,10 @@ public class SalarySendRangeObjBiz {
return ServiceUtil.getService(TaxAgentServiceImpl.class); return ServiceUtil.getService(TaxAgentServiceImpl.class);
} }
private SalarySendRangeObjMapper getSalarySendRangeObjMapper() {
return MapperProxyFactory.getProxy(SalarySendRangeObjMapper.class);
}
public <R> R applyMapper(Function<SalarySendRangeObjMapper, R> mapper) { public <R> R applyMapper(Function<SalarySendRangeObjMapper, R> mapper) {
try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) { try (SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession()) {
final SalarySendRangeObjMapper salarySendRangeObjMapper = sqlSession.getMapper(SalarySendRangeObjMapper.class); final SalarySendRangeObjMapper salarySendRangeObjMapper = sqlSession.getMapper(SalarySendRangeObjMapper.class);
@ -41,7 +47,13 @@ public class SalarySendRangeObjBiz {
} }
public List<SalarySendUserInfoDTO> getSalarySendUserInfoDTOs(List<Long> employees) { public List<SalarySendUserInfoDTO> getSalarySendUserInfoDTOs(List<Long> employees) {
List<SalarySendUserInfoDTO> userDTOs = applyMapper(mapper -> mapper.getUserInfoByEmployeeIds(employees)); List<SalarySendUserInfoDTO> userDTOs = new ArrayList<>();
List<List<Long>> partition = Lists.partition(employees, 500);
partition.forEach(l->{
List<SalarySendUserInfoDTO> userInfos = getSalarySendRangeObjMapper().getUserInfoByEmployeeIds(l);
userDTOs.addAll(userInfos);
});
Map<Long, SalarySendUserInfoDTO> userMap = userDTOs.stream() Map<Long, SalarySendUserInfoDTO> userMap = userDTOs.stream()
.collect(Collectors.toMap(SalarySendUserInfoDTO::getResourceId, Function.identity())); .collect(Collectors.toMap(SalarySendUserInfoDTO::getResourceId, Function.identity()));