diff --git a/resource/sqlupgrade/DM/sql202408140203.sql b/resource/sqlupgrade/DM/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/DM/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/resource/sqlupgrade/GS/sql202408140203.sql b/resource/sqlupgrade/GS/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/GS/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/resource/sqlupgrade/JC/sql202408140203.sql b/resource/sqlupgrade/JC/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/JC/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/resource/sqlupgrade/Mysql/sql202408140203.sql b/resource/sqlupgrade/Mysql/sql202408140203.sql new file mode 100644 index 000000000..e97ad40ad --- /dev/null +++ b/resource/sqlupgrade/Mysql/sql202408140203.sql @@ -0,0 +1,2 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD COLUMN target varchar(4000) NULL ; +ALTER TABLE hrsa_salary_sob_range ADD COLUMN target varchar(4000) NULL ; \ No newline at end of file diff --git a/resource/sqlupgrade/Oracle/sql202408140203.sql b/resource/sqlupgrade/Oracle/sql202408140203.sql new file mode 100644 index 000000000..436ecc304 --- /dev/null +++ b/resource/sqlupgrade/Oracle/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +) +/ + + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +) +/ \ No newline at end of file diff --git a/resource/sqlupgrade/PG/sql202408140203.sql b/resource/sqlupgrade/PG/sql202408140203.sql new file mode 100644 index 000000000..81d7e05f0 --- /dev/null +++ b/resource/sqlupgrade/PG/sql202408140203.sql @@ -0,0 +1,3 @@ +alter table hrsa_tax_agent_manage_range add target VARCHAR(4000) null ; + +alter table hrsa_salary_sob_range add target VARCHAR(4000) null ; \ No newline at end of file diff --git a/resource/sqlupgrade/SQLServer/sql202408140203.sql b/resource/sqlupgrade/SQLServer/sql202408140203.sql new file mode 100644 index 000000000..71911a3f3 --- /dev/null +++ b/resource/sqlupgrade/SQLServer/sql202408140203.sql @@ -0,0 +1,5 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD target varchar(4000) NULL +GO + +ALTER TABLE hrsa_salary_sob_range ADD target varchar(4000) NULL +GO \ No newline at end of file diff --git a/resource/sqlupgrade/ST/sql202408140203.sql b/resource/sqlupgrade/ST/sql202408140203.sql new file mode 100644 index 000000000..98a8d5a20 --- /dev/null +++ b/resource/sqlupgrade/ST/sql202408140203.sql @@ -0,0 +1,10 @@ +ALTER TABLE hrsa_tax_agent_manage_range ADD ( + target varchar2(4000) NULL +); +/ + +ALTER TABLE hrsa_salary_sob_range ADD ( + target varchar2(4000) NULL +); +/ + diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java index f4aaec466..d8e0e3315 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java @@ -51,6 +51,7 @@ public class SalarySobRangeBO { SalarySobRangeEmpQueryParam queryParam = SalarySobRangeEmpQueryParam.builder() .targetType(Optional.ofNullable(targetTypeEnum).map(TargetTypeEnum::name).orElse(StringUtils.EMPTY)) .targetIds(Arrays.asList(item.getTargetId())) + .target(item.getTarget()) .employeeStatus(employeeStatus) .build(); resultParams.add(queryParam); @@ -58,8 +59,6 @@ public class SalarySobRangeBO { return resultParams; - - // Map> rangeMap = SalaryEntityUtil.group2Map(salarySobRanges, SalarySobRangePO::getTargetType); // List resultParams = Lists.newArrayListWithExpectedSize(rangeMap.size()); // rangeMap.forEach((targetType, salarySobRangePOS) -> { @@ -123,7 +122,8 @@ public class SalarySobRangeBO { .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) .targetId(salarySobRangePO.getTargetId()) - .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap,positionComInfoMap)) + .target(salarySobRangePO.getTarget()) + .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap, positionComInfoMap)) .employeeStatus(employeeStatusesStr) .build(); }) @@ -132,17 +132,18 @@ public class SalarySobRangeBO { /** * 转换employeeStatuses + * * @param employeeStatuses * @return */ private static String parseByEmployeeStatuses(String employeeStatuses) { String[] split = employeeStatuses.split(","); - List enumsList = Arrays.asList(split).stream().map(item-> Integer.valueOf(item)).collect(Collectors.toList()); + List enumsList = Arrays.asList(split).stream().map(item -> Integer.valueOf(item)).collect(Collectors.toList()); List salaryEmployeeStatusEnums = SalaryEmployeeStatusEnum.parseByValues(enumsList); StringBuilder sb = new StringBuilder(); - for(int i=0 ; i salarySobRangeMap = SalaryEntityUtil.convert2Map(salarySobRanges, e -> e.getIncludeType() + "-" + e.getTargetType() + "-" + e.getTargetId()); for (SalarySobRangeSaveParam.SalarySobRangeTargetParam targetParam : saveParam.getTargetParams()) { - String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId(); - if (salarySobRangeMap.containsKey(key)) { - SalarySobRangePO salarySobRangePO = salarySobRangeMap.get(key); - if(isImport){ - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); - }else { - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); - } - salarySobRangePO.setUpdateTime(now); - handleResult.getNeedUpdateSalarySobRanges().add(salarySobRangePO); - continue; - } - SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() - .salarySobId(saveParam.getSalarySobId()) - .targetType(targetParam.getTargetType().getValue()) - .targetId(targetParam.getTargetId()) + if (targetParam.getTargetType() == TargetTypeEnum.SQL) { + SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() + .salarySobId(saveParam.getSalarySobId()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(0L) + .target(targetParam.getTarget()) // .employeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())) // .employeeStatus(saveParam.getEmployeeStatus().getValue()) - .includeType(saveParam.getIncludeType()) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .deleteType(0) - .build(); + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); - if(isImport){ - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); - }else{ - salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + if (isImport) { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); + } else { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + } + + handleResult.getNeedInsertSalarySobRanges().add(salarySobRangePO); + }else { + String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId(); + if (salarySobRangeMap.containsKey(key)) { + SalarySobRangePO salarySobRangePO = salarySobRangeMap.get(key); + if (isImport) { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); + } else { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + } + salarySobRangePO.setUpdateTime(now); + handleResult.getNeedUpdateSalarySobRanges().add(salarySobRangePO); + continue; + } + SalarySobRangePO salarySobRangePO = SalarySobRangePO.builder() + .salarySobId(saveParam.getSalarySobId()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(targetParam.getTargetId()) + .target(targetParam.getTarget()) +// .employeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())) +// .employeeStatus(saveParam.getEmployeeStatus().getValue()) + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + + if (isImport) { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(targetParam.getEmployeeStatus())); + } else { + salarySobRangePO.setEmployeeStatuses(parseEnumListToStr(saveParam.getEmployeeStatus())); + } + + handleResult.getNeedInsertSalarySobRanges().add(salarySobRangePO); } - - handleResult.getNeedInsertSalarySobRanges().add(salarySobRangePO); } return handleResult; } @@ -100,11 +127,11 @@ public class SalarySobRangeSaveBO { private Collection needInsertSalarySobRanges; } - public static String parseEnumListToStr(SalaryEmployeeStatusEnum[] salaryEmployeeStatusEnums){ + public static String parseEnumListToStr(SalaryEmployeeStatusEnum[] salaryEmployeeStatusEnums) { StringBuilder sb = new StringBuilder(); - for(int i=0;i targetIds; diff --git a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java index ff2cdd876..a1a33e2f4 100644 --- a/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java +++ b/src/com/engine/salary/entity/salarysob/param/SalarySobRangeSaveParam.java @@ -52,9 +52,11 @@ public class SalarySobRangeSaveParam { private TargetTypeEnum targetType; //对象id - //@DataCheck(require = true, message = "对象不能为空") @ElogTransform( name="对象id" ) private Long targetId; + @ElogTransform( name="SQL" ) + + private String target; //员工状态 -- 导入使用 // @DataCheck(require = true, message = "员工状态不允许为空") diff --git a/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java b/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java index 08a1df20f..4ace5f3bd 100644 --- a/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java +++ b/src/com/engine/salary/entity/salarysob/po/SalarySobRangePO.java @@ -52,6 +52,11 @@ public class SalarySobRangePO { @ElogTransform(name="对象id") private Long targetId; + /** + * 对象id + */ + @ElogTransform(name="SQL") + private String target; /** * 人员状态 * @see SalaryEmployeeStatusEnum diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java index 7078723af..cd1ed7b36 100644 --- a/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentBO.java @@ -298,6 +298,7 @@ public class TaxAgentBO { .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) .orElse(StringUtils.EMPTY)) .targetId(taxAgentManageRange.getTargetId()) + .target(taxAgentManageRange.getTarget()) .targetName(buildTargetName(taxAgentManageRange, employeeComInfoMap, departmentComInfoMap, subDepartmentComInfoMap, positionComInfoMap)) .employeeStatus(buildEmployeeStatus(hrmStatusNameMap, taxAgentManageRange.getEmployeeStatus())) .build(); @@ -340,6 +341,8 @@ public class TaxAgentBO { return subDepartmentComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); case POSITION: return positionComInfoMap.getOrDefault(taxAgentManageRange.getTargetId(), StringUtils.EMPTY); + case SQL: + return taxAgentManageRange.getTarget(); default: return StringUtils.EMPTY; } @@ -349,11 +352,6 @@ public class TaxAgentBO { return handleManageRange(taxAgentManageRanges, saveParam, TaxAgentRangeTypeEnum.TAXAGENT, taxAgentId, 0L, employeeId, isImport); } - public static Result handleSubAdminRange(List taxAgentManageRanges, TaxAgentManageRangeSaveParam saveParam, Long taxAgentId, Long subAdminId, - Long employeeId, boolean isImport) { - return handleManageRange(taxAgentManageRanges, saveParam, TaxAgentRangeTypeEnum.SUBADMIN, taxAgentId, subAdminId, employeeId, isImport); - } - /** * 处理前端传回的保存参数,转换成对应的po(如果保存参数中的人员、部门、岗位等之前就已经添加过了,就不需要再次保存了) * @@ -377,39 +375,64 @@ public class TaxAgentBO { Map taxAgentManageRangeMap = SalaryEntityUtil.convert2Map(taxAgentManageRanges, e -> e.getIncludeType() + "-" + e.getTargetType() + "-" + e.getTargetId() + "-" + e.getRangeType()); for (TaxAgentSubAdminRangeSaveParam.TaxAgentSubAdminRangeTargetParam targetParam : saveParam.getTargetParams()) { - String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId() + "-" + rangeTypeEnum.getValue(); - if (taxAgentManageRangeMap.containsKey(key)) { - TaxAgentManageRangePO taxAgentManageRange = taxAgentManageRangeMap.get(key); - if(isImport){ + if (targetParam.getTargetType() == TargetTypeEnum.SQL) { + TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(taxAgentId) + .taxAgentSubAdminId(subAdminId) + .rangeType(rangeTypeEnum.getValue()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(0L) + .target(targetParam.getTarget()) + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + if (isImport) { taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); - }else { + } else { taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); } - taxAgentManageRange.setUpdateTime(now); - handleResult.getNeedUpdateTaxAgentManageRanges().add(taxAgentManageRange); - continue; + handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange); + } else { + String key = saveParam.getIncludeType() + "-" + targetParam.getTargetType().getValue() + "-" + targetParam.getTargetId() + "-" + rangeTypeEnum.getValue(); + if (taxAgentManageRangeMap.containsKey(key)) { + TaxAgentManageRangePO taxAgentManageRange = taxAgentManageRangeMap.get(key); + if (isImport) { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); + } else { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); + } + taxAgentManageRange.setUpdateTime(now); + handleResult.getNeedUpdateTaxAgentManageRanges().add(taxAgentManageRange); + continue; + } + TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder() + .id(IdGenerator.generate()) + .taxAgentId(taxAgentId) + .taxAgentSubAdminId(subAdminId) + .rangeType(rangeTypeEnum.getValue()) + .targetType(targetParam.getTargetType().getValue()) + .targetId(targetParam.getTargetId()) + .includeType(saveParam.getIncludeType()) + .creator(employeeId) + .createTime(now) + .updateTime(now) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .deleteType(0) + .build(); + if (isImport) { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); + } else { + taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); + } + handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange); } - TaxAgentManageRangePO taxAgentManageRange = TaxAgentManageRangePO.builder() - .id(IdGenerator.generate()) - .taxAgentId(taxAgentId) - .taxAgentSubAdminId(subAdminId) - .rangeType(rangeTypeEnum.getValue()) - .targetType(targetParam.getTargetType().getValue()) - .targetId(targetParam.getTargetId()) - .includeType(saveParam.getIncludeType()) - .creator(employeeId) - .createTime(now) - .updateTime(now) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .deleteType(0) - .build(); - if(isImport){ - taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(targetParam.getEmployeeStatus())); - }else { - taxAgentManageRange.setEmployeeStatus(JsonUtil.toJsonString(saveParam.getEmployeeStatus())); - } - handleResult.getNeedInsertTaxAgentManageRanges().add(taxAgentManageRange); } + return handleResult; } diff --git a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java index eb858a077..d87bf0a3b 100644 --- a/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java +++ b/src/com/engine/salary/entity/taxagent/dto/TaxAgentManageRangeListDTO.java @@ -49,6 +49,7 @@ public class TaxAgentManageRangeListDTO { //对象id") private Long targetId; + private String target; @SalaryTableColumn( text = "员工状态", diff --git a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java index cd47a3284..2a8ff4587 100644 --- a/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java +++ b/src/com/engine/salary/entity/taxagent/param/TaxAgentManageRangeSaveParam.java @@ -2,6 +2,8 @@ package com.engine.salary.entity.taxagent.param; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.util.valid.DataCheck; +import com.engine.salary.util.valid.Modify; +import com.engine.salary.util.valid.ModifyTypeEnum; import lombok.Data; import java.util.Collection; @@ -51,9 +53,14 @@ public class TaxAgentManageRangeSaveParam { /** * 对象不能为空 */ - @DataCheck(require = true,message = "对象不能为空") private Long targetId; + /** + * sql + */ + @Modify(modifyType = ModifyTypeEnum.RESTORE_SQL) + private String target; + /** * 导入使用,员工状态 */ diff --git a/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java b/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java index ae4c8b9b7..7b088913c 100644 --- a/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java +++ b/src/com/engine/salary/entity/taxagent/po/TaxAgentManageRangePO.java @@ -64,6 +64,9 @@ public class TaxAgentManageRangePO { @ElogTransform( name ="对象id") private Long targetId; + @ElogTransform( name ="SQL") + private String target; + /** * 人员状态 */ diff --git a/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java b/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java index 04c6497f3..051a336ff 100644 --- a/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java +++ b/src/com/engine/salary/enums/salarysob/TargetTypeEnum.java @@ -20,10 +20,8 @@ public enum TargetTypeEnum implements BaseEnum { DEPT(2, "部门", 86185), SUBCOMPANY(3, "分部", 107369), POSITION(4, "岗位", 90633), - ALL(5, "所有人", 107729); - -// SECLEVE(6, "安全级别", 90382),; - // EXT_EMPLOYEE(100, "外部人员", 0); + ALL(5, "所有人", 107729), + SQL(6, "SQL", 107729); private int value; private String defaultLabel; diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml index 0c47b1131..d46406ff5 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml @@ -6,6 +6,7 @@ + @@ -23,6 +24,7 @@ , t.salary_sob_id , t.target_type , t.target_id + , t.target , t.employee_status , t.include_type , t.creator @@ -68,6 +70,9 @@ AND target_id = #{targetId} + + AND target = #{target} + AND employee_status = #{employeeStatus} @@ -118,6 +123,9 @@ target_id, + + target, + employee_status, @@ -153,6 +161,9 @@ #{targetId}, + + #{target}, + #{employeeStatus}, @@ -197,6 +208,9 @@ target_id, + + target, + employee_status, @@ -232,6 +246,9 @@ #{targetId}, + + #{target}, + #{employeeStatus}, @@ -263,6 +280,7 @@ salary_sob_id=#{salarySobId}, target_type=#{targetType}, target_id=#{targetId}, + target=#{target}, employee_status=#{employeeStatus}, include_type=#{includeType}, creator=#{creator}, @@ -288,6 +306,9 @@ target_id=#{targetId}, + + target=#{target}, + employee_statuses=#{employeeStatuses}, @@ -324,7 +345,7 @@ - INSERT INTO hrsa_salary_sob_range(salary_sob_id, target_type, target_id, employee_status, include_type, + INSERT INTO hrsa_salary_sob_range(salary_sob_id, target_type, target_id,target, employee_status, include_type, creator, create_time, update_time, delete_type, tenant_key,employee_statuses) VALUES @@ -332,6 +353,7 @@ #{item.salarySobId}, #{item.targetType.value}, #{item.targetId}, + #{item.target}, #{item.employeeStatus.value}, #{item.includeType}, #{item.creator}, @@ -344,7 +366,7 @@ - INSERT INTO hrsa_salary_sob_range(salary_sob_id, target_type, target_id, employee_status, include_type, + INSERT INTO hrsa_salary_sob_range(salary_sob_id, target_type, target_id,target, employee_status, include_type, creator, create_time, update_time, delete_type, tenant_key,employee_statuses) @@ -352,6 +374,7 @@ #{item.salarySobId,jdbcType=DOUBLE}, #{item.targetType.value,jdbcType=INTEGER}, #{item.targetId,jdbcType=DOUBLE}, + #{item.target,jdbcType=VARCHAR}, #{item.employeeStatus.value,jdbcType=INTEGER}, #{item.includeType,jdbcType=INTEGER}, #{item.creator,jdbcType=DOUBLE}, @@ -365,13 +388,14 @@ - INSERT INTO hrsa_salary_sob_range( salary_sob_id, target_type, target_id, employee_status, include_type, + INSERT INTO hrsa_salary_sob_range( salary_sob_id, target_type, target_id,target, employee_status, include_type, creator, create_time, update_time, delete_type, tenant_key,employee_statuses) VALUES ( #{item.salarySobId}, #{item.targetType.value}, #{item.targetId}, + #{item.target}, #{item.employeeStatus.value}, #{item.includeType}, #{item.creator}, diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml index c5eb21ebf..3538c3ab4 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentManageRangeMapper.xml @@ -11,6 +11,7 @@ + @@ -29,6 +30,7 @@ , t.include_type , t.range_type , t.target_id + , t.target , t.target_type , t.tax_agent_id , t.tax_agent_sub_admin_id @@ -85,6 +87,9 @@ AND target_id = #{targetId} + + AND target = #{target} + AND target_type = #{targetType} @@ -154,6 +159,9 @@ target_id, + + target, + target_type, @@ -198,6 +206,9 @@ #{targetId}, + + #{target}, + #{targetType}, @@ -228,6 +239,7 @@ include_type=#{includeType}, range_type=#{rangeType}, target_id=#{targetId}, + target=#{target}, target_type=#{targetType}, tax_agent_id=#{taxAgentId}, tax_agent_sub_admin_id=#{taxAgentSubAdminId}, @@ -266,6 +278,9 @@ target_id=#{targetId}, + + target=#{target}, + target_type=#{targetType}, diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 20d2c37cc..f02fa4688 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -64,6 +64,10 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee return ServiceUtil.getService(SalarySobRangeServiceImpl.class, user); } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } + private SalarySysConfMapper getSalarySysConfMapper() { return SqlProxyHandle.getProxy(SalarySysConfMapper.class); } @@ -349,23 +353,36 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee if (CollectionUtils.isEmpty(includeQueryParams)) { return Collections.emptyList(); } - - List result = employBiz.listByParams(includeQueryParams); + List queryParams = includeQueryParams.stream().filter(param -> !param.getTargetType().equals(TargetTypeEnum.SQL.name())).collect(Collectors.toList()); + List result = employBiz.listByParams(queryParams); if (openExtEmp) { - result.addAll(getExtEmpService(user).listByParams(includeQueryParams)); + result.addAll(getExtEmpService(user).listByParams(queryParams)); } // 查询虚拟部门、分部人员信息 - List virtualParams = includeQueryParams.stream().filter(param -> + List virtualParams = queryParams.stream().filter(param -> (param.getTargetType().equals(TargetTypeEnum.SUBCOMPANY.name()) || param.getTargetType().equals(TargetTypeEnum.DEPT.name())) && ((List) param.getTargetIds()).get(0).compareTo(0L) < 0 ).collect(Collectors.toList()); result.addAll(employBiz.listByVirtualParams(virtualParams)); + List empIds = new ArrayList<>(); + includeQueryParams.stream() + .filter(param -> param.getTargetType().equals(TargetTypeEnum.SQL.name())) + .forEach(param -> { + String sql = param.getTarget(); + RecordSet rs = new RecordSet(); + if (rs.execute(sql)) { + while (rs.next()) { + empIds.add((long) rs.getInt("id")); + } + } + }); + List employees = getSalaryEmployeeService(user).getEmployeeByIds(empIds); + result.addAll(employees); + // 从hrmresource和hrmresourcevirtual可能获取到重复人员数据,需要根据人员id去重 result = result.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparingLong(DataCollectionEmployee::getEmployeeId))), ArrayList::new)); - //部门分部等信息备份到核算人员表中,不进行多语言处理 - // return SalaryI18nUtil.i18nList(result); return result; } diff --git a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java index 28dcef63a..b6265603a 100644 --- a/src/com/engine/salary/service/impl/SalarySobServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySobServiceImpl.java @@ -440,6 +440,7 @@ public class SalarySobServiceImpl extends Service implements SalarySobService { .salarySobId(salarySobID) .targetType(item.getTargetType().getValue()) .targetId(item.getTargetId()) + .target(item.getTarget()) .employeeStatuses(item.getEmployeeStatus()) .includeType(1) .creator(Long.valueOf(user.getUID())) diff --git a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java index 5d17168b5..b21ece557 100644 --- a/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentManageRangeServiceImpl.java @@ -48,6 +48,7 @@ import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.util.IOUtils; import org.springframework.beans.BeanUtils; +import weaver.conn.RecordSet; import weaver.file.ImageFileManager; import weaver.general.Util; import weaver.hrm.User; @@ -177,57 +178,77 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM return Collections.emptyList(); } // 获取虚拟部门下人员信息 - List virtualDepartmentIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.DEPT.getValue()) && manageRange.getTargetId().compareTo(0L) < 0) - .map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); + List virtualDepartmentIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.DEPT.getValue()) && manageRange.getTargetId().compareTo(0L) < 0).map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); List virtualEmpListByDep = getSalaryEmployeeService(user).getVirtualEmpByVirtualDepIds(virtualDepartmentIds); Map> virtualDepMap = SalaryEntityUtil.group2Map(virtualEmpListByDep, DataCollectionEmployee::getDepartmentId, DataCollectionEmployee::getEmployeeId); // 获取虚拟分部下人员信息 - List virtualSubCompanyIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.SUBCOMPANY.getValue()) && manageRange.getTargetId().compareTo(0L) < 0) - .map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); + List virtualSubCompanyIds = taxAgentManageRanges.stream().filter(manageRange -> manageRange.getTargetType().equals(TargetTypeEnum.SUBCOMPANY.getValue()) && manageRange.getTargetId().compareTo(0L) < 0).map(TaxAgentManageRangePO::getTargetId).collect(Collectors.toList()); List virtualEmpListBySubCom = getSalaryEmployeeService(user).getVirtualEmpByVirtualSubCompanyIds(virtualSubCompanyIds); Map> virtualSubCompanyMap = SalaryEntityUtil.group2Map(virtualEmpListBySubCom, DataCollectionEmployee::getSubcompanyid, DataCollectionEmployee::getEmployeeId); List salaryEmployeeList = Lists.newArrayList(); for (TaxAgentManageRangePO manageRange : taxAgentManageRanges) { - boolean isVirtual = manageRange.getTargetId().compareTo(0L) < 0 ? true : false; - salaryEmployeeList.addAll(salaryEmployees.stream().filter(salaryEmployee -> { - if (StringUtils.isEmpty(manageRange.getEmployeeStatus()) || !manageRange.getEmployeeStatus().contains("\"" + salaryEmployee.getStatus() + "\"")) { + if (!TargetTypeEnum.SQL.getValue().equals(manageRange.getTargetType())) { + boolean isVirtual = manageRange.getTargetId().compareTo(0L) < 0 ? true : false; + List employees = salaryEmployees.stream().filter(salaryEmployee -> { + if (StringUtils.isEmpty(manageRange.getEmployeeStatus()) || !manageRange.getEmployeeStatus().contains("\"" + salaryEmployee.getStatus() + "\"")) { + return false; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.ALL.getValue())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.EMPLOYEE.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getEmployeeId())) { + return true; + } + if (isVirtual) { + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue())) { + Set empIds = virtualDepMap.get(manageRange.getTargetId()); + if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { + return true; + } + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue())) { + Set empIds = virtualSubCompanyMap.get(manageRange.getTargetId()); + if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { + return true; + } + } + } else { + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getDepartmentId())) { + return true; + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getSubcompanyid())) { + return true; + } + } + if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.POSITION.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getJobtitleId())) { + return true; + } return false; - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.ALL.getValue())) { - return true; - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.EMPLOYEE.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getEmployeeId())) { - return true; - } - if (isVirtual) { - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue())) { - Set empIds = virtualDepMap.get(manageRange.getTargetId()); - if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { - return true; - } - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue())) { - Set empIds = virtualSubCompanyMap.get(manageRange.getTargetId()); - if (CollectionUtils.isNotEmpty(empIds) && empIds.contains(salaryEmployee.getEmployeeId())) { - return true; - } - } - } else { - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.DEPT.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getDepartmentId())) { - return true; - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.SUBCOMPANY.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getSubcompanyid())) { - return true; - } - } - if (Objects.equals(manageRange.getTargetType(), TargetTypeEnum.POSITION.getValue()) && Objects.equals(manageRange.getTargetId(), salaryEmployee.getJobtitleId())) { - return true; - } - return false; - }).collect(Collectors.toList())); + }).collect(Collectors.toList()); + salaryEmployeeList.addAll(employees); + } } + + for (TaxAgentManageRangePO manageRange : taxAgentManageRanges) { + if (TargetTypeEnum.SQL.getValue().equals(manageRange.getTargetType())) { + String sql = manageRange.getTarget(); + List empIds = new ArrayList<>(); + RecordSet rs = new RecordSet(); + if (rs.execute(sql)) { + while (rs.next()) { + empIds.add((long) rs.getInt("id")); + } + } + List employees = getSalaryEmployeeService(user).getEmployeeByIds(empIds); + if (StringUtils.isNotBlank(manageRange.getEmployeeStatus())) { + employees = employees.stream().filter(salaryEmployee -> manageRange.getEmployeeStatus().contains("\"" + salaryEmployee.getStatus() + "\"")).collect(Collectors.toList()); + } + salaryEmployeeList.addAll(employees); + } + } + // 去重 salaryEmployeeList = salaryEmployeeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DataCollectionEmployee::getEmployeeId))), ArrayList::new)); return salaryEmployeeList; @@ -338,13 +359,19 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM if (target.getTargetType() == null) { throw new SalaryRunTimeException("对象类型不能为空"); } - if (target.getTargetId() == null) { - throw new SalaryRunTimeException("对象不能为空"); + if (target.getTargetType() == TargetTypeEnum.SQL) { + if (target.getTarget() == null) { + throw new SalaryRunTimeException("sql不能为空"); + } + target.setTargetId(0L); + } else { + if (target.getTargetId() == null) { + throw new SalaryRunTimeException("对象不能为空"); + } } }); } - // 查询个税扣缴义务人 TaxAgentPO taxAgent = getTaxAgentService(user).getById(saveParam.getTaxAgentId()); if (Objects.isNull(taxAgent)) { @@ -379,13 +406,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM getTaxAgentManageRangeMapper().insertIgnoreNull(range); // 记录操作日志 String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "新增人员范围"), - SalaryI18nUtil.getI18nLabel(0, "新增人员范围") + name, - range, - user); + SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "新增人员范围"), SalaryI18nUtil.getI18nLabel(0, "新增人员范围") + name, range, user); }); } @@ -396,14 +417,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 记录操作日志 TaxAgentManageRangePO oldPO = oldMap.getOrDefault(range.getId(), TaxAgentManageRangePO.builder().build()); String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "更新人员范围"), - SalaryI18nUtil.getI18nLabel(0, "更新人员范围") + name, - oldPO, - range, - user); + SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "更新人员范围"), SalaryI18nUtil.getI18nLabel(0, "更新人员范围") + name, oldPO, range, user); }); } @@ -439,7 +453,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM //开始同步中.... Util_DataCache.setObjVal("salaryArchiveChangeSign", "1"); getSalaryArchiveService(user).handleChangeData(1L); - }finally { + } finally { //同步结束.... Util_DataCache.setObjVal("salaryArchiveChangeSign", "0"); } @@ -486,28 +500,12 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM List oldPO = listAllExtBytaxAgentId(taxAgentId); List oldIds = SalaryEntityUtil.properties(oldPO, TaxAgentExtRangePO::getTargetId, Collectors.toList()); targetIds.stream().filter(targetId -> !oldIds.contains(targetId)).forEach(targetId -> { - TaxAgentExtRangePO po = TaxAgentExtRangePO.builder() - .id(IdGenerator.generate()) - .taxAgentId(taxAgentId) - .targetId(targetId) - .creator((long) user.getUID()) - .createTime(now) - .updateTime(now) - .deleteType(0) - .targetType(1) - .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) - .build(); + TaxAgentExtRangePO po = TaxAgentExtRangePO.builder().id(IdGenerator.generate()).taxAgentId(taxAgentId).targetId(targetId).creator((long) user.getUID()).createTime(now).updateTime(now).deleteType(0).targetType(1).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build(); getTaxAgentExtRangeMapper().insertIgnoreNull(po); // 记录日志 String name = taxAgent.getName() + "_" + saveParam.getTaxAgentId(); - SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - taxAgent.getId(), - name, - SalaryI18nUtil.getI18nLabel(0, "新增非系统人员范围"), - SalaryI18nUtil.getI18nLabel(0, "新增非系统人员范围") + name, - po, - user); + SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, taxAgent.getId(), name, SalaryI18nUtil.getI18nLabel(0, "新增非系统人员范围"), SalaryI18nUtil.getI18nLabel(0, "新增非系统人员范围") + name, po, user); }); List oldEmpList = getExtEmpService(user).getEmployeeByIds(oldIds); employees.addAll(oldEmpList); @@ -556,13 +554,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 删除管理范围 getTaxAgentExtRangeMapper().deleteByIds(ids); // 记录日志 - SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - taxAgentManageRanges.get(0).getTaxAgentId(), - ids.toString(), - SalaryI18nUtil.getI18nLabel(0, "删除非系统人员范围"), - SalaryI18nUtil.getI18nLabel(0, "删除非系统人员范围") + ids.toString(), - null, - user); + SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, taxAgentManageRanges.get(0).getTaxAgentId(), ids.toString(), SalaryI18nUtil.getI18nLabel(0, "删除非系统人员范围"), SalaryI18nUtil.getI18nLabel(0, "删除非系统人员范围") + ids.toString(), null, user); } private void syncLocalExtEmp(Long taxAgentId, List allSalaryEmployees) { @@ -648,13 +640,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 记录操作日志 taxAgentManageRangeList.stream().forEach(range -> { String name = taxAgentPO.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "删除人员范围"), - SalaryI18nUtil.getI18nLabel(0, "删除人员范围") + name, - range, - user); + SalaryLoggerUtil.recordDeleteSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "删除人员范围"), SalaryI18nUtil.getI18nLabel(0, "删除人员范围") + name, range, user); }); @@ -669,7 +655,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM } List taxAgentExtRangePOS = getTaxAgentExtRangeMapper().list(TaxAgentExtRangePO.builder().taxAgentId(param.getTaxAgentId()).build()); - if(StringUtils.isNotBlank(param.getTargetName())) { + if (StringUtils.isNotBlank(param.getTargetName())) { taxAgentExtRangePOS = taxAgentExtRangePOS.stream().filter(po -> po.getTargetName().contains(param.getTargetName())).collect(Collectors.toList()); } return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), taxAgentExtRangePOS, TaxAgentExtRangePO.class); @@ -873,25 +859,17 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM List employeeSameIds = new ArrayList<>(); //筛选导入人员信息可以在人力资源池中匹配到的人员信息 - List emps = getSalaryEmployeeService() - .matchImportEmployee(confValue,employees, userName, deparmentName, mobile, workcode,idNo, null); + List emps = getSalaryEmployeeService().matchImportEmployee(confValue, employees, userName, deparmentName, mobile, workcode, idNo, null); if (CollectionUtils.isNotEmpty(emps)) { - employeeSameIds = emps.stream() - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); + employeeSameIds = emps.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); } //含在职和离职,选在职数据 if (CollectionUtils.isNotEmpty(emps) && emps.size() > 1) { - employeeSameIds = emps.stream() - .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); + employeeSameIds = emps.stream().filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())).map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); } if (CollectionUtils.isNotEmpty(emps) && emps.size() == 1) { - employeeSameIds = emps.stream() - .map(DataCollectionEmployee::getEmployeeId) - .collect(Collectors.toList()); + employeeSameIds = emps.stream().map(DataCollectionEmployee::getEmployeeId).collect(Collectors.toList()); } //当人员信息导入筛选的全局配置为"0"时,姓名才是必填项 @@ -980,7 +958,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 去重 allRanges = allRanges.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getTaxAgentId() + "." + f.getRangeType() + "." + f.getTargetType() + "." + f.getTargetId() + "." + f.getEmployeeStatus() + "." + f.getIncludeType()))), ArrayList::new)); - List salaryEmployees = getSalaryEmployeeService().listAll(UseEmployeeTypeEnum.ALL); + List salaryEmployees = getSalaryEmployeeService().listAll(UseEmployeeTypeEnum.ALL); List allSalaryEmployees = this.getManageRangeSalaryEmployees(taxAgentId, allRanges, salaryEmployees); /* 检查当前个税扣缴义务人的所有人员范围与所有分管理员的管理范围===========================end */ @@ -989,13 +967,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM getTaxAgentManageRangeMapper().insertIgnoreNull(range); // 记录操作日志 String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "新增人员范围"), - SalaryI18nUtil.getI18nLabel(0, "新增人员范围") + name, - range, - user); + SalaryLoggerUtil.recordAddSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "新增人员范围"), SalaryI18nUtil.getI18nLabel(0, "新增人员范围") + name, range, user); }); } if (CollectionUtils.isNotEmpty(result.getNeedUpdateTaxAgentManageRanges())) { @@ -1005,14 +977,7 @@ public class TaxAgentManageRangeServiceImpl extends Service implements TaxAgentM // 记录操作日志 TaxAgentManageRangePO oldPO = oldMap.getOrDefault(range.getId(), TaxAgentManageRangePO.builder().build()); String name = taxAgent.getName() + "_" + TargetTypeEnum.parseByValue(range.getTargetType()).getDefaultLabel() + "_" + range.getTargetId(); - SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, - range.getTaxAgentId(), - name, - SalaryI18nUtil.getI18nLabel(0, "更新人员范围"), - SalaryI18nUtil.getI18nLabel(0, "更新人员范围") + name, - oldPO, - range, - user); + SalaryLoggerUtil.recordUpdateSingleLog(SalaryElogConfig.taxAgentLoggerTemplate, range.getTaxAgentId(), name, SalaryI18nUtil.getI18nLabel(0, "更新人员范围"), SalaryI18nUtil.getI18nLabel(0, "更新人员范围") + name, oldPO, range, user); }); } diff --git a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java index e85253543..7d201108c 100644 --- a/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySobRangeWrapper.java @@ -1,5 +1,6 @@ package com.engine.salary.wrapper; +import cn.hutool.core.util.StrUtil; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.SalarySobExtRangePO; @@ -17,8 +18,10 @@ import org.apache.commons.lang.math.NumberUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; +import java.util.Optional; /** * 薪资账套的人员范围 @@ -73,6 +76,31 @@ public class SalarySobRangeWrapper extends Service { * @param saveParam 保存参数 */ public void save(SalarySobRangeSaveParam saveParam) { + Optional.ofNullable(saveParam.getTargetParams()).orElse(new ArrayList<>()) + .forEach(targetParam -> { + if (StrUtil.isNotBlank(targetParam.getTarget())) { + targetParam.setTarget(targetParam.getTarget() + .replace("select", "select") + .replace("SELECT", "SELECT") + .replace("join", "join") + .replace("JOIN", "JOIN") + .replace("and", "and") + .replace("AND", "AND") + .replace("or", "or") + .replace("OR", "OR") + .replace("in", "in") + .replace("IN", "IN") + .replace("like", "like") + .replace("LIKE", "LIKE") + .replace("exists", "exists") + .replace("EXISTS", "EXISTS") + .replace("between", "between") + .replace("BETWEEN", "BETWEEN") + .replace("union", "union") + .replace("UNION", "UNION")); + } + }); + getSalarySobRangeService(user).save(saveParam); } diff --git a/src/com/engine/salary/wrapper/TaxAgentWrapper.java b/src/com/engine/salary/wrapper/TaxAgentWrapper.java index 027df9952..213091fab 100644 --- a/src/com/engine/salary/wrapper/TaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/TaxAgentWrapper.java @@ -1,5 +1,6 @@ package com.engine.salary.wrapper; +import cn.hutool.core.util.StrUtil; import com.cloudstore.dev.api.util.Util_DataCache; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; @@ -341,6 +342,34 @@ public class TaxAgentWrapper extends Service { * @return */ public String saveRange(TaxAgentRangeSaveParam saveParam) { + //将select因XSS过滤造成的异常字符转换回来 + + Optional.ofNullable(saveParam.getTargetParams()).orElse(new ArrayList<>()) + .forEach(targetParam -> { + if (StrUtil.isNotBlank(targetParam.getTarget())) { + targetParam.setTarget(targetParam.getTarget() + .replace("select", "select") + .replace("SELECT", "SELECT") + .replace("join", "join") + .replace("JOIN", "JOIN") + .replace("and", "and") + .replace("AND", "AND") + .replace("or", "or") + .replace("OR", "OR") + .replace("in", "in") + .replace("IN", "IN") + .replace("like", "like") + .replace("LIKE", "LIKE") + .replace("exists", "exists") + .replace("EXISTS", "EXISTS") + .replace("between", "between") + .replace("BETWEEN", "BETWEEN") + .replace("union", "union") + .replace("UNION", "UNION")); + } + }); + + getTaxAgentManageRangeService(user).save(saveParam); return StringUtils.EMPTY; }