From 3a7c1c2d29747f85c67a4ffb6174d72fc49c37a3 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 3 Jul 2024 18:00:29 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsql=E9=9A=90=E8=97=8Fbu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml index 8c89c191b..087eb9a34 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobMapper.xml @@ -117,15 +117,15 @@ #{id} + + AND tax_agent_id = #{taxAgentId} + AND tax_agent_id IN #{taxAgentId} - - AND tax_agent_id = #{taxAgentId} - ORDER BY create_time DESC From 95b9f5452a4e891dfb02eea5a8c79a9a57b9e29f Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 8 Jul 2024 10:20:21 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E5=AF=BC=E5=87=BAfix=E5=A4=9A=E9=80=89=E4=B9=89=E5=8A=A1?= =?UTF-8?q?=E4=BA=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/web/SalaryArchiveController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index 6b6e59ae1..0fbe3797c 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -16,6 +16,7 @@ import com.engine.salary.wrapper.SalaryArchiveWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -486,6 +487,11 @@ public class SalaryArchiveController { if (StringUtils.isNotBlank(taxAgentId)) { param.setTaxAgentId(Long.valueOf(taxAgentId)); } + String taxAgentIdsStr = request.getParameter("taxAgentIds"); + if (StringUtils.isNotBlank(taxAgentIdsStr)) { + List taxAgentIds = Arrays.stream(taxAgentIdsStr.split(",")).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + param.setTaxAgentIds(taxAgentIds); + } String departmentIds = request.getParameter("departmentIds"); if (StringUtils.isNotBlank(departmentIds)) { param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(Long::valueOf).collect(Collectors.toList())); From 7ef229dfde4f1c1137886e5f6da50ff6b243d8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Wed, 10 Jul 2024 10:43:11 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=A4=BE=E4=BF=9D?= =?UTF-8?q?=E8=B0=83=E5=B7=AEbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/SICompensationServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SICompensationServiceImpl.java b/src/com/engine/salary/service/impl/SICompensationServiceImpl.java index 25bf127a0..a6c4cb5d8 100644 --- a/src/com/engine/salary/service/impl/SICompensationServiceImpl.java +++ b/src/com/engine/salary/service/impl/SICompensationServiceImpl.java @@ -470,7 +470,7 @@ public class SICompensationServiceImpl extends Service implements SICompensation //记录操作日志 InsuranceAccountBatchPO targetPO = getInsuranceAccountBatchMapper().getByBillMonth(insuranceAccountDetailPO.getBillMonth(), insuranceAccountDetailPO.getPaymentOrganization()); TaxAgentPO taxAgentInfo = getTaxAgentMapper().getById(insuranceAccountDetailPO.getPaymentOrganization()); - DataCollectionEmployee empInfo = getEmployMapper().getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); + DataCollectionEmployee empInfo = getSalaryEmployeeService(user).getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); LoggerContext loggerContext = new LoggerContext(); loggerContext.setUser(user); loggerContext.setTargetId(String.valueOf(targetPO.getId())); From 84ce2821f66cb94af8792414359062677b5e63ab Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 10 Jul 2024 14:01:09 +0800 Subject: [PATCH 04/14] =?UTF-8?q?1=E3=80=81=E5=AE=9A=E8=96=AA=E3=80=81?= =?UTF-8?q?=E8=BF=94=E8=81=98action=E4=BC=98=E5=8C=96=202=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=87=BA=E6=97=B6excel=E4=B8=AD?= =?UTF-8?q?=E5=8F=8C=E5=87=BB=E5=8D=95=E5=85=83=E6=A0=BC=E5=8F=98=E6=88=90?= =?UTF-8?q?=E9=BB=91=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/action/CheckInitSalaryAction.java | 110 +++++++++++++---- .../salary/action/InitSalaryAction.java | 115 +++++++++++++----- .../engine/salary/action/RehireAction.java | 105 +++++++++------- .../bo/SalaryArchiveExcelBO.java | 12 +- .../mapper/archive/SalaryArchiveMapper.java | 8 ++ .../mapper/archive/SalaryArchiveMapper.xml | 7 ++ .../impl/SalaryArchiveExcelServiceImpl.java | 4 +- .../salary/util/excel/ExcelUtilPlus.java | 23 +++- 8 files changed, 276 insertions(+), 108 deletions(-) diff --git a/src/com/engine/salary/action/CheckInitSalaryAction.java b/src/com/engine/salary/action/CheckInitSalaryAction.java index d93217792..34dd5782a 100644 --- a/src/com/engine/salary/action/CheckInitSalaryAction.java +++ b/src/com/engine/salary/action/CheckInitSalaryAction.java @@ -2,11 +2,23 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import com.engine.salary.mapper.archive.SalaryArchiveMapper; +import com.engine.salary.service.SalaryArchiveService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.impl.SalaryArchiveServiceImpl; +import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -25,6 +37,18 @@ public class CheckInitSalaryAction implements Action { return ServiceUtil.getService(SalaryArchiveWrapper.class, user); } + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private SalaryArchiveMapper getSalaryArchiveMapper() { + return MapperProxyFactory.getProxy(SalaryArchiveMapper.class); + } + private String tableName; @@ -57,40 +81,72 @@ public class CheckInitSalaryAction implements Action { String value = fieldMap.get(processField); list.add(new SalaryField(processField, salaryName, value)); } - List> importData = new ArrayList<>(); Map importDataMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); - if(!importDataMap.containsKey("生效日期")){ - importDataMap.put("生效日期", SalaryDateUtil.getFormatDate(new Date())); - } - if(!importDataMap.containsKey("最后发薪日期")){ - importDataMap.put("最后发薪日期", ""); - } - importData.add(importDataMap); - SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() - .importDatas(importData) - .build(); - - //操作人 - String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(SalaryField::getValue).orElse("1"); - Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).checkSalaryArchiveInit(build); - - List errorNotice = (List) map.get("errorNotice"); - if (CollectionUtils.isNotEmpty(errorNotice)) { - log.error("定薪检查存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); - List> excelComments = (List>) map.get("errorNotice"); - StringBuilder message = new StringBuilder(""); - for (Map comments : excelComments) { - message.append(comments.get("message")).append("\n"); - } - requestInfo.getRequestManager().setMessage(message.toString()); - return FAILURE_AND_CONTINUE; - } + return doSalaryArchiveInit(requestInfo, importDataMap); } catch (Exception e) { log.error("定薪检查异常", e); requestInfo.getRequestManager().setMessage(e.getMessage()); return FAILURE_AND_CONTINUE; } + } + + public String doSalaryArchiveInit(RequestInfo requestInfo, Map importDataMap) { + User user = new User(); + user.setLoginid("sysadmin"); + user.setUid(1); + List> importData = new ArrayList<>(); + if(!importDataMap.containsKey("生效日期")){ + importDataMap.put("生效日期", SalaryDateUtil.getFormatDate(new Date())); + } + if(!importDataMap.containsKey("最后发薪日期")){ + importDataMap.put("最后发薪日期", ""); + } + importData.add(importDataMap); + + // 首先判断是否已经存在薪资档案,且薪资档案状态为待定薪 + String taxAgentName = importDataMap.getOrDefault("个税扣缴义务人", "").toString(); + String empIdStr = importDataMap.getOrDefault("员工id", "").toString(); + if (StringUtils.isBlank(taxAgentName)) { + requestInfo.getRequestManager().setMessage("个税扣缴义务人不能为空"); + return FAILURE_AND_CONTINUE; + } + // 获取义务人信息 + List taxAgentPOS = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(taxAgentName).build()); + if (CollectionUtils.isEmpty(taxAgentPOS)) { + requestInfo.getRequestManager().setMessage("个税扣缴义务人不存在"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = taxAgentPOS.get(0).getId(); + // 获取员工id + if (NumberUtils.isCreatable(empIdStr)) { + List salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(Long.valueOf(empIdStr)).build()); + if (CollectionUtils.isNotEmpty(salaryArchivePOList) && !salaryArchivePOList.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())) { + // 存在薪资档案,且薪资档案状态不是待定薪,修改状态为待定薪 + salaryArchivePOList.get(0).setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + salaryArchivePOList.get(0).setPayEndDate(null); + getSalaryArchiveMapper().update(salaryArchivePOList.get(0)); + } + } + + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .importDatas(importData) + .build(); + + //操作人 + Map map = getSalaryArchiveWrapper(user).checkSalaryArchiveInit(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("定薪检查存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } return SUCCESS; } diff --git a/src/com/engine/salary/action/InitSalaryAction.java b/src/com/engine/salary/action/InitSalaryAction.java index 4b2b0472b..3593dcb9b 100644 --- a/src/com/engine/salary/action/InitSalaryAction.java +++ b/src/com/engine/salary/action/InitSalaryAction.java @@ -2,11 +2,23 @@ package com.engine.salary.action; import com.engine.common.util.ServiceUtil; import com.engine.salary.entity.salaryarchive.param.SalaryArchiveImportActionParam; +import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; +import com.engine.salary.entity.taxagent.param.TaxAgentQueryParam; +import com.engine.salary.entity.taxagent.po.TaxAgentPO; +import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; +import com.engine.salary.mapper.archive.SalaryArchiveMapper; +import com.engine.salary.service.SalaryArchiveService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.service.impl.SalaryArchiveServiceImpl; +import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; +import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.wrapper.SalaryArchiveWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import weaver.conn.RecordSet; import weaver.general.Util; import weaver.hrm.User; @@ -25,6 +37,18 @@ public class InitSalaryAction implements Action { return ServiceUtil.getService(SalaryArchiveWrapper.class, user); } + private SalaryArchiveService getSalaryArchiveService(User user) { + return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); + } + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + + private SalaryArchiveMapper getSalaryArchiveMapper() { + return MapperProxyFactory.getProxy(SalaryArchiveMapper.class); + } + private String tableName; @@ -39,12 +63,10 @@ public class InitSalaryAction implements Action { @Override public String execute(RequestInfo requestInfo) { try { - Property[] properties = requestInfo.getMainTableInfo().getProperty(); Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, property -> Util.null2String(property.getValue()))); - RecordSet rs = new RecordSet(); String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; @@ -57,44 +79,79 @@ public class InitSalaryAction implements Action { String value = fieldMap.get(processField); list.add(new SalaryField(processField, salaryName, value)); } - List> importData = new ArrayList<>(); + Map importDataMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); - if(!importDataMap.containsKey("生效日期")){ - importDataMap.put("生效日期", SalaryDateUtil.getFormatDate(new Date())); - } - if(!importDataMap.containsKey("最后发薪日期")){ - importDataMap.put("最后发薪日期", ""); - } - importData.add(importDataMap); - SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() - .importDatas(importData) - .build(); - - //操作人 - String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(SalaryField::getValue).orElse("1"); - Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).importSalaryArchiveInit(build); - - List errorNotice = (List) map.get("errorNotice"); - if (CollectionUtils.isNotEmpty(errorNotice)) { - log.error("定薪存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); - List> excelComments = (List>) map.get("errorNotice"); - StringBuilder message = new StringBuilder(""); - for (Map comments : excelComments) { - message.append(comments.get("message")).append("\n"); - } - requestInfo.getRequestManager().setMessage(message.toString()); - return FAILURE_AND_CONTINUE; - } + return doSalaryArchiveInit(requestInfo, importDataMap); } catch (Exception e) { log.error("定薪异常", e); requestInfo.getRequestManager().setMessage(e.getMessage()); return FAILURE_AND_CONTINUE; } + } + + public String doSalaryArchiveInit(RequestInfo requestInfo, Map importDataMap) { + User user = new User(); + user.setLoginid("sysadmin"); + user.setUid(1); + List> importData = new ArrayList<>(); + if(!importDataMap.containsKey("生效日期")){ + importDataMap.put("生效日期", SalaryDateUtil.getFormatDate(new Date())); + } + if(!importDataMap.containsKey("最后发薪日期")){ + importDataMap.put("最后发薪日期", ""); + } + importData.add(importDataMap); + + // 首先判断是否已经存在薪资档案,且薪资档案状态为待定薪 + String taxAgentName = importDataMap.getOrDefault("个税扣缴义务人", "").toString(); + String empIdStr = importDataMap.getOrDefault("员工id", "").toString(); + if (StringUtils.isBlank(taxAgentName)) { + requestInfo.getRequestManager().setMessage("个税扣缴义务人不能为空"); + return FAILURE_AND_CONTINUE; + } + // 获取义务人信息 + List taxAgentPOS = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(taxAgentName).build()); + if (CollectionUtils.isEmpty(taxAgentPOS)) { + requestInfo.getRequestManager().setMessage("个税扣缴义务人不存在"); + return FAILURE_AND_CONTINUE; + } + Long taxAgentId = taxAgentPOS.get(0).getId(); + // 获取员工id + if (NumberUtils.isCreatable(empIdStr)) { + List salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(Long.valueOf(empIdStr)).build()); + if (CollectionUtils.isNotEmpty(salaryArchivePOList) && !salaryArchivePOList.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())) { + // 存在薪资档案,且薪资档案状态不是待定薪,修改状态为待定薪 + salaryArchivePOList.get(0).setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + salaryArchivePOList.get(0).setPayEndDate(null); + getSalaryArchiveMapper().update(salaryArchivePOList.get(0)); + } + } + + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .importDatas(importData) + .build(); + + //操作人 + String uid = importDataMap.getOrDefault("操作人", "1").toString(); + Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).importSalaryArchiveInit(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("定薪存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } return SUCCESS; } + class SalaryField { private String processField; diff --git a/src/com/engine/salary/action/RehireAction.java b/src/com/engine/salary/action/RehireAction.java index d0acd6e27..ac236b54a 100644 --- a/src/com/engine/salary/action/RehireAction.java +++ b/src/com/engine/salary/action/RehireAction.java @@ -16,6 +16,7 @@ import com.engine.salary.service.TaxAgentService; import com.engine.salary.service.impl.SalaryArchiveServiceImpl; import com.engine.salary.service.impl.TaxAgentManageRangeServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; +import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.wrapper.SalaryArchiveWrapper; @@ -89,9 +90,9 @@ public class RehireAction implements Action { String value = fieldMap.get(processField); list.add(new SalaryField(processField, salaryName, value)); } - Map salaryFieldMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); - String taxAgentName = salaryFieldMap.get("个税扣缴义务人"); - String empIdStr = salaryFieldMap.get("员工id"); + Map salaryFieldMap = SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue); + String taxAgentName = salaryFieldMap.getOrDefault("个税扣缴义务人", "").toString(); + String empIdStr = salaryFieldMap.getOrDefault("员工id", "").toString(); if (StringUtils.isBlank(taxAgentName) || StringUtils.isBlank(empIdStr)) { requestInfo.getRequestManager().setMessage("个税扣缴义务人、或员工id不能为空"); return FAILURE_AND_CONTINUE; @@ -107,47 +108,69 @@ public class RehireAction implements Action { Long employeeId = Long.valueOf(empIdStr); List salaryArchivePOS = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(employeeId).build()); if (CollectionUtils.isEmpty(salaryArchivePOS)){ - requestInfo.getRequestManager().setMessage("该个税扣缴义务人下,该员工不存在薪资档案!"); - return FAILURE_AND_CONTINUE; + // 直接走定薪action生成档案 + InitSalaryAction initSalaryAction = new InitSalaryAction(); + return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap); + + // requestInfo.getRequestManager().setMessage("该个税扣缴义务人下,该员工不存在薪资档案!"); + // return FAILURE_AND_CONTINUE; } else if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())) { - requestInfo.getRequestManager().setMessage("该个税扣缴义务人下,该员工没有发过薪。需取消停薪后,申请定薪流程!"); - return FAILURE_AND_CONTINUE; - } - - if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { - // 停薪来自待停薪 1、取消停薪 - getSalaryArchiveWrapper(user).cancelStop(Collections.singletonList(salaryArchivePOS.get(0).getId())); - } - if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()) || salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.SUSPEND.getValue())) { - // 1、如果不在人员范围内则把他加入义务人的人员范围,2、删除待办 - addTaxAgentRangeIfNotExist(taxAgentId, employeeId, user); - getSalaryArchiveWrapper(user).deleteSuspendTodo(Collections.singletonList(salaryArchivePOS.get(0).getId())); - } - - // 调薪 - List> importData = new ArrayList<>(); - importData.add(SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue)); - - SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() - .importDatas(importData) - .build(); - - //操作人 - String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(RehireAction.SalaryField::getValue).orElse("1"); - Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).adjustmentSalaryArchive(build); - - List errorNotice = (List) map.get("errorNotice"); - if (CollectionUtils.isNotEmpty(errorNotice)) { - // 回滚档案状态 + // 先把状态变成待定薪然后走定薪action + salaryArchivePOS.get(0).setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue()); + salaryArchivePOS.get(0).setPayEndDate(null); getSalaryArchiveMapper().update(salaryArchivePOS.get(0)); - log.error("调薪存在异常 requestId:{} map:{}", requestInfo.getRequestid(), map); - List> excelComments = (List>) map.get("errorNotice"); - StringBuilder message = new StringBuilder(""); - for (Map comments : excelComments) { - message.append(comments.get("message")).append("\n"); + InitSalaryAction initSalaryAction = new InitSalaryAction(); + return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap); + + // requestInfo.getRequestManager().setMessage("该个税扣缴义务人下,该员工没有发过薪。需取消停薪后,申请定薪流程!"); + // return FAILURE_AND_CONTINUE; + } else { + if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) { + // 停薪来自待停薪 1、取消停薪 + getSalaryArchiveWrapper(user).cancelStop(Collections.singletonList(salaryArchivePOS.get(0).getId())); + } + if (salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue()) || + salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.SUSPEND.getValue())) { + // 1、如果不在人员范围内则把他加入义务人的人员范围,2、删除待办 + addTaxAgentRangeIfNotExist(taxAgentId, employeeId, user); + getSalaryArchiveWrapper(user).deleteSuspendTodo(Collections.singletonList(salaryArchivePOS.get(0).getId())); + } + + // 调薪 + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, SalaryField::getSalaryName, SalaryField::getValue)); + + SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder() + .importDatas(importData) + .build(); + + //操作人 + String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(RehireAction.SalaryField::getValue).orElse("1"); + Map map = getSalaryArchiveWrapper(new User(Integer.parseInt(uid))).adjustmentSalaryArchive(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + // 回滚档案状态 + getSalaryArchiveMapper().update(salaryArchivePOS.get(0)); + log.error("调薪存在异常 requestId:{} map:{}", requestInfo.getRequestid(), map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + // 如果有起始发薪日期字段,则更新档案的起始发薪日期 + String startPayDate = salaryFieldMap.getOrDefault("起始发薪日期", "").toString(); + if (StringUtils.isNotBlank(startPayDate)) { + Date date = SalaryDateUtil.dateStrToLocalDate(startPayDate); + if (date != null) { + Long salaryArchiveId = salaryArchivePOS.get(0).getId(); + getSalaryArchiveMapper().updatePayStartDateById(salaryArchiveId, date); + } + } - requestInfo.getRequestManager().setMessage(message.toString()); - return FAILURE_AND_CONTINUE; } } catch (Exception e) { log.error("返聘调薪异常", e); diff --git a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java index 3332fff79..58eaabcad 100644 --- a/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java +++ b/src/com/engine/salary/entity/salaryarchive/bo/SalaryArchiveExcelBO.java @@ -21,14 +21,16 @@ import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.excel.ExcelComment; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.engine.salary.util.db.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; +import weaver.general.Util; +import weaver.hrm.User; import java.time.LocalDate; import java.util.*; @@ -338,7 +340,7 @@ public class SalaryArchiveExcelBO extends Service { * @param importHandleParam * @return */ - public static boolean singleRowCheck(List allTodoSalaryArchives, Map map, List headers, int effectiveTimeIndex, List> excelComments, int errorCount, SalaryArchiveImportHandleParam importHandleParam) { + public static boolean singleRowCheck(List allTodoSalaryArchives, Map map, List headers, int effectiveTimeIndex, List> excelComments, int errorCount, SalaryArchiveImportHandleParam importHandleParam, User user) { //是否是流程 boolean process = importHandleParam.isProcess(); @@ -655,7 +657,7 @@ public class SalaryArchiveExcelBO extends Service { // 7.薪资项目列处理(待定薪\定薪的初始化\定薪的调薪) } else { isError = handleSalaryItem(isError, effectiveTimeIndex, excelComments, errorCount, j, - effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map); + effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, key.toString(), cellVal, map, user); } } @@ -805,14 +807,14 @@ public class SalaryArchiveExcelBO extends Service { public static boolean handleSalaryItem(boolean isError, int effectiveTimeIndex, List> excelComments, int errorCount, int j, Date effectiveTime, SalaryArchivePO finalSalaryArchive, String salaryItemAdjustReason, SalaryArchiveImportHandleParam importHandleParam, - String key, String cellVal, Map map) { + String key, String cellVal, Map map, User user) { String rowindex = "第" + map.get("index") + "行"; // 薪资项目数据 if (isError || importHandleParam.isSuspendList() || (importHandleParam.isSalaryItemAdjust() && effectiveTime == null) || finalSalaryArchive == null) { return isError; } - Optional optionalSalaryItem = importHandleParam.getSalaryItems().stream().filter(e -> e.getName().equals(key)).findFirst(); + Optional optionalSalaryItem = importHandleParam.getSalaryItems().stream().filter(e -> Util.formatMultiLang(e.getName(), String.valueOf(user.getLanguage())).equals(key)).findFirst(); // 可以处理薪资项目的条件:有薪资项目+待定薪列表+定薪列表(调薪和初始化导入) boolean isEnable = optionalSalaryItem.isPresent() && (importHandleParam.isPendingList() || importHandleParam.isInit() || importHandleParam.isSalaryItemAdjust()); if (isEnable) { diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java index 79f7dcf30..a11f48491 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java @@ -6,6 +6,7 @@ import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import org.apache.ibatis.annotations.Param; import java.util.Collection; +import java.util.Date; import java.util.List; public interface SalaryArchiveMapper { @@ -135,4 +136,11 @@ public interface SalaryArchiveMapper { List listPayEndDateIsNull(@Param("ids")List employeeIds); List listPayStartDateIsNull(@Param("runStatus")String runStatus); + + /** + * 更新起始发薪日期 + * @param salaryArchiveId + * @param date + */ + void updatePayStartDateById(@Param("id")Long salaryArchiveId, @Param("payStartDate")Date date); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index 951429b32..259cb45d1 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -871,5 +871,12 @@ #{id} + + UPDATE hrsa_salary_archive + + pay_start_date= #{payStartDate} + + WHERE id = #{id} + \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java index c655d2d93..acc81e362 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveExcelServiceImpl.java @@ -492,7 +492,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch map = data.get(i); map.put("index", i + 2); // 3.校验行内容 - boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam); + boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, user); if (isError) { errorCount += 1; // 添加错误数据 @@ -600,7 +600,7 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch map = data.get(i); map.put("index", i + 2); // 3.校验行内容 - boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam); + boolean isError = SalaryArchiveExcelBO.singleRowCheck(allTodoSalaryArchives, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam, user); if (isError) { errorCount += 1; // 添加错误数据 diff --git a/src/com/engine/salary/util/excel/ExcelUtilPlus.java b/src/com/engine/salary/util/excel/ExcelUtilPlus.java index 3707f2f7c..748c12c79 100644 --- a/src/com/engine/salary/util/excel/ExcelUtilPlus.java +++ b/src/com/engine/salary/util/excel/ExcelUtilPlus.java @@ -587,14 +587,27 @@ public class ExcelUtilPlus { start = "0"; } XSSFCellStyle numberRedCellStyle = workbook.createCellStyle(); - BeanUtils.copyProperties(redCellStyle, numberRedCellStyle); + // 不能copy,在excel里编辑时背景变成了黑色 + // BeanUtils.copyProperties(redCellStyle, numberRedCellStyle); + numberRedCellStyle.setWrapText(true); + numberRedCellStyle.setBorderLeft(BorderStyle.THIN); + numberRedCellStyle.setBorderRight(BorderStyle.THIN); + numberRedCellStyle.setBorderTop(BorderStyle.THIN); + numberRedCellStyle.setBorderBottom(BorderStyle.THIN); numberRedCellStyle.setFont(redFont); short format = df.getFormat(start + Stream.generate(() -> "0").limit(p).collect(Collectors.joining()) + "_ "); numberRedCellStyle.setDataFormat(format); // 最后一行红色 numberRedCellStyleMap.put(p, numberRedCellStyle); XSSFCellStyle numberCellStyle = workbook.createCellStyle(); - BeanUtils.copyProperties(cellStyle, numberCellStyle); + // BeanUtils.copyProperties(cellStyle, numberCellStyle); + numberCellStyle.setFont(font);// 选择需要用到的字体格式 + numberCellStyle.setWrapText(true); + numberCellStyle.setBorderLeft(BorderStyle.THIN); + numberCellStyle.setBorderRight(BorderStyle.THIN); + numberCellStyle.setBorderTop(BorderStyle.THIN); + numberCellStyle.setBorderBottom(BorderStyle.THIN); + numberCellStyle.setDataFormat(format); numberCellStyleMap.put(p, numberCellStyle); }); @@ -622,13 +635,14 @@ public class ExcelUtilPlus { cell.setCellType(CellType.STRING); cell.setCellValue(String.valueOf(o)); } else if (o instanceof BigDecimal) { - cell.setCellType(CellType.NUMERIC); - cell.setCellValue(o == null ? 0 : ((BigDecimal) o).doubleValue()); if (lastRowRed && rowIndex == rowList.size() - 1) { cell.setCellStyle(numberRedCellStyleMap.get(patternList.get(cellIndex))); } else { cell.setCellStyle(numberCellStyleMap.get(patternList.get(cellIndex))); } + cell.setCellType(CellType.NUMERIC); + double value = o == null ? 0 : ((BigDecimal) o).doubleValue(); + cell.setCellValue(value); } else if (o instanceof Boolean) { cell.setCellType(CellType.BOOLEAN); cell.setCellValue(String.valueOf(o)); @@ -692,6 +706,7 @@ public class ExcelUtilPlus { cellStyle.setBorderRight(BorderStyle.THIN); cellStyle.setBorderTop(BorderStyle.THIN); cellStyle.setBorderBottom(BorderStyle.THIN); + cellStyle.setFillPattern(FillPatternType.NO_FILL); XSSFCellStyle redCellStyle = workbook.createCellStyle(); XSSFFont redFont = workbook.createFont(); From a6f02082d84b644246db7dde098215bab3869836 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 10 Jul 2024 15:01:49 +0800 Subject: [PATCH 05/14] =?UTF-8?q?fix=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E9=9D=9E=E7=B3=BB=E7=BB=9F=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=A9=BA=E6=8C=87=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/service/impl/SIAccountServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index f95fb8244..56d7898c6 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -3699,7 +3699,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { encryptUtil.decrypt(insuranceAccountDetailPO, InsuranceAccountDetailPO.class); InsuranceAccountBatchPO targetPO = getInsuranceAccountBatchMapper().getByBillMonth(insuranceAccountDetailPO.getBillMonth(), insuranceAccountDetailPO.getPaymentOrganization()); TaxAgentPO taxAgentInfo = getTaxAgentMapper().getById(targetPO.getPaymentOrganization()); - DataCollectionEmployee empInfo = getEmployMapper().getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); + DataCollectionEmployee empInfo = getSalaryEmployeeService(user).getEmployeeById(insuranceAccountDetailPO.getEmployeeId()); LoggerContext loggerContext = new LoggerContext(); loggerContext.setUser(user); loggerContext.setTargetId(String.valueOf(targetPO.getId())); From a259a5204434bbedeccc6c1f64a053d2280481f6 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Thu, 11 Jul 2024 11:28:54 +0800 Subject: [PATCH 06/14] =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportDataQueryParam.java | 24 +++++++++++++ .../SalaryStatisticsReportWrapper.java | 34 ++++++++++++++++++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java b/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java index 8fe73f9a5..481d6d887 100644 --- a/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java +++ b/src/com/engine/salary/report/entity/param/SalaryStatisticsReportDataQueryParam.java @@ -88,4 +88,28 @@ public class SalaryStatisticsReportDataQueryParam extends BaseQueryParam { // "分享批次id private Long batchId; + + @Override + public String toString() { + return "SalaryStatisticsReportDataQueryParam{" + + "id=" + id + + ", dimensionId=" + dimensionId + + ", salaryStartMonth='" + salaryStartMonth + '\'' + + ", salaryEndMonth='" + salaryEndMonth + '\'' + + ", taxAgent=" + taxAgent + + ", salarySob=" + salarySob + + ", incomeCategory=" + incomeCategory + + ", subCompany=" + subCompany + + ", depart=" + depart + + ", grade=" + grade + + ", position=" + position + + ", status=" + status + + ", employee=" + employee + + ", hiredate=" + hiredate + + ", leavedate=" + leavedate + + ", unitType=" + unitType + + ", isShare=" + isShare + + ", batchId=" + batchId + + '}'; + } } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 5e7ac7edb..18cbb1f71 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -30,6 +30,7 @@ import com.engine.salary.service.impl.*; import com.engine.salary.util.*; import com.engine.salary.util.excel.ExcelUtilPlus; import com.engine.salary.util.page.PageInfo; +import com.engine.salary.util.page.SalaryPageUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; @@ -325,11 +326,28 @@ public class SalaryStatisticsReportWrapper extends Service { //已缓存的报表id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); String salaryReportConditions = ""; + // 人员维度id + Long empDimensionId = 1683696782745L; if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { //报表中缓存的条件 salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { - return getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + if (param.getDimensionId().equals(empDimensionId)) { + // 人员维度需要分页 + Map finalResultMap = new HashMap<>(); + PageInfo> pageInfo = (PageInfo>)result.get("pageInfo"); + PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + finalPageInfo.setTotal(pageInfo.getList().size()); + finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); + finalResultMap.put("pageInfo", finalPageInfo); + finalResultMap.put("columns", result.get("columns")); + finalResultMap.put("countResult", result.get("countResult")); + finalResultMap.put("reportId", id); + return finalResultMap; + } + + return result; } } @@ -356,6 +374,20 @@ public class SalaryStatisticsReportWrapper extends Service { getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id, salaryReportConditions + "," + paramMd5); getSalaryCacheService(user).set(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5, resultMap); + Map finalResultMap = Maps.newHashMap(); + // 缓存完之后结果分页 + if (param.getDimensionId().equals(empDimensionId)) { + // 只有是人员维度才分页 + PageInfo> pageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); + pageInfo.setTotal(page.getList().size()); + pageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), page.getList())); + finalResultMap.put("pageInfo", pageInfo); + finalResultMap.put("columns", weaTableColumns); + finalResultMap.put("countResult", countResultMap); + finalResultMap.put("reportId", id); + + return finalResultMap; + } return resultMap; } From 50e3be607d7917b3e31fafcab2bdbfac281a3fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 11 Jul 2024 16:30:00 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E4=BF=AE=E5=A4=8Doracle=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index fd451cda5..935089f71 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -135,7 +135,7 @@ #{emp.deleteType,jdbcType=INTEGER}, #{emp.tenantKey,jdbcType=VARCHAR}, #{emp.employeeType,jdbcType=INTEGER}, - #{emp.lockStatus,jdbcType=INTEGER} + #{emp.lockStatus,jdbcType=INTEGER}, #{emp.subcompanyName,jdbcType=VARCHAR}, #{emp.subcompanyId,jdbcType=DOUBLE}, #{emp.departmentName,jdbcType=VARCHAR}, From b91818f2dc750eebf9c59fea1acd79ed7c4e602e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 15 Jul 2024 09:36:40 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/WEB-INF/prop/hrmSalary.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/WEB-INF/prop/hrmSalary.properties b/resource/WEB-INF/prop/hrmSalary.properties index 86aac0d39..5c9223804 100644 --- a/resource/WEB-INF/prop/hrmSalary.properties +++ b/resource/WEB-INF/prop/hrmSalary.properties @@ -1,5 +1,5 @@ log=false defaultCloseNonStandard149=true AESEncryptScrect=990EB004A1C862721C1513AE90038C9E -version=2.14.5.2406.03 +version=2.15.1.2407.01 openFormulaForcedEditing=false \ No newline at end of file From e579bbc4f21cfa52956da4a2698bdb88e677d6c2 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 15 Jul 2024 11:20:24 +0800 Subject: [PATCH 09/14] =?UTF-8?q?=E4=BA=BA=E5=91=98=E7=BB=B4=E5=BA=A6?= =?UTF-8?q?=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/wrapper/SalaryStatisticsReportWrapper.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 18cbb1f71..879df2f86 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -326,8 +326,12 @@ public class SalaryStatisticsReportWrapper extends Service { //已缓存的报表id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); String salaryReportConditions = ""; - // 人员维度id - Long empDimensionId = 1683696782745L; + // 获取人员维度id + Optional empDimensionOptional = getSalaryStatisticsDimensionService(user).listAllDefaultDimension().stream().filter(dim -> dim.getDimName().equals("人员")).map(SalaryStatisticsDimensionPO::getId).findFirst(); + Long empDimensionId = 0L; + if (empDimensionOptional.isPresent()) { + empDimensionId = empDimensionOptional.get(); + } if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { //报表中缓存的条件 salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); From 78cdadbb996f7dc8e44c3e24c468d52671452e49 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 16 Jul 2024 11:30:25 +0800 Subject: [PATCH 10/14] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E8=AF=A6?= =?UTF-8?q?=E6=83=85=20-=20=E6=98=BE=E7=A4=BA=E5=88=97=E5=AE=9A=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/SalarySendDetailQueryParam.java | 4 ++++ .../service/impl/SalarySendServiceImpl.java | 21 ++++++++++++++---- .../salary/web/SalaryBillController.java | 22 +++++++++---------- .../salary/wrapper/SalarySendWrapper.java | 1 + 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java b/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java index 94fb68c32..1b49f639b 100644 --- a/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java +++ b/src/com/engine/salary/entity/salaryBill/param/SalarySendDetailQueryParam.java @@ -68,6 +68,10 @@ public class SalarySendDetailQueryParam extends BaseQueryParam { // @JsonIgnore private List sendStatuss; + + // 导出时显示列定制信息 + List columns; + public static String checkParam(SalarySendDetailQueryParam saveParam) { if (saveParam.getSalarySendId() == null) { throw new SalaryRunTimeException("工资单发放Id必传"); diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 738951a25..30019d8fc 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -56,6 +56,7 @@ import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper; import com.engine.salary.mapper.salaryacct.SalaryAcctResultMapper; import com.engine.salary.mapper.salarybill.SalarySendInfoMapper; import com.engine.salary.mapper.salarybill.SalarySendMapper; +import com.engine.salary.report.common.constant.SalaryConstant; import com.engine.salary.service.*; import com.engine.salary.sys.entity.vo.OrderRuleVO; import com.engine.salary.sys.service.SalarySysConfService; @@ -1570,13 +1571,25 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 1.工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(97036, "工资单发放详情"); List header = new ArrayList<>(); + // 员工信息字段 header.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); header.add(SalaryI18nUtil.getI18nLabel(86185, "部门")); header.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); header.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); + Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, dto -> dto.getSalaryItemId() + SalaryConstant.DYNAMIC_SUFFIX); + List sortedSalaryItems = new ArrayList<>(); + for(String column : queryParam.getColumns()) { + if (column.contains(SalaryConstant.DYNAMIC_SUFFIX)) { + SalaryTemplateSalaryItemListDTO salaryTemplateSalaryItemListDTO = salaryItemMap.get(column); + if (salaryTemplateSalaryItemListDTO != null) { + sortedSalaryItems.add(salaryTemplateSalaryItemListDTO); + } + } + } + // 动态列 - if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(salaryItems)) { - for (SalaryTemplateSalaryItemListDTO salaryItem : salaryItems) { + if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(sortedSalaryItems)) { + for (SalaryTemplateSalaryItemListDTO salaryItem : sortedSalaryItems) { header.add(salaryItem.getName()); } } @@ -1595,7 +1608,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService // 动态列 Map mapColumn = listMaps.get(0); - for (SalaryTemplateSalaryItemListDTO salaryItem : salaryItems) { + for (SalaryTemplateSalaryItemListDTO salaryItem : sortedSalaryItems) { if (mapColumn.containsKey(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX)) { row.add(dto.get(salaryItem.getId() + SalaryItemConstant.DYNAMIC_SUFFIX)); } @@ -1706,7 +1719,7 @@ public class SalarySendServiceImpl extends Service implements SalarySendService .filter(NumberUtils::isCreatable) .map(BigDecimal::new) .reduce(BigDecimal.ZERO, BigDecimal::add); - map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); + map.put(item.getId() + SalaryItemConstant.DYNAMIC_SUFFIX, SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap(), salaryItemIdKeySalarySobItemPOMap)); }); return map; } diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 10c6d9c31..94a2ea915 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -531,21 +531,21 @@ public class SalaryBillController { * * @return */ - @GET + @POST @Path("/send/exportDetailList") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response exportDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response) { + public Response exportDetailList(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody SalarySendDetailQueryParam queryParam) { User user = HrmUserVarify.getUser(request, response); - SalarySendDetailQueryParam queryParam = new SalarySendDetailQueryParam(); - String salarySendId = request.getParameter("salarySendId"); - String ids = request.getParameter("ids"); - if (StringUtils.isNotBlank(ids)) { - queryParam.setIds(Arrays.asList(ids.split(",")).stream().map(Long::new).collect(Collectors.toList())); - } - if (StringUtils.isNotBlank(salarySendId)) { - queryParam.setSalarySendId(Long.parseLong(salarySendId)); - } + // SalarySendDetailQueryParam queryParam = new SalarySendDetailQueryParam(); + // String salarySendId = request.getParameter("salarySendId"); + // String ids = request.getParameter("ids"); + // if (StringUtils.isNotBlank(ids)) { + // queryParam.setIds(Arrays.asList(ids.split(",")).stream().map(Long::new).collect(Collectors.toList())); + // } + // if (StringUtils.isNotBlank(salarySendId)) { + // queryParam.setSalarySendId(Long.parseLong(salarySendId)); + // } XSSFWorkbook workbook = getSalarySendWrapper(user).exportDetailList(queryParam); String fileName = "工资单发放详情列表" + LocalDate.now(); diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 725931b80..0fccfecd0 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -562,6 +562,7 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy checkboxpopedom.setPopedompara("column:system_type"); checkboxpopedom.setShowmethod("com.engine.salary.transmethod.TaxRateTransMethod.getCheckBoxPopedom"); checkboxpopedomList.add(checkboxpopedom); + table.setPageUID(queryParam.getSalarySendId().toString()); table.setCheckboxList(checkboxpopedomList); table.setCheckboxpopedom(null); From 6f7ae2506d19891a1c7528c7345ce93b93ff5368 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Tue, 16 Jul 2024 14:56:11 +0800 Subject: [PATCH 11/14] =?UTF-8?q?=E9=98=85=E5=90=8E=E5=8D=B3=E7=84=9Aoracl?= =?UTF-8?q?e=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryBillBaseSetServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java index ea9097e9d..392ddb58c 100644 --- a/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryBillBaseSetServiceImpl.java @@ -113,7 +113,7 @@ public class SalaryBillBaseSetServiceImpl extends Service implements SalaryBillB salaryBillViewingLimitSetting salaryBillViewingLimitDTO = saveParam.getSalaryBillViewingLimitSetting(); if (salaryBillViewingLimitDTO != null) { getSalarySysConfService(user).saveSettingByType(Util.null2String(salaryBillViewingLimitDTO.getLimitMonth()), SALARY_BILL_VIEWING_LIMIT_MONTH, "工资单时效性设置", "billSend"); - getSalarySysConfService(user).saveSettingByType(Util.null2String(salaryBillViewingLimitDTO.getBurningAfterReadingMin()), SALARY_BILL_BURNING_AFTER_READING_MIN, "工资单查看后销毁设置", "billSend"); + getSalarySysConfService(user).saveSettingByType(salaryBillViewingLimitDTO.getBurningAfterReadingMin() == null ? " " : salaryBillViewingLimitDTO.getBurningAfterReadingMin().toString(), SALARY_BILL_BURNING_AFTER_READING_MIN, "工资单查看后销毁设置", "billSend"); } return StringUtils.EMPTY; } From 909152decc475b28b12282b47c31bf817e131071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 16 Jul 2024 16:57:58 +0800 Subject: [PATCH 12/14] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E4=BB=8E=E5=86=85=E5=AD=98=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SalaryStatisticsReportServiceImpl.java | 2 - .../web/SalaryStatisticsReportController.java | 12 +- .../SalaryStatisticsReportWrapper.java | 167 +++++++++--------- 3 files changed, 90 insertions(+), 91 deletions(-) diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java index db2f739c0..b75c5c413 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsReportServiceImpl.java @@ -1102,8 +1102,6 @@ public class SalaryStatisticsReportServiceImpl extends Service implements Salary List fieldSettings = Optional.ofNullable(Optional.ofNullable(employeeInfoExpandDTO).orElse(new EmployeeInfoExpandDTO()).getFieldSettings()).orElse(new ArrayList<>()); Map> expandEmployeeMap = getSalaryEmployeeService(user).expandEmployeeMap(empIds, employeeInfoExpandDTO); - log.info("扩展属性" + expandEmployeeMap); - // List extEmployees = extEmployeeService.listByIdsWithDeleted(accountDetailPOList.stream().filter(e -> EmployeeTypeEnum.EXT_EMPLOYEE.getValue().equals(e.getEmployeeType())).map(SalaryAcctEmployeePO::getEmployeeId).distinct().collect(Collectors.toList()), data.getTenantKey()); // Map employeeExtByIdMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getId, ExtEmployeePO::getUsername); diff --git a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java index 1c062650e..219ee67a0 100644 --- a/src/com/engine/salary/report/web/SalaryStatisticsReportController.java +++ b/src/com/engine/salary/report/web/SalaryStatisticsReportController.java @@ -6,7 +6,6 @@ import com.engine.salary.report.wrapper.SalaryStatisticsReportWrapper; import com.engine.salary.util.ResponseResult; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -158,17 +157,10 @@ public class SalaryStatisticsReportController { * * @return */ - @GET + @POST @Path("/exportData") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response exportData(@Context HttpServletRequest request, @Context HttpServletResponse response) { - SalaryStatisticsReportDataQueryParam param = SalaryStatisticsReportDataQueryParam.builder() - .id(Long.parseLong(request.getParameter("id"))) - .dimensionId(Long.parseLong(request.getParameter("dimensionId"))) - .salaryStartMonth(request.getParameter("salaryStartMonth")) - .salaryEndMonth(request.getParameter("salaryEndMonth")) - .isShare(StringUtils.equals(request.getParameter("isShare"), "true")) - .build(); + public Response exportData(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryStatisticsReportDataQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); Map map = getSalaryStatisticsReportWrapper(user).exportData(param); diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 879df2f86..22fb6261f 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -340,7 +340,7 @@ public class SalaryStatisticsReportWrapper extends Service { if (param.getDimensionId().equals(empDimensionId)) { // 人员维度需要分页 Map finalResultMap = new HashMap<>(); - PageInfo> pageInfo = (PageInfo>)result.get("pageInfo"); + PageInfo> pageInfo = (PageInfo>) result.get("pageInfo"); PageInfo> finalPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize()); finalPageInfo.setTotal(pageInfo.getList().size()); finalPageInfo.setList(SalaryPageUtil.subList(param.getCurrent(), param.getPageSize(), pageInfo.getList())); @@ -404,11 +404,12 @@ public class SalaryStatisticsReportWrapper extends Service { * @return */ public Map exportData(SalaryStatisticsReportDataQueryParam param) { - if (param.getId() == null || param.getDimensionId() == null) { + Long id = param.getId(); + if (id == null || param.getDimensionId() == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); } - SalaryStatisticsReportPO po = this.getSalaryStatisticsReportService(user).getById(param.getId()); + SalaryStatisticsReportPO po = this.getSalaryStatisticsReportService(user).getById(id); if (po == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161845, "薪酬统计报表不存在")); } @@ -417,90 +418,98 @@ public class SalaryStatisticsReportWrapper extends Service { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161300, "统计维度不存在")); } sharedReportCheck(param.isShare(), po); - // 参数转换 - SalaryStatisticsReportBO.poToQueryParam(param, po); // 查询自定义统计项目 List salaryStatisticsItemList = this.getSalaryStatisticsItemService(user).listByStatisticsReportId(po.getId()); - // 列表data - PageInfo> page = this.getSalaryStatisticsReportService(user).buildReportRecords(dimension, param, salaryStatisticsItemList); - // 组装合计 - Map countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID()); - List> list = page.getList(); - if (CollectionUtils.isNotEmpty(list) && MapUtils.isNotEmpty(countResultMap)) { - list.add(countResultMap); - } - // 获取数据 - List> records = list.stream().map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() + StringUtils.EMPTY))).collect(Collectors.toList()); + // 参数转换 + SalaryStatisticsReportBO.poToQueryParam(param, po); + String paramMd5 = SecureUtil.md5(param + salaryStatisticsItemList.toString()); - // 获取列头 - List weaTableColumns = SalaryStatisticsReportBO.buildReportColumns(dimension, salaryStatisticsItemList); + //已缓存的报表id + String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); + String salaryReportConditions = ""; - // 组装导出参数 -// ExportCommonParam exportParam = SalaryStatisticsReportBO.buildExportParam(dimension.getDimName(), weaTableColumns, records); -// exportParam.setSheetName(SalaryI18nUtil.getI18nLabel(179263, "薪酬统计报表") + "-" + exportParam.getDimensionName()); -// - - List rows = new ArrayList<>(); - rows.add(weaTableColumns); - - List head = new ArrayList<>(); - weaTableColumns.forEach(weaTableColumn -> { - String column = weaTableColumn.getColumn(); - if (CollectionUtils.isEmpty(weaTableColumn.getChildren())) { - head.add(column); - } else { - weaTableColumn.getChildren().forEach(children -> { - head.add(children.getColumn()); - }); - } - }); - - List itemIds = salaryStatisticsItemList.stream().map(item -> item.getItemValue().split(",")).flatMap(Arrays::stream).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); - List salaryItemPOList = getSalaryItemService(user).listByIds(itemIds); - List numberItemIds = salaryItemPOList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).map(salaryItemPO -> salaryItemPO.getId().toString()).collect(Collectors.toList()); - Map salaryStatisticsItemMap = SalaryEntityUtil.convert2Map(salaryStatisticsItemList, statisticsItemPO -> statisticsItemPO.getId().toString()); - - for (Map map : records) { - List row = Lists.newArrayListWithExpectedSize(records.size()); - head.forEach(k -> { - // 获取是数值还是文本 - if (k.contains(SalaryStatisticsReportBO.UD)) { - String[] split = k.split(SalaryStatisticsReportBO.UD); - String salaryItemId = split[0]; - SalaryStatisticsItemPO salaryStatisticsItemPO = salaryStatisticsItemMap.get(salaryItemId); - if (salaryStatisticsItemPO != null) { - Optional textItemOptional = Arrays.stream(salaryStatisticsItemPO.getItemValue().split(",")).filter(id -> !numberItemIds.contains(id)).findFirst(); - row.add( (!textItemOptional.isPresent() && NumberUtils.isCreatable(map.getOrDefault(k, StringUtils.EMPTY).replace(",", ""))) ? new BigDecimal(map.get(k).replace(",", "")) : map.getOrDefault(k, StringUtils.EMPTY)); - } else { - row.add(map.getOrDefault(k, StringUtils.EMPTY)); - } - } else { - row.add(map.getOrDefault(k, StringUtils.EMPTY)); + if (StringUtils.isNotBlank(salaryReportIds) && salaryReportIds.contains(id + "")) { + //报表中缓存的条件 + salaryReportConditions = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_CONDITIONS + id)); + if (StringUtils.isNotBlank(salaryReportConditions) && salaryReportConditions.contains(paramMd5)) { + Map result = getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_DATA + id + "_" + paramMd5); + // 获取列头 + List weaTableColumns = (List) result.get("columns"); + PageInfo> page = (PageInfo>) result.get("pageInfo"); + // 组装合计 + Map countResultMap = SalaryStatisticsReportBO.buildTotal(page, salaryStatisticsItemList, (long) user.getUID()); + List> list = page.getList(); + if (CollectionUtils.isNotEmpty(list) && MapUtils.isNotEmpty(countResultMap)) { + list.add(countResultMap); } - }); - rows.add(row); + // 获取数据 + List> records = list.stream().map(m -> m.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue() + StringUtils.EMPTY))).collect(Collectors.toList()); + + List rows = new ArrayList<>(); + rows.add(weaTableColumns); + + List head = new ArrayList<>(); + weaTableColumns.forEach(weaTableColumn -> { + String column = weaTableColumn.getColumn(); + if (CollectionUtils.isEmpty(weaTableColumn.getChildren())) { + head.add(column); + } else { + weaTableColumn.getChildren().forEach(children -> { + head.add(children.getColumn()); + }); + } + }); + + List itemIds = salaryStatisticsItemList.stream().map(item -> item.getItemValue().split(",")).flatMap(Arrays::stream).filter(NumberUtils::isCreatable).map(Long::valueOf).collect(Collectors.toList()); + List salaryItemPOList = getSalaryItemService(user).listByIds(itemIds); + List numberItemIds = salaryItemPOList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).map(salaryItemPO -> salaryItemPO.getId().toString()).collect(Collectors.toList()); + Map salaryStatisticsItemMap = SalaryEntityUtil.convert2Map(salaryStatisticsItemList, statisticsItemPO -> statisticsItemPO.getId().toString()); + + for (Map map : records) { + List row = Lists.newArrayListWithExpectedSize(records.size()); + head.forEach(k -> { + // 获取是数值还是文本 + if (k.contains(SalaryStatisticsReportBO.UD)) { + String[] split = k.split(SalaryStatisticsReportBO.UD); + String salaryItemId = split[0]; + SalaryStatisticsItemPO salaryStatisticsItemPO = salaryStatisticsItemMap.get(salaryItemId); + if (salaryStatisticsItemPO != null) { + Optional textItemOptional = Arrays.stream(salaryStatisticsItemPO.getItemValue().split(",")).filter(itemId -> !numberItemIds.contains(itemId)).findFirst(); + row.add((!textItemOptional.isPresent() && NumberUtils.isCreatable(map.getOrDefault(k, StringUtils.EMPTY).replace(",", ""))) ? new BigDecimal(map.get(k).replace(",", "")) : map.getOrDefault(k, StringUtils.EMPTY)); + } else { + row.add(map.getOrDefault(k, StringUtils.EMPTY)); + } + } else { + row.add(map.getOrDefault(k, StringUtils.EMPTY)); + } + }); + rows.add(row); + } + + String sheetName = SalaryI18nUtil.getI18nLabel(179263, "薪酬统计报表") + "-" + dimension.getDimName(); + XSSFWorkbook book = ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, true); + + Map map = new HashMap<>(); + map.put("workbook", book); + map.put("fileName", sheetName); + + // 记录操作日志 + String name = SalaryI18nUtil.getI18nLabel(0, "导出"); + LoggerContext loggerContext = new LoggerContext<>(); + loggerContext.setTargetId(po.getId().toString()); + loggerContext.setTargetName(po.getReportName()); + loggerContext.setOperateType(OperateTypeEnum.EXCEL_EXPORT.getValue()); + loggerContext.setOperateTypeName(name); + loggerContext.setOperatedesc(name + SalaryI18nUtil.getI18nLabel(0, "薪酬统计报表") + "-" + po.getReportName()); + loggerContext.setUser(user); + SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); + + return map; + } } - String sheetName = SalaryI18nUtil.getI18nLabel(179263, "薪酬统计报表") + "-" + dimension.getDimName(); - XSSFWorkbook book = ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, true); - - Map map = new HashMap<>(); - map.put("workbook", book); - map.put("fileName", sheetName); - - // 记录操作日志 - String name = SalaryI18nUtil.getI18nLabel(0, "导出"); - LoggerContext loggerContext = new LoggerContext<>(); - loggerContext.setTargetId(po.getId().toString()); - loggerContext.setTargetName(po.getReportName()); - loggerContext.setOperateType(OperateTypeEnum.EXCEL_EXPORT.getValue()); - loggerContext.setOperateTypeName(name); - loggerContext.setOperatedesc(name + SalaryI18nUtil.getI18nLabel(0, "薪酬统计报表") + "-" + po.getReportName()); - loggerContext.setUser(user); - SalaryElogConfig.salaryStatReportLoggerTemplate.write(loggerContext); - - return map; + throw new SalaryRunTimeException("未查询报表数据!"); } /** From 844266ac9a3e3b73f6e8a6a4b32092c17c78b974 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 17 Jul 2024 14:55:44 +0800 Subject: [PATCH 13/14] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98temp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mysql/sql202407170103NBJHDZKJ.sql | 1 + .../Oracle/sql202407170103NBJHDZKJ.sql | 2 + .../SQLServer/sql202407170103NBJHDZKJ.sql | 2 + .../salary/entity/taxagent/bo/TaxAgentBO.java | 19 ++-- .../entity/taxagent/dto/TaxAgentFormDTO.java | 3 + .../taxagent/param/TaxAgentSaveParam.java | 3 + .../entity/taxagent/po/TaxAgentAdminPO.java | 5 + .../mapper/taxagent/TaxAgentAdminMapper.java | 14 +++ .../mapper/taxagent/TaxAgentAdminMapper.xml | 40 +++++++- .../salary/service/TaxAgentAdminService.java | 18 +++- .../salary/service/TaxAgentService.java | 34 ++++++- .../service/impl/SIAccountServiceImpl.java | 31 +++++- .../service/impl/SIArchivesServiceImpl.java | 19 ++-- .../service/impl/SISchemeServiceImpl.java | 15 ++- .../impl/TaxAgentAdminServiceImpl.java | 23 ++++- .../service/impl/TaxAgentServiceImpl.java | 95 +++++++++++++++++-- .../engine/salary/web/TaxAgentController.java | 8 ++ .../salary/wrapper/TaxAgentWrapper.java | 30 +++++- 18 files changed, 324 insertions(+), 38 deletions(-) create mode 100644 resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql create mode 100644 resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql create mode 100644 resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql diff --git a/resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql b/resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql new file mode 100644 index 000000000..c4e9bfbc4 --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql @@ -0,0 +1 @@ +alter table hrsa_tax_agent_admin add jh_admin_type int; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql b/resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql new file mode 100644 index 000000000..f028d73d0 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql @@ -0,0 +1,2 @@ +alter table hrsa_tax_agent_admin add jh_admin_type int +/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql b/resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql new file mode 100644 index 000000000..6145637bd --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql @@ -0,0 +1,2 @@ +alter table hrsa_tax_agent_admin add jh_admin_type int +GO \ No newline at end of file diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java index 7078723af..53c389645 100644 --- a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java @@ -78,7 +78,8 @@ public class TaxAgentBO { List columns = new ArrayList<>(); String name = SalaryI18nUtil.getI18nLabel(91558, "个税扣缴义务人名称"); String employeeRange = SalaryI18nUtil.getI18nLabel(86125, "人员范围"); - String admins = SalaryI18nUtil.getI18nLabel(106259, "管理员"); + String admins = SalaryI18nUtil.getI18nLabel(106259, "薪酬管理员"); + String socialAdmins = SalaryI18nUtil.getI18nLabel(0, "社保管理员"); String subAdmins = SalaryI18nUtil.getI18nLabel(106283, "分管理员"); // String paymentAgency = SalaryI18nUtil.getI18nLabel(112448, "社保福利代缴机构"); String description = SalaryI18nUtil.getI18nLabel(84961, "备注"); @@ -87,6 +88,7 @@ public class TaxAgentBO { columns.add(new Column(name, "name", "name%")); columns.add(new Column(employeeRange, "employeeRange", "employeeRange")); columns.add(new Column(admins, "admins", "admins%")); + columns.add(new Column(socialAdmins, "socialAdmins", "socialAdmins")); // columns.add(new Column(subAdmins, "subAdmins", "20%")); // columns.add(new Column(paymentAgency, "paymentAgency", "30%")); columns.add(new Column(description, "description", "name")); @@ -147,7 +149,7 @@ public class TaxAgentBO { * @return */ public static List> convertToTableListDTO(List taxAgents, List paymentAgencyPOS, String setLabel) { - return convertToTableListDTO(Boolean.FALSE, taxAgents, paymentAgencyPOS, null, null, setLabel); + return convertToTableListDTO(Boolean.FALSE, taxAgents, paymentAgencyPOS, null, null, null, null, setLabel); } /** @@ -157,9 +159,9 @@ public class TaxAgentBO { * @return */ public static List> convertToTableListDTO(List taxAgents, List paymentAgencyPOS, List taxAgentAdmins, - List adminList, - String setLabel) { - return convertToTableListDTO(Boolean.TRUE, taxAgents, paymentAgencyPOS, taxAgentAdmins, adminList, setLabel); + List taxAgentSocialAdmins, List adminList, + List socialdminList, String setLabel) { + return convertToTableListDTO(Boolean.TRUE, taxAgents, paymentAgencyPOS, taxAgentAdmins, taxAgentSocialAdmins, adminList, socialdminList, setLabel); } /** @@ -170,8 +172,8 @@ public class TaxAgentBO { * @return */ public static List> convertToTableListDTO(Boolean isDevolution, List taxAgents, List paymentAgencyPOS, - List taxAgentAdmins, - List adminList, String setLabel) { + List taxAgentAdmins, List taxAgentSocialAdmins, + List adminList, List socialAdminList, String setLabel) { if (CollectionUtils.isEmpty(taxAgents)) { return Collections.emptyList(); } @@ -185,6 +187,9 @@ public class TaxAgentBO { List empIds = taxAgentAdmins.stream().filter(t -> t.getTaxAgentId().equals(e.getId())).map(TaxAgentAdminPO::getEmployeeId).collect(Collectors.toList()); List admins = adminList.stream().filter(a -> empIds.contains(a.getEmployeeId())).map(DataCollectionEmployee::getUsername).collect(Collectors.toList()); map.put("admins", CollectionUtils.isEmpty(admins) ? "" : Joiner.on(",").join((Iterable) admins)); + List socialEmpIds = taxAgentSocialAdmins.stream().filter(t -> t.getTaxAgentId().equals(e.getId())).map(TaxAgentAdminPO::getEmployeeId).collect(Collectors.toList()); + List socialAdmins = socialAdminList.stream().filter(a -> socialEmpIds.contains(a.getEmployeeId())).map(DataCollectionEmployee::getUsername).collect(Collectors.toList()); + map.put("socialAdmins", CollectionUtils.isEmpty(socialAdmins) ? "" : Joiner.on(",").join((Iterable) socialAdmins)); map.put("subAdmins", setLabel); } map.put("paymentAgency", buildPaymentAgency(e.getPaymentAgency(), paymentAgencyPOS)); diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentFormDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentFormDTO.java index e9f7d5cbd..67a596288 100644 --- a/src/com/engine/salary/entity/taxagent/dto/TaxAgentFormDTO.java +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentFormDTO.java @@ -29,6 +29,9 @@ public class TaxAgentFormDTO { //管理员 private List adminUserIds; + //社保管理员 + private List socialAdminUserIds; + //排序 private Integer sortedIndex; diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveParam.java index c8100c98d..f32100e82 100644 --- a/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveParam.java +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentSaveParam.java @@ -34,6 +34,9 @@ public class TaxAgentSaveParam { //管理员主键id private List adminUserIds; + // 社保管理员主键id + private List socialAdminUserIds; + //代缴机构 private String paymentAgency; diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java index 88859fe56..d65459f4b 100644 --- a/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java @@ -62,6 +62,11 @@ public class TaxAgentAdminPO { */ private Date updateTime; + /** + * 精华-管理员类型,0:薪酬管理员;1:社保管理员 + */ + private Integer jhAdminType; + private Collection taxAgentIds; diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.java b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.java index ebd54d390..81c33061f 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.java +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.java @@ -30,6 +30,13 @@ public interface TaxAgentAdminMapper { * @return 返回集合,没有返回空List */ List listSome(TaxAgentAdminPO taxAgentAdmin); + + /** + * 根据个税扣缴义务人获取社保管理员 + * @param taxAgentIds + * @return + */ + List listSocialAdminsByTaxAgentIds (@Param("taxAgentIds") Collection taxAgentIds); /** * 新增,忽略null字段 @@ -64,4 +71,11 @@ public interface TaxAgentAdminMapper { int delete(TaxAgentAdminPO TaxAgentAdminPO); void deleteByTaxAgentIds(@Param("taxAgentIds") Collection taxAgentIds); + + /** + * 根据员工id获取是社保管理员的记录 + * @param userId + * @return + */ + List listSocialAdminsByEmpId(@Param("userId") Long userId); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml index ad3e4b720..a7dc36e6e 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml @@ -10,6 +10,7 @@ + @@ -24,6 +25,7 @@ , t.tax_agent_id , t.tenant_key , t.update_time + , t.jh_admin_type @@ -31,7 +33,7 @@ SELECT FROM hrsa_tax_agent_admin t - WHERE delete_type = 0 + WHERE delete_type = 0 and (jh_admin_type is null or jh_admin_type = 0) @@ -39,7 +41,7 @@ SELECT FROM hrsa_tax_agent_admin t - WHERE id = #{id} AND delete_type = 0 + WHERE id = #{id} AND delete_type = 0 and (jh_admin_type is null or jh_admin_type = 0) @@ -48,7 +50,7 @@ SELECT FROM hrsa_tax_agent_admin t - WHERE delete_type = 0 + WHERE delete_type = 0 and (jh_admin_type is null or jh_admin_type = 0) AND create_time = #{createTime} @@ -82,6 +84,28 @@ ORDER BY id DESC + + + @@ -112,6 +136,9 @@ update_time, + + jh_admin_type, + @@ -138,6 +165,9 @@ #{updateTime}, + + #{jhAdminType}, + @@ -152,6 +182,7 @@ tax_agent_id=#{taxAgentId}, tenant_key=#{tenantKey}, update_time=#{updateTime}, + jh_admin_type=#{jhAdminType} WHERE id = #{id} AND delete_type = 0 @@ -182,6 +213,9 @@ update_time=#{updateTime}, + + jh_admin_type=#{jhAdminType}, + WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/TaxAgentAdminService.java b/src/com/engine/salary/service/TaxAgentAdminService.java index 274ba8c07..31bddd073 100644 --- a/src/com/engine/salary/service/TaxAgentAdminService.java +++ b/src/com/engine/salary/service/TaxAgentAdminService.java @@ -28,7 +28,7 @@ public interface TaxAgentAdminService { * @param taxAgentId * @param admins */ - void batchInsert(Long taxAgentId, Collection admins); + void batchInsert(Long taxAgentId, Collection admins, Integer jhAdminType); /** * 根据个税扣缴义务人id查询管理员 @@ -38,6 +38,14 @@ public interface TaxAgentAdminService { */ List listByTaxAgentIds(Collection taxAgentIds); + /** + * 根据个税扣缴义务人id查询薪酬管理员 + * + * @param taxAgentIds + * @return + */ + List listSocialAdminsByTaxAgentIds(Collection taxAgentIds); + /** * 根据个税扣缴义务人id查询管理员 * @@ -53,4 +61,12 @@ public interface TaxAgentAdminService { * @return */ List listByEmployeeId(Long currentEmployeeId); + + /** + * 根据当前登录人查询管理员 + * + * @param currentEmployeeId + * @return + */ + List listSocialAdminsByEmployeeId(Long currentEmployeeId); } diff --git a/src/com/engine/salary/service/TaxAgentService.java b/src/com/engine/salary/service/TaxAgentService.java index bab08d143..5bf5ff8bd 100644 --- a/src/com/engine/salary/service/TaxAgentService.java +++ b/src/com/engine/salary/service/TaxAgentService.java @@ -66,6 +66,14 @@ public interface TaxAgentService { */ Boolean isAdminEnable(Long currentEmployeeId); + /** + * 社保管理员是否有权限 + * + * @param currentEmployeeId + * @return + */ + Boolean isSocialAdminEnable(Long currentEmployeeId); + /** * 个税扣缴义务人列表(分页) * @@ -121,6 +129,14 @@ public interface TaxAgentService { */ Collection listAllTaxAgents(Long currentEmployeeId); + /** + * 获取作为社保管理员的个税扣缴义务人列表 + * + * @param currentEmployeeId + * @return + */ + Collection listAllSocialAdminTaxAgents(Long currentEmployeeId); + /** * 获取作为管理员的所有个税扣缴义务人列表 * @@ -184,6 +200,13 @@ public interface TaxAgentService { */ List> selectListAsAdmin(boolean chiefCanSeeAll); + /** + * 获取作为社保管理员的个税扣缴义务人的下拉列表 + * + * @return + */ + List> selectListAsSocialAdmin(); + /** * 是否开启分权 * @@ -216,6 +239,15 @@ public interface TaxAgentService { */ List listTaxAgentAndEmployee(Long employeeId); + + /** + * 获取作为社保管理员个税扣缴义务人和可查看的人员列表(扁平型) + * + * @param employeeId + * @return + */ + List listTaxAgentAndEmployeeBySocialAdmin(Long employeeId); + /** * 获取个税扣缴义务人和可查看的人员列表(扁平型) * @@ -231,7 +263,7 @@ public interface TaxAgentService { * @param employeeId * @return */ - List listTaxAgentAndEmployeeTree(SalaryEmployeeStatusEnum employeeStatus, Long employeeId); + List listTaxAgentAndEmployeeTree(SalaryEmployeeStatusEnum employeeStatus, Long employeeId, boolean isSocialAdmin); /** * 获取个税扣缴义务人和可查看的人员列表(扁平型) diff --git a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java index 56d7898c6..057d2cddc 100644 --- a/src/com/engine/salary/service/impl/SIAccountServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIAccountServiceImpl.java @@ -250,7 +250,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // 分权逻辑 Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); if (needAuth) { - Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + // Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + Collection taxAgentPOS = getTaxAgentService(user).listAllSocialAdminTaxAgents((long) user.getUID()); List taxAgents = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); if (CollectionUtils.isEmpty(taxAgents)) { //防止普通用户查询 @@ -509,7 +510,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // 分权逻辑 Boolean needAuth = getTaxAgentService(user).isNeedAuth((long) user.getUID()); if (needAuth) { - Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + // Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgents((long) user.getUID()); + Collection taxAgentPOS = getTaxAgentService(user).listAllSocialAdminTaxAgents((long) user.getUID()); List taxAgents = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); if (CollectionUtils.isEmpty(taxAgents)) { //防止普通用户查询 @@ -1544,7 +1546,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { @Override public Collection getAdminTaxAgentList() { - return getTaxAgentService(user).listAllTaxAgentsAsAdmin((long) user.getUID()); + return getTaxAgentService(user).listAllSocialAdminTaxAgents((long) user.getUID()); + // return getTaxAgentService(user).listAllTaxAgentsAsAdmin((long) user.getUID()); } @Override @@ -1676,6 +1679,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { // // 获取所有个税扣缴义务人 // List taxAgents = getTaxAgentService(user).listAll(); // Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getName, TaxAgentPO::getId); + Collection taxAgentPOS = getTaxAgentService(user).listAllSocialAdminTaxAgents((long) user.getUID()); + List taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); // 获取租户下所有的人员 List salaryEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); @@ -1734,6 +1739,14 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(100579, SalaryI18nUtil.getI18nLabel(102840, "个税扣缴义务人错误,系统内不存在该个税扣缴义务人"))); excelComments.add(errorMessageMap); } + // 校验是否有义务人的操作权限 + if (!taxAgentIds.contains(paymentOrganization)) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(100579, SalaryI18nUtil.getI18nLabel(102840, "个税扣缴义务人错误,无权限"))); + excelComments.add(errorMessageMap); + } + if (billMonth.length() < 7 || !SalaryDateUtil.checkYearMonth(billMonth.substring(0, 7))) { isError = true; @@ -3944,6 +3957,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { List createInsuranceAccountDetailList = new ArrayList<>(); String billMonth = importParam.getBillMonth(); + + // 获取所有管理的个税扣缴义务人 + Collection taxAgentPOS = getTaxAgentService(user).listAllSocialAdminTaxAgents((long) user.getUID()); + List taxAgentIds = taxAgentPOS.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); + //遍历excel表具体数据 for (int i = 0; i < data.size(); i++) { @@ -3971,6 +3989,13 @@ public class SIAccountServiceImpl extends Service implements SIAccountService { excelComments.add(errorMessageMap); } + if (!taxAgentIds.contains(paymentOrganization)) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", row + SalaryI18nUtil.getI18nLabel(0, SalaryI18nUtil.getI18nLabel(0, "个税扣缴义务人错误,无操作权限"))); + excelComments.add(errorMessageMap); + } + if (billMonth.length() < 7 || !SalaryDateUtil.checkYearMonth(billMonth.substring(0, 7))) { isError = true; Map errorMessageMap = Maps.newHashMap(); diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 1fe3ee033..42fdbd468 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -183,7 +183,8 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService public Map getBaseForm(Map params) { long currentEmployeeId = user.getUID(); Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId); - Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId); + // Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId); + Collection taxAgentPOS = getTaxAgentService(user).listAllSocialAdminTaxAgents(currentEmployeeId); Map apidatas = new HashMap<>(16); // SIArchivesBiz siArchivesBiz = new SIArchivesBiz(); @@ -266,7 +267,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService Boolean needAuth = getTaxAgentService(user).isNeedAuth(currentEmployeeId); param.setNeedAuth(needAuth); if (needAuth) { - List taxAgentEmployeeDTOS = getTaxAgentService(user).listTaxAgentAndEmployee(currentEmployeeId); + List taxAgentEmployeeDTOS = getTaxAgentService(user).listTaxAgentAndEmployeeBySocialAdmin(currentEmployeeId); Set employeeIds = SalaryEntityUtil.properties(taxAgentEmployeeDTOS, TaxAgentEmployeeDTO::getEmployeeId); Set taxAgentIds = SalaryEntityUtil.properties(taxAgentEmployeeDTOS, TaxAgentEmployeeDTO::getTaxAgentId); param.setTaxAgentEmployeeIds(employeeIds); @@ -825,14 +826,17 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService List list = null; if (needAuth) { // 获取作为管理员的所有个税扣缴义务人列表 - Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId); + // Collection taxAgentPOS = getTaxAgentService(user).listAllTaxAgentsAsAdmin(currentEmployeeId); + // 获取作为社保管理员的所有个税扣缴义务人列表 + Collection taxAgentPOS = getTaxAgentService(user).listAllSocialAdminTaxAgents(currentEmployeeId); Set taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId); //获取所有福利档案基础信息 List archiveListDTOS = getInsuranceBaseInfoMapper().listAll(); list = archiveListDTOS.stream().filter(dto -> taxAgentIds.contains(dto.getPaymentOrganization())).collect(Collectors.toList()); Boolean adminEnable = getTaxAgentService(user).isAdminEnable(currentEmployeeId); + Boolean socialAdminEnable = getTaxAgentService(user).isSocialAdminEnable(currentEmployeeId); //不是管理员看不到数据,返回空 - if (!adminEnable) { + if (!socialAdminEnable) { list = new ArrayList<>(); } } else { @@ -906,7 +910,9 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService List stayAddIds = new ArrayList<>(); List stayDelIds = new ArrayList<>(); - List taxAgentManageRangeEmployees = getTaxAgentService(user).listTaxAgentAndEmployee((long) user.getUID()); + // List taxAgentManageRangeEmployees = getTaxAgentService(user).listTaxAgentAndEmployee((long) user.getUID()); + List taxAgentManageRangeEmployees = getTaxAgentService(user).listTaxAgentAndEmployeeBySocialAdmin((long) user.getUID()); + List oldStayAddList = pos.stream().filter(f -> f.getRunStatus().equals(EmployeeStatusEnum.STOP_PAYMENT_FROM_ADD.getValue())).collect(Collectors.toList()); @@ -3848,7 +3854,8 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService .collect(Collectors.toList()) .stream().map(item -> new SearchConditionOption(item.getId().toString(), item.getSchemeName())).collect(Collectors.toList()); - List> taxAgentList = getTaxAgentWrapper(user).selectListAsAdmin(); + // List> taxAgentList = getTaxAgentWrapper(user).selectListAsAdmin(); + List> taxAgentList = getTaxAgentWrapper(user).selectListAsSocialAdmin(); List taxAgentOption = taxAgentList.stream().map(item -> new SearchConditionOption(item.get("id").toString(), item.get("content").toString())).collect(Collectors.toList()); Map apidatas = new HashMap(); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index d63bdcd24..931c93151 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -328,10 +328,13 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (needAuth) { // insuranceSchemePOS = getInsuranceSchemeMapper().listByWelfareType(queryParam.getWelfareTypeEnum().getValue()); insuranceSchemePOS = getInsuranceSchemeMapper().list(queryParam); - Boolean isAdminEnable = getTaxAgentService().isAdminEnable((long) user.getUID()); - if (isAdminEnable) { - //管理员 - Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents(currentEmployeeId); + // Boolean isAdminEnable = getTaxAgentService().isAdminEnable((long) user.getUID()); + Boolean isSocialAdminEnable = getTaxAgentService().isSocialAdminEnable((long) user.getUID()); + if (isSocialAdminEnable) { + // 管理员 + // Collection taxAgentPOS = getTaxAgentService().listAllTaxAgents(currentEmployeeId); + // 社保管理员 + Collection taxAgentPOS = getTaxAgentService().listAllSocialAdminTaxAgents(currentEmployeeId); List authTaxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId, Collectors.toList()); insuranceSchemePOS = insuranceSchemePOS.stream().filter(po -> { String taxAgentIdsStr = po.getTaxAgentIds(); @@ -970,7 +973,9 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //分权 Boolean openDevolution = getTaxAgentService().isOpenDevolution(); if (openDevolution) { - paymentNameIdMap = getTaxAgentService().listAllTaxAgentsAsAdmin((long) user.getUID()).stream().collect(Collectors.toMap(TaxAgentPO::getName, TaxAgentPO::getId)); + // paymentNameIdMap = getTaxAgentService().listAllTaxAgentsAsAdmin((long) user.getUID()).stream().collect(Collectors.toMap(TaxAgentPO::getName, TaxAgentPO::getId)); + // 获取社保管理员下的义务人信息 + paymentNameIdMap = getTaxAgentService().listAllSocialAdminTaxAgents((long) user.getUID()).stream().collect(Collectors.toMap(TaxAgentPO::getName, TaxAgentPO::getId)); } else { paymentNameIdMap = getTaxAgentService().listAll().stream().collect(Collectors.toMap(TaxAgentPO::getName, TaxAgentPO::getId)); } diff --git a/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java index 72838fc10..e99ec5027 100644 --- a/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java @@ -5,12 +5,13 @@ import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; import com.engine.salary.mapper.taxagent.TaxAgentAdminMapper; import com.engine.salary.service.TaxAgentAdminService; +import com.engine.salary.util.db.IdGenerator; import com.engine.salary.util.db.MapperProxyFactory; import com.google.common.collect.Lists; -import com.engine.salary.util.db.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -37,7 +38,7 @@ public class TaxAgentAdminServiceImpl extends Service implements TaxAgentAdminSe } @Override - public void batchInsert(Long taxAgentId, Collection admins) { + public void batchInsert(Long taxAgentId, Collection admins, Integer jhAdminType) { if (taxAgentId == null || CollectionUtils.isEmpty(admins)) { return; } @@ -52,6 +53,7 @@ public class TaxAgentAdminServiceImpl extends Service implements TaxAgentAdminSe .deleteType(0) .creator((long) user.getUID()) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .jhAdminType(jhAdminType) .build()) .forEach(getTaxAgentAdminMapper()::insertIgnoreNull); } @@ -66,6 +68,15 @@ public class TaxAgentAdminServiceImpl extends Service implements TaxAgentAdminSe } + @Override + public List listSocialAdminsByTaxAgentIds(Collection taxAgentIds) { + List list = Lists.newArrayList(); + if (CollectionUtils.isEmpty(taxAgentIds)) { + return list; + } + return getTaxAgentAdminMapper().listSocialAdminsByTaxAgentIds(taxAgentIds); + } + @Override public List listByTaxAgentIdsAndEmployeeId(Collection taxAgentIds, Long currentEmployeeId) { List list = Lists.newArrayList(); @@ -79,4 +90,12 @@ public class TaxAgentAdminServiceImpl extends Service implements TaxAgentAdminSe public List listByEmployeeId(Long currentEmployeeId) { return getTaxAgentAdminMapper().listSome(TaxAgentAdminPO.builder().employeeId(currentEmployeeId).build()); } + + @Override + public List listSocialAdminsByEmployeeId(Long currentEmployeeId) { + if (currentEmployeeId == null) { + return Collections.emptyList(); + } + return getTaxAgentAdminMapper().listSocialAdminsByEmpId(currentEmployeeId); + } } diff --git a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java index aa0890cb7..eaf5f1ecb 100644 --- a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java @@ -52,6 +52,7 @@ import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.BeanUtils; import weaver.hrm.User; import weaver.systeminfo.setting.HrmUserSettingComInfo; @@ -237,6 +238,11 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { return CollectionUtils.isNotEmpty(taxAgentAdminList); } + @Override + public Boolean isSocialAdminEnable(Long currentEmployeeId) { + List taxAgentAdminList = getTaxAgentAdminService(user).listSocialAdminsByEmployeeId(currentEmployeeId); + return CollectionUtils.isNotEmpty(taxAgentAdminList); + } @Override public PageInfo listPage(TaxAgentQueryParam queryParam) { @@ -278,6 +284,26 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { return handleForDevolution(taxAgents, employeeId, true); } + @Override + public Collection listAllSocialAdminTaxAgents(Long currentEmployeeId) { + List resultList = new ArrayList<>(); + if (currentEmployeeId == null) { + return resultList; + } + // 是否开启分权 + boolean isOpenDevolution = getTaxAgentBaseService(user).isOpenDevolution(); + if (!isOpenDevolution || isChief(currentEmployeeId)) { + return getTaxAgentMapper().listAll(); + } + + List taxAgentAdminPOS = getTaxAgentAdminService(user).listSocialAdminsByEmployeeId(currentEmployeeId); + List taxAgentIds = taxAgentAdminPOS.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(taxAgentIds)) { + resultList.addAll(getTaxAgentMapper().listBySome(TaxAgentQueryParam.builder().ids(taxAgentIds).build())); + } + return resultList; + } + @Override public Collection listAllTaxAgentsAsAdmin(Long employeeId) { List taxAgents = getTaxAgentMapper().listAll(); @@ -347,7 +373,8 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { TaxAgentPO taxAgent = TaxAgentBO.convertToPO(saveParam, (long) user.getUID()); getTaxAgentMapper().insertIgnoreNull(taxAgent); if (isOpenDevolution) { - getTaxAgentAdminService(user).batchInsert(taxAgent.getId(), saveParam.getAdminUserIds()); + getTaxAgentAdminService(user).batchInsert(taxAgent.getId(), saveParam.getAdminUserIds(), NumberUtils.INTEGER_ZERO); + getTaxAgentAdminService(user).batchInsert(taxAgent.getId(), saveParam.getSocialAdminUserIds(), NumberUtils.INTEGER_ONE); } // 记录日志 LoggerContext loggerContext = new LoggerContext<>(); @@ -404,7 +431,9 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { // 删除管理员 getTaxAgentAdminService(user).deleteByTaxAgentIds(Collections.singletonList(taxAgent.getId())); // 新增管理员 - getTaxAgentAdminService(user).batchInsert(saveParam.getId(), saveParam.getAdminUserIds()); + getTaxAgentAdminService(user).batchInsert(saveParam.getId(), saveParam.getAdminUserIds(), NumberUtils.INTEGER_ZERO); + // 精华二开 - 薪资社保管理员 + getTaxAgentAdminService(user).batchInsert(saveParam.getId(), saveParam.getSocialAdminUserIds(), NumberUtils.INTEGER_ONE); } // 记录日志 LoggerContext loggerContext = new LoggerContext<>(); @@ -589,6 +618,20 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { }).collect(Collectors.toList()); } + @Override + public List> selectListAsSocialAdmin() { + long currentEmployeeId = (long) user.getUID(); + + Collection taxAgents = listAllSocialAdminTaxAgents(currentEmployeeId); + + return taxAgents.stream().map(m -> { + Map map = new HashMap<>(2); + map.put("id", String.valueOf(m.getId())); + map.put("content", m.getName()); + return map; + }).collect(Collectors.toList()); + } + /** * 分权处理(总管理员可见所有) * @@ -623,7 +666,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { @Override public List listTaxAgentAndEmployeeTree(Long employeeId) { - return listTaxAgentAndEmployeeTree(null, employeeId); + return listTaxAgentAndEmployeeTree(null, employeeId, false); } @@ -632,6 +675,33 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { return listTaxAgentAndEmployee(null, employeeId); } + @Override + public List listTaxAgentAndEmployeeBySocialAdmin(Long employeeId) { + List taxAgentEmployeeList = Lists.newArrayList(); + + List taxAgentManageRangeEmployeeList = listTaxAgentAndEmployeeTree(null, employeeId, true); + taxAgentManageRangeEmployeeList.forEach(m -> { + List employeeList = m.getEmployeeList(); + if (CollectionUtils.isEmpty(employeeList)) { + taxAgentEmployeeList.add(TaxAgentEmployeeDTO.builder() + .taxAgentId(m.getTaxAgentId()) + .taxAgentName(m.getTaxAgentName()) + .employeeId(null) + .username(null) + .build()); + } else { + employeeList.forEach(f -> taxAgentEmployeeList.add(TaxAgentEmployeeDTO.builder() + .taxAgentId(m.getTaxAgentId()) + .taxAgentName(m.getTaxAgentName()) + .employeeId(f.getEmployeeId()) + .username(f.getUsername()) + .build())); + } + }); + + return taxAgentEmployeeList; + } + @Override public List listAllTaxAgentAndEmployee() { List taxAgentEmployeeList = Lists.newArrayList(); @@ -660,7 +730,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { } @Override - public List listTaxAgentAndEmployeeTree(SalaryEmployeeStatusEnum employeeStatus, Long employeeId) { + public List listTaxAgentAndEmployeeTree(SalaryEmployeeStatusEnum employeeStatus, Long employeeId, boolean isSocialAdmin) { List taxAgentManageRangeEmployeeList = Lists.newArrayList(); // 所有个税扣缴义务人 List allTaxAgents = listAll(); @@ -684,10 +754,17 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { return getTaxAgentEmp(allTaxAgents, taxAgentIds); } - // 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据 - List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIdsAndEmployeeId(taxAgentIds, (long) user.getUID()); - // 是管理员的列表 - List adminTaxAgentIds = taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList()); + List adminTaxAgentIds = new ArrayList<>(); + if (isSocialAdmin) { + // 获取作为社保管理员能够管理的义务人id + List taxAgentAdminPOS = getTaxAgentAdminService(user).listSocialAdminsByEmployeeId((long) user.getUID()); + adminTaxAgentIds.addAll(taxAgentAdminPOS.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList())); + } else { + // 1.判断自己是否是管理员, 如果是管理员,就是能够操作所属个税扣缴义务人下的所有人的数据 + List taxAgentAdminList = getTaxAgentAdminService(user).listByTaxAgentIdsAndEmployeeId(taxAgentIds, (long) user.getUID()); + // 是管理员的列表 + adminTaxAgentIds.addAll(taxAgentAdminList.stream().map(TaxAgentAdminPO::getTaxAgentId).collect(Collectors.toList())); + } if (CollectionUtils.isNotEmpty(adminTaxAgentIds)) { taxAgentManageRangeEmployeeList.addAll(getTaxAgentEmp(allTaxAgents, adminTaxAgentIds)); @@ -765,7 +842,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { public List listTaxAgentAndEmployee(SalaryEmployeeStatusEnum employeeStatus, Long employeeId) { List taxAgentEmployeeList = Lists.newArrayList(); - List taxAgentManageRangeEmployeeList = listTaxAgentAndEmployeeTree(employeeStatus, employeeId); + List taxAgentManageRangeEmployeeList = listTaxAgentAndEmployeeTree(employeeStatus, employeeId, false); taxAgentManageRangeEmployeeList.forEach(m -> { List employeeList = m.getEmployeeList(); if (CollectionUtils.isEmpty(employeeList)) { diff --git a/src/com/engine/salary/web/TaxAgentController.java b/src/com/engine/salary/web/TaxAgentController.java index 7aee3ea8b..7280dead3 100644 --- a/src/com/engine/salary/web/TaxAgentController.java +++ b/src/com/engine/salary/web/TaxAgentController.java @@ -375,6 +375,14 @@ public class TaxAgentController { return new ResponseResult, List>>(user).run(getTaxAgentWrapper(user)::selectListAsAdmin); } + @GET + @Path("/selectListAsSocialAdmin") + @Produces(MediaType.APPLICATION_JSON) + public String selectListAsSocialAdmin(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult, List>>(user).run(getTaxAgentWrapper(user)::selectListAsSocialAdmin); + } + @GET @Path("/getEmpListInTaxAgent") diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index 027df9952..c3e649243 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -96,11 +96,14 @@ public class TaxAgentWrapper extends Service { Boolean isChief = isChief(currentEmployeeId); Boolean isDefaultOpen = getTaxAgentService(user).isDefaultOpen(currentEmployeeId); Boolean isAdminEnable = getTaxAgentService(user).isAdminEnable(currentEmployeeId); + Boolean isSocialAdminEnable = getTaxAgentService(user).isSocialAdminEnable(currentEmployeeId); Boolean isOpenDevolution = getTaxAgentService(user).isOpenDevolution(); + // 精华二开 - 获取是否是社保管理员 resultMap.put("isChief", isChief); resultMap.put("isDefaultOpen", isDefaultOpen); resultMap.put("isAdminEnable", isAdminEnable); resultMap.put("isOpenDevolution", isOpenDevolution); + resultMap.put("isSocialAdminEnable", isSocialAdminEnable); return resultMap; } @@ -146,8 +149,10 @@ public class TaxAgentWrapper extends Service { List list = page.getList(); List taxAgentIds = list.stream().map(TaxAgentPO::getId).collect(Collectors.toList()); List taxAgentAdmins = getTaxAgentAdminService(user).listByTaxAgentIds(taxAgentIds); + List taxAgentSocialAdmins = getTaxAgentAdminService(user).listSocialAdminsByTaxAgentIds(taxAgentIds); List adminList = getSalaryEmployeeService(user).getEmployeeByIdsAll(taxAgentAdmins.stream().map(TaxAgentAdminPO::getEmployeeId).distinct().collect(Collectors.toList())); - listPage.setList(TaxAgentBO.convertToTableListDTO(page.getList(), null, taxAgentAdmins, adminList, setLabel)); + List socialAdminList = getSalaryEmployeeService(user).getEmployeeByIdsAll(taxAgentSocialAdmins.stream().map(TaxAgentAdminPO::getEmployeeId).distinct().collect(Collectors.toList())); + listPage.setList(TaxAgentBO.convertToTableListDTO(page.getList(), null, taxAgentAdmins, taxAgentSocialAdmins, adminList, socialAdminList, setLabel)); } else { listPage.setList(TaxAgentBO.convertToTableListDTO(page.getList(), null, setLabel)); } @@ -243,7 +248,22 @@ public class TaxAgentWrapper extends Service { .collect(Collectors.toList()); } + List socialAdmins = getTaxAgentAdminService(user).listSocialAdminsByTaxAgentIds(Collections.singletonList(id)); + List socialAdminlist = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(socialAdmins)) { + socialAdminlist = socialAdmins.stream() + .map(admin -> { + Long employeeId = admin.getEmployeeId(); + DataCollectionEmployee employee = getSalaryEmployeeService(user).getEmployeeById(employeeId); + String content = employee == null ? "" : employee.getUsername(); + return TaxAgentEmployeeOptionDTO.builder().id(employeeId).content(content).build(); + + }) + .collect(Collectors.toList()); + } + taxAgentFromDTO.setAdminUserIds(list); + taxAgentFromDTO.setSocialAdminUserIds(socialAdminlist); return taxAgentFromDTO; } @@ -297,10 +317,18 @@ public class TaxAgentWrapper extends Service { return getTaxAgentService(user).selectList(needAuth); } + public Boolean isSocialAdminEnable(Long currentUserId) { + return getTaxAgentService(user).isSocialAdminEnable(currentUserId); + } + public List> selectListAsAdmin() { return getTaxAgentService(user).selectListAsAdmin(false); } + public List> selectListAsSocialAdmin() { + return getTaxAgentService(user).selectListAsSocialAdmin(); + } + /** * 范围列表 * From 6d5ff523297d66345939160d17bc79554756e853 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 17 Jul 2024 18:05:37 +0800 Subject: [PATCH 14/14] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98temp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mysql/sql202407170103NBJHDZKJ.sql | 1 - .../Oracle/sql202407170103NBJHDZKJ.sql | 2 -- .../SQLServer/sql202407170103NBJHDZKJ.sql | 2 -- .../entity/taxagent/po/TaxAgentAdminPO.java | 4 +-- .../mapper/taxagent/TaxAgentAdminMapper.xml | 28 +++++++++---------- .../salary/service/TaxAgentAdminService.java | 2 +- .../impl/TaxAgentAdminServiceImpl.java | 4 +-- .../service/impl/TaxAgentServiceImpl.java | 2 +- .../salary/wrapper/TaxAgentWrapper.java | 2 +- 9 files changed, 21 insertions(+), 26 deletions(-) delete mode 100644 resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql delete mode 100644 resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql delete mode 100644 resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql diff --git a/resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql b/resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql deleted file mode 100644 index c4e9bfbc4..000000000 --- a/resource/sqlupgrade/Mysql/sql202407170103NBJHDZKJ.sql +++ /dev/null @@ -1 +0,0 @@ -alter table hrsa_tax_agent_admin add jh_admin_type int; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql b/resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql deleted file mode 100644 index f028d73d0..000000000 --- a/resource/sqlupgrade/Oracle/sql202407170103NBJHDZKJ.sql +++ /dev/null @@ -1,2 +0,0 @@ -alter table hrsa_tax_agent_admin add jh_admin_type int -/ \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql b/resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql deleted file mode 100644 index 6145637bd..000000000 --- a/resource/sqlupgrade/SQLServer/sql202407170103NBJHDZKJ.sql +++ /dev/null @@ -1,2 +0,0 @@ -alter table hrsa_tax_agent_admin add jh_admin_type int -GO \ No newline at end of file diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java index d65459f4b..b8287ef7b 100644 --- a/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentAdminPO.java @@ -63,9 +63,9 @@ public class TaxAgentAdminPO { private Date updateTime; /** - * 精华-管理员类型,0:薪酬管理员;1:社保管理员 + * 管理员类型,0:薪酬管理员;1:社保管理员 */ - private Integer jhAdminType; + private Integer adminType; diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml index a7dc36e6e..17697ee39 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentAdminMapper.xml @@ -10,7 +10,7 @@ - + @@ -25,7 +25,7 @@ , t.tax_agent_id , t.tenant_key , t.update_time - , t.jh_admin_type + , t.admin_type @@ -33,7 +33,7 @@ SELECT FROM hrsa_tax_agent_admin t - WHERE delete_type = 0 and (jh_admin_type is null or jh_admin_type = 0) + WHERE delete_type = 0 and (admin_type is null or admin_type = 0) @@ -41,7 +41,7 @@ SELECT FROM hrsa_tax_agent_admin t - WHERE id = #{id} AND delete_type = 0 and (jh_admin_type is null or jh_admin_type = 0) + WHERE id = #{id} AND delete_type = 0 and (admin_type is null or admin_type = 0) @@ -50,7 +50,7 @@ SELECT FROM hrsa_tax_agent_admin t - WHERE delete_type = 0 and (jh_admin_type is null or jh_admin_type = 0) + WHERE delete_type = 0 and (admin_type is null or admin_type = 0) AND create_time = #{createTime} @@ -89,7 +89,7 @@ SELECT FROM hrsa_tax_agent_admin t - WHERE delete_type = 0 and jh_admin_type = 1 + WHERE delete_type = 0 and admin_type = 1 AND tax_agent_id IN #{taxAgentId} @@ -102,7 +102,7 @@ FROM hrsa_tax_agent_admin t WHERE delete_type = 0 - and jh_admin_type = 1 + and admin_type = 1 and employee_id=#{userId} ORDER BY id DESC @@ -136,8 +136,8 @@ update_time, - - jh_admin_type, + + admin_type, @@ -165,8 +165,8 @@ #{updateTime}, - - #{jhAdminType}, + + #{adminType}, @@ -182,7 +182,7 @@ tax_agent_id=#{taxAgentId}, tenant_key=#{tenantKey}, update_time=#{updateTime}, - jh_admin_type=#{jhAdminType} + admin_type=#{adminType} WHERE id = #{id} AND delete_type = 0 @@ -213,8 +213,8 @@ update_time=#{updateTime}, - - jh_admin_type=#{jhAdminType}, + + admin_type=#{adminType}, WHERE id = #{id} AND delete_type = 0 diff --git a/src/com/engine/salary/service/TaxAgentAdminService.java b/src/com/engine/salary/service/TaxAgentAdminService.java index 31bddd073..eb2089cb0 100644 --- a/src/com/engine/salary/service/TaxAgentAdminService.java +++ b/src/com/engine/salary/service/TaxAgentAdminService.java @@ -28,7 +28,7 @@ public interface TaxAgentAdminService { * @param taxAgentId * @param admins */ - void batchInsert(Long taxAgentId, Collection admins, Integer jhAdminType); + void batchInsert(Long taxAgentId, Collection admins, Integer adminType); /** * 根据个税扣缴义务人id查询管理员 diff --git a/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java index e99ec5027..96a48dabc 100644 --- a/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentAdminServiceImpl.java @@ -38,7 +38,7 @@ public class TaxAgentAdminServiceImpl extends Service implements TaxAgentAdminSe } @Override - public void batchInsert(Long taxAgentId, Collection admins, Integer jhAdminType) { + public void batchInsert(Long taxAgentId, Collection admins, Integer adminType) { if (taxAgentId == null || CollectionUtils.isEmpty(admins)) { return; } @@ -53,7 +53,7 @@ public class TaxAgentAdminServiceImpl extends Service implements TaxAgentAdminSe .deleteType(0) .creator((long) user.getUID()) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .jhAdminType(jhAdminType) + .adminType(adminType) .build()) .forEach(getTaxAgentAdminMapper()::insertIgnoreNull); } diff --git a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java index eaf5f1ecb..aae4a9bf8 100644 --- a/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentServiceImpl.java @@ -432,7 +432,7 @@ public class TaxAgentServiceImpl extends Service implements TaxAgentService { getTaxAgentAdminService(user).deleteByTaxAgentIds(Collections.singletonList(taxAgent.getId())); // 新增管理员 getTaxAgentAdminService(user).batchInsert(saveParam.getId(), saveParam.getAdminUserIds(), NumberUtils.INTEGER_ZERO); - // 精华二开 - 薪资社保管理员 + // 薪资社保管理员 getTaxAgentAdminService(user).batchInsert(saveParam.getId(), saveParam.getSocialAdminUserIds(), NumberUtils.INTEGER_ONE); } // 记录日志 diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index c3e649243..c285f75ce 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -96,9 +96,9 @@ public class TaxAgentWrapper extends Service { Boolean isChief = isChief(currentEmployeeId); Boolean isDefaultOpen = getTaxAgentService(user).isDefaultOpen(currentEmployeeId); Boolean isAdminEnable = getTaxAgentService(user).isAdminEnable(currentEmployeeId); + // 获取是否是社保管理员 Boolean isSocialAdminEnable = getTaxAgentService(user).isSocialAdminEnable(currentEmployeeId); Boolean isOpenDevolution = getTaxAgentService(user).isOpenDevolution(); - // 精华二开 - 获取是否是社保管理员 resultMap.put("isChief", isChief); resultMap.put("isDefaultOpen", isDefaultOpen); resultMap.put("isAdminEnable", isAdminEnable);