perf:过程日志改造

This commit is contained in:
曾文豪
2024-08-26 13:20:45 +08:00
parent 1db8ef9d85
commit ecb5aa1b29
19 changed files with 404 additions and 216 deletions

View File

@@ -79,33 +79,24 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
coreLogProcess.setSuccessNum(0);
coreLogProcess.setFailNum(0);
coreLogProcess.setProcess(0);
coreLogProcess.setError("");
coreLogProcess.setParams("");
coreLogProcessMapper.insert(coreLogProcess);
ThreadUtil.execute(() -> {
List<Exception> errorList = new ArrayList<>();
CollUtil.split(list, 100).forEach((it) -> {
int accept = 0;
try {
accept = consumer.accept(it);
} catch (Exception e) {
errorList.add(e);
}
int accept = consumer.batchHandler(it);
coreLogProcess.setProcess(coreLogProcess.getProcess() + it.size());
coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + accept);
coreLogProcess.setFailNum(coreLogProcess.getFailNum() + it.size() - accept);
coreLogProcess.setError(JSON.toJSONString(errorList));
coreLogProcessMapper.updateById(coreLogProcess);
});
// 执行结束
coreLogProcess.setFailFile(consumer.getFailFile());
coreLogProcess.setStatus(1);
coreLogProcess.setError(JSON.toJSONString(errorList));
coreLogProcessMapper.updateById(coreLogProcess);
});
return coreLogProcess;
}
@@ -126,29 +117,24 @@ public class CoreLogService extends TsServiceBase<CoreLogOperationMapper, CoreLo
coreLogProcess.setFailNum(0);
coreLogProcess.setTotal(0);
coreLogProcess.setProcess(0);
coreLogProcess.setError("");
coreLogProcessMapper.insert(coreLogProcess);
ThreadUtil.execute(() -> {
int pageSize = 1000;
int pageNum = 1, lastCount = pageSize;
List<Exception> errorList = new ArrayList<>();
while (lastCount == pageSize) {
try {
lastCount = consumer.accept(pageNum, pageSize);
coreLogProcess.setTotal(coreLogProcess.getTotal() + lastCount);
coreLogProcess.setProcess(coreLogProcess.getTotal());
coreLogProcess.setError(JSON.toJSONString(errorList));
coreLogProcess.setSuccessNum(coreLogProcess.getSuccessNum() + lastCount);
} catch (Exception e) {
errorList.add(e);
} catch (Exception ignored) {
}
coreLogProcessMapper.updateById(coreLogProcess);
pageNum++;
}
// 执行结束
coreLogProcess.setError(JSON.toJSONString(errorList));
coreLogProcess.setStatus(1);
coreLogProcessMapper.updateById(coreLogProcess);
});

View File

@@ -0,0 +1,44 @@
package com.tiesheng.web.service.imex;
import cn.hutool.core.collection.CollUtil;
import com.tiesheng.util.pojos.TokenBean;
import com.tiesheng.web.pojos.imex.ExportDealDTO;
import com.tiesheng.web.pojos.imex.ImportDealDTO;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DefaultImexHandler implements TsImportHandler<String>, TsExportHandler<String> {
@Override
public List<String> ready(ExportDealDTO dto, TokenBean token) {
return CollUtil.newArrayList();
}
@Override
public List<String> ready(ImportDealDTO dto, TokenBean token) {
return CollUtil.newArrayList();
}
@Override
public String getTemplateUrl() {
return "";
}
@Override
public String getAction() {
return "";
}
@Override
public int batchHandler(List<String> list) {
return 0;
}
@Override
public String getFailFile() {
return "";
}
}

View File

@@ -0,0 +1,19 @@
package com.tiesheng.web.service.imex;
import com.tiesheng.util.pojos.TokenBean;
import com.tiesheng.web.pojos.imex.ExportDealDTO;
import java.util.List;
public interface TsExportHandler<T> extends TsImexBase<T> {
/**
* 数据准备中
*
* @return
*/
List<T> ready(ExportDealDTO dto, TokenBean token);
}

View File

@@ -0,0 +1,47 @@
package com.tiesheng.web.service.imex;
import cn.hutool.core.util.StrUtil;
import com.tiesheng.util.exception.ApiException;
import com.tiesheng.util.pojos.TokenBean;
import com.tiesheng.web.util.ProcessImportConsumer;
public interface TsImexBase<T> extends ProcessImportConsumer<T> {
/**
* 动作说明(唯一)
*
* @return
*/
String getAction();
/**
* 排序如果action相同只会使用sort大的来处理
*
* @return
*/
default int getSort() {
return 0;
}
/**
* 验证是否登录
*
* @param tokenBean
*/
default void validToken(TokenBean tokenBean) {
if (tokenBean == null || StrUtil.isEmpty(tokenBean.getId())) {
throw new ApiException("请先登录");
}
}
/**
* 获取模版ID
*
* @return
*/
default String getImexId() {
return StrUtil.format("{}_{}", getAction(), getSort());
}
}

View File

@@ -0,0 +1,27 @@
package com.tiesheng.web.service.imex;
import com.tiesheng.util.pojos.TokenBean;
import com.tiesheng.web.pojos.imex.ImportDealDTO;
import java.util.List;
public interface TsImportHandler<T> extends TsImexBase<T> {
/**
* 读取文件内容
*
* @param dto
* @return
*/
List<T> ready(ImportDealDTO dto, TokenBean token);
/**
* 获取模版地址
*
* @return
*/
String getTemplateUrl();
}