Browse Source

档案管理

zhanghai 4 years ago
parent
commit
a7e449b3d0
35 changed files with 485 additions and 27 deletions
  1. 8 0
      pom.xml
  2. 2 0
      src/main/java/com/gz/common/DataGlobalVariable.java
  3. 2 0
      src/main/java/com/gz/controller/archive/ArchiveController.java
  4. 13 0
      src/main/java/com/gz/controller/system/DictController.java
  5. 11 0
      src/main/java/com/gz/dto/system/gdndDTO.java
  6. 4 0
      src/main/java/com/gz/mapper/archive/ArchiveMapper.java
  7. 8 0
      src/main/java/com/gz/mapper/system/DictMapper.java
  8. 2 0
      src/main/java/com/gz/rvo/statistics/ArchiveStatisticsRVO.java
  9. 4 0
      src/main/java/com/gz/rvo/statistics/ArchiveYearStatisticsRVO.java
  10. 5 0
      src/main/java/com/gz/service/archive/impl/ArchiveServiceImpl.java
  11. 120 1
      src/main/java/com/gz/service/statistics/impl/SelectStatisticsServiceImpl.java
  12. 8 0
      src/main/java/com/gz/service/system/AdminService.java
  13. 8 0
      src/main/java/com/gz/service/system/DictService.java
  14. 98 5
      src/main/java/com/gz/service/system/impl/AdminServiceImpl.java
  15. 6 0
      src/main/java/com/gz/service/system/impl/DictServiceImpl.java
  16. 8 1
      src/main/java/com/gz/service/system/impl/RoleServiceImpl.java
  17. 2 0
      src/main/java/com/gz/utils/PasswordUtils.java
  18. 53 0
      src/main/java/com/gz/utils/UnitUtils.java
  19. 3 0
      src/main/java/com/gz/vo/archive/SearchArchiveVO.java
  20. 3 0
      src/main/java/com/gz/vo/system/AdminVO.java
  21. 7 1
      src/main/java/com/gz/vo/system/RoleMenuVO.java
  22. 2 2
      src/main/resources/application-dev.yml
  23. 6 1
      src/main/resources/application-prod.yml
  24. 1 1
      src/main/resources/application.yml
  25. 3 0
      src/main/resources/mapper/adminMapper.xml
  26. 14 0
      src/main/resources/mapper/archiveMapper.xml
  27. 4 0
      src/main/resources/mapper/dictMapper.xml
  28. 2 2
      src/main/resources/static/page/admin/edit.html
  29. 24 0
      src/main/resources/static/page/admin/list.html
  30. 1 1
      src/main/resources/static/page/archive/edit.html
  31. 17 2
      src/main/resources/static/page/archive/list.html
  32. 15 2
      src/main/resources/static/page/borrow/list.html
  33. 19 8
      src/main/resources/static/page/role/editRole.html
  34. 1 0
      src/main/resources/static/page/statistics/archiveStatistics.html
  35. 1 0
      src/main/resources/static/page/statistics/archiveYearStatistics.html

+ 8 - 0
pom.xml

@@ -149,6 +149,11 @@
             <artifactId>bboss-elasticsearch-spring-boot-starter</artifactId>
             <artifactId>bboss-elasticsearch-spring-boot-starter</artifactId>
             <version>${bboss.elasticsearch.version}</version>
             <version>${bboss.elasticsearch.version}</version>
         </dependency>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional>
+        </dependency>
     </dependencies>
     </dependencies>
 
 
     <build>
     <build>
@@ -156,6 +161,9 @@
             <plugin>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <excludeDevtools>false</excludeDevtools>
+                </configuration>
             </plugin>
             </plugin>
 
 
 <!--            <plugin>-->
 <!--            <plugin>-->

+ 2 - 0
src/main/java/com/gz/common/DataGlobalVariable.java

@@ -69,6 +69,8 @@ public class DataGlobalVariable {
     public static final Integer ROLE_TYPE_MIJI = 2;
     public static final Integer ROLE_TYPE_MIJI = 2;
     /** 文档查看权限*/
     /** 文档查看权限*/
     public static final Integer ARCHIVE_SHOW = 3;
     public static final Integer ARCHIVE_SHOW = 3;
+    /** 部门查看权限*/
+    public static final Integer ARCHIVE_DEPT = 4;
 
 
     /** ---------------------消息队列相关 ------------------------*/
     /** ---------------------消息队列相关 ------------------------*/
     public static final String MQ_SEND_SUCCESS = "0";
     public static final String MQ_SEND_SUCCESS = "0";

+ 2 - 0
src/main/java/com/gz/controller/archive/ArchiveController.java

@@ -1,5 +1,6 @@
 package com.gz.controller.archive;
 package com.gz.controller.archive;
 
 
+import cn.hutool.core.util.RuntimeUtil;
 import com.github.pagehelper.PageInfo;
 import com.github.pagehelper.PageInfo;
 import com.gz.dto.archive.ArchiveDTO;
 import com.gz.dto.archive.ArchiveDTO;
 import com.gz.dto.system.ArchivesTreeDTO;
 import com.gz.dto.system.ArchivesTreeDTO;
@@ -8,6 +9,7 @@ import com.gz.service.archive.ArchiveService;
 import com.gz.vo.archive.GenerateDhVO;
 import com.gz.vo.archive.GenerateDhVO;
 import com.gz.vo.archive.InsertArchiveVO;
 import com.gz.vo.archive.InsertArchiveVO;
 import com.gz.vo.archive.SearchArchiveVO;
 import com.gz.vo.archive.SearchArchiveVO;
+import org.apache.poi.hssf.record.DVALRecord;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.MultipartFile;
 
 

+ 13 - 0
src/main/java/com/gz/controller/system/DictController.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.gz.core.annotation.TraceLog;
 import com.gz.core.annotation.TraceLog;
 import com.gz.core.exception.BusinessException;
 import com.gz.core.exception.BusinessException;
 import com.gz.dto.system.DictDTO;
 import com.gz.dto.system.DictDTO;
+import com.gz.dto.system.gdndDTO;
 import com.gz.service.system.DictService;
 import com.gz.service.system.DictService;
 import com.gz.vo.system.DictVO;
 import com.gz.vo.system.DictVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -112,6 +113,18 @@ public class DictController {
         return dictService.selectDictByCode(code);
         return dictService.selectDictByCode(code);
     }
     }
 
 
