90 lines
3.8 KiB
Java
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;
|
|
}
|
|
}
|