package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.encrypt.AESEncryptUtil;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.report.po.SalaryAcctResultReportPO;
import com.engine.salary.mapper.report.SalaryAcctResultReportMapper;
import com.engine.salary.service.SalaryAcctReportService;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
import com.engine.salary.sys.enums.OpenEnum;
import com.engine.salary.sys.service.SalarySysConfService;
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
import com.engine.salary.util.db.MapperProxyFactory;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import weaver.hrm.User;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import static com.engine.salary.sys.constant.SalarySysConstant.DISPLAY_EMP_INFO_REPORT;
/**
* 薪资报表
*
Copyright: Copyright (c) 2022
* Company: 泛微软件
*
* @author qiantao
* @version 1.0
**/
public class SalaryAcctReportServiceImpl extends Service implements SalaryAcctReportService {
private EncryptUtil encryptUtil = new EncryptUtil();
private SalaryAcctResultReportMapper getSalaryAcctResultReportMapper() {
return MapperProxyFactory.getProxy(SalaryAcctResultReportMapper.class);
}
private SalarySysConfService getSalarySysConfService(User user) {
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
/**
* 保存核算报表数据
*
* @param pos
*/
@Override
public void batchSave(Collection pos) {
if (CollectionUtils.isNotEmpty(pos)) {
SalarySysConfPO disPlay = getSalarySysConfService(user).getOneByCode(DISPLAY_EMP_INFO_REPORT);
//默认不显示,关闭状态
if (disPlay == null || OpenEnum.OFF.getValue().equals(disPlay.getConfValue())) {
pos = encryptUtil.encryptList(new ArrayList<>(pos), SalaryAcctResultReportPO.class);
}
// List> partition = Lists.partition((List) pos, 100);
// partition.forEach(getSalaryAcctResultReportMapper()::batchInsert);
pos.forEach(getSalaryAcctResultReportMapper()::insertIgnoreNull);
}
}
@Override
public void deleteBySalaryAcctRecordIds(Collection salaryAcctRecordIds) {
if (CollectionUtils.isNotEmpty(salaryAcctRecordIds)) {
getSalaryAcctResultReportMapper().deleteBySalaryAcctRecordIds(salaryAcctRecordIds);
}
}
@Override
public void deleteBySalaryAcctRecordId(Long salaryAcctRecordId) {
getSalaryAcctResultReportMapper().deleteBySalaryAcctRecordId(salaryAcctRecordId);
}
@Override
public void deleteBySalaryAcctEmpIds(Collection salaryAcctEmpIds) {
if (CollectionUtils.isNotEmpty(salaryAcctEmpIds)) {
List collect = salaryAcctEmpIds.stream().map(e -> AESEncryptUtil.encrypt(e.toString())).collect(Collectors.toList());
getSalaryAcctResultReportMapper().deleteBySalaryAcctEmpIds(collect);
}
}
@Override
public void deleteByAcctEmployeeIdsAndSalaryItemIds(List salaryAcctEmployeeIds, Collection salaryItemIds) {
if (CollectionUtils.isNotEmpty(salaryAcctEmployeeIds) && CollectionUtils.isNotEmpty(salaryItemIds)) {
List salaryAcctEmployeeIdsStr = salaryAcctEmployeeIds.stream().map(e -> AESEncryptUtil.encrypt(e.toString())).collect(Collectors.toList());
List> partition = Lists.partition(salaryAcctEmployeeIdsStr, 300);
partition.forEach(part -> getSalaryAcctResultReportMapper().deleteByAcctEmpIdsAndSalaryItemIds(part, salaryItemIds));
}
}
}