+    /**
+     * @description 查询所有归档年度
+     * @author zhanghai
+     * @since 2021/9/11
+     */
+    @GetMapping("selectGdnd")
+    List<gdndDTO> selectGdnd(){
+        List<gdndDTO> gdndDTOS = dictService.selectGdnd();
+        System.out.println(gdndDTOS.toString());
+        return gdndDTOS;
+    }
+
     @GetMapping("selectMiJiRole")
     @GetMapping("selectMiJiRole")
     List<Map> selectMiJiRole(Integer roleId){
     List<Map> selectMiJiRole(Integer roleId){
         return dictService.selectMiJiRole(roleId);
         return dictService.selectMiJiRole(roleId);

+ 11 - 0
src/main/java/com/gz/dto/system/gdndDTO.java

@@ -0,0 +1,11 @@
+package com.gz.dto.system;
+
+import lombok.Data;
+
+@Data
+public class gdndDTO {
+    /*
+    归档年度
+     */
+    private String gdnx;
+}

+ 4 - 0
src/main/java/com/gz/mapper/archive/ArchiveMapper.java

@@ -44,4 +44,8 @@ public interface ArchiveMapper extends Mapper<ArchiveDTO> {
     ArchiveDTO selectByRolePrimaryKey(Integer roleId, Object id);
     ArchiveDTO selectByRolePrimaryKey(Integer roleId, Object id);
 
 
     ArchiveRVO selectByPrimaryKeyText(Integer id);
     ArchiveRVO selectByPrimaryKeyText(Integer id);
+
+    Integer getMenuId(@Param("id") Integer id);
+
+    String getDeptId(@Param("id") String id);
 }
 }

+ 8 - 0
src/main/java/com/gz/mapper/system/DictMapper.java

@@ -1,6 +1,7 @@
 package com.gz.mapper.system;
 package com.gz.mapper.system;
 
 
 import com.gz.dto.system.DictDTO;
 import com.gz.dto.system.DictDTO;
+import com.gz.dto.system.gdndDTO;
 import tk.mybatis.mapper.common.Mapper;
 import tk.mybatis.mapper.common.Mapper;
 
 
 import java.util.List;
 import java.util.List;
@@ -17,4 +18,11 @@ public interface DictMapper extends Mapper<DictDTO> {
      * @since 2020/9/27 14:28
      * @since 2020/9/27 14:28
      */
      */
     List<DictDTO> selectDictByCode(String code);
     List<DictDTO> selectDictByCode(String code);
+
+    /**
+     * @description 查询所有归档年度
+     * @author zhanghai
+     * @since 2021/9/11
+     */
+    List<gdndDTO> selectGdnd();
 }
 }

+ 2 - 0
src/main/java/com/gz/rvo/statistics/ArchiveStatisticsRVO.java

@@ -14,4 +14,6 @@ public class ArchiveStatisticsRVO {
     private Integer fileCount;
     private Integer fileCount;
     private Integer id;
     private Integer id;
     private Integer parentId;
     private Integer parentId;
+    //磁盘占用的大小
+    private String space;
 }
 }

+ 4 - 0
src/main/java/com/gz/rvo/statistics/ArchiveYearStatisticsRVO.java

@@ -11,4 +11,8 @@ public class ArchiveYearStatisticsRVO {
     private String gdnd;
     private String gdnd;
     private Integer archiveCount;
     private Integer archiveCount;
     private Integer fileCount;
     private Integer fileCount;
+    //占用磁盘大小
+    private String space;
+
+
 }
 }

+ 5 - 0
src/main/java/com/gz/service/archive/impl/ArchiveServiceImpl.java

@@ -166,6 +166,11 @@ public class ArchiveServiceImpl implements ArchiveService {
             } else {
             } else {
                 // 正常检索
                 // 正常检索
                 searchSql = getSql("com.gz.mapper.archive.ArchiveMapper.searchList", vo);
                 searchSql = getSql("com.gz.mapper.archive.ArchiveMapper.searchList", vo);
+                vo.setDeptId(null);
+                Integer i= mapper.getMenuId(vo.getRoleId());
+                if(i.equals(1)){
+                        vo.setDeptId(JwtUtils.getCurrentUserJwtPayload().getDeptId());
+                }
                 result = new PageInfo<>(mapper.searchList(vo));
                 result = new PageInfo<>(mapper.searchList(vo));
             }
             }
             log.debug("本次检索sql:{}", searchSql);
             log.debug("本次检索sql:{}", searchSql);

+ 120 - 1
src/main/java/com/gz/service/statistics/impl/SelectStatisticsServiceImpl.java

@@ -3,12 +3,18 @@ package com.gz.service.statistics.impl;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 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.Tree;
 import cn.hutool.core.lang.tree.TreeNodeConfig;
 import cn.hutool.core.lang.tree.TreeNodeConfig;
 import cn.hutool.core.lang.tree.TreeUtil;
 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.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.gz.common.DataGlobalVariable;
 import com.gz.common.DataGlobalVariable;
+import com.gz.core.exception.BusinessException;
 import com.gz.dto.borrow.ArchiveBorrowDTO;
 import com.gz.dto.borrow.ArchiveBorrowDTO;
 import com.gz.dto.system.ArchivesTreeDTO;
 import com.gz.dto.system.ArchivesTreeDTO;
 import com.gz.mapper.borrow.ArchiveBorrowMapper;
 import com.gz.mapper.borrow.ArchiveBorrowMapper;
@@ -19,12 +25,16 @@ import com.gz.rvo.statistics.ArchiveYearStatisticsRVO;
 import com.gz.rvo.statistics.BorrowStatisticsRVO;
 import com.gz.rvo.statistics.BorrowStatisticsRVO;
 import com.gz.service.statistics.SelectStatisticsService;
 import com.gz.service.statistics.SelectStatisticsService;
 import com.gz.service.system.ArchivesTreeService;
 import com.gz.service.system.ArchivesTreeService;
+import com.gz.service.system.impl.AuthServiceImpl;
 import com.gz.utils.JwtUtils;
 import com.gz.utils.JwtUtils;
