weaver-hrm-salary/src/com/engine/salary/service/impl/SalaryAcctProgressServiceIm...

90 lines
3.8 KiB
Java

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;
/**
* 核算进度条
* <p>Copyright: Copyright (c) 2022</p>
* <p>Company: 泛微软件</p>
*
* @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;
}
}