From 63ee9c9b8e02d72794d79f726aeb3f55fee5a59a Mon Sep 17 00:00:00 2001 From: fcli Date: Wed, 9 Nov 2022 18:57:28 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=80=E9=94=AE=E7=B4=AF=E8=AE=A1?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E6=9C=9F=E4=B8=8E=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/AddUpDeductionService.java | 2 +- .../impl/AddUpDeductionServiceImpl.java | 24 +++++++++++++++++-- .../salary/web/AddUpDeductionController.java | 5 ++-- .../salary/wrapper/AddUpDeductionWrapper.java | 4 ++-- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/com/engine/salary/service/AddUpDeductionService.java b/src/com/engine/salary/service/AddUpDeductionService.java index 4876bf723..d65082de7 100644 --- a/src/com/engine/salary/service/AddUpDeductionService.java +++ b/src/com/engine/salary/service/AddUpDeductionService.java @@ -154,5 +154,5 @@ public interface AddUpDeductionService { * @return void * @author lfc */ - void autoAddAll(Date yearMonth); + String autoAddAll(Date yearMonth); } diff --git a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java index 6f419efbe..5311cd699 100644 --- a/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java +++ b/src/com/engine/salary/service/impl/AddUpDeductionServiceImpl.java @@ -639,7 +639,7 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction } @Override - public void autoAddAll(Date yearMonth) { + public String autoAddAll(Date yearMonth) { int uid = user.getUID(); Boolean isChief = getTaxAgentService(user).isChief((long) uid); Collection taxAgents; @@ -663,7 +663,9 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction } List updateList = new ArrayList<>(); List insertList = new ArrayList<>(); - List errorMessages = new ArrayList<>(); + List errorMessages = new ArrayList<>(); + List accountedEmployeeData = + getAccountedEmployeeData(DateUtil.format(yearMonth, "yyyy-MM")); for (TaxAgentPO taxAgent : taxAgents) { Collection employeeIds = getTaxAgentService(user) .listEmployeeIdsInTaxAgent(taxAgent.getId()); @@ -682,6 +684,15 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction employeePOs.forEach(employeePO -> { Long employeeId = employeePO.getEmployeeId(); + // 如果该员工当前月份已经核算,不做累计 + SalaryAcctEmployeePO anyAccountedEmployee = accountedEmployeeData.stream() + .filter(e -> e.getEmployeeId().equals(employeeId)) + .filter(e -> e.getTaxAgentId().equals(taxAgent.getId())) + .findAny().orElse(null); + if (anyAccountedEmployee != null) { + errorMessages.add(employeeId); + return; + } AddUpDeduction addUpDeduction = Optional.ofNullable(lastEmpInfo.get(employeeId)) .flatMap(list -> list.stream().findFirst()) .orElseGet(AddUpDeduction::new); @@ -713,6 +724,15 @@ public class AddUpDeductionServiceImpl extends Service implements AddUpDeduction .forEach(l -> getAddUpDeductionMapper().insertData((List) l)); Lists.partition(updateList, 100) .forEach(l -> getAddUpDeductionMapper().updateDataAndDeclareMonth((List) l)); + if (!errorMessages.isEmpty()) { + String userNames = getSalaryEmployeeService(user) + .listByIds(errorMessages) + .stream() + .map(DataCollectionEmployee::getUsername) + .collect(Collectors.joining(",")); + return "一键累计完成!员工" + userNames + "在该年月已核算归档,跳过本次累计"; + } + return "一键累计完成!"; } /** diff --git a/src/com/engine/salary/web/AddUpDeductionController.java b/src/com/engine/salary/web/AddUpDeductionController.java index 6cda46630..5d421153e 100644 --- a/src/com/engine/salary/web/AddUpDeductionController.java +++ b/src/com/engine/salary/web/AddUpDeductionController.java @@ -354,12 +354,13 @@ public class AddUpDeductionController { try { date = DateUtil.parse(param.getYearMonth(), "yyyy-MM"); } catch (Exception e) { - //ignore 放在service中处理,这里处理了页面上收不到 + //ignore + // 放在service中处理,这里处理了页面上收不到 } } else { date = DateUtil.beginOfMonth(new Date()); } User user = HrmUserVarify.getUser(request, response); - return new ResponseResult(user).run(getAddUpDeductionWrapper(user)::autoAddAll, date); + return new ResponseResult(user).run(getAddUpDeductionWrapper(user)::autoAddAll, date); } } diff --git a/src/com/engine/salary/wrapper/AddUpDeductionWrapper.java b/src/com/engine/salary/wrapper/AddUpDeductionWrapper.java index 162291cb1..84c45384e 100644 --- a/src/com/engine/salary/wrapper/AddUpDeductionWrapper.java +++ b/src/com/engine/salary/wrapper/AddUpDeductionWrapper.java @@ -170,13 +170,13 @@ public class AddUpDeductionWrapper extends Service { return getAddUpDeductionService(user).getAddUpDeduction(param); } - public void autoAddAll(Date yearMonth) { + public String autoAddAll(Date yearMonth) { if (isLog) { log.info("一键累计, 操作人 「{}」", user.getUsername()); } if (yearMonth == null) { throw new SalaryRunTimeException("一键累计传入日期格式错误"); } - getAddUpDeductionService(user).autoAddAll(yearMonth); + return getAddUpDeductionService(user).autoAddAll(yearMonth); } }