+import com.gz.utils.UnitUtils;
 import com.gz.vo.statistics.StatisticsVO;
 import com.gz.vo.statistics.StatisticsVO;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
 import org.mybatis.spring.annotation.MapperScan;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.beans.factory.annotation.Autowired;
 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.RedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -32,6 +42,8 @@ import org.springframework.util.StringUtils;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.persistence.Id;
 import javax.persistence.Id;
+import java.io.File;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -44,6 +56,7 @@ import java.util.stream.Collectors;
  * @author LiuchangLan
  * @author LiuchangLan
  * @date 2021/3/8 14:59
  * @date 2021/3/8 14:59
  */
  */
+@Slf4j
 @Service
 @Service
 public class SelectStatisticsServiceImpl implements SelectStatisticsService {
 public class SelectStatisticsServiceImpl implements SelectStatisticsService {
 
 
@@ -59,10 +72,13 @@ public class SelectStatisticsServiceImpl implements SelectStatisticsService {
     @Resource
     @Resource
     private ArchiveBorrowMapper archiveBorrowMapper;
     private ArchiveBorrowMapper archiveBorrowMapper;
 
 
+    @Value("${upload-file.archive-file-root-directory}")
+    private String baseDir;
+
     @Override
     @Override
     public List<ArchiveStatisticsRVO> selectStatisticsByType(StatisticsVO vo) {
     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));
         String key = String.format(DataGlobalVariable.CACHE_KEY_FOMAT, this.getClass().getName(), Thread.currentThread().getStackTrace()[1].getMethodName(), JSONObject.toJSONString(vo));
-        if (stringRedisTemplate.hasKey(key)) {
+        if (false) {
             return JSONArray.parseArray(stringRedisTemplate.opsForValue().get(key), ArchiveStatisticsRVO.class);
             return JSONArray.parseArray(stringRedisTemplate.opsForValue().get(key), ArchiveStatisticsRVO.class);
         } else {
         } else {
             if (vo.getMl() != null) {
             if (vo.getMl() != null) {
@@ -74,6 +90,59 @@ public class SelectStatisticsServiceImpl implements SelectStatisticsService {
             }
             }
             // 统计结果
             // 统计结果
             List<ArchiveStatisticsRVO> tree = selectStatisticsMapper.selectArchiveStatistics(vo);
             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 -> {
             tree.forEach(e -> {
                 if (e.getParentId() == -1) {
                 if (e.getParentId() == -1) {
                     for (ArchiveStatisticsRVO node : tree) {
                     for (ArchiveStatisticsRVO node : tree) {
@@ -107,11 +176,61 @@ public class SelectStatisticsServiceImpl implements SelectStatisticsService {
                 vo.setEndTime(vo.getTime().split(" - ")[1]);
                 vo.setEndTime(vo.getTime().split(" - ")[1]);
             }
             }
             List<ArchiveYearStatisticsRVO> archiveYearStatisticsRVOS = selectStatisticsMapper.selectArchiveYearStatistics(vo);
             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);
             stringRedisTemplate.opsForValue().set(key, JSONObject.toJSONString(archiveYearStatisticsRVOS), DataGlobalVariable.CACHE_EXPIRES, DataGlobalVariable.TIME_UNIT);
             return archiveYearStatisticsRVOS;
             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
     @Override
     public List<BorrowStatisticsRVO> selectBorrowStatistics(StatisticsVO vo) {
     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));
         String key = String.format(DataGlobalVariable.CACHE_KEY_FOMAT, this.getClass().getName(), Thread.currentThread().getStackTrace()[1].getMethodName(), JSONObject.toJSONString(vo));

+ 8 - 0
src/main/java/com/gz/service/system/AdminService.java

@@ -6,6 +6,7 @@ import com.gz.rvo.system.AdminRVO;
 import com.gz.vo.system.AdminVO;
 import com.gz.vo.system.AdminVO;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 public interface AdminService {
 public interface AdminService {
 
 
@@ -72,4 +73,11 @@ public interface AdminService {
      */
      */
     AdminRVO selectByPrimaryKeyDept(String id);
     AdminRVO selectByPrimaryKeyDept(String id);
 
 
+    /**
+     * @description 同步用户
+     * @author zhanghai
+     * @since 2021/3/12 13:28
+     */
+    Map<String,Object> synchronize(Map<String, Object> params);
+
 }
 }

+ 8 - 0
src/main/java/com/gz/service/system/DictService.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.gz.controller.system.DictController;
 import com.gz.controller.system.DictController;
 import com.gz.core.exception.BusinessException;
 import com.gz.core.exception.BusinessException;
 import com.gz.dto.system.DictDTO;
 import com.gz.dto.system.DictDTO;
+import com.gz.dto.system.gdndDTO;
 import com.gz.vo.system.DictVO;
 import com.gz.vo.system.DictVO;
 
 
 import java.util.List;
 import java.util.List;
@@ -91,6 +92,13 @@ public interface DictService {
     DictDTO selectByCode(String code);
     DictDTO selectByCode(String code);
 
 
     /**
     /**
+     * @description 查询所有归档年度
+     * @author zhanghai
+     * @since 2021/9/11
+     */
+    List<gdndDTO> selectGdnd();
+
+    /**
      * @description 查询密集权限
      * @description 查询密集权限
      * @author LiuChangLan
      * @author LiuChangLan
      * @since 2021/3/8 17:22
      * @since 2021/3/8 17:22

+ 98 - 5
src/main/java/com/gz/service/system/impl/AdminServiceImpl.java

@@ -1,12 +1,10 @@
 package com.gz.service.system.impl;
 package com.gz.service.system.impl;
 
 
-import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.github.pagehelper.PageInfo;
-import com.gz.common.DataGlobalVariable;
 import com.gz.dto.system.AdminDTO;
 import com.gz.dto.system.AdminDTO;
 import com.gz.dto.system.DeptDTO;
 import com.gz.dto.system.DeptDTO;
 import com.gz.mapper.system.AdminMapper;
 import com.gz.mapper.system.AdminMapper;
@@ -16,17 +14,21 @@ import com.gz.service.system.AdminService;
 import com.gz.utils.JwtUtils;
 import com.gz.utils.JwtUtils;
 import com.gz.utils.PasswordUtils;
 import com.gz.utils.PasswordUtils;
 import com.gz.vo.system.AdminVO;
 import com.gz.vo.system.AdminVO;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-import sun.net.util.IPAddressUtil;
-import tk.mybatis.mapper.entity.Example;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * @author LiuchangLan
  * @author LiuchangLan
  * @date 2020/9/4 14:42
  * @date 2020/9/4 14:42
  */
  */
+@Slf4j
 @Service
 @Service
 public class AdminServiceImpl implements AdminService {
 public class AdminServiceImpl implements AdminService {
 
 
@@ -118,4 +120,95 @@ public class AdminServiceImpl implements AdminService {
     public AdminRVO selectByPrimaryKeyDept(String id) {
     public AdminRVO selectByPrimaryKeyDept(String id) {
         return adminMapper.selectByPrimaryKeyDept(id);
         return adminMapper.selectByPrimaryKeyDept(id);
     }
     }
+
+    @Override
+    @Transactional
+    public Map<String,Object> synchronize(Map<String, Object> params) {
+        try {
+            // 发起同步的用户登录名
+            String loginName = params.get("loginName").toString();
+            // 发起同步时间
+            String syncTime = params.get("syncTime").toString();
+            // 同步内容描述
+            Object syncDesc = params.get("syncDesc");
+            // 同步的部门
+            List<Map<String, Object>> org = new ArrayList<>();
+            List<Map<String, Object>> position = new ArrayList<>();
+            List<Map<String, Object>> user = new ArrayList<>();
+
+            if (params.get("org") != null) {
+                org = (List<Map<String, Object>>) params.get("org");
+            }
+            // 同步的职位
+            if (params.get("position") != null) {
+                position = (List<Map<String, Object>>) params.get("position");
+            }
+            // 同步的用户
+            if (params.get("user") != null) {
+                user = (List<Map<String, Object>>) params.get("user");
+            }
+
+            log.info("用户{}在{}发起了同步,发起了{}条部门信息、{}条职位信息、{}条用户信息", loginName, syncTime, org.size(), position.size(),user.size());
+            log.info("接受到的参数:{}", JSON.toJSON(params));
+            log.info("同步内容描述:{}", syncDesc);
+
+            for (Map<String, Object> map : org) {
+                String id = String.valueOf(map.get("guid"));
+                DeptDTO deptPcDTO = new DeptDTO();
+                deptPcDTO.setDeptName(String.valueOf(map.get("fullName")));
+                deptPcDTO.setId(id);
+                deptPcDTO.setParentId(String.valueOf(map.get("parentGuid")));
+                deptPcDTO.setDeptOrder(Integer.parseInt(String.valueOf(map.get("sortno"))));
+                String state = String.valueOf(map.get("state"));
+                if ("1".equals(state)) {
+                    if (deptMapper.existsWithPrimaryKey(id)) {
+                        deptMapper.updateByPrimaryKeySelective(deptPcDTO);
+                    }else {
+                        deptMapper.insertSelective(deptPcDTO);
+                    }
+                }else if ("4".equals(state)) {
+                    //删除
+                    deptMapper.deleteByPrimaryKey(id);
+                }
+            }
+            for (Map<String, Object> map : user) {
+                AdminDTO adminDTO = new AdminDTO();
+                adminDTO.setId(String.valueOf(map.get("guid") == null ? "" : map.get("guid")));
+                adminDTO.setAdminName(String.valueOf(map.get("userName") == null ? "" : map.get("userName")));
+                adminDTO.setAccount(String.valueOf(map.get("loginName") == null ? "" : map.get("loginName")));
+//                adminDTO.setUserOrder(String.valueOf(map.get("sortno") == null ? "" : map.get("sortno")));
+                adminDTO.setPhone(String.valueOf(map.get("mobilephone") == null ? "" : map.get("mobilephone")));
+//                adminDTO.setShowName(String.valueOf(map.get("positionTitle") == null ? "" : map.get("positionTitle")));
+                String state = String.valueOf(map.get("state") == null ? "" : map.get("state"));
+                //正常
+                if ("1".equals(state)) {
+                    List<String> deptids = (List<String>) map.get("orgGuid");
+                    if (adminMapper.existsWithPrimaryKey(adminDTO.getId())) {
+                        for (String deptid : deptids) {
+                            adminDTO.setDeptId(deptid);
+                            adminMapper.updateByPrimaryKeySelective(adminDTO);
+                        }
+                    }else {
+                        for (String deptid : deptids) {
+                            adminDTO.setDeptId(deptid);
+                            adminMapper.insertSelective(adminDTO);
+                        }
+                    }
+                } else if ("4".equals(state)) {
+                    //删除
+                    adminMapper.deleteByPrimaryKey(adminDTO.getId());
+                }
+            }
+            return new HashMap<String,Object>(){{
+                put("data","成功");
+                put("status","success");
+            }};
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new HashMap<String,Object>(){{
+                put("data",e.getMessage());
+                put("status","success");
+            }};
+        }
+    }
 }
 }

+ 6 - 0
src/main/java/com/gz/service/system/impl/DictServiceImpl.java

@@ -12,6 +12,7 @@ import com.gz.core.exception.BusinessException;
 import com.gz.core.exception.CustomExceptionEnum;
 import com.gz.core.exception.CustomExceptionEnum;
 import com.gz.dto.system.DictDTO;
 import com.gz.dto.system.DictDTO;
 import com.gz.dto.system.MenuRoleDTO;
 import com.gz.dto.system.MenuRoleDTO;
+import com.gz.dto.system.gdndDTO;
 import com.gz.mapper.system.DictMapper;
 import com.gz.mapper.system.DictMapper;
 import com.gz.mapper.system.MenuRoleMapper;
 import com.gz.mapper.system.MenuRoleMapper;
 import com.gz.service.system.DictService;
 import com.gz.service.system.DictService;
@@ -161,6 +162,11 @@ public class DictServiceImpl implements DictService {
         return dictMapper.selectOne(dictDTO);
         return dictMapper.selectOne(dictDTO);
     }
     }
 
 
+    public List<gdndDTO> selectGdnd(){
+        return this.dictMapper.selectGdnd();
+    }
+
+
     @Override
     @Override
     public List<Map> selectMiJiRole(Integer roleId) {
     public List<Map> selectMiJiRole(Integer roleId) {
         List<DictDTO> miji = this.selectDictByCode("MIJI");
         List<DictDTO> miji = this.selectDictByCode("MIJI");

+ 8 - 1
src/main/java/com/gz/service/system/impl/RoleServiceImpl.java

@@ -136,7 +136,14 @@ public class RoleServiceImpl implements RoleService {
                 i = menuRoleMapper.insert(menuRoleDTO);
                 i = menuRoleMapper.insert(menuRoleDTO);
             }
             }
         }
         }
-
+            /** 查看所有部门权限控制  0:不能查看全部功能,1:可查看*/
+            if (vo.getBmqxRole() != null) {
+                MenuRoleDTO menuRoleDTO = new MenuRoleDTO();
+                menuRoleDTO.setRoleId(vo.getRoleId());
+                menuRoleDTO.setMenuId(vo.getBmqxRole());
+                menuRoleDTO.setRoleType(DataGlobalVariable.ARCHIVE_DEPT);
+                i = menuRoleMapper.insert(menuRoleDTO);
+        }
         return i;
         return i;
     }
     }
 
 

+ 2 - 0
src/main/java/com/gz/utils/PasswordUtils.java

@@ -25,5 +25,7 @@ public class PasswordUtils {
 
 
         System.out.println("密码:" + encryption(password,salt));
         System.out.println("密码:" + encryption(password,salt));
         System.out.println("盐" + salt);
         System.out.println("盐" + salt);
+
+        System.out.println(IdUtil.simpleUUID());
     }
     }
 }
 }

+ 53 - 0
src/main/java/com/gz/utils/UnitUtils.java

@@ -0,0 +1,53 @@
+package com.gz.utils;
+
+import cn.hutool.core.util.NumberUtil;
+
+import java.math.BigDecimal;
+
+/**
+ * 单位Utils
+ *
+ * @author LiuChangLan
+ * @since 2021/9/5 0:20
+ */
+public class UnitUtils {
+
+    /**
+     * 1KB
+     */
+    public static final Long KB = 1L * 1024;
+    /**
+     * 1MB
+     */
+    public static final Long MB = KB * 1024;
+    /**
+     * 1GB
+     */
+    public static final Long GB = MB * 1024;
+
+
+    /**
+     * 单位转换
+     *
+     * @author LiuChangLan
+     * @since 2021/9/5 0:28
+     */
+    public static String storageUnitConvertStr(Long byteValue) {
+        String value = "";
+        if (byteValue >= KB && byteValue < MB) {
+            value += NumberUtil.round(byteValue / 1.0 / KB, 2).toString();
+            value += "KB";
+        } else if (byteValue >= MB && byteValue < GB) {
+            value += NumberUtil.round(byteValue / 1.0 / MB, 2).toString();
+            value += "MB";
+        } else if (byteValue >= GB) {
+            value += NumberUtil.round(byteValue / 1.0 / GB, 2).toString();
+            value += "GB";
+        }
+        return value;
+    }
+
+    public static BigDecimal storageUnitConvertMB(Long byteValue) {
+        return NumberUtil.round(byteValue / 1.0 / MB, 2);
+    }
+}

+ 3 - 0
src/main/java/com/gz/vo/archive/SearchArchiveVO.java

@@ -56,6 +56,9 @@ public class SearchArchiveVO extends PageVO {
     // 全文检索
     // 全文检索
     private String allDocument;
     private String allDocument;
 
 
+    // 部门id
+    private String deptId;
+
     public boolean getAgain(){
     public boolean getAgain(){
         return this.again;
         return this.again;
     }
     }

+ 3 - 0
src/main/java/com/gz/vo/system/AdminVO.java

@@ -21,4 +21,7 @@ public class AdminVO extends PageVO {
 
 
     // 部门id
     // 部门id
     private String dept;
     private String dept;
+
+    // 权限id
+    private String roleId;
 }
 }

+ 7 - 1
src/main/java/com/gz/vo/system/RoleMenuVO.java

@@ -8,11 +8,17 @@ import lombok.Data;
  */
  */
 @Data
 @Data
 public class RoleMenuVO {
 public class RoleMenuVO {
-
+    //权限表id
     private Integer roleId;
     private Integer roleId;
+    //菜单表id
     private String menuIds;
     private String menuIds;
+    //密级权限
     private String mjCodes;
     private String mjCodes;
+    //档案树权限
     private String archiveTrees;
     private String archiveTrees;
+    //档案权限
     private String archiveShow;
     private String archiveShow;
+    //部门权限
+    private Integer bmqxRole;
 
 
 }
 }

+ 2 - 2
src/main/resources/application-dev.yml

@@ -43,7 +43,7 @@ spring:
       # 配置 DruidStatViewServlet
       # 配置 DruidStatViewServlet
       stat-view-servlet:
       stat-view-servlet:
         # 开启监控页面
         # 开启监控页面
-        enabled: false
+        enabled: true
         # 页面地址
         # 页面地址
         url-pattern: /druid/*
         url-pattern: /druid/*
         # IP 白名单,没有配置或者为空,则允许所有访问
         # IP 白名单,没有配置或者为空,则允许所有访问
@@ -62,7 +62,7 @@ spring:
     # redis端口
     # redis端口
     port: 6379
     port: 6379
     # redis库
     # redis库
-    database: 1
+    database: 7
     jedis:
     jedis:
       pool:
       pool:
         # 连接池最大连接数(使用负值表示没有限制,对应maxTotal)
         # 连接池最大连接数(使用负值表示没有限制,对应maxTotal)

+ 6 - 1
src/main/resources/application-prod.yml

@@ -117,6 +117,11 @@ spring:
         keystore:
         keystore:
         keyPassword:
         keyPassword:
         hostnameVerifier:
         hostnameVerifier:
+  devtools:
+    restart:
+      enabled: false
+    remote:
+      secret: dsaklfjklasjdfkldsjf
 upload-file:
 upload-file:
   server-file-url-prefix: http://66.1.21.158:9091
   server-file-url-prefix: http://66.1.21.158:9091
   file-root-directory: /data/file
   file-root-directory: /data/file
@@ -125,4 +130,4 @@ logging:
   file:
   file:
     path: /data/logs
     path: /data/logs
 mount-archive:
 mount-archive:
-  scan-base-path: /data/挂档根目录
+  scan-base-path: /data/挂档根目录

+ 1 - 1
src/main/resources/application.yml

@@ -22,7 +22,7 @@ auth:
     # 进行登录验证的地址
     # 进行登录验证的地址
     force-urls: /**
     force-urls: /**
     # 跳过验证地址
     # 跳过验证地址
-    skip-urls: /,/**/*.pdf,/**/*.png,/**/*.jpg,/**/*.html,/**/*.ico,/**/*.css,/**/*.gif,/**/*.js,/webSocket/**,/**/*.woff2,/**/*.less,/system/auth/login,/system/auth/refreshToken,/system/auth/generatePictureCaptcha,/template/*.xlsx,/rabbit/test,/system/auth/loginByBase64
+    skip-urls: /druid/**,/,/**/*.pdf,/**/*.png,/**/*.jpg,/**/*.html,/**/*.ico,/**/*.css,/**/*.gif,/**/*.js,/webSocket/**,/**/*.woff2,/**/*.less,/system/auth/login,/system/auth/refreshToken,/system/auth/generatePictureCaptcha,/template/*.xlsx,/rabbit/test,/system/auth/loginByBase64
 rabbitmq:
 rabbitmq:
   # 数据交换机
   # 数据交换机
   data-exchange: ARCHIVE_DATA_EXCHANGE
   data-exchange: ARCHIVE_DATA_EXCHANGE

+ 3 - 0
src/main/resources/mapper/adminMapper.xml

@@ -27,6 +27,9 @@
             <if test="dept != null and dept != ''">
             <if test="dept != null and dept != ''">
                 and dept_id in (select d.id from tab_dept d where d.id = #{dept} or parent_id = #{dept})
                 and dept_id in (select d.id from tab_dept d where d.id = #{dept} or parent_id = #{dept})
             </if>
             </if>
+            <if test="roleId != null">
+                and role_id = #{roleId}
+            </if>
         </where>
         </where>
     </select>
     </select>
 </mapper>
 </mapper>

+ 14 - 0
src/main/resources/mapper/archiveMapper.xml

@@ -12,6 +12,7 @@
         ON a.mj = d.dict_code
         ON a.mj = d.dict_code
         LEFT JOIN tab_secondary_archive sa
         LEFT JOIN tab_secondary_archive sa
         ON a.id = sa.archive_id
         ON a.id = sa.archive_id
+        LEFT JOIN tab_admin u on u.id = a.created
         <where>
         <where>
             a.deleted = 0
             a.deleted = 0
             and ml IN (
             and ml IN (
@@ -26,6 +27,11 @@
             )
             )
             and mj in (select d.dict_code from tab_dict d left join tab_menu_role mr on d.id = mr.menu_id where
             and mj in (select d.dict_code from tab_dict d left join tab_menu_role mr on d.id = mr.menu_id where
             mr.role_id = #{roleId} and mr.role_type = 2 )
             mr.role_id = #{roleId} and mr.role_type = 2 )
+
+            <if test="deptId!=null and deptId!=''">
+            and u.dept_id = #{deptId}
+            </if>
+
             <if test="dh != null and dh != ''">
             <if test="dh != null and dh != ''">
                 AND a.dh like concat(concat('%',#{dh}),'%')
                 AND a.dh like concat(concat('%',#{dh}),'%')
             </if>
             </if>
@@ -244,4 +250,12 @@
         where a.deleted = 0
         where a.deleted = 0
           and a.dh = #{dh}
           and a.dh = #{dh}
     </select>
     </select>
+
+    <select id="getMenuId" resultType="int">
+        select menu_id from tab_menu_role where role_id = #{id} and role_type = 4
+    </select>
+
+    <select id="getDeptId" resultType="string">
+        select dept_id from tab_admin where id=#{id}
+    </select>
 </mapper>
 </mapper>

+ 4 - 0
src/main/resources/mapper/dictMapper.xml

@@ -5,4 +5,8 @@
     <select id="selectDictByCode" resultType="com.gz.dto.system.DictDTO">
     <select id="selectDictByCode" resultType="com.gz.dto.system.DictDTO">
         select * from tab_dict where parent_id = (select id from tab_dict where dict_code = #{code} and deleted = 0) and deleted = 0
         select * from tab_dict where parent_id = (select id from tab_dict where dict_code = #{code} and deleted = 0) and deleted = 0
     </select>
     </select>
+
+    <select id="selectGdnd" resultType="com.gz.dto.system.gdndDTO">
+        select DISTINCT gdnd AS gdnx from tab_archives;
+    </select>
 </mapper>
 </mapper>

+ 2 - 2
src/main/resources/static/page/admin/edit.html

@@ -39,7 +39,7 @@
     <div class="layui-form-item">
     <div class="layui-form-item">
         <label class="layui-form-label required">部门</label>
         <label class="layui-form-label required">部门</label>
         <div class="layui-input-block">
         <div class="layui-input-block">
-            <input type="text" id="deptId" name="deptId" lay-filter="deptId" class="layui-input">
+            <input type="text" id="deptId" name="deptId" lay-verify="deptId" lay-filter="deptId" class="layui-input">
         </div>
         </div>
     </div>
     </div>
 
 
@@ -179,8 +179,8 @@
         /**事-------------------------------件-------------------------------绑-------------------------------定*/
         /**事-------------------------------件-------------------------------绑-------------------------------定*/
 
 
         initSelect()
         initSelect()
-        initDept()
         initData()
         initData()
+        initDept()
 
 
         //监听提交
         //监听提交
         form.on('submit(saveBtn)', function (data) {
         form.on('submit(saveBtn)', function (data) {

+ 24 - 0
src/main/resources/static/page/admin/list.html

@@ -26,6 +26,17 @@
                             <input type="text" id="account" name="account" lay-filter="account" placeholder="请输入登录名"
                             <input type="text" id="account" name="account" lay-filter="account" placeholder="请输入登录名"
                                    class="layui-input">
                                    class="layui-input">
                         </div>
                         </div>
+
+
+
+                        <div class="layui-inline">
+                                <select name="roleId" id="roleId"  lay-filter="role" placeholder="用户角色"
+                                        class="layui-input">
+                                    <option value="">请选择</option>
+                                </select>
+                        </div>
+
+
                         <div class="layui-inline">
                         <div class="layui-inline">
                             <button id="btnSearch" lay-submit lay-filter="search" class="layui-btn icon-btn"><i
                             <button id="btnSearch" lay-submit lay-filter="search" class="layui-btn icon-btn"><i
                                     class="layui-icon"></i>搜索
                                     class="layui-icon"></i>搜索
@@ -273,9 +284,21 @@
                 layer.close(index);
                 layer.close(index);
             });
             });
         }
         }
+
+        let initSelect = function () {
+            http.get('system/role/selectAllRole', {}, false, function (res) {
+                let html = '';
+                for (let i in res.data) {
+                    html += '<option value="' + res.data[i].id + '">' + res.data[i].roleName + '</option>'
+                }
+                $("#roleId").append(html)
+                form.render();//菜单渲染 把内容加载进去
+            })
+        }
         /**事-------------------------------件-------------------------------绑-------------------------------定*/
         /**事-------------------------------件-------------------------------绑-------------------------------定*/
 
 
         renderTable()
         renderTable()
+        initSelect()
 
 
         //头工具栏事件
         //头工具栏事件
         table.on('toolbar(paper-table)', function (obj) {
         table.on('toolbar(paper-table)', function (obj) {
@@ -307,6 +330,7 @@
         form.on('submit(search)', function (data) {
         form.on('submit(search)', function (data) {
             searchParam.adminName = data.field.adminName
             searchParam.adminName = data.field.adminName
             searchParam.account = data.field.account
             searchParam.account = data.field.account
+            searchParam.roleId=data.field.roleId
             renderTable()
             renderTable()
         })
         })
 
 

+ 1 - 1
src/main/resources/static/page/archive/edit.html

@@ -636,7 +636,7 @@
             }
             }
             if (!bgqxappend) {
             if (!bgqxappend) {
                 let ml = $("#ml").val()
                 let ml = $("#ml").val()
-                debugger
+
                 // 加载保管期限
                 // 加载保管期限
                 http.get('system/dict/selectDictByCode', {code: ml === 'WS' ? 'BAOGUANQIXIANYI' : 'BAOGUANQIXIANER'}, false, function (res) {
                 http.get('system/dict/selectDictByCode', {code: ml === 'WS' ? 'BAOGUANQIXIANYI' : 'BAOGUANQIXIANER'}, false, function (res) {
                     let html = '';
                     let html = '';

+ 17 - 2
src/main/resources/static/page/archive/list.html

@@ -32,8 +32,9 @@
                                class="layui-input">
                                class="layui-input">
                     </div>
                     </div>
                     <div class="layui-inline" style="width: 100px;">
                     <div class="layui-inline" style="width: 100px;">
-                        <input type="text" id="gdnd" name="gdnd" lay-filter="gdnd" placeholder="归档年度"
-                               class="layui-input">
+                        <select name="gdnd" id="gdnd">
+                            <option value="">归档年度</option>
+                        </select>
                     </div>
                     </div>
                     <div class="layui-inline" style="width: 100px;">
                     <div class="layui-inline" style="width: 100px;">
                         <select name="mj" id="mj">
                         <select name="mj" id="mj">
@@ -162,6 +163,19 @@
                 $("#mj").append(html)
                 $("#mj").append(html)
                 form.render();//菜单渲染 把内容加载进去
                 form.render();//菜单渲染 把内容加载进去
             })
             })
+
+
+        }
+
+        let initgdnx = function (){
+            http.get('system/dict/selectGdnd',{},false, function (res) {
+                let html = '';
+                for (let i in res.data) {
+                    html += '<option value="' + res.data[i].gdnx + '">' + res.data[i].gdnx+ '</option>'
+                }
+                $("#gdnd").append(html)
+                form.render();//菜单渲染 把内容加载进去
+            })
         }
         }
 
 
         // 登记
         // 登记
@@ -573,6 +587,7 @@
         initSelect()
         initSelect()
         renderTable()
         renderTable()
         initUpload()
         initUpload()
+        initgdnx()
 
 
 
 
         //表格操作栏
         //表格操作栏

+ 15 - 2
src/main/resources/static/page/borrow/list.html

@@ -28,8 +28,9 @@
                         <input type="text" id="dh" name="dh" lay-filter="dh" placeholder="请输入档号" class="layui-input">
                         <input type="text" id="dh" name="dh" lay-filter="dh" placeholder="请输入档号" class="layui-input">
                     </div>
                     </div>
                     <div class="layui-inline">
                     <div class="layui-inline">
-                        <input type="text" id="gdnd" name="gdnd" lay-filter="gdnd" placeholder="请输入归档年度"
-                               class="layui-input">
+                        <select name="gdnd" id="gdnd">
+                            <option value="">归档年度</option>
+                        </select>
                     </div>
                     </div>
                     <div class="layui-inline">
                     <div class="layui-inline">
                         <select name="mj" id="mj">
                         <select name="mj" id="mj">
@@ -239,6 +240,17 @@
             })
             })
         }
         }
 
 
