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