ludc
2023-07-20 0b027b85d1c69fdc8af47d7d7495bf375eecafb4
增加ubcs-file-api模块
已修改3个文件
已添加6个文件
594 ■■■■■ 文件已修改
Source/UBCS/ubcs-service-api/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-file-api/pom.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/constant/VciFileEnumConstant.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/constant/VciFileLangCodeConstant.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/enumpck/VciFileTransProtocolEnum.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/properties/VciFileTransProperties.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/util/VciZipUtil.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/pom.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/pom.xml
@@ -27,6 +27,7 @@
        <module>ubcs-ddl-api</module>
        <module>ubcs-webservice-api</module>
        <module>ubcs-workflow-api</module>
        <module>ubcs-file-api</module>
    </modules>
    <dependencies>
Source/UBCS/ubcs-service-api/ubcs-file-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>ubcs-service-api</artifactId>
        <groupId>com.vci.ubcs</groupId>
        <version>3.0.1.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ubcs-file-api</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.8.2</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
</project>
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/constant/VciFileEnumConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.vci.ubcs.file.constant;
/**
 * æ–‡ä»¶æœåŠ¡ä¸­æžšä¸¾çš„é™æ€å€¼
 * @author weidy
 * @date 2020/3/12
 */
public class VciFileEnumConstant {
    /**
     * æ–‡ä»¶ä¼ è¾“协议
     */
    public static final String FILE_TRANS_PROTOCOL = "fileTransProtocol";
    /**
     * æ–‡ä»“操作系统的类型
     */
    public static final String FILE_SERVICE_OS_TYPE = "fileServiceOsType";
}
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/constant/VciFileLangCodeConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package com.vci.ubcs.file.constant;
/**
 * æ–‡ä»¶æœåŠ¡çš„å¤šè¯­ä»£å·
 * @author weidy
 * @date 2020/8/4 13:37
 */
public class VciFileLangCodeConstant {
    /**
     * æ–‡ä»¶æœªæ‰¾åˆ°
     */
    public static final String FILE_NOT_FOUND = "fileNotFound";
    /**
     * åŽ‹ç¼©æ–‡ä»¶é”™è¯¯
     */
    public static final String ZIP_FILE_ERROR = "zipFileError";
    /**
     * åŽ‹ç¼©åŒ…çš„åç§°ä¸ºç©º
     */
    public static final String ZIP_FILE_NAME_NULL = "zipFileNameNull";
    /**
     * æ–‡ä»¶ä¸ºç©º
     */
    public static final String FILES_NULL = "fileNull";
    /**
     * æ–‡ä»¶ä»“不存在
     */
    public static final String FILE_VOLUME_NOT_EXIST ="fileVolumeNotExist";
    /**
     * æ–‡æ¡£ç±»åž‹ä¸å­˜åœ¨
     */
    public static final String FILE_DOC_CLASSIFY_NOT_EXIST = "fileDocClassifyNotExist";
    /**
     * æ–‡ä»¶ç”Ÿæ•ˆ
     */
    public static final String FILE_RELEASED = "fileReleased";
    /**
     * æ–‡ä»¶ä¿¡æ¯ä¸å­˜åœ¨
     */
    public static final String FILE_INFO_NOT_EXIST = "fileInfoNotExist";
    /**
     * æ–‡ä»¶ä¿¡æ¯åˆå§‹åŒ–失败
     */
    public static final String FILE_INFO_INIT_FAIL = "fileInfoInitFail";
    /**
     * æ–‡ä»¶ä¿¡æ¯åˆå§‹åŒ–成功
     */
    public static final String FILE_INFO_INIT_SUCCESS = "fileInfoInitSuccess";
    /**
     * è¯»å–文件失败
     */
    public static final String FILE_READ_FAIL = "fileReadFail";
    /**
     * ç›®å½•不存在
     */
    public static final String FOLDER_NOT_EXIST = "folderNotExist";
    /**
     * ä¸æ˜¯æ–‡ä»¶å¤¹
     */
    public static final String IS_NOT_FOLDER = "isNotFolder";
    /**
     * è¯»å–压缩包失败
     */
    public static final String ZIP_FILE_READ_ERROR = "zipFileReadError";
    /**
     * æ–‡ä»¶ä¸å­˜åœ¨ï¼Œæ— æ³•共享
     */
    public static final String FILE_NOT_EXIST_CANNOT_SHARED = "fileNotExistCannotShared";
    /**
     * æ–‡ä»¶å…±äº«å¤±è´¥
     */
    public static final String FILE_SHARED_FAIL = "fileSharedFail";
}
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/enumpck/VciFileTransProtocolEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
package com.vci.ubcs.file.enumpck;
import com.vci.ubcs.file.constant.VciFileEnumConstant;
import com.vci.ubcs.starter.annotation.VciEnum;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * æ–‡ä»¶ä¼ è¾“的协议方式
 * @author weidy
 * @date 2020/3/11
 */
