2025年12月04日 1.0.9 不直接连接数据库,通过韩磊接口进行数据加密解密,并添加免费类型和审核状态查询条件

main
gaoshuguang 1 month ago
parent 9fc2c90c6d
commit 52d583e68d

@ -58,18 +58,6 @@
<element id="library" level="project" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.2.13.RELEASE" />
<element id="library" level="project" name="Maven: com.zaxxer:HikariCP:3.4.5" />
<element id="library" level="project" name="Maven: org.springframework:spring-jdbc:5.2.12.RELEASE" />
<element id="library" level="project" name="Maven: com.oracle.database.jdbc:ojdbc8:19.3.0.0" />
<element id="library" level="project" name="Maven: com.oracle.database.jdbc:ucp:19.3.0.0" />
<element id="library" level="project" name="Maven: com.oracle.database.security:oraclepki:19.3.0.0" />
<element id="library" level="project" name="Maven: com.oracle.database.security:osdt_cert:19.3.0.0" />
<element id="library" level="project" name="Maven: com.oracle.database.security:osdt_core:19.3.0.0" />
<element id="library" level="project" name="Maven: com.oracle.database.ha:simplefan:19.3.0.0" />
<element id="library" level="project" name="Maven: com.oracle.database.ha:ons:19.3.0.0" />
<element id="library" level="project" name="Maven: com.alibaba:druid:1.1.20" />
<element id="library" level="project" name="Maven: mysql:mysql-connector-java:8.0.22" />
<element id="library" level="project" name="Maven: com.microsoft:sqljdbc4:3.0" />
<element id="library" level="project" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.10" />
<element id="library" level="project" name="Maven: org.slf4j:slf4j-api:1.7.30" />
<element id="library" level="project" name="Maven: jakarta.xml.bind:jakarta.xml.bind-api:2.3.3" />
<element id="library" level="project" name="Maven: jakarta.activation:jakarta.activation-api:1.2.2" />
<element id="library" level="project" name="Maven: org.springframework:spring-core:5.2.12.RELEASE" />
@ -132,7 +120,6 @@
<element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.3" />
<element id="library" level="project" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3" />
<element id="library" level="project" name="Maven: com.oracle.database.nls:orai18n:21.5.0.0" />
<element id="library" level="project" name="Maven: com.github.yulichang:mybatis-plus-join:1.2.4" />
<element id="library" level="project" name="Maven: com.alibaba:easyexcel:2.1.6" />
<element id="library" level="project" name="Maven: org.apache.poi:poi:3.17" />
<element id="library" level="project" name="Maven: org.apache.commons:commons-collections4:4.1" />
@ -143,7 +130,9 @@
<element id="library" level="project" name="Maven: com.github.virtuald:curvesapi:1.04" />
<element id="library" level="project" name="Maven: cglib:cglib:3.1" />
<element id="library" level="project" name="Maven: org.ow2.asm:asm:4.2" />
<element id="library" level="project" name="Maven: org.slf4j:slf4j-api:1.7.30" />
<element id="library" level="project" name="Maven: org.ehcache:ehcache:3.8.1" />
<element id="library" level="project" name="Maven: org.bouncycastle:bcprov-jdk18on:1.78.1" />
</element>
</element>
<element id="directory" name="META-INF">

@ -4,7 +4,7 @@
<inspection_tool class="AlibabaVarargsParameter" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<Languages>
<language minSize="94" name="Java" />
<language minSize="203" name="Java" />
</Languages>
</inspection_tool>
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.alibaba:druid:1.1.20">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/alibaba/druid/1.1.20/druid-1.1.20.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/alibaba/druid/1.1.20/druid-1.1.20-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/alibaba/druid/1.1.20/druid-1.1.20-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.alibaba:druid-spring-boot-starter:1.1.10">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/alibaba/druid-spring-boot-starter/1.1.10/druid-spring-boot-starter-1.1.10.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/alibaba/druid-spring-boot-starter/1.1.10/druid-spring-boot-starter-1.1.10-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/alibaba/druid-spring-boot-starter/1.1.10/druid-spring-boot-starter-1.1.10-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.github.yulichang:mybatis-plus-join:1.2.4">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/github/yulichang/mybatis-plus-join/1.2.4/mybatis-plus-join-1.2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/github/yulichang/mybatis-plus-join/1.2.4/mybatis-plus-join-1.2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/github/yulichang/mybatis-plus-join/1.2.4/mybatis-plus-join-1.2.4-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.microsoft:sqljdbc4:3.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/microsoft/sqljdbc4/3.0/sqljdbc4-3.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/microsoft/sqljdbc4/3.0/sqljdbc4-3.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/microsoft/sqljdbc4/3.0/sqljdbc4-3.0-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.oracle.database.ha:ons:19.3.0.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/ha/ons/19.3.0.0/ons-19.3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/ha/ons/19.3.0.0/ons-19.3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/ha/ons/19.3.0.0/ons-19.3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.oracle.database.jdbc:ojdbc8:19.3.0.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/jdbc/ojdbc8/19.3.0.0/ojdbc8-19.3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/jdbc/ojdbc8/19.3.0.0/ojdbc8-19.3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/jdbc/ojdbc8/19.3.0.0/ojdbc8-19.3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.oracle.database.jdbc:ucp:19.3.0.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/jdbc/ucp/19.3.0.0/ucp-19.3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/jdbc/ucp/19.3.0.0/ucp-19.3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/jdbc/ucp/19.3.0.0/ucp-19.3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.oracle.database.security:oraclepki:19.3.0.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/oraclepki/19.3.0.0/oraclepki-19.3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/oraclepki/19.3.0.0/oraclepki-19.3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/oraclepki/19.3.0.0/oraclepki-19.3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.oracle.database.security:osdt_cert:19.3.0.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/osdt_cert/19.3.0.0/osdt_cert-19.3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/osdt_cert/19.3.0.0/osdt_cert-19.3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/osdt_cert/19.3.0.0/osdt_cert-19.3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.oracle.database.security:osdt_core:19.3.0.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/osdt_core/19.3.0.0/osdt_core-19.3.0.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/osdt_core/19.3.0.0/osdt_core-19.3.0.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/security/osdt_core/19.3.0.0/osdt_core-19.3.0.0-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: mysql:mysql-connector-java:8.0.22">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/mysql/mysql-connector-java/8.0.22/mysql-connector-java-8.0.22.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/mysql/mysql-connector-java/8.0.22/mysql-connector-java-8.0.22-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/mysql/mysql-connector-java/8.0.22/mysql-connector-java-8.0.22-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.oracle.database.ha:simplefan:19.3.0.0">
<library name="Maven: org.bouncycastle:bcprov-jdk18on:1.78.1">
<CLASSES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/ha/simplefan/19.3.0.0/simplefan-19.3.0.0.jar!/" />
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/org/bouncycastle/bcprov-jdk18on/1.78.1/bcprov-jdk18on-1.78.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/ha/simplefan/19.3.0.0/simplefan-19.3.0.0-javadoc.jar!/" />
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/org/bouncycastle/bcprov-jdk18on/1.78.1/bcprov-jdk18on-1.78.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/com/oracle/database/ha/simplefan/19.3.0.0/simplefan-19.3.0.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/../../../../Maven/repository/org/bouncycastle/bcprov-jdk18on/1.78.1/bcprov-jdk18on-1.78.1-sources.jar!/" />
</SOURCES>
</library>
</component>

@ -68,18 +68,6 @@
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.2.13.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.4.5" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.2.12.RELEASE" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.jdbc:ojdbc8:19.3.0.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.jdbc:ucp:19.3.0.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.security:oraclepki:19.3.0.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.security:osdt_cert:19.3.0.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.security:osdt_core:19.3.0.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.ha:simplefan:19.3.0.0" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.oracle.database.ha:ons:19.3.0.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:1.1.20" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: mysql:mysql-connector-java:8.0.22" level="project" />
<orderEntry type="library" name="Maven: com.microsoft:sqljdbc4:3.0" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid-spring-boot-starter:1.1.10" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.projectlombok:lombok:1.18.16" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:2.2.13.RELEASE" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:2.2.13.RELEASE" level="project" />
@ -168,7 +156,6 @@
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.11.3" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.11.3" level="project" />
<orderEntry type="library" name="Maven: com.oracle.database.nls:orai18n:21.5.0.0" level="project" />
<orderEntry type="library" name="Maven: com.github.yulichang:mybatis-plus-join:1.2.4" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:easyexcel:2.1.6" level="project" />
<orderEntry type="library" name="Maven: org.apache.poi:poi:3.17" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.1" level="project" />
@ -179,7 +166,9 @@
<orderEntry type="library" name="Maven: com.github.virtuald:curvesapi:1.04" level="project" />
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.30" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.8.1" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk18on:1.78.1" level="project" />
</component>
<component name="SonarLintModuleSettings">
<option name="uniqueId" value="3ddcfa6e-fbb1-4aa7-8d7a-b0f6d6f5270f" />

@ -52,31 +52,7 @@
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>sqljdbc4</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>log4j</groupId>-->
<!-- <artifactId>log4j</artifactId>-->
@ -209,17 +185,17 @@
<artifactId>orai18n</artifactId>
<version>21.5.0.0</version>
</dependency>
<!-- mybatisplus多表查询 -->
<dependency>
<groupId>com.github.yulichang</groupId>
<artifactId>mybatis-plus-join</artifactId>
<version>1.2.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
<!-- SM4加密依赖包 -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk18on</artifactId>
<version>1.78.1</version>
</dependency>
</dependencies>
<dependencyManagement>

@ -1,12 +1,19 @@
package com.nmgs;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableAsync;
@EnableAsync
@SpringBootApplication
@SpringBootApplication(exclude = {
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
MybatisPlusAutoConfiguration.class
})
public class FreeCarRegistrationApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

