Sfoglia il codice sorgente

springboot基本环境

jiayi 1 anno fa
commit
7ed2ad772d

+ 75 - 0
pom.xml

@@ -0,0 +1,75 @@
+<?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>
+
+    <groupId>org.example</groupId>
+    <artifactId>AeccDataApi</artifactId>
+    <version>1.0-SNAPSHOT</version>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.7.13</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <!-- Springboot web模块-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <!-- logback核心组件 -->
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+            <version>2.3.5.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.78</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.4.0</version>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.30</version>
+        </dependency>
+
+        <!-- SQL Server -->
+        <dependency>
+            <groupId>com.microsoft.sqlserver</groupId>
+            <artifactId>mssql-jdbc</artifactId>
+            <version>8.4.1.jre8</version>
+        </dependency>
+
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 17 - 0
src/main/java/com/AeccApiApplication.java

@@ -0,0 +1,17 @@
+package com;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
+
+/**
+ * @author 13491
+ */
+@SpringBootApplication
+@MapperScan("com.handler.mapper")
+public class AeccApiApplication {
+    public static void main(String[] args) {
+        ConfigurableApplicationContext applicationContext = SpringApplication.run(AeccApiApplication.class, args);
+    }
+}

+ 62 - 0
src/main/java/com/handler/controller/AeccDataHandlerController.java

@@ -0,0 +1,62 @@
+package com.handler.controller;
+
+import com.handler.entity.DataInfo;
+import com.handler.service.AeccDataHandlerService;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 角色监控关联Controller
+ *
+ * @author jy
+ * @date 2023-09-19
+ */
+@RestController
+@RequestMapping("/application")
+@Slf4j
+public class AeccDataHandlerController {
+    @Autowired
+    private AeccDataHandlerService aeccDataHandlerService;
+
+    /**
+     * 查询对应uuid的等待时长、振铃时长
+     */
+    @GetMapping("/getTimeByUuid")
+    public DataInfo getTimeByUuid(String uuid) {
+        log.info("开始查询uuid为{}的等待时长、振铃时长", uuid);
+        DataInfo dataInfo = aeccDataHandlerService.getTimeByCallId(uuid);
+        if (dataInfo != null) {
+            log.info("uuid为{}的等待时长为{}、振铃时长为{}", uuid, dataInfo.getWaitingDuration(), dataInfo.getRingingDuration());
+        } else {
+            log.info("uuid为{}不存在通话", uuid);
+        }
+        return dataInfo;
+    }
+
+    /**
+    * @Description: 查询对应工号的技能组
+    * @Param: [agentId]
+    * @return: java.util.List<java.lang.String>
+    * @Author: jy
+    * @Date: 2024/1/29 10:49
+    */
+    @GetMapping("/getSkillByAgentId")
+    public List<String> getSkillByAgentId(String agentId) {
+        log.info("开始查询工号为为{}的技能组", agentId);
+        List<String> skillList = new ArrayList<>();
+        skillList = aeccDataHandlerService.getSkillByAgentId(agentId);
+        if (skillList != null) {
+            log.info("agentId{}的技能组为{}", agentId, skillList);
+        } else {
+            log.info("agentId的{}技能组不存在", agentId);
+        }
+        return skillList;
+    }
+}

+ 12 - 0
src/main/java/com/handler/entity/DataInfo.java

@@ -0,0 +1,12 @@
+package com.handler.entity;
+
+import lombok.Data;
+
+/**
+ * @author 13491
+ */
+@Data
+public class DataInfo {
+    private String ringingDuration;
+    private String waitingDuration;
+}

+ 20 - 0
src/main/java/com/handler/mapper/AeccDataHandlerMapper.java

@@ -0,0 +1,20 @@
+package com.handler.mapper;
+
+import com.handler.entity.DataInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @ClassName AeccDataHandlerMapper
+ * @Description TODO
+ * @Author jy
+ * @Date 2023/11/14 10:18
+ * @Version 1.0
+ */
+@Mapper
+public interface AeccDataHandlerMapper {
+    DataInfo getTimeByCallId(String callId);
+
+    List<String> getSkillByAgentId(String agentId);
+}

+ 18 - 0
src/main/java/com/handler/service/AeccDataHandlerService.java

@@ -0,0 +1,18 @@
+package com.handler.service;
+
+import com.handler.entity.DataInfo;
+
+import java.util.List;
+
+/**
+ * @ClassName AeccDataHandlerService
+ * @Description TODO
+ * @Author jy
+ * @Date 2023/11/14 10:19
+ * @Version 1.0
+ */
+public interface AeccDataHandlerService {
+    DataInfo getTimeByCallId(String callId);
+
+    List<String> getSkillByAgentId(String agentId);
+}

+ 33 - 0
src/main/java/com/handler/service/Impl/AeccDataHandlerServiceImpl.java

