lifuquan 1 年之前
當前提交
8dca1d7a05

+ 19 - 0
.gitignore

@@ -0,0 +1,19 @@
+# maven项目编译输出目录
+**/target/
+**/download/
+
+# 日志文件
+**/log/
+**/logs/
+# 上传目录
+**/upload/
+
+# vscode
+**/.vscode/
+
+# idea
+**.iml
+**/.idea/
+
+# office临时文件
+**/~$*

+ 4 - 0
doc/开发文档.md

@@ -0,0 +1,4 @@
+# 开发文档
+
+## 需要确认的问题
+

+ 79 - 0
pom.xml

@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-parent</artifactId>
+        <version>2.6.14</version>
+        <relativePath />
+    </parent>
+
+    <groupId>org.example</groupId>
+    <artifactId>tsl-data</artifactId>
+    <version>2.0-SNAPSHOT</version>
+
+    <packaging>jar</packaging>
+
+    <properties>
+        <!-- 跳过测试代码 -->
+        <skipTests>true</skipTests>
+        <!-- 指定java的版本 -->
+        <java.version>1.8</java.version>
+        <!-- 文件拷贝时的编码 -->
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <!-- 指定maven-compiler-plugin的配置属性开始 -->
+        <!-- 编译时的编码 -->
+        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
+        <!-- 指定编译的版本 -->
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
+        <!-- 指定maven-compiler-plugin的配置属性结束 -->
+    </properties>
+
+    <dependencies>
+        <!-- cache-starter -->
+        <dependency>
+            <groupId>com.nokia</groupId>
+            <artifactId>cache-starter</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <!-- postgresql驱动,版本由spring-boot-parent指定 -->
+        <dependency>
+            <groupId>org.postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+        </dependency>
+        <!-- spring-boot-starter-jdbc -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jdbc</artifactId>
+        </dependency>
+        <!-- spring-boot-starter-data-jpa -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+        <!-- spring-boot-starter-web -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <!-- spring-boot-starter-test -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <!--lombok-->
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+</project>

+ 14 - 0
src/main/java/com/nokia/tsl_data/TslDataApplication.java

@@ -0,0 +1,14 @@
+package com.nokia.tsl_data;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
+
+@SpringBootApplication
+@EnableJpaAuditing
+public class TslDataApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(TslDataApplication.class, args);
+    }
+}

+ 26 - 0
src/main/java/com/nokia/tsl_data/config/WorkFlowJdbcTemplateConfig.java

@@ -0,0 +1,26 @@
+package com.nokia.tsl_data.config;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+/**
+ * 注入工作流查询专用的workFlowJdbcTemplate
+ */
+@Configuration
+public class WorkFlowJdbcTemplateConfig {
+
+    /**
+     * 连接到工作流数据库的jdbcTemplate
+     */
+    @Bean("workFlowJdbcTemplate")
+    public JdbcTemplate jdbcTemplate() {
+        HikariConfig config = new HikariConfig();
+        config.setJdbcUrl("jdbc:postgresql://192.168.70.136:9999/flow_hb?characterEncoding=utf8");
+        config.setUsername("flow_web");
+        config.setPassword("Richr00t");
+        return new JdbcTemplate(new HikariDataSource(config));
+    }
+}

+ 9 - 0
src/main/java/com/nokia/tsl_data/dao/SysDataDictionaryDao.java

@@ -0,0 +1,9 @@
+package com.nokia.tsl_data.dao;
+
+import com.nokia.tsl_data.entity.SysDataDictionary;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface SysDataDictionaryDao extends JpaRepository<SysDataDictionary, Long> {
+}

+ 46 - 0
src/main/java/com/nokia/tsl_data/dao/WorkFlowDao.java

