From c7a4f8a8e10b5f21a9aa91bcd217d2931413ada4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 30 May 2022 16:25:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=A3=E6=A1=88=E5=AF=BC=E5=85=A5=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryArchiveServiceImpl.java | 68 ++++++++++--------- .../wrapper/SalaryArchiveTaxAgentWrapper.java | 19 +++++- 2 files changed, 51 insertions(+), 36 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 1d6577a1f..cfee286fe 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -436,6 +436,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe for (int i = 0; i < data.size(); i++) { Map map = data.get(i); + map.put("index", i + 2); // 3.校验行内容 boolean isError = singleRowCheck(importType, allEmployeeIds, map, headers, effectiveTimeIndex, excelComments, errorCount, importHandleParam); @@ -679,11 +680,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe String taxAgentI18n = SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"); String effectiveTimeI18n = SalaryI18nUtil.getI18nLabel(85904, "生效日期"); String adjustReasonI18n = SalaryI18nUtil.getI18nLabel(85431, "调整原因"); + String rowindex = "第" + map.get("index") + "行"; // 1.姓名 String userName = Optional.ofNullable(map.get(userNameI18n)).orElse("").toString(); String deparmentName = Optional.ofNullable(map.get(SalaryI18nUtil.getI18nLabel(86185, "部门"))).orElse("").toString(); - List employeeSameIds = importHandleParam.getEmployees().stream().filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) - && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName))).map(DataCollectionEmployee::getEmployeeId) + List employeeSameIds = importHandleParam.getEmployees().stream() + .filter(e -> (StringUtils.isBlank(userName) || Objects.equals(e.getUsername(), userName)) + && (StringUtils.isBlank(deparmentName) || Objects.equals(e.getDepartmentName(), deparmentName))) + .map(DataCollectionEmployee::getEmployeeId) .collect(Collectors.toList()); Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 && employeeSameIds.get(0) > 0 ? employeeSameIds.get(0) : null; // 调薪和调整个税扣缴义务人的存在相同的取第一条 @@ -735,68 +739,63 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe // 判空 if (userNameI18n.equals(key) && StringUtils.isEmpty(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", key + "不能为空"); + errorMessageMap.put("message", rowindex + key + "不能为空"); excelComments.add(errorMessageMap); } // 个税扣缴义务人列判空(初始化导入或调整个税扣缴义务人) if ((taxAgentI18n.equals(key) && (isInit || isTaxAgentAdjust)) && StringUtils.isEmpty(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", key + "不能为空"); + errorMessageMap.put("message", rowindex + key + "不能为空"); excelComments.add(errorMessageMap); } if (effectiveTimeI18n.equals(key) && StringUtils.isEmpty(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", key + "不能为空"); + errorMessageMap.put("message", rowindex + key + "不能为空"); excelComments.add(errorMessageMap); } // 调整原因列判空(调薪或调整个税扣缴义务人) if ((adjustReasonI18n.equals(key) && (isTaxAgentAdjust || isSalaryItemAdjust)) && StringUtils.isEmpty(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", key + "不能为空"); + errorMessageMap.put("message", rowindex + key + "不能为空"); excelComments.add(errorMessageMap); } if (isEmpty) { -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100577, "不能为空"), errorCount + 1, errorCount + 1, j, j); isError = true; } // 1.姓名列处理 if (!isEmpty && userNameI18n.equals(key)) { if (CollectionUtils.isEmpty(employeeSameIds) || employeeSameIds.size() > 1) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "员工信息不能为空且不可重复(姓名与部门同时确认唯一)"); + errorMessageMap.put("message", rowindex + "员工信息不能为空且不可重复(姓名与部门同时确认唯一)"); excelComments.add(errorMessageMap); -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100578, "员工信息不能为空且不可重复(姓名与部门同时确认唯一)"), errorCount + 1, errorCount + 1, j, j); isError = true; } else if (employeeId == null) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "姓名错误,系统内不存在该姓名"); + errorMessageMap.put("message", rowindex + "姓名错误,系统内不存在该姓名"); excelComments.add(errorMessageMap); -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100579, "姓名错误,系统内不存在该姓名"), errorCount + 1, errorCount + 1, j, j); isError = true; // (调薪或调整个税扣缴义务人) } else if (finalSalaryArchive == null && (isTaxAgentAdjust || isSalaryItemAdjust)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "该人员的薪资档案不存在,请先初始化"); + errorMessageMap.put("message", rowindex + "该人员的薪资档案不存在,请先初始化"); excelComments.add(errorMessageMap); -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(101653, "该人员的薪资档案不存在,请先初始化"), errorCount + 1, errorCount + 1, j, j); isError = true; } } else if (!isEmpty && taxAgentI18n.equals(key) && (isInit || isTaxAgentAdjust)) { // 2.个税扣缴义务人列处理(初始化导入或调整个税扣缴义务人) - isError = handleTaxAgent(isError, isInit, effectiveTimeIndex, excelComments, errorCount, j, taxAgentId, effectiveTime, finalSalaryArchive, adjustReason, importHandleParam); + isError = handleTaxAgent(isError, isInit, effectiveTimeIndex, excelComments, errorCount, j, taxAgentId, effectiveTime, finalSalaryArchive, adjustReason, importHandleParam, map); } else if (!isEmpty && effectiveTimeI18n.equals(key) && effectiveTime == null) { // 3.生效时间处理 Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "生效日期错误或格式不正确,正确格式示例为'2022-01-01'、'2022/1/1'"); + errorMessageMap.put("message", rowindex + "生效日期错误或格式不正确,正确格式示例为'2022-01-01'、'2022/1/1'"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102497, "生效日期错误或格式不正确,正确格式示例为'2022-01-01'、'2022/1/1'"), errorCount + 1, errorCount + 1, j, j); isError = true; // 4.调整原因列处理(调薪或调整个税扣缴义务人) } else if (!isEmpty && adjustReasonI18n.equals(key) && (isTaxAgentAdjust || isSalaryItemAdjust) && StringUtils.isEmpty(adjustReason)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "调整原因不存在"); + errorMessageMap.put("message", rowindex + "调整原因异常"); excelComments.add(errorMessageMap); -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100591, "调整原因不存在"), errorCount + 1, errorCount + 1, j, j); isError = true; // 5.薪资项目列处理(初始化导入或调薪) } else { @@ -853,11 +852,13 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe */ private boolean handleTaxAgent(boolean isError, boolean isInit, int effectiveTimeIndex, List> excelComments, int errorCount, int j, - Long taxAgentId, Date effectiveTime, SalaryArchivePO finalSalaryArchive, String taxAgentAdjustReason, SalaryArchiveImportHandleParam importHandleParam) { + Long taxAgentId, Date effectiveTime, SalaryArchivePO finalSalaryArchive, String taxAgentAdjustReason, SalaryArchiveImportHandleParam importHandleParam, Map map) { + String rowindex = "第" + map.get("index") + "行"; + if (taxAgentId == null) { // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在"), errorCount + 1, errorCount + 1, j, j); Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "个税扣缴义务人不存在"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人不存在"); excelComments.add(errorMessageMap); isError = true; } else if (effectiveTime != null && finalSalaryArchive != null) { @@ -880,7 +881,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe // 1.1 如果早于<当前已生效 if (effectiveTime.before(currentEffectiveTime)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "生效日期不可早于当前已生效的调整日期"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人生效日期不可早于当前已生效的调整日期"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100429, "生效日期不可早于当前已生效的调整日期"), errorCount + 1, errorCount + 1, effectiveTimeIndex, effectiveTimeIndex); isError = true; @@ -889,14 +890,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } else if (effectiveTime.equals(currentEffectiveTime)) { if (effectiveBeforeTaxAgent != null && effectiveBeforeTaxAgent.getTaxAgentId().equals(taxAgentId)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "调整前后不可相同"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人调整前后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; } if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "与未生效的调整后不可相同"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人与未生效的调整后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; @@ -905,14 +906,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } else if (effectiveTime.after(currentEffectiveTime) && !effectiveTime.after(importHandleParam.getToday())) { if (effectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "调整前后不可相同"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人调整前后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; } if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "与未生效的调整后不可相同"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人与未生效的调整后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; @@ -920,14 +921,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe // 1.4 如果>今天 } else if (effectiveTime.after(importHandleParam.getToday()) && effectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "调整前后不可相同"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人调整前后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; } } else if (ineffectiveTaxAgent != null && ineffectiveTaxAgent.getTaxAgentId().equals(taxAgentId)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "与未生效的调整后不可相同"); + errorMessageMap.put("message", rowindex + "个税扣缴义务人与未生效的调整后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; @@ -978,6 +979,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe List> excelComments, int errorCount, int j, Date effectiveTime, SalaryArchivePO finalSalaryArchive, String salaryItemAdjustReason, SalaryArchiveImportHandleParam importHandleParam, String key, String cellVal, Map map) { + String rowindex = "第" + map.get("index") + "行"; Optional optionalSalaryItem = importHandleParam.getSalaryItems().stream().filter(e -> e.getName().equals(key)).findFirst(); if (optionalSalaryItem.isPresent()) { Long salaryItemId = optionalSalaryItem.get().getId(); @@ -1000,7 +1002,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe // 1.1 如果早于<当前已生效 if (effectiveTime.before(currentEffectiveTime)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "生效日期不可早于当前已生效的调整日期"); + errorMessageMap.put("message", rowindex + key + "生效日期不可早于当前已生效的调整日期"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100429, "生效日期不可早于当前已生效的调整日期"), errorCount + 1, errorCount + 1, effectiveTimeIndex, effectiveTimeIndex); isError = true; @@ -1009,14 +1011,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } else if (effectiveTime.equals(currentEffectiveTime)) { if (effectiveBeforeSalaryItem != null && effectiveBeforeSalaryItem.getItemValue().equals(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "调整前后不可相同"); + errorMessageMap.put("message", rowindex + key + "调整前后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; } if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "与未生效的调整后不可相同"); + errorMessageMap.put("message", rowindex + key + "与未生效的调整后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; @@ -1025,14 +1027,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe } else if (effectiveTime.after(currentEffectiveTime) && !effectiveTime.after(importHandleParam.getToday())) { if (effectiveSalaryItem.getItemValue().equals(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "调整前后不可相同"); + errorMessageMap.put("message", rowindex + key + "调整前后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; } if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "与未生效的调整后不可相同"); + errorMessageMap.put("message", rowindex + key + "与未生效的调整后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; @@ -1040,14 +1042,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe // 1.4 如果>今天 } else if (effectiveTime.after(importHandleParam.getToday()) && effectiveSalaryItem.getItemValue().equals(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "调整前后不可相同"); + errorMessageMap.put("message", rowindex + key + "调整前后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100432, "调整前后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; } } else if (ineffectiveSalaryItem != null && ineffectiveSalaryItem.getItemValue().equals(cellVal)) { Map errorMessageMap = Maps.newHashMap(); - errorMessageMap.put("message", "与未生效的调整后不可相同"); + errorMessageMap.put("message", rowindex + key + "与未生效的调整后不可相同"); excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100434, "与未生效的调整后不可相同"), errorCount + 1, errorCount + 1, j, j); isError = true; diff --git a/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java index c44a6ae57..de309fcee 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java @@ -11,7 +11,6 @@ import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryPar import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO; import com.engine.salary.entity.taxrate.TaxAgent; import com.engine.salary.enums.UserStatusEnum; -import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.SalaryArchiveTaxAgentService; @@ -21,7 +20,6 @@ import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.BeanUtils; import weaver.hrm.User; @@ -63,8 +61,23 @@ public class SalaryArchiveTaxAgentWrapper extends Service { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空")); } + // 调整前 + String adjustBefore = ""; + String adjustReason = ""; + Date effectiveTime = null; + SalaryArchiveTaxAgentPO adjustBeforePo = getSalaryArchiveTaxAgentService(user).getAdjustBeforeTaxAgent(SalaryArchiveTaxAgentPO.builder().salaryArchiveId(salaryArchiveId).effectiveTime(new Date()).build()); + if (adjustBeforePo != null) { + TaxAgent taxAgent = getTaxAgentService(user).getById(adjustBeforePo.getTaxAgentId()); + if (taxAgent != null) { + adjustBefore = taxAgent.getName(); + } + adjustReason = adjustBeforePo.getAdjustReason(); + effectiveTime = adjustBeforePo.getEffectiveTime(); + } + + // 构建表单 - Map form = buildTaxAgentForm(null, "", "", null); + Map form = buildTaxAgentForm(effectiveTime, adjustReason, adjustBefore, null); return SalaryArchiveTaxAgentFormDTO.builder() .salaryArchiveId(salaryArchiveId)