diff --git a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java index 876bf0317..8b364c9a9 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctRecordWrapper.java @@ -418,7 +418,7 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord for (int i = 0; i < salaryAcctRecordIds.size(); i++) { Long recordId = salaryAcctRecordIds.get(i); SalaryAcctCalculateParam calculateParam = SalaryAcctCalculateParam.builder().salaryAcctRecordId(recordId).build(); - getSalaryAcctResultWrapper(user).calculate(calculateParam); + getSalaryAcctResultWrapper(user).calculate4Sync(calculateParam); } } @@ -435,7 +435,7 @@ public class SalaryAcctRecordWrapper extends Service implements SalaryAcctRecord }).collect(Collectors.toList()); ids.forEach(salaryAcctRecordId -> { - getSalaryAcctResultWrapper(user).calculate(SalaryAcctCalculateParam.builder().salaryAcctRecordId(salaryAcctRecordId).build()); + getSalaryAcctResultWrapper(user).calculate4Sync(SalaryAcctCalculateParam.builder().salaryAcctRecordId(salaryAcctRecordId).build()); }); return ids; } diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index a7d5abba6..209fa6144 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -260,6 +260,54 @@ public class SalaryAcctResultWrapper extends Service implements SalaryAcctResult } + + public void calculate4Sync(SalaryAcctCalculateParam calculateParam) { + log.info("开始核算V1{}", calculateParam); + + + // 校验是否可以编辑 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(calculateParam.getSalaryAcctRecordId()); + boolean recordIsCanEdit = getSalaryApprovalRuleService(user).getRecordIsCanEdit(salaryAcctRecordPO); + if (!recordIsCanEdit) { + throw new SalaryRunTimeException("该核算记录已经发起审批,无法编辑或核算,请先删除审批流程"); + } + //当前登陆人员 + DataCollectionEmployee simpleEmployee = new DataCollectionEmployee(); + simpleEmployee.setEmployeeId((long) user.getUID()); + // 检查薪资核算人员的个税扣缴义务人 + getSalaryAcctEmployeeWrapper(user).checkTaxAgent(calculateParam.getSalaryAcctRecordId()); + // 检查是否正在核算中 + ProgressDTO salaryAcctProgressDTO = getSalaryAcctProgressService(user).getProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId()); + if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) { + log.warn("正在核算中,无法再次执行"+calculateParam.getSalaryAcctRecordId()); + return; + } + // 初始化进度 + ProgressDTO initProgress = new ProgressDTO() + .setTitle(SalaryI18nUtil.getI18nLabel(97515, "核算中")) + .setTitleLabelId(97515L) + .setTotalQuantity(NumberUtils.INTEGER_ONE) + .setCalculatedQuantity(NumberUtils.INTEGER_ZERO) + .setProgress(BigDecimal.ZERO) + .setStatus(true) + .setMessage(StringUtils.EMPTY); + getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); + // 异步执行薪资核算 +// LocalRunnable localRunnable = new LocalRunnable() { +// @Override +// public void execute() { +// getSalaryAcctResultService(user).calculate(calculateParam, simpleEmployee); +// } +// }; +// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.HRM, "salaryAcctCalculateV1", localRunnable); +// new Thread() { +// public void run() { +// getSalaryAcctResultService(user).calculate(calculateParam, simpleEmployee); +// } +// }.start(); + getSalaryAcctResultService(user).calculate(calculateParam, simpleEmployee); + } + /** * 检查是否有薪资核算结果的查看权限 * @param salaryAcctRecordId