diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 16f73afd0..0e92831ec 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -1182,7 +1182,7 @@ public class SIArchivesBiz { // taxAgentIds.contains(f.getPaymentOrganization()) // ).collect(Collectors.toList()); - //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表,todo + //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表 List needAuthPage = page.stream().filter(f -> taxAgentIds.contains(f.getPaymentOrganization()) ).collect(Collectors.toList()); diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index bdea436da..a7768fe94 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -687,7 +687,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService list = new ArrayList<>(); } - //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表,todo + //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表 List needAuthList = archiveListDTOS.stream().filter(f -> taxAgentIds.contains(f.getPaymentOrganization()) ).collect(Collectors.toList()); diff --git a/src/com/engine/salary/service/impl/SIImportServiceImpl.java b/src/com/engine/salary/service/impl/SIImportServiceImpl.java index 8fc7eccdb..84b8d5ced 100644 --- a/src/com/engine/salary/service/impl/SIImportServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIImportServiceImpl.java @@ -14,6 +14,7 @@ import com.engine.salary.entity.siarchives.po.InsuranceArchivesOtherSchemePO; import com.engine.salary.entity.siarchives.po.InsuranceArchivesSocialSchemePO; import com.engine.salary.entity.sicategory.po.ICategoryPO; import com.engine.salary.entity.sischeme.po.InsuranceSchemePO; +import com.engine.salary.entity.taxagent.dto.TaxAgentEmployeeDTO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.siaccount.EmployeeStatusEnum; import com.engine.salary.enums.sicategory.WelfareTypeEnum; @@ -23,6 +24,9 @@ import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper; import com.engine.salary.mapper.taxagent.TaxAgentMapper; import com.engine.salary.service.SIArchivesService; import com.engine.salary.service.SIImportService; +import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelComment; @@ -36,6 +40,7 @@ import org.apache.ibatis.session.SqlSession; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.conn.mybatis.MyBatisFactory; import weaver.hrm.User; +import weaver.hrm.company.DepartmentComInfo; import java.util.*; import java.util.function.Function; @@ -68,6 +73,18 @@ public class SIImportServiceImpl extends Service implements SIImportService { return MapperProxyFactory.getProxy(InsuranceSchemeMapper.class); } + private TaxAgentService getTaxAgentService() { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SocialSchemeMapper getSocialSchemeMapper() { + return MapperProxyFactory.getProxy(SocialSchemeMapper.class); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + @Override public XSSFWorkbook exportTemplate(InsuranceArchivesListParam param) { //工作簿list @@ -133,11 +150,51 @@ public class SIImportServiceImpl extends Service implements SIImportService { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); SocialSchemeMapper socialSchemeMapper = sqlSession.getMapper(SocialSchemeMapper.class); List page = new ArrayList<>(); - if (param.isExtWelArchiveList()) { - page = socialSchemeMapper.queryExtEmployeeList(param); + + Long currentEmployeeId = Long.valueOf(user.getUID()); + Boolean needAuth = getTaxAgentService().isNeedAuth(currentEmployeeId); + if (needAuth) { + List taxAgentEmployeeDTOS = getTaxAgentService().listTaxAgentAndEmployee(currentEmployeeId); + Set taxAgentIds = SalaryEntityUtil.properties(taxAgentEmployeeDTOS, TaxAgentEmployeeDTO::getTaxAgentId); + if (param.isExtWelArchiveList()) { + page = socialSchemeMapper.queryExtEmployeeList(param); + } else { + page = socialSchemeMapper.queryEmployeeList(param); + } + + //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表 + List needAuthPage = page.stream().filter(f -> taxAgentIds.contains(f.getPaymentOrganization())).collect(Collectors.toList()); + //查询登录人拥有查看权限的部门 + List depList = getSalaryEmployeeService(user).listDepIdByEmpId(currentEmployeeId); + if (depList.size() > 0) { + List depWithChildList = new ArrayList<>(); + for (Long depId : depList) { + try { + String depStr = DepartmentComInfo.getAllChildDepartId(depId.toString(), depId.toString()); + depWithChildList.addAll(Arrays.stream(depStr.split(",")).collect(Collectors.toList())); + } catch (Exception e) { + e.printStackTrace(); + } + } + + List depAuthPage = page.stream().filter(f -> + depWithChildList.contains(f.getDepartmentId().toString()) + ).collect(Collectors.toList()); + if (depAuthPage.size() > 0) { + needAuthPage.addAll(depAuthPage); + needAuthPage = needAuthPage.stream().distinct().collect(Collectors.toList()); + } + } + page = needAuthPage; } else { - page = socialSchemeMapper.queryEmployeeList(param); + if (param.isExtWelArchiveList()) { + page = socialSchemeMapper.queryExtEmployeeList(param); + } else { + page = socialSchemeMapper.queryEmployeeList(param); + } } + + PageInfo pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), page, InsuranceArchivesEmployeePO.class); int total = (int)pageInfo.getTotal(); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index ad1cc401f..230644936 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -67,6 +67,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import weaver.file.ImageFileManager; import weaver.hrm.User; +import weaver.hrm.company.DepartmentComInfo; import java.io.InputStream; import java.util.*; @@ -257,7 +258,32 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { // Set employeeIds = SalaryEntityUtil.properties(taxAgentEmployeeDTOS, TaxAgentEmployeeDTO::getEmployeeId); Set taxAgentIds = SalaryEntityUtil.properties(taxAgentEmployeeDTOS, TaxAgentEmployeeDTO::getTaxAgentId); List list = getSocialSchemeMapper().queryEmployeeList(param); - return list.stream().filter(f -> taxAgentIds.contains(f.getPaymentOrganization())).collect(Collectors.toList()); +// return list.stream().filter(f -> taxAgentIds.contains(f.getPaymentOrganization())).collect(Collectors.toList()); + + //艾志二开,增加当前登录人拥有的的部门查看权限包含的人员档案列表 + List needAuthPage = list.stream().filter(f -> taxAgentIds.contains(f.getPaymentOrganization())).collect(Collectors.toList()); + //查询登录人拥有查看权限的部门 + List depList = getSalaryEmployeeService(user).listDepIdByEmpId(currentEmployeeId); + if (depList.size() > 0) { + List depWithChildList = new ArrayList<>(); + for (Long depId : depList) { + try { + String depStr = DepartmentComInfo.getAllChildDepartId(depId.toString(), depId.toString()); + depWithChildList.addAll(Arrays.stream(depStr.split(",")).collect(Collectors.toList())); + } catch (Exception e) { + e.printStackTrace(); + } + } + + List depAuthPage = list.stream().filter(f -> + depWithChildList.contains(f.getDepartmentId().toString()) + ).collect(Collectors.toList()); + if (depAuthPage.size() > 0) { + needAuthPage.addAll(depAuthPage); + needAuthPage = needAuthPage.stream().distinct().collect(Collectors.toList()); + } + } + return needAuthPage; } return getSocialSchemeMapper().queryEmployeeList(param); @@ -895,14 +921,20 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100579, "个税扣缴义务人不允许为空")); excelComments.add(errorMessageMap); isError = true; - } else if (!paymentNameIdMap.containsKey(paymentOrg)) { + } else if (!paymentNameIdMap.containsKey(paymentOrg) && !azDepAuth(user.getUID(), employeeId)) { Map errorMessageMap = Maps.newHashMap(); errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, "社保缴纳组织应和个税扣缴义务人名称一致,社保缴纳组织不存在或不在权限范围内")); excelComments.add(errorMessageMap); isError = true; + } else if (getTaxAgentMapper().listByName(paymentOrg).size() == 0) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(0, "个税扣缴义务人不存在")); + excelComments.add(errorMessageMap); + isError = true; } - if (!isError) { + //艾志二开-判断当前登录人员是否拥有对应员工档案的查看权限 + if (!isError && !azDepAuth(user.getUID(), employeeId)) { Long paymentOrgId = paymentNameIdMap.get(paymentOrg); TaxAgentManageRangeEmployeeDTO taxAgentManageRangeEmployeeDTO = taxAgentManageRangeEmployeeTree.stream().filter(tax -> tax.getTaxAgentId().equals(paymentOrgId)).findFirst().get(); Optional o = taxAgentManageRangeEmployeeDTO.getEmployeeList().stream().map(TaxAgentManageRangeEmployeeDTO.TaxAgentEmployee::getEmployeeId).filter(e -> e.equals(employeeId)).findFirst(); @@ -1112,6 +1144,33 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return isError; } + //艾志二开-判断当前登录人员是否拥有对应员工档案的查看权限 + private boolean azDepAuth(int uid, Long employeeId) { + + //查询登录人拥有查看权限的部门 + List depList = getSalaryEmployeeService(user).listDepIdByEmpId((long) uid); + if (depList.size() > 0) { + List depWithChildList = new ArrayList<>(); + for (Long depId : depList) { + try { + String depStr = DepartmentComInfo.getAllChildDepartId(depId.toString(), depId.toString()); + depWithChildList.addAll(Arrays.stream(depStr.split(",")).map(Long::parseLong).collect(Collectors.toList())); + } catch (Exception e) { + e.printStackTrace(); + } + } + //查询有权限部门包含的员工id + List empListByDep = getSalaryEmployeeService(user).listEmpIdByDepId(depWithChildList); + if (empListByDep.size() > 0) { + return empListByDep.contains(employeeId); + } else { + return false; + } + } else { + return false; + } + } + public Map findElement(List> singleAccount, String target) { for (Map e : singleAccount) { @@ -1129,6 +1188,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return null; } Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + //艾志二开,增加登录人员的部门(人员档案)查看权限,此处为导入个税扣缴义务人权限外的人员时的逻辑处理 + if (paymentOrg == null && azDepAuth(user.getUID(), employeeId)) { + List taxAgentPOS = getTaxAgentMapper().listByName((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + paymentOrg = Long.valueOf( taxAgentPOS.get(0).getId() ); + } List oldSocialSchemeInfos = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO .builder() .employeeId(employeeId) @@ -1209,6 +1273,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { return null; } Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + //艾志二开,增加登录人员的部门(人员档案)查看权限,此处为导入个税扣缴义务人权限外的人员时的逻辑处理 + if (paymentOrg == null && azDepAuth(user.getUID(), employeeId)) { + List taxAgentPOS = getTaxAgentMapper().listByName((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + paymentOrg = Long.valueOf( taxAgentPOS.get(0).getId() ); + } List oldFundSchemeInfos = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO .builder() .employeeId(employeeId) @@ -1292,7 +1361,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (employeeId == null) { return null; - }Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + } + Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + //艾志二开,增加登录人员的部门(人员档案)查看权限,此处为导入个税扣缴义务人权限外的人员时的逻辑处理 + if (paymentOrg == null && azDepAuth(user.getUID(), employeeId)) { + List taxAgentPOS = getTaxAgentMapper().listByName((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + paymentOrg = Long.valueOf( taxAgentPOS.get(0).getId() ); + } List oldOtherSchemeInfos = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO .builder() .employeeId(employeeId) @@ -1366,6 +1441,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (employeeId == null) { return null; } + Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + //艾志二开,增加登录人员的部门(人员档案)查看权限,此处为导入个税扣缴义务人权限外的人员时的逻辑处理 + if (paymentOrg == null && azDepAuth(user.getUID(), employeeId)) { + List taxAgentPOS = getTaxAgentMapper().listByName((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + paymentOrg = Long.valueOf( taxAgentPOS.get(0).getId() ); + } + InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = new InsuranceArchivesBaseInfoPO(); insuranceArchivesBaseInfoPO.setEmployeeId(employeeId); insuranceArchivesBaseInfoPO.setId(IdGenerator.generate()); @@ -1375,7 +1457,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesBaseInfoPO.setRunStatus(runStatus); insuranceArchivesBaseInfoPO.setUpdateTime(new Date()); insuranceArchivesBaseInfoPO.setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY); - insuranceArchivesBaseInfoPO.setPaymentOrganization(paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91497, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91497, "个税扣缴义务人")))); + insuranceArchivesBaseInfoPO.setPaymentOrganization(paymentOrg); if (isExtEmp) { insuranceArchivesBaseInfoPO.setEmployeeType(1); } diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index 027df9952..d633db4eb 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -97,10 +97,18 @@ public class TaxAgentWrapper extends Service { Boolean isDefaultOpen = getTaxAgentService(user).isDefaultOpen(currentEmployeeId); Boolean isAdminEnable = getTaxAgentService(user).isAdminEnable(currentEmployeeId); Boolean isOpenDevolution = getTaxAgentService(user).isOpenDevolution(); + //艾志二开,登录人拥有部分部门查看权限,则临时赋予管理员权限,仅在薪资、福利档案菜单中校验(前端控制) + Boolean isDepAuth = false; + //查询登录人拥有查看权限的部门 + List depList = getSalaryEmployeeService(user).listDepIdByEmpId(currentEmployeeId); + if (depList.size() > 0) { + isDepAuth = true; + } resultMap.put("isChief", isChief); resultMap.put("isDefaultOpen", isDefaultOpen); resultMap.put("isAdminEnable", isAdminEnable); resultMap.put("isOpenDevolution", isOpenDevolution); + resultMap.put("isDepAuth", isDepAuth); return resultMap; }