上传绿通传输程序

master
gsy 10 months ago
commit 60f36c71a0

8
.idea/.gitignore vendored

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CamelCaseConfig">
<option name="cb1State" value="false" />
<option name="cb2State" value="false" />
<option name="cb5State" value="false" />
<option name="cb6State" value="false" />
</component>
</project>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile default="true" name="Default" enabled="true" />
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="GreenTraffic" />
</profile>
</annotationProcessing>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="GreenTraffic" options="-parameters" />
</option>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
</component>
</project>

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://maven.aliyun.com/repository/public" />
</remote-repository>
<remote-repository>
<option name="id" value="OracleMavenRepository" />
<option name="name" value="OracleMavenRepository" />
<option name="url" value="https://maven.oracle.com" />
</remote-repository>
</component>
</project>

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project>

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,238 @@
<?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.7.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>GreenTrafficPass</groupId>
<artifactId>GreenTrafficPass</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>GreenTrafficPass</name>
<description>GreenTrafficPass</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<repositories>
<repository>
<id>OracleMavenRepository</id>
<url>https://maven.oracle.com</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- 外置依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
<exclusions>
<exclusion>
<artifactId>mybatis-plus-extension</artifactId>
<groupId>com.baomidou</groupId>
</exclusion>
</exclusions>
</dependency>
<!--验证码 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
<!-- 数据库链接包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.5.3.1</version>
</dependency>
<!-- 复合主键-->
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.7.3-RELEASE</version>
</dependency>
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>sqljdbc4</artifactId>
<version>3.0</version>
</dependency>
<!--JWT鉴权-->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.3.0</version>
</dependency>
<!-- 密码加密-->
<dependency>
<groupId>com.enc</groupId>
<artifactId>EndPassJava</artifactId>
<version>1.0.0</version>
</dependency>
<!-- DateUtil-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!--spring-session-->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.25</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>com.dm</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>1.8.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.8</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.8</version>
</dependency>
<!-- Oracle JDBC driver -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>orai18n</artifactId>
<version>19.3.0.0</version>
</dependency>
<!-- JAX-WS dependency -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.2.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.2.5</version>
</dependency>
<dependency>
<groupId>com.goldendb</groupId>
<artifactId>goldendb</artifactId>
<version>5.1.46.67</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
</dependency>
</dependencies>
<build>
<finalName>GreenTrafficPass</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<!--打包时去除配置文件-->
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>*.properties</exclude>
</excludes>
<includes>
<include>logback-spring.xml</include>
<include>static/**</include>
<include>excel/**</include>
<include>META-INF/spring.factories</include>
</includes>
</resource>
</resources>
</build>
</project>

@ -0,0 +1,44 @@
package com.nmgs;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.redis.LettuceClientConfigurationBuilderCustomizer;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@EnableAsync
@SpringBootApplication
@MapperScan(basePackages = {"com.nmgs.mapper.green"}, sqlSessionFactoryRef = "sqlSessionFactoryGreen")
@MapperScan(basePackages = {"com.nmgs.mapper.check"}, sqlSessionFactoryRef = "sqlSessionFactoryCheck")
@EnableScheduling //开启任务调度
public class GreenTrafficApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(GreenTrafficApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(GreenTrafficApplication.class, args);
}
@Bean
public TaskScheduler taskScheduler() {
//注入定时器线程池,一次定时器,处理三次数据
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(10);
return taskScheduler;
}
}

@ -0,0 +1,107 @@
package com.nmgs;
import com.nmgs.util.PathUtil;
import com.trkf.PasswordEncryption.PassWordUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertiesPropertySource;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
@Configuration
public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
@Override
public void postProcessEnvironment(ConfigurableEnvironment configurableEnvironment, SpringApplication application) {
System.out.println("GreenTraffic读取公用配置文件");
//公用配置文件路径
String path = PathUtil.applicationPath;
//本项目配置文件路径
String NewPath = PathUtil.projectApplicationPath;
System.out.println("Loading local settings from : " + path);
System.out.println("Loading local settings from : " + NewPath);
Properties properties = new Properties();
Properties Newproperties = new Properties();
try {
File fileproperties = new File(path);
File fileNewproperties = new File(NewPath);
// 判断文件夹是否存在
if (!fileproperties.exists()) {
fileproperties.createNewFile();
}
if (!fileNewproperties.exists()) {
fileNewproperties.createNewFile();
}
properties.load(new FileInputStream(path));
String DBType = properties.getProperty("DBType") == null ? "1" : properties.getProperty("DBType");
Newproperties.load(new FileInputStream(NewPath));
properties.setProperty("spring.logback.logPath",PathUtil.TomcatPath+"/logs");
// properties.setProperty("spring.datasource.url",properties.getProperty("DBUrl"));
// properties.setProperty("spring.datasource.username",properties.getProperty("DBUserName"));
// properties.setProperty("spring.datasource.password",PassWordUtils.decrypt(properties.getProperty("DBPassWord")));
//
// properties.setProperty("spring.datasource.db-green.jdbc-url",properties.getProperty("DBUrl"));
// properties.setProperty("spring.datasource.db-green.username",properties.getProperty("DBUserName"));
// properties.setProperty("spring.datasource.db-green.password",PassWordUtils.decrypt(properties.getProperty("DBPassWord")));
properties.setProperty("spring.datasource.db-green.jdbc-url",properties.getProperty("GreenDBUrl"));
properties.setProperty("spring.datasource.db-green.username",properties.getProperty("GreenDBUserName"));
properties.setProperty("spring.datasource.db-green.password",PassWordUtils.decrypt(properties.getProperty("GreenDBPassWord")));
properties.setProperty("spring.datasource.db-check.jdbc-url",properties.getProperty("CheckDBUrl"));
properties.setProperty("spring.datasource.db-check.username",properties.getProperty("CheckDBUserName"));
properties.setProperty("spring.datasource.db-check.password",PassWordUtils.decrypt(properties.getProperty("CheckDBPassWord")));
if(properties.getProperty("IsGolDen").equals("1")){
properties.setProperty("spring.datasource.db-green.driver-class-name",Newproperties.getProperty("GoldenClassName"));
properties.setProperty("spring.datasource.db-check.driver-class-name",Newproperties.getProperty("OracleClassName"));
properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("MySQLvalidationQuery"));
properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("MySQLvalidationQuery"));
}else{
if(DBType.equals("1")){
properties.setProperty("spring.datasource.db-green.driver-class-name",Newproperties.getProperty("sqlClassName"));
properties.setProperty("spring.datasource.driver-class-name",Newproperties.getProperty("sqlClassName"));
properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("sqlvalidationQuery"));
properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("sqlvalidationQuery"));
}else if(DBType.equals("2")){
properties.setProperty("spring.datasource.db-green.driver-class-name",Newproperties.getProperty("OracleClassName"));
properties.setProperty("spring.datasource.db-check.driver-class-name",Newproperties.getProperty("OracleClassName"));
properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("OraclevalidationQuery"));
properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("OraclevalidationQuery"));
}else if(DBType.equals("3")){
properties.setProperty("spring.datasource.db-green.driver-class-name",Newproperties.getProperty("DMClassName"));
properties.setProperty("spring.datasource.db-check.driver-class-name",Newproperties.getProperty("DMClassName"));
properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("DMvalidationQuery"));
properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("DMvalidationQuery"));
}else if(DBType.equals("4")){
properties.setProperty("spring.datasource.db-green.driver-class-name",Newproperties.getProperty("MySQLClassName"));
properties.setProperty("spring.datasource.db-check.driver-class-name",Newproperties.getProperty("MySQLClassName"));
properties.setProperty("spring.datasource.validationQuery",Newproperties.getProperty("MySQLvalidationQuery"));
properties.setProperty("spring.datasource.hikari.connection-test-query",Newproperties.getProperty("MySQLvalidationQuery"));
}
}
System.out.println("---------------------------GreenTraffic本次载入数据库----------------------");
System.out.println("server.port: " + properties.getProperty("server.port"));
System.out.println(" url : " + properties.getProperty("spring.datasource.url"));
System.out.println(" username : " + properties.getProperty("spring.datasource.username"));
//环境名称随意取,但尽量不能和其他环境名称相同,避免不生效
PropertiesPropertySource propertySource = new PropertiesPropertySource("environmentPostProcessor", properties);
PropertiesPropertySource newPropertySource = new PropertiesPropertySource("newEnvironmentPostProcessor", Newproperties);
//外部的文件是最先导入的
configurableEnvironment.getPropertySources().addFirst(propertySource);
//如果公用配置文件没有配置的则使用本项目的配置文件
configurableEnvironment.getPropertySources().addLast(newPropertySource);
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,81 @@
package com.nmgs.config;
/**
*
* SpringMVCConfig使FilterConfig
*
* @author Administrator
*/
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
@SuppressWarnings("deprecation")
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Resource
private FilterConfig filterconfig;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 设置拦截类
registry.addInterceptor(filterconfig)
.addPathPatterns("/**")
// 是否允许证书
.excludePathPatterns(
"/MenuIndex/**",
"/ETCLanePay/**",
"/Manager/**",
"/queryPage/**",
"/staSubcomCollection/**",
"/staDetilCollection/**",
"/freightCollection/**",
"/index/**",
"/carTrack/**",
"/printView/**",
"/trackMap/**",
"/logManager/**",
"/wxCarUserInfo/**",
"/showStanEcharts/**",
"/404/**",
"/MenuIndex/**",
"/index.html",
"/assets/**",
"/img/**",
"/static/**",
"/error/**"
);
}
/**
*
*/
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
// 设置容许跨域请求的域名
config.addAllowedOriginPattern("*");
// config.addAllowedOrigin("*");
// 设置容许的方法
config.addAllowedMethod("*");
// 容许任何头
config.addAllowedHeader("*");
config.addExposedHeader("token");
//是否支持cookie跨域
config.setAllowCredentials(true);
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
return new CorsFilter(configSource);
}
}

@ -0,0 +1,40 @@
package com.nmgs.config;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.nmgs.mapper.check"}, sqlSessionFactoryRef = "sqlSessionFactoryCheck")
public class DBSrcCheck {
@Autowired
MybatisPlusInterceptor mybatisPlusInterceptor;
@Bean
public SqlSessionFactory sqlSessionFactoryCheck(@Qualifier("db_check") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.addInterceptor(mybatisPlusInterceptor);
sqlSessionFactory.setConfiguration(configuration);
// sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
// .getResources("classpath:mapper/check/**/*.xml"));
return sqlSessionFactory.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplateCheck(@Qualifier("sqlSessionFactoryCheck") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}

@ -0,0 +1,48 @@
package com.nmgs.config;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.nmgs.mapper.green"}, sqlSessionFactoryRef = "sqlSessionFactoryGreen")
public class DBSrcGreen {
@Autowired
MybatisPlusInterceptor mybatisPlusInterceptor;
@Bean
@Primary
public SqlSessionFactory sqlSessionFactoryGreen(@Qualifier("db_green") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
// 添加分页插件
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.addInterceptor(mybatisPlusInterceptor);
sqlSessionFactory.setConfiguration(configuration);
// sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
// .getResources("classpath:mapper/green/**/*.xml"));
return sqlSessionFactory.getObject();
}
@Bean
@Primary
public SqlSessionTemplate sqlSessionTemplateGreen(@Qualifier("sqlSessionFactoryGreen") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}

@ -0,0 +1,62 @@
package com.nmgs.config;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.context.annotation.Configuration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariConfig hikariConfig(){
return new HikariConfig();
}
@Primary
@Bean(name = "db_green")
@ConfigurationProperties(prefix = "spring.datasource.db-green")
public DataSource dBSrcGreen() {
HikariDataSource hikariDataSource = new HikariDataSource();
hikariDataSource.setMaximumPoolSize(hikariConfig().getMaximumPoolSize());
hikariDataSource.setAutoCommit(hikariConfig().isAutoCommit());
hikariDataSource.setIdleTimeout(hikariConfig().getIdleTimeout());
hikariDataSource.setPoolName(hikariConfig().getPoolName());
hikariDataSource.setMaxLifetime(hikariConfig().getMaxLifetime());
hikariDataSource.setConnectionTimeout(hikariConfig().getConnectionTimeout());
hikariDataSource.setMinimumIdle(hikariConfig().getMinimumIdle());
hikariDataSource.setAllowPoolSuspension(hikariConfig().isAllowPoolSuspension());
hikariDataSource.setRegisterMbeans(hikariConfig().isRegisterMbeans());
hikariDataSource.setLeakDetectionThreshold(hikariConfig().getLeakDetectionThreshold());
return hikariDataSource;
}
@Primary
@Bean(name = "db_check")
@ConfigurationProperties(prefix = "spring.datasource.db-check")
public DataSource dBSrcCheck() {
HikariDataSource hikariDataSource = new HikariDataSource();
hikariDataSource.setMaximumPoolSize(hikariConfig().getMaximumPoolSize());
hikariDataSource.setAutoCommit(hikariConfig().isAutoCommit());
hikariDataSource.setIdleTimeout(hikariConfig().getIdleTimeout());
hikariDataSource.setPoolName(hikariConfig().getPoolName());
hikariDataSource.setMaxLifetime(hikariConfig().getMaxLifetime());
hikariDataSource.setConnectionTimeout(hikariConfig().getConnectionTimeout());
hikariDataSource.setMinimumIdle(hikariConfig().getMinimumIdle());
hikariDataSource.setAllowPoolSuspension(hikariConfig().isAllowPoolSuspension());
hikariDataSource.setRegisterMbeans(hikariConfig().isRegisterMbeans());
hikariDataSource.setLeakDetectionThreshold(hikariConfig().getLeakDetectionThreshold());
return hikariDataSource;
}
}

@ -0,0 +1,17 @@
package com.nmgs.config;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.ErrorPageRegistrar;
import org.springframework.boot.web.server.ErrorPageRegistry;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@Component
public class ErrorConfig implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
registry.addErrorPages(error404Page);
}
}

@ -0,0 +1,65 @@
package com.nmgs.config;
/**
*
*
* @author Administrator
*/
import com.nmgs.util.TokenUtil;
import dm.jdbc.filter.stat.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@Component
@Slf4j
public class FilterConfig implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if(request.getHeader("Origin")==null){
response.setHeader("Access-Control-Allow-Origin", "*");//支持跨域请求
}else{
System.out.println("request.getHeader(\"Origin\")=======>" + request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));//支持跨域请求
}
response.setHeader("Access-Control-Allow-Credentials", "true");//是否支持cookie跨域
response.setHeader("Access-Control-Allow-Methods", "*");//X-forwared-port,X-forwarded-host,
response.setHeader("Access-Control-Allow-Headers", "Authorization,Origin, X-Requested-With, Content-Type, Accept,Access-Token");//Origin, X-Requested-With, Content-Type, Accept,Access-Token
response.setHeader("Set-Cookie", "SameSite=None");
String token = request.getHeader("token");
// if(token == null){
// return true;
// }
// if (token.equals("test")) {
// return true;
// }
if (token != null) {
boolean result = TokenUtil.verify(token,request);
//判断绑定
if (result) {
log.info("通过拦截器");
return true;
}
}
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
JSONObject res = new JSONObject();
res.put("status", "-1");
res.put("msg", "鉴权失败");
PrintWriter out = null;
out = response.getWriter();
out.write(res.toString());
out.flush();
out.close();
return false;
// return true;
}
}

@ -0,0 +1,41 @@
package com.nmgs.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.nmgs.util.PropertiesUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
if(PropertiesUtil.getValue("DBType").equals("1")){
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER2005));
}else if(PropertiesUtil.getValue("DBType").equals("2")){
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));
}else if(PropertiesUtil.getValue("DBType").equals("3")){
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.DM));
}else if(PropertiesUtil.getValue("DBType").equals("4")){
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
}
return interceptor;
}
/**
*
*
*/
// @Bean
// public PaginationInterceptor paginationInterceptor() {
// PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// // 设置请求的页面大于最大页后操作, true调回到首页false 继续请求 默认false
// // paginationInterceptor.setOverflow(false);
// // 设置最大单页限制数量,默认 500 条,-1 不受限制
// // paginationInterceptor.setLimit(500);
// // 开启 count 的 join 优化,只针对部分 left join
// paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
// return paginationInterceptor;
// }
}

@ -0,0 +1,34 @@
package com.nmgs.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
@Configuration
//当spring.redis.enable为false时或为空时 不启用redis
//prefix = "rest"application.properties配置文件中有关本配置项的前缀。
//name = "auth-open"application.properties配置文件中本次配置项的key
//havingValue = "true"从配置文件读取的值跟havingValue中设置的值做比较如果一样则返回true否则返回false。如果返回值为false则该configuration不生效为true才生效。
//matchIfMissing = true表示如果没有在application.properties匹配到该属性参数时默认返回true即不配置时也满足条件。
@ConditionalOnProperty(prefix = "spring.redis", name = "enable")
@EnableRedisHttpSession
public class RedisSessionConfig {
// 下面都是自定义配置默认为spingboot默认使用redis
// private String host;
// private String password;
// private String port;
// private String timeout;
// private String database;
//
// @Bean
// public JedisConnectionFactory redisConnectionFactory() {
// JedisConnectionFactory factory = new JedisConnectionFactory();
// factory.setHostName(host);
// factory.setPassword(password);
// factory.setPort(Integer.parseInt(port));
//// 设置连接超时时间
// factory.setTimeout(Integer.parseInt(timeout));
// factory.setDatabase(Integer.parseInt(database));
// return factory;
// }
}

@ -0,0 +1,34 @@
package com.nmgs.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@Configuration
@EnableAsync
public class ThreadPoolConfig {
@Bean("greenTrafficThreadPool") //线程池实例名,多个线程池配置需要声明,一个线程池可有可无
public Executor executorNormal() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(4);
executor.setMaxPoolSize(120);
executor.setQueueCapacity(30000);
executor.setKeepAliveSeconds(60);
executor.setThreadNamePrefix("NORMAL--");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());
executor.initialize();
return executor;
}
@Bean
public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
ThreadPoolTaskScheduler ThreadPoolTaskScheduler = new ThreadPoolTaskScheduler();
// ThreadPoolTaskScheduler.initialize();
return ThreadPoolTaskScheduler;
}
}