+        let initgdnx = function (){
+            http.get('system/dict/selectGdnd',{},false, function (res) {
+                let html = '';
+                for (let i in res.data) {
+                    html += '<option value="' + res.data[i].gdnx + '">' + res.data[i].gdnx+ '</option>'
+                }
+                $("#gdnd").append(html)
+                form.render();//菜单渲染 把内容加载进去
+            })
+        }
+
         //数据加载方法
         //数据加载方法
         let renderTable = function () {
         let renderTable = function () {
             searchParam.params = params
             searchParam.params = params
@@ -527,6 +539,7 @@
         initSelect()
         initSelect()
         renderTable()
         renderTable()
         initUpload()
         initUpload()
+        initgdnx()
 
 
 
 
         //表格操作栏
         //表格操作栏

+ 19 - 8
src/main/resources/static/page/role/editRole.html

@@ -19,7 +19,7 @@
 <div class="layuimini-container" style="width: 80%;margin: 0 auto">
 <div class="layuimini-container" style="width: 80%;margin: 0 auto">
     <div class="layui-form layuimini-form" lay-filter="addPaper">
     <div class="layui-form layuimini-form" lay-filter="addPaper">
         <div class="layui-row layui-col-space30">
         <div class="layui-row layui-col-space30">
-            <div class="layui-col-md3">
+            <div class="layui-col-md2">
                 <div class="layui-card">
                 <div class="layui-card">
                     <div class="layui-card-header"><i class="layui-icon layui-icon-menu-fill"></i>菜单权限</div>
                     <div class="layui-card-header"><i class="layui-icon layui-icon-menu-fill"></i>菜单权限</div>
                     <div class="layui-card-body">
                     <div class="layui-card-body">
@@ -27,7 +27,7 @@
                     </div>
                     </div>
                 </div>
                 </div>
             </div>
             </div>
-            <div class="layui-col-md3">
+            <div class="layui-col-md2">
                 <div class="layui-card">
                 <div class="layui-card">
                     <div class="layui-card-header"><i class="layui-icon layui-icon-tree"></i>档案树权限</div>
                     <div class="layui-card-header"><i class="layui-icon layui-icon-tree"></i>档案树权限</div>
                     <div class="layui-card-body">
                     <div class="layui-card-body">
@@ -35,7 +35,7 @@
                     </div>
                     </div>
                 </div>
                 </div>
             </div>
             </div>
-            <div class="layui-col-md3">
+            <div class="layui-col-md2">
                 <div class="layui-card">
                 <div class="layui-card">
                     <div class="layui-card-header"><i class="layui-icon layui-icon-camera"></i>密级权限</div>
                     <div class="layui-card-header"><i class="layui-icon layui-icon-camera"></i>密级权限</div>
                     <div class="layui-card-body">
                     <div class="layui-card-body">
@@ -43,7 +43,7 @@
                     </div>
                     </div>
                 </div>
                 </div>
             </div>
             </div>
-            <div class="layui-col-md3">
+            <div class="layui-col-md2">
                 <div class="layui-card">
                 <div class="layui-card">
                     <div class="layui-card-header"><i class="layui-icon layui-icon-camera"></i>档案权限</div>
                     <div class="layui-card-header"><i class="layui-icon layui-icon-camera"></i>档案权限</div>
                     <div class="layui-card-body">
                     <div class="layui-card-body">
@@ -52,6 +52,16 @@
                 </div>
                 </div>
             </div>
             </div>
 
 
+            <div class="layui-col-md4">
+                <label class="layui-form-label">是否可查看全部门</label>
+                <div class="layui-input-block">
+                    <select  id="bmqx-role" name="interest" lay-filter="aihao">
+                        <option value="1" selected="">否</option>
+                        <option value="0">是</option>
+                    </select>
+                </div>
+            </div>
+
         </div>
         </div>
     </div>
     </div>
 </div>
 </div>
@@ -118,7 +128,6 @@
                 });
                 });
             })
             })
         }
         }
