REQ-3540: 记录kb
This commit is contained in:
parent
df64dcb265
commit
938ab42353
@ -1,9 +1,11 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.api.filedb.response;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.DatabaseType;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import cn.axzo.nanopart.doc.api.enums.DatabaseType;
|
||||
import cn.axzo.nanopart.doc.api.enums.FileDatabaseState;
|
||||
import cn.axzo.nanopart.doc.api.templatedb.domain.TemplateDatabaseInfo;
|
||||
import lombok.Getter;
|
||||
@ -79,7 +81,7 @@ public class FileDatabaseInfoResponse {
|
||||
/**
|
||||
* 已使用的容量, 单位GB
|
||||
*/
|
||||
private Integer usedCapacity;
|
||||
private BigDecimal usedCapacity;
|
||||
|
||||
/**
|
||||
* 资料库信息
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.dao;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
@ -62,10 +63,11 @@ public class FileDatabaseDao extends ServiceImpl<FileDatabaseMapper, FileDatabas
|
||||
.remove();
|
||||
}
|
||||
|
||||
public void updateUsedCapacity(String code, int usedFileSize) {
|
||||
public void updateUsedCapacity(String code, int usedFileSizeKb, BigDecimal usedFileSizeGb) {
|
||||
lambdaUpdate() //
|
||||
.eq(FileDatabase::getCode, code) //
|
||||
.set(FileDatabase::getUsedCapacity, usedFileSize) //
|
||||
.set(FileDatabase::getUsedCapacity, usedFileSizeGb) //
|
||||
.set(FileDatabase::getUsedCapacityKb, usedFileSizeKb) //
|
||||
.update();
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
|
||||
package cn.axzo.nanopart.doc.entity;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@ -76,7 +77,12 @@ public class FileDatabase extends BaseEntity<FileDatabase> implements IndexNodeS
|
||||
/**
|
||||
* 已使用的容量, 单位GB
|
||||
*/
|
||||
private Integer usedCapacity;
|
||||
private BigDecimal usedCapacity;
|
||||
|
||||
/**
|
||||
* 已使用的容量, 单位kb
|
||||
*/
|
||||
private Integer usedCapacityKb;
|
||||
|
||||
public boolean isActivated() {
|
||||
return state == FileDatabaseState.ACTIVATED;
|
||||
|
||||
@ -3,6 +3,8 @@ package cn.axzo.nanopart.doc.file.filedb;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@ -108,7 +110,7 @@ public class FileDatabaseService {
|
||||
if (request.getExpiredDateMs() != null)
|
||||
db.setExpireDate(new Date(request.getExpiredDateMs()));
|
||||
db.setAllowedCapacity(request.getAllowedCapacity());
|
||||
db.setUsedCapacity(0);
|
||||
db.setUsedCapacity(BigDecimal.ZERO);
|
||||
db.setCreateAt(new Date());
|
||||
db.setUpdateAt(new Date());
|
||||
fileDatabaseDao.save(db);
|
||||
@ -173,9 +175,11 @@ public class FileDatabaseService {
|
||||
FileDatabase db = fileDatabaseDao.findForUpdateOrNull(indexNode.scopeCode());
|
||||
if (db == null)
|
||||
return;
|
||||
int usedFileSize = indexQueryService.getUsedFileSize(db);
|
||||
fileDatabaseDao.updateUsedCapacity(db.getCode(), usedFileSize);
|
||||
if (db.isActivated() && db.getAllowedCapacity() <= usedFileSize)
|
||||
int usedFileSizeKb = indexQueryService.getUsedFileSize(db);
|
||||
BigDecimal usedFileSizeGb = BigDecimal.valueOf(usedFileSizeKb) //
|
||||
.divide(BigDecimal.valueOf(1024 * 1024), 2, RoundingMode.HALF_UP);
|
||||
fileDatabaseDao.updateUsedCapacity(db.getCode(), usedFileSizeKb, usedFileSizeGb);
|
||||
if (db.isActivated() && isCapacityExhausted(db.getAllowedCapacity(), usedFileSizeGb))
|
||||
fileDatabaseDao.updateState(db.getCode(), FileDatabaseState.CAPACITY_EXHAUSTED);
|
||||
}
|
||||
|
||||
@ -185,12 +189,16 @@ public class FileDatabaseService {
|
||||
FileDatabase db = fileDatabaseDao.getForUpdateOrThrow(request.getCode());
|
||||
updateCapacity(request) //
|
||||
.set(FileDatabase::getState, //
|
||||
request.getAllowedCapacity() <= db.getUsedCapacity() //
|
||||
isCapacityExhausted(request.getAllowedCapacity(), db.getUsedCapacity()) //
|
||||
? FileDatabaseState.CAPACITY_EXHAUSTED //
|
||||
: FileDatabaseState.ACTIVATED) //
|
||||
.update();
|
||||
}
|
||||
|
||||
private boolean isCapacityExhausted(Integer allowedCapacity, BigDecimal usedCapacity) {
|
||||
return BigDecimal.valueOf(allowedCapacity).compareTo(usedCapacity) <= 0;
|
||||
}
|
||||
|
||||
@BizTransactional
|
||||
public void expandCapacity(FileDatabaseExpandCapacityRequest request) {
|
||||
docLogDao.logRequest("expandCapacity", request.getCode(), request);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user