@ -43,33 +43,11 @@ public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
fileNewproperties.createNewFile();
}
properties.load(new FileInputStream(path));
String DBType = properties.getProperty("WXDBType") == null ? "1" : properties.getProperty("WXDBType");
Newproperties.load(new FileInputStream(NewPath));
properties.setProperty("spring.logback.logPath",PathUtil.TomcatPath+"/logs");
properties.setProperty("spring.datasource.url",properties.getProperty("WXDBUrl"));
properties.setProperty("spring.datasource.username",properties.getProperty("WXDBUserName"));
properties.setProperty("spring.datasource.password",PassWordUtils.decrypt(properties.getProperty("WXDBPassWord")));
if(DBType.equals("1")){
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.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.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.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("---------------------------FreeCarRegistration本次载入数据库----------------------");
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"));
properties.setProperty("authKey", Newproperties.getProperty("authKey"));
properties.setProperty("interfacePrefix", Newproperties.getProperty("interfacePrefix"));
String appName=Newproperties.getProperty("spring.logback.appName");
String versionPath =PathUtil.versionPath;
File resourceDir = new File(versionPath);
@ -88,13 +66,6 @@ public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
}
}
public static void main(String[] args) throws UnknownHostException {
String s = "2zhLmcL";
String decrypt = PassWordUtils.encrypt(s);
System.out.println(decrypt);
String decrypt2 = PassWordUtils.decrypt("L29aeGJ0OS9TUVB4gVtqbHNOU2pRX0pz");
System.out.println(decrypt2);
}
private static String getVersionFileName(File dir) {
String version="";
List<String> fileNames = new ArrayList<>();

@ -9,13 +9,6 @@ public class Constant {
/**
* 1-sqlserver 2-oracle3-4-mysql
*/
public static final String STR_ONE = "1";
public static final String STR_TWO = "2";
public static final String STR_THREE = "3";
public static final String STR_FOUR = "4";
public static final String STR_ZERO = "0";
public static final String STR_TEN = "10";
public static final String STR_ADMIN = "admin";
public static final int INT_TWO = 2;
public static final int INT_FIVE = 5;
public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
@ -24,116 +17,32 @@ public class Constant {
public static final String YYMMDD = "yyMMdd";
public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String STR_ = "_";
public static final String STR_T = "T";
public static final String STR_SPACE = " ";
public static final String STR_SQUARE_LEFT = "[";
public static final String STR_SQUARE_RIGHT = "]";
public static final String STR_BRANCH = ";";
public static final String FTP_PREFIX = "ftp://";
public static final String STR_COLON = ":";
public static final String STR_SPOT = ".";
public static final String STR_SLASH = "/";
public static final String NULL_STRING = "";
public static final String STR_000000 = "000000";
public static final String FIELD_SEPARATE = ",";
public static final String DATA_SEPARATE = "|";
public static final String SINGLE_LEAD = "'";
public static final String STR_NULL = "null";
public static final String UTF_8 = "UTF-8";
public static final String GBK = "GBK";
public static final String HTTP = "http://";
/**
*
*/
public static final String IMAGE_INTERFACE_NAME = "/WebService/MyWebService/GetWebServiceData?wsdl";
//public static final String INFO_INTERFACE_NAME = "/SystemManager/SYSManager/UpLoadSystem?wsdl";
public static final String INFO_INTERFACE_NAME = "/NMCMSWebService/NMCMSWebService?wsdl";
//public static final String INFO_WEB_NAME = "SystemManager";
public static final String INFO_WEB_NAME = "NMCMSWebService";
public static final String IMAGE_WEB_NAME = "WebService";
public static final String STR_6A = "AAAAAA";
public static final String STR_6B = "BBBBBB";
public static final String STR_6C = "CCCCCC";
public static final String STR_6D = "DDDDDD";
public static final String CODE_500 = "500";
/**
*
*
*/
public static final String IN_PORT_SQL = "SELECT n.LISTNO,n.ACARNO,name.ROADNAME,name.STANAME,n.PORTNO,p.TEXT PORTTYPE,n.DT,n.MANNO,n.MAN,n.CARDNO,k.TEXT KINDCN,t.TEXT TYPECN,n.FLAG FROM IN_PORT n \n" +
"LEFT JOIN PORTTYPE_TEXT p ON n.PORTTYPE= p.VALUE\n" +
"LEFT JOIN NAME_TABLE name ON n.ROADNO= name.ROADNO AND n.STANO=name.STANO\n" +
"LEFT JOIN KIND_TEXT k ON n.KIND= k.VALUE \n" +
"LEFT JOIN TYPE_TEXT t ON n.TYPE= t.VALUE \n" +
"WHERE ACARNO='AAAAAA'";
public static final String IN_PORT_SQL_VAGUE = "SELECT n.LISTNO,n.ACARNO,name.ROADNAME,name.STANAME,n.PORTNO,p.TEXT PORTTYPE,n.DT,n.MANNO,n.MAN,n.CARDNO,k.TEXT KINDCN,t.TEXT TYPECN,n.FLAG FROM IN_PORT n \n" +
"LEFT JOIN PORTTYPE_TEXT p ON n.PORTTYPE= p.VALUE\n" +
"LEFT JOIN NAME_TABLE name ON n.ROADNO= name.ROADNO AND n.STANO=name.STANO\n" +
"LEFT JOIN KIND_TEXT k ON n.KIND= k.VALUE \n" +
"LEFT JOIN TYPE_TEXT t ON n.TYPE= t.VALUE \n" +
"WHERE ACARNO like '%AAAAAA%'";
/**
*
*/
public static final String OUT_PORT_SQL = "SELECT inport.LISTNO ILISTNO,n.IACARNO,n.IDT,name.ROADNAME IROADNAME,name.STANAME ISTANAME,n.IPORTNO,p.TEXT IPORTTYPE,k.TEXT IKINDCN,t.TEXT ITYPECN,n.LISTNO,name2.ROADNAME ROADNAME,name2.STANAME STANAME,n.DT,n.MANNO,n.MAN,n.CARDNO,k2.TEXT KINDCN,t2.TEXT TYPECN,n.PORTNO,p2.TEXT PORTTYPE,n.ACARNO FROM OUT_PORT n \n" +
"LEFT JOIN PORTTYPE_TEXT p ON n.IPORTTYPE= p.VALUE\n" +
"LEFT JOIN PORTTYPE_TEXT p2 ON n.PORTTYPE= p2.VALUE\n" +
"LEFT JOIN NAME_TABLE name ON n.IROADNO= name.ROADNO AND n.ISTANO=name.STANO\n" +
"LEFT JOIN NAME_TABLE name2 ON n.ROADNO= name2.ROADNO AND n.STANO=name2.STANO\n" +
"LEFT JOIN KIND_TEXT k ON n.IKIND= k.VALUE \n" +
"LEFT JOIN KIND_TEXT k2 ON n.KIND= k2.VALUE \n" +
"LEFT JOIN TYPE_TEXT t ON n.ITYPE= t.VALUE \n" +
"LEFT JOIN TYPE_TEXT t2 ON n.TYPE= t2.VALUE \n" +
"LEFT JOIN IN_PORT inport ON n.PASSID= inport.PASSID\n" +
"WHERE n.ACARNO='AAAAAA'";
public static final String OUT_PORT_SQL_VAGUE = "SELECT inport.LISTNO ILISTNO,n.IACARNO,n.IDT,name.ROADNAME IROADNAME,name.STANAME ISTANAME,n.IPORTNO,p.TEXT IPORTTYPE,k.TEXT IKINDCN,t.TEXT ITYPECN,n.LISTNO,name2.ROADNAME ROADNAME,name2.STANAME STANAME,n.DT,n.MANNO,n.MAN,n.CARDNO,k2.TEXT KINDCN,t2.TEXT TYPECN,n.PORTNO,p2.TEXT PORTTYPE,n.ACARNO FROM OUT_PORT n \n" +
"LEFT JOIN PORTTYPE_TEXT p ON n.IPORTTYPE= p.VALUE\n" +
"LEFT JOIN PORTTYPE_TEXT p2 ON n.PORTTYPE= p2.VALUE\n" +
"LEFT JOIN NAME_TABLE name ON n.IROADNO= name.ROADNO AND n.ISTANO=name.STANO\n" +
"LEFT JOIN NAME_TABLE name2 ON n.ROADNO= name2.ROADNO AND n.STANO=name2.STANO\n" +
"LEFT JOIN KIND_TEXT k ON n.IKIND= k.VALUE \n" +
"LEFT JOIN KIND_TEXT k2 ON n.KIND= k2.VALUE \n" +
"LEFT JOIN TYPE_TEXT t ON n.ITYPE= t.VALUE \n" +
"LEFT JOIN TYPE_TEXT t2 ON n.TYPE= t2.VALUE \n" +
"LEFT JOIN IN_PORT inport ON n.PASSID= inport.PASSID\n" +
"WHERE n.ACARNO like '%AAAAAA%'";
/**
*
*/
public static final String GANTRY_PASS_SQL_VAGUE = "SELECT N.ROADNAME,N.STANAME,G.TRADEID,G.GANTRYID,G.TRANSTIME,G.PAYFEE,G.FEE,G.DISCOUNTFEE,G.TRANSFEE,(SUBSTRING(G.VEHICLEPLATE,1,CHARINDEX('_',G.VEHICLEPLATE)) +C.TEXT) VEHICLEPLATE,\n" +
"T.TEXT TYPECN,G.STATIONMATCHTIME,B.NAME INNAME\n" +
"FROM GANTRY_PASS G\n" +
"LEFT JOIN NAME_TABLE N ON G.ROADNO=N.ROADNO AND G.STANO=N.STANO\n" +
"LEFT JOIN PLATECOLOR_TEXT C ON (SUBSTRING(G.VEHICLEPLATE,CHARINDEX('_',G.VEHICLEPLATE)+1,len(G.VEHICLEPLATE)-charindex('_',G.VEHICLEPLATE)))=C.VALUE\n" +
"LEFT JOIN TYPE_TEXT T ON G.GANTRYTYPE= T.VALUE\n" +
"LEFT JOIN BASICINFO_TABLE B ON G.ENTOLLSTATIONHEX= B.HEX\n" +
"WHERE VEHICLEPLATE LIKE '%AAAAAA%'";
public static final String ORACLE_GANTRY_SQL_VAGUE = "SELECT N.ROADNAME,N.STANAME,G.TRADEID,G.GANTRYID,G.TRANSTIME,G.PAYFEE,G.FEE,G.DISCOUNTFEE,G.TRANSFEE,\n" +
"(SUBSTR(G.VEHICLEPLATE, 1, INSTR(G.VEHICLEPLATE, '_',1,1)) || C.TEXT) VEHICLEPLATE,\n" +
"T.TEXT TYPECN,G.ENTIME,B.NAME INNAME\n" +
"FROM GANTRY_PASS G\n" +
"LEFT JOIN NAME_TABLE N ON G.ROADNO=N.ROADNO AND G.STANO=N.STANO\n" +
"LEFT JOIN PLATECOLOR_TEXT C ON (SUBSTR(G.VEHICLEPLATE, INSTR(G.VEHICLEPLATE, '_',1,1)+1))=C.VALUE\n" +
"LEFT JOIN TYPE_TEXT T ON G.GANTRYTYPE= T.VALUE\n" +
"LEFT JOIN BASICINFO_TABLE B ON G.ENTOLLSTATIONHEX= B.HEX\n" +
" WHERE VEHICLEPLATE LIKE '%AAAAAA%'";
public static final String ORACLE_DT_TIME_INTERVAL = " AND DT BETWEEN TO_DATE('CCCCCC', 'YYYY-MM-DD') AND TO_DATE('DDDDDD', 'YYYY-MM-DD')";
public static final String OUT_ORACLE_DT_TIME_INTERVAL = " AND n.DT BETWEEN TO_DATE('CCCCCC', 'YYYY-MM-DD') AND TO_DATE('DDDDDD', 'YYYY-MM-DD')";
public static final String OTHER_DT_TIME_INTERVAL = " AND DT BETWEEN 'CCCCCC' AND 'DDDDDD'";
public static final String OUT_OTHER_DT_TIME_INTERVAL = " AND n.DT BETWEEN 'CCCCCC' AND 'DDDDDD'";
public static final String ORACLE_TRANS_TIME_INTERVAL = " AND TRANSTIME BETWEEN TO_DATE('CCCCCC', 'YYYY-MM-DD') AND TO_DATE('DDDDDD', 'YYYY-MM-DD')";
public static final String OTHER_TRANS_TIME_INTERVAL = " AND TRANSTIME BETWEEN 'CCCCCC' AND 'DDDDDD'";
public static final String UNBIND_GET_PAGE = "/UnBind/getPage";
public static final String UNBIND_DELETE_DATA = "/UnBind/deleteData";
public static final String UNBIND_GET_WX_CAR_COLOR_LIST = "/UnBind/getWXCarColorList";
public static final String UNBIND_CROSS_DATA = "/UnBind/crossData";
public static final String WX_VEHICLE_BIND_GET_PAGE = "/WxVehicleBind/getPage";
public static final String WX_VEHICLE_BIND_GET_CAR_COLOR_LIST= "/WxVehicleBind/getCarColorList";
public static final String WX_VEHICLE_BIND_GET_FREE_TYPE_LIST= "/WxVehicleBind/getFreeTypeList";
public static final String WX_VEHICLE_BIND_GET_CAR_TYPE_LIST= "/WxVehicleBind/getCarTypeList";
public static final String WX_VEHICLE_BIND_COMMIT_VEHICLE_BIND = "/WxVehicleBind/commitVehicleBind";
public static final String WX_VEHICLE_BIND_DELETE_VEHICLE_BIND = "/WxVehicleBind/deleteVehicleBind";
public static final String WX_VEHICLE_BIND_IS_SHOW_ADVANCE_FEE = "/WxVehicleBind/isShowAdvanceFee";
public static final String WX_VEHICLE_BIND_QUERY_IMAGE_LIST = "/WxVehicleBind/queryImageList";
public static final String WX_VEHICLE_BIND_NOT_PASSED = "/WxVehicleBind/notPassed";
public static final String WX_VEHICLE_BIND_COMPLETE_SETUP = "/WxVehicleBind/completeSetup";
public static final String WX_VEHICLE_BIND_QUERY_WX_NAME = "/WxVehicleBind/queryWxName";
public static final String WX_VEHICLE_BIND_UPDATE_APPROVED = "/WxVehicleBind/updateApproved";
public static final String WX_VEHICLE_BIND_COMMIT_PRE_TIMES = "/WxVehicleBind/commitPreTimes";
public static final String WX_VEHICLE_BIND_QUERY_DEPOSIT_DETAILS = "/WxVehicleBind/queryDepositDetails";
public static final String WX_VEHICLE_BIND_COMPLETE_DETAILS_INFO = "/WxVehicleBind/completeDetailsInfo";
public static final String WX_VEHICLE_BIND_DELETE_DETAILS_INFO = "/WxVehicleBind/deleteDetailsInfo";
public static final String WX_VEHICLE_BIND_EXPORT_FREE_EXCEL = "/WxVehicleBind/exportFreeExcel";
public static final String WX_VEHICLE_BIND_IMPORT_VEHICLE_BIND = "/WxVehicleBind/importVehicleBind";
}

@ -1,41 +0,0 @@
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("WXDBType").equals("1")){
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.SQL_SERVER2005));
}else if(PropertiesUtil.getValue("WXDBType").equals("2")){
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.ORACLE));
}else if(PropertiesUtil.getValue("WXDBType").equals("3")){
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.DM));
}else if(PropertiesUtil.getValue("WXDBType").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;
// }
}

