|
|
@@ -3,18 +3,12 @@ package com.gz.service.statistics.impl;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUnit;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
-import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.lang.tree.Tree;
|
|
|
import cn.hutool.core.lang.tree.TreeNodeConfig;
|
|
|
import cn.hutool.core.lang.tree.TreeUtil;
|
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
-import cn.hutool.core.util.ReUtil;
|
|
|
-import cn.hutool.core.util.RuntimeUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.gz.common.DataGlobalVariable;
|
|
|
-import com.gz.core.exception.BusinessException;
|
|
|
import com.gz.dto.borrow.ArchiveBorrowDTO;
|
|
|
import com.gz.dto.system.ArchivesTreeDTO;
|
|
|
import com.gz.mapper.borrow.ArchiveBorrowMapper;
|
|
|
@@ -25,16 +19,12 @@ import com.gz.rvo.statistics.ArchiveYearStatisticsRVO;
|
|
|
import com.gz.rvo.statistics.BorrowStatisticsRVO;
|
|
|
import com.gz.service.statistics.SelectStatisticsService;
|
|
|
import com.gz.service.system.ArchivesTreeService;
|
|
|
-import com.gz.service.system.impl.AuthServiceImpl;
|
|
|
import com.gz.utils.JwtUtils;
|
|
|
-import com.gz.utils.UnitUtils;
|
|
|
import com.gz.vo.statistics.StatisticsVO;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.Data;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
import org.mybatis.spring.annotation.MapperScan;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -42,8 +32,6 @@ import org.springframework.util.StringUtils;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.persistence.Id;
|
|
|
-import java.io.File;
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -56,7 +44,6 @@ import java.util.stream.Collectors;
|
|
|
* @author LiuchangLan
|
|
|
* @date 2021/3/8 14:59
|
|
|
*/
|
|
|
-@Slf4j
|
|
|
@Service
|
|
|
public class SelectStatisticsServiceImpl implements SelectStatisticsService {
|
|
|
|
|
|
@@ -72,13 +59,10 @@ public class SelectStatisticsServiceImpl implements SelectStatisticsService {
|
|
|
@Resource
|
|
|
private ArchiveBorrowMapper archiveBorrowMapper;
|
|
|
|
|
|
- @Value("${upload-file.archive-file-root-directory}")
|
|
|
- private String baseDir;
|
|
|
-
|
|
|
@Override
|
|
|
public List<ArchiveStatisticsRVO> selectStatisticsByType(StatisticsVO vo) {
|
|
|
String key = String.format(DataGlobalVariable.CACHE_KEY_FOMAT, this.getClass().getName(), Thread.currentThread().getStackTrace()[1].getMethodName(), JSONObject.toJSONString(vo));
|
|
|
- if (false) {
|
|
|
+ if (stringRedisTemplate.hasKey(key)) {
|
|
|
return JSONArray.parseArray(stringRedisTemplate.opsForValue().get(key), ArchiveStatisticsRVO.class);
|
|
|
} else {
|
|
|
if (vo.getMl() != null) {
|
|
|
@@ -90,59 +74,6 @@ public class SelectStatisticsServiceImpl implements SelectStatisticsService {
|
|
|
}
|
|
|
// 统计结果
|
|
|
List<ArchiveStatisticsRVO> tree = selectStatisticsMapper.selectArchiveStatistics(vo);
|
|
|
- //二级分类集合
|
|
|
- List<String> list = new ArrayList<>();
|
|
|
- List<ArchivesTreeDTO> archivesTreeDTOS = archivesTreeService.selectByOrder();
|
|
|
- archivesTreeDTOS.forEach(dto -> {
|
|
|
- if (dto.getParentId() != -1) {
|
|
|
- for (ArchivesTreeDTO dt : archivesTreeDTOS) {
|
|
|
- if (dto.getParentId().equals(dt.getId())) {
|
|
|
- list.add(dt.getTitle());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- //占用磁盘大小临时存储到map
|
|
|
- Map<String, String> map = new HashMap<>();
|
|
|
- // 档案文件根目录
|
|
|
- File baseDir = FileUtil.file(this.baseDir);
|
|
|
- if (FileUtil.exist(baseDir) && FileUtil.isDirectory(baseDir)) {
|
|
|
- // 全宗号
|
|
|
- for (File qzh : baseDir.listFiles()) {
|
|
|
- if (FileUtil.isDirectory(qzh)) {
|
|
|
- // 年份
|
|
|
- for (File year : qzh.listFiles()) {
|
|
|
- if (ObjectUtil.isNotEmpty(year)) {
|
|
|
- //分类
|
|
|
- for (File category : year.listFiles()) {
|
|
|
- if (ObjectUtil.isNotEmpty(category)) {
|
|
|
- if (list.contains(category.getName())) {
|
|
|
- //二级分类
|
|
|
- for (File category2 : category.listFiles()) {
|
|
|
- if (ObjectUtil.isNotEmpty(category2)) {
|
|
|
- String s1 = UnitUtils.storageUnitConvertStr(this.getLinuxDirectorySize(category));
|
|
|
- map.put(category.getName(), s1);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- String s2 = UnitUtils.storageUnitConvertStr(this.getLinuxDirectorySize(category));
|
|
|
- map.put(category.getName(), s2);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //内存大小赋值
|
|
|
- for (Map.Entry<String, String> entry : map.entrySet()) {
|
|
|
- for (ArchiveStatisticsRVO li : tree) {
|
|
|
- if (li.getTitle().equals(entry.getKey())) {
|
|
|
- li.setSpace(entry.getValue());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //计算总量
|
|
|
tree.forEach(e -> {
|
|
|
if (e.getParentId() == -1) {
|
|
|
for (ArchiveStatisticsRVO node : tree) {
|
|
|
@@ -176,61 +107,11 @@ public class SelectStatisticsServiceImpl implements SelectStatisticsService {
|
|
|
vo.setEndTime(vo.getTime().split(" - ")[1]);
|
|
|
}
|
|
|
List<ArchiveYearStatisticsRVO> archiveYearStatisticsRVOS = selectStatisticsMapper.selectArchiveYearStatistics(vo);
|
|
|
- // 档案文件根目录
|
|
|
- File baseDir = FileUtil.file(this.baseDir);
|
|
|
- log.info("{}{}", baseDir, baseDir.isDirectory());
|
|
|
- if (FileUtil.exist(baseDir) && FileUtil.isDirectory(baseDir)) {
|
|
|
- // 全宗号
|
|
|
- for (File qzh : baseDir.listFiles()) {
|
|
|
- if (FileUtil.isDirectory(qzh)) {
|
|
|
- // 年份
|
|
|
- for (File year : qzh.listFiles()) {
|
|
|
- if (ObjectUtil.isNotEmpty(year)) {
|
|
|
- String linuxDirectorySize = UnitUtils.storageUnitConvertStr(this.getLinuxDirectorySize(year));
|
|
|
- archiveYearStatisticsRVOS.forEach(statisticsRVO -> {
|
|
|
- if (statisticsRVO.getGdnd().equals(year.getName())) {
|
|
|
- statisticsRVO.setSpace(linuxDirectorySize);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(archiveYearStatisticsRVOS), DataGlobalVariable.CACHE_EXPIRES, DataGlobalVariable.TIME_UNIT);
|
|
|
return archiveYearStatisticsRVOS;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * @return 文件夹占用空间大小 单位:字节(K) 1GB = 1024MB = 1024 * 1024 KB = 1024 * 1024 * 1024 B
|
|
|
- * @description 获取Linux文件夹大小
|
|
|
- * @author ZhangHai
|
|
|
- * @since 2021/9/15 11:33
|
|
|
- */
|
|
|
- private Long getLinuxDirectorySize(File file) {
|
|
|
- if (!file.exists()) {
|
|
|
- throw new BusinessException(500, "文件见不存在");
|
|
|
- }
|
|
|
- if (!file.isDirectory()) {
|
|
|
- throw new BusinessException(500, "参数非文件见");
|
|
|
- }
|
|
|
- // 执行命令Format
|
|
|
- final String commandFomat = "du -s {}";
|
|
|
- // 需要执行的命令
|
|
|
- final String command = StrUtil.format(commandFomat, file.getAbsoluteFile());
|
|
|
- log.info("文件夹大小扫描命令执行:{}", command);
|
|
|
- // 执行命令的结果
|
|
|
- String commandResult = RuntimeUtil.execForStr(command);
|
|
|
- // 占用空间大小 String类型
|
|
|
- String sizeStr = commandResult.substring(0, commandResult.indexOf("\t"));
|
|
|
- Long size = 0L;
|
|
|
- if (StrUtil.isNotEmpty(sizeStr)) {
|
|
|
- size = Long.parseLong(sizeStr);
|
|
|
- }
|
|
|
- return size;
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public List<BorrowStatisticsRVO> selectBorrowStatistics(StatisticsVO vo) {
|
|
|
String key = String.format(DataGlobalVariable.CACHE_KEY_FOMAT, this.getClass().getName(), Thread.currentThread().getStackTrace()[1].getMethodName(), JSONObject.toJSONString(vo));
|