package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.extemp.param.ExtEmpQueryParam; import com.engine.salary.entity.extemp.param.ExtEmpSaveParam; import com.engine.salary.entity.extemp.po.ExtEmpPO; import com.engine.salary.entity.hrm.DeptInfo; import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.mapper.extemp.ExternalEmployeeMapper; import com.engine.salary.service.ExtEmpService; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.BeanUtils; import weaver.hrm.User; import java.util.*; import java.util.stream.Collectors; /** * 累计专项 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class ExtEmpServiceImpl extends Service implements ExtEmpService { private ExternalEmployeeMapper getExternalEmployeeMapper() { return MapperProxyFactory.getProxy(ExternalEmployeeMapper.class); } private SalaryEmployeeService getSalaryEmployeeService(User user) { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } @Override public List list(ExtEmpQueryParam param) { return getExternalEmployeeMapper().listSome(ExtEmpPO.builder().username(param.getUsername()).build()); } @Override public PageInfo listPage(ExtEmpQueryParam param) { List extEmpPOS = list(param); return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), extEmpPOS, ExtEmpPO.class); } @Override public void save(ExtEmpSaveParam param) { ExtEmpPO po = new ExtEmpPO(); BeanUtils.copyProperties(param, po); po.setId(IdGenerator.generate()); po.setStatus("1"); po.setCreator((long) user.getUID()); po.setModifier((long) user.getUID()); Date now = new Date(); po.setCreateTime(now); po.setUpdateTime(now); po.setDeleteType(0); getExternalEmployeeMapper().insertIgnoreNull(po); } @Override public void update(ExtEmpSaveParam param) { ExtEmpPO po = new ExtEmpPO(); BeanUtils.copyProperties(param, po); po.setModifier((long) user.getUID()); Date now = new Date(); po.setUpdateTime(now); getExternalEmployeeMapper().updateIgnoreNull(po); } @Override public void delete(Collection ids) { if (CollectionUtils.isNotEmpty(ids)) { ids.forEach(getExternalEmployeeMapper()::delete); } } @Override public DataCollectionEmployee getEmployeeById(Long id) { ExtEmpPO po = getExternalEmployeeMapper().getById(id); return cover(po); } @Override public List getEmployeeByIds(List ids) { if (CollectionUtils.isEmpty(ids)) { return new ArrayList<>(); } List extEmpPOS = new ArrayList<>(); List> partition = Lists.partition(ids, 500); partition.forEach(list ->extEmpPOS.addAll(getExternalEmployeeMapper().listSome(ExtEmpPO.builder().ids(list).build())) ); return coverList(extEmpPOS); } @Override public List listByParams(List includeQueryParams) { List emps = new ArrayList<>(); List> partition = Lists.partition(includeQueryParams, 100); partition.forEach(list -> { emps.addAll(getExternalEmployeeMapper().listByParams(list)); }); return emps; } @Override public List listEmployee() { return getExternalEmployeeMapper().listEmployee(); } @Override public Collection getEmployeeByIdsAll(List ids) { List employeeList = new ArrayList<>(); List> partition = Lists.partition(ids, 1000); partition.forEach(e -> { List employeeByIdsAll = getExternalEmployeeMapper().getEmployeeByIdsAll(e); employeeList.addAll(employeeByIdsAll); }); return employeeList; } @Override public Collection listAllForReport() { return getExternalEmployeeMapper().listAllForReport(); } @Override public ExtEmpPO getById(Long id) { ExtEmpPO po = getExternalEmployeeMapper().getById(id); if (po != null) { if (po.getDepartmentId() != null) { List deptInfoList = getSalaryEmployeeService(user).getDeptInfoList(Collections.singletonList(po.getDepartmentId())); if (CollectionUtils.isNotEmpty(deptInfoList)) { po.setDepartmentOrgName(deptInfoList.get(0).getName()); } } if (po.getSubcompanyId() != null) { List subInfoList = getSalaryEmployeeService(user).getSubCompanyInfoList(Collections.singletonList(po.getSubcompanyId())); if (CollectionUtils.isNotEmpty(subInfoList)) { po.setSubcompanyOrgName(subInfoList.get(0).getName()); } } } return po; } public DataCollectionEmployee cover(ExtEmpPO extPo) { if (extPo == null) { return null; } DataCollectionEmployee employee = new DataCollectionEmployee(); BeanUtils.copyProperties(extPo, employee); employee.setEmployeeId(extPo.getId()); employee.setExtEmp(true); return employee; } public List coverList(List extEmps) { if (CollectionUtils.isEmpty(extEmps)) { return new ArrayList<>(); } return extEmps.stream().map(emp -> { DataCollectionEmployee employee = new DataCollectionEmployee(); BeanUtils.copyProperties(emp, employee); employee.setEmployeeId(emp.getId()); employee.setExtEmp(true); return employee; }).collect(Collectors.toList()); } }