Browse Source

增加全宗号筛选条件

刘嘉伟 3 years ago
parent
commit
67a7612ed1

+ 5 - 18
pom.xml

@@ -149,35 +149,22 @@
             <artifactId>bboss-elasticsearch-spring-boot-starter</artifactId>
             <version>${bboss.elasticsearch.version}</version>
         </dependency>
-        <!--        <dependency>-->
-        <!--            <groupId>org.springframework.boot</groupId>-->
-        <!--            <artifactId>spring-boot-devtools</artifactId>-->
-        <!--            <optional>true</optional>-->
-        <!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>e-iceblue</groupId>-->
-<!--            <artifactId>spire.pdf.free</artifactId>-->
-<!--            <version>3.9.0</version>-->
-<!--        </dependency>-->
         <dependency>
             <groupId>com.itextpdf</groupId>
             <artifactId>itextpdf</artifactId>
             <version>5.5.13</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.apache.pdfbox</groupId>
+            <artifactId>pdfbox</artifactId>
+            <version>2.0.12</version>
+        </dependency>
         <dependency>
             <groupId>com.lowagie</groupId>
             <artifactId>itext</artifactId>
             <version>4.2.1</version>
         </dependency>
     </dependencies>
-    <repositories>
-        <repository>
-            <id>com.e-iceblue</id>
-            <name>e-iceblue</name>
-            <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
-        </repository>
-    </repositories>
     <build>
         <plugins>
             <plugin>

+ 22 - 5
src/main/java/com/gz/config/FileUploadConfig.java

@@ -12,27 +12,44 @@ import org.springframework.context.annotation.Configuration;
 @Configuration
 public class FileUploadConfig {
 
-    /** 文档附件根目录地址*/
+    /**
+     * 文档附件根目录地址
+     */
     public static String ARCHIVE_FILE_ROOT_DIRECTORY;
 
-    /** 附件根目录地址*/
+    /**
+     * 附件根目录地址
+     */
     public static String FILE_ROOT_DIRECTORY;
 
-    /** 附件上传目录 归档年份/全宗号-保管期限(归档年度)-文件格式   文件格式只有 PDF和TF*/
+    /**
+     * 生成的水印文件根目录地址
+     */
+    public static String WATERMARK_ARCHIVE_FILE_ROOT_DIRECTORY;
+
+    /**
+     * 附件上传目录 归档年份/全宗号-保管期限(归档年度)-文件格式   文件格式只有 PDF和TF
+     */
     public static final String ARCHIVE_UPLOAD_PATH_PDF_FOMAT = "/%s/%s-%s(%s)-%s";
 
     public static final String ARCHIVE_UPLOAD_PATH_TIF_FOMAT = "/%s/%s-%s(%s)-%s/%s";
 
     @Value("${upload-file.archive-file-root-directory}")
     public void setArchiveFileRootDirectory(String uploadFileRootDirectory) {
-        log.info("文档附件根目录地址:{}",uploadFileRootDirectory);
+        log.info("文档附件根目录地址:{}", uploadFileRootDirectory);
         ARCHIVE_FILE_ROOT_DIRECTORY = uploadFileRootDirectory;
     }
 
 
     @Value("${upload-file.file-root-directory}")
     public void setFileRootDirectory(String uploadFileRootDirectory) {
-        log.info("其他附件根目录地址:{}",uploadFileRootDirectory);
+        log.info("其他附件根目录地址:{}", uploadFileRootDirectory);
         FILE_ROOT_DIRECTORY = uploadFileRootDirectory;
     }
+
+    @Value("${upload-file.watermark-archive-file-root-directory}")
+    public void setWatermarkArchiveFileRootDirectory(String watermarkArchiveFileRootDirectory) {
+        log.info("其他附件根目录地址:{}", watermarkArchiveFileRootDirectory);
+        WATERMARK_ARCHIVE_FILE_ROOT_DIRECTORY = watermarkArchiveFileRootDirectory;
+    }
 }

+ 0 - 1
src/main/java/com/gz/controller/system/FileController.java

@@ -2,7 +2,6 @@ package com.gz.controller.system;
 
 import com.gz.core.exception.BusinessException;
 import com.gz.dto.system.FileDTO;
-import com.gz.rvo.system.FileUploadRVO;
 import com.gz.service.system.FileService;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;

+ 9 - 0
src/main/java/com/gz/dto/archive/ArchiveDTO.java