@ -0,0 +1,292 @@
package com.nmgs.controller;
import com.nmgs.entity.GreenTrafficCheckResult;
import com.nmgs.mapper.green.GreenTrafficCheckResultMapper;
import com.nmgs.mapper.green.GreenTrafficMapper;
import com.nmgs.service.IGreenTrafficService;
import com.nmgs.util.PropertiesUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
@RequestMapping("/GreenTraffic")
@CrossOrigin(origins = "*")
public class GreenTrafficController {
public static Logger logger = LoggerFactory.getLogger(GreenTrafficController.class);
@Autowired
private IGreenTrafficService greenTrafficService;
@Autowired
private GreenTrafficMapper greenTrafficMapper;
@Autowired
private GreenTrafficCheckResultMapper greenTrafficCheckResultMapper;
@PostMapping("/getGreenTrafficPage")
@ResponseBody
public Object getGreenTrafficPage(@RequestBody Map<String, Object> params){
return greenTrafficService.getGreenTrafficList(params);
}
@PostMapping("/getGreenTrafficSearchData")
@ResponseBody
public Object GreenTrafficSearchData(@RequestBody Map<String, Object> params) {
System.out.println(params);
Map<String, Object> resultMap = new HashMap<>();
if("N".equals(params.get("isChange"))){
resultMap.put("carNoColorList", greenTrafficMapper.selectCarNoColorList());
resultMap.put("roadList", greenTrafficMapper.selectRoadList());
resultMap.put("staList", greenTrafficMapper.selectStaList(params));
}else{
resultMap.put("staList", greenTrafficMapper.selectStaList(params));
}
return resultMap;
}
@PostMapping("/getFreightTypes")
@ResponseBody
public Object getFreightTypes(@RequestBody Map<String, Object> params) {
System.out.println(params);
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("freightTypeList", greenTrafficMapper.selectFreightTypeList(params));
return resultMap;
}
@PostMapping("/getGreenTrafficCheckFromData")
@ResponseBody
public Object getGreenTrafficCheckFromData(@RequestBody Map<String, Object> params, HttpServletRequest request){
Map<String, Object> resultMap = new HashMap<>();
logger.info("params============"+params);
String token = request.getHeader("token");
logger.info("获取token============"+token);
try {
resultMap = greenTrafficService.getGreenTrafficCheckFromData(params,token);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficController.getGreenTrafficCheckFromData: 获取查验数据失败"+e);
//e.printStackTrace();
resultMap.put("checkFromData","{}");
}
return resultMap;
}
@PostMapping("/getGreenTrafficCheckFromPicData")
@ResponseBody
public Object getGreenTrafficCheckFromPicData(@RequestBody Map<String, Object> params, HttpServletRequest request){
Map<String, Object> resultMap = new HashMap<>();
logger.info("params============"+params);
String token = request.getHeader("token");
logger.info("获取token============"+token);
try {
resultMap = greenTrafficService.getGreenTrafficCheckFromPicData(params,token);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficController.getGreenTrafficCheckFromPicData: 获取查验图片数据失败"+e);
//e.printStackTrace();
resultMap.put("checkPic","{}");
}
return resultMap;
}
@PostMapping("/saveOrUpdateCheckResult")
@ResponseBody
public Object saveOrUpdateCheckResult(@RequestBody GreenTrafficCheckResult greenTrafficCheckResult) {
Map<String, Object> resultMap = new HashMap<>();
logger.info("greenTrafficCheckResult============"+greenTrafficCheckResult.toString());
try{
int res = greenTrafficService.saveOrUpdateCheckResult(greenTrafficCheckResult);
if(res >= 0){
resultMap.put("msg","更新稽核结论成功");
resultMap.put("result",1);
resultMap.put("data","[]");
}else{
resultMap.put("msg","更新稽核结论失败");
resultMap.put("result",-1);
resultMap.put("data","[]");
}
return resultMap;
}catch (Exception e){
logger.error("com.nmgs.controller.GreenTrafficController.saveOrUpdateCheckResult: 更新稽核结论数据失败"+e);
resultMap.put("msg","更新稽核结论失败");
resultMap.put("result",-1);
resultMap.put("data","[]");
return resultMap;
}
}
@PostMapping("/getGreenTrafficCheckResultData")
@ResponseBody
public Object saveOrUpdateCheckResult(@RequestBody Map<String, Object> params) {
return greenTrafficCheckResultMapper.getCheckResultListByListNo(String.valueOf(params.get("listNo")));
}
@GetMapping("/exportGreenTrafficExcle")
@ResponseBody
public void exportGreenTrafficExcle(String searchForm, HttpServletResponse response){
logger.info("searchForm============"+searchForm.toString());
try {
greenTrafficService.exportGreenTrafficExcle(searchForm,response);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficController.exportGreenTrafficExcle: 导出失败"+e);
}
}
@PostMapping("/greenTotalCountByProvince")
@ResponseBody
public Object greenTotalCountByProvince(@RequestBody Map<String, Object> params){
return greenTrafficService.greenTotalCountByProvince(params);
}
@PostMapping("/getStaSubComCollectionData")
@ResponseBody
public Object getStaSubComCollectionData(@RequestBody Map<String, Object> params) {
// return greenTrafficService.getStaSubComCollectionData(params);
Map<String, Object> resultMap = new HashMap<>();
//从配置文件中读取数据库连接类型
params.put("DBTYPE", PropertiesUtil.getValue("DBType"));
resultMap.put("unionList", greenTrafficMapper.getGreenTrafficListGroupByUnionName(params));
resultMap.put("subComList", greenTrafficMapper.getGreenTrafficListGroupBySubCom(params));
return resultMap;
}
@PostMapping("/getStaSubComCollectionSearchData")
@ResponseBody
public Object getStaSubComCollectionSearchData(@RequestBody Map<String, Object> params) {
System.out.println(params);
Map<String, Object> resultMap = new HashMap<>();
if("N".equals(params.get("isChange"))){
resultMap.put("unionList", greenTrafficMapper.selectUnionList());
resultMap.put("staList", greenTrafficMapper.selectStaList(params));
}else{
resultMap.put("staList", greenTrafficMapper.selectStaList(params));
}
return resultMap;
}
@PostMapping("/getStaDetilCollection")
@ResponseBody
public Object getStaDetilCollection(@RequestBody Map<String, Object> params) {
return greenTrafficService.getStaDetilCollection(params);
}
@PostMapping("/getStaDetilSearchData")
@ResponseBody
public Object getStaDetilSearchData(@RequestBody Map<String, Object> params) {
System.out.println(params);
Map<String, Object> resultMap = new HashMap<>();
if("N".equals(params.get("isChange"))){
resultMap.put("subComList", greenTrafficMapper.selectSubComList());
resultMap.put("staList", greenTrafficMapper.selectStaList(params));
resultMap.put("roadList", greenTrafficMapper.selectRoadList());
}else{
resultMap.put("staList", greenTrafficMapper.selectStaList(params));
}
return resultMap;
}
@PostMapping("/getFigthTypeCollection")
@ResponseBody
public Object getStaFigthTypeCollectionByfreightType(@RequestBody Map<String, Object> params){
return greenTrafficService.getStaFigthTypeCollection(params);
}
@PostMapping("/getFigthTypeCollectionSearchData")
@ResponseBody
public Object getStaFigthTypeCollectionSearchData(@RequestBody Map<String, Object> params) {
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("unionList", greenTrafficMapper.selectUnionList());
resultMap.put("freightTypeList", greenTrafficMapper.selectFreightTypeList(params));
return resultMap;
}
@PostMapping("/getGreenTotalCollection")
@ResponseBody
public Object getGreenTotalCollection(@RequestBody Map<String, Object> params){
return greenTrafficService.getGreenTotalCollection(params);
}
@PostMapping("/getGreenFeeTotalCollection")
@ResponseBody
public Object getGreenFeeTotalCollection(@RequestBody Map<String, Object> params){
return greenTrafficService.getGreenFeeTotalCollection(params);
}
@PostMapping("/getFreightTotalCollection")
@ResponseBody
public Object getFreightTotalCollection(@RequestBody Map<String, Object> params){
return greenTrafficService.getFreightTotalCollection(params);
}
@PostMapping("/getUnionFreightCollection")
@ResponseBody
public Object getUnionFreightCollection(@RequestBody Map<String, Object> params){
return greenTrafficService.getUnionFreightCollection(params);
}
@PostMapping("/getSingleCarTrack")
@ResponseBody
public Object getSingleCarTrack(@RequestBody Map<String, Object> params){
//先判断车牌号码是否正确
List<Map<String, Object>> greenAcarNoByAcarNoStr = greenTrafficMapper.getGreenAcarNoByAcarNoStr(params);
if(null == greenAcarNoByAcarNoStr || greenAcarNoByAcarNoStr.isEmpty()){
return "输入的车牌号码再绿通流水中未找到";
}
return greenTrafficService.getSingleCarTrack(params);
}
@PostMapping("/getGreenAcarNoByAcarNoStr")
@ResponseBody
public Object getGreenAcarNoByAcarNoStr(@RequestBody Map<String, Object> params){
return greenTrafficMapper.getGreenAcarNoByAcarNoStr(params);
}
@PostMapping("/getMenuByUserIdAndMenId")
@ResponseBody
public Object getMenuByUserIdAndMenId(@RequestBody Map<String, Object> params){
return greenTrafficMapper.getMenuByUserIdAndMenId(params);
}
}

@ -0,0 +1,106 @@
package com.nmgs.controller;
import com.nmgs.mapper.green.GreenTrafficCheckResultMapper;
import com.nmgs.mapper.green.GreenTrafficMapper;
import com.nmgs.service.IGreenTrafficExportExcelService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@Controller
@RequestMapping("/GreenTrafficExportExcel")
@CrossOrigin(origins = "*")
public class GreenTrafficExportExcelController {
public static Logger logger = LoggerFactory.getLogger(GreenTrafficExportExcelController.class);
@Autowired
private IGreenTrafficExportExcelService greenTrafficExportExcelService;
@Autowired
private GreenTrafficMapper greenTrafficMapper;
@Autowired
private GreenTrafficCheckResultMapper greenTrafficCheckResultMapper;
@GetMapping("/exportStaUnionCollectionExcle")
@ResponseBody
public void exportstaUnionCollectionExcle(String searchForm, HttpServletResponse response){
logger.info("searchForm============"+searchForm.toString());
try {
greenTrafficExportExcelService.exportstaUnionCollectionExcle(searchForm,response);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficExportExcelController.exportstaUnionCollectionExcle: 导出失败"+e);
}
}
@GetMapping("/exportStaCollectionExcle")
@ResponseBody
public void exportstaCollectionExcle(String searchForm, HttpServletResponse response){
logger.info("searchForm============"+searchForm.toString());
try {
greenTrafficExportExcelService.exportstaCollectionExcle(searchForm,response);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficExportExcelController.exportstaCollectionExcle: 导出失败"+e);
}
}
@GetMapping("/exportUnionFreightCollectionExcle")
@ResponseBody
public void exportUnionFreightCollectionExcle(String searchForm, HttpServletResponse response){
logger.info("searchForm============"+searchForm.toString());
try {
greenTrafficExportExcelService.exportUnionFreightCollectionExcle(searchForm,response);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficExportExcelController.exportUnionFreightCollectionExcle: 导出失败"+e);
}
}
@GetMapping("/exportSingleTrackExcle")
@ResponseBody
public void exportSingleTrackExcle(String searchForm, HttpServletResponse response){
logger.info("searchForm============"+searchForm.toString());
try {
greenTrafficExportExcelService.exportSingleTrackExcle(searchForm,response);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficExportExcelController.exportSingleTrackExcle: 导出失败"+e);
}
}
@GetMapping("/exportUnionTotalExcle")
@ResponseBody
public void exportUnionTotalExcle(String searchForm, HttpServletResponse response){
logger.info("searchForm============"+searchForm.toString());
try {
greenTrafficExportExcelService.exportUnionTotalExcle(searchForm,response);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficExportExcelController.exportSingleTrackExcle: 导出失败"+e);
}
}
@GetMapping("/exportSubComTotalExcle")
@ResponseBody
public void exportSubComTotalExcle(String searchForm, HttpServletResponse response){
logger.info("searchForm============"+searchForm.toString());
try {
greenTrafficExportExcelService.exportSubComTotalExcle(searchForm,response);
} catch (Exception e) {
logger.error("com.nmgs.controller.GreenTrafficExportExcelController.exportSingleTrackExcle: 导出失败"+e);
}
}
}

@ -0,0 +1,94 @@
package com.nmgs.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@TableName("CHECK_RESULT_GREEN_FREIGHTTYPES")
@NoArgsConstructor
@AllArgsConstructor
public class CheckResultGreenFreightTypes {
@TableId(value = "TRANSACTIONID")
private String transActionId;
@TableField("FREIGHTTYPES")
private String freightTypes;
@TableField("CHECKTIME")
private Date checkTime;
@TableField("LISTNO")
private String listNo;
@TableField("APPOINTMENTID")
private String appointmentId;
@TableField("CHECKID")
private String checkId;
@TableField("CHECKRESULT")
private Integer checkResult;
@TableField("CRATETYPE")
private Integer crateType;
@TableField("CRATETYPETEXT")
private String crateTypeText;
@TableField("DRIVERTELEPHONE")
private String driverTelephone;
@TableField("ENSTATIONID")
private String enStationId;
@TableField("ENWEIGHT")
private Integer enWeight;
@TableField("EXSTATIONID")
private String exStationId;
@TableField("EXTIME")
private Date exTime;
@TableField("EXWEIGHT")
private Integer exWeight;
@TableField("INSPECTOR")
private String inspector;
@TableField("MEMO")
private String memo;
@TableField("PASSID")
private String passId;
@TableField("PAYFEE")
private Integer payFee;
@TableField("REASON")
private String reason;
@TableField("REVIEWER")
private String reviewer;
@TableField("VEHICLEID")
private String vehicleId;
@TableField("VEHICLETYPE")
private Integer vehicleType;
@TableField("RESULTTRANSACTIONID")
private String resultTransActionId;
}

@ -0,0 +1,107 @@
package com.nmgs.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.ibatis.type.JdbcType;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("GREENTRAFFIC_TABLE")
@NoArgsConstructor
@AllArgsConstructor
public class GreenTraffic {;
@TableId(value = "LISTNO")
private String listNo;
@TableField(value = "ROADNO")
private Integer roadNo;
@TableField(value = "STANO")
private Integer staNo;
@TableField(value = "CLASSDATE")
private Date classDate;
@TableField("DT")
private Date dt;
@TableField("MANNO")
private long manNo;
@TableField("MAN")
private String man;
@TableField("ACARNO")
private String acarNo;
@TableField("ATYPE")
@JsonProperty("aType")
private Integer aType;
@TableField("KIND")
private Integer kind;
@TableField("CASH")
private BigDecimal cash;
@TableField("INCASH")
private BigDecimal inCash;
@TableField("PAYCASH")
private BigDecimal payCash;
@TableField("ID")
private String id;
@TableField("ISASYNC")
private String isAsync;
@TableField(exist = false)
@JsonProperty("aTypeValue")
private String aTypeValue; //车辆颜色
@TableField(exist = false)
private String kindValue; //车辆类型
@TableField(exist = false)
private String staName;//收费站名称
@TableField(exist = false)
private String inStaNo;//入口收费站NO
@TableField(exist = false)
private String inStaName;//入口收费站名称
@TableField(exist = false)
private String roadName;//道路名称
@TableField(exist = false)
private String freightTypes;//运输货物类型
@TableField(exist = false)
private String freightTypeName;//运输货物名称
@TableField(exist = false)
private String passId;//交易id
@TableField(exist = false)
private String inInWeight;//入口称重
@TableField(exist = false)
private String inAxisCnt;//入口车轴
}

@ -0,0 +1,86 @@
package com.nmgs.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.Date;
@Data
@TableName("GREENTRAFFICCHECK_TABLE")
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class GreenTrafficCheck {;
@TableId(value = "LISTNO")
private String listNo;
@TableField(value = "CHECKTIME")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
private Date checkTime;
@TableField(value = "VEHICLEID")
private String vehicleId;
@TableField(value = "VEHICLETYPE")
private String vehicleType;
@TableField(value = "TRANSACTIONTYPE")
private String transactionType;
@TableField(value = "CHECKID")
private String checkId;
@TableField(value = "CHECKRESULT")
private String checkResult;
@TableField(value = "FREIGHTTYPE")
private String freightType;
@TableField(value = "FREIGHTTYPEDESC")
private String freightTypeDesc;
@TableField(value = "ENWEIGHT")
private String enWeight;
@TableField(value = "EXWEIGHT")
private String exWeight;
@TableField(value = "FEE")
private String fee;
@TableField(value = "ENTRYTOLLGATE")
private String entryTollgate;
@TableField(value = "ENTRYTOLLGATEDESC")
private String entryTollgateDesc;
@TableField(value = "EXITTOLLGATE")
private String exitTollgate;
@TableField(value = "EXITTOLLGATEDESC")
private String exitTollgateDesc;
@TableField(value = "INSPECTORID")
private String inspectorId;
@TableField(value = "INSPECTORNAME")
private String inspectorName;
@TableField(value = "REVIEWERUSER")
private String reviewerUser;
@TableField(value = "CHECKDATAJSON")
private String checkDataJson;
}

@ -0,0 +1,39 @@
package com.nmgs.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("GREENTRAFFICCHECKPIC_TABLE")
@NoArgsConstructor
@AllArgsConstructor
public class GreenTrafficCheckPic {
@TableField(value = "LISTNO")
@MppMultiId
private String listNo;
@TableField(value = "PICTYPE")
@MppMultiId
private String picType;
@TableField("PICDATA")
private String picData;
@TableField(exist = false)
private String typeName;//类型名称
}

@ -0,0 +1,28 @@
package com.nmgs.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName("GREENTRAFFICCHECKRESULT_TABLE")
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class GreenTrafficCheckResult {;
@TableId(value = "LISTNO")
private String listNo;
@TableField(value = "CHECKRESULT")
private String checkResult;
}