@@ -0,0 +1,33 @@
+package com.handler.service.Impl;
+
+import com.handler.entity.DataInfo;
+import com.handler.mapper.AeccDataHandlerMapper;
+import com.handler.service.AeccDataHandlerService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @ClassName AeccDataHandlerServiceImpl
+ * @Description TODO
+ * @Author jy
+ * @Date 2023/11/14 10:20
+ * @Version 1.0
+ */
+@Service
+public class AeccDataHandlerServiceImpl implements AeccDataHandlerService {
+    @Autowired
+    private AeccDataHandlerMapper aeccDataHandlerMapper;
+    @Override
+    public DataInfo getTimeByCallId(String callId) {
+        DataInfo dataInfo = aeccDataHandlerMapper.getTimeByCallId(callId);
+        return dataInfo;
+    }
+
+    @Override
+    public List<String> getSkillByAgentId(String agentId) {
+        List<String> skillByAgentId = aeccDataHandlerMapper.getSkillByAgentId(agentId);
+        return skillByAgentId;
+    }
+}

+ 13 - 0
src/main/resources/application.properties

@@ -0,0 +1,13 @@
+server.port=10075
+# mybatis 配置
+mybatis.type-aliases-package=com.handler.springbt_mybatis_sqlserver.entity
+mybatis.mapper-locations=classpath:mapper/*.xml
+mybatis.configuration.map-underscore-to-camel-case=true
+spring.main.allow-circular-references=true
+## -------------------------------------------------
+
+## SqlServer 配置
+spring.datasource.url=jdbc:sqlserver://192.168.11.23:1433;database=AECC
+spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
+spring.datasource.username=sa
+spring.datasource.password=1qaz@WSX

+ 74 - 0
src/main/resources/logback.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <!-- 日志存放路径 -->
+    <property name="log.path" value="logs"/>
+    <!-- 日志输出格式 -->
+    <property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n"/>
+
+    <!-- 控制台输出 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+    </appender>
+
+    <!-- 系统日志输出 -->
+    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/info.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/error.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 系统模块日志级别控制  -->
+    <logger name="com.ruoyi" level="info"/>
+    <!-- Spring日志级别控制  -->
+    <logger name="org.springframework" level="warn"/>
+
+    <root level="info">
+        <appender-ref ref="console"/>
+    </root>
+
+    <!--系统操作日志-->
+    <root level="info">
+        <appender-ref ref="file_info"/>
+        <appender-ref ref="file_error"/>
+    </root>
+</configuration>

+ 80 - 0
src/main/resources/mapper/AeccDataHandlerMapper.xml

@@ -0,0 +1,80 @@
+<?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.handler.mapper.AeccDataHandlerMapper">
+
+    <select id="getTimeByCallId" resultType="com.handler.entity.DataInfo">
+        select ANSWER_WAIT_TIME AS ringingDuration, ALL_WAIT_TIME AS waitingDuration
+        FROM v_SuperviseCallInRecord
+        WHERE CALLID = #{callId}
+    </select>
+
+    <select id="getSkillByAgentId" resultType="string">
+        SELECT
+        s.NAME
+        FROM
+        (SELECT skill =VALUE FROM Agent UNPIVOT (VALUE
+        FOR ATTRIBUTE IN (
+        [Skill_1_ID],
+        [Skill_2_ID],
+        [Skill_3_ID],
+        [Skill_4_ID],
+        [Skill_5_ID],
+        [Skill_6_ID],
+        [Skill_7_ID],
+        [Skill_8_ID],
+        [Skill_9_ID],
+        [Skill_10_ID],
+        [Skill_11_ID],
+        [Skill_12_ID],
+        [Skill_13_ID],
+        [Skill_14_ID],
+        [Skill_15_ID],
+        [Skill_16_ID],
+        [Skill_17_ID],
+        [Skill_18_ID],
+        [Skill_19_ID],
+        [Skill_20_ID],
+        [Skill_21_ID],
+        [Skill_22_ID],
+        [Skill_23_ID],
+        [Skill_24_ID],
+        [Skill_25_ID],
+        [Skill_26_ID],
+        [Skill_27_ID],
+        [Skill_28_ID],
+        [Skill_29_ID],
+        [Skill_30_ID],
+        [Skill_31_ID],
+        [Skill_32_ID],
+        [Skill_33_ID],
+        [Skill_34_ID],
+        [Skill_35_ID],
+        [Skill_36_ID],
+        [Skill_37_ID],
+        [Skill_38_ID],
+        [Skill_39_ID],
+        [Skill_40_ID],
+        [Skill_41_ID],
+        [Skill_42_ID],
+        [Skill_43_ID],
+        [Skill_44_ID],
+        [Skill_45_ID],
+        [Skill_46_ID],
+        [Skill_47_ID],
+        [Skill_48_ID],
+        [Skill_49_ID],
+        [Skill_50_ID]
+        )
+        ) AS UPV
+        WHERE
+        Agent = #{agentId}
+        AND
+        VALUE &lt;&gt; ''
+        ) AS temp
+        LEFT JOIN Skill s ON temp.skill= s.SKILL_ID;
+    </select>
+
+
+</mapper>