diff --git a/src/com/engine/salary/biz/SalaryArchiveItemBiz.java b/src/com/engine/salary/biz/SalaryArchiveItemBiz.java index 5c43e7086..86351c9bc 100644 --- a/src/com/engine/salary/biz/SalaryArchiveItemBiz.java +++ b/src/com/engine/salary/biz/SalaryArchiveItemBiz.java @@ -140,7 +140,20 @@ public class SalaryArchiveItemBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class); - return encryptUtil.decryptList(mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds), SalaryItemAdjustRecordListDTO.class); + List salaryArchiveIds = queryParam.getSalaryArchiveIds(); + if (CollectionUtils.isEmpty(salaryArchiveIds)) { + List salaryItemAdjustRecordListDTOS = mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds); + return encryptUtil.decryptList(salaryItemAdjustRecordListDTOS, SalaryItemAdjustRecordListDTO.class); + } else { + List salaryItemAdjustRecordListDTOS = new ArrayList<>(); + List> salaryArchiveIdsPartition = Lists.partition(salaryArchiveIds, 500); + salaryArchiveIdsPartition.forEach(l -> { + queryParam.setSalaryArchiveIds(l); + salaryItemAdjustRecordListDTOS.addAll(mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds)); + }); + return encryptUtil.decryptList(salaryItemAdjustRecordListDTOS, SalaryItemAdjustRecordListDTO.class); + } + } finally { sqlSession.close(); } @@ -161,7 +174,16 @@ public class SalaryArchiveItemBiz { SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); try { SalaryArchiveItemMapper mapper = sqlSession.getMapper(SalaryArchiveItemMapper.class); - List salaryItemAdjustRecordListDTOS = mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds); + + List salaryArchiveIds = queryParam.getSalaryArchiveIds(); + List> salaryArchiveIdsPartition = Lists.partition(salaryArchiveIds, 500); + + List salaryItemAdjustRecordListDTOS = new ArrayList<>(); + salaryArchiveIdsPartition.forEach(l -> { + queryParam.setSalaryArchiveIds(l); + salaryItemAdjustRecordListDTOS.addAll(mapper.salaryItemAdjustRecordList(queryParam, salaryItemIds)); + }); + PageInfo page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), salaryItemAdjustRecordListDTOS, SalaryItemAdjustRecordListDTO.class); diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java index 7afb346a0..6e2fc8415 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java @@ -30,6 +30,7 @@ public class SalaryItemAdjustRecordQueryParam extends BaseQueryParam { //薪资档案id private Long salaryArchiveId; + private List salaryArchiveIds; //关键字(姓名、部门、薪资项目名称) private String keyword; diff --git a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java index 1b44a0d7a..ec6a4ff51 100644 --- a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java +++ b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java @@ -114,6 +114,7 @@ public class SalaryArchivePO { //---------条件------- private Collection ids; + private Collection taxAgentIds; private Collection employeeIds; /** * 状态 diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml index db76c9cb2..57a607f2c 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml @@ -563,11 +563,10 @@ AND t1.salary_archive_id = #{param.salaryArchiveId} - - - AND d.id IN - - #{id} + + AND t1.salary_archive_id IN + + #{salaryArchiveId} @@ -637,7 +636,12 @@ AND t1.salary_archive_id = #{param.salaryArchiveId} - + + AND t1.salary_archive_id IN + + #{salaryArchiveId} + + AND t1.adjust_reason = #{param.adjustReason} @@ -711,11 +715,10 @@ AND t1.salary_archive_id = #{param.salaryArchiveId} - - - AND d.id IN - - #{id} + + AND t1.salary_archive_id IN + + #{salaryArchiveId} @@ -737,7 +740,6 @@ #{id} - ORDER BY t1.effective_time DESC,t1.id DESC diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 69e5c299b..c4a8453de 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -658,6 +658,12 @@ #{id} + + AND t.tax_agent_id IN + + #{taxAgentId} + + ORDER BY t.id DESC diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 270f26294..f323b1c9d 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -6,6 +6,7 @@ import com.engine.salary.biz.SalaryArchiveBiz; import com.engine.salary.biz.SalaryArchiveItemBiz; import com.engine.salary.biz.SalaryItemBiz; import com.engine.salary.constant.SalaryDefaultTenantConstant; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.*; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; @@ -13,11 +14,14 @@ import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.SalaryArchiveItemService; +import com.engine.salary.service.SalaryArchiveService; +import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; @@ -62,6 +66,13 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } /** * 获取未生效 lt * @@ -617,23 +628,60 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi List salaryItemList = getCanAdjustSalaryItems(); List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); // 获取记录 - List list = salaryArchiveItemMapper.salaryItemAdjustRecordList(queryParam, salaryItemIds); + long currentEmployeeId = user.getUID(); + //是否开启分权 + Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId); + if (needAuth) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId); + List taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); + + if (CollectionUtils.isEmpty(taxAgentIds)) { +// return new PageInfo(); + } + + List salaryArchives = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentIds(taxAgentIds).build()); + List salaryArchiveIds = SalaryEntityUtil.properties(salaryArchives, SalaryArchivePO::getId, Collectors.toList()); + queryParam.setSalaryArchiveIds(salaryArchiveIds); + } + + List employeeList = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + + List listResult = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds); + listResult = listResult.stream() + .filter(r -> { + DataCollectionEmployee employee = employeeMap.getOrDefault(r.getEmployeeId(), new DataCollectionEmployee()); + String username = queryParam.getUsername(); + List departmentIds = queryParam.getDepartmentIds(); + List positionIds = queryParam.getPositionIds(); + String userstatus = queryParam.getUserstatus(); + r.setUsername(employee.getUsername()); + r.setDepartmentName(employee.getDepartmentName()); + r.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus()))); + r.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(r.getAdjustReason())); + return (StringUtils.isBlank(username) || employee.getUsername().contains(username)) + && (CollectionUtils.isEmpty(departmentIds) || departmentIds.contains(employee.getDepartmentId())) + && (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId())) + && (StringUtils.isBlank(userstatus) || Objects.equals(employee.getStatus(), userstatus)) + && (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId())) + ; + }) + .collect(Collectors.toList()); + + List listAll = salaryArchiveItemMapper.salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds); // 人员信息赋值 - list.forEach(m -> { + listResult.forEach(m -> { if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { listAll.removeIf(a -> a.getId().equals(m.getId())); } Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst(); m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); - - m.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(m.getEmployeeStatus()))); - m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason())); }); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List> rows = new ArrayList<>(); rows.add(headerList); - for (SalaryItemAdjustRecordListDTO dto : list) { + for (SalaryItemAdjustRecordListDTO dto : listResult) { List row = new ArrayList<>(); row.add(dto.getUsername()); row.add(dto.getEmployeeStatus()); diff --git a/src/com/engine/salary/web/SIReportController.java b/src/com/engine/salary/web/SIReportController.java index ceeb545ba..041deabfd 100644 --- a/src/com/engine/salary/web/SIReportController.java +++ b/src/com/engine/salary/web/SIReportController.java @@ -56,10 +56,6 @@ public class SIReportController { @Path("record/list") @Produces(MediaType.APPLICATION_JSON) public String recordList(@Context HttpServletRequest request, @Context HttpServletResponse response) { -// if (StringUtils.isEmpty(token)) { -// return WeaResult.success(null, SalrayCheckSecondAuthConstant.CHECK_SECOND_FAIL_NO_TOKEN); -// } -// Long employeeId = UserContext.getCurrentEmployeeId(); User user = HrmUserVarify.getUser(request, response); SalaryItemAdjustRecordQueryParam salaryItemAdjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam(); salaryItemAdjustRecordQueryParam.setEmployeeId((long)user.getUID()); diff --git a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java index 4f711d32e..fbd21b601 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java @@ -11,6 +11,7 @@ import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustBeforeParam; import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam; import com.engine.salary.entity.salaryarchive.param.SingleSalaryItemAdjustRecordQueryParam; import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.UserStatusEnum; @@ -22,9 +23,11 @@ import com.engine.salary.service.impl.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.wrapper.proxy.SalaryArchiveItemWrapperProxy; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -229,8 +232,46 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); List listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds); - PageInfo list = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(queryParam, salaryItemIds); - List listResult = list.getList(); + long currentEmployeeId = user.getUID(); + //是否开启分权 + Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId); + if (needAuth) { + Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId); + List taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); + + if (CollectionUtils.isEmpty(taxAgentIds)) { + return new PageInfo(); + } + + List salaryArchives = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentIds(taxAgentIds).build()); + List salaryArchiveIds = SalaryEntityUtil.properties(salaryArchives, SalaryArchivePO::getId, Collectors.toList()); + queryParam.setSalaryArchiveIds(salaryArchiveIds); + } + + List listResult = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds); + listResult = listResult.stream() + .filter(r -> { + DataCollectionEmployee employee = employeeMap.getOrDefault(r.getEmployeeId(), new DataCollectionEmployee()); + String username = queryParam.getUsername(); + List departmentIds = queryParam.getDepartmentIds(); + List positionIds = queryParam.getPositionIds(); + String userstatus = queryParam.getUserstatus(); + r.setUsername(employee.getUsername()); + r.setDepartmentName(employee.getDepartmentName()); + r.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus()))); + r.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(r.getAdjustReason())); + return (StringUtils.isBlank(username) || employee.getUsername().contains(username)) + && (CollectionUtils.isEmpty(departmentIds) || departmentIds.contains(employee.getDepartmentId())) + && (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId())) + && (StringUtils.isBlank(userstatus) || Objects.equals(employee.getStatus(), userstatus)) + && (CollectionUtils.isEmpty(positionIds) || positionIds.contains(employee.getJobtitleId())) + ; + }) + .collect(Collectors.toList()); + + PageInfo pageInfo = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), listResult, SalaryItemAdjustRecordListDTO.class); + + listResult = pageInfo.getList(); //获取上次更改的记录 listResult.forEach(m -> { if (!CollectionUtils.isEmpty(listAll)) { @@ -238,19 +279,14 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt } Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst(); m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); - DataCollectionEmployee employee = employeeMap.getOrDefault(m.getEmployeeId(), new DataCollectionEmployee()); - m.setUsername(employee.getUsername()); - m.setDepartmentName(employee.getDepartmentName()); - m.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(employee.getStatus()))); - m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason())); }); - - return list; + return pageInfo; } /** * 我的调薪记录 + * * @param queryParam * @return */