提交 8b535e7a authored 作者: mry's avatar mry

feat(forecast): 统计

上级
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
差异被折叠。
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% ^
%JVM_CONFIG_MAVEN_PROPS% ^
%MAVEN_OPTS% ^
%MAVEN_DEBUG_OPTS% ^
-classpath %WRAPPER_JAR% ^
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%"=="on" pause
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
cmd /C exit /B %ERROR_CODE%
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.tykj</groupId>
<artifactId>forecast</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>forecast</name>
<description>forecast</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!--swagger ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5</version>
</dependency>
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.20</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.4.0</version>
</plugin>
</plugins>
</build>
</project>
package com.tykj.forecast;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @author mruny
*/
@SpringBootApplication
@EnableSwagger2
@EnableJpaAuditing
public class ForecastApplication {
public static void main(String[] args) {
SpringApplication.run(ForecastApplication.class, args);
}
}
package com.tykj.forecast.config;
/**
* @author mruny
*/
public class GlobalException extends RuntimeException {
public GlobalException(String message) {
super(message);
}
}
\ No newline at end of file
package com.tykj.forecast.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author mry
*/
@Configuration
public class MyConfiguration {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH")
.exposedHeaders("access-control-allow-headers",
"access-control-allow-methods",
"access-control-allow-origin",
"access-control-max-age",
"X-Frame-Options")
.allowCredentials(true)
.maxAge(3600);
}
};
}
}
package com.tykj.forecast.config;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
/**
* @author mruny
*/
@Configuration
public class RestTemplateConfig {
/**
* 服务器返回数据(response)的时间
*/
private static final Integer READ_TIME_OUT = 100000;
/**
* 连接上服务器(握手成功)的时间
*/
private static final Integer CONNECT_TIME_OUT = 5000;
@Bean
public RestTemplate restTemplate(){
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient());
return new RestTemplate(requestFactory);
}
@Bean
public HttpClient httpClient(){
//默认证书有效
SSLConnectionSocketFactory sslConnectionSocketFactory = SSLConnectionSocketFactory.getSocketFactory();
SSLContext sslContext = null;
try {
//信任所有的SSL证书
sslContext = SSLContextBuilder.create().setProtocol(SSLConnectionSocketFactory.SSL)
.loadTrustMaterial((x, y) -> true).build();
} catch (Exception e) {
e.printStackTrace();
}
if (sslContext != null) {
sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext);
}
// 支持HTTP、HTTPS
Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", sslConnectionSocketFactory)
.build();
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
connectionManager.setMaxTotal(200);
connectionManager.setDefaultMaxPerRoute(100);
connectionManager.setValidateAfterInactivity(2000);
RequestConfig requestConfig = RequestConfig.custom()
// 服务器返回数据(response)的时间,超时抛出read timeout
.setSocketTimeout(READ_TIME_OUT)
// 连接上服务器(握手成功)的时间,超时抛出connect timeout
.setConnectTimeout(CONNECT_TIME_OUT)
// 从连接池中获取连接的超时时间,超时抛出ConnectionPoolTimeoutException
.setConnectionRequestTimeout(1000)
.build();
return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).setConnectionManager(connectionManager).build();
}
}
package com.tykj.forecast.config;
import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
/**
* @author mry
*/
@Configuration
public class SwaggerConfigApi {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
//将api的单元信息者只为包含在json ResourceListing响应中。
.apiInfo(apiInfo())
//选择哪些接口作为swagger的doc发布
.select()
.apis(RequestHandlerSelectors.basePackage("com.tykj"))
//不显示错误的接口地址
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
//标题
.title("forecast")
//简介
.description("forecast")
//版本
.version("1.0")
.build();
}
}
//package com.tykj.forecast.config;
//
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.web.socket.server.standard.ServerEndpointExporter;
//
///**
// * @author mruny
// * @create 2022/6/29 21:56:22
// */
//@Configuration
//public class WebSocketConfig {
//
// @Bean
// public ServerEndpointExporter serverEndpointExporter() {
// return new ServerEndpointExporter();
// }
//}
//package com.tykj.forecast.controller;
//
//import com.tykj.forecast.utils.FileUtils;
//import com.tykj.forecast.utils.PathUrl;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.core.io.FileSystemResource;
//import org.springframework.http.HttpEntity;
//import org.springframework.http.HttpMethod;
//import org.springframework.http.ResponseEntity;
//import org.springframework.util.LinkedMultiValueMap;
//import org.springframework.util.MultiValueMap;
//import org.springframework.web.bind.annotation.CrossOrigin;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//import org.springframework.web.client.RestTemplate;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.File;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @author mruny
// * @create 2022/6/27 13:20:19
// */
//@RestController
//@RequestMapping("/tests")
//@CrossOrigin
//public class Controller {
//
// @Autowired
// private RestTemplate restTemplate;
//
// private static final String LOCAL_URL = "http://localhost:3784/tests";
//
// /**
// * 文件上传以及文件解析
// *
// * @param file 文件,Spring中的文件上传
// * @return 封装好的文件信息
// */
// @PostMapping
// public String upload(MultipartFile file) {
// //获取文件原名
// String fileName = file.getOriginalFilename();
// try {
// File dirFile = new File("/2019/2020");
// //如果文件目录不存在,则创建目录
// if (!dirFile.exists()) {
// dirFile.mkdirs();
// }
// //上传文件
// file.transferTo(new File(fileName));
// } catch (IOException e) {
// e.printStackTrace();
// //终止程序
// return null;
// }
// return fileName;
// }
//
// @PostMapping("/parser")
// public List<String> parser() {
// List<File> files = FileUtils.getFiles(PathUrl.pathUrl);
// List<String> list = new ArrayList<>();
// for (File file : files) {
// //当前第几个文件
// FileSystemResource resource = getFileSystemResource(file);
// MultiValueMap<String, Object> param = new LinkedMultiValueMap<>();
// param.add("file", resource);
// HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param);
// try {
// ResponseEntity<String> responseEntity = restTemplate.exchange(LOCAL_URL, HttpMethod.POST, httpEntity, String.class);
// String body = responseEntity.getBody();
// list.add(body);
// } catch (Error | Exception e) {
// continue;
// }
// }
// return list;
// }
//
// private FileSystemResource getFileSystemResource(File file) {
// return new FileSystemResource(file);
// }
//
// @PostMapping("/path")
// public String updatePath(String nowPath) {
// PathUrl.pathUrl = nowPath;
// return PathUrl.pathUrl;
// }
//
//
//}
package com.tykj.forecast.dao;
import com.tykj.forecast.entity.BasicsFile;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <p>
* Mapper 接口
* </p>
*
* @author mry
* @since 2022-06-14
*/
public interface BasicsFileDao extends JpaRepository<BasicsFile, Long>, JpaSpecificationExecutor<BasicsFile> {
/**
* 根据文件路径查询
*
* @param customName 文件路径
* @return 查询到的文件
*/
BasicsFile findBasicsFileByCustomName(String customName);
/**
* 分页查询所有文件
*
* @param status 是否存在,1为存在,0为不存在
* @param pageable 分页
* @return 分页后的文件
*/
Page<BasicsFile> findByStatus(String status, Pageable pageable);
}
package com.tykj.forecast.dao;
import com.tykj.forecast.entity.MeetingFile;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author mry
* @since 2022-06-14
*/
public interface MeetingFileDao extends JpaRepository<MeetingFile, Long>, JpaSpecificationExecutor<MeetingFile> {
/**
* 根据会议类型查询文件
*
* @param meetingType 文件类型
* @return 查询到的文件集合
*/
List<MeetingFile> findMeetingFileByMeetingType(String meetingType);
/**
* 分页查询所有文件
*
* @param status 是否存在,1为存在,0为不存在
* @param pageable 分页
* @return 分页后的文件
*/
Page<MeetingFile> findByStatus(String status, Pageable pageable);
}
package com.tykj.forecast.dao;
import com.tykj.forecast.entity.RetrenchFile;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
/**
* <p>
* Mapper 接口
* </p>
*
* @author mry
* @since 2022-06-14
*/
public interface RetrenchFileDao extends JpaRepository<RetrenchFile, Long>, JpaSpecificationExecutor<RetrenchFile> {
/**
* 分页查询所有文件
*
* @param status 是否存在,1为存在,0为不存在
* @param pageable 分页
* @return 分页后的文件
*/
Page<RetrenchFile> findByStatus(String status, Pageable pageable);
}
package com.tykj.forecast.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.Date;
/**
* 公文基础识别
*
* @author mruny
* @create 2022/6/14 10:52:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("公文基础识别")
@Entity
@Table(name = "basics_file")
@EntityListeners(AuditingEntityListener.class)
public class BasicsFile {
/**
* 主键id
*/
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "主键id,从0开始自增")
private Long id;
/**
* 创建时间
*/
@ApiModelProperty(value = "数据创建时间")
@Column(name = "create_time")
@CreatedDate
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "数据更新时间")
@Column(name = "update_time")
@LastModifiedDate
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime;
/**
* 文件名称
*/
@Column(name = "custom_name")
@ApiModelProperty("文件名称")
private String customName;
/**
* 文件类型
*/
@Column(name = "association_category")
@ApiModelProperty("文件类型")
private String associationCategory;
/**
* 发文字号
*/
@Column(name = "issue_number")
@ApiModelProperty("发文字号")
private String issueNumber;
/**
* 版头发文单位
*/
@Column(name = "front_issuing_unit")
@ApiModelProperty("版头发文单位")
private String frontIssuingUnit;
/**
* 签发人
*/
@Column(name = "issue_person")
@ApiModelProperty("签发人")
private String issuePerson;
/**
* 标题
*/
@Column(name = "title")
@ApiModelProperty("标题")
private String title;
/**
* 主体发文单位
*/
@Column(name = "body_issuing_unit")
@ApiModelProperty("主体发文单位")
private String bodyIssuingUnit;
/**
* 接收单位
*/
@Column(name = "accept_unit")
@ApiModelProperty("接收单位")
private String acceptUnit;
/**
* 发文日期
*/
@Column(name = "issue_date")
@ApiModelProperty("发文日期")
private String issueDate;
/**
* 抄送单位
*/
@Column(name = "copy_unit")
@ApiModelProperty("抄送单位")
private String copyUnit;
/**
* 发文单位
*/
@Column(name = "issue_unit")
@ApiModelProperty("发文单位")
private String issueUnit;
/**
* 印发日期对应发文日期issueDate
*/
@Column(name = "replica_date")
@ApiModelProperty("印发日期对应发文日期issueDate")
private String replicaDate;
/**
* 印发单位对应发文单位issueUnit
*/
@Column(name = "replica_unit")
@ApiModelProperty("印发单位对应发文单位issueUnit")
private String replicaUnit;
/**
* 文件数量
*/
@Column(name = "size")
@ApiModelProperty("文件数量")
private Long size;
/**
* 是否删除
*/
@Column(name = "status")
@ApiModelProperty("是否删除数据,0是不存在,1是存在")
private String status;
}
package com.tykj.forecast.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.Date;
/**
* 会议公文分析
*
* @author mruny
* @create 2022/6/14 10:53:14
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "meeting_file")
@EntityListeners(AuditingEntityListener.class)
@ApiModel("会议公文分析")
public class MeetingFile {
/**
* 主键id
*/
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "主键id,从0开始自增")
private Long id;
/**
* 创建时间
*/
@ApiModelProperty(value = "数据创建时间")
@Column(name = "create_time")
@CreatedDate
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "数据更新时间")
@Column(name = "update_time")
@LastModifiedDate
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime;
/**
* 标题
*/
@Column(name = "title")
@ApiModelProperty("标题")
private String fileTitle;
/**
* 文件名称
*/
@Column(name = "custom_name")
@ApiModelProperty("文件名称")
private String customName;
/**
* 会议类型
*/
@Column(name = "meeting_type")
@ApiModelProperty("会议类型")
private String meetingType;
/**
* 参会人员
*/
@Column(name = "partici_pants")
@ApiModelProperty("参会人员")
private String particiPants;
/**
* 包括会议时间
*/
@Column(name = "no_meeting_info")
@ApiModelProperty("包括会议时间")
private String noMeetingInfo;
/**
* 文件数量
*/
@Column(name = "size")
@ApiModelProperty("文件数量")
private Long size;
/**
* 是否删除
*/
@Column(name = "status")
@ApiModelProperty("是否删除数据,0是不存在,1是存在")
private String status;
}
package com.tykj.forecast.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.Date;
/**
* 重点精简文件
*
* @author mruny
* @create 2022/6/14 10:54:01
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "retrench_file")
@EntityListeners(AuditingEntityListener.class)
@ApiModel("重点精简文件")
public class RetrenchFile {
/**
* 主键id
*/
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "主键id,从0开始自增")
private Long id;
/**
* 创建时间
*/
@ApiModelProperty(value = "数据创建时间")
@Column(name = "create_time")
@CreatedDate
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime;
/**
* 更新时间
*/
@ApiModelProperty(value = "数据更新时间")
@Column(name = "update_time")
@LastModifiedDate
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime;
/**
* 标题
*/
@Column(name = "title")
@ApiModelProperty("标题")
private String title;
/**
* 文件类别{"规范性文件":0, "通报类文件":1, "议事协调机构类文件":2, "其他类":3}
*/
@Column(name = "file_type")
@ApiModelProperty("文件类别{规范性文件:0, 通报类文件:1, 议事协调机构类文件:2, 其他类:3}")
private String fileType;
/**
* 文件名称
*/
@Column(name = "custom_name")
@ApiModelProperty("文件名称")
private String customName;
/**
* 文件数量
*/
@Column(name = "size")
@ApiModelProperty("文件数量")
private Long size;
/**
* 是否删除
*/
@Column(name = "status")
@ApiModelProperty("是否删除数据,0是不存在,1是存在")
private String status;
}
package com.tykj.forecast.entityVo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 统计
*
* @author mruny
* @create 2022/6/15 14:41:11
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Statistics {
private String value;
private String name;
}
package com.tykj.forecast.service;
import com.tykj.forecast.entity.BasicsFile;
import org.springframework.data.domain.Page;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author mry
* @since 2022-06-14
*/
public interface IBasicsFileService {
/**
* 添加或修改
*
* @param forecast 添加或修改的对象
* @return 添加或修改后的对象
*/
BasicsFile save(BasicsFile forecast);
/**
* 删除所有
*/
void removeAll();
/**
* 查询所有
*
* @return 所有对象的集合
*/
List<BasicsFile> listBasics();
/**
* 根据文件路径查询文件
*
* @param customName 文件路径
* @return 查询到的文件
*/
BasicsFile findByCustomName(String customName);
/**
* 存入数据数量
*
* @return 存入数据数量
*/
Long count();
/**
* 批量新增/修改
*
* @param list 批量新增/修改的对象集合
* @return 批量新增/修改后的对象集合
*/
List<BasicsFile> saveAll(List<BasicsFile> list);
/**
* 分页条件查询
*
* @param page 当前第几页
* @param size 每页多少条数据
* @param status 查询条件
* @return 符合条件的分页结果数据
*/
Page<BasicsFile> findByStatus(int page, int size, String status);
}
package com.tykj.forecast.service;
import com.tykj.forecast.entity.MeetingFile;
import org.springframework.data.domain.Page;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author mry
* @since 2022-06-14
*/
public interface IMeetingFileService {
/**
* 新增/修改
*
* @param forecast 新增/修改对象
* @return 新增/修改后的对象
*/
MeetingFile save(MeetingFile forecast);
/**
* 删除所有数据
*/
void removeAll();
/**
* 查询所有会议文件
*
* @return 查询到的所有会议文件
*/
List<MeetingFile> listMeeting();
/**
* 根据文件类型查找会议文件
*
* @param meetingType 会议类型
* @return 所有符合条件的会议文件
*/
List<MeetingFile> findByMeetingType(String meetingType);
/**
* 存入文件的总数量
*
* @return 存入文件的总数量
*/
long count();
/**
* 批量添加/修改
*
* @param list 批量添加/修改的对象集合
* @return 批量添加/修改后的对象集合
*/
List<MeetingFile> saveAll(List<MeetingFile> list);
/**
* 分页条件查询
*
* @param page 当前第几页
* @param size 每页多少条数据
* @param status 查询条件
* @return 分页条件查询的结果
*/
Page<MeetingFile> findByStatus(int page, int size, String status);
}
package com.tykj.forecast.service;
import com.tykj.forecast.entity.RetrenchFile;
import org.springframework.data.domain.Page;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author mry
* @since 2022-06-14
*/
public interface IRetrenchFileService {
/**
* 添加/修改精简文件
*
* @param forecast 精简文件对象
* @return 添加/修改后的精简文件对象
*/
RetrenchFile save(RetrenchFile forecast);
/**
* 删除所有数据
*/
void removeAll();
/**
* 查询所有精简文件
*
* @return 所有精简文件对象集合
*/
List<RetrenchFile> listRetrench();
/**
* 批量新增/修改精简文件
*
* @param list 精简文件集合
* @return 批量新增/修改后的精简文件集合
*/
List<RetrenchFile> saveAll(List<RetrenchFile> list);
/**
* 分页条件查询
*
* @param page 当前第几页
* @param size 每页多少条数据
* @param status 查询条件
* @return 符合条件的分页查询结果
*/
Page<RetrenchFile> findByStatus(int page, int size, String status);
/**
* 文件数量
*
* @return 文件数量
*/
Long count();
}
package com.tykj.forecast.service.Impl;
import com.tykj.forecast.config.GlobalException;
import com.tykj.forecast.dao.BasicsFileDao;
import com.tykj.forecast.entity.BasicsFile;
import com.tykj.forecast.service.IBasicsFileService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
* <p>
* 服务实现类
* </p>
*
* @author mry
* @since 2022-06-14
*/
@Service
public class BasicsFileServiceImpl implements IBasicsFileService {
private final BasicsFileDao dao;
public BasicsFileServiceImpl(BasicsFileDao dao) {
this.dao = dao;
}
@Override
public BasicsFile save(BasicsFile forecast) {
return Optional.of(dao.save(forecast)).orElseThrow(() -> new GlobalException("添加失败"));
}
@Override
public void removeAll() {
dao.deleteAllInBatch();
}
@Override
public List<BasicsFile> listBasics() {
return dao.findAll();
}
@Override
public BasicsFile findByCustomName(String customName) {
return dao.findBasicsFileByCustomName(customName);
}
@Override
public Long count() {
return dao.count();
}
@Override
public List<BasicsFile> saveAll(List<BasicsFile> list) {
return dao.saveAll(list);
}
@Override
public Page<BasicsFile> findByStatus(int page, int size, String status) {
Pageable pageable = PageRequest.of(page, size);
return dao.findByStatus(status, pageable);
}
}
package com.tykj.forecast.service.Impl;
import com.tykj.forecast.config.GlobalException;
import com.tykj.forecast.dao.MeetingFileDao;
import com.tykj.forecast.entity.MeetingFile;
import com.tykj.forecast.service.IMeetingFileService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
* <p>
* 服务实现类
* </p>
*
* @author mry
* @since 2022-06-14
*/
@Service
public class MeetingFileServiceImpl implements IMeetingFileService {
private final MeetingFileDao dao;
public MeetingFileServiceImpl(MeetingFileDao dao) {
this.dao = dao;
}
@Override
public MeetingFile save(MeetingFile forecast) {
return Optional.of(dao.save(forecast)).orElseThrow(() -> new GlobalException("添加失败"));
}
@Override
public void removeAll() {
dao.deleteAllInBatch();
}
@Override
public List<MeetingFile> listMeeting() {
return dao.findAll();
}
@Override
public List<MeetingFile> findByMeetingType(String meetingType) {
return dao.findMeetingFileByMeetingType(meetingType);
}
@Override
public long count() {
return dao.count();
}
@Override
public List<MeetingFile> saveAll(List<MeetingFile> list) {
return dao.saveAll(list);
}
@Override
public Page<MeetingFile> findByStatus(int page, int size, String status) {
Pageable pageable = PageRequest.of(page, size);
return dao.findByStatus(status, pageable);
}
}
package com.tykj.forecast.service.Impl;
import com.tykj.forecast.config.GlobalException;
import com.tykj.forecast.dao.RetrenchFileDao;
import com.tykj.forecast.entity.RetrenchFile;
import com.tykj.forecast.service.IRetrenchFileService;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
/**
* <p>
* 服务实现类
* </p>
*
* @author mry
* @since 2022-06-14
*/
@Service
public class RetrenchFileServiceImpl implements IRetrenchFileService {
private final RetrenchFileDao dao;
public RetrenchFileServiceImpl(RetrenchFileDao dao) {
this.dao = dao;
}
@Override
public RetrenchFile save(RetrenchFile forecast) {
return Optional.of(dao.save(forecast)).orElseThrow(() -> new GlobalException("添加失败"));
}
@Override
public void removeAll() {
dao.deleteAllInBatch();
}
@Override
public List<RetrenchFile> listRetrench() {
return dao.findAll();
}
@Override
public List<RetrenchFile> saveAll(List<RetrenchFile> list) {
return dao.saveAll(list);
}
@Override
public Page<RetrenchFile> findByStatus(int page, int size, String status) {
Pageable pageable = PageRequest.of(page, size);
return dao.findByStatus(status, pageable);
}
@Override
public Long count() {
return dao.count();
}
}
package com.tykj.forecast.socket;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.CopyOnWriteArraySet;
//注册成组件
@Component
//定义websocket服务器端,它的功能主要是将目前的类定义成一个websocket服务器端。注解的值将被用于监听用户连接的终端访问URL地址
@ServerEndpoint("/websocket/basicsFile")
//如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;可以直接调用log.info
@Slf4j
public class WebSocketBasicsFile {
//实例一个session,这个session是websocket的session
private Session session;
//存放websocket的集合(本次demo不会用到,聊天室的demo会用到)
private static CopyOnWriteArraySet<WebSocketBasicsFile> webSocketBasicsFileSet = new CopyOnWriteArraySet<>();
//前端请求时一个websocket时
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketBasicsFileSet.add(this);
log.info("【websocket消息】有新的连接, 总数:{}", webSocketBasicsFileSet.size());
}
//前端关闭时一个websocket时
@OnClose
public void onClose() {
webSocketBasicsFileSet.remove(this);
log.info("【websocket消息】连接断开, 总数:{}", webSocketBasicsFileSet.size());
}
//前端向后端发送消息
@OnMessage
public void onMessage(String message) {
log.info("【websocket消息】收到客户端发来的消息:{}", message);
}
//新增一个方法用于主动向客户端发送消息
public void sendMessage(String message) {
for (WebSocketBasicsFile webSocketBasicsFile : webSocketBasicsFileSet) {
log.info("【websocket消息】广播消息, message={}", message);
try {
webSocketBasicsFile.session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
\ No newline at end of file
package com.tykj.forecast.socket;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* @author mruny
* @create 2022/6/30 11:03:55
*/
@Component
//定义websocket服务器端,它的功能主要是将目前的类定义成一个websocket服务器端。注解的值将被用于监听用户连接的终端访问URL地址
@ServerEndpoint("/websocket/meetingFile")
//如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;可以直接调用log.info
@Slf4j
public class WebSocketMeetingFile {
//实例一个session,这个session是websocket的session
private Session session;
//存放websocket的集合(本次demo不会用到,聊天室的demo会用到)
private static CopyOnWriteArraySet<WebSocketMeetingFile> webSocketBasicsFileSet = new CopyOnWriteArraySet<>();
//前端请求时一个websocket时
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketBasicsFileSet.add(this);
log.info("【websocket消息】有新的连接, 总数:{}", webSocketBasicsFileSet.size());
}
//前端关闭时一个websocket时
@OnClose
public void onClose() {
webSocketBasicsFileSet.remove(this);
log.info("【websocket消息】连接断开, 总数:{}", webSocketBasicsFileSet.size());
}
//前端向后端发送消息
@OnMessage
public void onMessage(String message) {
log.info("【websocket消息】收到客户端发来的消息:{}", message);
}
//新增一个方法用于主动向客户端发送消息
public void sendMessage(String message) {
for (WebSocketMeetingFile webSocketBasicsFile : webSocketBasicsFileSet) {
log.info("【websocket消息】广播消息, message={}", message);
try {
webSocketBasicsFile.session.getBasicRemote().sendText(message);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package com.tykj.forecast.utils;
import java.math.BigDecimal;
import java.math.RoundingMode;
/**
* @author mruny
* @create 2022/6/16 18:38:13
*/
public class CalculationUtils {
public static String format(long a, long b) {
if (a != 0 && b != 0) {
BigDecimal bd = new BigDecimal((double) a / b * 100);
bd = bd.setScale(2, RoundingMode.HALF_UP);
return bd.toString();
} else {
return "0";
}
}
}
package com.tykj.forecast.utils;
import com.tykj.forecast.config.GlobalException;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author mruny
* @create 2022/6/13 11:21:27
*/
public class FileUtils {
public static List<File> getFiles(String fileName) {
List<File> listAll = new ArrayList<>();
File dirFile = new File(fileName);
//获取到文件夹下所有文件
File[] files = dirFile.listFiles();
try {
if (files != null && files.length > 0) {
List<File> list = new ArrayList<>(Arrays.asList(files));
for (File file : list) {
String name = file.getName();
String lowerName = name.toLowerCase();
if (!name.contains(".")) {
List<File> fileChildren = getFiles(fileName + "/" + name);
listAll.addAll(fileChildren);
} else {
if (lowerName.matches("^.+\\.(doc|docx|wps)$")) {
listAll.add(file);
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
//终止程序
throw new GlobalException("文件夹不存在");
}
return listAll;
}
}
\ No newline at end of file
package com.tykj.forecast.utils;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.net.URISyntaxException;
import java.util.Map;
/**
* @author mruny
*/
public final class HttpRequestUtils {
//设置字符编码
private static final String CHARSET = "UTF-8";
private static RequestConfig defaultRequestConfig = RequestConfig
.custom()
//设置等待数据超时时间
.setSocketTimeout(30000)
//设置连接超时时间
.setConnectTimeout(30000)
//设置从连接池获取连接的等待超时时间
.setConnectionRequestTimeout(30000)
//.setStaleConnectionCheckEnabled(true)
.build();
//释放资源,httpResponse为响应流,httpClient为请求客户端
private static void release(CloseableHttpResponse httpResponse, CloseableHttpClient httpClient) throws IOException {
if (httpResponse != null) {
httpResponse.close();
}
if (httpClient != null) {
httpClient.close();
}
}
//get请求带参数、带请求头
public static String get(String urlWithParams, Map<String, String> header) throws IOException {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpget = new HttpGet(urlWithParams);
if (header != null) {
header.forEach(httpget::addHeader);
}
CloseableHttpResponse response = httpClient.execute(httpget);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, CHARSET);
httpget.releaseConnection();
release(response, httpClient);
return result;
}
public static String get(String urlWithParams) throws IOException {
return get(urlWithParams, null);
}
//发送post请求,带json请求体和请求头
public static String postJson(String url, String json, Map<String, String> headersMap) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
for (Map.Entry<String, String> entry : headersMap.entrySet()) {
headers.add(entry.getKey(), entry.getValue());
}
org.springframework.http.HttpEntity<String> request = new org.springframework.http.HttpEntity<>(json, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, request, String.class);
return response.getBody();
}
//发送post请求,请求体和请求头
public static <T> Map<String, Object> post(String url, T paraT, Map<String, String> headersMap, MediaType mediaType) throws URISyntaxException {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
if (mediaType != null) {
headers.setContentType(mediaType);
}
for (Map.Entry<String, String> entry : headersMap.entrySet()) {
headers.add(entry.getKey(), entry.getValue());
}
org.springframework.http.HttpEntity<T> request = new org.springframework.http.HttpEntity<>(paraT, headers);
Map response = restTemplate.postForObject(url, request, Map.class);
return response;
}
}
package com.tykj.forecast.utils;
/**
* @author mruny
* @create 2022/7/1 11:07:00
*/
public class PathUrl {
public static String pathUrl = "/2019/2021";
}
package com.tykj.forecast.utils;
/**
* @author mruny
* @create 2022/6/16 19:24:32
*/
public class StringUtil {
/**
* 取 第一个.之前的字符串
*
* @param s 时间:年-月-日
* @return 年份
*/
public static String substring(String s) {
int index = s.indexOf("-");
return s.substring(0, index);
}
}
\ No newline at end of file
package com.tykj.forecast.vo;
import com.tykj.forecast.entity.BasicsFile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;
/**
* 基础公文接收json
*
* @author mruny
* @create 2022/6/13 14:56:47
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("公文基础识别json")
public class BasicsFileVo {
/**
* 文件名称
*/
@ApiModelProperty("文件名称")
private String customName;
/**
* 文件类型
*/
@ApiModelProperty("文件类型")
private String associationCategory;
/**
* 发文字号
*/
@ApiModelProperty("发文字号")
private String issueNumber;
/**
* 版头发文单位
*/
@ApiModelProperty("版头发文单位")
private String frontIssuingUnit;
/**
* 签发人
*/
@ApiModelProperty("签发人")
private String issuePerson;
/**
* 标题
*/
@ApiModelProperty("标题")
private String title;
/**
* 主体发文单位
*/
@ApiModelProperty("主体发文单位")
private String bodyIssuingUnit;
/**
* 接收单位
*/
@ApiModelProperty("接收单位")
private String acceptUnit;
/**
* 发文日期
*/
@ApiModelProperty("发文日期")
private String issueDate;
/**
* 抄送单位
*/
@ApiModelProperty("抄送单位")
private String copyUnit;
/**
* 发文单位
*/
@ApiModelProperty("发文单位")
private String issueUnit;
/**
* 印发日期对应发文日期issueDate
*/
@ApiModelProperty("印发日期对应发文日期issueDate")
private String replicaDate;
/**
* 印发单位对应发文单位issueUnit
*/
@ApiModelProperty("印发单位对应发文单位issueUnit")
private String replicaUnit;
/**
* 文件数量
*/
@ApiModelProperty("文件数量")
private int size;
public BasicsFile toBasicsFile(){
BasicsFile basicsFile = new BasicsFile();
BeanUtils.copyProperties(this,basicsFile);
return basicsFile;
}
}
package com.tykj.forecast.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
/**
* @author mruny
* @create 2022/6/20 13:42:33
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileBasicsMeetingVO {
/**
* 文件名称
*/
@Column(name = "custom_name")
@ApiModelProperty("文件名称")
private String customName;
/**
* 文件类型
*/
@Column(name = "association_category")
@ApiModelProperty("文件类型")
private String associationCategory;
/**
* 发文字号
*/
@Column(name = "issue_number")
@ApiModelProperty("发文字号")
private String issueNumber;
/**
* 版头发文单位
*/
@Column(name = "front_issuing_unit")
@ApiModelProperty("版头发文单位")
private String frontIssuingUnit;
/**
* 签发人
*/
@Column(name = "issue_person")
@ApiModelProperty("签发人")
private String issuePerson;
/**
* 标题
*/
@Column(name = "title")
@ApiModelProperty("标题")
private String title;
/**
* 主体发文单位
*/
@Column(name = "body_issuing_unit")
@ApiModelProperty("主体发文单位")
private String bodyIssuingUnit;
/**
* 接收单位
*/
@Column(name = "accept_unit")
@ApiModelProperty("接收单位")
private String acceptUnit;
/**
* 发文日期
*/
@Column(name = "issue_date")
@ApiModelProperty("发文日期")
private String issueDate;
/**
* 抄送单位
*/
@Column(name = "copy_unit")
@ApiModelProperty("抄送单位")
private String copyUnit;
/**
* 发文单位
*/
@Column(name = "issue_unit")
@ApiModelProperty("发文单位")
private String issueUnit;
/**
* 印发日期对应发文日期issueDate
*/
@Column(name = "replica_date")
@ApiModelProperty("印发日期对应发文日期issueDate")
private String replicaDate;
/**
* 印发单位对应发文单位issueUnit
*/
@Column(name = "replica_unit")
@ApiModelProperty("印发单位对应发文单位issueUnit")
private String replicaUnit;
/**
* 文件数量
*/
@Column(name = "size")
@ApiModelProperty("文件数量")
private Long size;
/**
* 会议类型
*/
@Column(name = "meeting_type")
@ApiModelProperty("会议类型")
private String meetingType;
/**
* 参会人员
*/
@Column(name = "partici_pants")
@ApiModelProperty("参会人员")
private String particiPants;
/**
* 包括会议时间
*/
@Column(name = "no_meeting_info")
@ApiModelProperty("包括会议时间")
private String noMeetingInfo;
}
package com.tykj.forecast.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author mruny
* @create 2022/6/30 12:41:44
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FileNumber {
/**
* 总文件数
*/
private String size;
/**
* 本次解析文件数
*/
private String currentNum;
/**
* 已经解析过的文件数量
*/
private String formerlyNum;
}
package com.tykj.forecast.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
/**
* 测试类
*
* @author mruny
* @create 2022/6/17 14:44:40
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class FileTestVo {
/**
* 文件名称
*/
@Column(name = "custom_name")
@ApiModelProperty("文件名称")
private String customName;
/**
* 文件类型
*/
@Column(name = "association_category")
@ApiModelProperty("文件类型")
private String associationCategory;
/**
* 文件类别{"规范性文件":0, "通报类文件":1, "议事协调机构类文件":2, "其他类":3}
*/
@Column(name = "file_type")
@ApiModelProperty("文件类别{规范性文件:0, 通报类文件:1, 议事协调机构类文件:2, 其他类:3}")
private String fileType;
/**
* 发文字号
*/
@Column(name = "issue_number")
@ApiModelProperty("发文字号")
private String issueNumber;
/**
* 版头发文单位
*/
@Column(name = "front_issuing_unit")
@ApiModelProperty("版头发文单位")
private String frontIssuingUnit;
/**
* 签发人
*/
@Column(name = "issue_person")
@ApiModelProperty("签发人")
private String issuePerson;
/**
* 标题
*/
@Column(name = "title")
@ApiModelProperty("标题")
private String title;
/**
* 主体发文单位
*/
@Column(name = "body_issuing_unit")
@ApiModelProperty("主体发文单位")
private String bodyIssuingUnit;
/**
* 接收单位
*/
@Column(name = "accept_unit")
@ApiModelProperty("接收单位")
private String acceptUnit;
/**
* 发文日期
*/
@Column(name = "issue_date")
@ApiModelProperty("发文日期")
private String issueDate;
/**
* 抄送单位
*/
@Column(name = "copy_unit")
@ApiModelProperty("抄送单位")
private String copyUnit;
/**
* 发文单位
*/
@Column(name = "issue_unit")
@ApiModelProperty("发文单位")
private String issueUnit;
/**
* 印发日期对应发文日期issueDate
*/
@Column(name = "replica_date")
@ApiModelProperty("印发日期对应发文日期issueDate")
private String replicaDate;
/**
* 印发单位对应发文单位issueUnit
*/
@Column(name = "replica_unit")
@ApiModelProperty("印发单位对应发文单位issueUnit")
private String replicaUnit;
/**
* 文件数量
*/
@Column(name = "size")
@ApiModelProperty("文件数量")
private Long size;
}
package com.tykj.forecast.vo;
import com.tykj.forecast.entity.MeetingFile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;
/**
* 会议文件解析返回值
*
* @author mruny
* @create 2022/6/13 14:53:53
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("会议公文分析json")
public class MeetingFileVo {
/**
* 文件标题
*/
@ApiModelProperty("标题")
private String fileTitle;
/**
* 文件名称
*/
@ApiModelProperty("文件名称")
private String customName;
/**
* 会议类型
*/
@ApiModelProperty("会议类型")
private String meetingType;
/**
* 参会人员
*/
@ApiModelProperty("参会人员")
private String particiPants;
/**
* 包括会议时间
*/
@ApiModelProperty("包括会议时间")
private String noMeetingInfo;
/**
* 文件数量
*/
@ApiModelProperty("文件数量")
private int size;
public MeetingFile toMeetFile() {
MeetingFile meetingFile = new MeetingFile();
BeanUtils.copyProperties(this, meetingFile);
return meetingFile;
}
}
package com.tykj.forecast.vo;
import com.tykj.forecast.entity.RetrenchFile;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.BeanUtils;
/**
* 精简公文类别
*
* @author mruny
* @create 2022/6/13 14:57:24
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("精简公文类别")
public class RetrenchFileVo {
/**
* 文件标题
*/
@ApiModelProperty("标题")
private String title;
/**
* 文件类别{"规范性文件":0, "通报类文件":1, "议事协调机构类文件":2, "其他类":3}
*/
@ApiModelProperty("文件类别{规范性文件:0, 通报类文件:1, 议事协调机构类文件:2, 其他类:3}")
private String fileType;
/**
* 文件名称
*/
@ApiModelProperty("文件名称")
private String customName;
/**
* 文件数量
*/
@ApiModelProperty("文件数量")
private int size;
public RetrenchFile toRetrenchFile(){
RetrenchFile retrenchFile = new RetrenchFile();
BeanUtils.copyProperties(this,retrenchFile);
return retrenchFile;
}
}
package com.tykj.forecast.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author mruny
* @create 2022/6/30 13:19:16
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StatusBasicsFile {
/**
* 总数
*/
private String total;
/**
* 已经解析文件数
*/
private String size;
/**
* 是否运行
*/
private Boolean status;
}
package com.tykj.forecast.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author mruny
* @create 2022/6/30 13:44:50
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StatusMeetingFile {
/**
* 总数
*/
private String total;
/**
* 已经解析文件数
*/
private String size;
/**
* 是否运行
*/
private Boolean status;
}
package com.tykj.forecast.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author mruny
* @create 2022/6/30 13:45:02
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StatusRetrenchFile {
/**
* 总数
*/
private String total;
/**
* 已经解析文件数
*/
private String size;
/**
* 是否运行
*/
private Boolean status;
}
server:
port: 3784
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
url: jdbc:mysql://172.18.27.30:3306/forecast?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
# url: jdbc:mysql://localhost:3306/forecast?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
jpa:
hibernate:
ddl-auto: update
show-sql: true
database: mysql
\ No newline at end of file
#app{width:100%;height:100%}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-weight:400;vertical-align:baseline}body,html{width:100%;height:100%}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}li,ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}td,th{vertical-align:middle}a{color:#16418a;text-decoration:none;-webkit-backface-visibility:hidden}a,a:focus{outline:none}input:focus,select:focus,textarea:focus{outline:0 auto -webkit-focus-ring-color}
\ No newline at end of file
.chartStatisticsKD>div[data-v-38c71f12]{padding:.104167rem;background-color:#fff;border-radius:.052083rem}.title[data-v-38c71f12]{border-left:.026042rem solid #1b53ee;padding-left:.052083rem;margin-bottom:.104167rem}.charts[data-v-38c71f12]{width:100%;display:flex;justify-content:space-between}.charts>div[data-v-38c71f12]{height:19.5vw;background-color:#fbfcff}.analyticalRatioMain[data-v-38c71f12]{text-align:center;display:flex;justify-content:center;align-items:center;height:75%;font-size:.208333rem}.analyticalRatioMain>span[data-v-38c71f12]{font-weight:700}.analyticalRatioMain>span>span[data-v-38c71f12]{font-size:.09375rem}.withPaging[data-v-38c71f12]{position:relative}.withPaging>.paging[data-v-38c71f12]{position:absolute;z-index:999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.withPaging>.paging>i[data-v-38c71f12]{cursor:pointer}
\ No newline at end of file
.home[data-v-5b65298e]{height:100%}.homeHeader[data-v-5b65298e]{background-color:#4b6fd6;padding-left:.260417rem;display:flex}.homeHeader h1[data-v-5b65298e]{height:.364583rem;line-height:.364583rem;font-size:.15625rem;color:#e8edfa}.homeHeader>.headerNav[data-v-5b65298e]{display:flex;margin-left:1.041667rem;align-items:center}.homeHeader>.headerNav>div[data-v-5b65298e]{color:#becaf0;text-align:center;width:.78125rem;cursor:pointer}.homeHeader>.headerNav>div>div[data-v-5b65298e]{flex:1;display:flex;justify-content:center;align-items:flex-end;font-size:.098958rem}.homeHeader>.headerNav>div>hr[data-v-5b65298e]{background-color:#e4e9f9;width:.143229rem;height:1.6px;border:none}.headerNavAct[data-v-5b65298e]{background-color:#5d7eda;color:#f2f5fc!important;height:100%;display:flex;flex-direction:column;justify-content:center}.homeMain[data-v-5b65298e]{height:calc(100% - .36458rem);display:flex}.homeMain>.navPage[data-v-5b65298e]{width:200px}.iRight[data-v-5b65298e]{position:absolute;right:0;top:30%}.homeMain>.page[data-v-5b65298e]{box-sizing:border-box;width:calc(100% - 200px);padding:.052083rem .078125rem 0;background-color:#f4f5f7;height:100%;overflow:auto}.homeMain>.page>.pageTitle[data-v-5b65298e]{color:#666;border-left:.026042rem solid #1b53ee;padding-left:.052083rem;margin-bottom:.15625rem}.navActive>i[data-v-5b65298e],.navActive[data-v-5b65298e]{color:#409eff}
\ No newline at end of file
.chartStatisticsCD>div[data-v-787be527]{padding:.104167rem;background-color:#fff;border-radius:.052083rem}.title[data-v-787be527]{border-left:.026042rem solid #1b53ee;padding-left:.052083rem;margin-bottom:.104167rem}.charts[data-v-787be527]{width:100%;display:flex;justify-content:space-between}.charts>div[data-v-787be527]{height:19.5vw;background-color:#fbfcff}.analyticalRatioMain[data-v-787be527]{text-align:center;display:flex;justify-content:center;align-items:center;height:75%;font-size:.208333rem}.analyticalRatioMain>span[data-v-787be527]{font-weight:700}.analyticalRatioMain>span>span[data-v-787be527]{font-size:.09375rem}.withPaging[data-v-787be527]{position:relative}.withPaging>.paging[data-v-787be527]{position:absolute;z-index:999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.withPaging>.paging>i[data-v-787be527]{cursor:pointer}
\ No newline at end of file
.btnTabMain[data-v-b865da32]{background-color:#fff;padding:.104167rem;border-radius:.052083rem}.AIAnalysis[data-v-b865da32]{display:flex}.AIAnalysis>.el-button[data-v-b865da32]{border-color:#2a5fef;color:#2a5fef}.AIAnalysis>.el-button[data-v-b865da32]:hover{background-color:#8facfd}.AIAnalysis>.btnAIAnalysis[data-v-b865da32]{width:calc(100% - .52083rem);font-size:.09375rem}.AIAnalysis>.btnEmpty[data-v-b865da32]{width:.520833rem}.tableKD[data-v-b865da32]{margin-top:.078125rem}.paginationKD[data-v-b865da32]{text-align:right;margin-top:.052083rem}
\ No newline at end of file
.btnTabMain[data-v-5ea3b33e]{background-color:#fff;padding:.104167rem;border-radius:.052083rem}.AIAnalysis[data-v-5ea3b33e]{display:flex}.AIAnalysis>.el-button[data-v-5ea3b33e]{border-color:#2a5fef;color:#2a5fef}.AIAnalysis>.el-button[data-v-5ea3b33e]:hover{background-color:#8facfd}.AIAnalysis>.btnAIAnalysis[data-v-5ea3b33e]{width:calc(100% - .52083rem);font-size:.09375rem}.AIAnalysis>.btnEmpty[data-v-5ea3b33e]{width:.520833rem}.tableODI[data-v-5ea3b33e]{margin-top:.078125rem}.paginationODI[data-v-5ea3b33e]{text-align:right;margin-top:.052083rem}
\ No newline at end of file
.chartStatisticsODI>div[data-v-30738182]{padding:.104167rem;background-color:#fff;border-radius:.052083rem}.title[data-v-30738182]{border-left:.026042rem solid #1b53ee;padding-left:.052083rem;margin-bottom:.104167rem}.charts[data-v-30738182]{width:100%;display:flex;justify-content:space-between}.charts>div[data-v-30738182]{height:19.5vw;background-color:#fbfcff}.analyticalRatioMain[data-v-30738182]{text-align:center;display:flex;justify-content:center;align-items:center;height:75%;font-size:.208333rem}.analyticalRatioMain>span[data-v-30738182]{font-weight:700}.analyticalRatioMain>span>span[data-v-30738182]{font-size:.09375rem}.withPaging[data-v-30738182]{position:relative}.withPaging>.paging[data-v-30738182]{position:absolute;z-index:999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.withPaging>.paging>i[data-v-30738182]{cursor:pointer}
\ No newline at end of file
.btnTabMain[data-v-ac0d0bf0]{background-color:#fff;padding:.104167rem;border-radius:.052083rem}.AIAnalysis[data-v-ac0d0bf0]{display:flex}.AIAnalysis>.el-button[data-v-ac0d0bf0]{border-color:#2a5fef;color:#2a5fef}.AIAnalysis>.el-button[data-v-ac0d0bf0]:hover{background-color:#8facfd}.AIAnalysis>.btnAIAnalysis[data-v-ac0d0bf0]{width:calc(100% - .52083rem);font-size:.09375rem}.AIAnalysis>.btnEmpty[data-v-ac0d0bf0]{width:.520833rem}.tableCD[data-v-ac0d0bf0]{margin-top:.078125rem}.paginationCD[data-v-ac0d0bf0]{text-align:right;margin-top:.052083rem}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>analysis_demo</title><link href="css/chunk-12598c36.f5cfa276.css" rel="prefetch"><link href="css/chunk-181bb8c4.a2955ec9.css" rel="prefetch"><link href="css/chunk-2bedb97e.16c80ef5.css" rel="prefetch"><link href="css/chunk-3340ae1e.3067c179.css" rel="prefetch"><link href="css/chunk-51fe44f0.83958d53.css" rel="prefetch"><link href="css/chunk-67307fca.dabd7ba5.css" rel="prefetch"><link href="css/chunk-cba501c4.bee26840.css" rel="prefetch"><link href="js/chunk-12598c36.5bc9c110.js" rel="prefetch"><link href="js/chunk-181bb8c4.60e2723b.js" rel="prefetch"><link href="js/chunk-2bedb97e.3e2364ae.js" rel="prefetch"><link href="js/chunk-3340ae1e.e245e52e.js" rel="prefetch"><link href="js/chunk-51fe44f0.71bc9e17.js" rel="prefetch"><link href="js/chunk-67307fca.e661eb1a.js" rel="prefetch"><link href="js/chunk-cba501c4.33057de1.js" rel="prefetch"><link href="css/app.476519e5.css" rel="preload" as="style"><link href="css/chunk-vendors.6e8f7d6d.css" rel="preload" as="style"><link href="js/app.989fe22f.js" rel="preload" as="script"><link href="js/chunk-vendors.8c5bbf46.js" rel="preload" as="script"><link href="css/chunk-vendors.6e8f7d6d.css" rel="stylesheet"><link href="css/app.476519e5.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but analysis_demo doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.8c5bbf46.js"></script><script src="js/app.989fe22f.js"></script></body></html>
\ No newline at end of file
(function(t){function e(e){for(var r,o,i=e[0],u=e[1],s=e[2],f=0,h=[];f<i.length;f++)o=i[f],Object.prototype.hasOwnProperty.call(c,o)&&c[o]&&h.push(c[o][0]),c[o]=0;for(r in u)Object.prototype.hasOwnProperty.call(u,r)&&(t[r]=u[r]);d&&d(e);while(h.length)h.shift()();return a.push.apply(a,s||[]),n()}function n(){for(var t,e=0;e<a.length;e++){for(var n=a[e],r=!0,o=1;o<n.length;o++){var i=n[o];0!==c[i]&&(r=!1)}r&&(a.splice(e--,1),t=u(u.s=n[0]))}return t}var r={},o={app:0},c={app:0},a=[];function i(t){return u.p+"js/"+({}[t]||t)+"."+{"chunk-12598c36":"5bc9c110","chunk-181bb8c4":"60e2723b","chunk-2bedb97e":"3e2364ae","chunk-3340ae1e":"e245e52e","chunk-51fe44f0":"71bc9e17","chunk-67307fca":"e661eb1a","chunk-cba501c4":"33057de1"}[t]+".js"}function u(e){if(r[e])return r[e].exports;var n=r[e]={i:e,l:!1,exports:{}};return t[e].call(n.exports,n,n.exports,u),n.l=!0,n.exports}u.e=function(t){var e=[],n={"chunk-12598c36":1,"chunk-181bb8c4":1,"chunk-2bedb97e":1,"chunk-3340ae1e":1,"chunk-51fe44f0":1,"chunk-67307fca":1,"chunk-cba501c4":1};o[t]?e.push(o[t]):0!==o[t]&&n[t]&&e.push(o[t]=new Promise((function(e,n){for(var r="css/"+({}[t]||t)+"."+{"chunk-12598c36":"f5cfa276","chunk-181bb8c4":"a2955ec9","chunk-2bedb97e":"16c80ef5","chunk-3340ae1e":"3067c179","chunk-51fe44f0":"83958d53","chunk-67307fca":"dabd7ba5","chunk-cba501c4":"bee26840"}[t]+".css",c=u.p+r,a=document.getElementsByTagName("link"),i=0;i<a.length;i++){var s=a[i],f=s.getAttribute("data-href")||s.getAttribute("href");if("stylesheet"===s.rel&&(f===r||f===c))return e()}var h=document.getElementsByTagName("style");for(i=0;i<h.length;i++){s=h[i],f=s.getAttribute("data-href");if(f===r||f===c)return e()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=e,d.onerror=function(e){var r=e&&e.target&&e.target.src||c,a=new Error("Loading CSS chunk "+t+" failed.\n("+r+")");a.code="CSS_CHUNK_LOAD_FAILED",a.request=r,delete o[t],d.parentNode.removeChild(d),n(a)},d.href=c;var l=document.getElementsByTagName("head")[0];l.appendChild(d)})).then((function(){o[t]=0})));var r=c[t];if(0!==r)if(r)e.push(r[2]);else{var a=new Promise((function(e,n){r=c[t]=[e,n]}));e.push(r[2]=a);var s,f=document.createElement("script");f.charset="utf-8",f.timeout=120,u.nc&&f.setAttribute("nonce",u.nc),f.src=i(t);var h=new Error;s=function(e){f.onerror=f.onload=null,clearTimeout(d);var n=c[t];if(0!==n){if(n){var r=e&&("load"===e.type?"missing":e.type),o=e&&e.target&&e.target.src;h.message="Loading chunk "+t+" failed.\n("+r+": "+o+")",h.name="ChunkLoadError",h.type=r,h.request=o,n[1](h)}c[t]=void 0}};var d=setTimeout((function(){s({type:"timeout",target:f})}),12e4);f.onerror=f.onload=s,document.head.appendChild(f)}return Promise.all(e)},u.m=t,u.c=r,u.d=function(t,e,n){u.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},u.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},u.t=function(t,e){if(1&e&&(t=u(t)),8&e)return t;if(4&e&&"object"===typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(u.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)u.d(n,r,function(e){return t[e]}.bind(null,r));return n},u.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return u.d(e,"a",e),e},u.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},u.p="",u.oe=function(t){throw console.error(t),t};var s=window["webpackJsonp"]=window["webpackJsonp"]||[],f=s.push.bind(s);s.push=e,s=s.slice();for(var h=0;h<s.length;h++)e(s[h]);var d=f;a.push([0,"chunk-vendors"]),n()})({0:function(t,e,n){t.exports=n("56d7")},"034f":function(t,e,n){"use strict";n("85ec")},"56d7":function(t,e,n){"use strict";n.r(e);n("e260"),n("e6cf"),n("cca6"),n("a79d");var r=n("2b0e"),o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"app"}},[n("router-view")],1)},c=[],a={created:function(){"/"!==this.$router.path&&this.$router.push("/")}},i=a,u=(n("034f"),n("2877")),s=Object(u["a"])(i,o,c,!1,null,null,null),f=s.exports,h=(n("d3b7"),n("3ca3"),n("ddb0"),n("8c4f"));r["default"].use(h["a"]);var d=[{path:"*",redirect:"/"},{name:"home",path:"/",component:function(){return n.e("chunk-181bb8c4").then(n.bind(null,"77b8"))},meta:{title:"首页"},redirect:"/officialDocumentIdentification",children:[{name:"officialDocumentIdentification",path:"/officialDocumentIdentification",component:function(){return n.e("chunk-51fe44f0").then(n.bind(null,"b574"))},meta:{title:"公文基础识别"}},{name:"conferenceDocuments",path:"/conferenceDocuments",component:function(){return n.e("chunk-cba501c4").then(n.bind(null,"d672"))},meta:{title:"会议公文分析"}},{name:"keyDocuments",path:"/keyDocuments",component:function(){return n.e("chunk-3340ae1e").then(n.bind(null,"3b3f"))},meta:{title:"重点精简文件分析"}},{name:"chartStatisticsODI",path:"/chartStatisticsODI",component:function(){return n.e("chunk-67307fca").then(n.bind(null,"180a"))},meta:{title:"公文基础识别统计"}},{name:"chartStatisticsCD",path:"/chartStatisticsCD",component:function(){return n.e("chunk-2bedb97e").then(n.bind(null,"fd11"))},meta:{title:"会议公文分析统计"}},{name:"chartStatisticsKD",path:"/chartStatisticsKD",component:function(){return n.e("chunk-12598c36").then(n.bind(null,"d379"))},meta:{title:"重点精简文件分析统计"}}]}],l=new h["a"]({routes:d}),p=h["a"].prototype.push;h["a"].prototype.push=function(t){return p.call(this,t).catch((function(t){return t}))};var m=l,g=n("2f62");r["default"].use(g["a"]);var b=new g["a"].Store({state:{refreshPage:"",btnAILod:!1,statisticsLoading:!1},mutations:{changeRefreshPage:function(t,e){t.refreshPage=e},changeBtnAILod:function(t,e){t.btnAILod=e},changeStatisticsLoading:function(t,e){t.statisticsLoading=e}},actions:{changeRefreshPageAct:function(t,e){t.commit("changeRefreshPage",e)},changeBtnAILodAct:function(t,e){t.commit("changeBtnAILod",e)},changeStatisticsLoadingAct:function(t,e){t.commit("changeStatisticsLoading",e)}},modules:{}}),v=(n("5cfb"),n("5c96")),y=n.n(v),k=(n("0fae"),n("5530")),S=n("bc3a"),w=n.n(S),j="172.18.27.30:3784",F={http:"http://"+j,ws:"ws://"+j},P=F,O=function(t){return Object(v["Message"])(Object(k["a"])(Object(k["a"])({},t),{},{showClose:!0}))};["success","warning","info","error"].forEach((function(t){O[t]=function(e){return"string"===typeof e&&(e={message:e,showClose:!0}),e.type=t,Object(v["Message"])(e)}}));w.a.interceptors.request.use((function(t){return t}),(function(t){return Promise.reject(t)})),w.a.interceptors.response.use((function(t){return t}),(function(t){return Promise.reject(t)}));var E=function(t,e){var n=e.method,r=void 0===n?"get":n,o=e.timeout,c=void 0===o?0:o,a=e.data,i=void 0===a?{}:a,u=e.params,s=void 0===u?{}:u,f=e.headers,h=void 0===f?{"Content-Type":"application/json"}:f,d=e.dataType,l=void 0===d?"json":d,p={method:r,timeout:c,url:t,baseURL:P.http,data:i,params:s,headers:h,dataType:l};return w()(p)},L={importExtraction:function(){return E("/import/extraction",{method:"post"})},importStatusExtraction:function(){return E("/import/statusExtraction",{method:"get"})},getForecastsBasics:function(t){return E("/basicsFiles",{method:"get",params:t})},delForecastsBasics:function(){return E("/basicsFiles",{method:"put"})},importParser:function(){return E("/import/parser",{method:"post"})},importStatusParser:function(){return E("/import/statusParser",{method:"get"})},getForecastsMeeting:function(t){return E("/meetingFiles",{method:"get",params:t})},delForecastsMeeting:function(){return E("/meetingFiles",{method:"put"})},importFile:function(){return E("/import/file",{method:"post"})},importStatusFile:function(){return E("/import/statusFile",{method:"get"})},getForecastsRetrench:function(t){return E("/retrenchFiles",{method:"get",params:t})},delForecastsRetrench:function(){return E("/retrenchFiles",{method:"put"})},getEchartsBasicsStatistics:function(){return E("/basicsFiles/statistics",{method:"get"})},getEchartsMeetingStatistics:function(){return E("/meetingFiles/statistics",{method:"get"})},getEchartsRetrenchStatistics:function(){return E("/retrenchFiles/statistics",{method:"get"})},getForecastsBool:function(t){return E("/import/bool",{method:"get",params:t})}},D=L,A=(n("b059"),n("313e"));r["default"].prototype.$http=D,r["default"].prototype.$echarts=A,r["default"].use(y.a),r["default"].config.productionTip=!1,new r["default"]({router:m,store:b,render:function(t){return t(f)}}).$mount("#app")},"85ec":function(t,e,n){},b059:function(t,e,n){}});
\ No newline at end of file
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-181bb8c4"],{"32c6":function(t,e,i){"use strict";i("da99")},"77b8":function(t,e,i){"use strict";i.r(e);var s=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"home"},[i("div",{staticClass:"homeHeader"},[t._m(0),i("div",{staticClass:"headerNav"},[i("div",{class:"analysis"==t.pageType?"headerNavAct":"",on:{click:t.toAnalysis}},[i("div",[t._v(" 分析页 ")]),i("hr",{directives:[{name:"show",rawName:"v-show",value:"analysis"==t.pageType,expression:"pageType == 'analysis'"}]})]),i("div",{class:"statistics"==t.pageType?"headerNavAct":"",on:{click:t.toStatistics}},[i("div",[t._v(" 统计页 "),i("i",{directives:[{name:"show",rawName:"v-show",value:t.$store.state.statisticsLoading,expression:"$store.state.statisticsLoading"}],staticClass:"el-icon-loading"})]),i("hr",{directives:[{name:"show",rawName:"v-show",value:"statistics"==t.pageType,expression:"pageType == 'statistics'"}]})])])]),i("div",{staticClass:"homeMain"},[i("div",{staticClass:"navPage"},[i("el-menu",{staticClass:"el-menu-demo",staticStyle:{height:"100%"},attrs:{"default-active":t.activeIndexHome,"active-text-color":"#303133"},on:{select:t.handleSelectHome}},[i("el-menu-item",{attrs:{index:"officialDocumentIdentification"}},[i("div",{class:["officialDocumentIdentification"==t.activeIndexHome?"navActive":""]},[i("i",{staticClass:"el-icon-tickets"}),t._v(" 公文基础识别 "),i("i",{directives:[{name:"show",rawName:"v-show",value:"officialDocumentIdentification"==t.activeIndexHome,expression:"activeIndexHome == 'officialDocumentIdentification'"}],staticClass:"el-icon-caret-right iRight"})])]),i("el-menu-item",{attrs:{index:"conferenceDocuments"}},[i("div",{class:["conferenceDocuments"==t.activeIndexHome?"navActive":""]},[i("i",{staticClass:"el-icon-receiving"}),t._v(" 会议公文分析 "),i("i",{directives:[{name:"show",rawName:"v-show",value:"conferenceDocuments"==t.activeIndexHome,expression:"activeIndexHome == 'conferenceDocuments'"}],staticClass:"el-icon-caret-right iRight"})])]),i("el-menu-item",{attrs:{index:"keyDocuments"}},[i("div",{class:["keyDocuments"==t.activeIndexHome?"navActive":""]},[i("i",{staticClass:"el-icon-office-building"}),t._v(" 重点精简文件分析 "),i("i",{directives:[{name:"show",rawName:"v-show",value:"keyDocuments"==t.activeIndexHome,expression:"activeIndexHome == 'keyDocuments'"}],staticClass:"el-icon-caret-right iRight"})])])],1)],1),i("div",{staticClass:"page"},[i("div",{staticClass:"pageTitle"},[t._v(" "+t._s("/officialDocumentIdentification"==t.routerPath?"公文基础识别":"/conferenceDocuments"==t.routerPath?"会议公文分析":"/keyDocuments"==t.routerPath?"重点精简文件分析":"/chartStatisticsODI"==t.routerPath?"公文基础识别统计":"/chartStatisticsCD"==t.routerPath?"会议公文分析统计":"重点精简文件分析统计")+" "),i("el-button",{directives:[{name:"show",rawName:"v-show",value:"/chartStatisticsODI"==t.routerPath||"/chartStatisticsCD"==t.routerPath||"/chartStatisticsKD"==t.routerPath,expression:"routerPath == '/chartStatisticsODI' || routerPath == '/chartStatisticsCD' || routerPath == '/chartStatisticsKD'"}],staticStyle:{float:"right"},attrs:{type:"primary",icon:"el-icon-refresh-left"},on:{click:t.refresh}},[t._v("重新统计")])],1),i("router-view")],1)])])},a=[function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",[i("h1",[i("i",{staticClass:"el-icon-share"}),t._v("  AI智能公文分析系统")])])}],c={name:"home",data:function(){return{activeIndexHome:"officialDocumentIdentification",pageType:"analysis",routerPath:"/officialDocumentIdentification"}},watch:{$route:function(t){var e=t.path;this.routerPath=e,this.pageType="/chartStatisticsODI"==e||"/chartStatisticsKD"==e||"/chartStatisticsCD"==e?"statistics":"analysis",this.activeIndexHome="/officialDocumentIdentification"==e||"/chartStatisticsODI"==e?"officialDocumentIdentification":"/conferenceDocuments"==e||"/chartStatisticsCD"==e?"conferenceDocuments":"keyDocuments"}},methods:{handleSelectHome:function(t){this.$route.path!="/".concat(t)&&(this.activeIndexHome=t,"analysis"==this.pageType?this.$router.push("./".concat(t)):"officialDocumentIdentification"==t?this.$router.push("./chartStatisticsODI"):"conferenceDocuments"==t?this.$router.push("./chartStatisticsCD"):this.$router.push("./chartStatisticsKD"))},toAnalysis:function(){this.pageType="analysis",this.$store.dispatch("changeStatisticsLoadingAct",!1),"/chartStatisticsODI"==this.routerPath?this.$router.push("./officialDocumentIdentification"):"/chartStatisticsCD"==this.routerPath?this.$router.push("./conferenceDocuments"):"/chartStatisticsKD"==this.routerPath&&this.$router.push("./keyDocuments")},toStatistics:function(){this.pageType="statistics","/officialDocumentIdentification"==this.routerPath?this.$router.push("./chartStatisticsODI"):"/conferenceDocuments"==this.routerPath?this.$router.push("./chartStatisticsCD"):"/keyDocuments"==this.routerPath&&this.$router.push("./chartStatisticsKD")},refresh:function(){this.$store.dispatch("changeRefreshPageAct",{path:this.$route.path,isData:(new Date).getTime()})}}},o=c,n=(i("32c6"),i("2877")),r=Object(n["a"])(o,s,a,!1,null,"5b65298e",null);e["default"]=r.exports},da99:function(t,e,i){}}]);
\ No newline at end of file
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-3340ae1e"],{"027b":function(t,e,n){},"3b3f":function(t,e,n){"use strict";n.r(e);var s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"officialDocumentIdentification"},[n("div",{staticClass:"btnTabMain"},[n("div",{staticClass:"AIAnalysis"},[n("el-button",{staticClass:"btnAIAnalysis",attrs:{plain:"",loading:t.btnAILod},on:{click:t.getImportFile}},[t._v(" "+t._s(t.btnAILod?"AI分析中,":"AI分析")+" "+t._s(t.fileAnalysisStatus.status?"已分析"+t.fileAnalysisStatus.size+"个文件,共"+t.fileAnalysisStatus.total+"个文件":"")+" ")]),n("el-button",{staticClass:"btnEmpty",attrs:{plain:"",loading:t.btnLod},on:{click:t.empty}},[t._v(t._s(t.btnLod?"清空中":"清空"))])],1),n("div",{staticClass:"tableKD"},[n("el-table",{staticStyle:{width:"100%"},attrs:{data:t.tableDataKD,stripe:"","header-cell-style":{background:"#f0f4ff"},height:"600px"}},[n("el-table-column",{attrs:{type:"index",index:t.indexMethod,label:"序号",align:"center"}}),n("el-table-column",{attrs:{label:"重点精简文件类别",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s("0"==e.row.fileType?"规范性文件":"1"==e.row.fileType?"通报类文件":"2"==e.row.fileType?"议事协调机构类文件":"3"==e.row.fileType?"其他":"--")+" ")]}}])}),n("el-table-column",{attrs:{label:"文件路径",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.customName?e.row.customName:"--")+" ")]}}])}),n("el-table-column",{attrs:{label:"标题",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.title?e.row.title:"--")+" ")]}}])})],1)],1)]),n("div",{staticClass:"paginationKD"},[n("el-pagination",{attrs:{background:"","current-page":t.pageIndex,"page-sizes":[10,20,30,50],"page-size":t.pageSize,layout:" sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1)])},a=[],i={name:"keyDocuments",data:function(){return{tableDataKD:[],pageIndex:1,pageSize:10,total:0,tblIsEmpty:0,btnLod:!1,btnAILod:!1,fileAnalysisStatus:{size:0,total:0,status:!1}}},mounted:function(){this.getImportStatusFile(),this.getForecastsRetrench()},methods:{getImportStatusFile:function(){var t=this;this.$http.importStatusFile().then((function(e){t.fileAnalysisStatus=e.data,t.fileAnalysisStatus.status&&(t.btnAILod=!0)})).catch((function(t){console.log(t)}))},getForecastsRetrench:function(){var t=this,e={pageNum:this.pageIndex,pageSize:this.pageSize,status:"1"};this.$http.getForecastsRetrench(e).then((function(e){e.data.content.length>0&&(t.tblIsEmpty=1);var n=e.data;t.tableDataKD=n.content,t.total=n.totalElements})).catch((function(t){console.log(t)}))},empty:function(){var t=this;this.btnAILod?this.$message({showClose:!0,message:"AI正在分析中,请稍等",type:"warning"}):this.$confirm("此操作将清空分析结果, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){t.btnLod=!0,t.$http.delForecastsRetrench().then((function(e){t.$message({type:"success",message:"清空成功!"}),t.tblIsEmpty=0,t.pageIndex=1,t.pageSize=10,t.total=0,t.getForecastsRetrench(),t.btnLod=!1})).catch((function(e){console.log(e),t.btnLod=!1,t.$message({showClose:!0,message:"删除失败",type:"error"})}))})).catch((function(){t.$message({type:"info",message:"已取消删除"})}))},indexMethod:function(t){var e=(this.pageIndex-1)*this.pageSize;return e+t+1},getImportFile:function(){if(1!=this.tblIsEmpty){var t=this;t.btnAILod=!0,t.$store.dispatch("changeBtnAILodAct",!0),t.$http.importFile().then((function(e){t.btnAILod=!1,t.$store.dispatch("changeBtnAILodAct",!1),t.$message({showClose:!0,message:"AI分析已完成",type:"success"}),t.getForecastsRetrench()})).catch((function(e){t.btnAILod=!1,t.$store.dispatch("changeBtnAILodAct",!1),t.$message({showClose:!0,message:"分析出错!",type:"error"}),console.log(e)}))}else this.$message({showClose:!0,message:"请先清空才能进行AI分析"})},handleSizeChange:function(t){this.pageSize=t,this.handleCurrentChange(1)},handleCurrentChange:function(t){this.pageIndex=t,this.getForecastsRetrench()}}},o=i,l=(n("5129"),n("2877")),c=Object(l["a"])(o,s,a,!1,null,"b865da32",null);e["default"]=c.exports},5129:function(t,e,n){"use strict";n("027b")}}]);
\ No newline at end of file
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-51fe44f0"],{2253:function(t,e,s){"use strict";s("bfe6")},b574:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"officialDocumentIdentification"},[s("div",{staticClass:"btnTabMain"},[s("div",{staticClass:"AIAnalysis"},[s("el-button",{staticClass:"btnAIAnalysis",attrs:{plain:"",loading:t.btnAILod},on:{click:t.getImportExtraction}},[t._v(" "+t._s(t.btnAILod?"AI分析中,":"AI分析")+" "+t._s(t.fileAnalysisStatus.status?"已分析"+t.fileAnalysisStatus.size+"个文件,共"+t.fileAnalysisStatus.total+"个文件":"")+" ")]),s("el-button",{staticClass:"btnEmpty",attrs:{plain:"",loading:t.btnLod},on:{click:t.empty}},[t._v(t._s(t.btnLod?"清空中":"清空"))])],1),s("div",{staticClass:"tableODI"},[s("el-table",{staticStyle:{width:"100%"},attrs:{data:t.tableDataODI,stripe:"","header-cell-style":{background:"#f0f4ff"},height:"600px"}},[s("el-table-column",{attrs:{type:"index",index:t.indexMethod,label:"序号",align:"center"}}),s("el-table-column",{attrs:{label:"文件路径",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.customName?e.row.customName:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"公文类别",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s("0"==e.row.associationCategory?"简报专报":"1"==e.row.associationCategory?"会议":"2"==e.row.associationCategory?"总结汇报":"3"==e.row.associationCategory?"报表":"4"==e.row.associationCategory?"App":"5"==e.row.associationCategory?"其他":"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"发文字号",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.issueNumber?e.row.issueNumber:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"签发人",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.issuePerson?e.row.issuePerson:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"标题",width:"","show-overflow-tooltip":""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.title?e.row.title:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"发文单位",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.issueUnit?e.row.issueUnit:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"抄送单位",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.copyUnit?e.row.copyUnit:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"接收单位",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.acceptUnit?e.row.acceptUnit:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"印发单位",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.replicaUnit?e.row.replicaUnit:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"发文日期",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.issueDate?e.row.issueDate:"--")+" ")]}}])}),s("el-table-column",{attrs:{label:"印发日期",width:""},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.replicaDate?e.row.replicaDate:"--")+" ")]}}])})],1)],1)]),s("div",{staticClass:"paginationODI"},[s("el-pagination",{attrs:{background:"","current-page":t.pageIndex,"page-sizes":[10,20,30,50],"page-size":t.pageSize,layout:" sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1)])},n=[],o={name:"officialDocumentIdentification",data:function(){return{tableDataODI:[],pageIndex:1,pageSize:10,total:0,tblIsEmpty:0,btnLod:!1,btnAILod:!1,fileAnalysisStatus:{size:0,total:0,status:!1}}},mounted:function(){this.getImportStatusExtraction(),this.getforecastsBasics()},methods:{getImportStatusExtraction:function(){var t=this;this.$http.importStatusExtraction().then((function(e){t.fileAnalysisStatus=e.data,t.fileAnalysisStatus.status&&(t.btnAILod=!0)})).catch((function(t){console.log(t)}))},getforecastsBasics:function(){var t=this,e={pageNum:this.pageIndex,pageSize:this.pageSize,status:"1"};this.$http.getForecastsBasics(e).then((function(e){e.data.content.length>0&&(t.tblIsEmpty=1);var s=e.data;t.tableDataODI=s.content,t.total=s.totalElements})).catch((function(t){console.log(t)}))},empty:function(){var t=this;this.btnAILod?this.$message({showClose:!0,message:"AI正在分析中,请稍等",type:"warning"}):this.$confirm("此操作将清空分析结果, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){t.btnLod=!0,t.$http.delForecastsBasics().then((function(e){t.$message({type:"success",message:"清空成功!"}),t.tblIsEmpty=0,t.pageIndex=1,t.pageSize=10,t.total=0,t.getforecastsBasics(),t.btnLod=!1})).catch((function(e){console.log(e),t.btnLod=!1,t.$message({showClose:!0,message:"删除失败",type:"error"})}))})).catch((function(){t.$message({type:"info",message:"已取消删除"})}))},indexMethod:function(t){var e=(this.pageIndex-1)*this.pageSize;return e+t+1},getImportExtraction:function(){if(1!=this.tblIsEmpty){var t=this;t.btnAILod=!0,t.$store.dispatch("changeBtnAILodAct",!0),t.$http.importExtraction().then((function(e){t.btnAILod=!1,t.$store.dispatch("changeBtnAILodAct",!1),t.$message({showClose:!0,message:"AI分析已完成",type:"success"}),t.getforecastsBasics()})).catch((function(e){t.btnAILod=!1,t.$store.dispatch("changeBtnAILodAct",!1),t.$message({showClose:!0,message:"分析出错!",type:"error"}),console.log(e)}))}else this.$message({showClose:!0,message:"请先清空才能进行AI分析"})},handleSizeChange:function(t){this.pageSize=t,this.handleCurrentChange(1)},handleCurrentChange:function(t){this.pageIndex=t,this.getforecastsBasics()}}},i=o,l=(s("2253"),s("2877")),c=Object(l["a"])(i,a,n,!1,null,"5ea3b33e",null);e["default"]=c.exports},bfe6:function(t,e,s){}}]);
\ No newline at end of file
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-cba501c4"],{"4be4":function(t,e,n){},ba5a:function(t,e,n){"use strict";n("4be4")},d672:function(t,e,n){"use strict";n.r(e);var a=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"officialDocumentIdentification"},[n("div",{staticClass:"btnTabMain"},[n("div",{staticClass:"AIAnalysis"},[n("el-button",{staticClass:"btnAIAnalysis",attrs:{plain:"",loading:t.btnAILod},on:{click:t.getImportParser}},[t._v(" "+t._s(t.btnAILod?"AI分析中,":"AI分析")+" "+t._s(t.fileAnalysisStatus.status?"已分析"+t.fileAnalysisStatus.size+"个文件,共"+t.fileAnalysisStatus.total+"个文件":"")+" ")]),n("el-button",{staticClass:"btnEmpty",attrs:{plain:"",loading:t.btnLod},on:{click:t.empty}},[t._v(t._s(t.btnLod?"清空中":"清空"))])],1),n("div",{staticClass:"tableCD"},[n("el-table",{staticStyle:{width:"100%"},attrs:{data:t.tableDataCD,stripe:"","header-cell-style":{background:"#f0f4ff"},height:"600px"}},[n("el-table-column",{attrs:{type:"index",index:t.indexMethod,label:"序号",align:"center"}}),n("el-table-column",{attrs:{label:"文件路径",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.customName?e.row.customName:"--")+" ")]}}])}),n("el-table-column",{attrs:{label:"会议类别",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s("1"==e.row.meetingType?"一类会议":"2"==e.row.meetingType?"二类会议":"3"==e.row.meetingType?"三类会议":"-1"==e.row.meetingType?"其他":"--")+" ")]}}])}),n("el-table-column",{attrs:{label:"会议时间",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.noMeetingInfo.meetingTime?e.row.noMeetingInfo.meetingTime:"--")+" ")]}}])}),n("el-table-column",{attrs:{label:"标题",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.fileTitle?e.row.fileTitle:"--")+" ")]}}])}),n("el-table-column",{attrs:{label:"参会人员",width:"",align:"center"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v(" "+t._s(e.row.particiPants?e.row.particiPants:"--")+" ")]}}])})],1)],1)]),n("div",{staticClass:"paginationCD"},[n("el-pagination",{attrs:{background:"","current-page":t.pageIndex,"page-sizes":[10,20,30,50],"page-size":t.pageSize,layout:" sizes, prev, pager, next, jumper",total:t.total},on:{"size-change":t.handleSizeChange,"current-change":t.handleCurrentChange}})],1)])},s=[],i=(n("d81d"),{name:"conferenceDocuments",data:function(){return{tableDataCD:[],pageIndex:1,pageSize:10,total:0,tblIsEmpty:0,btnLod:!1,btnAILod:!1,fileAnalysisStatus:{size:0,total:0,status:!1}}},mounted:function(){this.getImportStatusParser(),this.getForecastsMeeting()},methods:{getImportStatusParser:function(){var t=this;this.$http.importStatusParser().then((function(e){t.fileAnalysisStatus=e.data,t.fileAnalysisStatus.status&&(t.btnAILod=!0)})).catch((function(t){console.log(t)}))},getForecastsMeeting:function(){var t=this,e={pageNum:this.pageIndex,pageSize:this.pageSize,status:"1"};this.$http.getForecastsMeeting(e).then((function(e){e.data.content.length>0&&(t.tblIsEmpty=1);var n=e.data;n.content.map((function(t){t.noMeetingInfo=JSON.parse(t.noMeetingInfo)})),t.tableDataCD=n.content,t.total=n.totalElements})).catch((function(t){console.log(t)}))},empty:function(){var t=this;this.btnAILod?this.$message({showClose:!0,message:"AI正在分析中,请稍等",type:"warning"}):this.$confirm("此操作将清空分析结果, 是否继续?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then((function(){t.btnLod=!0,t.$http.delForecastsMeeting().then((function(e){t.$message({type:"success",message:"清空成功!"}),t.tblIsEmpty=0,t.pageIndex=1,t.pageSize=10,t.total=0,t.getForecastsMeeting(),t.btnLod=!1})).catch((function(e){console.log(e),t.btnLod=!1,t.$message({showClose:!0,message:"删除失败",type:"error"})}))})).catch((function(){t.$message({type:"info",message:"已取消删除"})}))},indexMethod:function(t){var e=(this.pageIndex-1)*this.pageSize;return e+t+1},getImportParser:function(){if(1!=this.tblIsEmpty){var t=this;t.btnAILod=!0,t.$store.dispatch("changeBtnAILodAct",!0),t.$http.importParser().then((function(e){t.btnAILod=!1,t.$store.dispatch("changeBtnAILodAct",!1),t.$message({showClose:!0,message:"AI分析已完成",type:"success"}),t.getForecastsMeeting()})).catch((function(e){t.btnAILod=!1,t.$store.dispatch("changeBtnAILodAct",!1),t.$message({showClose:!0,message:"分析出错!",type:"error"}),console.log(e)}))}else this.$message({showClose:!0,message:"请先清空才能进行AI分析"})},handleSizeChange:function(t){this.pageSize=t,this.handleCurrentChange(1)},handleCurrentChange:function(t){this.pageIndex=t,this.getForecastsMeeting()}}}),o=i,l=(n("ba5a"),n("2877")),c=Object(l["a"])(o,a,s,!1,null,"ac0d0bf0",null);e["default"]=c.exports},d81d:function(t,e,n){"use strict";var a=n("23e7"),s=n("b727").map,i=n("1dde"),o=i("map");a({target:"Array",proto:!0,forced:!o},{map:function(t){return s(this,t,arguments.length>1?arguments[1]:void 0)}})}}]);
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论