@ -0,0 +1,40 @@
package com.nmgs.mapper.check;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Mapper
public interface CheckResultMapper{
/**
*
* @param params
* @return
*/
List<Map<String,Object>> getCheckResultListByFreightTypeAndDate(@Param("params") Map<String, Object> params);
/**
*
* @param page
* @param params
* @return
*/
Page<Map<String, Object>> getCheckResultListByCheckTime(Page<Map<String, Object>> page, HashMap<String, Object> params);
@Select(" SELECT MAX(FREIGHTTYPES) as FreightType FROM CHECKRESULT_INFO_TABLE WHERE TRANSACTIONID = #{transactionid} and VEHICLEID like #{aCarNo}")
String getMaxFreightByTransActionId(@Param("transactionid")String transactionid, @Param("aCarNo")String aCarNo);
@Select(" SELECT MAX(FREIGHTTYPES) as FreightType FROM CHECKRESULT_INFO_TABLE WHERE PASSID = #{passId} and VEHICLEID like #{aCarNo}")
String getMaxFreightByPassId(@Param("passId")String passId, @Param("aCarNo")String aCarNo);
List<Map<String, Object>> getResultListByTransActionId(@Param("transactionid")String transactionid, @Param("aCarNo")String aCarNo);
List<Map<String, Object>> getResultListByPassId(@Param("passId")String passId, @Param("aCarNo")String aCarNo);
}

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmgs.mapper.check.CheckResultMapper">
<select id="getCheckResultListByfreightTypeAndDate" parameterType="java.util.HashMap" resultType="java.util.HashMap">
select checks.TRANSACTIONID from CHECKRESULT_INFO_TABLE checks
<where>
and checks.TRANSACTIONID is not null
<!-- 车牌号查询条件 -->
<if test="params.freightType != null and params.freightType != ''">
<bind name="freightType" value="'%'+params.freightType+'%'"/>
AND checks.FREIGHTTYPES like #{freightType}
</if>
<!-- 开始时间查询条件 -->
<if test="params.startTime != null and params.startTime != ''">
<if test="params.DBTYPE == 1">
AND checks.CHECKTIME >= dateadd(day,0,#{params.startTime})
</if>
<if test="params.DBTYPE == 2">
AND checks.CHECKTIME >= TO_DATE(#{params.startTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 3">
AND checks.CHECKTIME >= TO_DATE(#{params.startTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 4">
AND checks.CHECKTIME >= STR_TO_DATE(#{params.startTime}, '%Y-%m-%d %H:%i:%s')
</if>
</if>
<!-- 结束时间查询条件 -->
<if test="params.endTime != null and params.endTime != ''">
<if test="params.DBTYPE == 1">
AND checks.CHECKTIME &lt;= dateadd(day,0,#{params.endTime})
</if>
<if test="params.DBTYPE == 2">
AND checks.CHECKTIME &lt;= TO_DATE(#{params.endTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 3">
AND checks.CHECKTIME &lt;= TO_DATE(#{params.endTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 4">
AND checks.CHECKTIME &lt;= STR_TO_DATE(#{params.endTime}, '%Y-%m-%d %H:%i:%s')
</if>
</if>
</where>
</select>
<select id="getCheckResultListByCheckTime" parameterType="java.util.HashMap" resultType="java.util.HashMap">
SELECT
checks.TRANSACTIONID,
checks.FREIGHTTYPES,
checks.PASSID,
checks.CHECKTIME
FROM
CHECKRESULT_INFO_TABLE checks
<where>
AND checks.TRANSACTIONID IS NOT NULL
<!-- 开始时间查询条件 -->
<if test="params.maxCheckTime != null and params.maxCheckTime != ''">
<if test="params.DBTYPE == 1">
AND checks.CHECKTIME >= dateadd(day,0,#{params.maxCheckTime})
</if>
<if test="params.DBTYPE == 2">
AND checks.CHECKTIME >= TO_DATE(#{params.maxCheckTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 3">
AND checks.CHECKTIME >= TO_DATE(#{params.maxCheckTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 4">
AND checks.CHECKTIME >= STR_TO_DATE(#{params.maxCheckTime}, '%Y-%m-%d %H:%i:%s')
</if>
</if>
</where>
GROUP BY
checks.PASSID,
checks.TRANSACTIONID,
checks.FREIGHTTYPES,
checks.CHECKTIME
ORDER BY
checks.CHECKTIME
</select>
<select id="getResultListByTransActionId" resultType="java.util.HashMap">
SELECT
result.TRANSACTIONID,
result.FREIGHTTYPES ,
result.CHECKTIME ,
result.APPOINTMENTID,
result.CHECKID ,
result.CHECKRESULT ,
result.CRATETYPE ,
crate.text as CRATETYPETEXT ,
result.DRIVERTELEPHONE ,
result.ENSTATIONID ,
result.ENWEIGHT ,
result.EXTIME ,
result.EXWEIGHT ,
result.INSPECTOR ,
result.MEMO ,
result.PASSID ,
result.PAYFEE ,
result.REASON ,
result.REVIEWER ,
result.VEHICLEID ,
result.VEHICLETYPE ,
result.EXSTATIONID
FROM
CHECKRESULT_INFO_TABLE result
left join CRATETYPE_TEXT crate on crate.value = result.CRATETYPE
WHERE TRANSACTIONID = #{transactionid} and VEHICLEID like #{aCarNo}
</select>
<select id="getResultListByPassId" resultType="java.util.HashMap">
SELECT
result.TRANSACTIONID,
result.FREIGHTTYPES ,
result.CHECKTIME ,
result.APPOINTMENTID,
result.CHECKID ,
result.CHECKRESULT ,
result.CRATETYPE ,
crate.text as CRATETYPETEXT ,
result.DRIVERTELEPHONE ,
result.ENSTATIONID ,
result.ENWEIGHT ,
result.EXTIME ,
result.EXWEIGHT ,
result.INSPECTOR ,
result.MEMO ,
result.PASSID ,
result.PAYFEE ,
result.REASON ,
result.REVIEWER ,
result.VEHICLEID ,
result.VEHICLETYPE ,
result.EXSTATIONID
FROM
CHECKRESULT_INFO_TABLE result
left join CRATETYPE_TEXT crate on crate.value = result.CRATETYPE
WHERE PASSID = #{passId} and VEHICLEID like #{aCarNo}
</select>
</mapper>

@ -0,0 +1,28 @@
package com.nmgs.mapper.green;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.nmgs.entity.CheckResultGreenFreightTypes;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Mapper
public interface CheckResultGreenFreightTypesMapper extends MppBaseMapper<CheckResultGreenFreightTypes> {
@Select("select TRANSACTIONID,CHECKTIME from CHECK_RESULT_GREEN_FREIGHTTYPES where CHECKTIME = (select MAX(CHECKTIME) from CHECK_RESULT_GREEN_FREIGHTTYPES)")
List<Map<String,Object>> getMaxCheckTime();
int insertAll(@Param("params")HashMap<String, Object> params, @Param("freightTypes") List<CheckResultGreenFreightTypes> checkResultGreenFreightTypes);
@Update("update CHECK_RESULT_GREEN_FREIGHTTYPES set FREIGHTTYPES=#{freightType} where TRANSACTIONID=#{transActionId} ")
int updateFreightTypesByTransActionId(@Param("transActionId")String transActionId, @Param("freightType")String freightType);
}

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmgs.mapper.green.CheckResultGreenFreightTypesMapper">
<insert id="insertAll">
<if test="params.DBTYPE == 1">
INSERT INTO CHECK_RESULT_GREEN_FREIGHTTYPES (TRANSACTIONID, FREIGHTTYPES, CHECKTIME) VALUES
<foreach collection="freightTypes" item="freightType" separator=",">
(#{freightType.transActionId}, #{freightType.freightTypes}, #{freightType.checkTime})
</foreach>
</if>
<if test="params.DBTYPE == 2">
INSERT ALL
<foreach collection="freightTypes" item="freightType" separator="">
INTO CHECK_RESULT_GREEN_FREIGHTTYPES (TRANSACTIONID, FREIGHTTYPES, CHECKTIME) VALUES (#{freightType.transActionId}, #{freightType.freightTypes}, #{freightType.checkTime})
</foreach>
SELECT * FROM dual
</if>
<if test="params.DBTYPE == 3">
INSERT INTO CHECK_RESULT_GREEN_FREIGHTTYPES (TRANSACTIONID, FREIGHTTYPES, CHECKTIME) VALUES
<foreach collection="freightTypes" item="freightType" separator=",">
(#{freightType.transActionId}, #{freightType.freightTypes}, #{freightType.checkTime})
</foreach>
</if>
<if test="params.DBTYPE == 4">
INSERT INTO CHECK_RESULT_GREEN_FREIGHTTYPES (TRANSACTIONID, FREIGHTTYPES, CHECKTIME) VALUES
<foreach collection="freightTypes" item="freightType" separator=",">
(#{freightType.transActionId}, #{freightType.freightTypes}, #{freightType.checkTime})
</foreach>
</if>
</insert>
</mapper>

@ -0,0 +1,23 @@
package com.nmgs.mapper.green;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.nmgs.entity.GreenTrafficCheck;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
public interface GreenTrafficCheckMapper extends MppBaseMapper<GreenTrafficCheck> {
/**
* 绿
* @param params
* @return
*/
List<GreenTrafficCheck> getCheckListByListNo(@Param("params")Map<String, Object> params);
}

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmgs.mapper.green.GreenTrafficCheckMapper">
<select id="getCheckListByListNo" parameterType="java.util.HashMap" resultType="com.nmgs.entity.GreenTrafficCheck">
select
checks.LISTNO,
checks.CHECKTIME ,
checks.VEHICLEID ,
checks.VEHICLETYPE,
checks.TRANSACTIONTYPE,
checks.CHECKID,
checks.CHECKRESULT,
checks.FREIGHTTYPE,
checks.FREIGHTTYPEDESC,
checks.ENWEIGHT,
checks.EXWEIGHT,
checks.FEE,
checks.ENTRYTOLLGATE,
checks.ENTRYTOLLGATEDESC,
checks.EXITTOLLGATE,
checks.EXITTOLLGATEDESC,
checks.INSPECTORID,
checks.INSPECTORNAME,
checks.REVIEWERUSER,
checks.CHECKDATAJSON
from
GREENTRAFFICCHECK_TABLE checks , GREENTRAFFIC_TABLE green
<where>
<!-- 绿通流水号查询条件 -->
<if test="params.listNo != null and params.listNo != '' ">
AND checks.LISTNO = #{params.listNo}
</if>
<!-- 开始时间查询条件 -->
<if test="params.startTime != null and params.startTime != ''">
<if test="params.DBTYPE == 1">
AND checks.CHECKTIME >= dateadd(day,0,#{params.startTime})
</if>
<if test="params.DBTYPE == 2">
AND checks.CHECKTIME >= TO_DATE(#{params.startTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 3">
AND checks.CHECKTIME >= TO_DATE(#{params.startTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 4">
AND checks.CHECKTIME >= STR_TO_DATE(#{params.startTime}, '%Y-%m-%d %H:%i:%s')
</if>
</if>
<!-- 结束时间查询条件 -->
<if test="params.endTime != null and params.endTime != ''">
<if test="params.DBTYPE == 1">
AND checks.CHECKTIME &lt;= dateadd(day,0,#{params.endTime})
</if>
<if test="params.DBTYPE == 2">
AND checks.CHECKTIME &lt;= TO_DATE(#{params.endTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 3">
AND checks.CHECKTIME &lt;= TO_DATE(#{params.endTime}, 'SYYYY-MM-DD HH24:MI:SS')
</if>
<if test="params.DBTYPE == 4">
AND checks.CHECKTIME &lt;= STR_TO_DATE(#{params.endTime}, '%Y-%m-%d %H:%i:%s')
</if>
</if>
and checks.LISTNO = green.LISTNO
</where>
ORDER BY checks.LISTNO ,checks.CHECKTIME DESC
</select>
</mapper>

@ -0,0 +1,36 @@
package com.nmgs.mapper.green;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.nmgs.entity.GreenTrafficCheckPic;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
@Mapper
public interface GreenTrafficCheckPicMapper extends MppBaseMapper<GreenTrafficCheckPic> {
/**
* 绿
* @param params
* @return
*/
List<GreenTrafficCheckPic> getCheckPicListBylistNo(@Param("params") Map<String, Object> params);
/**
*
* @param params
* @param pics
* @return
*/
int saveAll(@Param("params") Map<String, Object> params,@Param("pics")List<GreenTrafficCheckPic> pics);
/**
*
*/
Map<String,Object> getPicType(@Param("typeName")String typeName);
}

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmgs.mapper.green.GreenTrafficCheckPicMapper">
<select id="getCheckPicListBylistNo" parameterType="java.util.HashMap" resultType="com.nmgs.entity.GreenTrafficCheckPic">
SELECT
pic.LISTNO,
pic.PICTYPE,
pic.PICDATA,
text.TEXT as typeName
FROM
GREENTRAFFICCHECKPIC_TABLE pic
LEFT JOIN GREENTRAFFICCHECKPIC_TEXT text
<if test="params.DBTYPE == 1">
on SUBSTR(pic.PICTYPE, 1, (case when POSITION('_' IN pic.PICTYPE) != 0 then (POSITION('_' IN pic.PICTYPE)-1) else 2 end)) = text.VALUE
</if>
<if test="params.DBTYPE == 2">
on SUBSTR(pic.PICTYPE, 1, (case when INSTR(pic.PICTYPE, '_') != 0 then (INSTR(pic.PICTYPE, '_')-1) else 2 end)) = text.VALUE
</if>
<if test="params.DBTYPE == 3">
on SUBSTR(pic.PICTYPE, 1, (case when INSTR(pic.PICTYPE, '_') != 0 then (INSTR(pic.PICTYPE, '_')-1) else 2 end)) = text.VALUE
</if>
<if test="params.DBTYPE == 4">
on SUBSTR(pic.PICTYPE, 1, (case when LOCATE('_', pic.PICTYPE) != 0 then (INSTR(pic.PICTYPE, '_')-1) else 2 end)) = text.VALUE
</if>
<where>
<!-- 绿通流水号查询条件 -->
<if test="params.listNo != null and params.listNo != '' ">
AND pic.LISTNO = #{params.listNo}
</if>
</where>
ORDER BY pic.PICTYPE
</select>
<select id="getPicType" parameterType="java.lang.String" resultType="java.util.HashMap">
SELECT
pic.TEXT,
pic.VALUE
FROM
GREENTRAFFICCHECKPIC_TEXT pic
<where>
<!-- 类型名称查询条件 -->
<if test="typeName != null and typeName != '' ">
AND pic.TEXT = #{typeName}
</if>
</where>
ORDER BY pic.VALUE
</select>
<insert id="saveAll">
<if test="params.DBTYPE == 1">
INSERT INTO GREENTRAFFICCHECKPIC_TABLE (LISTNO, PICTYPE, PICDATA) VALUES
<foreach collection="pics" item="pic" separator=",">
(#{pic.listNo}, #{pic.picType}, #{pic.picData})
</foreach>
</if>
<if test="params.DBTYPE == 2">
INSERT ALL
<foreach collection="pics" item="pic" separator="">
INTO GREENTRAFFICCHECKPIC_TABLE (LISTNO, PICTYPE, PICDATA) VALUES (#{pic.listNo}, #{pic.picType}, #{pic.picData})
</foreach>
SELECT * FROM dual
</if>
<if test="params.DBTYPE == 3">
INSERT INTO GREENTRAFFICCHECKPIC_TABLE (LISTNO, PICTYPE, PICDATA) VALUES
<foreach collection="pics" item="pic" separator=",">
(#{pic.listNo}, #{pic.picType}, #{pic.picData})
</foreach>
</if>
<if test="params.DBTYPE == 4">
INSERT INTO GREENTRAFFICCHECKPIC_TABLE (LISTNO, PICTYPE, PICDATA) VALUES
<foreach collection="pics" item="pic" separator=",">
(#{pic.listNo}, #{pic.picType}, #{pic.picData})
</foreach>
</if>
</insert>
</mapper>

@ -0,0 +1,16 @@
package com.nmgs.mapper.green;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.nmgs.entity.GreenTrafficCheckResult;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface GreenTrafficCheckResultMapper extends MppBaseMapper<GreenTrafficCheckResult> {
/**
* 绿
* @param listNo
* @return
*/
GreenTrafficCheckResult getCheckResultListByListNo(String listNo);
}

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nmgs.mapper.green.GreenTrafficCheckResultMapper">
<select id="getCheckResultListByListNo" parameterType="java.lang.String" resultType="com.nmgs.entity.GreenTrafficCheckResult">
SELECT
result.LISTNO,
result.CHECKRESULT
FROM
GREENTRAFFICCHECKRESULT_TABLE result,
GREENTRAFFIC_TABLE green
<where>
<!-- 绿通流水号查询条件 -->
<if test="listNo != null and listNo != '' ">
AND result.LISTNO = #{listNo}
</if>
and result.LISTNO = green.LISTNO
</where>
ORDER BY result.LISTNO
</select>
</mapper>

@ -0,0 +1,225 @@
package com.nmgs.mapper.green;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.nmgs.entity.GreenTraffic;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Mapper
public interface GreenTrafficMapper extends MppBaseMapper<GreenTraffic> {
/**
*
* @param page
* @param params
* @return
*/
Page<GreenTraffic> getGreenTrafficList(Page<GreenTraffic> page, @Param("params")Map<String, Object> params);
/**
*
* @return
*/
List<Map<String,Object>> selectCarNoColorList();
/**
*
* @return
*/
List<Map<String,Object>> selectRoadList();
/**
*
* @param params
* @return
*/
List<Map<String,Object>> selectStaList(@Param("params")Map<String, Object> params);
/**
*
* @return
*/
List<Map<String,Object>> selectSubComList();
/**
*
* @return
*/
List<Map<String,Object>> selectUnionList();
/**
*
* @return
*/
List<Map<String,Object>> selectFreightTypeList(@Param("params")Map<String, Object> params);
/**
* 绿
* @param listNo
* @return
*/
@Select("select op.CARDTP, op.ENTOLLSTATIONNAME,op.EXTOLLSTATIONNAME from OUT_PORT op where op.LISTNO=#{listNo}")
Map<String, Object> getOutPortByListNo(@Param("listNo")String listNo);
/**
*
* @param vehicleType
* @return
*/
@Select("select TEXT from TYPE_TEXT where VALUE=#{vehicleType}")
String getVehicleTypeNameByType(@Param("vehicleType")Integer vehicleType);
/**
* 绿绿
* @return
*/
List<Map<String,Object>> greenTotalCountByProvince(@Param("params")Map<String, Object> params);
/**
* 绿
* @param page
* @param params
* @return
*/
Page<Map<String, Object>> getStaSubComCollectionData(Page<Map<String, Object>> page, @Param("params")Map<String, Object> params);
/**
* 绿
* @param page
* @param params
* @return
*/
Page<Map<String, Object>> getStaDetilCollection(Page<Map<String, Object>> page, @Param("params")Map<String, Object> params);
/**
*
* @param page
* @param params
* @return
*/
Page<Map<String, Object>> getStaFigthTypeCollection(Page<Map<String, Object>> page, @Param("params")Map<String, Object> params);
/**
* 绿
* @return
*/
@Select("select min(CLASSDATE) from GREENTRAFFIC_TABLE")
String getMinClassDate();
/**
* id绿
* @param transactionId
* @return
*/
@Select("select ACARNO from GREENTRAFFIC_TABLE where ID = #{transactionId} ")
List<String> getAcarNoById(@Param("transactionId")String transactionId);
List<GreenTraffic> getGreenTrafficNoAsyncList(@Param("params")HashMap<String, Object> params);
/**
* 绿
* @param id
* @return
*/
@Update("update GREENTRAFFIC_TABLE set ISASYNC='Y' where ID=#{id} ")
int updateIsAsyncById(@Param("id")String id);
/**
* 绿
* @param id
* @return
*/
@Update("update GREENTRAFFIC_TABLE set ISASYNC='N' where ID=#{id} ")
int updateIsAsyncNById(@Param("id")String id);
/**
*
* @param freightTypeQuery
* @return
*/
@Select(" select TEXT from FREIGHTTYPE_TEXT where VALUE = #{freightTypeQuery} ")
String getFreightTypeNameBYFreightTypes(@Param("freightTypeQuery")Integer freightTypeQuery);
/**
* idid
* @param params
* @return
*/
List<Map<String,Object>> getMenuByUserIdAndMenId(@Param("params")Map<String, Object> params);
/**
* 绿
*
* @param params
* @return
*/
List<Map<String,Object>> getGreenTotalCollection(@Param("params")Map<String, Object> params);
/***
*
* @param params
* @return
*/
List<Map<String, Object>> getGreenFeeTotalCollection(@Param("params")Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
List<Map<String, Object>> getFreightTotalCollection(@Param("params")Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
List<Map<String, Object>> getUnionFreightCollection(@Param("params")Map<String, Object> params);
/**
* 绿
*
* @param page
* @param params
* @return
*/
Page<Map<String, Object>> getSingleCarTrack(Page<Map<String, Object>> page, @Param("params")Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
List<Map<String, Object>> getGreenAcarNoByAcarNoStr(@Param("params")Map<String, Object> params);
/**
* 绿
* @return
*/
List<Map<String, Object>> getGreenTrafficListGroupByUnionName(@Param("params")Map<String, Object> params);
/**
* 绿
* @return
*/
List<Map<String, Object>> getGreenTrafficListGroupBySubCom(@Param("params")Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
List<Map<String, Object>> getGreenDetilInfoByListNo(@Param("params")Map<String, Object> params);
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,52 @@
package com.nmgs.service;
import javax.servlet.http.HttpServletResponse;
public interface IGreenTrafficExportExcelService {
/**
* 绿Excel
* @param searchForm
* @param response
* @throws Exception
*/
void exportstaUnionCollectionExcle(String searchForm, HttpServletResponse response) throws Exception;
/**
* 绿Excel
* @param searchForm
* @param response
*/
void exportstaCollectionExcle(String searchForm, HttpServletResponse response)throws Exception;
/**
* Excel
* @param searchForm
* @param response
*/
void exportUnionFreightCollectionExcle(String searchForm, HttpServletResponse response)throws Exception;
/**
*
* @param searchForm
* @param response
*/
void exportSingleTrackExcle(String searchForm, HttpServletResponse response) throws Exception ;
/**
* 绿
* @param searchForm
* @param response
*/
void exportUnionTotalExcle(String searchForm, HttpServletResponse response) throws Exception ;
/**
* 绿
* @param searchForm
* @param response
*/
void exportSubComTotalExcle(String searchForm, HttpServletResponse response) throws Exception ;
}

@ -0,0 +1,129 @@
package com.nmgs.service;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nmgs.entity.GreenTraffic;
import com.nmgs.entity.GreenTrafficCheckResult;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
public interface IGreenTrafficService {
/**
* 绿
* @param params
* @return
*/
Page<GreenTraffic> getGreenTrafficList(Map<String, Object> params);
/**
*
*
* @param params
* @param token
* @return
*/
Map<String, Object> getGreenTrafficCheckFromData(Map<String, Object> params, String token) throws Exception;
/**
*
* @param params
* @param token
* @return
*/
Map<String, Object> getGreenTrafficCheckFromPicData(Map<String, Object> params, String token) throws Exception;
/**
*
* @param greenTrafficCheckResult
* @return
*/
int saveOrUpdateCheckResult(GreenTrafficCheckResult greenTrafficCheckResult) throws Exception;
/**
* 绿
* @param params
* @param response
* @return
*/
void exportGreenTrafficExcle(String params, HttpServletResponse response) throws Exception;
/**
* 绿绿
* @return
*/
List<Map<String,Object>> greenTotalCountByProvince(Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
Page<Map<String,Object>> getStaSubComCollectionData(Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
Page<Map<String,Object>> getStaDetilCollection(Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
Page<Map<String, Object>> getStaFigthTypeCollection(Map<String, Object> params);
/**
* 绿
*
* @param params
* @return
*/
JSONArray getGreenTotalCollection(Map<String, Object> params);
/**
*
* @param params
* @return
* @throws Exception
*/
JSONArray getGreenFeeTotalCollection(Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
List<Map<String,Object>> getFreightTotalCollection(Map<String, Object> params);
/**
* 绿
* @param params
* @return
*/
List<Map<String,Object>> getUnionFreightCollection(Map<String, Object> params);
/**
*
* @param params
* @return
*/
Page<Map<String, Object>> getSingleCarTrack(Map<String, Object> params);
/**
* 使绿
* @param params
* @return
*/
List<Map<String, Object>> getGreenAcarNoByAcarNoStr(Map<String, Object> params);
}

@ -0,0 +1,941 @@
package com.nmgs.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import com.nmgs.entity.GreenTraffic;
//import com.nmgs.mapper.check.CheckResultMapper;
import com.nmgs.entity.GreenTraffic;
import com.nmgs.mapper.green.GreenTrafficCheckMapper;
import com.nmgs.mapper.green.GreenTrafficCheckPicMapper;
import com.nmgs.mapper.green.GreenTrafficCheckResultMapper;
import com.nmgs.mapper.green.GreenTrafficMapper;
import com.nmgs.service.IGreenTrafficExportExcelService;
import com.nmgs.util.PropertiesUtil;
import com.nmgs.util.ReadExcel;
import org.apache.commons.codec.Charsets;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.Executor;
@Service
@Transactional
public class GreenTrafficExportExcelServiceImpl implements IGreenTrafficExportExcelService {
@Autowired
private GreenTrafficMapper greenTrafficMapper;
@Autowired
private GreenTrafficCheckMapper greenTrafficCheckMapper;
@Autowired
private GreenTrafficCheckPicMapper greenTrafficCheckPicMapper;
@Autowired
private GreenTrafficCheckResultMapper greenTrafficCheckResultMapper;
@Autowired
private Executor greenTrafficThreadPool;
// @Autowired
// private CheckResultMapper checkResultMapper;
public static Logger logger = LoggerFactory.getLogger(GreenTrafficExportExcelServiceImpl.class);
/**
*
* @param searchForm
* @param response
* @throws Exception
*/
@Override
public void exportstaUnionCollectionExcle(String searchForm, HttpServletResponse response) throws Exception {
//设置导出文件名称
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
StringBuilder filename = new StringBuilder();
//定义一个标题数组
List<String> title = new ArrayList<>();
int arrayIndex = 0;
HashMap<String,Object> paramsMap = new HashMap<>();
//如果传进来的参数有值,拼接参数
if(null != searchForm && !"".equals(searchForm)){
paramsMap = JSON.parseObject(searchForm, HashMap.class);
}
//定义查询列根据params条件动态拼接
StringBuilder selectColumn = new StringBuilder(" sum( 1 ) AS greenCount," +
"sum( green.CASH ) AS fee," +
"sum( green.INCASH + green.PAYCASH ) AS actualFee," +
"sum( green.CASH - ( green.INCASH + green.PAYCASH ) ) AS derateFee ");
StringBuilder group = new StringBuilder();
StringBuilder order = new StringBuilder(" order by "+paramsMap.get("orderColumn")+" "+paramsMap.get("orderType"));
//从配置文件中读取数据库连接类型
paramsMap.put("DBTYPE", PropertiesUtil.getValue("DBType"));
//设置分页
Integer pageNum = (Integer) paramsMap.get("pageNum");
Integer pageSize = (Integer) paramsMap.get("pageSize");
Page<Map<String, Object>> page = new Page<>(pageNum,50000);
for (Map.Entry<String, Object> entry : paramsMap.entrySet()) {
Object value = entry.getValue();
if("unionCollection".equals(value)){
//拼接查询列
selectColumn.append(" ,sta.REGIONNAME as REGIONNAME ");
//拼接分组条件
if(group.toString().equals("")){
group = new StringBuilder("group by sta.REGIONNAME ");
}else{
group.append(" ,sta.REGIONNAME ");
}
title.add("盟市");
if(filename.length() == 0){
filename = new StringBuilder("盟市");
}else{
filename.append(",盟市");
}
}
if("staCollection".equals(value)){
//拼接查询列
selectColumn.append(" ,sta.STANAME as staName,green.STANO ");
//拼接分组条件
if(group.toString().equals("")){
group = new StringBuilder("group by green.STANO,sta.STANAME ");
}else{
group.append(" ,green.STANO,sta.STANAME ");
}
title.add("收费站");
if(filename.length() == 0){
filename = new StringBuilder("收费站");
}else{
filename.append(",收费站");
}
}
}
//设置文件名
filename.append("绿通车数据统计").append(simpleDateFormat.format(date)).append(".xlsx");
paramsMap.put("selectColumn", selectColumn.toString());
logger.info("selectColumn=========="+selectColumn);
paramsMap.put("group", group.toString());
logger.info("group=========="+group);
paramsMap.put("order", order.toString());
logger.info("order=========="+order);
page = greenTrafficMapper.getStaSubComCollectionData(page,paramsMap);
//创建一个Excel表格
Workbook wb = new XSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("绿通");
//如果没有数据返回一个空的Excel
List<Map<String, Object>> records = page.getRecords();
if(null == records){
//导出Excel
writeToExcel(response,wb, filename.toString());
}
title.add("绿通车数量");
title.add("应收金额(元)");
title.add("实收金额(元)");
title.add("减免金额(元)");
//定义内容数据
List<String[]> rowValues = new ArrayList<>();
for (Map<String, Object> result : records) {
String[] rowValue = new String[title.size()];
for(int j = 0 ; j < title.size() ; j++){
if(title.get(j).equals("盟市")){
rowValue[j] = (String) result.get("REGIONNAME");
}
if(title.get(j).equals("收费站")){
rowValue[j] = (String) result.get("STANAME");
}
if(title.get(j).equals("绿通车数量")){
rowValue[j] = ((BigDecimal) result.get("GREENCOUNT")).toString();
}
if(title.get(j).equals("应收金额(元)")){
rowValue[j] = ((BigDecimal) result.get("FEE")).toString();
}
if(title.get(j).equals("实收金额(元)")){
rowValue[j] = ((BigDecimal) result.get("ACTUALFEE")).toString();
}
if(title.get(j).equals("减免金额(元)")){
rowValue[j] = ((BigDecimal) result.get("DERATEFEE")).toString();
}
}
rowValues.add(rowValue);
}
//设置标题单元格式
CellStyle cellStyleTitle = wb.createCellStyle();
cellStyleTitle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//设置背景色
cellStyleTitle.setFillPattern((short) 1);//必须设置 否则无效
//设置水平垂直居中
cellStyleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleTitle.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleTitle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderTop(XSSFCellStyle.BORDER_THIN);
//定义标题内容
Row currentRow = sheet.createRow(0);
// 往Excel表格中添加标题的数据
for (int j = 0; j < title.size(); j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = currentRow.createCell(j);
cell.setCellStyle(cellStyleTitle);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(title.get(j));
}
//设置内容单元格式
CellStyle cellStyleValue = wb.createCellStyle();
//设置水平垂直居中
cellStyleValue.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleValue.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleValue.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderTop(XSSFCellStyle.BORDER_THIN);
//往Excel表格中添加具体数据
for (int i = 0; i < rowValues.size(); i++) {
Row Row = sheet.createRow((i+1));
for (int j = 0; j < title.size(); j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = Row.createCell(j);
cell.setCellStyle(cellStyleValue);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(rowValues.get(i)[j]);
}
}
//导出Excel
writeToExcel(response,wb, filename.toString());
}
@Override
public void exportstaCollectionExcle(String searchForm, HttpServletResponse response) throws Exception {
//设置导出文件名称
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
//如果传进来的参数有值,拼接参数
HashMap<String,Object> paramsMap = new HashMap<>();
if(null != searchForm && !"".equals(searchForm)){
paramsMap = JSON.parseObject(searchForm, HashMap.class);
}
//获取数据
//从配置文件中读取数据库连接类型
paramsMap.put("DBTYPE", PropertiesUtil.getValue("DBType"));
//设置分页
Integer pageNum = (Integer) paramsMap.get("pageNum");
//Integer pageSize = (Integer) paramsMap.get("pageSize");
Page<Map<String, Object>> page = new Page<>(pageNum,50000);
//设置排序条件
StringBuilder order = new StringBuilder(" order by "+paramsMap.get("orderColumn")+" "+paramsMap.get("orderType"));
paramsMap.put("order", order.toString());
logger.info("order=========="+order);
page = greenTrafficMapper.getStaDetilCollection(page, paramsMap);
//定义文件名称
StringBuilder filename = new StringBuilder();
filename.append("收费站本省跨省绿通车数据统计").append(simpleDateFormat.format(date)).append(".xlsx");
//读取模版文件
//创建Excel工作薄
//2. 通过POI将数据写入到Excel文件中
InputStream in = this.getClass().getClassLoader().getResourceAsStream("excel/staGreenCollectionExcelmod.xlsx");
Workbook work = ReadExcel.getWorkbook(in,"staGreenCollectionExcelmod.xlsx");
//如果没有数据返回一个空的Excel
List<Map<String, Object>> records = page.getRecords();
if(null == records){
//导出Excel
writeToExcel(response,work, filename.toString());
}
//获取sheet页面
Sheet sheet = work.getSheet("绿通");
//设置内容单元格式
CellStyle cellStyleValue = work.createCellStyle();
//设置水平垂直居中
cellStyleValue.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleValue.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleValue.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderTop(XSSFCellStyle.BORDER_THIN);
//设置金额的格式
DecimalFormat decimalFormat = new DecimalFormat("#.00");
//定义数据在Excel中的开始行数
int row = 2;
//往Excel表格中添加具体数据
for (int i = 0; i < records.size(); i++) {
// 合并第row行的前三列A到C
//sheet.addMergedRegion(new CellRangeAddress(row, row, 0, 2));
Row Row = sheet.createRow(row);
for (int j = 0; j < 10; j++) {
// 设置列宽
//sheet.setColumnWidth(j, 4100);
Cell cell = Row.createCell(j);
cell.setCellStyle(cellStyleValue);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
if(j == 0){cell.setCellValue((String) records.get(i).get("SUBCOMNAME"));}
if(j == 1){cell.setCellValue(records.get(i).get("REGIONNAME").toString());}
if(j == 2){cell.setCellValue(records.get(i).get("ROADNAME").toString());}
if(j == 3){cell.setCellValue(records.get(i).get("STANAME").toString());}
if(j == 4){cell.setCellValue(((BigDecimal) records.get(i).get("GREENCOUNT")).toString());}
if(j == 5){cell.setCellValue(((BigDecimal)records.get(i).get("DERATEFEETOTAL")).setScale(2, RoundingMode.HALF_UP).toString());}
if(j == 6){cell.setCellValue(((BigDecimal) records.get(i).get("PROVINCETOTAL")).toString());}
//if(j == 7){cell.setCellValue(((BigDecimal) records.get(i).get("PROVINCEDERATEFEE")).toString());}
if(j == 7){cell.setCellValue(((BigDecimal)records.get(i).get("PROVINCEDERATEFEE")).setScale(2, RoundingMode.HALF_UP).toString());}
if(j == 8){cell.setCellValue(((BigDecimal) records.get(i).get("OTHERPROVINCETOTAL")).toString());}
//if(j == 9){cell.setCellValue(((BigDecimal) records.get(i).get("OTHERPROVINCEDERATEFEE")).toString());}
if(j == 9){cell.setCellValue(((BigDecimal)records.get(i).get("OTHERPROVINCEDERATEFEE")).setScale(2, RoundingMode.HALF_UP).toString());}
}
row++;
}
//导出Excel
writeToExcel(response,work, filename.toString());
}
/**
* Excel
* @param searchForm
* @param response
*/
@Override
public void exportUnionFreightCollectionExcle(String searchForm, HttpServletResponse response) throws Exception {
//设置导出文件名称
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
StringBuilder filename = new StringBuilder();
//定义一个标题数组
List<String> title = new ArrayList<>();
int arrayIndex = 0;
HashMap<String,Object> paramsMap = new HashMap<>();
//如果传进来的参数有值,拼接参数
if(null != searchForm && !"".equals(searchForm)){
paramsMap = JSON.parseObject(searchForm, HashMap.class);
}
//根据类型查询类型名称
//String typeName = greenTrafficMapper.getFreightTypeNameBYFreightTypes((Integer)paramsMap.get("freightTypeQuery"));
//设置文件名
filename.append("货物绿通车统计").append(simpleDateFormat.format(date)).append(".xlsx");
//从配置文件中读取数据库连接类型
paramsMap.put("DBTYPE", PropertiesUtil.getValue("DBType"));
//设置分页
Integer pageNum = (Integer) paramsMap.get("pageNum");
//Integer pageSize = (Integer) paramsMap.get("pageSize");
Page<Map<String, Object>> page = new Page<>(pageNum,50000);
//设置排序条件
StringBuilder order = new StringBuilder(" order by "+paramsMap.get("orderColumn")+" "+paramsMap.get("orderType"));
paramsMap.put("order", order.toString());
logger.info("order=========="+order);
page = greenTrafficMapper.getStaFigthTypeCollection(page,paramsMap);
//创建一个Excel表格
Workbook wb = new XSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("绿通");
//如果没有数据返回一个空的Excel
List<Map<String, Object>> records = page.getRecords();
if(null == records){
//导出Excel
writeToExcel(response,wb, filename.toString());
}
title.add("货物类型");
title.add("货物绿通车数量");
//定义内容数据
List<String[]> rowValues = new ArrayList<>();
for (Map<String, Object> result : records) {
String[] rowValue = new String[title.size()];
for(int j = 0 ; j < title.size() ; j++){
if(title.get(j).equals("货物类型")){
rowValue[j] = (String) result.get("TEXT");
}
if(title.get(j).equals("货物绿通车数量")){
rowValue[j] = ((BigDecimal) result.get("REGIONFREIGHTCOUNT")).toString();
}
}
rowValues.add(rowValue);
}
//设置标题单元格式
CellStyle cellStyleTitle = wb.createCellStyle();
cellStyleTitle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//设置背景色
cellStyleTitle.setFillPattern((short) 1);//必须设置 否则无效
//设置水平垂直居中
cellStyleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleTitle.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleTitle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderTop(XSSFCellStyle.BORDER_THIN);
//定义标题内容
Row currentRow = sheet.createRow(0);
// 往Excel表格中添加标题的数据
for (int j = 0; j < title.size(); j++) {
// 设置列宽
sheet.setColumnWidth(j, 6000);
Cell cell = currentRow.createCell(j);
cell.setCellStyle(cellStyleTitle);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(title.get(j));
}
//设置内容单元格式
CellStyle cellStyleValue = wb.createCellStyle();
//设置水平垂直居中
cellStyleValue.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleValue.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleValue.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderTop(XSSFCellStyle.BORDER_THIN);
//往Excel表格中添加具体数据
for (int i = 0; i < rowValues.size(); i++) {
Row Row = sheet.createRow((i+1));
for (int j = 0; j < title.size(); j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = Row.createCell(j);
cell.setCellStyle(cellStyleValue);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(rowValues.get(i)[j]);
}
}
//导出Excel
writeToExcel(response,wb, filename.toString());
}
@Override
public void exportSingleTrackExcle(String searchForm, HttpServletResponse response) throws Exception {
//设置导出文件名称
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String filename = "单车轨迹查验-" + simpleDateFormat.format(date) + ".xlsx";
HashMap<String, Object> paramsMap = new HashMap<>();
//如果传进来的参数有值,拼接参数
if (null != searchForm && !"".equals(searchForm)) {
paramsMap = JSON.parseObject(searchForm, HashMap.class);
}
//根据条件查询绿通数据
//从配置文件中读取数据库连接类型
paramsMap.put("DBTYPE", PropertiesUtil.getValue("DBType"));
//设置分页
Integer pageNum = (Integer) paramsMap.get("pageNum");
Integer pageSize = (Integer) paramsMap.get("pageSize");
//设置数据条数,不超过五万条
Page<Map<String,Object>> page = new Page<>(pageNum, 50000);
page = greenTrafficMapper.getSingleCarTrack(page, paramsMap);
//创建一个Excel表格
Workbook wb = new XSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("绿通");
//如果没有数据返回一个空的Excel
List<Map<String, Object>> singleCarTrack = page.getRecords();
if (null == singleCarTrack) {
//导出Excel
writeToExcel(response, wb, filename);
}
//定义一个标题数组
String[] title = {"入口在", "出口站", "车道操作时间", "车牌号", "出口车种", "绿通车货物类型", "入口车种", "入口称重", "应收金额(元)",
"实收金额(元)", "减免金额(元)"};
//设置金额的格式
DecimalFormat decimalFormat = new DecimalFormat("#.00");
//设置统计时间日期格式
SimpleDateFormat simpleDateFormatClassData = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormatDt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//定义内容数据
List<String[]> rowValues = new ArrayList<>();
for (Map<String, Object> result : singleCarTrack) {
String[] rowValue = new String[title.length];
for(int j = 0 ; j < title.length ; j++){
if(title[j].equals("入口在")){
rowValue[j] = (String) result.get("ENTOLLSTATIONNAME");
}
if(title[j].equals("出口站")){
rowValue[j] = (String) result.get("EXTOLLSTATIONNAME");
}
if(title[j].equals("车道操作时间")){
rowValue[j] = simpleDateFormatDt.format(((Timestamp) result.get("DT")));
}
if(title[j].equals("车牌号")){
rowValue[j] = ((String) result.get("ACARNO")).toString();
}
if(title[j].equals("出口车种")){
rowValue[j] = ((String) result.get("OUTKINDNAME")).toString();
}
if(title[j].equals("绿通车货物类型")){
rowValue[j] = result.get("FREIGHTTYPENAME") != null ?((String) result.get("FREIGHTTYPENAME")).toString():"";
}
if(title[j].equals("入口车种")){
rowValue[j] = ((String) result.get("INKINDNAME")).toString();
}
if(title[j].equals("入口称重")){
rowValue[j] = ((BigDecimal) result.get("ININWEIGHT")).toString();
}
BigDecimal cash = (BigDecimal) result.get("CASH");
BigDecimal inCash = (BigDecimal) result.get("INCASH");
BigDecimal payCash = (BigDecimal) result.get("PAYCASH");
if(title[j].equals("应收金额(元)")){
rowValue[j] = cash.setScale(2, RoundingMode.HALF_UP).toString();
}
if(title[j].equals("实收金额(元)")){
rowValue[j] = inCash.add(payCash).setScale(2, RoundingMode.HALF_UP).toString();
}
if(title[j].equals("减免金额(元)")){
rowValue[j] = cash.subtract(inCash.add(payCash)).setScale(2, RoundingMode.HALF_UP).toString();
}
}
rowValues.add(rowValue);
}
//设置标题单元格式
CellStyle cellStyleTitle = wb.createCellStyle();
cellStyleTitle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//设置背景色
cellStyleTitle.setFillPattern((short) 1);//必须设置 否则无效
//设置水平垂直居中
cellStyleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleTitle.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleTitle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderTop(XSSFCellStyle.BORDER_THIN);
//定义标题内容
Row currentRow = sheet.createRow(0);
// 往Excel表格中添加标题的数据
for (int j = 0; j < title.length; j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = currentRow.createCell(j);
cell.setCellStyle(cellStyleTitle);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(title[j]);
}
//设置内容单元格式
CellStyle cellStyleValue = wb.createCellStyle();
//设置水平垂直居中
cellStyleValue.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleValue.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleValue.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderTop(XSSFCellStyle.BORDER_THIN);
//往Excel表格中添加具体数据
for (int i = 0; i < rowValues.size(); i++) {
Row Row = sheet.createRow((i + 1));
for (int j = 0; j < title.length; j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = Row.createCell(j);
cell.setCellStyle(cellStyleValue);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(rowValues.get(i)[j]);
}
}
//导出Excel
writeToExcel(response, wb, filename);
}
@Override
public void exportUnionTotalExcle(String searchForm, HttpServletResponse response) throws Exception {
//设置导出文件名称
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String filename = "盟市绿通数据统计-" + simpleDateFormat.format(date) + ".xlsx";
HashMap<String, Object> paramsMap = new HashMap<>();
//如果传进来的参数有值,拼接参数
if (null != searchForm && !"".equals(searchForm)) {
paramsMap = JSON.parseObject(searchForm, HashMap.class);
}
//根据条件查询绿通数据
//从配置文件中读取数据库连接类型
paramsMap.put("DBTYPE", PropertiesUtil.getValue("DBType"));
//设置分页
Integer pageNum = (Integer) paramsMap.get("pageNum");
//Integer pageSize = (Integer) paramsMap.get("pageSize");
//设置数据条数,不超过五万条
Page<GreenTraffic> page = new Page<>(pageNum, 50000);
List<Map<String, Object>> maps = greenTrafficMapper.getGreenTrafficListGroupByUnionName(paramsMap);
//创建一个Excel表格
Workbook wb = new XSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("绿通");
//如果没有数据返回一个空的Excel
//List<GreenTraffic> records = page.getRecords();
if (null == maps) {
//导出Excel
writeToExcel(response, wb, filename);
}
//定义一个标题数组
String[] title = {"盟市", "绿通车数量", "减免金额(元)"};
//设置金额的格式
DecimalFormat decimalFormat = new DecimalFormat("#.00");
//设置统计时间日期格式
SimpleDateFormat simpleDateFormatClassData = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormatDt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//定义内容数据
List<String[]> rowValues = new ArrayList<>();
for (Map<String, Object> greenTraffic : maps) {
String[] rowValue = {
null == greenTraffic.get("REGIONNAME") ? "" : greenTraffic.get("REGIONNAME").toString(),
null == greenTraffic.get("COUNTNUM") ? "" : ((BigDecimal)greenTraffic.get("COUNTNUM")).toString(),
null == greenTraffic.get("DERATEFEETOTAL") ? "" : ((BigDecimal)greenTraffic.get("DERATEFEETOTAL")).setScale(2, RoundingMode.HALF_UP).toString(),
};
rowValues.add(rowValue);
}
//设置标题单元格式
CellStyle cellStyleTitle = wb.createCellStyle();
cellStyleTitle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//设置背景色
cellStyleTitle.setFillPattern((short) 1);//必须设置 否则无效
//设置水平垂直居中
cellStyleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleTitle.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleTitle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderTop(XSSFCellStyle.BORDER_THIN);
//定义标题内容
Row currentRow = sheet.createRow(0);
// 往Excel表格中添加标题的数据
for (int j = 0; j < title.length; j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = currentRow.createCell(j);
cell.setCellStyle(cellStyleTitle);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(title[j]);
}
//设置内容单元格式
CellStyle cellStyleValue = wb.createCellStyle();
//设置水平垂直居中
cellStyleValue.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleValue.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleValue.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderTop(XSSFCellStyle.BORDER_THIN);
//往Excel表格中添加具体数据
for (int i = 0; i < rowValues.size(); i++) {
Row Row = sheet.createRow((i + 1));
for (int j = 0; j < title.length; j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = Row.createCell(j);
cell.setCellStyle(cellStyleValue);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(rowValues.get(i)[j]);
}
}
//导出Excel
writeToExcel(response, wb, filename);
}
@Override
public void exportSubComTotalExcle(String searchForm, HttpServletResponse response) throws Exception {
//设置导出文件名称
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String filename = "分公司绿通数据统计-" + simpleDateFormat.format(date) + ".xlsx";
HashMap<String, Object> paramsMap = new HashMap<>();
//如果传进来的参数有值,拼接参数
if (null != searchForm && !"".equals(searchForm)) {
paramsMap = JSON.parseObject(searchForm, HashMap.class);
}
//根据条件查询绿通数据
//从配置文件中读取数据库连接类型
paramsMap.put("DBTYPE", PropertiesUtil.getValue("DBType"));
//设置分页
Integer pageNum = (Integer) paramsMap.get("pageNum");
//Integer pageSize = (Integer) paramsMap.get("pageSize");
//设置数据条数,不超过五万条
Page<GreenTraffic> page = new Page<>(pageNum, 50000);
List<Map<String, Object>> maps = greenTrafficMapper.getGreenTrafficListGroupBySubCom(paramsMap);
//创建一个Excel表格
Workbook wb = new XSSFWorkbook();
//创建sheet页面
Sheet sheet = wb.createSheet("绿通");
//如果没有数据返回一个空的Excel
//List<GreenTraffic> records = page.getRecords();
if (null == maps) {
//导出Excel
writeToExcel(response, wb, filename);
}
//定义一个标题数组
String[] title = {"分公司", "绿通车数量", "减免金额(元)"};
//设置金额的格式
DecimalFormat decimalFormat = new DecimalFormat("#.00");
//设置统计时间日期格式
SimpleDateFormat simpleDateFormatClassData = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormatDt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//定义内容数据
List<String[]> rowValues = new ArrayList<>();
for (Map<String, Object> greenTraffic : maps) {
String[] rowValue = {
null == greenTraffic.get("SUBCOMNAME") ? "" : greenTraffic.get("SUBCOMNAME").toString(),
null == greenTraffic.get("COUNTNUM") ? "" : ((BigDecimal)greenTraffic.get("COUNTNUM")).toString(),
null == greenTraffic.get("DERATEFEETOTAL") ? "" : ((BigDecimal)greenTraffic.get("DERATEFEETOTAL")).setScale(2, RoundingMode.HALF_UP).toString(),
};
rowValues.add(rowValue);
}
//设置标题单元格式
CellStyle cellStyleTitle = wb.createCellStyle();
cellStyleTitle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//设置背景色
cellStyleTitle.setFillPattern((short) 1);//必须设置 否则无效
//设置水平垂直居中
cellStyleTitle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleTitle.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleTitle.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleTitle.setBorderTop(XSSFCellStyle.BORDER_THIN);
//定义标题内容
Row currentRow = sheet.createRow(0);
// 往Excel表格中添加标题的数据
for (int j = 0; j < title.length; j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = currentRow.createCell(j);
cell.setCellStyle(cellStyleTitle);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(title[j]);
}
//设置内容单元格式
CellStyle cellStyleValue = wb.createCellStyle();
//设置水平垂直居中
cellStyleValue.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyleValue.setVerticalAlignment(HSSFCellStyle.ALIGN_CENTER);
// 设置边框样式
cellStyleValue.setBorderBottom(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderLeft(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderRight(XSSFCellStyle.BORDER_THIN);
cellStyleValue.setBorderTop(XSSFCellStyle.BORDER_THIN);
//往Excel表格中添加具体数据
for (int i = 0; i < rowValues.size(); i++) {
Row Row = sheet.createRow((i + 1));
for (int j = 0; j < title.length; j++) {
// 设置列宽
sheet.setColumnWidth(j, 4100);
Cell cell = Row.createCell(j);
cell.setCellStyle(cellStyleValue);
//每个单元格的值目前做 String 处理
//cell.setCellType(CellType.STRING);
cell.setCellValue(rowValues.get(i)[j]);
}
}
//导出Excel
writeToExcel(response, wb, filename);
}
/**
* Excelresponse
* @param response
* @param wb
* @param fileName
* @throws Exception
*/
public void writeToExcel(HttpServletResponse response, Workbook wb, String fileName) throws Exception {
OutputStream os = null;
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding(Charsets.UTF_8.name());
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, String.format("attachment; filename=%s", new String(URLEncoder.encode(fileName, Charsets.UTF_8.name())
.getBytes(Charsets.UTF_8), Charsets.ISO_8859_1)));
os = response.getOutputStream();
wb.write(os);
os.flush();
}
}

@ -0,0 +1,186 @@
package com.nmgs.task;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nmgs.entity.CheckResultGreenFreightTypes;
import com.nmgs.entity.GreenTraffic;
import com.nmgs.mapper.check.CheckResultMapper;
import com.nmgs.mapper.green.CheckResultGreenFreightTypesMapper;
import com.nmgs.mapper.green.GreenTrafficMapper;
import com.nmgs.util.DateUtils;
import com.nmgs.util.PropertiesUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
*/
@Component
@Async
@Slf4j
public class GreenCheckReustInfoUploadTask {
@Autowired
private CheckResultGreenFreightTypesMapper checkResultGreenFreightTypesMapper;
@Autowired
private GreenTrafficMapper GreenTrafficMapper;
@Autowired
private CheckResultMapper checkResultMapper;
public static Logger logger = LoggerFactory.getLogger(GreenCheckReustInfoUploadTask.class);
@Scheduled(cron = " 0 0/2 * * * ? ")//2分钟执行一次
@Transactional
public void GreenCheckReustInfoUpload() {
//1.从集团绿通流水表中获取500条没有同步过的数据
HashMap<String,Object> params = new HashMap<>();
params.put("DBTYPE", PropertiesUtil.getValue("DBType"));
List<GreenTraffic> greens = GreenTrafficMapper.getGreenTrafficNoAsyncList(params);
if(null != greens && !greens.isEmpty()){
logger.info("获取数据============="+greens.size());
for (GreenTraffic record : greens) {
logger.info("要查询的车牌号============="+record.getAcarNo()+"和transActionId============="+record.getId());
//获取最大的货物信息
String freightType = checkResultMapper.getMaxFreightByTransActionId(record.getId(),'%'+record.getAcarNo()+'%');
//获取查验信息
List<Map<String,Object>> result = checkResultMapper.getResultListByTransActionId(record.getId(),'%'+record.getAcarNo()+'%');
try{
//插入数据
if(null != result && !result.isEmpty() && null != freightType && !freightType.isEmpty()){
Map<String, Object> resultMap = result.get(0);
CheckResultGreenFreightTypes freightTypes = new CheckResultGreenFreightTypes();
//把查验结果保存在实体类中
if(resultMap.get("TRANSACTIONID").equals(record.getId())){
freightTypes.setTransActionId(record.getId());
}else{
freightTypes.setTransActionId(record.getId());
freightTypes.setResultTransActionId((String) resultMap.get("TRANSACTIONID"));
}
//如果为空,说明没查到数据,就不添加数据
freightTypes.setFreightTypes(freightType);
freightTypes.setCheckTime((Date) resultMap.get("CHECKTIME"));
freightTypes.setListNo(record.getListNo());
freightTypes.setAppointmentId(null==resultMap.get("APPOINTMENTID")?"非预约": (String) resultMap.get("APPOINTMENTID"));
freightTypes.setCheckId((String) resultMap.get("CHECKID"));
freightTypes.setCheckResult(((BigDecimal)resultMap.get("CHECKRESULT")).intValue());
freightTypes.setCrateType( null!=resultMap.get("CRATETYPE")?((BigDecimal)resultMap.get("CRATETYPE")).intValue():null);
freightTypes.setCrateTypeText( null!=resultMap.get("CRATETYPETEXT")?(String) resultMap.get("CRATETYPETEXT"):null);
freightTypes.setDriverTelephone((String) resultMap.get("DRIVERTELEPHONE"));
freightTypes.setEnStationId((String) resultMap.get("ENSTATIONID"));
freightTypes.setEnWeight( null!=resultMap.get("ENWEIGHT")?((BigDecimal)resultMap.get("ENWEIGHT")).intValue():null);
freightTypes.setExTime((Date) resultMap.get("EXTIME"));
freightTypes.setExWeight( null!=resultMap.get("EXWEIGHT")?((BigDecimal)resultMap.get("EXWEIGHT")).intValue():null);
freightTypes.setInspector((String) resultMap.get("INSPECTOR"));
freightTypes.setMemo((String) resultMap.get("MEMO"));
freightTypes.setPassId((String) resultMap.get("PASSID"));
freightTypes.setPayFee(((BigDecimal)resultMap.get("PAYFEE")).intValue());
freightTypes.setReason((String) resultMap.get("REASON"));
freightTypes.setReviewer((String) resultMap.get("REVIEWER"));
freightTypes.setVehicleId((String) resultMap.get("VEHICLEID"));
freightTypes.setVehicleType(((BigDecimal)resultMap.get("VEHICLETYPE")).intValue());
freightTypes.setExStationId((String) resultMap.get("EXSTATIONID"));
int res = checkResultGreenFreightTypesMapper.insert(freightTypes);
logger.info("插入数据res============="+record.getId());
//同步green表
int updateRes = GreenTrafficMapper.updateIsAsyncById(record.getId());
logger.info("修改绿通流水同步状态============="+record.getId());
}else{
//获取最大的货物信息
freightType = checkResultMapper.getMaxFreightByPassId(record.getPassId(),'%'+record.getAcarNo()+'%');
//获取查验信息
result = checkResultMapper.getResultListByPassId(record.getPassId(),'%'+record.getAcarNo()+'%');
if(null != result && !result.isEmpty() && null != freightType && !freightType.isEmpty()){
Map<String, Object> resultMap = result.get(0);
CheckResultGreenFreightTypes freightTypes = new CheckResultGreenFreightTypes();
//把查验结果保存在实体类中
if(resultMap.get("TRANSACTIONID").equals(record.getId())){
freightTypes.setTransActionId(record.getId());
}else{
freightTypes.setTransActionId(record.getId());
freightTypes.setResultTransActionId((String) resultMap.get("TRANSACTIONID"));
}
//如果为空,说明没查到数据,就不添加数据
freightTypes.setFreightTypes(freightType);
freightTypes.setCheckTime((Date) resultMap.get("CHECKTIME"));
freightTypes.setListNo(record.getListNo());
freightTypes.setAppointmentId(null==resultMap.get("APPOINTMENTID")?"非预约": (String) resultMap.get("APPOINTMENTID"));
freightTypes.setCheckId((String) resultMap.get("CHECKID"));
freightTypes.setCheckResult(((BigDecimal)resultMap.get("CHECKRESULT")).intValue());
freightTypes.setCrateType( null!=resultMap.get("CRATETYPE")?((BigDecimal)resultMap.get("CRATETYPE")).intValue():null);
freightTypes.setCrateTypeText( null!=resultMap.get("CRATETYPETEXT")?(String) resultMap.get("CRATETYPETEXT"):null);
freightTypes.setDriverTelephone((String) resultMap.get("DRIVERTELEPHONE"));
freightTypes.setEnStationId((String) resultMap.get("ENSTATIONID"));
freightTypes.setEnWeight( null!=resultMap.get("ENWEIGHT")?((BigDecimal)resultMap.get("ENWEIGHT")).intValue():null);
freightTypes.setExTime((Date) resultMap.get("EXTIME"));
freightTypes.setExWeight( null!=resultMap.get("EXWEIGHT")?((BigDecimal)resultMap.get("EXWEIGHT")).intValue():null);
freightTypes.setInspector((String) resultMap.get("INSPECTOR"));
freightTypes.setMemo((String) resultMap.get("MEMO"));
freightTypes.setPassId((String) resultMap.get("PASSID"));
freightTypes.setPayFee(((BigDecimal)resultMap.get("PAYFEE")).intValue());
freightTypes.setReason((String) resultMap.get("REASON"));
freightTypes.setReviewer((String) resultMap.get("REVIEWER"));
freightTypes.setVehicleId((String) resultMap.get("VEHICLEID"));
freightTypes.setVehicleType(((BigDecimal)resultMap.get("VEHICLETYPE")).intValue());
freightTypes.setExStationId((String) resultMap.get("EXSTATIONID"));
int res = checkResultGreenFreightTypesMapper.insert(freightTypes);
logger.info("插入数据res============="+record.getId());
//同步green表
int updateRes = GreenTrafficMapper.updateIsAsyncById(record.getId());
logger.info("修改绿通流水同步状态============="+record.getId());
}
//esle的数据是没有查验详情的数据
else{
Date dt = record.getDt();
Date now = new Date();
long diff = Math.abs(now.getTime()-dt.getTime())/(24*60*60*1000);
if(diff >= 30){
//同步green表,把数据同步成N代表该流水记录未找到
int updateRes = GreenTrafficMapper.updateIsAsyncNById(record.getId());
}
}
}
}catch (Exception ignored){
//如果货物类型不为空,修改货物类型
if(null != freightType && !freightType.isEmpty()){
int res = checkResultGreenFreightTypesMapper.updateFreightTypesByTransActionId(record.getId(),freightType);
logger.info("修改res============="+record.getId());
}
}
}
}
}
}

@ -0,0 +1,122 @@
package com.nmgs.util;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
public class CRCUtil {
private static String[] Crc32Table2;
private static long[] Crc32Table = {
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
};
static void initCrcTable() {
long Crc = 0;
long UlPolynomial = 0x04C11DB7L;
long bb = 0x80000000L;
Crc32Table = new long[256];
for (int i = 0; i < 256; i++) {
Crc32Table[i] = CRC_Reflect(i, 8) << 24L;
for (int j = 0; j < 8; j++) {
if ((Crc32Table[i] & bb) > 0)
Crc32Table[i] = (Crc32Table[i] << 1L) ^ UlPolynomial;
else
Crc32Table[i] = (Crc32Table[i] << 1L);
}
Crc32Table[i] = CRC_Reflect(Crc32Table[i], 32);
}
}
static long CRC_Reflect(long refValue, int ch) {
long Value = 0L;
for (int i = 0; i < ch; i++) {
if ((refValue & 1L) > 0)
Value = Value | (1L << (ch - i - 1));
refValue = refValue >> 1L;
}
return Value;
}
public static int CRC_AddData(long InitCRC, String crcStr) {
initCrcTable();
byte[] Txt = new byte[0];
try {
Txt = crcStr.getBytes("gb2312");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("以gb2312编码获取byte[]失败CRC加密失败");
}
int ten = Txt.length;
for (int i = 0; i < ten; i++) {
int aa = Txt[i];
while (aa < 0) {
aa = 256 + aa;
}
InitCRC = ((InitCRC >> 8) ^ Crc32Table[(int) ((InitCRC & 0xFF) ^ aa)]);
}
return (int)InitCRC;
}
}

@ -0,0 +1,185 @@
package com.nmgs.util;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import java.io.*;
import java.security.Key;
import java.util.Base64;
public class DESUtil {
/**
* 8
*/
private final static String IV_PARAMETER = "12345678";
/**
*
*/
private static final String ALGORITHM = "DES";
/**
* /--
*/
private static final String CIPHER_ALGORITHM = "DES/CBC/PKCS5Padding";
/**
*
*/
private static final String CHARSET = "utf-8";
/**
*
*/
private static final String PASSWORD = "58612911";
/**
* key
*
* @param password
* @return
* @throws Exception
*/
private static Key generateKey(String password) throws Exception {
DESKeySpec dks = new DESKeySpec(password.getBytes(CHARSET));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
return keyFactory.generateSecret(dks);
}
/**
* DES
*
* @param data
* @return
*/
public static String encrypt( String data) {
String password=PASSWORD;
if (password== null || password.length() < 8) {
throw new RuntimeException("加密失败key不能小于8位");
}
if (data == null)
return null;
try {
Key secretKey = generateKey(password);
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
byte[] rgbiv={0x12,0x34,0x56,0x78, (byte) 0x90, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF};
// IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes(CHARSET));
IvParameterSpec iv = new IvParameterSpec(rgbiv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
byte[] bytes = cipher.doFinal(data.getBytes(CHARSET));
//JDK1.8及以上可直接使用Base64JDK1.7及以下可以使用BASE64Encoder
//Android平台可以使用android.util.Base64
// return new String(Base64.getEncoder().encode(bytes));
return new String(Base64.getEncoder().encode(bytes));
} catch (Exception e) {
e.printStackTrace();
return data;
}
}
/**
* DES
*
* @param data
* @return
*/
public static String decrypt( String data) {
String password=PASSWORD;
if (password== null || password.length() < 8) {
throw new RuntimeException("加密失败key不能小于8位");
}
if (data == null)
return null;
try {
Key secretKey = generateKey(password);
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
byte[] rgbiv={0x12,0x34,0x56,0x78, (byte) 0x90, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF};
// IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes(CHARSET));
IvParameterSpec iv = new IvParameterSpec(rgbiv);
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
return new String(cipher.doFinal(Base64.getDecoder().decode(data.getBytes(CHARSET))), CHARSET);
} catch (Exception e) {
e.printStackTrace();
return data;
}
}
/**
* DES
*
* @param srcFile
* @param destFile
* @return
*/
public static String encryptFile( String srcFile, String destFile) {
String password=PASSWORD;
if (password== null || password.length() < 8) {
throw new RuntimeException("加密失败key不能小于8位");
}
try {
IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes(CHARSET));
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, generateKey(password), iv);
InputStream is = new FileInputStream(srcFile);
OutputStream out = new FileOutputStream(destFile);
CipherInputStream cis = new CipherInputStream(is, cipher);
byte[] buffer = new byte[1024];
int r;
while ((r = cis.read(buffer)) > 0) {
out.write(buffer, 0, r);
}
cis.close();
is.close();
out.close();
return destFile;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* DES
*
* @param srcFile
* @param destFile
* @return
*/
public static String decryptFile( String srcFile, String destFile) {
String password=PASSWORD;
if (password== null || password.length() < 8) {
throw new RuntimeException("加密失败key不能小于8位");
}
try {
File file = new File(destFile);
if (!file.exists()) {
file.getParentFile().mkdirs();
file.createNewFile();
}
IvParameterSpec iv = new IvParameterSpec(IV_PARAMETER.getBytes(CHARSET));
Cipher cipher = Cipher.getInstance(CIPHER_ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, generateKey(password), iv);
InputStream is = new FileInputStream(srcFile);
OutputStream out = new FileOutputStream(destFile);
CipherOutputStream cos = new CipherOutputStream(out, cipher);
byte[] buffer = new byte[1024];
int r;
while ((r = is.read(buffer)) >= 0) {
cos.write(buffer, 0, r);
}
cos.close();
is.close();
out.close();
return destFile;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
public static void main(String[] args) {
System.out.println(decrypt("vp98+kUHT48="));
}
}

@ -0,0 +1,252 @@
package com.nmgs.util;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @Description:
* @Auther: xuxiaojun
* @Date: 2020-03-19
*/
public class DateSplitUtils {
public enum IntervalType {
DAY,
HOUR,
MINUTE,
SECOND,
;
}
/**
*
* @param startTime
* @param endTime
* @param intervalType
* @param interval >0
* @return
*/
public static List<DateSplit> splitDate(Date startTime, Date endTime, IntervalType intervalType, int interval) {
if (interval < 0) {
return null;
}
if (endTime.getTime() <= startTime.getTime()) {
return null;
}
if (intervalType == IntervalType.DAY) {
return splitByDay(startTime, endTime, interval);
}
if (intervalType == IntervalType.HOUR) {
return splitByHour(startTime, endTime, interval);
}
if (intervalType == IntervalType.MINUTE) {
return splitByMinute(startTime, endTime, interval);
}
if (intervalType == IntervalType.SECOND) {
return splitBySecond(startTime, endTime, interval);
}
return null;
}
/**
*
*/
public static List<DateSplit> splitByHour(Date startTime, Date endTime, int intervalHours) {
if (endTime.getTime() <= startTime.getTime()) {
return null;
}
List<DateSplit> dateSplits = new ArrayList<>(256);
DateSplit param = new DateSplit();
param.setStartDateTime(startTime);
param.setEndDateTime(endTime);
param.setEndDateTime(addHours(startTime, intervalHours));
while (true) {
param.setStartDateTime(startTime);
Date tempEndTime = addHours(startTime, intervalHours);
if (tempEndTime.getTime() >= endTime.getTime()) {
tempEndTime = endTime;
}
param.setEndDateTime(tempEndTime);
dateSplits.add(new DateSplit(param.getStartDateTime(), param.getEndDateTime()));
startTime = addHours(startTime, intervalHours);
if (startTime.getTime() >= endTime.getTime()) {
break;
}
if (param.getEndDateTime().getTime() >= endTime.getTime()) {
break;
}
}
return dateSplits;
}
/**
*
*/
public static List<DateSplit> splitBySecond(Date startTime, Date endTime, int intervalSeconds) {
if (endTime.getTime() <= startTime.getTime()) {
return null;
}
List<DateSplit> dateSplits = new ArrayList<>(256);
DateSplit param = new DateSplit();
param.setStartDateTime(startTime);
param.setEndDateTime(endTime);
param.setEndDateTime(addSeconds(startTime, intervalSeconds));
while (true) {
param.setStartDateTime(startTime);
Date tempEndTime = addSeconds(startTime, intervalSeconds);
if (tempEndTime.getTime() >= endTime.getTime()) {
tempEndTime = endTime;
}
param.setEndDateTime(tempEndTime);
dateSplits.add(new DateSplit(param.getStartDateTime(), param.getEndDateTime()));
startTime = addSeconds(startTime, intervalSeconds);
if (startTime.getTime() >= endTime.getTime()) {
break;
}
if (param.getEndDateTime().getTime() >= endTime.getTime()) {
break;
}
}
return dateSplits;
}
/**
*
*/
public static List<DateSplit> splitByDay(Date startTime, Date endTime, int intervalDays) {
if (endTime.getTime() <= startTime.getTime()) {
return null;
}
List<DateSplit> dateSplits = new ArrayList<>(256);
DateSplit param = new DateSplit();
param.setStartDateTime(startTime);
param.setEndDateTime(endTime);
param.setEndDateTime(addDays(startTime, intervalDays));
while (true) {
param.setStartDateTime(startTime);
Date tempEndTime = addDays(startTime, intervalDays);
if (tempEndTime.getTime() >= endTime.getTime()) {
tempEndTime = endTime;
}
param.setEndDateTime(tempEndTime);
dateSplits.add(new DateSplit(param.getStartDateTime(), param.getEndDateTime()));
startTime = addDays(startTime, intervalDays);
if (startTime.getTime() >= endTime.getTime()) {
break;
}
if (param.getEndDateTime().getTime() >= endTime.getTime()) {
break;
}
}
return dateSplits;
}
/**
*
*
* @param startTime
* @param endTime
* @param intervalMinutes
* @return
*/
public static List<DateSplit> splitByMinute(Date startTime, Date endTime, int intervalMinutes) {
if (endTime.getTime() <= startTime.getTime()) {
return null;
}
List<DateSplit> dateSplits = new ArrayList<>(256);
DateSplit param = new DateSplit();
param.setStartDateTime(startTime);
param.setEndDateTime(endTime);
param.setEndDateTime(addMinute(startTime, intervalMinutes));
while (true) {
param.setStartDateTime(startTime);
Date tempEndTime = addMinute(startTime, intervalMinutes);
if (tempEndTime.getTime() >= endTime.getTime()) {
tempEndTime = endTime;
}
param.setEndDateTime(tempEndTime);
dateSplits.add(new DateSplit(param.getStartDateTime(), param.getEndDateTime()));
startTime = addMinute(startTime, intervalMinutes);
if (startTime.getTime() >= endTime.getTime()) {
break;
}
if (param.getEndDateTime().getTime() >= endTime.getTime()) {
break;
}
}
return dateSplits;
}
private static Date addDays(Date date, int days) {
return add(date, Calendar.DAY_OF_MONTH, days);
}
private static Date addHours(Date date, int hours) {
return add(date, Calendar.HOUR_OF_DAY, hours);
}
private static Date addMinute(Date date, int minute) {
return add(date, Calendar.MINUTE, minute);
}
private static Date addSeconds(Date date, int second) {
return add(date, Calendar.SECOND, second);
}
private static Date add(final Date date, final int calendarField, final int amount) {
final Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(calendarField, amount);
return c.getTime();
}
private static String formatDateTime(Date date) {
if (date == null) {
return "";
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return simpleDateFormat.format(date);
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class DateSplit {
private Date startDateTime;
private Date endDateTime;
public String getStartDateTimeStr() {
return formatDateTime(startDateTime);
}
public String getEndDateTimeStr() {
return formatDateTime(endDateTime);
}
}
}

@ -0,0 +1,93 @@
package com.nmgs.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.*;
public class DateTimeSplitUtil {
private static SimpleDateFormat sfMin00=new SimpleDateFormat("yyyy-MM-dd HH:00:00");
private static SimpleDateFormat sfMin59=new SimpleDateFormat("yyyy-MM-dd HH:59:59");
private static SimpleDateFormat sf00=new SimpleDateFormat("yyyy-MM-dd 00:00:00");
private static SimpleDateFormat sf23=new SimpleDateFormat("yyyy-MM-dd 23:59:59");
private static SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) throws ParseException, CloneNotSupportedException, InterruptedException {
String startTime="2023-05-01 00:00:00";
String endTime="2023-05-16 10:53:22";
System.out.println(splitDateByDay(startTime,endTime));
// System.out.println(splitDateByDay(startTime,endTime));;
}
public static List<Map<String,String>> splitDateByHour(String startTime, String endTime) throws ParseException{
Date currentDate = null;
Date endDate= null;
try {
currentDate= format.parse(startTime);;//DateUtility.parse(startTime)
}catch (Exception e){
LocalDate today = LocalDate.now(); // 获取当前日期
LocalDate firstDayOfMonth = today.withDayOfMonth(1); // 设置当前日期为本月第一天
currentDate = Date.from(firstDayOfMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
}
try {
endDate= format.parse(endTime); //endTime.parse(endTime)
}catch (Exception e){
endDate = format.parse(format.format(new Date()));
}
List<Map<String,String>> dataList=new ArrayList<>();
boolean first=true;
while(currentDate.compareTo(endDate)<=0){
Map<String,String> dataMap=new HashMap<>();
dataMap.put("startTime",first?format.format(currentDate):sfMin00.format(currentDate));
first=false;
dataMap.put("endTime", DateUtils.addHours(currentDate,1).compareTo(endDate)>0?format.format(endDate):sfMin59.format(currentDate));
dataList.add(dataMap);
currentDate=DateUtils.addHours(currentDate,1);
}
return dataList;
}
public static List<Map<String,String>> splitDateByDay(String startTime,String endTime)throws ParseException{
Date currentDate = null;
Date endDate= null;
try {
currentDate= format.parse(startTime);;//DateUtility.parse(startTime)
}catch (Exception e){
// 获取当前日期
LocalDateTime now = LocalDateTime.now();
// 获取当前日期的00:00:00时间
LocalTime midnight = LocalTime.MIDNIGHT;
LocalDateTime localDateTime = midnight.atDate(LocalDate.now());
// 转换为java.util.Date
ZoneId zoneId = ZoneId.systemDefault(); // 使用系统默认时区
currentDate = Date.from(localDateTime.atZone(zoneId).toInstant());
}
try {
endDate= format.parse(endTime); //endTime.parse(endTime)
}catch (Exception e){
endDate = format.parse(format.format(new Date()));
}
List<Map<String,String>> dataList=new ArrayList<>();
boolean first=true;
while(currentDate.compareTo(endDate)<=0){
Map<String,String> dataMap=new HashMap<>();
dataMap.put("startTime",first?format.format(currentDate):sf00.format(currentDate));
first=false;
dataMap.put("endTime", DateUtils.addDays(currentDate,1).compareTo(endDate)>0?format.format(endDate):sf23.format(currentDate));
dataList.add(dataMap);
currentDate=DateUtils.addDays(currentDate,1);
}
return dataList;
}
}

@ -0,0 +1,175 @@
package com.nmgs.util;
import org.apache.commons.lang3.time.DateFormatUtils;
import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*
*
* @author ruoyi
*/
public class DateUtils extends org.apache.commons.lang3.time.DateUtils
{
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
public static String YYYY_MM_DD = "yyyy-MM-dd";
public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private static String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
/**
* Date
*
* @return Date()
*/
public static Date getNowDate()
{
return new Date();
}
/**
* , yyyy-MM-dd
*
* @return String
*/
public static String getDate()
{
return dateTimeNow(YYYY_MM_DD);
}
public static final String getTime()
{
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
public static final String dateTimeNow()
{
return dateTimeNow(YYYYMMDDHHMMSS);
}
public static final String dateTimeNow(final String format)
{
return parseDateToStr(format, new Date());
}
public static final String dateTime(final Date date)
{
return parseDateToStr(YYYY_MM_DD, date);
}
public static final String parseDateToStr(final String format, final Date date)
{
return new SimpleDateFormat(format).format(date);
}
public static final Date dateTime(final String format, final String ts)
{
try
{
return new SimpleDateFormat(format).parse(ts);
}
catch (ParseException e)
{
throw new RuntimeException(e);
}
}
/**
* // 2018/08/08
*/
public static final String datePath()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyy-MM-dd");
}
/**
* // 20180808
*/
public static final String dateTime()
{
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
/**
*
*/
public static Date parseDate(Object str)
{
if (str == null)
{
return null;
}
try
{
return parseDate(str.toString(), parsePatterns);
}
catch (ParseException e)
{
return null;
}
}
/**
*
*/
public static Date getServerStartDate()
{
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
/**
*
*/
public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff % nd / nh;
// 计算差多少分钟
long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
long sec = diff % nd % nh % nm / ns;
return day + "天" + hour + "小时" + min + "分钟" + sec + "秒";
}
public static String getDatePoorForMinSec(Date endDate, Date nowDate) {
long nm = 1000 * 60;
long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
// 计算差多少分钟
long min = diff / nm;
// 计算差多少秒//输出结果
long sec = diff % nm / ns;
return min + "分钟" + sec + "秒";
}
public static long getDatePoorForSec(Date endDate, Date nowDate) {
long ns = 1000;
// 获得两个时间的毫秒时间差异
long diff = endDate.getTime() - nowDate.getTime();
// 计算差多少秒//输出结果
long sec = diff / ns;
return sec;
}
}

@ -0,0 +1,14 @@
package com.nmgs.util;
import java.io.PrintWriter;
import java.io.StringWriter;
public class ExceptionUtil {
public static String getExceptionStr(Exception e){
StringWriter stringWriter = new StringWriter();
PrintWriter writer = new PrintWriter(stringWriter);
e.printStackTrace(writer);
StringBuffer buffer = stringWriter.getBuffer();
return buffer.toString();
}
}

@ -0,0 +1,40 @@
package com.nmgs.util;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.ArrayList;
import java.util.List;
public class PagesUtils {
public static Page getPages(Integer currentPage, Integer pageSize, List list) {
Page page = new Page();
if (list.size() > 0) {
int size = list.size();
if (pageSize > size) {
pageSize = size;
}
// 求出最大页数防止currentPage越界
int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1;
if (currentPage > maxPage) {
currentPage = maxPage;
}
// 当前页第一条数据的下标
int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0;
List pageList = new ArrayList();
// 将当前页的数据放进pageList
for (int i = 0; i < pageSize && curIdx + i < size; i++) {
pageList.add(list.get(curIdx + i));
}
page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList);
}
return page;
}
}

@ -0,0 +1,139 @@
package com.nmgs.util;
import org.springframework.util.ClassUtils;
import java.io.UnsupportedEncodingException;
import java.net.*;
import java.util.Enumeration;
import java.util.Properties;
public class PathUtil {
public static String TomcatPath = System.getProperty("catalina.home");
public static String webappsPath = "";
public static String applicationPath = "";
public static String applicationTextPath = "";
public static String projectApplicationPath;
public static String webPath = "";
public static String websockifyPath = "";
public static String noVNCPath = "";
public static boolean isWin = false;
static {
try {
projectApplicationPath = URLDecoder.decode(ClassUtils.getDefaultClassLoader().getResource("").getPath(), "UTF-8") + "static/application.properties";
websockifyPath = URLDecoder.decode(ClassUtils.getDefaultClassLoader().getResource("").getPath(), "UTF-8") + "static/websockify";
noVNCPath = URLDecoder.decode(ClassUtils.getDefaultClassLoader().getResource("").getPath(), "UTF-8") + "static/noVNC";
webPath = URLDecoder.decode(ClassUtils.getDefaultClassLoader().getResource("").getPath(), "UTF-8") + "static";
} catch (UnsupportedEncodingException e) {
projectApplicationPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/application.properties";
webPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static";
websockifyPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/websockify";
noVNCPath = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/noVNC";
}
}
public static String uploadPath = "";
public static String uploadWarPath = "";
public static String downloadWarPath = "";
public static String hostAddress;
public static String WebServiceWarPath;
public static String tomcatUserXMLPath;
public static String webName = "/noVNC";
static {
Properties props = System.getProperties();
String os = props.getProperty("os.name").toLowerCase();
if (os.startsWith("win")) {
isWin = true;
// TomcatPath = System.getProperty("user.dir").substring(0, System.getProperty("user.dir").lastIndexOf('\\'));
webappsPath = TomcatPath + "\\webapps";
uploadPath = TomcatPath + "\\uploadfiles";
uploadWarPath = TomcatPath + "\\taskWarFiles\\uploadWarFile";
downloadWarPath = TomcatPath + "\\taskWarFiles\\downloadWarFile";
webPath = webPath.substring(1, webPath.length()) + webName;
} else {
webappsPath = TomcatPath + "/webapps";
uploadPath = TomcatPath + "/uploadfiles";
uploadWarPath = TomcatPath + "/taskWarFiles/uploadWarFile";
downloadWarPath = TomcatPath + "/taskWarFiles/downloadWarFile";
webPath = webPath + webName;
}
applicationPath = webappsPath + "/application.properties";
applicationTextPath = webappsPath + "/applicationText.properties";
WebServiceWarPath = TomcatPath + "/WebServiceWar";
tomcatUserXMLPath = TomcatPath + "/conf/tomcat-users.xml";
// hostAddress = Inet4Address.getLocalHost().getHostAddress();
hostAddress = String.valueOf(getInet4Address());
if(isWin){
if (hostAddress.charAt(0) == '/' || hostAddress.charAt(0) == '\\') {
hostAddress = hostAddress.substring(1);
}
if (applicationPath.charAt(0) == '/' || applicationPath.charAt(0) == '\\') {
applicationPath = applicationPath.substring(1);
}
if (applicationTextPath.charAt(0) == '/' || applicationTextPath.charAt(0) == '\\') {
applicationTextPath = applicationTextPath.substring(1);
}
if (projectApplicationPath.charAt(0) == '/' || projectApplicationPath.charAt(0) == '\\') {
projectApplicationPath = projectApplicationPath.substring(1);
}
if (noVNCPath.charAt(0) == '/' || noVNCPath.charAt(0) == '\\') {
noVNCPath = noVNCPath.substring(1);
}
if (websockifyPath.charAt(0) == '/' || websockifyPath.charAt(0) == '\\') {
websockifyPath = websockifyPath.substring(1);
}
}
/*
*/
}
public static InetAddress getInet4Address() {
try {
//获取所有网络接口
Enumeration<NetworkInterface> allNetworkInterfaces = NetworkInterface.getNetworkInterfaces();
//遍历所有网络接口
for (; allNetworkInterfaces.hasMoreElements(); ) {
NetworkInterface networkInterface = allNetworkInterfaces.nextElement();
//如果此网络接口为 回环接口 或者 虚拟接口(子接口) 或者 未启用 或者 描述中包含VM
if (networkInterface.isLoopback() || networkInterface.isVirtual() || !networkInterface.isUp() || networkInterface.getDisplayName().contains("VM")) {
//继续下次循环
continue;
}
//如果不是Intel与Realtek的网卡
// if(!(networkInterface.getDisplayName().contains("Intel"))&&!(networkInterface.getDisplayName().contains("Realtek"))){
// //继续下次循环
// continue;
// }
//遍历此接口下的所有IP因为包括子网掩码各种信息
for (Enumeration<InetAddress> inetAddressEnumeration = networkInterface.getInetAddresses(); inetAddressEnumeration.hasMoreElements(); ) {
InetAddress inetAddress = inetAddressEnumeration.nextElement();
//如果此IP不为空
if (inetAddress != null) {
//如果此IP为IPV4 则返回
if (inetAddress instanceof Inet4Address) {
return inetAddress;
}
/*
// -------这样判断IPV4更快----------
if(inetAddress.getAddress().length==4){
return inetAddress;
}
*/
}
}
}
return null;
} catch (SocketException e) {
e.printStackTrace();
return null;
}
}
}

@ -0,0 +1,34 @@
package com.nmgs.util;
public class PlateRegexutil {
public static boolean isregex (String plateid) {
String start = "(" +
"京|津|冀|晋|蒙|辽|吉|黑|沪|苏|浙|皖|闽|赣|鲁|" +
"豫|鄂|湘|粤|桂|琼|渝|川|贵|云|藏|陕|甘|青|宁|" +
"新|港|澳|" +
"军|空|海|北|沈|兰|济|南|广|成|临" +
")";
String regex[] = {
start + "[a-zA-Z]{1}[a-zA-Z0-9]{6}", //新能源车牌
start + "[a-zA-Z]{1}[a-zA-Z0-9]{5}", //常规车牌
start + "[a-zA-Z]{1}[a-zA-Z0-9]{4}(警|使|学|挂|领|港|澳|超|临)", //常规特种车牌
"(WJ)[0-9]{2}[a-zA-Z0-9]{5}", //武警普通
"(WJ)[0-9]{2}(消|边|通|森|金|警|电)[a-zA-Z0-9]{4}", //武警特种
"(WJ)[a-zA-Z0-9]{1}[a-zA-Z0-9]{5}",
"(WJ)[0-9]{2}(消|边|通|森|金|警|电|[a-zA-Z0-9])[a-zA-Z0-9]{4}", //武警(综合)
"(WJ)(消|边|通|森|金|警|电|[a-zA-Z0-9])[a-zA-Z0-9]{5}",
start + "[a-zA-Z]{1}[a-zA-Z0-9]{4}(警|使|学|挂|领|港|澳|超|临|[a-zA-Z0-9])"//常规(综合)
};
//总综合
// regex = new String[]{"(" + start + "[a-zA-Z]{1}[a-zA-Z0-9]{4}(警|使|学|挂|领|港|澳|超|临|[a-zA-Z0-9]))|((WJ)[0-9]{2}(消|边|通|森|金|警|电|[a-zA-Z0-9])[a-zA-Z0-9]{4})"};
boolean relseltflag=false;
for (int j = 0; j < regex.length; j++) {
if (plateid.matches(regex[j])) {
relseltflag= true;
}
}
return relseltflag;
}
}

@ -0,0 +1,345 @@
package com.nmgs.util;
import java.io.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
public class PropertiesUtil {
public static String getValue(String key) {
String path = PathUtil.applicationPath;
FileInputStream fIn = null;
InputStreamReader in = null;
try {
// File updateFile = new File(path);
Properties properties = new Properties();
// BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(path), "gb2312"));
fIn = new FileInputStream(path);
in = new InputStreamReader(fIn, "UTF-8");
BufferedReader bf = new BufferedReader(in);
properties.load(bf);
return properties.getProperty(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fIn != null) {
fIn.close();
}
if (in != null) {
in.close();
}
} catch (Exception e) {
}
}
return "";
}
//目标文件
public File file;
//目标路径
public String path;
//默认字符编码
public String charset = "UTF-8";
//文件的每一行
public String[] lines;
//注释符
public static final String ANNOTATION_CHAR = "#";
public PropertiesUtil(File file) throws IOException {
this.file = file;
this.lines = getFileLines(file);
}
public PropertiesUtil(String path) throws IOException {
this.path = path;
this.lines = getFileLines(path);
}
/*
*
*
* @param key
* @return: java.lang.String
*/
public String get(String key) {
for (String line : lines) {
if (hasKey(line, key)) {
return getLineValue(line);
}
}
return null;
}
/**
*
*
* @param key
* @param value
* @param descriptions
* @return: boolean
*/
public boolean add(String key, String value, String... descriptions) {
List<String> lineList = new ArrayList<>(Arrays.asList(lines));
for (String description : descriptions) {
lineList.add(ANNOTATION_CHAR + description);
}
lineList.add(key.trim() + "=" + value.trim());
return commit(lineList.toArray(new String[0]));
}
/**
*
*
* @param key
* @param value
* @return: boolean
*/
public boolean set(String key, String value) {
boolean isHave = false;
for (int i = 0; i < lines.length; i++) {
if (hasKey(lines[i], key)) {
isHave = true;
lines[i] = key + "=" + value;
}
}
if (!isHave) {
add(key, value);
}
return commit(lines);
}
/**
*
*
* @param key
* @param value
* @return: boolean
*/
public boolean set(String key, String value, String... descriptions) {
boolean isHave = false;
for (int i = 0; i < lines.length; i++) {
if (hasKey(lines[i], key)) {
isHave = true;
lines[i] = key + "=" + value;
List<String> lineList = new ArrayList<>(Arrays.asList(lines));
for (String description : descriptions) {
while (1 == 1) {
if (i - 1 >= 0 && lineList.get(i - 1).toString().contains("#")) {
lineList.remove(i - 1);
i = i - 1;
} else {
break;
}
}
lineList.add(i, ANNOTATION_CHAR + description);
}
lines = lineList.toArray(new String[0]);
break;
}
}
if (!isHave) {
add(key, value, descriptions);
}
return commit(lines);
}
/*
*
*
* @param key
* @return: boolean
*/
public boolean delete(String key) {
List<String> lineList = new ArrayList<>(Arrays.asList(lines));
lineList.removeIf(line -> hasKey(line, key));
return commit(lineList.toArray(new String[0]));
}
/*
*
*
* @param lines
* @return: boolean
*/
public boolean commit(String[] lines) {
synchronized (this) {
this.lines = lines;
try (BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), charset))) {
StringBuilder data = new StringBuilder();
for (String line : lines) {
data.append(line).append('\n');
}
bufferedWriter.write(data.toString());
return true;
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
/*
* key
*
* @param line
* @return: java.lang.String
*/
public String getLineKey(String line) {
return line.substring(0, line.indexOf('=')).trim();
}
/**
* value
*
* @param line
* @return: java.lang.String
*/
public String getLineValue(String line) {
return line.substring(line.indexOf('=') + 1).trim();
}
/**
* ( # = ) true false
*
* @return: boolean
*/
public boolean isValidLine(String line) {
return !line.trim().startsWith("#") && line.contains("=");
}
/**
* key
*
* @param line
* @param key
* @return: boolean
*/
public boolean hasKey(String line, String key) {
return isValidLine(line) && key.equals(getLineKey(line));
}
public boolean hasKey(String key) {
List<String> lineList = new ArrayList<>(Arrays.asList(lines));
for (int i = 0; i < lineList.size(); i++) {
String line = lineList.get(i);
if (hasKey(line, key)) {
return true;
}
if (i == lineList.size() - 1) {
return false;
}
}
return false;
}
/**
*
*
* @param file
* @return: java.lang.String[]
*/
public String[] getFileLines(File file) {
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), charset));) {
String line;
List<String> lines = new ArrayList<>();
while ((line = bufferedReader.readLine()) != null) {
lines.add(line);
}
return lines.toArray(new String[0]);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* resource resourceIOException
*
* @param path
* @return: java.lang.String[]
*/
public String[] getFileLines(String path) throws IOException {
File file = new File(path);
if (file.isFile()) {
this.file = file;
return getFileLines(file);
} else {
URL url = getClass().getClassLoader().getResource(path);
if (url == null) {
throw new FileNotFoundException("resource path is not found");
}
file = new File(url.getPath());
if (file.isFile()) {
this.file = file;
return getFileLines(file);
} else {
throw new FileNotFoundException("properties file is not found");
}
}
}
// Type conversion
public boolean getBoolean(String key) {
return Boolean.parseBoolean(get(key));
}
public int getInt(String key) {
return Integer.parseInt(get(key));
}
public float getFloat(String key) {
return Float.parseFloat(get(key));
}
public double getDouble(String key) {
return Double.parseDouble(get(key));
}
public short getShort(String key) {
return Short.parseShort(get(key));
}
public long getLong(String key) {
return Long.parseLong(get(key));
}
//getter and setter
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getCharset() {
return charset;
}
public void setCharset(String charset) {
this.charset = charset;
}
public String[] getLines() {
return lines;
}
public void setLines(String[] lines) {
this.lines = lines;
}
}

@ -0,0 +1,146 @@
package com.nmgs.util;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.InputStream;
import java.sql.Date;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ReadExcel {
private final static String excel2003L = ".xls"; //2003- 版本的excel
private final static String excel2007U = ".xlsx"; //2007+ 版本的excel
/**
* Excel
*/
public static List<Map<String,Object>> getBankListByExcel(InputStream in, String fileName, int index) throws Exception {
List<Map<String,Object>> list = null;
//创建Excel工作薄
Workbook work = getWorkbook(in, fileName);
FormulaEvaluator evaluator=work.getCreationHelper().createFormulaEvaluator();
if (null == work) {
throw new Exception("创建Excel工作薄为空");
}
Sheet sheet = null;
Row row = null;
Cell cell = null;
list = new ArrayList<>();
//遍历Excel中所有的sheet
for (int i = 0; i < work.getNumberOfSheets(); i++) {
sheet = work.getSheetAt(i);
if (sheet == null) {
continue;
}
//遍历当前sheet中的所有行
//包涵头部,所以要小于等于最后一列数,这里也可以在初始值加上头部行数,以便跳过头部
for (int j = sheet.getFirstRowNum() + 1; j <= sheet.getLastRowNum(); j++) {
Map<String,Object> map=new HashMap<>();
//读取一行
row = sheet.getRow(j);
//去掉空行和表头
if (row == null || row.getFirstCellNum() == j) {
continue;
}
//遍历所有的列
List<Object> li = new ArrayList<>();
Boolean b = true;
if(j+1==1577){
System.out.println("aaa");
}
for (int y = row.getFirstCellNum(); y < index; y++) {
cell = row.getCell(y);
if ("".equals(getCellValue(cell,evaluator)) && y == row.getFirstCellNum()) {
b = false;
break;
}
li.add(getCellValue(cell,evaluator));
}
if (b) {
map.put("rowIndex",j+1);
map.put("list",li);
list.add(map);
}
}
}
return list;
}
/**
*
*/
public static Workbook getWorkbook(InputStream inStr, String fileName) throws Exception {
Workbook wb = null;
String fileType = fileName.substring(fileName.lastIndexOf("."));
if (excel2003L.equals(fileType)) {
wb = new HSSFWorkbook(inStr); //2003-
} else if (excel2007U.equals(fileType)) {
wb = new XSSFWorkbook(inStr); //2007+
} else {
throw new RuntimeException("Excel版本错误");
}
return wb;
}
/**
*
*/
public static Object getCellValue(Cell cell,FormulaEvaluator evaluator) {
Object value = null;
DecimalFormat df = new DecimalFormat("0"); //格式化字符类型的数字
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //日期格式化
SimpleDateFormat sdf2 = new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); //日期格式化
DecimalFormat df2 = new DecimalFormat("0.00"); //格式化数字
if (cell == null) {
value = "";
return value;
}
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
value = cell.getRichStringCellValue().getString().replace("","").replace("\n","").trim();
break;
case Cell.CELL_TYPE_NUMERIC:
System.out.println(cell.getCellStyle().getDataFormatString());
if ("General".equals(cell.getCellStyle().getDataFormatString())) {
value = cell.getNumericCellValue();
} else if ("m\\/d\\/yyyy".equals(cell.getCellStyle().getDataFormatString())) {
value = cell.getDateCellValue();
} else if ("m/d/yy".equals(cell.getCellStyle().getDataFormatString())) {
value = cell.getDateCellValue();
} else if ("yyyy/m/d;@".equals(cell.getCellStyle().getDataFormatString())) {
value = cell.getDateCellValue();
} else if ("yyyy-m-d hh:mm:ss".equals(cell.getCellStyle().getDataFormatString())) {
value = cell.getDateCellValue();
} else if ("yyyy\\-m\\-d\\ hh:mm:ss".equals(cell.getCellStyle().getDataFormatString())) {
value = cell.getDateCellValue();
} else {
value = cell.getNumericCellValue();
}
break;
case Cell.CELL_TYPE_BOOLEAN:
value = cell.getBooleanCellValue();
break;
case Cell.CELL_TYPE_BLANK:
value = "";
break;
case Cell.CELL_TYPE_FORMULA:
value = evaluator.evaluate(cell).getStringValue().replace("","").replace("\n","").trim();
break;
default:
break;
}
return value;
}
}

@ -0,0 +1,96 @@
package com.nmgs.util;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class TokenUtil {
/**
* token
*/
//private static final String TOKEN_SECRET = "apiManager";
private static final String TOKEN_SECRET = "5267915"; //0.13上用
/**
*
*/
private static final long EXPIRE_DATE = 30 * 60 * 100000;
public static String token(String secreteKey) {
String token = "";
try {
//过期时间
Date date = new Date(System.currentTimeMillis() + EXPIRE_DATE);
//秘钥及加密算法
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
//设置头部信息
Map<String, Object> header = new HashMap<>();
header.put("typ", "JWT");
header.put("alg", "HS256");
//携带usernamepassword信息生成签名
token = JWT.create()
.withHeader(header)
.withClaim("secreteKey", secreteKey)
.withExpiresAt(date)
.sign(algorithm);
} catch (Exception e) {
log.error("获取token异常", e);
return null;
}
return token;
}
public static boolean verify(String token, HttpServletRequest request) {
/**
* @desc tokentrue
* @params [token]
**/
try {
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
HttpSession session = request.getSession();
String Man = jwt.getClaim("Man").asString().replaceAll("\\\"","");;
String Manid = jwt.getClaim("Manid").toString().replaceAll("\\\"","");;
String Manno = jwt.getClaim("Manno").toString().replaceAll("\\\"","");;
if (Man == null || Man.equals("") ||
Manid == null || Manid.equals("") ||
Manno == null || Manno.equals("")) {
return false;
}
session.setAttribute("Man", Man);
session.setAttribute("Manid", Manid);
session.setAttribute("Manno", Manno);
return true;
} catch (Exception e) {
log.error("验证token异常", e);
return false;
}
}
public static boolean verify(String token) {
/**
* @desc tokentrue
* @params [token]
**/
try {
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
return true;
} catch (Exception e) {
log.error("验证token异常", e);
return false;
}
}
}

@ -0,0 +1,119 @@
package com.nmgs.util;
import com.trkf.PasswordEncryption.PassWordUtils;
import org.apache.commons.codec.binary.Base64;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.CRC32;
public class main {
private static long[] Crc32Table = {
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
};
public static void main(String[] args) throws ParseException, UnsupportedEncodingException {
// String memo="A900000000".substring(2,6);
// System.out.println(Long.parseLong(memo,16));
System.out.println(PassWordUtils.encrypt("nmgh90[]"));
// System.out.println(" 蒙K972X3 ".replace("","").trim());
// String str = "蒙蒙蒙蒙123456625";
// System.out.println(CRCUtil.CRC_AddData(10L,str));
// System.out.println(CRCUtil.CRC_Reflect(255, 8));
// System.out.println(CRCUtil.CRC_Reflect(255, 8) << 24);
// int bbb=255;
// System.out.println(aaa << 24);
// System.out.println(-2147483648<<1);
// System.out.println(10>>>2);
// BigInteger aaa=new BigInteger ("3524903388");
//
// long UlPolynomial = 0x04C11DB7;
// System.out.println((aaa << 1));
// System.out.println((aaa << 1) ^ UlPolynomial);
// for (int j = 0; j < 8; j++) {
// System.out.println((aaa & 0x80000000));
// System.out.println((aaa & 0x80000000) > 0);
// System.out.println((aaa << 1) ^ UlPolynomial);
// if ((aaa & 0x80000000) > 0) {
// aaa = (aaa << 1) ^ UlPolynomial;
// } else {
// aaa = (aaa << 1);
// }
//
// }
// System.out.println(aaa);
String data = "qweasdasdasd";
// crc32.update(bytes);
}
}

@ -0,0 +1,2 @@
org.springframework.boot.env.EnvironmentPostProcessor=\
com.nmgs.MyEnvironmentPostProcessor

@ -0,0 +1,255 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL如果设置为WARN则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时配置文件如果发生改变将会被重新加载默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔如果没有给出时间单位默认单位是毫秒。当scan为true时此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时将打印出logback内部日志信息实时查看logback运行状态。默认值为false。 -->
<configuration scan="false" scanPeriod="10 seconds" debug="true">
<springProperty scope="context" name="logLevel" source="spring.logback.level"/>
<springProperty scope="context" name="APP_NAME" source="spring.logback.appName"/>
<springProperty scope="context" name="myMaxHistory" source="spring.logback.myMaxHistory"/>
<springProperty scope="context" name="myFileSize" source="spring.logback.myFileSize"/>
<springProperty scope="context" name="myTotalSizeCap" source="spring.logback.myTotalSizeCap"/>
<springProperty scope="context" name="logPath" source="spring.logback.logPath"/>
<contextName>${APP_NAME}</contextName>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!--彩色日志输出格式-->
<property name="CONSOLE_LOG_PATTERN"
value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%level){blue} %clr(${PID}){magenta} %clr([%thread]){orange} %clr(%logger){cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
<!--非彩色日志输出格式-->
<property name="PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level 服务名称:${APP_NAME} %logger{36} - %msg%n"/>
<!--dev文件路径src同级目录logs,如果上级目录不存在会自动创建-->
<property name="DEV_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
<!-- pro文件路径 -->
<property name="PRO_FILE_PATH" value="${logPath}/${APP_NAME}/"/>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%level] [%thread] [%class:%line] %logger{50} - %m %n</pattern>-->
<!--格式化输出:%d表示日期%thread表示线程名%-5level级别从左显示5个字符宽度%msg日志消息%n是换行符-->
<pattern>${PATTERN}</pattern>
<!-- <charset>UTF-8</charset>-->
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 按照每天生成输出日志文件 -->
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<!--格式化输出:%d表示日期%thread表示线程%-5level级别从左显示五个字符宽度%logger{36}logger是class的全名,后面的数字代表限制最长的字符,%msg日志消息%n换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<!--滚动策略按照时间滚动-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily 文件名称 -->
<fileNamePattern>${DEV_FILE_PATH}/output-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
</appender>
<appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${DEV_FILE_PATH}/log_info_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
<!-- 当文件总大小超过2GB先删除30天内最早的文件。不会删除30天外的文件。 -->
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${DEV_FILE_PATH}/log_error_%d{yyyy-MM-dd_HH}.%i.txt</fileNamePattern>
<!-- 当文件总大小超过1GB先删除10天内最早的文件。不会删除10天外的文件。 -->
<maxHistory>${myMaxHistory}</maxHistory>
<maxFileSize>${myFileSize}</maxFileSize>
<totalSizeCap>${myTotalSizeCap}</totalSizeCap>
</rollingPolicy>
<append>true</append>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${PATTERN}</pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_warn_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 每产生一个日志文件该日志文件的保存期限为10天 &ndash;&gt;-->
<!-- <maxHistory>10</maxHistory>-->
<!-- <maxFileSize>20MB</maxFileSize>-->
<!-- <totalSizeCap>500MB</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>WARN</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!-- <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log_debug_%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 当文件总大小超过1GB先删除10天内最早的文件。不会删除10天外的文件。 &ndash;&gt;-->
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>DEBUG</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!-- <appender name="SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!-- <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">-->
<!-- <fileNamePattern>${DEV_FILE_PATH}/log-sql-%d{yyyy-MM-dd_H}.%i.txt</fileNamePattern>-->
<!-- &lt;!&ndash; 每产生一个日志文件该日志文件的保存期限为3天 &ndash;&gt;-->
<!-- <maxHistory>${myMaxHistory}</maxHistory>-->
<!-- <maxFileSize>${myFileSize}</maxFileSize>-->
<!-- <totalSizeCap>${myTotalSizeCap}</totalSizeCap>-->
<!-- </rollingPolicy>-->
<!-- <append>true</append>-->
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">-->
<!-- <pattern>${PATTERN}</pattern>-->
<!-- <charset>utf-8</charset>-->
<!-- </encoder>-->
<!-- <filter class="ch.qos.logback.classic.filter.LevelFilter">-->
<!-- <level>DEBUG</level>-->
<!-- <onMatch>ACCEPT</onMatch>-->
<!-- <onMismatch>DENY</onMismatch>-->
<!-- </filter>-->
<!-- </appender>-->
<!--异步输出-->
<!-- <appender name="DEBUG_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>2048</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="DEBUG"/>-->
<!-- </appender>-->
<!--异步输出-->
<appender name="ERROR_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>1024</queueSize>
<includeCallerData>true</includeCallerData>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="ERROR"/>
</appender>
<!--异步输出-->
<!-- <appender name="WARN_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>1024</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="WARN"/>-->
<!-- </appender>-->
<!--异步输出-->
<appender name="INFO_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>2048</queueSize>
<includeCallerData>true</includeCallerData>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="INFO"/>
</appender>
<!--异步输出-->
<!-- <appender name="SQL_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">-->
<!-- &lt;!&ndash; 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 &ndash;&gt;-->
<!-- <discardingThreshold>0</discardingThreshold>-->
<!-- &lt;!&ndash; 更改默认的队列的深度,该值会影响性能.默认值为256 &ndash;&gt;-->
<!-- <queueSize>2048</queueSize>-->
<!-- <includeCallerData>true</includeCallerData>-->
<!-- &lt;!&ndash; 添加附加的appender,最多只能添加一个 &ndash;&gt;-->
<!-- <appender-ref ref="SQL"/>-->
<!-- </appender>-->
<!--
<logger>用来设置某一个包或者具体的某一个类的日志打印级别、
以及指定<appender><logger>仅有一个name属性
一个可选的level和一个可选的addtivity属性。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置打印级别大小写无关TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
还有一个特俗值INHERITED或者同义词NULL代表强制执行上级的级别。
如果未设置此属性那么当前logger将会继承上级的级别。
addtivity:是否向上级logger传递打印信息。默认是true。
-->
<!-- <logger name="dao" level="ERROR">-->
<!-- <appender-ref ref="SQL"/>-->
<!-- <appender-ref ref="STDOUT"/>-->
<!-- </logger>-->
<root level="${logLevel}">
<appender-ref ref="STDOUT"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="INFO_ASYNC_LOG"/>
<!-- <appender-ref ref="WARN_ASYNC_LOG"/>-->
<appender-ref ref="ERROR_ASYNC_LOG"/>
<!-- <appender-ref ref="DEBUG_ASYNC_LOG"/>-->
<!-- <appender-ref ref="SQL_ASYNC_LOG"/>-->
</root>
</configuration>

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" metadata-complete="true">
<display-name>Router for Tomcat</display-name>
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
</web-app>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<link rel="icon" href="/favicon.ico"/>
<title></title>
<script type="module" crossorigin src="./assets/index.2dc408bf.js"></script>
<link rel="stylesheet" href="./assets/index.06f27ee2.css">
</head>
<body>
<div id="app">
<div class="loading">
<div class="loading-wrap">
<div class="loading-dots">
<span class="dot dot-spin">
<i></i>
<i></i>
<i></i>
<i></i>
</span>
</div>
<div class="loading-title">
正在缓冲...
</div>
</div>
</div>
</div>
<script type="text/javascript" src="./static/map_load.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -0,0 +1,335 @@
var BMap = window.BMap
var BMapLib = (window.BMapLib = BMapLib || {})
;(function () {
var b = function (m, l, j) {
l = d(l)
var n = m.pointToPixel(l.getNorthEast())
var i = m.pointToPixel(l.getSouthWest())
n.x += j
n.y -= j
i.x -= j
i.y += j
var h = m.pixelToPoint(n)
var k = m.pixelToPoint(i)
return new BMap.Bounds(k, h)
}
var d = function (i) {
var k = f(i.getNorthEast().lng, -180, 180)
var h = f(i.getSouthWest().lng, -180, 180)
var j = f(i.getNorthEast().lat, -74, 74)
var l = f(i.getSouthWest().lat, -74, 74)
return new BMap.Bounds(new BMap.Point(h, l), new BMap.Point(k, j))
}
var f = function (j, k, h) {
k && (j = Math.max(j, k))
h && (j = Math.min(j, h))
return j
}
var a = function (h) {
return '[object Array]' === Object.prototype.toString.call(h)
}
var c = function (l, n) {
var j = -1
if (a(n)) {
if (n.indexOf) {
j = n.indexOf(l)
} else {
for (var k = 0, h; (h = n[k]); k++) {
if (h === l) {
j = k
break
}
}
}
}
return j
}
var e = (BMapLib.MarkerClusterer = function (l, h) {
if (!l) {
return
}
this._map = l
this._markers = []
this._clusters = []
var k = h || {}
this._gridSize = k.gridSize || 60
this._maxZoom = k.maxZoom || 18
this._minClusterSize = k.minClusterSize || 2
this._isAverageCenter = false
if (k.isAverageCenter != undefined) {
this._isAverageCenter = k.isAverageCenter
}
this._styles = k.styles || []
var j = this
this._map.addEventListener('zoomend', function () {
j._redraw()
})
this._map.addEventListener('moveend', function () {
j._redraw()
})
var i = k.markers
a(i) && this.addMarkers(i)
})
e.prototype.addMarkers = function (k) {
for (var j = 0, h = k.length; j < h; j++) {
this._pushMarkerTo(k[j])
}
this._createClusters()
}
e.prototype._pushMarkerTo = function (h) {
var i = c(h, this._markers)
if (i === -1) {
h.isInCluster = false
this._markers.push(h)
}
}
e.prototype.addMarker = function (h) {
this._pushMarkerTo(h)
this._createClusters()
}
e.prototype._createClusters = function () {
var j = this._map.getBounds()
var l = b(this._map, j, this._gridSize)
for (var k = 0, h; (h = this._markers[k]); k++) {
if (!h.isInCluster && l.containsPoint(h.getPosition())) {
this._addToClosestCluster(h)
}
}
}
e.prototype._addToClosestCluster = function (l) {
var p = 4000000
var n = null
// var k = l.getPosition()
for (var m = 0, j; (j = this._clusters[m]); m++) {
var h = j.getCenter()
if (h) {
var o = this._map.getDistance(h, l.getPosition())
if (o < p) {
p = o
n = j
}
}
}
if (n && n.isMarkerInClusterBounds(l)) {
n.addMarker(l)
} else {
// eslint-disable-next-line
var j = new g(this)
j.addMarker(l)
this._clusters.push(j)
}
}
e.prototype._clearLastClusters = function () {
for (var j = 0, h; (h = this._clusters[j]); j++) {
h.remove()
}
this._clusters = []
this._removeMarkersFromCluster()
}
e.prototype._removeMarkersFromCluster = function () {
for (var j = 0, h; (h = this._markers[j]); j++) {
h.isInCluster = false
}
}
e.prototype._removeMarkersFromMap = function () {
for (var j = 0, h; (h = this._markers[j]); j++) {
h.isInCluster = false
this._map.removeOverlay(h)
}
}
e.prototype._removeMarker = function (h) {
var i = c(h, this._markers)
if (i === -1) {
return false
}
this._map.removeOverlay(h)
this._markers.splice(i, 1)
return true
}
e.prototype.removeMarker = function (h) {
var i = this._removeMarker(h)
if (i) {
this._clearLastClusters()
this._createClusters()
}
return i
}
e.prototype.removeMarkers = function (l) {
var k = false
for (var h = 0; h < l.length; h++) {
var j = this._removeMarker(l[h])
k = k || j
}
if (k) {
this._clearLastClusters()
this._createClusters()
}
return k
}
e.prototype.clearMarkers = function () {
this._clearLastClusters()
this._removeMarkersFromMap()
this._markers = []
}
e.prototype._redraw = function () {
this._clearLastClusters()
this._createClusters()
}
e.prototype.getGridSize = function () {
return this._gridSize
}
e.prototype.setGridSize = function (h) {
this._gridSize = h
this._redraw()
}
e.prototype.getMaxZoom = function () {
return this._maxZoom
}
e.prototype.setMaxZoom = function (h) {
this._maxZoom = h
this._redraw()
}
e.prototype.getStyles = function () {
return this._styles
}
e.prototype.setStyles = function (h) {
this._styles = h
this._redraw()
}
e.prototype.getMinClusterSize = function () {
return this._minClusterSize
}
e.prototype.setMinClusterSize = function (h) {
this._minClusterSize = h
this._redraw()
}
e.prototype.isAverageCenter = function () {
return this._isAverageCenter
}
e.prototype.getMap = function () {
return this._map
}
e.prototype.getMarkers = function () {
return this._markers
}
e.prototype.getClustersCount = function () {
var k = 0
for (var j = 0, h; (h = this._clusters[j]); j++) {
h.isReal() && k++
}
return k
}
function g(h) {
this._markerClusterer = h
this._map = h.getMap()
this._minClusterSize = h.getMinClusterSize()
this._isAverageCenter = h.isAverageCenter()
this._center = null
this._markers = []
this._gridBounds = null
this._isReal = false
this._clusterMarker = new BMapLib.TextIconOverlay(
this._center,
this._markers.length,
{
styles: this._markerClusterer.getStyles(),
}
)
}
g.prototype.addMarker = function (k) {
if (this.isMarkerInCluster(k)) {
return false
}
if (!this._center) {
this._center = k.getPosition()
this.updateGridBounds()
} else {
if (this._isAverageCenter) {
var j = this._markers.length + 1
var o = (this._center.lat * (j - 1) + k.getPosition().lat) / j
var m = (this._center.lng * (j - 1) + k.getPosition().lng) / j
this._center = new BMap.Point(m, o)
this.updateGridBounds()
}
}
k.isInCluster = true
this._markers.push(k)
var h = this._markers.length
if (h < this._minClusterSize) {
this._map.addOverlay(k)
return true
} else {
if (h === this._minClusterSize) {
for (var n = 0; n < h; n++) {
this._markers[n].getMap() && this._map.removeOverlay(this._markers[n])
}
}
}
this._map.addOverlay(this._clusterMarker)
this._isReal = true
this.updateClusterMarker()
return true
}
g.prototype.isMarkerInCluster = function (j) {
if (this._markers.indexOf) {
return this._markers.indexOf(j) != -1
} else {
for (var k = 0, h; (h = this._markers[k]); k++) {
if (h === j) {
return true
}
}
}
return false
}
g.prototype.isMarkerInClusterBounds = function (h) {
return this._gridBounds.containsPoint(h.getPosition())
}
g.prototype.isReal = function () {
return this._isReal
}
g.prototype.updateGridBounds = function () {
var h = new BMap.Bounds(this._center, this._center)
this._gridBounds = b(this._map, h, this._markerClusterer.getGridSize())
}
g.prototype.updateClusterMarker = function () {
if (this._map.getZoom() > this._markerClusterer.getMaxZoom()) {
this._clusterMarker && this._map.removeOverlay(this._clusterMarker)
for (var l = 0, j; (j = this._markers[l]); l++) {
this._map.addOverlay(j)
}
return
}
if (this._markers.length < this._minClusterSize) {
this._clusterMarker.hide()
return
}
this._clusterMarker.setPosition(this._center)
this._clusterMarker.setText(this._markers.length)
var k = this._map
var h = this.getBounds()
this._clusterMarker.addEventListener('click', function () {
k.setViewport(h)
})
}
g.prototype.remove = function () {
// eslint-disable-next-line
for (var j = 0, h; (h = this._markers[j]); j++) {
this._markers[j].getMap() && this._map.removeOverlay(this._markers[j])
}
this._map.removeOverlay(this._clusterMarker)
this._markers.length = 0
delete this._markers
}
g.prototype.getBounds = function () {
var k = new BMap.Bounds(this._center, this._center)
for (var j = 0, h; (h = this._markers[j]); j++) {
k.extend(h.getPosition())
}
return k
}
g.prototype.getCenter = function () {
return this._center
}
})()

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 628 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save