From de1efcfd7fc941573f4e02f4a3d5d62aa3c3c97c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 2 Apr 2024 10:38:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=89=BE=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/TaxDeclarationExcelServiceImpl.java | 11 +++++++ .../impl/TaxDeclarationValueServiceImpl.java | 20 +++++++++++- .../impl/TaxDeclareEmployeeServiceImpl.java | 31 ++++++++++++++----- .../salary/web/TaxDeclarationController.java | 2 +- .../wrapper/TaxDeclareRecordWrapper.java | 12 +++++-- 5 files changed, 64 insertions(+), 12 deletions(-) diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index a3b15cf1b..0874de2be 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -281,6 +281,11 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(declarationPO.getId()); Map empDeclarationValueMap = SalaryEntityUtil.convert2Map(taxDeclarationValuePOS, TaxDeclarationValuePO::getEmployeeId); + List canManageTaxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + boolean isAdmin = canManageTaxAgentIds.contains(declarationPO.getTaxAgentId()); + Map authMap = getEmployeeDeclareService(user).empIdsByAzGssbAuth(user.getUID()); + List canManageEmpIds = (List)authMap.get("canManageEmpIds"); + // 失败的数量 int errorCount = 0; // 成功的数量 @@ -381,6 +386,12 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar } } + if (!isAdmin && !canManageEmpIds.contains(employeeId)) { + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + "没有该部门个税操作权限,请联系管理员开通权限"); + excelComments.add(errorMessageMap); + } + if (isError) { errorCount++; errorDatas.add(map); diff --git a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java index 834a45b0b..13ff7d736 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationValueServiceImpl.java @@ -205,6 +205,16 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar if (declareRecordPO == null) { throw new SalaryRunTimeException("个税申报记录不存在!"); } + // 艾志个税分权 + List taxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (!taxAgentIds.contains(taxDeclaration.getTaxAgentId())) { + // 不是薪酬管理员 + Map authMap = getEmployeeDeclareService(user).empIdsByAzGssbAuth(user.getUID()); + List canManageEmpIds = (List)authMap.get("canManageEmpIds"); + if (!canManageEmpIds.contains(param.getEmployeeId())) { + throw new SalaryRunTimeException("没有该部门个税操作权限,请联系管理员开通权限"); + } + } TaxDeclarationValuePO po = TaxDeclarationValuePO.builder().id(IdGenerator.generate()).taxDeclarationId(param.getTaxDeclarationId()).taxDeclareRecordId(taxDeclareRecordId).employeeId(param.getEmployeeId()).employeeType(param.getEmployeeType()).resultValue(param.getTaxReportColumnValues()).resultValueJson(JsonUtil.toJsonString(param.getTaxReportColumnValues())).createTime(new Date()).updateTime(new Date()).source(SourceEnum.ADD.getValue()).creator((long) user.getUID()).deleteType(0).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build(); TaxDeclarationValuePO po4log = new TaxDeclarationValuePO(); @@ -391,6 +401,14 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar List extEmployeeIds = taxDeclarationValues.stream().filter(taxDeclarationValue -> Objects.equals(taxDeclarationValue.getEmployeeType(), EmployeeTypeEnum.EXT_EMPLOYEE.getValue())).map(TaxDeclarationValuePO::getEmployeeId).collect(Collectors.toList()); List extEmployees = getExtEmpService(user).getExtEmpByIds(extEmployeeIds); + // 艾志分权 + List taxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + Map authMap = getEmployeeDeclareService(user).empIdsByAzGssbAuth(user.getUID()); + List canManageEmpIds = (List)authMap.get("canManageEmpIds"); + if (!taxAgentIds.contains(taxDeclareRecordPO.getTaxAgentId())) { + taxDeclarationValues = taxDeclarationValues.stream().filter(po -> canManageEmpIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } + // 列表数据 List> localList = TaxDeclarationValueList.buildTableData(incomeCategoryEnum, taxReportColumns, taxDeclarationValues, employeeDeclares, simpleEmployees, simpleUserInfos, extEmployees, true); @@ -475,7 +493,7 @@ public class TaxDeclarationValueServiceImpl extends Service implements TaxDeclar headerList.addAll((param.isOnlyShowDiffItem() ? finalOnlyShowColumns : columns).stream().collect(Collectors.toList())); resultList.put("columns", headerList); resultList.put("pageInfo", SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), oneResultList)); - + // 显示定制列 List weaColumns = new ArrayList<>(); weaColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "工号")); diff --git a/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java index d2ed11f26..3a5fb08cc 100644 --- a/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclareEmployeeServiceImpl.java @@ -5,6 +5,7 @@ import com.engine.core.impl.Service; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.entity.extemp.po.ExtEmpPO; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclareEmployeeBO; import com.engine.salary.entity.taxdeclaration.dto.AbnormalEmployeeListDTO; import com.engine.salary.entity.taxdeclaration.param.AbnormalEmployeeListQueryParam; @@ -12,10 +13,7 @@ import com.engine.salary.entity.taxdeclaration.po.TaxDeclareEmployeePO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationValueMapper; -import com.engine.salary.service.EmployeeDeclareService; -import com.engine.salary.service.ExtEmpService; -import com.engine.salary.service.SalaryEmployeeService; -import com.engine.salary.service.TaxDeclareEmployeeService; +import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.page.PageInfo; @@ -23,10 +21,7 @@ import com.engine.salary.util.page.SalaryPageUtil; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -56,9 +51,21 @@ public class TaxDeclareEmployeeServiceImpl extends Service implements TaxDeclare return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); } + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + @Override public PageInfo listPage4NotDeclareByParam(AbnormalEmployeeListQueryParam queryParam) { List list = getTaxDeclarationValueMapper().listPage4NotDeclareByParam(queryParam); + // 艾志分权 + List taxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (!taxAgentIds.contains(queryParam.getTaxAgentId())) { + // 不是薪酬管理员 + Map authMap = getEmployeeDeclareService(user).empIdsByAzGssbAuth(user.getUID()); + List canManageEmpIds = (List)authMap.get("canManageEmpIds"); + list = list.stream().filter(po -> canManageEmpIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, TaxDeclareEmployeePO.class); } @@ -70,6 +77,14 @@ public class TaxDeclareEmployeeServiceImpl extends Service implements TaxDeclare @Override public PageInfo listPage4NoValueByParam(AbnormalEmployeeListQueryParam queryParam) { List list = getTaxDeclarationValueMapper().listPage4NoValueByParam(queryParam); + // 艾志分权 + List taxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (!taxAgentIds.contains(queryParam.getTaxAgentId())) { + // 不是薪酬管理员 + Map authMap = getEmployeeDeclareService(user).empIdsByAzGssbAuth(user.getUID()); + List canManageEmpIds = (List)authMap.get("canManageEmpIds"); + list = list.stream().filter(po -> canManageEmpIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), list, TaxDeclareEmployeePO.class); } diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 64c36c30f..9b86162e3 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -521,7 +521,7 @@ public class TaxDeclarationController { @Produces(MediaType.APPLICATION_JSON) public String listTaxDeclarationValue(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclarationValueListQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::listValuePage, queryParam); + return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::listValuePage, queryParam); } /** diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java index 806e9015f..a7b5f7816 100644 --- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java +++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java @@ -170,7 +170,7 @@ public class TaxDeclareRecordWrapper extends Service { * @param queryParam 列表查询条件 * @return */ - public PageInfo listValuePage(TaxDeclarationValueListQueryParam queryParam) { + public Map listValuePage(TaxDeclarationValueListQueryParam queryParam) { // 查询个税申报表 TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(queryParam.getTaxDeclarationId()); // 判断是否有权限查看 @@ -197,7 +197,7 @@ public class TaxDeclareRecordWrapper extends Service { Map resultMap = new HashMap<>(); resultMap.put("canOperate", canOperate); resultMap.put("pageInfo", dtoPage); - return dtoPage; + return resultMap; } /** @@ -269,6 +269,14 @@ public class TaxDeclareRecordWrapper extends Service { || StringUtils.contains(e.getJobNum(), queryParam.getKeyword()) || StringUtils.contains(e.getCardNum(), queryParam.getKeyword())) .collect(Collectors.toList()); + // 艾志分权 + List taxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())).stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + if (!taxAgentIds.contains(queryParam.getTaxAgentId())) { + // 不是薪酬管理员 + Map authMap = getEmployeeDeclareService(user).empIdsByAzGssbAuth(user.getUID()); + List canManageEmpIds = (List)authMap.get("canManageEmpIds"); + dtos = dtos.stream().filter(po -> canManageEmpIds.contains(po.getEmployeeId())).collect(Collectors.toList()); + } PageInfo dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), dtos, AbnormalEmployeeListDTO.class); return dtoPage; }