-
         let initArchiveTree = () => {
         let initArchiveTree = () => {
             http.get('system/archivesTree/selectArchiveRole', {roleId: id}, true, function (res) {
             http.get('system/archivesTree/selectArchiveRole', {roleId: id}, true, function (res) {
                 tree.render({
                 tree.render({
@@ -148,14 +157,16 @@
 
 
         //保存方法
         //保存方法
         let save = function () {
         let save = function () {
+            console.log(document.getElementById("bmqx-role").value)
             let data = {
             let data = {
                 roleId: id,
                 roleId: id,
                 menuIds: getChecked_list(tree.getChecked("menu-role")),
                 menuIds: getChecked_list(tree.getChecked("menu-role")),
                 mjCodes: getChecked_list(tree.getChecked("miji-role")),
                 mjCodes: getChecked_list(tree.getChecked("miji-role")),
                 archiveTrees: getChecked_list(tree.getChecked("archive-tree-role")),
                 archiveTrees: getChecked_list(tree.getChecked("archive-tree-role")),
-                archiveShow: getChecked_list(tree.getChecked("archive-role"))
+                archiveShow: getChecked_list(tree.getChecked("archive-role")),
+                bmqxRole:document.getElementById("bmqx-role").value
             }
             }
-            console.log(data)
+            console.log()
             http.post('system/role/setRole', data, true, function (res) {
             http.post('system/role/setRole', data, true, function (res) {
                 if (res.code == 200) {
                 if (res.code == 200) {
                     let index = layer.alert('保存成功!', {
                     let index = layer.alert('保存成功!', {
@@ -178,7 +189,7 @@
 
 
         //监听提交
         //监听提交
         form.on('submit(saveBtn)', function (data) {
         form.on('submit(saveBtn)', function (data) {
-            save(data.field)
+             save(data.field)
         });
         });
 
 
     });
     });

+ 1 - 0
src/main/resources/static/page/statistics/archiveStatistics.html

@@ -92,6 +92,7 @@
                     {field: 'code', title: '编码'},
                     {field: 'code', title: '编码'},
                     {field: 'archiveCount', title: '归档案卷数', totalRow: true},
                     {field: 'archiveCount', title: '归档案卷数', totalRow: true},
                     {field: 'fileCount', title: '归档文件数', totalRow: true},
                     {field: 'fileCount', title: '归档文件数', totalRow: true},
+                    {field: 'space', title: '占用磁盘大小', totalRow: true}
                     // {templet: '#operating', width: 120, align: 'center', title: '操作'}
                     // {templet: '#operating', width: 120, align: 'center', title: '操作'}
                 ]],
                 ]],
                 done: function (res, curr, count) {
                 done: function (res, curr, count) {

+ 1 - 0
src/main/resources/static/page/statistics/archiveYearStatistics.html

@@ -115,6 +115,7 @@
                     {field: 'gdnd', title: '年份', totalRowText: '合计'},
                     {field: 'gdnd', title: '年份', totalRowText: '合计'},
                     {field: 'archiveCount', title: '归档案卷数', totalRow: true},
                     {field: 'archiveCount', title: '归档案卷数', totalRow: true},
                     {field: 'fileCount', title: '归档文件数', totalRow: true},
                     {field: 'fileCount', title: '归档文件数', totalRow: true},
+                    {field: 'space', title: '占用磁盘大小', totalRow: true},
                     // {templet: '#operating', align: 'center', title: '操作', width: 300}
                     // {templet: '#operating', align: 'center', title: '操作', width: 300}
                 ]]
                 ]]
             });
             });