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 - ListCopyright: 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