Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
MustangDeng 2022-05-30 17:31:40 +08:00
commit 0af5199d9b
5 changed files with 491 additions and 597 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,11 @@
ALTER TABLE hrsa_add_up_situation ADD ( add_up_illness_medical varchar(255) ,add_up_tax_savings varchar(255) ,add_up_infant_care varchar(255))
ALTER TABLE hrsa_add_up_situation ADD (
add_up_illness_medical varchar2(255) NULL ,
add_up_tax_savings varchar2(255) NULL ,
add_up_infant_care varchar2(255) NULL
)
/
ALTER TABLE hrsa_add_up_deduction ADD (add_up_illness_medical varchar(255) ,add_up_infant_care varchar(255))
ALTER TABLE hrsa_add_up_deduction add (
add_up_illness_medical varchar2(255) NULL,
add_up_infant_care varchar2(255) NULL
)
/

View File

@ -1312,7 +1312,7 @@ CREATE TABLE hrsa_salary_sob_item_group(
salary_sob_id NUMBER(38,0) NOT NULL,
name varchar2(100) NOT NULL,
sorted_index number NOT NULL,
description varchar2(1000) NOT NULL,
description varchar2(1000) DEFAULT '',
create_time date NOT NULL,
update_time date NOT NULL,
creator NUMBER(38,0) NOT NULL,

View File

@ -436,6 +436,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
for (int i = 0; i < data.size(); i++) {
Map<String, Object> 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<Long> 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<Long> 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<String, String> 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<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", key + "不能为空");
errorMessageMap.put("message", rowindex + key + "不能为空");
excelComments.add(errorMessageMap);
}
if (effectiveTimeI18n.equals(key) && StringUtils.isEmpty(cellVal)) {
Map<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<Map<String, String>> 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<String, Object> map) {
String rowindex = "" + map.get("index") + "";
if (taxAgentId == null) {
// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在"), errorCount + 1, errorCount + 1, j, j);
Map<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<Map<String, String>> excelComments, int errorCount, int j,
Date effectiveTime, SalaryArchivePO finalSalaryArchive, String salaryItemAdjustReason, SalaryArchiveImportHandleParam importHandleParam,
String key, String cellVal, Map<String, Object> map) {
String rowindex = "" + map.get("index") + "";
Optional<SalaryItemPO> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> 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;

View File

@ -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<String, Object> form = buildTaxAgentForm(null, "", "", null);
Map<String, Object> form = buildTaxAgentForm(effectiveTime, adjustReason, adjustBefore, null);
return SalaryArchiveTaxAgentFormDTO.builder()
.salaryArchiveId(salaryArchiveId)