@@ -116,4 +116,13 @@ public class ArchiveDTO extends BaseDTO {
 
     // 现地籍号
     private String xdjh;
+
+    // 来源
+    private String ly;
+
+    // 标签
+    private String bq;
+
+    // 行政区划
+    private String xzqh;
 }

+ 48 - 10
src/main/java/com/gz/service/archive/impl/ArchiveFileServiceImpl.java

@@ -1,6 +1,7 @@
 package com.gz.service.archive.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.IdUtil;
 import com.alibaba.fastjson.JSON;
 import com.github.pagehelper.PageHelper;
@@ -15,26 +16,30 @@ import com.gz.dto.system.MenuRoleDTO;
 import com.gz.mapper.archive.ArchiveFileMapper;
 import com.gz.mapper.archive.ArchiveMapper;
 import com.gz.mapper.system.MenuRoleMapper;
+import com.gz.mapper.system.RoleMapper;
 import com.gz.rvo.archive.ArchiveFileRVO;
 import com.gz.rvo.archive.ArchiveRVO;
 import com.gz.service.archive.ArchiveFileService;
+import com.gz.service.system.RoleService;
 import com.gz.utils.JwtUtils;
+import com.gz.utils.WatermarkUtils;
 import com.gz.vo.archive.SearchArchiveFileVO;
 import com.gz.vo.rabbitmq.OcrEtlVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
-import sun.text.resources.cldr.yav.FormatData_yav;
 
 import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.Executable;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * @author LiuchangLan