@VciEnum(name = VciFileEnumConstant.FILE_TRANS_PROTOCOL,text = "文件传输的协议")
public enum VciFileTransProtocolEnum implements BaseEnum {
    /**
     * å¹³å°åŽŸæœ‰çš„CORBA服务
     */
    CORBA("corba","平台原有的CORBA服务"),
    /**
     * minio轻量化文件服务
     */
    MINIO("minio","轻量化文件服务"),
    /**
     * mongoDB分布式文件服务
     */
    MONGO("mongo","mongoDB分布式文件服务"),
    /**
     * å­˜å‚¨åˆ°FTP服务中
     */
    FTP("ftp","存储到FTP服务中"),
    /**
     * ä¸‹è½½æˆåŠŸ
     */
    LOCAL("local","本地存储"),
    /**
     * HTTP查看
     */
    HTTP("http","仅使用HTTP查看"),
    /**
     * NAS服务上存储
     */
    NAS("nas","NAS服务上存储"),
    /**
     * Thrift远程调用
     */
    THRIFT("thrift","Thrift远程调用");
    /**
     * æžšä¸¾å€¼
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºå€¼
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * è®¾ç½®æžšä¸¾å€¼
     * @param value æžšä¸¾å€¼
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * èŽ·å–æ˜¾ç¤ºæ–‡æœ¬
     * @return æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * è®¾ç½®æ˜¾ç¤ºæ–‡æœ¬
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setText(String text) {
        this.text = text;
    }
    /**
     * å†…部构造函数
     * @param value æžšä¸¾çš„值
     */
    private VciFileTransProtocolEnum(String value, String text){
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text){
        for(VciFileTransProtocolEnum wenum : VciFileTransProtocolEnum.values()){
            if(wenum.getText().equalsIgnoreCase(text)){
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value){
        for(VciFileTransProtocolEnum wenum : VciFileTransProtocolEnum.values()){
            if(wenum.getValue().equalsIgnoreCase(value)){
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡
     */
    public static VciFileTransProtocolEnum forValue(String value){
        for(VciFileTransProtocolEnum wenum : VciFileTransProtocolEnum.values()){
            if(wenum.getValue().equalsIgnoreCase(value)){
                return wenum;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/properties/VciFileTransProperties.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
package com.vci.ubcs.file.properties;
import com.vci.ubcs.file.enumpck.VciFileTransProtocolEnum;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * ä¸Šä¼ ä¸‹è½½
 * @author weidy
 * @date 2020/3/11
 */
@Configuration
@ConfigurationProperties(prefix = "vci.file")
public class VciFileTransProperties {
    /**
     * ä¼ è¾“协议
     */
    private VciFileTransProtocolEnum transProtocal;
    /**
     * æ˜¯å¦æ£€æŸ¥æ•°æ®åº“表
     */
    private String checkTableExist;
    /**
     * åŽ‹ç¼©åŒ…çš„æ ¼å¼
     */
    private String zipCharset = "GBK";
    public VciFileTransProtocolEnum getTransProtocal() {
        return transProtocal;
    }
    public void setTransProtocal(VciFileTransProtocolEnum transProtocal) {
        this.transProtocal = transProtocal;
    }
    public String getCheckTableExist() {
        return checkTableExist;
    }
    public void setCheckTableExist(String checkTableExist) {
        this.checkTableExist = checkTableExist;
    }
    public String getZipCharset() {
        return zipCharset;
    }
    public void setZipCharset(String zipCharset) {
        this.zipCharset = zipCharset;
    }
    @Override
    public String toString() {
        return "VciFileTransProperties{" +
            "transProtocal=" + transProtocal +
            ", checkTableExist='" + checkTableExist + '\'' +
            ", zipCharset='" + zipCharset + '\'' +
            '}';
    }
}
Source/UBCS/ubcs-service-api/ubcs-file-api/src/main/java/com/vci/ubcs/file/util/VciZipUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,195 @@
package com.vci.ubcs.file.util;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.vci.ubcs.file.constant.VciFileLangCodeConstant;
import com.vci.ubcs.file.properties.VciFileTransProperties;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
/**
 * zip相关的工具类
 * @author weidy
 * @date 2020/3/12
 */
@Component
public class VciZipUtil {
    /**
     * æ–‡ä»¶ä¼ è¾“配置
     */
    @Autowired(required = false)
    private VciFileTransProperties transProperties;
    /**
     * èŽ·å–zip的字符集
     * @return é»˜è®¤ä¸ºGBK,否则需要配置
     */
    private String getZipCharset(){
        return (transProperties == null || StringUtils.isBlank(transProperties.getZipCharset()))?"GBK":transProperties.getZipCharset();
    }
    /**
     * å°†æ–‡ä»¶å¤¹åŽ‹ç¼©æˆåŽ‹ç¼©åŒ…
     * @param folder æ–‡ä»¶å¤¹è·¯å¾„
     * @param zipFileName zip文件名
     * @throws VciBaseException å‚数为空或者添加出错的会抛出异常
     */
    public void folderToZipFile(String folder, String zipFileName) throws VciBaseException {
        folderToZipFile(folder,zipFileName,getZipCharset());
    }
    /**
     * å°†æ–‡ä»¶å¤¹åŽ‹ç¼©æˆåŽ‹ç¼©åŒ…
     * @param folder æ–‡ä»¶å¤¹è·¯å¾„
     * @param zipFileName zip文件名
     * @param zipEncode zip的字符集,windows应该为GBK
     * @throws VciBaseException å‚数为空或者添加出错的会抛出异常
     */
    public void folderToZipFile(String folder, String zipFileName,String zipEncode) throws VciBaseException{
        File sourceFile = new File(folder);
        if(!sourceFile.exists()){
            throw new VciBaseException(VciFileLangCodeConstant.FILE_NOT_FOUND,new String[]{folder});
        }
        ZipOutputStream zos = null;
        try {
            zos = new ZipOutputStream(new FileOutputStream(zipFileName));
            zos.setEncoding(zipEncode);
            //默认是UTF-8格式的
            addFileToZip(zos, new File(folder).listFiles(),folder + File.separator);
        }catch (Throwable e){
            throw new VciBaseException(LangBaseUtil.getErrorMsg(e),new String[]{});
        }finally {
            try{
                if(zos!=null){
                    zos.close();
                }
            }catch (Exception e){
            }
        }
    }
    /**
     * å°†æ–‡ä»¶å¤¹åŽ‹ç¼©æˆåŽ‹ç¼©åŒ…
     * @param zos zip输出流
     * @param files è¦åŽ‹ç¼©çš„æ–‡ä»¶
     * @param rootPath åŽ‹ç¼©çš„æ–‡ä»¶ä¸­çš„é¡¶å±‚ç›®å½•
     * @throws VciBaseException æ–‡ä»¶ä¸å­˜åœ¨ï¼Œæˆ–者内容出现错误会抛出异常
     */
    private void addFileToZip(ZipOutputStream zos,File[] files,String rootPath) throws VciBaseException{
        if(files!=null && files.length>0) {
            for (File file : files) {
                if(StringUtils.isBlank(rootPath)){
                    try {
                        rootPath = file.getParent();
                        if (rootPath == null) {
                            rootPath = file.getPath();
                        }
                    }catch (Throwable e){
                        rootPath = file.getPath();
                    }
                }
                if (!file.exists()) {
                    throw new VciBaseException(VciFileLangCodeConstant.FILE_NOT_FOUND,new String[]{file.getAbsolutePath()});
                }
                if (file.isDirectory()) {
                    addFileToZip(zos, file.listFiles(),rootPath);
                }else{
                    InputStream is = null;
                    try {
                        is = new FileInputStream(file);
                        String entryName = file.getAbsolutePath().replace(rootPath,"");
                        if(entryName.startsWith("\\")) {
                            entryName = entryName.substring(1);
                        }
                        ZipEntry zipEntry = new ZipEntry(entryName);
                        zos.putNextEntry(zipEntry);
                        byte[] b = new byte[100];
                        int length = 0;
                        while ((length = is.read(b)) != -1) {
                            zos.write(b, 0, length);
                        }
                    } catch (Exception e) {
                        throw new VciBaseException(VciFileLangCodeConstant.ZIP_FILE_ERROR,new String[]{file.getAbsolutePath()},e);
                    } finally {
                        try {
                            IOUtils.closeQuietly(is);
                        } catch (Exception e) {
                        }
                    }
                }
            }
        }
    }
    /**
     * å°†å•个文件添加到zip中
     * @param file æ–‡ä»¶
     * @param zipFile zip文件
     * @throws VciBaseException å‚数为空或者添加出错的会抛出异常
     */
    public void addFileToZip(File file, String zipFile) throws VciBaseException{
        if(file == null || !file.exists() ){
            throw new VciBaseException(VciFileLangCodeConstant.FILE_NOT_FOUND ,new String[]{file.getAbsolutePath()});
        }
        if(StringUtils.isBlank(zipFile)){
            throw new VciBaseException(VciFileLangCodeConstant.ZIP_FILE_NAME_NULL,new String[0]);
        }
        addFileToZip(new File[]{file},zipFile);
    }
    /**
     * å°†å¤šä¸ªä¸ªæ–‡ä»¶æ·»åŠ åˆ°zip中
     * @param files æ–‡ä»¶
     * @param zipFile zip文件
     * @throws VciBaseException å‚数为空或者添加出错的会抛出异常
     */
    public void addFileToZip(File[] files, String zipFile) throws VciBaseException{
        addFileToZip(files, zipFile,getZipCharset());
    }
    /**
     * å°†å¤šä¸ªä¸ªæ–‡ä»¶æ·»åŠ åˆ°zip中
     * @param files æ–‡ä»¶
     * @param zipFile zip文件
     * @param zipEncode zip的字符集
     * @throws VciBaseException å‚数为空或者添加出错的会抛出异常
     */
    public void addFileToZip(File[] files, String zipFile,String zipEncode) throws VciBaseException{
        if(files == null || files.length == 0){
            throw new VciBaseException(VciFileLangCodeConstant.FILES_NULL,new String[0]);
        }
        if(StringUtils.isBlank(zipFile)){
            throw new VciBaseException(VciFileLangCodeConstant.ZIP_FILE_NAME_NULL,new String[0]);
        }
        ZipOutputStream zos = null;
        try {
            zos = new ZipOutputStream(new FileOutputStream(zipFile));
            zos.setEncoding(zipEncode);
            addFileToZip(zos, files,"");
        }catch (Throwable e){
            throw new VciBaseException(LangBaseUtil.getErrorMsg(e),new String[]{},e);
        }finally {
            try{
                if(zos!=null){
                    zos.close();
                }
            }catch (Exception e){
            }
        }
    }
}
Source/UBCS/ubcs-service/ubcs-code/pom.xml
@@ -145,51 +145,9 @@
        <!--axis2 end -->
        <dependency>
            <groupId>com.vci</groupId>
            <artifactId>vci-file-api</artifactId>
            <version>1.0-SNAPSHOT</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-log4j2</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-slf4j-impl</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.logging.log4j</groupId>
                    <artifactId>log4j-jul</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.github.openfeign.form</groupId>
                    <artifactId>feign-form</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-compress</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>io.github.openfeign.form</groupId>
                    <artifactId>feign-form-spring</artifactId>
                </exclusion>
            </exclusions>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-file-api</artifactId>
            <version>3.0.1.RELEASE</version>
        </dependency>
    </dependencies>
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -3,7 +3,6 @@
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.vci.file.util.VciZipUtil;
import com.vci.ubcs.code.bo.AttributeValue;
import com.vci.ubcs.code.bo.CodeClassifyFullInfoBO;
import com.vci.ubcs.code.bo.CodeTemplateAttrSqlBO;
@@ -21,6 +20,7 @@
import com.vci.ubcs.code.vo.webserviceModel.attrmap.DataObjectVO;
import com.vci.ubcs.code.vo.webserviceModel.attrmap.RowDatas;
import com.vci.ubcs.code.vo.webserviceModel.result.xml.XMLResultDataObjectDetailDO;
import com.vci.ubcs.file.util.VciZipUtil;
import com.vci.ubcs.omd.feign.IBtmTypeClient;
import com.vci.ubcs.omd.feign.IWebSecretClient;
import com.vci.ubcs.omd.vo.BtmTypeVO;