diff --git a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java index 33e629075..2d2b80459 100644 --- a/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java +++ b/src/com/engine/salary/entity/salaryarchive/po/SalaryArchivePO.java @@ -2,6 +2,7 @@ package com.engine.salary.entity.salaryarchive.po; import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveAddTypeEnum; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -9,6 +10,7 @@ import lombok.NoArgsConstructor; import java.util.Collection; import java.util.Date; +import java.util.List; /** * 薪资档案 @@ -100,4 +102,9 @@ public class SalaryArchivePO { //---------条件------- private Collection ids; private Collection employeeIds; + /** + * 状态 + */ + @JsonIgnore + private List runStatusList; } diff --git a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java index aa0906b7e..6b149b22a 100644 --- a/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java +++ b/src/com/engine/salary/enums/salarysob/IncomeCategoryEnum.java @@ -21,8 +21,6 @@ public enum IncomeCategoryEnum implements BaseEnum { // 暂时注释掉,后续会开放 // ONETIME_ANNUAL_BONUS(2,"全年一次性奖金收入", 0), // -// REMUNERATION_FOR_LABOR(4, "劳务报酬所得", 0), -// // OTHER(11, "其他所得", 0), ; diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml index 5fab68b56..10a6325f8 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveItemMapper.xml @@ -1055,6 +1055,12 @@ #{salaryItemId} + + AND t.salary_archive_id IN + + #{salaryItemId} + + AND t.salary_archive_id = #{param.salaryArchiveId} diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java index 8e8387782..7ecf03545 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.java @@ -5,6 +5,7 @@ import com.engine.salary.entity.salaryarchive.param.SalaryArchiveQueryParam; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import org.apache.ibatis.annotations.Param; +import java.util.Collection; import java.util.List; public interface SalaryArchiveMapper { @@ -102,4 +103,12 @@ public interface SalaryArchiveMapper { void updateFixed(SalaryArchivePO build); void updateSuspend(SalaryArchivePO build); + + void gotoFixed(Collection ids); + + void gotoStop(Collection ids); + + void gotoPendingFromStop(Collection ids); + + void gotoFixedFromStop(Collection ids); } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml index db8db13f9..8f1adbbec 100644 --- a/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml +++ b/src/com/engine/salary/mapper/archive/SalaryArchiveMapper.xml @@ -75,19 +75,19 @@ - t1 + t . id - , t1.employee_id - , t1.create_time - , t1.update_time - , t1.creator - , t1.delete_type - , t1.tenant_key - , t1.tax_agent_id - , t1.pay_start_date - , t1.pay_end_date - , t1.run_status + , t.employee_id + , t.create_time + , t.update_time + , t.creator + , t.delete_type + , t.tenant_key + , t.tax_agent_id + , t.pay_start_date + , t.pay_end_date + , t.run_status , e.mobile , e.workcode , e.lastname as username @@ -102,22 +102,22 @@ SELECT FROM - hrsa_salary_archive t1 - LEFT JOIN hrmresource e ON e.id = t1.employee_id + hrsa_salary_archive t + LEFT JOIN hrmresource e ON e.id = t.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 - WHERE t1.delete_type = 0 + WHERE t.delete_type = 0 and e.status not in (7) and (e.accounttype is null or e.accounttype = 0) - AND t1.id IN + AND t.id IN #{id} - AND t1.tax_agent_id = #{param.taxAgentId} + AND t.tax_agent_id = #{param.taxAgentId} @@ -161,9 +161,9 @@ - AND t1.run_status IN - - #{id} + AND t.run_status IN + + #{runStatus} @@ -177,22 +177,22 @@ FROM - hrsa_salary_archive t1 - LEFT JOIN hrmresource e ON e.id = t1.employee_id + hrsa_salary_archive t + LEFT JOIN hrmresource e ON e.id = t.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 - WHERE t1.delete_type = 0 + WHERE t.delete_type = 0 and e.status not in (7) and (e.accounttype is null or e.accounttype = 0) - AND t1.id IN + AND t.id IN #{id} - AND t1.tax_agent_id = #{param.taxAgentId} + AND t.tax_agent_id = #{param.taxAgentId} AND e.lastname like '%'||#{param.username}||'%' @@ -233,9 +233,9 @@ - AND t1.run_status IN - - #{id} + AND t.run_status IN + + #{runStatus} @@ -250,22 +250,22 @@ FROM - hrsa_salary_archive t1 - LEFT JOIN hrmresource e ON e.id = t1.employee_id + hrsa_salary_archive t + LEFT JOIN hrmresource e ON e.id = t.employee_id LEFT JOIN hrmdepartment d ON d.id = e.departmentid LEFT JOIN hrmsubcompany c ON c.id = e.subcompanyid1 - WHERE t1.delete_type = 0 + WHERE t.delete_type = 0 and e.status not in (7) and (e.accounttype is null or e.accounttype = 0) - AND t1.id IN + AND t.id IN #{id} - AND t1.tax_agent_id = #{param.taxAgentId} + AND t.tax_agent_id = #{param.taxAgentId} AND e.lastname like '%'+#{param.username}+'%' @@ -306,9 +306,9 @@ - AND t1.run_status IN - - #{id} + AND t.run_status IN + + #{runStatus} @@ -471,6 +471,17 @@ AND t.tax_agent_id = #{param.taxAgentId} + + + AND t.run_status = #{runStatus} + + + + AND t.run_status IN + + #{id} + + ORDER BY t.id DESC @@ -518,7 +529,55 @@ run_status='SUSPEND' - WHERE run_status = 'FIXED' and pay_end_date is not null and pay_end_date #{payEndDate} + WHERE run_status = 'FIXED' and pay_end_date is not null and pay_end_date #{payEndDate} + + + + UPDATE hrsa_salary_archive + + run_status='FIXED' + + WHERE run_status = 'PENDING' and pay_start_date is not null + and id IN + + #{id} + + + + + UPDATE hrsa_salary_archive + + run_status='STOP_FROM_SUSPEND' + + WHERE run_status = 'FIXED' and pay_end_date is not null + and id IN + + #{id} + + + + + UPDATE hrsa_salary_archive + + run_status='PENDING' + + WHERE run_status = 'STOP_FROM_PENDING' + and id IN + + #{id} + + + + + UPDATE hrsa_salary_archive + + run_status='FIXED' + + WHERE run_status = 'STOP_FROM_SUSPEND' + and id IN + + #{id} + \ No newline at end of file diff --git a/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.xml b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.xml index 5e17db401..e60de8d10 100644 --- a/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.xml +++ b/src/com/engine/salary/mapper/taxagent/TaxAgentEmpChangeMapper.xml @@ -332,7 +332,6 @@ #{item.employeeName}, #{item.changeType}, #{item.moduleType}, - #{item.operator}, #{item.createTime}, #{item.updateTime}, #{item.creator}, diff --git a/src/com/engine/salary/service/SalaryArchiveItemService.java b/src/com/engine/salary/service/SalaryArchiveItemService.java index ef92c4207..0e1a65887 100644 --- a/src/com/engine/salary/service/SalaryArchiveItemService.java +++ b/src/com/engine/salary/service/SalaryArchiveItemService.java @@ -9,6 +9,7 @@ import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.util.page.PageInfo; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import java.util.Collection; import java.util.List; /** @@ -96,4 +97,15 @@ public interface SalaryArchiveItemService { * @param queryParam */ XSSFWorkbook exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam); + + + /** + * 获取薪资档案对应的当前生效的薪资项目忽略值 + * + * @param salaryArchivesIds + * @param salaryItemIds + * @return + */ + List getCurrentEffectiveItemListIngoreValue(Collection salaryArchivesIds, List salaryItemIds); + } diff --git a/src/com/engine/salary/service/SalaryArchiveService.java b/src/com/engine/salary/service/SalaryArchiveService.java index 9b8a678a2..3e255f2c0 100644 --- a/src/com/engine/salary/service/SalaryArchiveService.java +++ b/src/com/engine/salary/service/SalaryArchiveService.java @@ -171,4 +171,61 @@ public interface SalaryArchiveService { * @return */ Map queryTabTotal(); + + /** + * 设为定薪员工 + * + * @param ids + * @return + */ + Map gotoFixed(Collection ids); + + /** + * 一键全部定薪 + * + * @param queryParam + * @return + */ + Map allGotoFixed(SalaryArchiveQueryParam queryParam); + +// /** +// * 删除待定薪待办 +// * +// * @param ids +// * @return +// */ +// String deletePendingTodo(Collection ids); + + /** + * 停薪 + * + * @param ids + * @return + */ + Map gotoStop(Collection ids); + + /** + * 一键全部停薪 + * + * @param queryParam + * @return + */ + Map allGotoStop(SalaryArchiveQueryParam queryParam); + +// /** +// * 删除待停薪待办 +// * +// * @param ids +// * @return +// */ +// String deleteSuspendTodo(Collection ids); + + /** + * 取消停薪 + * + * @param ids + * @return + */ + String cancelStop(Collection ids); + } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 64b0e02bf..2523c43bf 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -128,8 +128,6 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi } - - // 获取当前已生效数据 List effectiveSalaryItems = getEffectiveSalaryItems(salaryArchiveId, salaryItemIds); @@ -405,4 +403,22 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi return ExcelUtil.genWorkbookV2(rows, sheetName); } + + @Override + public List getCurrentEffectiveItemListIngoreValue(Collection salaryArchivesIds, List salaryItemIds) { + // 没有薪资项目时,给个不存在的,否则加载所有不合理 + salaryItemIds = CollectionUtils.isEmpty(salaryItemIds) ? Collections.singletonList(0L) : salaryItemIds; + // 薪资档案id + List salaryArchiveIds = CollectionUtils.isEmpty(salaryArchivesIds) ? Collections.singletonList(0L) : (List) salaryArchivesIds; + + List salaryArchiveItems = Lists.newArrayList(); + List> partition = Lists.partition(Lists.newArrayList(salaryArchiveIds), 999); + List finalSalaryItemIds = salaryItemIds; + partition.forEach(part -> salaryArchiveItems.addAll(salaryArchiveItemMapper.getEffectiveSalaryItems(SalaryArchiveItemQueryParam.builder() + .salaryArchivesIds(finalSalaryItemIds) + .salaryItemIds(finalSalaryItemIds) + .effectiveTime(new Date()).build()))); + // 解密 + return salaryArchiveItems; + } } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 1428b6029..3e5b0a1f9 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -219,9 +219,9 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe @Transactional(rollbackFor = Exception.class) public void handleSuspendData(Long currentEmployeeId) { List personnelStatuss = new ArrayList() {{ + add("4"); add("5"); add("6"); - add("7"); }}; // 1.定薪员工非在职 @@ -701,7 +701,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe */ private List getSalaryArchiveData(LocalDateRange localDateRange, Collection employeeIds, Long taxAgentId, boolean isOnlyTaxAgent) { // 获取薪资档案数据 - List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().employeeIds(employeeIds).taxAgentId(taxAgentId).build()); + List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().runStatusList(Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue())).employeeIds(employeeIds).taxAgentId(taxAgentId).build()); List allEmployeeIds = salaryArchiveList.stream().map(SalaryArchivePO::getEmployeeId).distinct().collect(Collectors.toList()); // 获取所有可被引用的薪资项目 @@ -1832,6 +1832,14 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe public Map queryTabTotal() { long currentEmployeeId = user.getUID(); + // 1.历史数据处理 + handleHistory(currentEmployeeId); + // 2.待停薪自动处理 + handleSuspendData(currentEmployeeId); + // 3.增量数据处理 + handleChangeData(currentEmployeeId); + + // tab页签数量 Map result = new HashMap<>(); @@ -1885,4 +1893,200 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe result.put(SalaryArchiveListTypeEnum.STOP.getValue(), stopTotal); return result; } + + @Override + public Map gotoFixed(Collection ids) { + if (CollectionUtils.isEmpty(ids)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(145969, "没有可以操作的记录")); + } + + List salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().ids(ids).runStatus(SalaryArchiveStatusEnum.PENDING.getValue()).build()); + + List unableList = salaryArchiveList.stream().filter(f -> f.getPayStartDate() == null).collect(Collectors.toList()); + + int total = ids.size(); + int errorCount = unableList.size(); + // 单个设为定薪的失败提示 + if (total == 1 && errorCount > 0) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(109197, "请先维护起始发薪日期")); + } + + // 从待定薪到定薪 + getSalaryArchiveMapper().gotoFixed(ids); + + // 获取所有可被引用的薪资项目 + List salaryItemIds = getSalaryArchiveItemService(user).getCanAdjustSalaryItems().stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + List currentEffectiveItemList = getSalaryArchiveItemService(user).getCurrentEffectiveItemListIngoreValue(ids, salaryItemIds) + .stream() + .peek(e -> { + Optional salaryArchive = salaryArchiveList.stream().filter(sa -> sa.getId().equals(e.getSalaryArchiveId())).findFirst(); + if (salaryArchive.isPresent()) { + e.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.INIT.getValue()); + e.setEffectiveTime(salaryArchive.get().getPayStartDate()); + } + }).collect(Collectors.toList()); + // 更新薪资项目的生效日期 + List> partition = Lists.partition(currentEffectiveItemList, 100); + partition.forEach(list -> getSalaryArchiveItemMapper().batchUpdate(list)); + + Map resultMap = new HashMap<>(2); + String resultMsg = SalaryI18nUtil.getI18nLabel(94620, "操作成功"); + String resultType = "success"; + // 批量设为定薪提示 + if (total > 1) { + resultMsg = SalaryI18nUtil.getI18nLabel(134807, "成功条数") + ": " + (total - errorCount) + "; " + + SalaryI18nUtil.getI18nLabel(134808, "失败条数") + ": " + (errorCount) + + (errorCount > 0 ? ", " + SalaryI18nUtil.getI18nLabel(109197, "请先维护起始发薪日期") : ""); + resultType = errorCount > 0 ? "info" : resultType; + } + resultMap.put("type", resultType); + resultMap.put("msg", resultMsg); + return resultMap; + } + + @Override + public Map allGotoFixed(SalaryArchiveQueryParam queryParam) { + queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.PENDING.getValue())); + List salaryArchiveIds = this.list(queryParam) + .stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList()); + return this.gotoFixed(salaryArchiveIds); + } + + +// +// @Override +// public String deletePendingTodo(Collection ids) { +// if (CollectionUtils.isEmpty(ids)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 84026, "参数错误")); +// } +// List oldList = new LambdaQueryChainWrapper<>(salaryArchiveMapper) +// .eq(SalaryArchivePO::getDeleteType, 0) +// .eq(SalaryArchivePO::getTenantKey, currentTenantKey) +// .in(SalaryArchivePO::getId, ids) +// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.PENDING.getValue()) +// .list(); +// if (CollectionUtils.isEmpty(oldList)) { +// return StringUtils.EMPTY; +// } +// // 从待定薪到停薪 +// new LambdaUpdateChainWrapper<>(salaryArchiveMapper) +// .eq(SalaryArchivePO::getDeleteType, 0) +// .eq(SalaryArchivePO::getTenantKey, currentTenantKey) +// .in(SalaryArchivePO::getId, ids) +// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.PENDING.getValue()) +// .set(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue()) +// .set(SalaryArchivePO::getModifier, currentEmployeeId) +// .update(); +// // 记录日志 +// List newList = this.listByIds(ids); +// String operatedesc = SalaryI18nUtil.getI18nLabel( 106839, "删除待办"); +// recordLog(oldList, newList, operatedesc, currentTenantKey); +// +// return StringUtils.EMPTY; +// } + + @Override + public Map gotoStop(Collection ids) { + if (CollectionUtils.isEmpty(ids)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(145969, "没有可以操作的记录")); + } + List oldList = getSalaryArchiveMapper() + .listSome(SalaryArchivePO.builder() + .ids(ids) + .runStatus(SalaryArchiveStatusEnum.SUSPEND.getValue()) + .build()); + + List unableList = oldList.stream().filter(f -> f.getPayEndDate() == null).collect(Collectors.toList()); + int total = ids.size(); + int errorCount = unableList.size(); + // 单个设为定薪的失败提示 + if (total == 1 && errorCount > 0) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(109196, "请先维护最后发薪日期")); + } + + // 从待停薪到停薪 + getSalaryArchiveMapper().gotoStop(ids); + + Map resultMap = new HashMap<>(2); + String resultMsg = SalaryI18nUtil.getI18nLabel(94620, "操作成功"); + String resultType = "success"; + // 批量设为定薪提示 + if (total > 1) { + resultMsg = SalaryI18nUtil.getI18nLabel(134807, "成功条数") + ": " + (total - errorCount) + "; " + + SalaryI18nUtil.getI18nLabel(134808, "失败条数") + ": " + (errorCount) + + (errorCount > 0 ? ", " + SalaryI18nUtil.getI18nLabel(109196, "请先维护最后发薪日期") : ""); + resultType = errorCount > 0 ? "info" : resultType; + } + resultMap.put("type", resultType); + resultMap.put("msg", resultMsg); + return resultMap; + } + + @Override + public Map allGotoStop(SalaryArchiveQueryParam queryParam) { + queryParam.setRunStatusList(Arrays.asList(SalaryArchiveStatusEnum.SUSPEND.getValue())); + List salaryArchiveIds = this.list(queryParam) + .stream().map(SalaryArchiveListDTO::getId).collect(Collectors.toList()); + return this.gotoStop(salaryArchiveIds); + } + +// @Override +// public String deleteSuspendTodo(Collection ids) { +// if (org.springframework.util.CollectionUtils.isEmpty(ids)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 84026, "参数错误")); +// } +// List oldList = new LambdaQueryChainWrapper<>(salaryArchiveMapper) +// .eq(SalaryArchivePO::getDeleteType, 0) +// .eq(SalaryArchivePO::getTenantKey, currentTenantKey) +// .in(SalaryArchivePO::getId, ids) +// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.SUSPEND.getValue()) +// .list(); +// List unableList = oldList.stream().filter(f->Objects.nonNull(f.getPayEndDate()) && !f.getPayEndDate().isAfter(LocalDate.now())).collect(Collectors.toList()); +// if (CollectionUtils.isNotEmpty(unableList)) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel( 115789, "最后发薪日必须晚于今天")); +// } +// +// // 从待停薪到定薪 +// new LambdaUpdateChainWrapper<>(salaryArchiveMapper) +// .eq(SalaryArchivePO::getDeleteType, 0) +// .eq(SalaryArchivePO::getTenantKey, currentTenantKey) +// .in(SalaryArchivePO::getId, ids) +// .eq(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.SUSPEND.getValue()) +// .set(SalaryArchivePO::getRunStatus, SalaryArchiveStatusEnum.FIXED.getValue()) +// .set(SalaryArchivePO::getModifier, currentEmployeeId) +// .update(); +// // 记录日志 +// List newList = this.listByIds(ids); +// String operatedesc = SalaryI18nUtil.getI18nLabel( 106839, "删除待办"); +// recordLog(oldList, newList, operatedesc, currentTenantKey); +// +// return StringUtils.EMPTY; +// } + + @Override + public String cancelStop(Collection ids) { + if (org.springframework.util.CollectionUtils.isEmpty(ids)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误")); + } + + List oldList = getSalaryArchiveMapper().listSome( + SalaryArchivePO.builder() + .ids(ids) + .runStatusList(Arrays.asList(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue(), SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue())) + .build()); + + List taxAgentManageRangeEmployees = getTaxAgentService(user).listTaxAgentAndEmployee((long) user.getUID()); + List oldPendingList = oldList.stream().filter(f -> f.getRunStatus().equals(SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())).collect(Collectors.toList()); + boolean isNotExist = oldPendingList.stream().anyMatch(te -> taxAgentManageRangeEmployees.stream().noneMatch(p -> p.getEmployeeId() != null && p.getEmployeeId().equals(te.getEmployeeId()) && p.getTaxAgentId().equals(te.getTaxAgentId()))); + if (isNotExist) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(116196, "不在当前个税扣缴义人的人员范围中,不可取消停薪")); + } + // 从停薪到待定薪 + getSalaryArchiveMapper().gotoPendingFromStop(ids); + // 从停薪到定薪 + getSalaryArchiveMapper().gotoFixedFromStop(ids); + + return StringUtils.EMPTY; + } + } diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index bf58af770..a7d9758e9 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -90,20 +90,27 @@ public class SalaryArchiveController { return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::pendingList, queryParam); } -// -// /** -// * 设为定薪员工 -// * -// * @param ids -// * @return -// */ + + /** + * 设为定薪员工 + * + * @param ids + * @return + */ +// @POST +// @Path("/pendingList") +// @Produces(MediaType.APPLICATION_JSON) +// public String pendingList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam queryParam) { +// User user = HrmUserVarify.getUser(request, response); +// return new ResponseResult>(user).run(getSalaryArchiveWrapper(user)::pendingList, queryParam); +// } // @PostMapping("/gotoFixed") // @ApiOperation("设为定薪员工") // @WeaPermission // public WeaResult> gotoFixed(@RequestBody Collection ids) { // return WeaResult.success(salaryArchiveWrapper.gotoFixed(ids, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); // } -// + // /** // * 一键全部设为定薪员工 // * diff --git a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java index 73371ab7d..bf500e9a8 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveWrapper.java @@ -223,30 +223,26 @@ public class SalaryArchiveWrapper extends Service { return list(queryParam, SalaryArchiveListTypeEnum.STOP); } -// /** -// * 设为定薪员工 -// * -// * @param ids -// * @param currentEmployeeId -// * @param currentTenantKey -// * @return -// */ -// public Map gotoFixed(Collection ids, Long currentEmployeeId, String currentTenantKey) { -// return getSalaryArchiveService(user).gotoFixed(ids, currentEmployeeId, currentTenantKey); -// } -// -// /** -// * 一键全部定薪 -// * -// * @param queryParam -// * @param currentEmployeeId -// * @param currentTenantKey -// * @return -// */ -// public Map allGotoFixed(SalaryArchiveQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) { -// return getSalaryArchiveService(user).allGotoFixed(queryParam, currentEmployeeId, currentTenantKey); -// } -// + /** + * 设为定薪员工 + * + * @param ids + * @return + */ + public Map gotoFixed(Collection ids) { + return getSalaryArchiveService(user).gotoFixed(ids); + } + + /** + * 一键全部定薪 + * + * @param queryParam + * @return + */ + public Map allGotoFixed(SalaryArchiveQueryParam queryParam) { + return getSalaryArchiveService(user).allGotoFixed(queryParam); + } + // /** // * 删除待定薪待办 // *