@@ -55,6 +60,9 @@ public class ArchiveFileServiceImpl implements ArchiveFileService {
     @Resource
     private MenuRoleMapper menuRoleMapper;
 
+    @Resource
+    private RoleService roleService;
+
 
     @Value("${rabbitmq.data-exchange}")
     private String dataExchangeName;
@@ -66,9 +74,11 @@ public class ArchiveFileServiceImpl implements ArchiveFileService {
     private String serverFileUrlPrefix;
 
 
+    ExecutorService archiveWatermarkHandleThreadPool = Executors.newCachedThreadPool();
+
     @Override
     @Transactional
-    public ArchiveFileDTO upload(MultipartFile file, Integer archiveId, Integer fileType,Integer secondaryArchiveId) throws BusinessException, IOException {
+    public ArchiveFileDTO upload(MultipartFile file, Integer archiveId, Integer fileType, Integer secondaryArchiveId) throws BusinessException, IOException {
         if (file.isEmpty()) {
             throw new BusinessException(CustomExceptionEnum.File_NOT_EXISTS);
         }
@@ -87,18 +97,18 @@ public class ArchiveFileServiceImpl implements ArchiveFileService {
             switch (fileFormat) {
                 case "PDF":
 //                serverFileUploadPath = String.format(FileUploadConfig.ARCHIVE_UPLOAD_PATH_PDF_FOMAT, archiveDTO.getGdnd(), archiveDTO.getQzh(), archiveDTO.getBgqx(), archiveDTO.getGdnd(), fileFormat);
-                    serverFileUploadPath = "/" + archiveDTO.getQzh() + "/" + archiveDTO.getGdnd() + "/" + archiveDTO.getMl() + "/" + archiveDTO.getBgqx() + "/" + archiveDTO.getDh() + "/pdf";
+                    serverFileUploadPath = "/" + archiveDTO.getQzh() + "/" + archiveDTO.getGdnd() + "/" + archiveDTO.getMl() + "/" + archiveDTO.getBgqx() + "/" + archiveDTO.getDh() + "/pdf/";
                     // pdf文件名为档号
-                    if (secondaryArchiveId != null){
-                        fn = String.format("%s_%s.%s", archiveDTO.getDh(),secondaryArchiveId, fileFormat.toLowerCase());
-                    }else {
+                    if (secondaryArchiveId != null) {
+                        fn = String.format("%s_%s.%s", archiveDTO.getDh(), secondaryArchiveId, fileFormat.toLowerCase());
+                    } else {
                         fn = String.format("%s.%s", archiveDTO.getDh(), fileFormat.toLowerCase());
                     }
                     break;
                 case "TIF":
                     // tif文件名为页码 无法通过后台生成 读取上传文件的名称
                     fn = fileName;
-                    serverFileUploadPath = "/" + archiveDTO.getQzh() + "/" + archiveDTO.getGdnd() + "/" + archiveDTO.getMl() + "/" + archiveDTO.getBgqx() + "/" + archiveDTO.getDh() + "/tif";
+                    serverFileUploadPath = "/" + archiveDTO.getQzh() + "/" + archiveDTO.getGdnd() + "/" + archiveDTO.getMl() + "/" + archiveDTO.getBgqx() + "/" + archiveDTO.getDh() + "/tif/";
                     break;
                 default:
                     // 其他文件直接抛错
@@ -106,7 +116,7 @@ public class ArchiveFileServiceImpl implements ArchiveFileService {
             }
         } else {
             // 附件
-            serverFileUploadPath = "/" + archiveDTO.getQzh() + "/" + archiveDTO.getGdnd() + "/" + archiveDTO.getMl() + "/" + archiveDTO.getBgqx() + "/" + archiveDTO.getDh() + "/other";
+            serverFileUploadPath = "/" + archiveDTO.getQzh() + "/" + archiveDTO.getGdnd() + "/" + archiveDTO.getMl() + "/" + archiveDTO.getBgqx() + "/" + archiveDTO.getDh() + "/other/";
             fn = String.format("%s.%s", IdUtil.simpleUUID(), fileFormat.toLowerCase());
         }
 
@@ -174,6 +184,34 @@ public class ArchiveFileServiceImpl implements ArchiveFileService {
         if (menuRoleMapper.select(param).stream().filter(i -> i.getMenuId() == 2).count() <= 0) {
             throw new BusinessException(CustomExceptionEnum.NO_ROLE);
         }
-        return archiveFileMapper.selectFileAndJnml(vo);
+        List<ArchiveFileRVO> archiveFileRVOS = archiveFileMapper.selectFileAndJnml(vo);
+        // 是否需要水印
+        if (roleService.selectArchiveRole(JwtUtils.getCurrentUserJwtPayload().getRoleId(), 3)) {
+            archiveFileRVOS.forEach(this::converHasWatermarkPdf);
+        }
+
+        return archiveFileRVOS;
+    }
+
+    public void converHasWatermarkPdf(ArchiveFileDTO sourceFile) {
+        // 需要生成水印的pdf文件
+        String sourcePdfFile = FileUploadConfig.ARCHIVE_FILE_ROOT_DIRECTORY + sourceFile.getFilePath() + sourceFile.getFileName();
+        // 水印生成位置文件
+        String watermarkFilePathStr = FileUploadConfig.WATERMARK_ARCHIVE_FILE_ROOT_DIRECTORY + "/"
+                + JwtUtils.getCurrentUserJwtPayload().getId()
+                + sourceFile.getFilePath();
+        File watermarkFilePath = FileUtil.file(watermarkFilePathStr);
+        if (!watermarkFilePath.exists()) {
+            // 目录不存在,创建目录
+            watermarkFilePath.mkdirs();
+        }
+        // 水印文件夹不存在生成水印后的文件
+        if (!FileUtil.file(watermarkFilePath + sourceFile.getFileName()).exists()) {
+            String adminName = JwtUtils.getCurrentUserJwtPayload().getAdminName();
+            // 使用线程池后台进行生成 不影响正常响应速度
+//            archiveWatermarkHandleThreadPool.execute(() -> WatermarkUtils.generateWatermarkPdf(sourcePdfFile, watermarkFilePathStr + sourceFile.getFileName(), adminName));
+            WatermarkUtils.generateWatermarkPdf(sourcePdfFile, watermarkFilePathStr + sourceFile.getFileName(), adminName);
+        }
+        sourceFile.setFilePath(JwtUtils.getCurrentUserJwtPayload().getId() + sourceFile.getFilePath());
     }
 }

+ 6 - 1
src/main/java/com/gz/service/archive/impl/ArchiveServiceImpl.java

@@ -19,11 +19,13 @@ import com.gz.dto.system.ArchivesTreeDTO;
 import com.gz.dto.system.MenuRoleDTO;
 import com.gz.mapper.archive.ArchiveMapper;
 import com.gz.mapper.archive.SecondaryArchiveMapper;
+import com.gz.mapper.system.DeptMapper;
 import com.gz.mapper.system.MenuRoleMapper;
 import com.gz.rvo.archive.ArchiveRVO;
 import com.gz.rvo.borrow.ArchiveBorrowListRVO;
 import com.gz.service.archive.ArchiveService;
 import com.gz.service.system.ArchivesTreeService;
+import com.gz.service.system.DeptService;
 import com.gz.utils.ExcelUtils;
 import com.gz.utils.JwtUtils;
 import com.gz.utils.ObjectUtils;
@@ -85,10 +87,13 @@ public class ArchiveServiceImpl implements ArchiveService {
     @Resource
     private MenuRoleMapper menuRoleMapper;
 
+    @Resource
+    private DeptMapper deptMapper;
 
     @Override
     public Integer insert(InsertArchiveVO vo) throws Exception {
         vo.setCreated(JwtUtils.getCurrentUserJwtPayload().getId());
+        vo.setLy(JwtUtils.getCurrentUserJwtPayload().getDeptId());
         return mapper.insertSelective(vo);
     }
 
@@ -267,7 +272,7 @@ public class ArchiveServiceImpl implements ArchiveService {
             case "KU":
                 return String.format(DataGlobalVariable.KU_DH_FOMAT, vo.getQzh(), vo.getMlh(), vo.getGdnd(), vo.getHsdwdh(), vo.getBgqx(), jh);
             case "KJ":
-                return String.format(DataGlobalVariable.KJ_DH_FOMAT, vo.getQzh(), vo.getMlh(), vo.getMl(), vo.getBgqx(), vo.getXmdh(), jh);
+                return String.format(DataGlobalVariable.KJ_DH_FOMAT, vo.getQzh(), vo.getMlh(), vo.getSl(), vo.getBgqx(), vo.getXmdh(), jh);
             case "ZY":
                 return String.format(DataGlobalVariable.ZY_DH_FOMAT, vo.getQzh(), vo.getMlh(), vo.getMl(), vo.getBgqx(), jh);
             case "YX":

+ 1 - 0
src/main/java/com/gz/service/system/FileService.java

@@ -4,6 +4,7 @@ import com.gz.dto.system.FileDTO;
 import com.gz.rvo.system.FileUploadRVO;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.io.IOException;
 
 public interface FileService {

+ 10 - 0
src/main/java/com/gz/service/system/RoleService.java

@@ -75,4 +75,14 @@ public interface RoleService {
      */
     List<JSONObject> selectShowArchive(Integer roleId);
 
+    /**
+     * 查看权限是否需要生成水印
+     *
+     * @param roleId    权限id
+     * @param roleLabel 权限标识 1:详情 2:文件 3:水印 4:下载
+     * @author LiuChangLan
+     * @since 2022/2/24 17:32
+     */
+    Boolean selectArchiveRole(Integer roleId, Integer roleLabel);
+
 }

+ 7 - 0
src/main/java/com/gz/service/system/impl/FileServiceImpl.java

@@ -1,15 +1,20 @@
 package com.gz.service.system.impl;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.IdUtil;
 import com.gz.config.FileUploadConfig;
 import com.gz.core.exception.BusinessException;
 import com.gz.core.exception.CustomExceptionEnum;
+import com.gz.dto.system.ArchiveFileDTO;
 import com.gz.dto.system.FileDTO;
 import com.gz.mapper.system.FileMapper;
 import com.gz.rvo.system.FileUploadRVO;
 import com.gz.service.system.FileService;
+import com.gz.utils.JwtUtils;
+import com.gz.utils.WatermarkUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.http.fileupload.FileUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -71,4 +76,6 @@ public class FileServiceImpl implements FileService {
         log.info("文件上传完成,原文件名[{}],服务器地址[{}],现在文件名[{}]", fileName, serverFilePath, serverFileName);
         return fileDTO;
     }
+
+
 }

+ 18 - 7
src/main/java/com/gz/service/system/impl/RoleServiceImpl.java

@@ -136,13 +136,13 @@ public class RoleServiceImpl implements RoleService {
                 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);
+        /** 查看所有部门权限控制  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;
     }
@@ -200,6 +200,8 @@ public class RoleServiceImpl implements RoleService {
         List<JSONObject> result = new ArrayList<>();
         result.add(new JSONObject().put("title", "详情").put("id", 1));
         result.add(new JSONObject().put("title", "文件").put("id", 2));
+        result.add(new JSONObject().put("title", "水印").put("id", 3));
+        result.add(new JSONObject().put("title", "下载").put("id", 4));
         MenuRoleDTO menuRoleDTO = new MenuRoleDTO();
         menuRoleDTO.setRoleType(DataGlobalVariable.ARCHIVE_SHOW);
         menuRoleDTO.setRoleId(roleId);
@@ -216,4 +218,13 @@ public class RoleServiceImpl implements RoleService {
 
         return result;
     }
+
+    @Override
+    public Boolean selectArchiveRole(Integer roleId,Integer roleLabel) {
+        MenuRoleDTO menuRoleDTO = new MenuRoleDTO();
+        menuRoleDTO.setRoleId(roleId);
+        menuRoleDTO.setRoleType(DataGlobalVariable.ARCHIVE_SHOW);
+        menuRoleDTO.setMenuId(roleLabel);
+        return menuRoleMapper.selectCount(menuRoleDTO) > 0;
+    }
 }

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

@@ -121,6 +121,7 @@ upload-file:
   server-file-url-prefix: http://examdasfda.cn.utools.club
   file-root-directory: E:\cache
   archive-file-root-directory: E:\cache\archive
+  watermark-archive-file-root-directory: /data/file/watermark_archive_file
 #logging:
 #  file:
 #    path: D:\logs\guihua_archive

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

@@ -2,7 +2,7 @@ server:
   port: 9091
 spring:
   resources:
-    static-locations: classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources,file:${upload-file.file-root-directory},file:${upload-file.archive-file-root-directory}
+    static-locations: classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources,file:${upload-file.file-root-directory},file:${upload-file.archive-file-root-directory},file:${upload-file.watermark-archive-file-root-directory}
   # 数据源配置
   datasource:
     # 连接池类型
@@ -126,6 +126,7 @@ upload-file:
   server-file-url-prefix: http://66.1.21.158:9091
   file-root-directory: /data/file
   archive-file-root-directory: /data/file/archive_file
+  watermark-archive-file-root-directory: /data/file/watermark_archive_file
 logging:
   file:
     path: /data/logs

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

@@ -22,7 +22,7 @@ auth:
     # 进行登录验证的地址
     force-urls: /**
     # 跳过验证地址
-    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,/system/admin/synchronize
+    skip-urls: /druid/**,/,/reader/**,/**/*.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,/system/admin/synchronize
 rabbitmq:
   # 数据交换机
   data-exchange: ARCHIVE_DATA_EXCHANGE

File diff suppressed because it is too large
+ 8 - 0
src/main/resources/static/js/lay-module/utils/base64.min.js


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

@@ -289,10 +289,6 @@
         let fileType = urlParam.fileType
         let curr = 1;
 
-
-        let isAddhsdw = false;
-        let isAddxmdh = false;
-
         let sl = '';
         let ml = '';
 
@@ -347,6 +343,19 @@
 
         }
 
+
+        let loadBgqx = ml => {
+            http.get('system/dict/selectDictByCode', {code: ml === 'WS' ? 'BAOGUANQIXIANYI' : 'BAOGUANQIXIANER'}, false, function (res) {
+                let html = '';
+                for (let i in res.data) {
+                    html += '<option value="' + res.data[i].dictCode + '">' + res.data[i].dictName + '</option>'
+                }
+                $("#bgqx").empty()
+                $("#bgqx").append(html)
+                form.render();//菜单渲染 把内容加载进去
+            })
+        }
+
         let initUpload = function () {
             let fileList = $('#file-list')
             let uploadListIns = upload.render({
@@ -487,7 +496,8 @@
                     sl = d.current.code
 
                     getJh()
-                    let jhLable = '';
+                    loadBgqx(code)
+                    let jhLable = ''
                     switch (code) {
                         case 'SJ':
                         case 'MT':
@@ -516,17 +526,16 @@
 
                     switch (code) {
                         case 'KU':
-                            if (!isAddhsdw) {
+                            if (!$("#hsdwdh_label")[0]) {
                                 html += ' <label class="layui-form-label required" id="hsdwdh_label">核算单位代号:</label>\n' +
                                     '        <div class="layui-input-inline" style="width: 540px;" id="hsdwdh_input">\n' +
                                     '            <input type="text" class="layui-input" name="hsdwdh" id="hsdwdh" placeholder="请输入核算单位代号" lay-filter="hsdwdh"\n' +
                                     '                   lay-verify="required" lay-reqtext="核算单位代号不能为空">\n' +
                                     '        </div>'
-                                isAddhsdw = !isAddhsdw
                             }
                             break;
                         case 'KJ':
-                            if (!isAddxmdh) {
+                            if (!$("#xmdh_label")[0]) {
                                 html += '<label class="layui-form-label required" id="xmdh_label" >项目代号:</label>\n' +
                                     '        <div class="layui-input-inline" style="width: 540px;" id="xmdh_input" >\n' +
                                     '            <input type="text" class="layui-input" name="xmdh" id="xmdh" placeholder="请输入项目代号" lay-filter="xmldh"\n' +
@@ -534,6 +543,15 @@
                                     '        </div>'
                             }
                             break;
+                        default :
+                            if ($("#xmdh_label")[0]) {
+                                $("#xmdh_label").remove()
+                                $("#xmdh_input").remove()
+                            }
+                            if ($("#hsdwdh_label")[0]) {
+                                $("#hsdwdh_label").remove()
+                                $("#hsdwdh_input").remove()
+                            }
                     }
                     $('#hide_div').append(html)
 
@@ -637,16 +655,17 @@
             }
             if (!bgqxappend) {
                 let ml = $("#ml").val()
-
-                // 加载保管期限
-                http.get('system/dict/selectDictByCode', {code: ml === 'WS' ? 'BAOGUANQIXIANYI' : 'BAOGUANQIXIANER'}, false, function (res) {
-                    let html = '';
-                    for (let i in res.data) {
-                        html += '<option value="' + res.data[i].dictCode + '">' + res.data[i].dictName + '</option>'
-                    }
-                    $("#bgqx").append(html)
-                    form.render();//菜单渲染 把内容加载进去
-                })
+                loadBgqx(ml)
+
+                // // 加载保管期限
+                // http.get('system/dict/selectDictByCode', {code: ml === 'WS' ? 'BAOGUANQIXIANYI' : 'BAOGUANQIXIANER'}, false, function (res) {
+                //     let html = '';
+                //     for (let i in res.data) {
+                //         html += '<option value="' + res.data[i].dictCode + '">' + res.data[i].dictName + '</option>'
+                //     }
+                //     $("#bgqx").append(html)
+                //     form.render();//菜单渲染 把内容加载进去
+                // })
                 bgqxappend = !bgqxappend
             }
             form.val("addDict", adata);

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

@@ -56,7 +56,7 @@
 
             //保存方法
         let save = function (data) {
-                http.post(urlParam.id == '' ? 'system/role/insert' : 'system/role/update', data, true, function (res) {
+                http.post(urlParam.id ? 'system/role/insert' : 'system/role/update', data, true, function (res) {
                     if (res.code == 200) {
                         let index = layer.alert('保存成功!', {
                             title: urlParam.id == '' ? '添加' : '修改' + '信息'
@@ -72,7 +72,7 @@
 
         // 加载数据
         let initData = function () {
-            if (urlParam.id != '') {
+            if (urlParam.id) {
                 http.get('system/role/selectByPrimaryKey', {id: urlParam.id}, true, function (res) {
                     form.val("addPaper", res.data);
                     form.render();

+ 56 - 0
src/test/java/com/gz/HandleSource.java

@@ -0,0 +1,56 @@
+package com.gz;
+
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.poi.excel.ExcelReader;
+import cn.hutool.poi.excel.ExcelUtil;
+import com.gz.dto.archive.ArchiveDTO;
+import com.gz.mapper.archive.ArchiveMapper;
+import com.gz.rvo.archive.ArchiveRVO;
+import com.gz.service.archive.ArchiveService;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import tk.mybatis.mapper.entity.Example;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+@SpringBootTest
+public class HandleSource {
+
+    @Resource
+    private ArchiveService archiveService;
+
+    @Resource
+    private ArchiveMapper archiveMapper;
+
+    @Test
+    public void run() {
+        ExcelReader reader = ExcelUtil.getReader(FileUtil.file("C:\\Users\\ljw\\Desktop\\a.xlsx"));
+        List<Map<String, Object>> maps = reader.readAll();
+
+        for (Map<String, Object> map : maps) {
+            String dh = MapUtil.getStr(map, "a");
+            String ly = MapUtil.getStr(map, "b");
+            String xzqh = MapUtil.getStr(map, "c");
+            String bq = MapUtil.getStr(map, "d");
+
+            if (StrUtil.isNotBlank(bq)) {
+                System.out.println(bq);
+            }
+
+            ArchiveDTO archiveDTO = new ArchiveDTO();
+            archiveDTO.setDh(dh);
+            archiveDTO.setLy(ly);
+            archiveDTO.setXzqh(xzqh);
+            archiveDTO.setBq(bq);
+
+            Example dhParam = new Example(ArchiveDTO.class);
+            dhParam.createCriteria().andEqualTo("dh", dh);
+            archiveMapper.updateByExampleSelective(archiveDTO, dhParam);
+        }
+    }
+}