From f2f678c6d11d992df0c4a5ef1bbc05b221ab5007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 29 Apr 2022 17:15:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B8=E7=AE=97=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/web/SalaryProgressController.java | 7 ++ .../engine/salary/cache/SalaryCacheKey.java | 23 +++++ .../engine/salary/cache/SalaryModuleKey.java | 16 ++++ .../service/SalaryAcctProgressService.java | 5 +- .../impl/SalaryAcctCalculateServiceImpl.java | 9 +- .../impl/SalaryAcctProgressServiceImpl.java | 89 +++++++++++++++++++ .../impl/SalaryAcctResultServiceImpl.java | 57 +++++++----- .../salary/web/SalaryProgressController.java | 52 +++++++++++ .../wrapper/SalaryAcctResultWrapper.java | 59 ++++++------ 9 files changed, 265 insertions(+), 52 deletions(-) create mode 100644 src/com/api/salary/web/SalaryProgressController.java create mode 100644 src/com/engine/salary/cache/SalaryCacheKey.java create mode 100644 src/com/engine/salary/cache/SalaryModuleKey.java create mode 100644 src/com/engine/salary/service/impl/SalaryAcctProgressServiceImpl.java create mode 100644 src/com/engine/salary/web/SalaryProgressController.java diff --git a/src/com/api/salary/web/SalaryProgressController.java b/src/com/api/salary/web/SalaryProgressController.java new file mode 100644 index 000000000..c342de99a --- /dev/null +++ b/src/com/api/salary/web/SalaryProgressController.java @@ -0,0 +1,7 @@ +package com.api.salary.web; + +import javax.ws.rs.Path; + +@Path("/bs/hrmsalary/progress") +public class SalaryProgressController extends com.engine.salary.web.SalaryProgressController{ +} diff --git a/src/com/engine/salary/cache/SalaryCacheKey.java b/src/com/engine/salary/cache/SalaryCacheKey.java new file mode 100644 index 000000000..01f0747a9 --- /dev/null +++ b/src/com/engine/salary/cache/SalaryCacheKey.java @@ -0,0 +1,23 @@ +package com.engine.salary.cache; + +/** + * @description: 用于定义本服务内部使用的缓存key + * @author: xiajun + * @modified By: xiajun + * @date: Created in 12/13/21 11:12 AM + * @version:v1.0 + */ +public class SalaryCacheKey { + + + /** + * 核算进度 + */ + public final static String ACCT_PROGRESS = "ACCT_PROGRESS_"; + + /** + * 考勤进度 + */ + public final static String ATTEND_PROGRESS = "ATTEND_PROGRESS_"; + +} diff --git a/src/com/engine/salary/cache/SalaryModuleKey.java b/src/com/engine/salary/cache/SalaryModuleKey.java new file mode 100644 index 000000000..9a400744d --- /dev/null +++ b/src/com/engine/salary/cache/SalaryModuleKey.java @@ -0,0 +1,16 @@ +package com.engine.salary.cache; + +/** + * @description: 用于拷贝定义所有的模块key,按照模块名规范表进行定义,便于开发引用。要求变量名和变量值必须完全保持一致 + * @author: xiajun + * @modified By: xiajun + * @date: Created in 12/13/21 11:24 AM + * @version:v1.0 + */ +public class SalaryModuleKey { + + /** + * 薪酬管理模块表示标识 + */ + public final static String HRM_SALARY_MODULE = "HRM_SALARY_MODULE"; +} diff --git a/src/com/engine/salary/service/SalaryAcctProgressService.java b/src/com/engine/salary/service/SalaryAcctProgressService.java index 6510dfde2..6d9552ffb 100644 --- a/src/com/engine/salary/service/SalaryAcctProgressService.java +++ b/src/com/engine/salary/service/SalaryAcctProgressService.java @@ -18,7 +18,7 @@ public interface SalaryAcctProgressService { * @param salaryAcctProgress * @return */ - String initProgress(String cacheKey, SalaryAcctProgressDTO salaryAcctProgress); + void initProgress(String cacheKey, SalaryAcctProgressDTO salaryAcctProgress); /** * 更新进度条 @@ -54,8 +54,7 @@ public interface SalaryAcctProgressService { * 删除redis中的缓存 * * @param cacheKey - * @param employeeId * @return */ - SalaryAcctProgressDTO del(String cacheKey, Long employeeId); + SalaryAcctProgressDTO del(String cacheKey); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java index e675a8fc7..19f2c6fe9 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctCalculateServiceImpl.java @@ -2,6 +2,7 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.constant.SalaryFormulaFieldConstant; import com.engine.salary.entity.datacollection.AddUpDeduction; @@ -91,7 +92,9 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc return (SalaryAcctResultTempService) ServiceUtil.getService(SalaryAcctResultTempServiceImpl.class, user); } - private SalaryAcctProgressService salaryAcctProgressService; + private SalaryAcctProgressService getSalaryAcctProgressService(User user) { + return (SalaryAcctProgressService) ServiceUtil.getService(SalaryAcctProgressServiceImpl.class, user); + } private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { return (SalaryAcctEmployeeService) ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); @@ -203,8 +206,8 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc // 保存新的薪资核算结果(临时存储) getSalaryAcctResultTempService(user).batchSave(salaryAcctResultTempPOS); // 更新薪资核算进度 -// salaryAcctProgressService.getAndAddCalculatedQty("" + salaryAcctCalculateBO.getSalaryAcctRecordPO().getId(), -// salaryAcctCalculateBO.getSalaryAcctEmployeePOS().size()); + getSalaryAcctProgressService(user).getAndAddCalculatedQty(SalaryCacheKey.ACCT_PROGRESS + salaryAcctCalculateBO.getSalaryAcctRecordPO().getId(), + salaryAcctCalculateBO.getSalaryAcctEmployeePOS().size()); // 记录子线程执行结果 salaryAcctCalculateBO.getResults().add(new SalaryAcctCalculateBO.Result(true, StringUtils.EMPTY)); } catch (Exception e) { diff --git a/src/com/engine/salary/service/impl/SalaryAcctProgressServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctProgressServiceImpl.java new file mode 100644 index 000000000..ca3e9904e --- /dev/null +++ b/src/com/engine/salary/service/impl/SalaryAcctProgressServiceImpl.java @@ -0,0 +1,89 @@ +package com.engine.salary.service.impl; + +import com.cloudstore.dev.api.util.Util_DataCache; +import com.engine.core.impl.Service; +import com.engine.salary.entity.salaryacct.dto.SalaryAcctProgressDTO; +import com.engine.salary.service.SalaryAcctProgressService; +import com.engine.salary.util.JsonUtil; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +/** + * 核算进度条 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalaryAcctProgressServiceImpl extends Service implements SalaryAcctProgressService { + + + @Override + public void initProgress(String cacheKey, SalaryAcctProgressDTO salaryAcctProgress) { + Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(salaryAcctProgress)); + } + + @Override + public synchronized void getAndAddCalculatedQty(String cacheKey, Integer calculatedQuantity) { + String resultStr = (String) Util_DataCache.getObjVal(cacheKey); + if (StringUtils.isNotEmpty(resultStr)) { + SalaryAcctProgressDTO salaryAcctProgress = JsonUtil.parseObject(resultStr, SalaryAcctProgressDTO.class); + if (salaryAcctProgress == null || !salaryAcctProgress.isStatus()) { + return; + } + Integer currentCalculatedQuantity = salaryAcctProgress.getCalculatedQuantity() + calculatedQuantity; + salaryAcctProgress.setCalculatedQuantity( + currentCalculatedQuantity > salaryAcctProgress.getTotalQuantity() ? salaryAcctProgress.getTotalQuantity() : currentCalculatedQuantity); + BigDecimal progress = BigDecimal.valueOf(salaryAcctProgress.getCalculatedQuantity()) + .divide(BigDecimal.valueOf(salaryAcctProgress.getTotalQuantity()), 4, RoundingMode.HALF_DOWN); + salaryAcctProgress.setProgress(progress.compareTo(BigDecimal.ONE) > 0 ? BigDecimal.ONE : progress); + Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(salaryAcctProgress)); + } + } + + @Override + public void fail(String cacheKey, String message) { + SalaryAcctProgressDTO salaryAcctProgress = new SalaryAcctProgressDTO(); + salaryAcctProgress.setStatus(false); + salaryAcctProgress.setMessage(message); + salaryAcctProgress.setCheckStatus(true); + Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(salaryAcctProgress)); + } + + @Override + public void finish(String cacheKey, boolean checkStatus) { + String resultStr = (String) Util_DataCache.getObjVal(cacheKey); + if (StringUtils.isNotEmpty(resultStr)) { + SalaryAcctProgressDTO salaryAcctProgress = JsonUtil.parseObject(resultStr, SalaryAcctProgressDTO.class); + if (salaryAcctProgress == null || !salaryAcctProgress.isStatus()) { + return; + } + salaryAcctProgress.setTitle("核算完成"); + salaryAcctProgress.setCalculatedQuantity(salaryAcctProgress.getTotalQuantity()); + salaryAcctProgress.setProgress(BigDecimal.ONE); + salaryAcctProgress.setCheckStatus(checkStatus); + Util_DataCache.setObjVal(cacheKey, JsonUtil.toJsonString(salaryAcctProgress)); + } + } + + @Override + public SalaryAcctProgressDTO getProgress(String cacheKey) { + String resultStr = (String) Util_DataCache.getObjVal(cacheKey); + if (StringUtils.isEmpty(resultStr)) { + return null; + } + return JsonUtil.parseObject(resultStr, SalaryAcctProgressDTO.class); + } + + @Override + public SalaryAcctProgressDTO del(String cacheKey) { + Util_DataCache.clearVal(cacheKey); + SalaryAcctProgressDTO salaryAcctProgressDTO = new SalaryAcctProgressDTO(); + salaryAcctProgressDTO.setMessage("核算失败"); + salaryAcctProgressDTO.setStatus(false); + return salaryAcctProgressDTO; + } +} diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 87a932320..d58fbe540 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -3,6 +3,7 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.TaxAgentBiz; +import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.common.LocalDateRange; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; @@ -67,42 +68,55 @@ import java.util.stream.Collectors; @Slf4j public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctResultService { - private SalaryAcctResultMapper getSalaryAcctResultMapper(){ + private SalaryAcctResultMapper getSalaryAcctResultMapper() { return MapperProxyFactory.getProxy(SalaryAcctResultMapper.class); } + private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) { return (SalaryAcctEmployeeService) ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } + private SalarySobItemService getSalarySobItemService(User user) { return (SalarySobItemService) ServiceUtil.getService(SalarySobItemServiceImpl.class, user); } + private SalaryItemService getSalaryItemService(User user) { return (SalaryItemService) ServiceUtil.getService(SalaryItemServiceImpl.class, user); } + private SalarySobEmpFieldService getSalarySobEmpFieldService(User user) { return (SalarySobEmpFieldService) ServiceUtil.getService(SalarySobEmpFieldServiceImpl.class, user); } + private SalarySobService getSalarySobService(User user) { return (SalarySobService) ServiceUtil.getService(SalarySobServiceImpl.class, user); } + private SalaryAcctRecordService getSalaryAcctRecordService(User user) { return (SalaryAcctRecordService) ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user); } + private TaxAgentBiz taxAgentService = new TaxAgentBiz(); private SalaryEmployeeService getSalaryEmployeeService(User user) { return (SalaryEmployeeService) ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } + private SalaryFormulaService getSalaryFormulaService(User user) { return (SalaryFormulaService) ServiceUtil.getService(SalaryFormulaServiceImpl.class, user); } + private SalarySobAdjustRuleService getSalarySobAdjustRuleService(User user) { return (SalarySobAdjustRuleService) ServiceUtil.getService(SalarySobAdjustRuleServiceImpl.class, user); } + private SalaryAcctCalculateService getSalaryAcctCalculateService(User user) { return (SalaryAcctCalculateService) ServiceUtil.getService(SalaryAcctCalculateServiceImpl.class, user); } -// private SalaryAcctProgressService salaryAcctProgressService; + + private SalaryAcctProgressService getSalaryAcctProgressService(User user) { + return (SalaryAcctProgressService) ServiceUtil.getService(SalaryAcctProgressServiceImpl.class, user); + } private DataSourceTransactionManager dataSourceTransactionManager; @@ -118,6 +132,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe private AttendQuoteFieldService getAttendQuoteFieldService(User user) { return (AttendQuoteFieldService) ServiceUtil.getService(AttendQuoteFieldServiceImpl.class, user); } + private SalaryCheckResultService salaryCheckResultService; @Override @@ -316,7 +331,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98831, "薪资核算人员不存在或已被删除")); } // 保存参数转换成薪资核算结果po - List salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(saveParam, salaryAcctEmployeePO, (long)user.getUID()); + List salaryAcctResultPOS = SalaryAcctResultBO.convert2PO(saveParam, salaryAcctEmployeePO, (long) user.getUID()); // 删除原来的薪资核算结果 deleteBySalaryAcctEmployeeIds(Collections.singleton(saveParam.getSalaryAcctEmpId())); // 保存薪资核算结果 @@ -417,7 +432,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .setProgress(BigDecimal.ZERO) .setStatus(true) .setMessage(StringUtils.EMPTY); -// salaryAcctProgressService.initProgress("" + calculateParam.getSalaryAcctRecordId(), initProgress, simpleEmployee.getEmployeeId()); + getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); // 12、对薪资核算人员进行拆分 List> partition = Lists.partition(salaryAcctEmployeePOS, 100); // 12.1、监控子线程的任务执行 @@ -461,7 +476,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe .filter(result -> !result.isStatus()) .map(SalaryAcctCalculateBO.Result::getErrMsg) .collect(Collectors.joining("|")); -// salaryAcctProgressService.fail("" + calculateParam.getSalaryAcctRecordId(), errorMsg); + getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), errorMsg); // 删除薪资核算临时存储表中的数据 getSalaryAcctResultTempService(user).deleteByCalculateKey(calculateKey); return; @@ -473,6 +488,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // .setSalaryAcctRecordId(calculateParam.getSalaryAcctRecordId()) // .setIds(calculateParam.getIds()); // salaryCheckResultService.check(salaryAcctCheckParam, true, simpleEmployee); +// Thread.sleep(10); + getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true); // 记录日志 // 查询操作日志的targetName // String targetName = getSalaryAcctRecordService(user).getLogTargetNameById(calculateParam.getSalaryAcctRecordId()); @@ -485,8 +502,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // salaryAcctRecordLoggerTemplate.write(loggerContext); } catch (Exception e) { log.info("薪资核算出错:{}", e.getMessage(), e); - throw new SalaryRunTimeException(e); -// salaryAcctProgressService.fail("" + calculateParam.getSalaryAcctRecordId(), SalaryI18nUtil.getI18nLabel(99642, "薪资核算出错") + ": " + e.getMessage()); +// throw new SalaryRunTimeException(e); + getSalaryAcctProgressService(user).fail(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), SalaryI18nUtil.getI18nLabel(99642, "薪资核算出错") + ": " + e.getMessage()); } finally { // 数据库字段加密用 } @@ -501,19 +518,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe private void handleSalaryAcctResultTemp(SalaryAcctCalculateParam calculateParam, String calculateKey) { // TransactionStatus status = dataSourceTransactionManager.getTransaction(new DefaultTransactionDefinition()); // try { - // 查询薪资核算结果的临时存储 - List salaryAcctResultTempPOS = getSalaryAcctResultTempService(user).listByCalculateKey(calculateKey); - // 删除原来的薪资核算结果 - if (CollectionUtils.isNotEmpty(calculateParam.getIds())) { - getSalaryAcctResultMapper().deleteBySalaryAcctEmpIds(calculateParam.getIds()); - } else { - getSalaryAcctResultMapper().deleteBySalaryAcctRecordIds(Collections.singleton(calculateParam.getSalaryAcctRecordId())); - } - // 保存薪资的薪资核算结果 - List salaryAcctResultPOS = SalaryAcctResultBO.convert2ResultPO(salaryAcctResultTempPOS); - batchSave(salaryAcctResultPOS); - // 删除薪资核算临时存储表中的数据 - getSalaryAcctResultTempService(user).deleteByCalculateKey(calculateKey); + // 查询薪资核算结果的临时存储 + List salaryAcctResultTempPOS = getSalaryAcctResultTempService(user).listByCalculateKey(calculateKey); + // 删除原来的薪资核算结果 + if (CollectionUtils.isNotEmpty(calculateParam.getIds())) { + getSalaryAcctResultMapper().deleteBySalaryAcctEmpIds(calculateParam.getIds()); + } else { + getSalaryAcctResultMapper().deleteBySalaryAcctRecordIds(Collections.singleton(calculateParam.getSalaryAcctRecordId())); + } + // 保存薪资的薪资核算结果 + List salaryAcctResultPOS = SalaryAcctResultBO.convert2ResultPO(salaryAcctResultTempPOS); + batchSave(salaryAcctResultPOS); + // 删除薪资核算临时存储表中的数据 + getSalaryAcctResultTempService(user).deleteByCalculateKey(calculateKey); // // 提交事务 // dataSourceTransactionManager.commit(status); // } catch (Exception e) { diff --git a/src/com/engine/salary/web/SalaryProgressController.java b/src/com/engine/salary/web/SalaryProgressController.java new file mode 100644 index 000000000..d497021e6 --- /dev/null +++ b/src/com/engine/salary/web/SalaryProgressController.java @@ -0,0 +1,52 @@ +package com.engine.salary.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.salaryacct.dto.SalaryAcctProgressDTO; +import com.engine.salary.service.SalaryAcctProgressService; +import com.engine.salary.service.impl.SalaryAcctProgressServiceImpl; +import com.engine.salary.util.ResponseResult; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; + +/** + * 进度条 + *