@@ -0,0 +1,46 @@
+package com.nokia.tsl_data.dao;
+
+import com.nokia.tsl_data.entity.SysDataDictionary;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Component;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
+/**
+ * 从
+ */
+@Component
+public class WorkFlowDao {
+
+    private final JdbcTemplate jdbcTemplate;
+
+    public WorkFlowDao(@Qualifier("workFlowJdbcTemplate") JdbcTemplate jdbcTemplate) {
+        this.jdbcTemplate = jdbcTemplate;
+    }
+
+    public List<SysDataDictionary> findSysDataDictionaryForCity() {
+        String sql = "select id, name, type_code from sys_data_dictionary sdd where type_code = 'city'";
+        return jdbcTemplate.query(sql, new SysDataDictionaryRowMapper());
+    }
+
+    public List<SysDataDictionary> findSysDataDictionaryForRegion() {
+        String sql = "select id, name, type_code from sys_data_dictionary sdd where type_code = 'region'";
+        return jdbcTemplate.query(sql, new SysDataDictionaryRowMapper());
+    }
+
+    private static class SysDataDictionaryRowMapper implements RowMapper<SysDataDictionary> {
+
+        @Override
+        public SysDataDictionary mapRow(ResultSet rs, int rowNum) throws SQLException {
+            SysDataDictionary sysDataDictionary = new SysDataDictionary();
+            sysDataDictionary.setWorkFlowId(rs.getString("id"));
+            sysDataDictionary.setWorkFlowTypeCode(rs.getString("type_code"));
+            sysDataDictionary.setWorkFlowName(rs.getString("name"));
+            return sysDataDictionary;
+        }
+    }
+}

+ 41 - 0
src/main/java/com/nokia/tsl_data/entity/SysDataDictionary.java

@@ -0,0 +1,41 @@
+package com.nokia.tsl_data.entity;
+
+import lombok.Data;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import javax.persistence.*;
+import java.time.Instant;
+
+@Data
+@Entity
+@EntityListeners(AuditingEntityListener.class)
+@Table(name = "sys_data_dictionary", schema = "tsl_data")
+public class SysDataDictionary {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "work_flow_id", columnDefinition = "varchar(32)")
+    private String workFlowId;
+
+    @Column(name = "work_flow_type_code", columnDefinition = "varchar(32)")
+    private String workFlowTypeCode;
+
+    @Column(name = "work_flow_name", columnDefinition = "varchar(100)")
+    private String workFlowName;
+
+    @Column(name = "type_name", columnDefinition = "varchar(32)")
+    private String typeName;
+
+    @Column(name = "name", columnDefinition = "varchar(100)")
+    private String name;
+
+    @CreatedDate
+    private Instant createDate;
+
+    @LastModifiedDate
+    private Instant lastUpdateDate;
+}

+ 18 - 0
src/main/java/com/nokia/tsl_data/entity/WorkFlowBasicData.java

@@ -0,0 +1,18 @@
+package com.nokia.tsl_data.entity;
+
+/**
+ * 数据源是工单流程的flow_form_basic表 码表 sys_data_dictionary
+ */
+public class WorkFlowBasicData {
+
+    private Long id;
+
+    // 客服工单号 唯一
+    private String kfsn;
+
+    // 归属地市
+    private String city;
+
+    // 归属区县
+    private String region;
+}

+ 7 - 0
src/main/java/com/nokia/tsl_data/service/TslDataService.java

@@ -0,0 +1,7 @@
+package com.nokia.tsl_data.service;
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class TslDataService {
+}

+ 11 - 0
src/main/java/com/nokia/tsl_data/service/WorkFlowService.java

@@ -0,0 +1,11 @@
+package com.nokia.tsl_data.service;
+
+import org.springframework.stereotype.Service;
+
+/**
+ * 用于所有查询工单流程的任务
+ */
+@Service
+public class WorkFlowService {
+
+}

+ 39 - 0
src/main/resources/application.yml