@ -1,34 +0,0 @@
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;
// }
}

@ -1,34 +0,0 @@
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("WhiteListManagerSysThreadPool") //线程池实例名,多个线程池配置需要声明,一个线程池可有可无
public Executor executorNormal() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(3);
executor.setMaxPoolSize(5);
executor.setQueueCapacity(3);
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;
}
}

@ -1,20 +1,24 @@
package com.nmgs.controller;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nmgs.config.Constant;
import com.nmgs.entity.ResData;
import com.nmgs.entity.WxVehicleBindExcel;
import com.nmgs.mapper.WxVehicleBindMapper;
import com.nmgs.util.ExcelUtil;
import com.nmgs.util.HttpClientUtils;
import com.nmgs.util.SM4Utils;
import com.nmgs.util.UuidUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -28,30 +32,54 @@ import java.util.Map;
@RequestMapping("/WxVehicleBind")
@Slf4j
public class ExportController {
@Resource
private WxVehicleBindMapper wxVehicleBindMapper;
@Value("${authKey}")
private String authKey;
@Value("${interfacePrefix}")
private String interfacePrefix;
@RequestMapping(value = "/exportFreeExcel", method = RequestMethod.POST)
public void exportFreeExcel(HttpServletResponse response, @RequestBody Map<String, Object> map) {
public void exportFreeExcel(HttpServletResponse response, @RequestBody Map<String, Object> map, HttpServletRequest request) {
String fileName = "包缴车数据";
String uuid = UuidUtil.getUuid();
log.info("[uuid:{}]-开始根据参数{}查询包缴车数据并导出到Excel", uuid, map);
List<WxVehicleBindExcel> list = new ArrayList<>();
try {
String whereSql = " where 1=1 ";
if (!ObjectUtils.isEmpty(map.get("vehicleid"))) {
whereSql = whereSql + " and t.vehicleid like '%" + StringUtils.trimAllWhitespace(map.get("vehicleid").toString().toUpperCase())+"%'";
}
// 1. 取 token
String token = request.getHeader("token");
// 2. 构造请求加密报文
ObjectMapper mapper = new ObjectMapper();
String requestJson = mapper.writeValueAsString(map);
String url = interfacePrefix + Constant.WX_VEHICLE_BIND_EXPORT_FREE_EXCEL;
String key = SM4Utils.generateKey();
String sm4Encrypt = SM4Utils.sm4Encrypt(key, authKey);
String encryptRequestJson = SM4Utils.sm4Encrypt(requestJson, key);
ResData resData = new ResData();
resData.setKey(sm4Encrypt);
resData.setData(encryptRequestJson);
String enRequestJson = JSON.toJSONString(resData);
if (!ObjectUtils.isEmpty(map.get("vehiclecolor"))) {
whereSql = whereSql + " and t.vehiclecolor =" + map.get("vehiclecolor") ;
// 3. 调接口
String returnJson = HttpClientUtils.callInterface(enRequestJson, url, token);
if (org.apache.commons.lang3.StringUtils.isBlank(returnJson)) {
list = new ArrayList<>();
}
// 4. 解密
ResData returnResData = JSON.parseObject(returnJson, ResData.class);
if (Constant.CODE_500.equals(returnResData.getKey())) {
list = new ArrayList<>();
}
list = wxVehicleBindMapper.queryList(whereSql);
String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(),
SM4Utils.sm4Decrypt(returnResData.getKey(), authKey));
list = JSONObject.parseArray(deDataJson, WxVehicleBindExcel.class);
ExcelUtil.process(fileName, list, WxVehicleBindExcel.class, response);
} catch (IOException e) {
} catch (Exception e) {
log.error("[uuid:{}]-根据条件导出查询包缴车失败,报错{}", uuid, e.getMessage());
}
log.info("[uuid:{}]-根据条件{},导出查询包缴车数据完成,导出条数为{}", uuid, map,list.size());
log.info("[uuid:{}]-根据条件{},导出查询包缴车数据完成,导出条数为{}", uuid, map, list.size());
}
}

@ -1,21 +1,12 @@
package com.nmgs.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.alibaba.fastjson2.JSON;
import com.nmgs.config.Constant;
import com.nmgs.entity.ATtypeText;
import com.nmgs.entity.FreeTypeText;
import com.nmgs.entity.TypeText;
import com.nmgs.entity.WxPreTimesInfo;
import com.nmgs.entity.WxVehicleBind;
import com.nmgs.entity.ResData;
import com.nmgs.entity.WxVehicleBindTemplate;
import com.nmgs.mapper.ATtypeTextMapper;
import com.nmgs.mapper.FreeTypeTextMapper;
import com.nmgs.mapper.TypeTextMapper;
import com.nmgs.mapper.WxPreTimesInfoMapper;
import com.nmgs.mapper.WxVehicleBindMapper;
import com.nmgs.util.DateTimeUtil;
import com.nmgs.util.HttpClientUtils;
import com.nmgs.util.PathUtil;
import com.nmgs.util.SM4Utils;
import com.nmgs.util.UuidUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -25,6 +16,7 @@ import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@ -32,7 +24,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
@ -45,9 +37,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author shuguang
@ -56,19 +46,12 @@ import java.util.Map;
@RequestMapping("/WxVehicleBind")
@Slf4j
public class ImportController {
@Resource
private WxVehicleBindMapper wxVehicleBindMapper;
@Resource
private WxPreTimesInfoMapper wxPreTimesInfoMapper;
@Resource
private ATtypeTextMapper attypeTextMapper;
@Resource
private TypeTextMapper typeTextMapper;
@Resource
private FreeTypeTextMapper freeTypeTextMapper;
@Value("${authKey}")
private String authKey;
@Value("${interfacePrefix}")
private String interfacePrefix;
@RequestMapping(value = "/exportTemplate", method = RequestMethod.POST)
public void exportTemplate(HttpServletResponse response) {
@ -99,10 +82,9 @@ public class ImportController {
}
@PostMapping("/importVehicleBind")
public String uploadFile(@RequestParam("file") MultipartFile file,@RequestParam("manno") String manno,@RequestParam("man") String man) {
public String uploadFile(@RequestParam("file") MultipartFile file,@RequestParam("manno") String manno,@RequestParam("man") String man, HttpServletRequest request) {
String uuid = UuidUtil.getUuid();
System.out.println(manno);
System.out.println(man);
String a = "导入失败";
try {
// 创建临时文件
Path tempFilePath = Files.createTempFile("tempExcel", ".xlsx");
@ -119,16 +101,50 @@ public class ImportController {
// 读取 Excel 文件并转换为 WxVehicleBindTemplate 对象列表
List<WxVehicleBindTemplate> templates = readExcel(uuid, tempFile,manno,man);
// 查询字典表并转换为 WxVehicleBind 对象
List<WxVehicleBind> binds = convertToWxVehicleBind(uuid, templates);
// 导入数据到数据库
importData(uuid, binds, templates);
// 1. 取 token
String token = request.getHeader("token");
// 2. 构造请求加密报文
String requestJson = JSON.toJSONString(templates);
String url = interfacePrefix + Constant.WX_VEHICLE_BIND_IMPORT_VEHICLE_BIND;
String key = SM4Utils.generateKey();
String sm4Encrypt = SM4Utils.sm4Encrypt(key, authKey);
String encryptRequestJson = SM4Utils.sm4Encrypt(requestJson, key);
ResData resData = new ResData();
resData.setKey(sm4Encrypt);
resData.setData(encryptRequestJson);
String enRequestJson = JSON.toJSONString(resData);
// 3. 调接口
String returnJson = HttpClientUtils.callInterface(enRequestJson, url, token);
log.info("[uuid:{}]-返回数据为:{}", uuid, returnJson);
if (StringUtils.isBlank(returnJson)) {
return a;
}
// 4. 解密
ResData returnResData = JSON.parseObject(returnJson, ResData.class);
if (Constant.CODE_500.equals(returnResData.getKey())) {
log.info("[uuid:{}]-接口解密失败:{}", uuid, returnResData);
return a;
}
String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(),
SM4Utils.sm4Decrypt(returnResData.getKey(), authKey));
a = deDataJson;
//// 查询字典表并转换为 WxVehicleBind 对象
//List<WxVehicleBind> binds = convertToWxVehicleBind(uuid, templates);
//
//// 导入数据到数据库
//importData(uuid, binds, templates);
// 删除临时文件
tempFile.delete();
return "导入成功";
return a;
} catch (IOException e) {
log.error("导入失败: {}", e.getMessage());
return "导入失败:" + e.getMessage();
@ -253,149 +269,6 @@ public class ImportController {
}
private List<WxVehicleBind> convertToWxVehicleBind(String uuid, List<WxVehicleBindTemplate> templates) {
Map<String, Integer> plateColorMap = getPlateColorMap();
Map<String, Integer> vehicleTypeMap = getVehicleTypeMap();
Map<String, Integer> freeTypeMap = getFreeTypeMap();
List<WxVehicleBind> binds = new ArrayList<>();
if (templates.size() > 0) {
for (WxVehicleBindTemplate template : templates) {
WxVehicleBind bind = new WxVehicleBind();
bind.setVehicleid(template.getVehicleid());
bind.setVehiclecolor(plateColorMap.getOrDefault(template.getPlatecolorname(), 0));
bind.setVehicletype(vehicleTypeMap.getOrDefault(template.getTypename(), 0));
bind.setPhoneNumber(template.getPhoneNumber());
bind.setFreetype(freeTypeMap.getOrDefault(template.getFreetypename(), 1));
//bind.setFreeStartTime(DateTimeUtil.getFormatDate(template.getFreeStartTime(), Constant.YYYY_MM_DD_HH_MM_SS));
//bind.setFreeEndTime(DateTimeUtil.getFormatDate(template.getFreeEndTime(), Constant.YYYY_MM_DD_HH_MM_SS));
bind.setFreeStartTime(template.getFreeStartTime());
bind.setFreeEndTime(template.getFreeEndTime());
bind.setAdduserid(template.getAdduserid());
bind.setAdduser(template.getAdduser());
bind.setFreesta(template.getFreesta());
bind.setImagesID("");
if(5==bind.getFreetype()){
bind.setAdvancefee(0L);
}else {
bind.setAdvancefee(Long.parseLong(StringUtils.isNotBlank(template.getAdvancefee()) ? template.getAdvancefee() : "0"));
}
// 默认未审核状态
bind.setIscomplete(0);
binds.add(bind);
}
}
log.info("[uuid:{}]-转换后的数据条数为:{}", uuid, binds.size());
return binds;
}
private void importData(String uuid, List<WxVehicleBind> binds, List<WxVehicleBindTemplate> templates) {
int count = 0;
int infoCount = 0;
if (binds.size() > 0) {
for (WxVehicleBind bind : binds) {
// 检查是否存在主键冲突
QueryWrapper<WxVehicleBind> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("vehicleid", bind.getVehicleid())
.eq("vehiclecolor", bind.getVehiclecolor());
boolean exists = wxVehicleBindMapper.exists(queryWrapper);
if (exists) {
// 更新操作---只更新开始时间和结束时间
UpdateWrapper<WxVehicleBind> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("vehicleid", bind.getVehicleid())
.eq("vehiclecolor", bind.getVehiclecolor())
.set("freeStartTime", bind.getFreeStartTime())
.set("freeEndTime", bind.getFreeEndTime())
;
wxVehicleBindMapper.update(null, updateWrapper);
log.info("[uuid:{}]-wx_vehiclebind表中主键冲突,车牌号码为{},车牌颜色为{},执行更新操作,只更新开始时间{}和结束时间{}", uuid, bind.getVehicleid(), bind.getVehiclecolor(), DateTimeUtil.getFormateString(bind.getFreeStartTime(), Constant.YYYY_MM_DD_HH_MM_SS),DateTimeUtil.getFormateString(bind.getFreeEndTime(), Constant.YYYY_MM_DD_HH_MM_SS));
} else {
log.info("[uuid:{}]-wx_vehiclebind表中车牌号码为{},车牌颜色为{},数据不存在执行插入操作{}", uuid, bind.getVehicleid(), bind.getVehiclecolor(),bind);
// 插入操作
wxVehicleBindMapper.insert(bind);
}
count++;
// 如果 freeType = 5插入到 wx_pretimesinfo 表
if (bind.getFreetype() == 5 && !exists) {
// 获取对应的 WxVehicleBindTemplate 对象中的 freeTimes
WxVehicleBindTemplate template = getTemplateByVehicleIdAndColor(templates, bind.getVehicleid(), bind.getVehiclecolor());
if (template == null ) {
log.info("[uuid:{}]-未找到对应的车牌号码为{},车牌颜色为{}的WxVehicleBindTemplate对象", uuid, bind.getVehicleid(), bind.getVehiclecolor());
continue;
}
Integer freeTimes = Integer.parseInt(StringUtils.isNotBlank(template.getFreeTimes()) ? template.getFreeTimes() : "0");
long advancefee = Long.parseLong(StringUtils.isNotBlank(template.getAdvancefee()) ? template.getAdvancefee() : "0");
WxPreTimesInfo preTimesInfo = new WxPreTimesInfo();
preTimesInfo.setVehicleid(bind.getVehicleid());
preTimesInfo.setVehiclecolor(bind.getVehiclecolor());
preTimesInfo.setVehicletype(bind.getVehicletype());
preTimesInfo.setFreetype(bind.getFreetype());
preTimesInfo.setFreeStartTime(bind.getFreeStartTime());
preTimesInfo.setFreeEndTime(bind.getFreeEndTime());
// 使用元数据中的免费次数如果没有则默认为0
preTimesInfo.setFreeTimes(freeTimes);
preTimesInfo.setAdduserid(bind.getAdduserid());
preTimesInfo.setAdduser(bind.getAdduser());
preTimesInfo.setFreesta(bind.getFreesta());
preTimesInfo.setAdvancefee(advancefee);
preTimesInfo.setInsertTime(new Date());
// 默认未审核状态
preTimesInfo.setIscomplete(0);
wxPreTimesInfoMapper.insert(preTimesInfo);
infoCount++;
}
}
}
log.info("[uuid:{}]-批量导入wx_vehiclebind,条数:{}", uuid, count);
log.info("[uuid:{}]-批量导入wx_pretimesinfo,条数:{}", uuid, infoCount);
}
private WxVehicleBindTemplate getTemplateByVehicleIdAndColor(List<WxVehicleBindTemplate> templates, String vehicleid, Integer vehiclecolor) {
for (WxVehicleBindTemplate template : templates) {
if (template.getVehicleid().equals(vehicleid) && template.getPlatecolorname().equals(getPlateColorText(vehiclecolor)) && "预存通行车".equals(template.getFreetypename())) {
return template;
}
}
return null;
}
private String getPlateColorText(Integer value) {
ATtypeText attypeText = attypeTextMapper.selectById(value);
return attypeText != null ? attypeText.getText() : null;
}
private Map<String, Integer> getPlateColorMap() {
List<ATtypeText> list = attypeTextMapper.selectList(null);
Map<String, Integer> map = new HashMap<>();
for (ATtypeText item : list) {
map.put(item.getText(), item.getValue());
}
return map;
}
private Map<String, Integer> getVehicleTypeMap() {
List<TypeText> list = typeTextMapper.selectList(null);
Map<String, Integer> map = new HashMap<>();
for (TypeText item : list) {
map.put(item.getText(), item.getValue());
}
return map;
}
private Map<String, Integer> getFreeTypeMap() {
List<FreeTypeText> list = freeTypeTextMapper.selectList(null);
Map<String, Integer> map = new HashMap<>();
for (FreeTypeText item : list) {
map.put(item.getText(), item.getValue());
}
return map;
}
}

@ -1,15 +1,23 @@
package com.nmgs.controller;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nmgs.mapper.UnBindMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nmgs.config.Constant;
import com.nmgs.entity.ResData;
import com.nmgs.util.HttpClientUtils;
import com.nmgs.util.SM4Utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -21,41 +29,226 @@ import java.util.Map;
*/
@Controller
@RequestMapping("/UnBind")
@Slf4j
public class UnBindController {
@Resource
private UnBindMapper unBindMapper;
@Value("${authKey}")
private String authKey;
@Value("${interfacePrefix}")
private String interfacePrefix;
@PostMapping("getPage")
@ResponseBody
public Object getPage(@RequestBody Map<String, Object> params) {
Integer pageNum = (Integer) params.get("pageNum");
Integer pageSize = (Integer) params.get("pageSize");
public Object getPage(@RequestBody Map<String, Object> params,
HttpServletRequest request) {
int pageNum = (Integer) params.getOrDefault("pageNum", 1);
int pageSize = (Integer) params.getOrDefault("pageSize", 10);
Page<Map<String, Object>> page = new Page<>(pageNum, pageSize);
page = unBindMapper.getPage(page, params);
return page;
try {
// 1. 取 token
String token = request.getHeader("token");
// 2. 构造请求加密报文
ObjectMapper mapper = new ObjectMapper();
String requestJson = mapper.writeValueAsString(params);
String url = interfacePrefix + Constant.UNBIND_GET_PAGE;
String key = SM4Utils.generateKey();
String sm4Encrypt = SM4Utils.sm4Encrypt(key, authKey);
String encryptRequestJson = SM4Utils.sm4Encrypt(requestJson, key);
ResData resData = new ResData();
resData.setKey(sm4Encrypt);
resData.setData(encryptRequestJson);
String enRequestJson = JSON.toJSONString(resData);
// 3. 调接口
String returnJson = HttpClientUtils.callInterface(enRequestJson, url, token);
log.info("返回数据为: " + returnJson);
if (StringUtils.isBlank(returnJson)) {
return page;
}
// 4. 解密
ResData returnResData = JSON.parseObject(returnJson, ResData.class);
if (Constant.CODE_500.equals(returnResData.getKey())) {
log.info("接口解密失败{}", returnResData);
return page;
}
//String deReturnKey = SM4Utils.sm4Decrypt(returnResData.getKey(), authKey);
//String deDataJson = new String(
// SM4Utils.sm4Decrypt(returnResData.getData(), deReturnKey).getBytes(),
// StandardCharsets.UTF_8);
//deDataJson = StringEscapeUtils.unescapeJava(deDataJson);
String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(),
SM4Utils.sm4Decrypt(returnResData.getKey(), authKey));
// 5. 解析成 Map
Map<String, Object> resultMap = mapper.readValue(deDataJson, Map.class);
List<Map<String, Object>> records = (List<Map<String, Object>>) resultMap.get("records");
Integer total = (Integer) resultMap.get("total");
// 6. 构造 Page 并回填
page.setRecords(records);
page.setTotal(total);
return page;
} catch (Exception e) {
log.error("getPage 错误", e);
return page;
}
}
@PostMapping("deleteData")
@ResponseBody
public Object deleteData(@RequestBody List<Map<String, Object>> params) {
int a=0;
for (Map<String, Object> param : params) {
a+=unBindMapper.deleteData(param);
public Object deleteData(@RequestBody List<Map<String, Object>> params, HttpServletRequest request) {
int a = 0;
try {
// 1. 取 token
String token = request.getHeader("token");
// 2. 构造请求加密报文
ObjectMapper mapper = new ObjectMapper();
String requestJson = mapper.writeValueAsString(params);
String url = interfacePrefix + Constant.UNBIND_DELETE_DATA;
String key = SM4Utils.generateKey();
String sm4Encrypt = SM4Utils.sm4Encrypt(key, authKey);
String encryptRequestJson = SM4Utils.sm4Encrypt(requestJson, key);
ResData resData = new ResData();
resData.setKey(sm4Encrypt);
resData.setData(encryptRequestJson);
String enRequestJson = JSON.toJSONString(resData);
// 3. 调接口
String returnJson = HttpClientUtils.callInterface(enRequestJson, url, token);
log.info("返回数据为: " + returnJson);
if (StringUtils.isBlank(returnJson)) {
return a;
}
// 4. 解密
ResData returnResData = JSON.parseObject(returnJson, ResData.class);
if (Constant.CODE_500.equals(returnResData.getKey())) {
log.info("接口解密失败{}", returnResData);
return a;
}
String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(),
SM4Utils.sm4Decrypt(returnResData.getKey(), authKey));
a = Integer.parseInt(deDataJson);
} catch (Exception e) {
log.error("deleteData 错误", e);
}
return a;
}
@PostMapping("getWXCarColorList")
@ResponseBody
public Object getWXCarColorList() {
Map<String,Object> map = new HashMap<>();
map.put("CarType",unBindMapper.getWXCarTypeList());
map.put("CarColor",unBindMapper.getWXCarColorList());
public Object getWXCarColorList(HttpServletRequest request) {
Map<String, Object> map = new HashMap<>();
try {
// 1. 取 token
String token = request.getHeader("token");
// 2. 构造请求加密报文
ObjectMapper mapper = new ObjectMapper();
String requestJson = "{}";
String url = interfacePrefix + Constant.UNBIND_GET_WX_CAR_COLOR_LIST;
String key = SM4Utils.generateKey();
String sm4Encrypt = SM4Utils.sm4Encrypt(key, authKey);
String encryptRequestJson = SM4Utils.sm4Encrypt(requestJson, key);
ResData resData = new ResData();
resData.setKey(sm4Encrypt);
resData.setData(encryptRequestJson);
String enRequestJson = JSON.toJSONString(resData);
// 3. 调接口
String returnJson = HttpClientUtils.callInterface(enRequestJson, url, token);
log.info("返回数据为: " + returnJson);
if (StringUtils.isBlank(returnJson)) {
return map;
}
// 4. 解密
ResData returnResData = JSON.parseObject(returnJson, ResData.class);
if (Constant.CODE_500.equals(returnResData.getKey())) {
log.info("接口解密失败{}", returnResData);
return map;
}
String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(),
SM4Utils.sm4Decrypt(returnResData.getKey(), authKey));
Map<String, Object> resultMap = mapper.readValue(deDataJson, Map.class);
List<Map<String, Object>> CarType = (List<Map<String, Object>>) resultMap.get("CarType");
List<Map<String, Object>> CarColor = (List<Map<String, Object>>) resultMap.get("CarColor");
map.put("CarType", CarType);
map.put("CarColor", CarColor);
} catch (Exception e) {
log.error("getWXCarColorList 错误", e);
}
return map;
}
@PostMapping("crossData")
@ResponseBody
public Object crossData(@RequestBody Map<String, Object> params) {
return unBindMapper.crossData(params);
public Object crossData(@RequestBody Map<String, Object> params, HttpServletRequest request) {
int a = 0;
try {
// 1. 取 token
String token = request.getHeader("token");
// 2. 构造请求加密报文
ObjectMapper mapper = new ObjectMapper();
String requestJson = mapper.writeValueAsString(params);
String url = interfacePrefix + Constant.UNBIND_CROSS_DATA;
String key = SM4Utils.generateKey();
String sm4Encrypt = SM4Utils.sm4Encrypt(key, authKey);
String encryptRequestJson = SM4Utils.sm4Encrypt(requestJson, key);
ResData resData = new ResData();
resData.setKey(sm4Encrypt);
resData.setData(encryptRequestJson);
String enRequestJson = JSON.toJSONString(resData);
// 3. 调接口
String returnJson = HttpClientUtils.callInterface(enRequestJson, url, token);
log.info("返回数据为: " + returnJson);
if (StringUtils.isBlank(returnJson)) {
return a;
}
// 4. 解密
ResData returnResData = JSON.parseObject(returnJson, ResData.class);
if (Constant.CODE_500.equals(returnResData.getKey())) {
log.info("接口解密失败{}", returnResData);
return a;
}
String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(),
SM4Utils.sm4Decrypt(returnResData.getKey(), authKey));
a = Integer.parseInt(deDataJson);
} catch (Exception e) {
log.error("crossData 错误", e);
}
return a;
}
}

@ -9,6 +9,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@ -23,75 +24,75 @@ public class WxVehicleBindController {
private WxVehicleBindService wxVehicleBindService;
@PostMapping("/WxVehicleBind/deleteDetailsInfo")
public Object deleteDetailsInfo(@RequestBody Map<String, Object> params) {
return wxVehicleBindService.deleteDetailsInfo(params);
public Object deleteDetailsInfo(@RequestBody Map<String, Object> params, HttpServletRequest request) {
return wxVehicleBindService.deleteDetailsInfo(params, request);
}
@PostMapping("/WxVehicleBind/completeDetailsInfo")
public Object completeDetailsInfo(@RequestBody Map<String, Object> params) {
return wxVehicleBindService.completeDetailsInfo(params);
public Object completeDetailsInfo(@RequestBody Map<String, Object> params,HttpServletRequest request) {
return wxVehicleBindService.completeDetailsInfo(params, request);
}
@PostMapping("/WxVehicleBind/queryDepositDetails")
public Object queryDepositDetails(@RequestBody Map<String, Object> params) {
return wxVehicleBindService.queryDepositDetails(params);
public Object queryDepositDetails(@RequestBody Map<String, Object> params,HttpServletRequest request) {
return wxVehicleBindService.queryDepositDetails(params, request);
}
@PostMapping("/WxVehicleBind/commitPreTimes")
public Object commitPreTimes(@RequestBody Map<String, Object> params) {
return wxVehicleBindService.commitPreTimes(params);
public Object commitPreTimes(@RequestBody Map<String, Object> params,HttpServletRequest request) {
return wxVehicleBindService.commitPreTimes(params, request);
}
@PostMapping("/WxVehicleBind/updateApproved")
public Object updateApproved(@RequestBody WxUnBindApply wx) {
return wxVehicleBindService.updateApproved(wx);
public Object updateApproved(@RequestBody WxUnBindApply wx,HttpServletRequest request) {
return wxVehicleBindService.updateApproved(wx, request);
}
@PostMapping("/WxVehicleBind/queryWxName")
public Object queryWxName(@RequestBody Map<String, Object> params) {
return wxVehicleBindService.queryWxName(params);
public Object queryWxName(@RequestBody Map<String, Object> params,HttpServletRequest request) {
return wxVehicleBindService.queryWxName(params, request);
}
@PostMapping("/WxVehicleBind/getVersionNumber")
public Object getVersionNumber() {
return wxVehicleBindService.getVersionNumber();
return wxVehicleBindService.getVersionNumber( );
}
@PostMapping("/WxVehicleBind/getPage")
public IPage getPage(@RequestBody Map<String,Object> map) {
return wxVehicleBindService.getPage(map);
public IPage getPage(@RequestBody Map<String,Object> map,HttpServletRequest request) {
return wxVehicleBindService.getPage(map, request);
}
@PostMapping("/WxVehicleBind/getCarColorList")
public Object getCarColorList(@RequestBody Map<String, Object> params) {
return wxVehicleBindService.getCarColorList();
public Object getCarColorList(HttpServletRequest request) {
return wxVehicleBindService.getCarColorList(request);
}
@PostMapping("/WxVehicleBind/getFreeTypeList")
public Object getFreeTypeList() {
return wxVehicleBindService.getFreeTypeList();
public Object getFreeTypeList(HttpServletRequest request) {
return wxVehicleBindService.getFreeTypeList(request);
}
@PostMapping("/WxVehicleBind/getCarTypeList")
public Object getCarTypeList() {
return wxVehicleBindService.getCarTypeList();
public Object getCarTypeList(HttpServletRequest request) {
return wxVehicleBindService.getCarTypeList(request);
}
@PostMapping("/WxVehicleBind/commitVehicleBind")
public Object commitVehicleBind(@RequestBody Map<String,Object> map ) {
return wxVehicleBindService.commitVehicleBind(map);
public Object commitVehicleBind(@RequestBody Map<String,Object> map,HttpServletRequest request ) {
return wxVehicleBindService.commitVehicleBind(map, request);
}
@PostMapping("/WxVehicleBind/deleteVehicleBind")
public Object deleteVehicleBind(@RequestBody List<WxVehicleBind> list) {
return wxVehicleBindService.deleteVehicleBind(list);
public Object deleteVehicleBind(@RequestBody List<WxVehicleBind> list,HttpServletRequest request) {
return wxVehicleBindService.deleteVehicleBind(list, request);
}
@PostMapping("/WxVehicleBind/isShowAdvanceFee")
public Object isShowAdvanceFee(@RequestBody Map<String,Object> map) {
return wxVehicleBindService.isShowAdvanceFee(map);
public Object isShowAdvanceFee(@RequestBody Map<String,Object> map,HttpServletRequest request) {
return wxVehicleBindService.isShowAdvanceFee(map, request);
}
@PostMapping("/WxVehicleBind/queryImageList")
public Object queryImageList(@RequestBody Map<String,Object> map) {
return wxVehicleBindService.queryImageList(map);
public Object queryImageList(@RequestBody Map<String,Object> map,HttpServletRequest request) {
return wxVehicleBindService.queryImageList(map, request);
}
@PostMapping("/WxVehicleBind/notPassed")
public Object notPassed(@RequestBody WxVehicleBind wxVehicleBind) {
return wxVehicleBindService.notPassed(wxVehicleBind);
public Object notPassed(@RequestBody WxVehicleBind wxVehicleBind,HttpServletRequest request) {
return wxVehicleBindService.notPassed(wxVehicleBind, request);
}
@PostMapping("/WxVehicleBind/completeSetup")
public Object completeSetup(@RequestBody List<WxVehicleBind> list) {
return wxVehicleBindService.completeSetup(list);
public Object completeSetup(@RequestBody List<WxVehicleBind> list,HttpServletRequest request) {
return wxVehicleBindService.completeSetup(list, request);
}
}

@ -0,0 +1,21 @@
package com.nmgs.entity;
import lombok.Data;
/**
* @author: shuguang
* @date: 20250820 9:22
* @description:
*/
@Data
public class ResData {
/**
*
*/
private String key;
/**
*
*/
private String data;
}

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.ATtypeText;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20231027 23:02
* @description:
*/
@Mapper
public interface ATtypeTextMapper extends BaseMapper<ATtypeText> {
}

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.FreeTypeText;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20231027 17:17
* @description:
*/
@Mapper
public interface FreeTypeTextMapper extends BaseMapper<FreeTypeText> {
}

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.TypeText;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20231013 14:08
* @description:
*/
@Mapper
public interface TypeTextMapper extends BaseMapper<TypeText> {
}

@ -1,23 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
@Repository
@Mapper
public interface UnBindMapper{
Page<Map<String, Object>> getPage(Page<Map<String, Object>> page,@Param("params") Map<String, Object> params);
int deleteData(Map<String, Object> params);
List<Map<String, Object>> getWXCarColorList();
List<Map<String, Object>> getWXCarTypeList();
int crossData(Map<String, Object> params);
}

@ -1,61 +0,0 @@
<?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.UnBindMapper">
<select id="getPage" resultType="java.util.Map">
SELECT a.vehicleid,
a.vehiclecolor,
a.wxid,
c.wxname,
a.ismanager,
b.vehicletype,
b.phoneNumber,
b.freetype,
b.freeStartTime,
b.freeEndTime
FROM wx_vehiclewx_bind a
LEFT JOIN wx_vehiclebind b ON a.vehicleid = b.vehicleid
AND a.vehiclecolor = b.vehiclecolor
LEFT JOIN wx_vehiclewxdata c ON a.wxid = c.wxid
<where>
<if test="params.wxname!=null and params.wxname!=''">
<bind name="wxname" value="'%'+params.wxname+'%'"/>
and c.wxname like #{wxname}
</if>
<if test="params.vehicleid!=null and params.vehicleid!=''">
<bind name="vehicleid" value="'%'+params.vehicleid+'%'"/>
and a.vehicleid like #{vehicleid}
</if>
<if test="params.vehiclecolor!=null ">
and a.vehiclecolor = #{params.vehiclecolor}
</if>
<if test="params.ismanager!=null ">
and a.ismanager = #{params.ismanager}
</if>
</where>
</select>
<select id="getWXCarColorList" resultType="java.util.Map">
SELECT *
FROM atype_text
</select>
<select id="getWXCarTypeList" resultType="java.util.Map">
SELECT *
FROM type_text
</select>
<delete id="deleteData">
DELETE
FROM wx_vehiclewx_bind
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</delete>
<update id="crossData">
update wx_vehiclewx_bind set ismanager= 0
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</update>
</mapper>

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.VehicleImages;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20231028 0:24
* @description:
*/
@Mapper
public interface VehicleImagesMapper extends BaseMapper<VehicleImages> {
}

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.VehicleWxBind;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20231129 11:42
* @description:
*/
@Mapper
public interface VehicleWxBindMapper extends BaseMapper<VehicleWxBind> {
}

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.WxCrossNum;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20250303 11:36
* @description:
*/
@Mapper
public interface WxCrossNumMapper extends BaseMapper<WxCrossNum> {
}

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.WxOutPort;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20240415 17:07
* @description:
*/
@Mapper
public interface WxOutPortMapper extends BaseMapper<WxOutPort> {
}

@ -1,19 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.WxPreTimesInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20250228 9:01
* @description:
*/
@Mapper
public interface WxPreTimesInfoMapper extends BaseMapper<WxPreTimesInfo> {
List<Map<String, Object>> selectMyList(@Param("vehicleid")String vehicleid, @Param("vehiclecolor")int vehiclecolor);
}

@ -1,30 +0,0 @@
<?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.WxPreTimesInfoMapper">
<select id="selectMyList" resultType="java.util.Map">
SELECT t.*, t1.TEXT AS platecolorname,
t2.TEXT AS typename,
t3.TEXT AS freetypename FROM wx_pretimesinfo t
LEFT JOIN atype_text t1 ON ( t1.VALUE = t.vehiclecolor )
LEFT JOIN TYPE_TEXT t2 ON ( t2.VALUE = t.vehicletype )
LEFT JOIN wx_freetype_text t3 ON ( t3.VALUE = t.freetype )
<where>
1=1
<if test="vehicleid != null and vehicleid != ''">
AND t.vehicleid = '${vehicleid}'
</if>
<if test="vehiclecolor != null">
AND t.vehiclecolor=${vehiclecolor}
</if>
</where>
ORDER BY insertTime DESC
</select>
</mapper>

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.WxUnBindApply;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20231128 14:41
* @description:
*/
@Mapper
public interface WxUnBindApplyMapper extends BaseMapper<WxUnBindApply> {
}

@ -1,23 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseMapper;
import com.nmgs.entity.WxVehicleBind;
import com.nmgs.entity.WxVehicleBindExcel;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author: shuguang
* @date: 20231027 14:43
* @description:
*/
@Mapper
public interface WxVehicleBindMapper extends MPJBaseMapper<WxVehicleBind> {
Page<Map<String, Object>> selectMyPage(Page<Map<String, Object>> page, String vehicleid, @Param("vehiclecolor") Integer vehiclecolor);
List<WxVehicleBindExcel> queryList(String whereSql);
}

@ -1,158 +0,0 @@
<?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.WxVehicleBindMapper">
<select id="selectMyPage" resultType="java.util.Map">
SELECT
t.vehicleid,
t.vehiclecolor,
t.vehicletype,
t.phoneNumber,
t.freetype,
t.freeStartTime,
t.freeEndTime,
COALESCE((SELECT SUM(t6.freeTimes) FROM wx_pretimesinfo t6 WHERE
t6.vehicleid = t.vehicleid AND t6.vehiclecolor = t.vehiclecolor ),0) freeTimes,
COALESCE((SELECT SUM(t7.freeTimes) FROM wx_pretimesinfo t7 WHERE
t7.vehicleid = t.vehicleid AND t7.vehiclecolor = t.vehiclecolor and t7.iscomplete=1),0) reviewedTimes,
COALESCE((SELECT SUM(t8.freeTimes) FROM wx_pretimesinfo t8 WHERE
t8.vehicleid = t.vehicleid AND t8.vehiclecolor = t.vehiclecolor and t8.iscomplete=0),0) notReviewedTimes,
t.ImagesID,
t.adduserid,
t.adduser,
t.vehicleNotes,
t.freesta,
(COALESCE((SELECT wx.advancefee FROM wx_vehiclebind wx WHERE
wx.vehicleid = t.vehicleid AND wx.vehiclecolor = t.vehiclecolor ),0) + (SELECT COALESCE(SUM(w.advancefee), 0) FROM wx_pretimesinfo w WHERE
w.vehicleid = t.vehicleid AND w.vehiclecolor = t.vehiclecolor)) totalAdvancefee,
(COALESCE((SELECT w1.advancefee FROM wx_vehiclebind w1 WHERE
w1.vehicleid = t.vehicleid AND w1.vehiclecolor = t.vehiclecolor and w1.iscomplete=1),0) + COALESCE((SELECT SUM(a1.advancefee) FROM wx_pretimesinfo a1 WHERE
a1.vehicleid = t.vehicleid AND a1.vehiclecolor = t.vehiclecolor and a1.iscomplete=1),0)) reviewedFee,
(COALESCE((SELECT w2.advancefee FROM wx_vehiclebind w2 WHERE
w2.vehicleid = t.vehicleid AND w2.vehiclecolor = t.vehiclecolor and w2.iscomplete=0),0) + COALESCE((SELECT SUM(a2.advancefee) FROM wx_pretimesinfo a2 WHERE
a2.vehicleid = t.vehicleid AND a2.vehiclecolor = t.vehiclecolor and a2.iscomplete=0),0)) notReviewedFee,
t.checkcode,
t.backup2,
t.backup3,
t.backup4,
t.backup5,
t.iscomplete,
t4.wxid,
t4.applyType,
t4.managerWXID,
t4.TEXT,
t1.TEXT AS platecolorname,
t2.TEXT AS typename,
t3.TEXT AS freetypename,
COALESCE(( SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor
),0) surplusTimes
FROM
wx_vehiclebind t
LEFT JOIN atype_text t1 ON ( t1.VALUE = t.vehiclecolor )
LEFT JOIN TYPE_TEXT t2 ON ( t2.VALUE = t.vehicletype )
LEFT JOIN wx_freetype_text t3 ON ( t3.VALUE = t.freetype )
LEFT JOIN wx_unbindapply t4 ON ( t4.vehicleid = t.vehicleid AND t4.vehiclecolor = t.vehiclecolor )
<where>
1=1
<if test="vehicleid != null and vehicleid != ''">
AND t.vehicleid like '%${vehicleid}%'
</if>
<if test="vehiclecolor != null">
AND t.vehiclecolor=${vehiclecolor}
</if>
</where>
ORDER BY
t.freeStartTime DESC
</select>
<select id="queryList" resultType="com.nmgs.entity.WxVehicleBindExcel">
SELECT
t.vehicleid,
t.vehiclecolor,
t.vehicletype,
t.phoneNumber,
t.freetype,
t.freeStartTime,
t.freeEndTime,
t.ImagesID,
t.adduserid,
t.adduser,
t.vehicleNotes,
CASE
WHEN freesta = 'G' THEN '嘎鲁图'
WHEN freesta = 'T' THEN '台格'
ELSE '台格,嘎鲁图'
END AS freesta,
CASE
WHEN t.freetype = 5 THEN
CONCAT(
'已审核: ',
COALESCE((SELECT SUM(t7.freeTimes) FROM wx_pretimesinfo t7 WHERE t7.vehicleid = t.vehicleid AND t7.vehiclecolor = t.vehiclecolor AND t7.iscomplete = 1), 0),
CASE
WHEN (SELECT SUM(t8.freeTimes) FROM wx_pretimesinfo t8 WHERE t8.vehicleid = t.vehicleid AND t8.vehiclecolor = t.vehiclecolor AND t8.iscomplete = 0) > 0 THEN
CONCAT(', 未审核: ', COALESCE((SELECT SUM(t8.freeTimes) FROM wx_pretimesinfo t8 WHERE t8.vehicleid = t.vehicleid AND t8.vehiclecolor = t.vehiclecolor AND t8.iscomplete = 0), 0))
ELSE ''
END,
', 合计: ',
COALESCE((SELECT SUM(t6.freeTimes) FROM wx_pretimesinfo t6 WHERE t6.vehicleid = t.vehicleid AND t6.vehiclecolor = t.vehiclecolor), 0)
)
ELSE ''
END AS freeTimes,
CASE
WHEN t.freetype = 5 THEN
COALESCE((SELECT SUM(t7.freeTimes) FROM wx_pretimesinfo t7 WHERE t7.vehicleid = t.vehicleid AND t7.vehiclecolor = t.vehiclecolor AND t7.iscomplete = 1), 0) -
COALESCE((SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor), 0)
ELSE ''
END AS applyTimes,
CASE
WHEN t.freetype = 5 OR t.freetype = 2 THEN
CONCAT(
'已审核: ',
COALESCE((SELECT w1.advancefee FROM wx_vehiclebind w1 WHERE w1.vehicleid = t.vehicleid AND w1.vehiclecolor = t.vehiclecolor AND w1.iscomplete = 1), 0) +
COALESCE((SELECT SUM(a1.advancefee) FROM wx_pretimesinfo a1 WHERE a1.vehicleid = t.vehicleid AND a1.vehiclecolor = t.vehiclecolor AND a1.iscomplete = 1), 0), '元',
CASE
WHEN (SELECT SUM(a2.advancefee) FROM wx_pretimesinfo a2 WHERE a2.vehicleid = t.vehicleid AND a2.vehiclecolor = t.vehiclecolor AND a2.iscomplete = 0) > 0 THEN
CONCAT(', 未审核: ', COALESCE((SELECT w2.advancefee FROM wx_vehiclebind w2 WHERE w2.vehicleid = t.vehicleid AND w2.vehiclecolor = t.vehiclecolor AND w2.iscomplete = 0), 0) +
COALESCE((SELECT SUM(a2.advancefee) FROM wx_pretimesinfo a2 WHERE a2.vehicleid = t.vehicleid AND a2.vehiclecolor = t.vehiclecolor AND a2.iscomplete = 0), 0), '元')
ELSE ''
END,
', 合计: ',
COALESCE((SELECT wx.advancefee FROM wx_vehiclebind wx WHERE wx.vehicleid = t.vehicleid AND wx.vehiclecolor = t.vehiclecolor), 0) +
COALESCE((SELECT SUM(w.advancefee) FROM wx_pretimesinfo w WHERE w.vehicleid = t.vehicleid AND w.vehiclecolor = t.vehiclecolor), 0), '元'
)
ELSE ''
END AS advancefee,
t.checkcode,
CASE
WHEN t.freetype = 5 AND (SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor) > 0 THEN
COALESCE((SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor), 0)
ELSE ''
END AS surplusTimes,
CASE
WHEN t.iscomplete = 0 THEN '未审核'
WHEN t.iscomplete = 1 THEN '通过'
WHEN t.iscomplete = 2 THEN '未通过'
ELSE '其他状态'
END AS iscomplete,
t1.TEXT AS platecolorname,
t2.TEXT AS typename,
t3.TEXT AS freetypename
FROM
wx_vehiclebind t
LEFT JOIN
atype_text t1 ON t1.VALUE = t.vehiclecolor
LEFT JOIN
TYPE_TEXT t2 ON t2.VALUE = t.vehicletype
LEFT JOIN
wx_freetype_text t3 ON t3.VALUE = t.freetype
${whereSql}
ORDER BY
t.freeStartTime DESC
</select>
</mapper>

@ -1,14 +0,0 @@
package com.nmgs.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nmgs.entity.WxVehicleWxData;
import org.apache.ibatis.annotations.Mapper;
/**
* @author: shuguang
* @date: 20231128 15:26
* @description:
*/
@Mapper
public interface WxVehicleWxDataMapper extends BaseMapper<WxVehicleWxData> {
}

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nmgs.entity.WxUnBindApply;
import com.nmgs.entity.WxVehicleBind;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@ -21,7 +22,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-27 14:50
*/
IPage getPage(Map<String, Object> map);
IPage getPage(Map<String, Object> map, HttpServletRequest request);
/**
*
@ -30,7 +31,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-27 15:01
*/
Object getCarColorList();
Object getCarColorList(HttpServletRequest request);
/**
*
@ -39,7 +40,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-27 17:11
*/
Object getFreeTypeList();
Object getFreeTypeList(HttpServletRequest request);
/**
*
@ -48,7 +49,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-27 17:20
*/
Object getCarTypeList();
Object getCarTypeList(HttpServletRequest request);
/**
*
@ -58,7 +59,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-27 22:26
*/
Object commitVehicleBind(Map<String, Object> map);
Object commitVehicleBind(Map<String, Object> map,HttpServletRequest request);
/**
*
@ -68,7 +69,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-27 22:26
*/
Object deleteVehicleBind(List<WxVehicleBind> list);
Object deleteVehicleBind(List<WxVehicleBind> list,HttpServletRequest request);
/**
*
@ -78,7 +79,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-28 2:09
*/
Object isShowAdvanceFee(Map<String, Object> map);
Object isShowAdvanceFee(Map<String, Object> map,HttpServletRequest request);
/**
*
@ -88,7 +89,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-10-30 15:06
*/
Object queryImageList(Map<String, Object> map);
Object queryImageList(Map<String, Object> map,HttpServletRequest request);
/**
*
@ -98,7 +99,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-11-10 11:22
*/
Object notPassed(WxVehicleBind wxVehicleBind);
Object notPassed(WxVehicleBind wxVehicleBind,HttpServletRequest request);
/**
*
@ -108,7 +109,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-11-10 11:22
*/
Object completeSetup(List<WxVehicleBind> list);
Object completeSetup(List<WxVehicleBind> list,HttpServletRequest request);
/**
*
@ -127,7 +128,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-11-28 18:05
*/
Object queryWxName(Map<String, Object> params);
Object queryWxName(Map<String, Object> params,HttpServletRequest request);
/**
*
@ -137,7 +138,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2023-11-28 18:30
*/
Object updateApproved(WxUnBindApply wx);
Object updateApproved(WxUnBindApply wx,HttpServletRequest request);
/**
*
@ -147,7 +148,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2025-02-28 8:27
*/
Object commitPreTimes(Map<String, Object> params);
Object commitPreTimes(Map<String, Object> params,HttpServletRequest request);
/**
*
@ -157,7 +158,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2025-02-28 14:23
*/
Object queryDepositDetails(Map<String, Object> params);
Object queryDepositDetails(Map<String, Object> params,HttpServletRequest request);
/**
@ -168,7 +169,7 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2025-03-02 15:14
*/
Object completeDetailsInfo(Map<String, Object> params);
Object completeDetailsInfo(Map<String, Object> params,HttpServletRequest request);
/**
*
*
@ -177,5 +178,5 @@ public interface WxVehicleBindService {
* @author shuguang
* @date 2025-03-02 15:14
*/
Object deleteDetailsInfo(Map<String, Object> params);
Object deleteDetailsInfo(Map<String, Object> params,HttpServletRequest request);
}

@ -0,0 +1,207 @@
package com.nmgs.util;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.nmgs.config.Constant;
import com.nmgs.entity.ResData;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.config.RequestConfig.Builder;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContextBuilder;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.stereotype.Component;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.security.cert.X509Certificate;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* jarcommons-lang-2.6.jarhttpclient-4.3.2.jarhttpcore-4.3.1.jarcommons-io-2.4.jar
*
* @author zhaoyb
*/
@Component
@Slf4j
public class HttpClientUtils {
public static final int CONN_TIMEOUT = 200000;
public static final int READ_TIMEOUT = 200000;
public static final String CHARSET = "UTF-8";
private static final HttpClient client;
static {
PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager();
cm.setMaxTotal(128);
cm.setDefaultMaxPerRoute(128);
client = HttpClients.custom().setConnectionManager(cm).build();
}
/**
*
*/
public static String callInterface(String jsonString, String url,String token) {
String post = null;
try {
post = postWithToken(url, jsonString,
"application/json", CHARSET, CONN_TIMEOUT, READ_TIMEOUT,token);
} catch (Exception e) {
log.error("请求接口{}失败",url,e);
}
return post;
}
public static String postWithToken(String url, String body, String mimeType, String charset, Integer connTimeout, Integer readTimeout, String token) throws Exception {
HttpPost post = new HttpPost(url);
String result;
try {
// 设置请求体
if (StringUtils.isNotBlank(body)) {
HttpEntity entity = new StringEntity(body, ContentType.create(mimeType, charset));
post.setEntity(entity);
}
// 设置请求头
post.setHeader("token",token);
// 设置超时
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(connTimeout)
.setSocketTimeout(readTimeout)
.build();
post.setConfig(config);
HttpResponse res;
HttpClient client;
if (url.startsWith("https")) {
client = createSSLInsecureClient();
} else {
client = HttpClientUtils.client;
}
res = client.execute(post);
result = IOUtils.toString(res.getEntity().getContent(), charset);
} finally {
post.releaseConnection();
}
return result;
}
/**
* SSL
*
*/
private static CloseableHttpClient createSSLInsecureClient() throws GeneralSecurityException {
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (chain, authType) -> true).build();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, new X509HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
@Override
public void verify(String host, SSLSocket ssl) {
}
@Override
public void verify(String host, X509Certificate cert) {
}
@Override
public void verify(String host, String[] cns,
String[] subjectAlts) {
}
});
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} catch (GeneralSecurityException e) {
throw e;
}
}
public static void main(String[] args) {
String url = "http://192.168.101.55:9440/wx_Advance_service/UnBind/getPage";
String token="test";
//String requestJson = "{\"pageNum\":1,\"pageSize\":10,\"wxname\":\"测试\"}";
String requestJson = "{\"pageNum\":1,\"pageSize\":10}";
//String requestJson = "{}";
String authKey="8c602c65fe6f57c4b721c5078bb8a916";
String result="";
try {
// 生成SM4密钥
String key = SM4Utils.generateKey();
String sm4Encrypt = SM4Utils.sm4Encrypt(key, authKey);
String encryptRequestJson = SM4Utils.sm4Encrypt(requestJson, key);
ResData resData = new ResData();
resData.setKey(sm4Encrypt);
resData.setData(encryptRequestJson);
String enRequestJson = JSON.toJSONString(resData);
System.out.println(enRequestJson);
String returnJson = HttpClientUtils.callInterface(enRequestJson, url, token);
System.out.println("返回数据为"+returnJson);
// 4. 解密
ResData returnResData = JSON.parseObject(returnJson, ResData.class);
if(Constant.CODE_500.equals(returnResData.getKey())){
System.out.println("接口解密失败"+returnResData);
}
String deDataJson = SM4Utils.sm4Decrypt(returnResData.getData(),
SM4Utils.sm4Decrypt(returnResData.getKey(), authKey));
System.out.println("解密后数据为"+deDataJson);
// 5. 解析成 Map
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> resultMap = mapper.readValue(deDataJson, Map.class);
List<Map<String, Object>> records = (List<Map<String, Object>>) resultMap.get("records");
Integer total = (Integer) resultMap.get("total");
// 6. 构造 Page 并回填
int pageNum = 1;
int pageSize = 10;
Page<Map<String, Object>> page = new Page<>(pageNum, pageSize);
page.setRecords(records);
page.setTotal(total);
System.out.println( page);
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,197 @@
package com.nmgs.util;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.encoders.Hex;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;
import javax.crypto.spec.SecretKeySpec;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.Security;
import java.util.Base64;
@Slf4j
public class SM4Utils {
private static final String ALGORITHM_NAME = "SM4";
private static final String ALGORITHM_ECB_PKCS5PADDING = "SM4/ECB/PKCS5Padding";
private static final int DEFAULT_KEY_SIZE = 128;
static {
if (null == Security.getProvider(BouncyCastleProvider.PROVIDER_NAME)) {
Security.addProvider(new BouncyCastleProvider());
}
}
public static String generateKey() {
String key = "";
try {
KeyGenerator kg = KeyGenerator.getInstance(ALGORITHM_NAME, BouncyCastleProvider.PROVIDER_NAME);
kg.init(DEFAULT_KEY_SIZE, new SecureRandom());
return Hex.toHexString(kg.generateKey().getEncoded());
} catch (NoSuchAlgorithmException | NoSuchProviderException e) {
log.error("生成密钥失败,报错:{}", e.getMessage(),e);
}
return key;
}
public static String sm4Encrypt(String plainString, String key) {
String cipherString = null;
try {
SecretKeySpec secretKeySpec = new SecretKeySpec(hexStringToBytes(key), ALGORITHM_NAME);
Cipher cipher = Cipher.getInstance(ALGORITHM_ECB_PKCS5PADDING, BouncyCastleProvider.PROVIDER_NAME);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] cipherBytes = cipher.doFinal(plainString.getBytes(StandardCharsets.UTF_8));
cipherString = Base64.getEncoder().encodeToString(cipherBytes);
} catch (Exception e) {
log.error("加密密失败,报错:{}", e.getMessage(),e);
}
return cipherString;
}
public static String sm4Decrypt(String cipherString, String key) {
String plainString = null;
try {
// 注册 Bouncy Castle 提供者
Security.addProvider(new BouncyCastleProvider());
// 创建密钥规范
SecretKeySpec secretKeySpec = new SecretKeySpec(hexStringToBytes(key), "SM4");
// 获取Cipher对象实例
Cipher cipher = Cipher.getInstance(ALGORITHM_ECB_PKCS5PADDING, BouncyCastleProvider.PROVIDER_NAME);
// 初始化Cipher为解密模式
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
// 获取加密byte数组
byte[] cipherBytes = cipher.doFinal(Base64.getDecoder().decode(cipherString));
// 输出为字符串,指定字符编码
plainString = new String(cipherBytes, StandardCharsets.UTF_8);
} catch (Exception e) {
log.error("解密失败,报错:{}", e.getMessage(),e);
}
return plainString;
}
public static byte[] hexStringToBytes(String hexString) {
if (hexString != null && !"".equals(hexString)) {
hexString = hexString.toUpperCase();
if (hexString.length() % 2 != 0) {
hexString = "0" + hexString;
}
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for (int i = 0; i < length; ++i) {
int pos = i * 2;
d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
} else {
return null;
}
}
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
public static void encryptFile(String inputFilePath, String outputFilePath, String key) throws Exception {
try (InputStream inputStream = new FileInputStream(inputFilePath);
OutputStream outputStream = new FileOutputStream(outputFilePath);
CipherOutputStream cipherOutputStream = new CipherOutputStream(outputStream, getCipher(key, Cipher.ENCRYPT_MODE))) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
cipherOutputStream.write(buffer, 0, bytesRead);
}
} catch (Exception e) {
log.error("文件加密失败,报错:{}", e.getMessage(),e);
throw new Exception("文件加密失败", e);
}
}
public static void decryptFile(String inputFilePath, String outputFilePath, String key) throws Exception {
try (InputStream inputStream = new FileInputStream(inputFilePath);
CipherInputStream cipherInputStream = new CipherInputStream(inputStream, getCipher(key, Cipher.DECRYPT_MODE));
OutputStream outputStream = new FileOutputStream(outputFilePath)) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = cipherInputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} catch (Exception e) {
log.error("文件解密失败,报错:{}", e.getMessage(),e);
throw new Exception("文件解密失败", e);
}
}
private static Cipher getCipher(String key, int mode) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(hexStringToBytes(key), ALGORITHM_NAME);
Cipher cipher = Cipher.getInstance(ALGORITHM_ECB_PKCS5PADDING, BouncyCastleProvider.PROVIDER_NAME);
cipher.init(mode, secretKeySpec);
return cipher;
}
public static void main(String[] args) {
//加解密文件
//try {
// String key = generateKey();
// System.out.println("生成的密钥Hex: " + key);
//
// String inputFilePath = "D:\\downTest\\DownloadFilePath\\uploadfiles\\CPCReconciliation\\downFile\\DCPC_PAY_20250418.zip";
// String encryptedFilePath = "D:\\downTest\\DownloadFilePath\\uploadfiles\\CPCReconciliation\\encryptedFile\\DCPC_PAY_20250418.zip";
//
// encryptFile(inputFilePath, encryptedFilePath, key);
// System.out.println("文件加密完成,加密后的文件路径为: " + encryptedFilePath);
//
// String receivedEncryptedFilePath = encryptedFilePath;
// String decryptedFilePath = "D:\\downTest\\DownloadFilePath\\uploadfiles\\CPCReconciliation\\decryptedFile\\DCPC_PAY_20250418.zip";
// decryptFile(receivedEncryptedFilePath, decryptedFilePath, key);
// System.out.println("文件解密完成,解密后的文件路径为: " + decryptedFilePath);
//
//} catch (Exception e) {
// e.printStackTrace();
//}
//加解密json
try {
String key = generateKey();
System.out.println("密钥Hex: " + key);
//固定密钥
String fixedKey = "8c602c65fe6f57c4b721c5078bb8a916";
String encryptedKey = sm4Encrypt(key, fixedKey);
System.out.println("密钥加密: " + encryptedKey);
// 待加密的JSON数据
String json = "[{\"name\":\"张三\",\"age\":25},{\"name\":\"李四\",\"age\":18}]";
// 加密JSON数据
String encryptedJson = sm4Encrypt(json, key);
System.out.println("加密后的JSONHex: " + encryptedJson);
//模拟数据传输
String pushJson = "{\"key\":\"" + encryptedKey + "\",\"data\":\"" + encryptedJson + "\"}";
System.out.println("推送的JSON数据: " + pushJson);
// 解密key
String decryptedKey = sm4Decrypt(encryptedKey, fixedKey);
System.out.println("密钥解密: " + decryptedKey);
// 解密JSON数据
String decryptedJson = sm4Decrypt(encryptedJson, decryptedKey);
System.out.println("解密后的JSON: " + decryptedJson);
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -47,3 +47,8 @@ DMvalidationQuery=SELECT 1
MySQLClassName=com.mysql.cj.jdbc.Driver
MySQLvalidationQuery=SELECT 1
spring.web.resources.static-locations= classpath:/static/View/
authKey=8c602c65fe6f57c4b721c5078bb8a916
interfacePrefix=https://www.btkygl.com:9660/wx_Advance_service
#interfacePrefix=http://192.168.101.55:9440/wx_Advance_service

@ -8,3 +8,4 @@
7 2025年05月20日 1.0.6 增加批量导入模板下载、批量导入功能,主键冲突时执行更新操作(只更新开始时间和结束时间)
8 2025年06月18日 1.0.7 处理批量上传时freeStartTimefreeEndTime时间格式问题
9 2025年06月19日 1.0.8 批量导入时处理免费站时字段赋值问题(如果是台格改为T,嘎鲁图改为G,台格,嘎鲁图改为T,G)
10 2025年12月04日 1.0.9 不直接连接数据库,通过韩磊接口进行数据加密解密

@ -1,61 +0,0 @@
<?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.UnBindMapper">
<select id="getPage" resultType="java.util.Map">
SELECT a.vehicleid,
a.vehiclecolor,
a.wxid,
c.wxname,
a.ismanager,
b.vehicletype,
b.phoneNumber,
b.freetype,
b.freeStartTime,
b.freeEndTime
FROM wx_vehiclewx_bind a
LEFT JOIN wx_vehiclebind b ON a.vehicleid = b.vehicleid
AND a.vehiclecolor = b.vehiclecolor
LEFT JOIN wx_vehiclewxdata c ON a.wxid = c.wxid
<where>
<if test="params.wxname!=null and params.wxname!=''">
<bind name="wxname" value="'%'+params.wxname+'%'"/>
and c.wxname like #{wxname}
</if>
<if test="params.vehicleid!=null and params.vehicleid!=''">
<bind name="vehicleid" value="'%'+params.vehicleid+'%'"/>
and a.vehicleid like #{vehicleid}
</if>
<if test="params.vehiclecolor!=null ">
and a.vehiclecolor = #{params.vehiclecolor}
</if>
<if test="params.ismanager!=null ">
and a.ismanager = #{params.ismanager}
</if>
</where>
</select>
<select id="getWXCarColorList" resultType="java.util.Map">
SELECT *
FROM atype_text
</select>
<select id="getWXCarTypeList" resultType="java.util.Map">
SELECT *
FROM type_text
</select>
<delete id="deleteData">
DELETE
FROM wx_vehiclewx_bind
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</delete>
<update id="crossData">
update wx_vehiclewx_bind set ismanager= 0
WHERE vehicleid = #{vehicleid}
AND vehiclecolor = #{vehiclecolor}
AND ismanager = #{ismanager}
AND wxid = #{wxid}
</update>
</mapper>

@ -1,30 +0,0 @@
<?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.WxPreTimesInfoMapper">
<select id="selectMyList" resultType="java.util.Map">
SELECT t.*, t1.TEXT AS platecolorname,
t2.TEXT AS typename,
t3.TEXT AS freetypename FROM wx_pretimesinfo t
LEFT JOIN atype_text t1 ON ( t1.VALUE = t.vehiclecolor )
LEFT JOIN TYPE_TEXT t2 ON ( t2.VALUE = t.vehicletype )
LEFT JOIN wx_freetype_text t3 ON ( t3.VALUE = t.freetype )
<where>
1=1
<if test="vehicleid != null and vehicleid != ''">
AND t.vehicleid = '${vehicleid}'
</if>
<if test="vehiclecolor != null">
AND t.vehiclecolor=${vehiclecolor}
</if>
</where>
ORDER BY insertTime DESC
</select>
</mapper>

@ -1,158 +0,0 @@
<?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.WxVehicleBindMapper">
<select id="selectMyPage" resultType="java.util.Map">
SELECT
t.vehicleid,
t.vehiclecolor,
t.vehicletype,
t.phoneNumber,
t.freetype,
t.freeStartTime,
t.freeEndTime,
COALESCE((SELECT SUM(t6.freeTimes) FROM wx_pretimesinfo t6 WHERE
t6.vehicleid = t.vehicleid AND t6.vehiclecolor = t.vehiclecolor ),0) freeTimes,
COALESCE((SELECT SUM(t7.freeTimes) FROM wx_pretimesinfo t7 WHERE
t7.vehicleid = t.vehicleid AND t7.vehiclecolor = t.vehiclecolor and t7.iscomplete=1),0) reviewedTimes,
COALESCE((SELECT SUM(t8.freeTimes) FROM wx_pretimesinfo t8 WHERE
t8.vehicleid = t.vehicleid AND t8.vehiclecolor = t.vehiclecolor and t8.iscomplete=0),0) notReviewedTimes,
t.ImagesID,
t.adduserid,
t.adduser,
t.vehicleNotes,
t.freesta,
(COALESCE((SELECT wx.advancefee FROM wx_vehiclebind wx WHERE
wx.vehicleid = t.vehicleid AND wx.vehiclecolor = t.vehiclecolor ),0) + (SELECT COALESCE(SUM(w.advancefee), 0) FROM wx_pretimesinfo w WHERE
w.vehicleid = t.vehicleid AND w.vehiclecolor = t.vehiclecolor)) totalAdvancefee,
(COALESCE((SELECT w1.advancefee FROM wx_vehiclebind w1 WHERE
w1.vehicleid = t.vehicleid AND w1.vehiclecolor = t.vehiclecolor and w1.iscomplete=1),0) + COALESCE((SELECT SUM(a1.advancefee) FROM wx_pretimesinfo a1 WHERE
a1.vehicleid = t.vehicleid AND a1.vehiclecolor = t.vehiclecolor and a1.iscomplete=1),0)) reviewedFee,
(COALESCE((SELECT w2.advancefee FROM wx_vehiclebind w2 WHERE
w2.vehicleid = t.vehicleid AND w2.vehiclecolor = t.vehiclecolor and w2.iscomplete=0),0) + COALESCE((SELECT SUM(a2.advancefee) FROM wx_pretimesinfo a2 WHERE
a2.vehicleid = t.vehicleid AND a2.vehiclecolor = t.vehiclecolor and a2.iscomplete=0),0)) notReviewedFee,
t.checkcode,
t.backup2,
t.backup3,
t.backup4,
t.backup5,
t.iscomplete,
t4.wxid,
t4.applyType,
t4.managerWXID,
t4.TEXT,
t1.TEXT AS platecolorname,
t2.TEXT AS typename,
t3.TEXT AS freetypename,
COALESCE(( SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor
),0) surplusTimes
FROM
wx_vehiclebind t
LEFT JOIN atype_text t1 ON ( t1.VALUE = t.vehiclecolor )
LEFT JOIN TYPE_TEXT t2 ON ( t2.VALUE = t.vehicletype )
LEFT JOIN wx_freetype_text t3 ON ( t3.VALUE = t.freetype )
LEFT JOIN wx_unbindapply t4 ON ( t4.vehicleid = t.vehicleid AND t4.vehiclecolor = t.vehiclecolor )
<where>
1=1
<if test="vehicleid != null and vehicleid != ''">
AND t.vehicleid like '%${vehicleid}%'
</if>
<if test="vehiclecolor != null">
AND t.vehiclecolor=${vehiclecolor}
</if>
</where>
ORDER BY
t.freeStartTime DESC
</select>
<select id="queryList" resultType="com.nmgs.entity.WxVehicleBindExcel">
SELECT
t.vehicleid,
t.vehiclecolor,
t.vehicletype,
t.phoneNumber,
t.freetype,
t.freeStartTime,
t.freeEndTime,
t.ImagesID,
t.adduserid,
t.adduser,
t.vehicleNotes,
CASE
WHEN freesta = 'G' THEN '嘎鲁图'
WHEN freesta = 'T' THEN '台格'
ELSE '台格,嘎鲁图'
END AS freesta,
CASE
WHEN t.freetype = 5 THEN
CONCAT(
'已审核: ',
COALESCE((SELECT SUM(t7.freeTimes) FROM wx_pretimesinfo t7 WHERE t7.vehicleid = t.vehicleid AND t7.vehiclecolor = t.vehiclecolor AND t7.iscomplete = 1), 0),
CASE
WHEN (SELECT SUM(t8.freeTimes) FROM wx_pretimesinfo t8 WHERE t8.vehicleid = t.vehicleid AND t8.vehiclecolor = t.vehiclecolor AND t8.iscomplete = 0) > 0 THEN
CONCAT(', 未审核: ', COALESCE((SELECT SUM(t8.freeTimes) FROM wx_pretimesinfo t8 WHERE t8.vehicleid = t.vehicleid AND t8.vehiclecolor = t.vehiclecolor AND t8.iscomplete = 0), 0))
ELSE ''
END,
', 合计: ',
COALESCE((SELECT SUM(t6.freeTimes) FROM wx_pretimesinfo t6 WHERE t6.vehicleid = t.vehicleid AND t6.vehiclecolor = t.vehiclecolor), 0)
)
ELSE ''
END AS freeTimes,
CASE
WHEN t.freetype = 5 THEN
COALESCE((SELECT SUM(t7.freeTimes) FROM wx_pretimesinfo t7 WHERE t7.vehicleid = t.vehicleid AND t7.vehiclecolor = t.vehiclecolor AND t7.iscomplete = 1), 0) -
COALESCE((SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor), 0)
ELSE ''
END AS applyTimes,
CASE
WHEN t.freetype = 5 OR t.freetype = 2 THEN
CONCAT(
'已审核: ',
COALESCE((SELECT w1.advancefee FROM wx_vehiclebind w1 WHERE w1.vehicleid = t.vehicleid AND w1.vehiclecolor = t.vehiclecolor AND w1.iscomplete = 1), 0) +
COALESCE((SELECT SUM(a1.advancefee) FROM wx_pretimesinfo a1 WHERE a1.vehicleid = t.vehicleid AND a1.vehiclecolor = t.vehiclecolor AND a1.iscomplete = 1), 0), '元',
CASE
WHEN (SELECT SUM(a2.advancefee) FROM wx_pretimesinfo a2 WHERE a2.vehicleid = t.vehicleid AND a2.vehiclecolor = t.vehiclecolor AND a2.iscomplete = 0) > 0 THEN
CONCAT(', 未审核: ', COALESCE((SELECT w2.advancefee FROM wx_vehiclebind w2 WHERE w2.vehicleid = t.vehicleid AND w2.vehiclecolor = t.vehiclecolor AND w2.iscomplete = 0), 0) +
COALESCE((SELECT SUM(a2.advancefee) FROM wx_pretimesinfo a2 WHERE a2.vehicleid = t.vehicleid AND a2.vehiclecolor = t.vehiclecolor AND a2.iscomplete = 0), 0), '元')
ELSE ''
END,
', 合计: ',
COALESCE((SELECT wx.advancefee FROM wx_vehiclebind wx WHERE wx.vehicleid = t.vehicleid AND wx.vehiclecolor = t.vehiclecolor), 0) +
COALESCE((SELECT SUM(w.advancefee) FROM wx_pretimesinfo w WHERE w.vehicleid = t.vehicleid AND w.vehiclecolor = t.vehiclecolor), 0), '元'
)
ELSE ''
END AS advancefee,
t.checkcode,
CASE
WHEN t.freetype = 5 AND (SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor) > 0 THEN
COALESCE((SELECT freetimes FROM wx_cross_num t5 WHERE t5.vehicleid = t.vehicleid AND t5.vehiclecolor = t.vehiclecolor), 0)
ELSE ''
END AS surplusTimes,
CASE
WHEN t.iscomplete = 0 THEN '未审核'
WHEN t.iscomplete = 1 THEN '通过'
WHEN t.iscomplete = 2 THEN '未通过'
ELSE '其他状态'
END AS iscomplete,
t1.TEXT AS platecolorname,
t2.TEXT AS typename,
t3.TEXT AS freetypename
FROM
wx_vehiclebind t
LEFT JOIN
atype_text t1 ON t1.VALUE = t.vehiclecolor
LEFT JOIN
TYPE_TEXT t2 ON t2.VALUE = t.vehicletype
LEFT JOIN
wx_freetype_text t3 ON t3.VALUE = t.freetype
${whereSql}
ORDER BY
t.freeStartTime DESC
</select>
</mapper>

@ -47,3 +47,8 @@ DMvalidationQuery=SELECT 1
MySQLClassName=com.mysql.cj.jdbc.Driver
MySQLvalidationQuery=SELECT 1
spring.web.resources.static-locations= classpath:/static/View/
authKey=8c602c65fe6f57c4b721c5078bb8a916
interfacePrefix=https://www.btkygl.com:9660/wx_Advance_service
#interfacePrefix=http://192.168.101.55:9440/wx_Advance_service

@ -0,0 +1,11 @@
序号 日期 版本号 说明
1 2023年11月27日 1.0.0 初始版本号
2 2023年11月29日 1.0.1 增加微信解绑申请操作
3 2024年04月16日 1.0.2 增加使用次数及剩余次数
4 2024年07月02日 1.0.3 优化查询语句
5 2024年10月10日 1.0.4 增加解除绑定页面
6 2025年03月03日 1.0.5 增加预存明细,预存剩余次数不从流水中查询,增加预存追加,优化相关逻辑等
7 2025年05月20日 1.0.6 增加批量导入模板下载、批量导入功能,主键冲突时执行更新操作(只更新开始时间和结束时间)
8 2025年06月18日 1.0.7 处理批量上传时freeStartTimefreeEndTime时间格式问题
9 2025年06月19日 1.0.8 批量导入时处理免费站时字段赋值问题(如果是台格改为T,嘎鲁图改为G,台格,嘎鲁图改为T,G)
10 2025年12月04日 1.0.9 不直接连接数据库,通过韩磊接口进行数据加密解密

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

Loading…
Cancel
Save