汇通批量核算改为同步

This commit is contained in:
Harryxzy 2025-06-20 09:55:30 +08:00
parent cf3d070892
commit d2663fe4ca
2 changed files with 50 additions and 2 deletions

View File

@ -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;
}

View File

@ -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