Copyright: Copyright (c) 2022

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +public class SalaryProgressController { + + private SalaryAcctProgressService getSalaryAcctProgressService(User user) { + return (SalaryAcctProgressService) ServiceUtil.getService(SalaryAcctProgressServiceImpl.class, user); + } + + //获取进度条 + @GET + @Path("/getRate") + @Produces(MediaType.APPLICATION_JSON) + public String getRate(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "cacheKey") String cacheKey) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctProgressService(user)::getProgress, cacheKey); + } + +// @ApiOperation("获取进度条") +// @GetMapping("/getWelfareAccountRate") +// @WeaPermission(publicPermission = true) +// public WeaResult getWelfareAccountRate(@RequestParam String billMonth) { +// Long employeeId = UserContext.getCurrentEmployeeId(); +// String tenantKey = TenantContext.getCurrentTenantKey(); +// SalaryAcctProgressDTO salaryAcctProgressDTO = salaryAcctProgressService.getProgress(tenantKey + billMonth, employeeId, tenantKey); +// return WeaResult.success(salaryAcctProgressDTO); +// } +} diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index b18ca9ac6..d95fc538f 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -3,8 +3,10 @@ package com.engine.salary.wrapper; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; +import com.engine.salary.entity.salaryacct.dto.SalaryAcctProgressDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam; @@ -16,12 +18,15 @@ import com.engine.salary.service.impl.*; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.valid.ValidUtil; +import com.weaver.util.threadPool.ThreadPoolUtil; +import com.weaver.util.threadPool.constant.ModulePoolEnum; +import com.weaver.util.threadPool.entity.LocalRunnable; +import org.apache.commons.lang.math.NumberUtils; +import org.apache.commons.lang3.StringUtils; import weaver.hrm.User; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.math.BigDecimal; +import java.util.*; /** * 薪资核算结果 @@ -48,8 +53,10 @@ public class SalaryAcctResultWrapper extends Service { private SalaryAcctEmployeeWrapper getSalaryAcctEmployeeWrapper(User user) { return (SalaryAcctEmployeeWrapper) ServiceUtil.getService(SalaryAcctEmployeeWrapper.class, user); } - -// private SalaryAcctProgressService salaryAcctProgressService; + + private SalaryAcctProgressService getSalaryAcctProgressService(User user) { + return (SalaryAcctProgressService) ServiceUtil.getService(SalaryAcctProgressServiceImpl.class, user); + } // private SalaryCheckResultService salaryCheckResultService; @@ -158,28 +165,28 @@ public class SalaryAcctResultWrapper extends Service { // 检查薪资核算人员的个税扣缴义务人 getSalaryAcctEmployeeWrapper(user).checkTaxAgent(calculateParam.getSalaryAcctRecordId()); // 检查是否正在核算中 -// SalaryAcctProgressDTO salaryAcctProgressDTO = salaryAcctProgressService.getProgress("" + calculateParam.getSalaryAcctRecordId(), simpleEmployee.getEmployeeId(), tenantKey); -// if (Objects.nonNull(salaryAcctProgressDTO) && salaryAcctProgressDTO.isStatus() && Optional.ofNullable(salaryAcctProgressDTO.getProgress()).orElse(BigDecimal.ZERO).compareTo(BigDecimal.ONE) < 0) { -// return; -// } -// // 初始化进度 -// SalaryAcctProgressDTO initProgress = new SalaryAcctProgressDTO() -// .setTitle(SalaryI18nUtil.getI18nLabel(97515, "核算中")) -// .setTitleLabelId(97515L) -// .setTotalQuantity(NumberUtils.INTEGER_ONE) -// .setCalculatedQuantity(NumberUtils.INTEGER_ZERO) -// .setProgress(BigDecimal.ZERO) -// .setStatus(true) -// .setMessage(StringUtils.EMPTY); -// salaryAcctProgressService.initProgress("" + calculateParam.getSalaryAcctRecordId(), initProgress, simpleEmployee.getEmployeeId(), tenantKey); + SalaryAcctProgressDTO 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) { + return; + } + // 初始化进度 + SalaryAcctProgressDTO initProgress = new SalaryAcctProgressDTO() + .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() { + LocalRunnable localRunnable = new LocalRunnable() { + @Override + public void execute() { getSalaryAcctResultService(user).calculate(calculateParam, simpleEmployee); -// } -// }; -// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "salaryAcctCalculate", localRunnable); + } + }; + ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "salaryAcctCalculate", localRunnable); } /**