@@ -0,0 +1,39 @@
+server:
+  port: 22222
+
+common:
+  util:
+    cache:
+      enable: true
+
+cache:
+  type: redis
+  time-to-live-expiration: 2
+
+Spring:
+  profiles:
+    active: dev
+  jpa:
+    hibernate:
+      ddl-auto: update
+
+logging:
+  level:
+    org:
+      hibernate:
+        SQL: DEBUG  # 开启SQL的log 这里需要设置为DEBUG
+        type:
+          descriptor:
+            sql:
+              BasicBinder: TRACE  # 开启SQL的参数记录 这里需要设置为TRACE
+    com:
+      nokia: DEBUG
+
+---
+spring:
+  profiles: dev
+  datasource:
+    driver-class-name: org.postgresql.Driver
+    url: jdbc:postgresql://192.168.10.9:5432/sqmmt
+    username: postgres
+    password: Richr00t#

+ 71 - 0
src/main/resources/logback-spring.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <property name="PATH" value="./log"/>
+    <!-- 用于在console输出日志 -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%thread] %X{traceId} %logger:%line %msg%n</Pattern>
+            <!-- 使用系统默认的编码方式 -->
+            <!-- <charset>gbk</charset> -->
+        </encoder>
+    </appender>
+    <!-- 用于写入日志文件 -->
+    <appender name="TRACE_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${PATH}/lfq-n100-trace.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!-- 每天切换日志文件 -->
+            <fileNamePattern>${PATH}/tsl_data_trace.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 单个文件最大值,超过会切换新的日志文件,此配置最大不超过20GB -->
+            <maxFileSize>100MB</maxFileSize>
+            <!-- 最多保存60天日志 -->
+            <maxHistory>60</maxHistory>
+            <!-- 最大占用20GB空间 -->
+            <totalSizeCap>20GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%thread] %X{traceId} %logger:%line %msg%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!-- 错误日志写入文件 -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${PATH}/tsl_data_error.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <!-- 每天切换日志文件 -->
+            <fileNamePattern>${PATH}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 单个文件最大值,超过会切换新的日志文件,此配置最大不超过20GB -->
+            <maxFileSize>100MB</maxFileSize>
+            <!-- 最多保存60天日志 -->
+            <maxHistory>60</maxHistory>
+            <!-- 最大占用20GB空间 -->
+            <totalSizeCap>20GB</totalSizeCap>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%d{YYYY-MM-dd HH:mm:ss.SSS} %-5level [%thread] %X{traceId} %logger:%line %msg%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 错误日志仅保存ERROR级别 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 1. 输出SQL 到控制台和文件-->
+    <logger name="org.hibernate.SQL" additivity="false" level="DEBUG">
+        <appender-ref ref="TRACE_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+        <appender-ref ref="STDOUT"/>
+    </logger>
+    <!-- 2. 输出SQL 的参数到控制台和文件-->
+    <logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false" level="TRACE">
+        <appender-ref ref="TRACE_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+        <appender-ref ref="STDOUT"/>
+    </logger>
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="TRACE_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>

+ 38 - 0
src/test/java/com/nokia/tsl_data/TslDataApplicationTest.java

@@ -0,0 +1,38 @@
+package com.nokia.tsl_data;
+
+import com.nokia.tsl_data.dao.SysDataDictionaryDao;
+import com.nokia.tsl_data.dao.WorkFlowDao;
+import com.nokia.tsl_data.entity.SysDataDictionary;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.List;
+
+@SpringBootTest
+class TslDataApplicationTest {
+
+
+    @Autowired(required = false)
+    private WorkFlowDao workFlowDao;
+
+    @Autowired
+    private SysDataDictionaryDao sysDataDictionaryDao;
+
+
+    @Test
+    void test() {
+        List<SysDataDictionary> sysDataDictionaryForCity = workFlowDao.findSysDataDictionaryForCity();
+        System.out.println(sysDataDictionaryForCity);
+        sysDataDictionaryDao.saveAll(sysDataDictionaryForCity);
+    }
+
+    @Test
+    void test2() {
+        List<SysDataDictionary> sysDataDictionaryForRegion = workFlowDao.findSysDataDictionaryForRegion();
+        for (SysDataDictionary sysDataDictionary : sysDataDictionaryForRegion) {
+            System.out.println(sysDataDictionary);
+        }
+    }
+
+}