diff --git a/src/com/engine/salary/biz/SalarySobRangeBiz.java b/src/com/engine/salary/biz/SalarySobRangeBiz.java index 3580bc732..adfc94c5d 100644 --- a/src/com/engine/salary/biz/SalarySobRangeBiz.java +++ b/src/com/engine/salary/biz/SalarySobRangeBiz.java @@ -70,4 +70,15 @@ public class SalarySobRangeBiz { sqlSession.close(); } } + + public void updateEmployeeStatuses(SalarySobRangePO item) { + SqlSession sqlSession = MyBatisFactory.sqlSessionFactory.openSession(); + try { + SalarySobRangeMapper mapper = sqlSession.getMapper(SalarySobRangeMapper.class); + mapper.updateEmployeeStatuses(item); + sqlSession.commit(); + } finally { + sqlSession.close(); + } + } } diff --git a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java index 4b605b77b..f4aaec466 100644 --- a/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java +++ b/src/com/engine/salary/entity/salarysob/bo/SalarySobRangeBO.java @@ -7,7 +7,6 @@ import com.engine.salary.entity.hrm.SubCompanyInfo; import com.engine.salary.entity.salarysob.dto.SalarySobRangeListDTO; import com.engine.salary.entity.salarysob.param.SalarySobRangeEmpQueryParam; import com.engine.salary.entity.salarysob.po.SalarySobRangePO; -import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum; import com.engine.salary.enums.salarysob.TargetTypeEnum; import com.engine.salary.util.SalaryEntityUtil; @@ -39,33 +38,55 @@ public class SalarySobRangeBO { if (CollectionUtils.isEmpty(salarySobRanges)) { return Collections.emptyList(); } - Map> rangeMap = SalaryEntityUtil.group2Map(salarySobRanges, SalarySobRangePO::getTargetType); - List resultParams = Lists.newArrayListWithExpectedSize(rangeMap.size()); - rangeMap.forEach((targetType, salarySobRangePOS) -> { - List employeeStatus = salarySobRangePOS.stream() - .map(e -> SalaryEmployeeStatusEnum.parseByValue(e.getEmployeeStatus())) - .filter(Objects::nonNull) - .map(e -> e.name().toLowerCase()) - .distinct() - .collect(Collectors.toList()); - if (employeeStatus.contains(SalaryEmployeeStatusEnum.ALL.name().toLowerCase())) { - employeeStatus = Collections.emptyList(); + List resultParams = Lists.newArrayListWithExpectedSize(salarySobRanges.size()); + salarySobRanges.stream().forEach( item -> { + List employeeStatus= new ArrayList<>(); + String[] split = item.getEmployeeStatuses().split(","); + List enumsList = Arrays.asList(split).stream().map(i-> Integer.valueOf(i)).collect(Collectors.toList()); + List salaryEmployeeStatusEnums = SalaryEmployeeStatusEnum.parseByValues(enumsList); + for(SalaryEmployeeStatusEnum e: salaryEmployeeStatusEnums){ + employeeStatus.add(e.getValue().toString()); } - if (employeeStatus.contains(SalaryEmployeeStatusEnum.NORMAL.name().toLowerCase())) { - employeeStatus = UserStatusEnum.getNormalStatus(); - } - if (employeeStatus.contains(SalaryEmployeeStatusEnum.UNAVAILABLE.name().toLowerCase())) { - employeeStatus = UserStatusEnum.getUnavailableStatus(); - } - TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(targetType); + TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(item.getTargetType()); SalarySobRangeEmpQueryParam queryParam = SalarySobRangeEmpQueryParam.builder() .targetType(Optional.ofNullable(targetTypeEnum).map(TargetTypeEnum::name).orElse(StringUtils.EMPTY)) - .targetIds(SalaryEntityUtil.properties(salarySobRangePOS, SalarySobRangePO::getTargetId)) + .targetIds(Arrays.asList(item.getTargetId())) .employeeStatus(employeeStatus) .build(); resultParams.add(queryParam); }); return resultParams; + + + + +// Map> rangeMap = SalaryEntityUtil.group2Map(salarySobRanges, SalarySobRangePO::getTargetType); +// List resultParams = Lists.newArrayListWithExpectedSize(rangeMap.size()); +// rangeMap.forEach((targetType, salarySobRangePOS) -> { +// List employeeStatus = salarySobRangePOS.stream() +// .map(e -> SalaryEmployeeStatusEnum.parseByValue(e.getEmployeeStatus())) +// .filter(Objects::nonNull) +// .map(e -> e.name().toLowerCase()) +// .distinct() +// .collect(Collectors.toList()); +// if (employeeStatus.contains(SalaryEmployeeStatusEnum.ALL.name().toLowerCase())) { +// employeeStatus = Collections.emptyList(); +// } +// if (employeeStatus.contains(SalaryEmployeeStatusEnum.NORMAL.name().toLowerCase())) { +// employeeStatus = UserStatusEnum.getNormalStatus(); +// } +// if (employeeStatus.contains(SalaryEmployeeStatusEnum.UNAVAILABLE.name().toLowerCase())) { +// employeeStatus = UserStatusEnum.getUnavailableStatus(); +// } +// TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(targetType); +// SalarySobRangeEmpQueryParam queryParam = SalarySobRangeEmpQueryParam.builder() +// .targetType(Optional.ofNullable(targetTypeEnum).map(TargetTypeEnum::name).orElse(StringUtils.EMPTY)) +// .targetIds(SalaryEntityUtil.properties(salarySobRangePOS, SalarySobRangePO::getTargetId)) +// .employeeStatus(employeeStatus) +// .build(); +// resultParams.add(queryParam); +// }); +// return resultParams; } /** @@ -92,7 +113,8 @@ public class SalarySobRangeBO { return salarySobRanges.stream() .map(salarySobRangePO -> { TargetTypeEnum targetTypeEnum = TargetTypeEnum.parseByValue(salarySobRangePO.getTargetType()); - SalaryEmployeeStatusEnum salaryEmployeeStatusEnum = SalaryEmployeeStatusEnum.parseByValue(salarySobRangePO.getEmployeeStatus()); + + String employeeStatusesStr = parseByEmployeeStatuses(salarySobRangePO.getEmployeeStatuses()); return SalarySobRangeListDTO.builder() .id(salarySobRangePO.getId()) .salarySobId(salarySobRangePO.getSalarySobId()) @@ -102,14 +124,31 @@ public class SalarySobRangeBO { .orElse(StringUtils.EMPTY)) .targetId(salarySobRangePO.getTargetId()) .targetName(buildTargetName(salarySobRangePO, employeeComInfoMap, departmentComInfoMap, subCompanyComInfoMap,positionComInfoMap)) - .employeeStatus(Optional.ofNullable(salaryEmployeeStatusEnum) - .map(e -> SalaryI18nUtil.getI18nLabel(e.getLabelId(), e.getDefaultLabel())) - .orElse(StringUtils.EMPTY)) + .employeeStatus(employeeStatusesStr) .build(); }) .collect(Collectors.toList()); } + /** + * 转换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 salaryEmployeeStatusEnums = SalaryEmployeeStatusEnum.parseByValues(enumsList); + StringBuilder sb = new StringBuilder(); + for(int i=0 ; i needInsertSalarySobRanges; } + + public static String parseEnumListToStr(SalaryEmployeeStatusEnum[] salaryEmployeeStatusEnums){ + StringBuilder sb = new StringBuilder(); + for(int i=0;i getAllStatus() { + return Arrays.asList(TRIAL.getValue().toString(), FORMAL.getValue().toString(), TEMPORARY.getValue().toString(), DELAY.getValue().toString(),FIRE.getValue().toString(), DEPARTURE.getValue().toString(), RETIRED.getValue().toString()); + } + public static List getEffectiveList() { return Arrays.stream(UserStatusEnum.values()).filter(v -> v != INVALID).collect(Collectors.toList()); } diff --git a/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java b/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java index 11c11d628..b7b944b24 100644 --- a/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java +++ b/src/com/engine/salary/enums/salarysob/SalaryEmployeeStatusEnum.java @@ -3,6 +3,8 @@ package com.engine.salary.enums.salarysob; import com.engine.salary.enums.BaseEnum; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; /** @@ -15,11 +17,26 @@ import java.util.Objects; **/ public enum SalaryEmployeeStatusEnum implements BaseEnum { - ALL(0, "全部", 85155), - //在职,对应人力资源表中状态,试用0,正式1,临时2,试用延期3 - NORMAL(1, "在职", 100120), - //离职,对应人力资源表中状态,解雇4,离职5,退休6 - UNAVAILABLE(2, "离职", 85902), +// ALL(10, "全部", 85155), +// //在职,对应人力资源表中状态,试用0,正式1,临时2,试用延期3 +// NORMAL(1, "试用,正式,临时,临时延期", 100120), +// //离职老,对应人力资源表中状态,解雇4,离职5,退休6 +// UNAVAILABLE(2, "解雇,离职,退休", 85902), + + + TRIAL(0, "试用", 100121), + + FORMAL(1, "正式", 100122), + + TEMPORARY(2, "临时", 100123), + + DELAY(3, "试用延期", 100124), + + FIRE(4, "解雇", 100125), + + DEPARTURE(5, "离职", 100126), + + RETIRED(6, "退休", 100127), ; private int value; @@ -57,4 +74,17 @@ public enum SalaryEmployeeStatusEnum implements BaseEnum { } return null; } + + + public static List parseByValues(List value) { + ArrayList results = new ArrayList<>(); + for (SalaryEmployeeStatusEnum statusEnum : SalaryEmployeeStatusEnum.values()) { + for(Integer v : value){ + if(Objects.equals(statusEnum.getValue(),v)){ + results.add(statusEnum); + } + } + } + return results; + } } diff --git a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml index 64ec19e98..d7c914e03 100644 --- a/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml +++ b/src/com/engine/salary/mapper/salaryacct/SalaryAcctEmployeeMapper.xml @@ -520,10 +520,38 @@ AND em.status in (0,1,2,3) - -- 离职 + -- 离职(解雇,离职,退休) AND em.status in (4,5,6) + -- 试用 + + AND em.status in (0) + + -- 正式 + + AND em.status in (1) + + -- 临时 + + AND em.status in (2) + + -- 试用延期 + + AND em.status in (3) + + -- 解雇 + + AND em.status in (4) + + -- 离职 + + AND em.status in (5) + + -- 退休 + + AND em.status in (6) + ) @@ -564,10 +592,38 @@ AND em.status in (0,1,2,3) - -- 离职 + -- 离职(解雇,离职,退休) AND em.status in (4,5,6) + -- 试用 + + AND em.status in (0) + + -- 正式 + + AND em.status in (1) + + -- 临时 + + AND em.status in (2) + + -- 试用延期 + + AND em.status in (3) + + -- 解雇 + + AND em.status in (4) + + -- 离职 + + AND em.status in (5) + + -- 退休 + + AND em.status in (6) + ) @@ -608,10 +664,40 @@ AND em.status in (0,1,2,3) - -- 离职 + + -- 离职(解雇,离职,退休) AND em.status in (4,5,6) + -- 试用 + + AND em.status in (0) + + -- 正式 + + AND em.status in (1) + + -- 临时 + + AND em.status in (2) + + -- 试用延期 + + AND em.status in (3) + + -- 解雇 + + AND em.status in (4) + + -- 离职 + + AND em.status in (5) + + -- 退休 + + AND em.status in (6) + + ) diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.java b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.java index 4b281cb1a..c442f6b69 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.java +++ b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.java @@ -85,4 +85,9 @@ public interface SalarySobRangeMapper { */ List listEmployeeIds(@Param("params") Collection params); + /** + * 更新人员状态使用逗号分割 + * @param item + */ + void updateEmployeeStatuses(@Param("param") SalarySobRangePO item); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml index 6b84a4d2e..cc350d5b4 100644 --- a/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml +++ b/src/com/engine/salary/mapper/salarysob/SalarySobRangeMapper.xml @@ -30,6 +30,7 @@ , t.update_time , t.delete_type , t.tenant_key + , t.employee_statuses @@ -324,7 +325,7 @@ INSERT INTO hrsa_salary_sob_range(salary_sob_id, target_type, target_id, employee_status, include_type, - creator, create_time, update_time, delete_type, tenant_key) + creator, create_time, update_time, delete_type, tenant_key,employee_statuses) VALUES ( @@ -337,13 +338,14 @@ #{item.createTime}, #{item.updateTime}, #{item.deleteType}, - #{item.tenantKey} + #{item.tenantKey}, + #{item.employeeStatuses} ) INSERT INTO hrsa_salary_sob_range(salary_sob_id, target_type, target_id, employee_status, include_type, - creator, create_time, update_time, delete_type, tenant_key) + creator, create_time, update_time, delete_type, tenant_key,employee_statuses) select @@ -356,14 +358,15 @@ #{item.createTime,jdbcType=DATE}, #{item.updateTime,jdbcType=DATE}, #{item.deleteType,jdbcType=INTEGER}, - #{item.tenantKey,jdbcType=VARCHAR} + #{item.tenantKey,jdbcType=VARCHAR}, + #{item.employeeStatuses,jdbcType=VARCHAR} from dual INSERT INTO hrsa_salary_sob_range( salary_sob_id, target_type, target_id, employee_status, include_type, - creator, create_time, update_time, delete_type, tenant_key) + creator, create_time, update_time, delete_type, tenant_key,employee_statuses) VALUES ( #{item.salarySobId}, @@ -375,7 +378,8 @@ #{item.createTime}, #{item.updateTime}, #{item.deleteType}, - #{item.tenantKey} + #{item.tenantKey}, + #{item.employeeStatuses} ) @@ -399,6 +403,10 @@ + + UPDATE hrsa_salary_sob_range set employee_statuses = #{param.employeeStatuses} WHERE id = #{param.id} + +