@@ -0,0 +1,34 @@ | |||||
<?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"> | |||||
<parent> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>ningda-yw-road</artifactId> | |||||
<version>1.0.0</version> | |||||
</parent> | |||||
<modelVersion>4.0.0</modelVersion> | |||||
<artifactId>ningda-generator</artifactId> | |||||
<dependencies> | |||||
<dependency> | |||||
<groupId>com.baomidou</groupId> | |||||
<artifactId>mybatis-plus-boot-starter</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.baomidou</groupId> | |||||
<artifactId>mybatis-plus-generator</artifactId> | |||||
<version>${mybatis.plus.version}</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.freemarker</groupId> | |||||
<artifactId>freemarker</artifactId> | |||||
</dependency> | |||||
<!--Mysql数据库驱动--> | |||||
<dependency> | |||||
<groupId>mysql</groupId> | |||||
<artifactId>mysql-connector-java</artifactId> | |||||
</dependency> | |||||
</dependencies> | |||||
</project> |
@@ -0,0 +1,65 @@ | |||||
package com.ningdatech.generator.config; | |||||
import com.baomidou.mybatisplus.generator.FastAutoGenerator; | |||||
import com.baomidou.mybatisplus.generator.config.OutputFile; | |||||
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; | |||||
import java.util.Collections; | |||||
/** | |||||
* @description: 自动生成code代码 | |||||
* @author: liushuai | |||||
* @date: 2022/3/25 14:20 | |||||
*/ | |||||
public class GeneratorCodeConfig { | |||||
private static final String PATH_LXX = "/Users/LiuXinXin/IdeaProjects/car-manage/ningda-car-api/src/main/java"; | |||||
private static final String PATH_YYD = "/Users/wendy/coding/java/car-manage/ningda-car-api/src/main/java"; | |||||
private static final String PATH_LS = "/Users/qinxianyun/Documents/qin/ningdatech/secret-file-manage/ningda-api/src/main/java"; | |||||
private static final String PATH_ZPF = "D:\\ningda\\car-manage\\ningda-car-api\\src\\main\\java"; | |||||
//private static final String PATH_CMM = "D:\\work\\shuiniche\\car-manage\\ningda-car-api\\src\\main\\java"; | |||||
private static final String PATH_CMM = "D:\\work\\yw-road\\nd-yw-road\\ningda-yw-api\\src\\main\\java"; | |||||
private static final String URL = "jdbc:mysql://47.98.125.47:3306/nd-yw-road?serverTimezone=Asia/Shanghai&characterEncoding=utf8&allowPublicKeyRetrieval=true&useSSL=false"; | |||||
private static final String USER_NAME = "root"; | |||||
private static final String PASSWORD = "Ndkj@1104"; | |||||
private static void generate(String author, String packageName, String path, String... tableNames) { | |||||
FastAutoGenerator.create(URL, USER_NAME, PASSWORD) | |||||
.globalConfig(builder -> { | |||||
// 设置作者 | |||||
builder.author(author) | |||||
// 开启 swagger 模式 | |||||
.enableSwagger() | |||||
// 覆盖已生成文件 | |||||
.fileOverride() | |||||
// 指定输出目录 | |||||
.outputDir(path); | |||||
}) | |||||
.packageConfig(builder -> { | |||||
// 设置父包名 | |||||
builder.parent("com.ningdatech") | |||||
// 设置父包模块名 | |||||
.moduleName("carapi." + packageName) | |||||
// 设置mapperXml生成路径 | |||||
.pathInfo(Collections.singletonMap(OutputFile.xml, | |||||
//设置自己的生成路径 | |||||
path + "/com/ningdatech/carapi/" + packageName + "/mapper")); | |||||
}) | |||||
.strategyConfig(builder -> { | |||||
builder.addTablePrefix("nd"); | |||||
// 设置需要生成的表名 | |||||
builder.addInclude(tableNames); | |||||
}) | |||||
// 使用Freemarker引擎模板,默认的是Velocity引擎模板 | |||||
.templateEngine(new FreemarkerTemplateEngine()) | |||||
.execute(); | |||||
} | |||||
public static void main(String[] args) { | |||||
//generate("PoffyZhang", "car.monitor",PATH_ZPF, "nd_vehicle_security_monitor"); | |||||
//generate("WendyYang", "irs",PATH_YYD, "nd_drivers_license"); | |||||
generate("CMM", "test",PATH_CMM, "nd_radar_original_data"); | |||||
} | |||||
} |
@@ -0,0 +1,325 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | |||||
<modelVersion>4.0.0</modelVersion> | |||||
<parent> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>ningda-yw-road</artifactId> | |||||
<version>1.0.0</version> | |||||
</parent> | |||||
<artifactId>ningda-yw-api</artifactId> | |||||
<version>1.0.0</version> | |||||
<dependencies> | |||||
<dependency> | |||||
<groupId>com.alibaba</groupId> | |||||
<artifactId>easyexcel</artifactId> | |||||
<exclusions> | |||||
<exclusion> | |||||
<groupId>org.apache.poi</groupId> | |||||
<artifactId>poi</artifactId> | |||||
</exclusion> | |||||
<exclusion> | |||||
<groupId>org.apache.poi</groupId> | |||||
<artifactId>poi-ooxml</artifactId> | |||||
</exclusion> | |||||
<exclusion> | |||||
<groupId>org.apache.poi</groupId> | |||||
<artifactId>poi-ooxml-schemas</artifactId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-web</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-test</artifactId> | |||||
<scope>test</scope> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.jxls</groupId> | |||||
<artifactId>jxls-jexcel</artifactId> | |||||
<version>1.0.6</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-openapi-signature-starter</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-jdbc</artifactId> | |||||
</dependency> | |||||
<!--实现springboot的热加载--> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-devtools</artifactId> | |||||
<optional>true</optional> | |||||
<scope>true</scope> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-basic</artifactId> | |||||
<version>1.0.0</version> | |||||
<exclusions> | |||||
<exclusion> | |||||
<groupId>org.slf4j</groupId> | |||||
<artifactId>slf4j-log4j12</artifactId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-swagger2-starter</artifactId> | |||||
<exclusions> | |||||
<exclusion> | |||||
<groupId>org.slf4j</groupId> | |||||
<artifactId>slf4j-log4j12</artifactId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
<!-- MYSQL --> | |||||
<dependency> | |||||
<groupId>mysql</groupId> | |||||
<artifactId>mysql-connector-java</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-validation</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>io.krakens</groupId> | |||||
<artifactId>java-grok</artifactId> | |||||
<version>0.1.9</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.apache.httpcomponents</groupId> | |||||
<artifactId>httpclient</artifactId> | |||||
</dependency> | |||||
<!-- 实现对 Spring Session 使用 Redis 作为数据源的自动化配置 --> | |||||
<dependency> | |||||
<groupId>org.springframework.session</groupId> | |||||
<artifactId>spring-session-data-redis</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-cache-starter</artifactId> | |||||
<version>1.0.0</version> | |||||
<exclusions> | |||||
<exclusion> | |||||
<groupId>org.slf4j</groupId> | |||||
<artifactId>slf4j-log4j12</artifactId> | |||||
</exclusion> | |||||
</exclusions> | |||||
</dependency> | |||||
<!-- mybatis plus--> | |||||
<dependency> | |||||
<groupId>com.baomidou</groupId> | |||||
<artifactId>mybatis-plus-boot-starter</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.apache.poi</groupId> | |||||
<artifactId>poi</artifactId> | |||||
<version>4.1.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.apache.poi</groupId> | |||||
<artifactId>poi-ooxml</artifactId> | |||||
<version>4.1.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.apache.tomcat.embed</groupId> | |||||
<artifactId>tomcat-embed-core</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-log-starter</artifactId> | |||||
<version>1.0.0</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.ningdatech</groupId> | |||||
<artifactId>nd-file-starter</artifactId> | |||||
<version>1.0.0</version> | |||||
</dependency> | |||||
<!-- rabbit mq --> | |||||
<!--mqtt依赖包--> | |||||
<!--mqtt依赖--> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-integration</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework.integration</groupId> | |||||
<artifactId>spring-integration-stream</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework.integration</groupId> | |||||
<artifactId>spring-integration-mqtt</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>junit</groupId> | |||||
<artifactId>junit</artifactId> | |||||
<scope>test</scope> | |||||
</dependency> | |||||
<!-- 集成Redis --> | |||||
<dependency> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-starter-data-redis</artifactId> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>com.aliyun</groupId> | |||||
<artifactId>aliyun-java-sdk-dysmsapi</artifactId> | |||||
<version>1.1.0</version> | |||||
</dependency> | |||||
<dependency> | |||||
<artifactId>nd-sms-send-starter</artifactId> | |||||
<groupId>com.ningdatech</groupId> | |||||
<version>1.0.0</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>javax.persistence</groupId> | |||||
<artifactId>javax.persistence-api</artifactId> | |||||
<version>2.2</version> | |||||
</dependency> | |||||
<!-- 导出文件为word docx格式 --> | |||||
<dependency> | |||||
<groupId>fr.opensagres.xdocreport</groupId> | |||||
<artifactId>fr.opensagres.xdocreport.core</artifactId> | |||||
<version>2.0.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>fr.opensagres.xdocreport</groupId> | |||||
<artifactId>fr.opensagres.xdocreport.document</artifactId> | |||||
<version>2.0.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>fr.opensagres.xdocreport</groupId> | |||||
<artifactId>fr.opensagres.xdocreport.template</artifactId> | |||||
<version>2.0.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>fr.opensagres.xdocreport</groupId> | |||||
<artifactId>fr.opensagres.xdocreport.document.docx</artifactId> | |||||
<version>2.0.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>fr.opensagres.xdocreport</groupId> | |||||
<artifactId>fr.opensagres.xdocreport.template.freemarker</artifactId> | |||||
<version>2.0.2</version> | |||||
</dependency> | |||||
<dependency> | |||||
<groupId>org.springframework</groupId> | |||||
<artifactId>spring-test</artifactId> | |||||
</dependency> | |||||
<!--导入导出--> | |||||
<dependency> | |||||
<groupId>cn.afterturn</groupId> | |||||
<artifactId>easypoi-base</artifactId> | |||||
</dependency> | |||||
<!-- Jedis --> | |||||
<dependency> | |||||
<groupId>redis.clients</groupId> | |||||
<artifactId>jedis</artifactId> | |||||
<version>3.7.0</version> | |||||
</dependency> | |||||
<!-- Jackson --> | |||||
<dependency> | |||||
<groupId>com.fasterxml.jackson.core</groupId> | |||||
<artifactId>jackson-databind</artifactId> | |||||
<version>2.12.3</version> | |||||
</dependency> | |||||
</dependencies> | |||||
<!-- 打包 --> | |||||
<!--配置环境的profile--> | |||||
<profiles> | |||||
<profile> | |||||
<id>dev</id> | |||||
<properties> | |||||
<!--使用${environment}获取值--> | |||||
<environment>dev</environment> | |||||
</properties> | |||||
</profile> | |||||
<profile> | |||||
<id>test</id> | |||||
<properties> | |||||
<environment>test</environment> | |||||
</properties> | |||||
</profile> | |||||
<profile> | |||||
<id>pre</id> | |||||
<properties> | |||||
<environment>pre</environment> | |||||
</properties> | |||||
</profile> | |||||
<profile> | |||||
<id>prod</id> | |||||
<properties> | |||||
<environment>prod</environment> | |||||
</properties> | |||||
</profile> | |||||
</profiles> | |||||
<build> | |||||
<resources> | |||||
<resource> | |||||
<directory>src/main/resources</directory> | |||||
<includes> | |||||
<include>**/*</include> | |||||
</includes> | |||||
</resource> | |||||
<resource> | |||||
<directory>src/main/java</directory> | |||||
<includes> | |||||
<include>**/*.xml</include> | |||||
</includes> | |||||
</resource> | |||||
<resource> | |||||
<directory>src/main/lib</directory> | |||||
<targetPath>BOOT-INF/lib/</targetPath> | |||||
<includes> | |||||
<include>**/*.jar</include> | |||||
</includes> | |||||
</resource> | |||||
<resource> | |||||
<directory>src/main/resources</directory> | |||||
<targetPath>BOOT-INF/classes/</targetPath> | |||||
</resource> | |||||
</resources> | |||||
<finalName>${project.artifactId}</finalName> | |||||
<plugins> | |||||
<plugin> | |||||
<groupId>org.springframework.boot</groupId> | |||||
<artifactId>spring-boot-maven-plugin</artifactId> | |||||
<version>2.1.12.RELEASE</version> | |||||
<configuration> | |||||
<includeSystemScope>true</includeSystemScope> | |||||
</configuration> | |||||
<executions> | |||||
<execution> | |||||
<goals> | |||||
<goal>repackage</goal> | |||||
</goals> | |||||
</execution> | |||||
</executions> | |||||
</plugin> | |||||
<!-- 跳过单元测试 --> | |||||
<plugin> | |||||
<groupId>org.apache.maven.plugins</groupId> | |||||
<artifactId>maven-surefire-plugin</artifactId> | |||||
<configuration> | |||||
<skipTests>true</skipTests> | |||||
</configuration> | |||||
</plugin> | |||||
</plugins> | |||||
</build> | |||||
</project> |
@@ -0,0 +1,32 @@ | |||||
package com.ningdatech.carapi; | |||||
import org.mybatis.spring.annotation.MapperScan; | |||||
import org.springframework.boot.SpringApplication; | |||||
import org.springframework.boot.autoconfigure.SpringBootApplication; | |||||
import org.springframework.context.annotation.EnableAspectJAutoProxy; | |||||
import org.springframework.context.annotation.Import; | |||||
import org.springframework.scheduling.annotation.EnableAsync; | |||||
import org.springframework.scheduling.annotation.EnableScheduling; | |||||
import org.springframework.transaction.annotation.EnableTransactionManagement; | |||||
import com.ningdatech.basic.config.DefaultAsyncTaskConfig; | |||||
/** | |||||
* @author liuxinxin | |||||
*/ | |||||
@EnableAsync | |||||
@SpringBootApplication | |||||
@MapperScan(App.MAPPER_PACKAGES) | |||||
@EnableScheduling | |||||
@Import(DefaultAsyncTaskConfig.class) | |||||
@EnableTransactionManagement | |||||
@EnableAspectJAutoProxy(exposeProxy = true) | |||||
public class App { | |||||
protected static final String MAPPER_PACKAGES = "com.ningdatech.carapi.**.mapper"; | |||||
public static void main(String[] args) { | |||||
System.setProperty("druid.mysql.usePingMethod", "false"); | |||||
SpringApplication.run(App.class, args); | |||||
} | |||||
} |
@@ -0,0 +1,72 @@ | |||||
package com.ningdatech.carapi.analysis.common; | |||||
import io.swagger.annotations.ApiModel; | |||||
import lombok.AllArgsConstructor; | |||||
import lombok.Getter; | |||||
import lombok.NoArgsConstructor; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import java.util.Objects; | |||||
/** | |||||
* @return | |||||
* @author CMM | |||||
* @since 2022/12/20 14:10 | |||||
*/ | |||||
@Getter | |||||
@AllArgsConstructor | |||||
@NoArgsConstructor | |||||
@ApiModel(value = "VehicleDangerLevelEnum", description = "车辆风险等级-枚举") | |||||
public enum DangerLevelEnum { | |||||
/** | |||||
* 风险等级 | |||||
*/ | |||||
LOW_RISK(1, "红色预警"), | |||||
INTERMEDIATE_RISK(2, "橙色预警"), | |||||
SECONDARY_RISK(3,"黄色预警"), | |||||
SENIOR_RISK(4,"蓝色预警"); | |||||
private Integer code; | |||||
private String desc; | |||||
public String getDesc() { | |||||
return desc; | |||||
} | |||||
public void setDesc(String desc) { | |||||
this.desc = desc; | |||||
} | |||||
public static String getDescByCode(Integer code) { | |||||
if(Objects.isNull(code)){ | |||||
return StringUtils.EMPTY; | |||||
} | |||||
for (DangerLevelEnum t : DangerLevelEnum.values()) { | |||||
if (code.equals(t.getCode())) { | |||||
return t.desc; | |||||
} | |||||
} | |||||
return StringUtils.EMPTY; | |||||
} | |||||
public static Integer getCodeByDesc(String desc) { | |||||
if(StringUtils.isBlank(desc)){ | |||||
return null; | |||||
} | |||||
for (DangerLevelEnum t : DangerLevelEnum.values()) { | |||||
if (desc.equals(t.getDesc())) { | |||||
return t.code; | |||||
} | |||||
} | |||||
return null; | |||||
} | |||||
public boolean eq(String val) { | |||||
return this.name().equals(val); | |||||
} | |||||
} |
@@ -0,0 +1,77 @@ | |||||
package com.ningdatech.carapi.analysis.controller; | |||||
import com.ningdatech.carapi.analysis.entity.enumeration.DangerLevel; | |||||
import com.ningdatech.carapi.analysis.entity.vo.CompanyWarnStatisticsVo; | |||||
import com.ningdatech.carapi.analysis.manage.AnalysisEvalDataViewManage; | |||||
import com.ningdatech.carapi.common.model.DataChartVo; | |||||
import com.ningdatech.carapi.common.model.MapDataVO; | |||||
import com.ningdatech.carapi.common.util.CodeUtil; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* AnalysisEvalDataViewController | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 15:24 2022/10/25 | |||||
*/ | |||||
@RestController | |||||
@RequiredArgsConstructor | |||||
@Api(tags = "分析评估-数据大屏") | |||||
@RequestMapping("/api/v1/analysis-eval/data-view") | |||||
public class AnalysisEvalDataViewController { | |||||
private final AnalysisEvalDataViewManage analysisEvalDataViewManage; | |||||
@GetMapping("/insuranceOrgStatistics/{regionId}") | |||||
@ApiOperation("保险机构车辆占比") | |||||
public List<DataChartVo> insuranceOrgStatistics(@PathVariable Long regionId) { | |||||
regionId = CodeUtil.convertRegionCodeToId(regionId); | |||||
return analysisEvalDataViewManage.insuranceOrgStatistics(regionId); | |||||
} | |||||
@GetMapping("/companyWarnStatistics/{regionId}") | |||||
@ApiOperation("企业综合预警分析") | |||||
public List<CompanyWarnStatisticsVo> companyWarnStatistics(@PathVariable Long regionId) { | |||||
regionId = CodeUtil.convertRegionCodeToId(regionId); | |||||
return analysisEvalDataViewManage.companyWarnStatistics(regionId); | |||||
} | |||||
@GetMapping("/companyWarnStatisticsByLevel") | |||||
@ApiOperation("企业红色预警") | |||||
public List<DataChartVo> companyWarnStatisticsByLevel(@RequestParam("regionId") Long regionId, | |||||
@RequestParam(value = "dangerLevel", required = false) Integer dangerLevel) { | |||||
regionId = CodeUtil.convertRegionCodeToId(regionId); | |||||
// 默认查询最低等级预警即蓝色预警 | |||||
//if (dangerLevel == null) { | |||||
// dangerLevel = DangerLevel.BLUE.getCode(); | |||||
//} | |||||
return analysisEvalDataViewManage.companyWarnStatisticsByLevel(regionId, dangerLevel); | |||||
} | |||||
@GetMapping("/carWarnStatistics/{regionId}") | |||||
@ApiOperation("车辆综合预警分析") | |||||
public List<MapDataVO> carWarnStatistics(@PathVariable Long regionId) { | |||||
regionId = CodeUtil.convertRegionCodeToId(regionId); | |||||
return analysisEvalDataViewManage.carWarnStatistics(regionId); | |||||
} | |||||
@GetMapping("/carWarnStatisticsByLevel") | |||||
@ApiOperation("车辆红色预警") | |||||
public List<DataChartVo> carWarnStatisticsByLevel(@RequestParam("regionId") Long regionId, | |||||
@RequestParam(value = "dangerLevel", required = false) Integer dangerLevel) { | |||||
regionId = CodeUtil.convertRegionCodeToId(regionId); | |||||
// 默认查询红色预警 | |||||
//if (dangerLevel == null) { | |||||
// dangerLevel = DangerLevel.RED.getCode(); | |||||
//} | |||||
return analysisEvalDataViewManage.carWarnStatisticsByLevel(regionId, dangerLevel); | |||||
} | |||||
} |
@@ -0,0 +1,61 @@ | |||||
package com.ningdatech.carapi.analysis.controller; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.carapi.analysis.entity.req.IndustryStandardsListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.IndustryStandardsSaveReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.IndustryStandardsListVo; | |||||
import com.ningdatech.carapi.analysis.manage.IndustryStandardsManage; | |||||
import com.ningdatech.carapi.user.security.auth.model.UserInfoDetails; | |||||
import com.ningdatech.carapi.user.util.LoginUserUtil; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import javax.validation.Valid; | |||||
/** | |||||
* <p> | |||||
* 前端控制器 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Api(tags = "分析评估-行业规范") | |||||
@Validated | |||||
@RestController | |||||
@RequiredArgsConstructor | |||||
@RequestMapping("/api/v1/analysis-eval/industry-standards") | |||||
public class IndustryStandardsController { | |||||
private final IndustryStandardsManage industryStandardsManage; | |||||
@GetMapping("/list") | |||||
@ApiOperation("行业规范列表") | |||||
public PageVo<IndustryStandardsListVo> industryStandardsList(@Valid IndustryStandardsListReq req) { | |||||
return industryStandardsManage.list(req); | |||||
} | |||||
@PostMapping("/save") | |||||
@ApiOperation("新增行业规范") | |||||
public void save(@Valid @RequestBody IndustryStandardsSaveReq req) { | |||||
industryStandardsManage.save(req); | |||||
} | |||||
@ApiOperation("增加下载次数") | |||||
@GetMapping("/incrementDownCount/{id}") | |||||
public void incrementDownCount(@PathVariable Long id) { | |||||
industryStandardsManage.incrementDownCount(id); | |||||
} | |||||
@ApiOperation("删除行业标准文件") | |||||
@DeleteMapping("/delete-standards") | |||||
public void deleteStandardFile(@RequestParam Long id) { | |||||
UserInfoDetails userInfoDetails = LoginUserUtil.loginUserDetail(); | |||||
Long roleId = userInfoDetails.getRoleId(); | |||||
industryStandardsManage.deleteStandardFile(id,roleId); | |||||
} | |||||
} |
@@ -0,0 +1,114 @@ | |||||
package com.ningdatech.carapi.analysis.controller; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleAccidentEvalModReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleOverSpeedEvalModReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleServiceLifeListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleViolationEvalModReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleAccidentEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleOverSpeedEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleServiceLifeListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleViolationEvalListVo; | |||||
import com.ningdatech.carapi.analysis.manage.InsuranceRiskEvalManage; | |||||
import com.ningdatech.carapi.sys.entity.enumeration.ImportTemplateEnum; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.validation.annotation.Validated; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import org.springframework.web.multipart.MultipartFile; | |||||
import javax.validation.Valid; | |||||
/** | |||||
* <p> | |||||
* 分析评估-保险风险评估 前端控制器 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Validated | |||||
@RestController | |||||
@RequiredArgsConstructor | |||||
@Api(tags = "分析评估-保险风险评估") | |||||
@RequestMapping("/api/v1/insurance-risk-eval") | |||||
public class InsuranceRiskEvalController { | |||||
private final InsuranceRiskEvalManage insuranceRiskEvalManage; | |||||
@ApiOperation("车辆使用年限列表") | |||||
@GetMapping("/vehicleServiceLifeList") | |||||
public PageVo<VehicleServiceLifeListVo> vehicleServiceLifeList(@Valid VehicleServiceLifeListReq req) { | |||||
return insuranceRiskEvalManage.vehicleServiceLifeList(req); | |||||
} | |||||
@ApiOperation("车辆违章情况列表") | |||||
@GetMapping("/vehicleViolationList") | |||||
public PageVo<VehicleViolationEvalListVo> vehicleViolationList(@Valid VehicleServiceLifeListReq req) { | |||||
return insuranceRiskEvalManage.vehicleViolationEvalList(req); | |||||
} | |||||
@ApiOperation("车辆出险情况列表") | |||||
@GetMapping("/vehicleAccidentList") | |||||
public PageVo<VehicleAccidentEvalListVo> vehicleAccidentList(@Valid VehicleServiceLifeListReq req) { | |||||
return insuranceRiskEvalManage.vehicleAccidentList(req); | |||||
} | |||||
@ApiOperation("车辆超速情况列表") | |||||
@GetMapping("/vehicleOverSPeedList") | |||||
public PageVo<VehicleOverSpeedEvalListVo> vehicleOverSpeedList(@Valid VehicleServiceLifeListReq req) { | |||||
return insuranceRiskEvalManage.vehicleOverSpeedList(req); | |||||
} | |||||
@ApiOperation("车辆违章情况修改") | |||||
@PutMapping("/modVehicleViolation") | |||||
@WebLog(value = "车辆违章情况修改", modular = "分析评估-保险风险评估") | |||||
public void modVehicleViolation(@Valid @RequestBody VehicleViolationEvalModReq req) { | |||||
insuranceRiskEvalManage.vehicleViolationEvalMod(req); | |||||
} | |||||
@ApiOperation("车辆出险情况修改") | |||||
@PutMapping("/modVehicleAccident") | |||||
@WebLog(value = "车辆出险情况修改", modular = "分析评估-保险风险评估") | |||||
public void modVehicleAccident(@Valid @RequestBody VehicleAccidentEvalModReq req) { | |||||
insuranceRiskEvalManage.vehicleAccidentEvalMod(req); | |||||
} | |||||
@ApiOperation("车辆超速情况修改") | |||||
@PutMapping("/modVehicleOverSpeed") | |||||
@WebLog(value = "车辆超速情况修改", modular = "分析评估-保险风险评估") | |||||
public void modVehicleOverSpeed(@Valid @RequestBody VehicleOverSpeedEvalModReq req) { | |||||
insuranceRiskEvalManage.vehicleOverSpeedEvalMod(req); | |||||
} | |||||
@ApiOperation("车辆违章情况删除") | |||||
@DeleteMapping("/delVehicleViolation/{id}") | |||||
@WebLog(value = "车辆违章情况删除", modular = "分析评估-保险风险评估") | |||||
public void delVehicleViolation(@PathVariable Integer id) { | |||||
insuranceRiskEvalManage.vehicleViolationEvalDel(id); | |||||
} | |||||
@ApiOperation("车辆超速情况删除") | |||||
@DeleteMapping("/delVehicleOverSpeed/{id}") | |||||
@WebLog(value = "车辆超速情况删除", modular = "分析评估-保险风险评估") | |||||
public void delVehicleOverSpeed(@PathVariable Integer id) { | |||||
insuranceRiskEvalManage.vehicleOverSpeedEvalDel(id); | |||||
} | |||||
@ApiOperation("车辆出险情况删除") | |||||
@DeleteMapping("/delVehicleAccident/{id}") | |||||
@WebLog(value = "车辆出险情况删除", modular = "分析评估-保险风险评估") | |||||
public void delVehicleAccident(@PathVariable Integer id) { | |||||
insuranceRiskEvalManage.vehicleAccidentEvalDel(id); | |||||
} | |||||
@ApiOperation("模版数据导入") | |||||
@PostMapping("/importTemplateData") | |||||
@WebLog(value = "模版数据导入", modular = "分析评估-保险风险评估") | |||||
public void importTemplateData(@RequestParam("template") ImportTemplateEnum template, MultipartFile file) { | |||||
insuranceRiskEvalManage.importTemplateData(template, file); | |||||
} | |||||
} |
@@ -0,0 +1,73 @@ | |||||
package com.ningdatech.carapi.analysis.controller; | |||||
import com.ningdatech.basic.model.IdVo; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecurityManageGradeListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecurityRiskEvalListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecurityRiskEvalSaveReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecuritySystemBuildingEvalSaveReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecurityManageGradeVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecurityManageResultEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecurityRiskEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecuritySystemBuildingEvalListVo; | |||||
import com.ningdatech.carapi.analysis.manage.SecurityAnalysisEvalManage; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import javax.validation.Valid; | |||||
/** | |||||
* <p> | |||||
* 安全管理综合评级 前端控制器 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-13 | |||||
*/ | |||||
@RestController | |||||
@RequiredArgsConstructor | |||||
@Api(tags = "分析评估-安全分析评估") | |||||
@RequestMapping("/api/v1/security/analysis-eval") | |||||
public class SecurityAnalysisEvalController { | |||||
private final SecurityAnalysisEvalManage securityAnalysisEvalManage; | |||||
@GetMapping("/smg/list") | |||||
@ApiOperation("安全管理综合评级列表") | |||||
public PageVo<SecurityManageGradeVo> listSecurityManageGrade(SecurityManageGradeListReq req) { | |||||
return securityAnalysisEvalManage.list(req); | |||||
} | |||||
@GetMapping("/sre/list") | |||||
@ApiOperation("安全责任体系分析评估列表") | |||||
public PageVo<SecurityRiskEvalListVo> listSecurityRiskEval(SecurityRiskEvalListReq req) { | |||||
return securityAnalysisEvalManage.list(req); | |||||
} | |||||
@PostMapping("/sre/save") | |||||
@ApiOperation("新增安全责任体系分析评估") | |||||
public IdVo<Integer> save(@Valid @RequestBody SecurityRiskEvalSaveReq req) { | |||||
return securityAnalysisEvalManage.save(req); | |||||
} | |||||
@GetMapping("/ibe/list") | |||||
@ApiOperation("安全制度建设分析评估列表") | |||||
public PageVo<SecuritySystemBuildingEvalListVo> listInstitutionBuildingEval(SecurityRiskEvalListReq req) { | |||||
return securityAnalysisEvalManage.listSystemBuildingEval(req); | |||||
} | |||||
@PostMapping("/ibe/save") | |||||
@ApiOperation("保存安全制度建设分析评估") | |||||
public IdVo<Integer> save(@Valid @RequestBody SecuritySystemBuildingEvalSaveReq req) { | |||||
return securityAnalysisEvalManage.save(req); | |||||
} | |||||
@GetMapping("/smre/list") | |||||
@ApiOperation("安全管理结果分析评估列表") | |||||
public PageVo<SecurityManageResultEvalListVo> listSecurityManageResultEval(SecurityRiskEvalListReq req) { | |||||
return securityAnalysisEvalManage.listSecurityManageResultEval(req); | |||||
} | |||||
} |
@@ -0,0 +1,50 @@ | |||||
package com.ningdatech.carapi.analysis.controller; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.WarnAnalysisByCarVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.WarnAnalysisByCompanyVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.WarnAnalysisByDriverVo; | |||||
import com.ningdatech.carapi.analysis.manage.WarnAnalysisManage; | |||||
import io.swagger.annotations.Api; | |||||
import io.swagger.annotations.ApiOperation; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.web.bind.annotation.GetMapping; | |||||
import org.springframework.web.bind.annotation.RequestMapping; | |||||
import org.springframework.web.bind.annotation.RestController; | |||||
/** | |||||
* <p> | |||||
* 综合预警分析 前端控制器 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@RestController | |||||
@RequiredArgsConstructor | |||||
@Api(tags = "分析评估-预警分析") | |||||
@RequestMapping("/api/v1/warn-analysis") | |||||
public class WarnAnalysisController { | |||||
private final WarnAnalysisManage warnAnalysisManage; | |||||
@ApiOperation("车辆综合预警分析列表") | |||||
@GetMapping("/listCarWarnAnalysis") | |||||
public PageVo<WarnAnalysisByCarVo> listWarnAnalysisCar(WarnAnalysisListReq req) { | |||||
return warnAnalysisManage.listCarWarnAnalysis(req); | |||||
} | |||||
@ApiOperation("企业综合预警分析列表") | |||||
@GetMapping("/listCompanyWarnAnalysis") | |||||
public PageVo<WarnAnalysisByCompanyVo> listWarnAnalysisCompany(WarnAnalysisListReq req) { | |||||
return warnAnalysisManage.listCompanyWarnAnalysis(req); | |||||
} | |||||
@ApiOperation("驾驶员综合预警分析列表") | |||||
@GetMapping("/listDriverWarnAnalysis") | |||||
public PageVo<WarnAnalysisByDriverVo> listDriverWarnAnalysis(WarnAnalysisListReq req) { | |||||
return warnAnalysisManage.listDriverWarnAnalysis(req); | |||||
} | |||||
} |
@@ -0,0 +1,54 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 行业标准 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_industry_standards") | |||||
@ApiModel(value = "IndustryStandards对象", description = "") | |||||
public class IndustryStandards implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("ID") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Long id; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("创建人") | |||||
private Long createBy; | |||||
private String name; | |||||
@ApiModelProperty("标准类型") | |||||
private Integer type; | |||||
@ApiModelProperty("文件ID") | |||||
private Long fileId; | |||||
@ApiModelProperty("下载次数") | |||||
private Integer downCount; | |||||
@ApiModelProperty("区域ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业ID") | |||||
private Long companyId; | |||||
} |
@@ -0,0 +1,62 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 安全管理综合评级 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-13 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_security_manage_grade") | |||||
@ApiModel(value = "SecurityManageGrade对象", description = "安全管理综合评级") | |||||
public class SecurityManageGrade implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("安全评级") | |||||
private String securityLevel; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer score; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
} |
@@ -0,0 +1,77 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 安全制度建设分析评估 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_security_manage_result_eval") | |||||
@ApiModel(value = "SecurityManageResultEval对象", description = "安全制度建设分析评估") | |||||
public class SecurityManageResultEval implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("出现次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("出险扣分") | |||||
private Integer dangerScore; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("死亡人数扣分") | |||||
private Integer deadScore; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("受伤人数扣分") | |||||
private Integer injuredScore; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
} |
@@ -0,0 +1,80 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 安全责任体系分析评估 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_security_risk_eval") | |||||
@ApiModel(value = "SecurityRiskEval对象", description = "安全责任体系分析评估") | |||||
public class SecurityRiskEval implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("安全承诺得分") | |||||
private Integer promiseScore; | |||||
@ApiModelProperty("安全责任得分") | |||||
private Integer riskScore; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("检查地址") | |||||
private String checkAddress; | |||||
@ApiModelProperty("检查人") | |||||
private String checkUser; | |||||
@ApiModelProperty("检查部门") | |||||
private String checkDept; | |||||
@ApiModelProperty("检查内容") | |||||
private String checkContent; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,74 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 安全制度建设分析评估 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_security_system_building_eval") | |||||
@ApiModel(value = "SecuritySystemBuildingEval对象", description = "安全制度建设分析评估") | |||||
public class SecuritySystemBuildingEval implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("检查地址") | |||||
private String checkAddress; | |||||
@ApiModelProperty("检查人") | |||||
private String checkUser; | |||||
@ApiModelProperty("检查部门") | |||||
private String checkDept; | |||||
@ApiModelProperty("检查内容") | |||||
private String checkContent; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,77 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 车辆事故情况评估 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-17 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_vehicle_accident_eval") | |||||
@ApiModel(value = "VehicleAccidentEval对象", description = "车辆事故情况评估") | |||||
public class VehicleAccidentEval implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("车辆ID") | |||||
private Long carId; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("行驶里程") | |||||
private Integer mileage; | |||||
@ApiModelProperty("累计事故次数") | |||||
private Integer accidentCount; | |||||
@ApiModelProperty("万公里事故次数") | |||||
private Integer avgAccidentCount; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,77 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 车辆超速情况评估 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-17 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_vehicle_over_speed_eval") | |||||
@ApiModel(value = "VehicleOverSpeedEval对象", description = "车辆超速情况评估") | |||||
public class VehicleOverSpeedEval implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("车辆ID") | |||||
private Long carId; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("行驶里程") | |||||
private Integer mileage; | |||||
@ApiModelProperty("累计超速次数") | |||||
private Integer overSpeedCount; | |||||
@ApiModelProperty("万公里超速次数") | |||||
private Integer avgOverSpeedCount; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,69 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDate; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 车辆使用年限 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_vehicle_service_life") | |||||
@ApiModel(value = "VehicleServiceLife对象", description = "车辆使用年限") | |||||
public class VehicleServiceLife implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车辆ID") | |||||
private Long carId; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("购置时间") | |||||
private LocalDate buyTime; | |||||
} |
@@ -0,0 +1,77 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 车辆违章情况评估 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_vehicle_violation_eval") | |||||
@ApiModel(value = "VehicleViolationEval对象", description = "车辆违章情况评估") | |||||
public class VehicleViolationEval implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("车辆ID") | |||||
private Long carId; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("行驶里程") | |||||
private Integer mileage; | |||||
@ApiModelProperty("累计违章次数") | |||||
private Integer violationCount; | |||||
@ApiModelProperty("万公里违章次数") | |||||
private Integer avgViolationCount; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,80 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 车辆综合预警分析 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_warn_analysis_car") | |||||
@ApiModel(value = "WarnAnalysisCar对象", description = "车辆综合预警分析") | |||||
public class WarnAnalysisCar implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("出现次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("车辆风险分值") | |||||
private Integer dangerScore; | |||||
@ApiModelProperty("车辆ID") | |||||
private Long carId; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("超速次数") | |||||
private Integer overSpeedCount; | |||||
@ApiModelProperty("违章次数") | |||||
private Integer violationCount; | |||||
} |
@@ -0,0 +1,71 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 企业综合预警分析 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_warn_analysis_company") | |||||
@ApiModel(value = "WarnAnalysisCompany对象", description = "企业综合预警分析") | |||||
public class WarnAnalysisCompany implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("违章次数") | |||||
private Integer violationCount; | |||||
@ApiModelProperty("出现次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
} |
@@ -0,0 +1,79 @@ | |||||
package com.ningdatech.carapi.analysis.entity; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import java.io.Serializable; | |||||
import java.time.LocalDateTime; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
/** | |||||
* <p> | |||||
* 驾驶员综合预警分析 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-11-01 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_warn_analysis_driver") | |||||
@ApiModel(value = "WarnAnalysisDriver对象", description = "驾驶员综合预警分析") | |||||
public class WarnAnalysisDriver implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("出险次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("驾驶员风险分值") | |||||
private Integer dangerScore; | |||||
@ApiModelProperty("司机ID") | |||||
private Long driverId; | |||||
@ApiModelProperty("驾驶员姓名") | |||||
private String driverName; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("超速次数") | |||||
private Integer overSpeedCount; | |||||
@ApiModelProperty("违章次数") | |||||
private Integer violationCount; | |||||
} |
@@ -0,0 +1,22 @@ | |||||
package com.ningdatech.carapi.analysis.entity.dto; | |||||
import lombok.Data; | |||||
/** | |||||
* <p> | |||||
* CompanyWarnStatisticsDto | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 16:18 2022/10/25 | |||||
*/ | |||||
@Data | |||||
public class CompanyWarnStatisticsDto { | |||||
private Integer count; | |||||
private Long regionId; | |||||
private Integer dangerLevel; | |||||
} |
@@ -0,0 +1,64 @@ | |||||
package com.ningdatech.carapi.analysis.entity.dto; | |||||
import java.math.BigDecimal; | |||||
import lombok.Data; | |||||
/** | |||||
* @author CMM | |||||
* @description | |||||
* @since 2022/11/16 17:01 | |||||
*/ | |||||
@Data | |||||
public class OutDangerImportDto { | |||||
/** | |||||
* 序号 | |||||
*/ | |||||
private Integer id; | |||||
/** | |||||
* 所属区域 | |||||
*/ | |||||
private String regionName; | |||||
/** | |||||
* 车牌号 | |||||
*/ | |||||
private String carNo; | |||||
/** | |||||
* 保险公司 | |||||
*/ | |||||
private String insureCompany; | |||||
/** | |||||
* 企业名称 | |||||
*/ | |||||
private String companyName; | |||||
/** | |||||
* 事故地点 | |||||
*/ | |||||
private String accidentAddress; | |||||
/** | |||||
* 事故时间 | |||||
*/ | |||||
private String accidentTime; | |||||
/** | |||||
* 受伤人数 | |||||
*/ | |||||
private Integer injuries; | |||||
/** | |||||
* 死亡人数 | |||||
*/ | |||||
private Integer deathToll; | |||||
/** | |||||
* 理赔金额 | |||||
*/ | |||||
private BigDecimal compensateAmount; | |||||
} |
@@ -0,0 +1,70 @@ | |||||
package com.ningdatech.carapi.analysis.entity.dto; | |||||
import lombok.Data; | |||||
/** | |||||
* <p> | |||||
* VehicleAccidentImportDto | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 11:17 2022/10/17 | |||||
*/ | |||||
@Data | |||||
public class VehicleAccidentImportDto { | |||||
/** | |||||
* 序号 | |||||
*/ | |||||
private Integer id; | |||||
/** | |||||
* 城市 | |||||
*/ | |||||
private String city; | |||||
/** | |||||
* 区(县) | |||||
*/ | |||||
private String zone; | |||||
/** | |||||
* 企业名称 | |||||
*/ | |||||
private String companyName; | |||||
/** | |||||
* 车牌号 | |||||
*/ | |||||
private String carNo; | |||||
/** | |||||
* 车架号 | |||||
*/ | |||||
private String chassisNumber; | |||||
/** | |||||
* 行驶里程 | |||||
*/ | |||||
private Integer mileage; | |||||
/** | |||||
* 累计出险次数 | |||||
*/ | |||||
private Integer accidentCount; | |||||
/** | |||||
* 万公里出险次数 | |||||
*/ | |||||
private Integer avgAccidentCount; | |||||
/** | |||||
* 风险评估 | |||||
*/ | |||||
private String riskEvaluation; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
} |
@@ -0,0 +1,70 @@ | |||||
package com.ningdatech.carapi.analysis.entity.dto; | |||||
import lombok.Data; | |||||
/** | |||||
* <p> | |||||
* VehicleOverSpeedDto | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 11:17 2022/10/17 | |||||
*/ | |||||
@Data | |||||
public class VehicleOverSpeedImportDto { | |||||
/** | |||||
* 序号 | |||||
*/ | |||||
private Integer id; | |||||
/** | |||||
* 城市 | |||||
*/ | |||||
private String city; | |||||
/** | |||||
* 区(县) | |||||
*/ | |||||
private String zone; | |||||
/** | |||||
* 企业名称 | |||||
*/ | |||||
private String companyName; | |||||
/** | |||||
* 车牌号 | |||||
*/ | |||||
private String carNo; | |||||
/** | |||||
* 车架号 | |||||
*/ | |||||
private String chassisNumber; | |||||
/** | |||||
* 行驶里程 | |||||
*/ | |||||
private Integer mileage; | |||||
/** | |||||
* 累计出险次数 | |||||
*/ | |||||
private Integer overSpeedCount; | |||||
/** | |||||
* 万公里出险次数 | |||||
*/ | |||||
private Integer avgOverSpeedCount; | |||||
/** | |||||
* 风险评估 | |||||
*/ | |||||
private String riskEvaluation; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
} |
@@ -0,0 +1,71 @@ | |||||
package com.ningdatech.carapi.analysis.entity.dto; | |||||
import lombok.Data; | |||||
/** | |||||
* <p> | |||||
* VehicleViolationImportDto | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 11:17 2022/10/17 | |||||
*/ | |||||
@Data | |||||
public class VehicleViolationImportDto { | |||||
/** | |||||
* 序号 | |||||
*/ | |||||
private Integer id; | |||||
/** | |||||
* 城市 | |||||
*/ | |||||
private String city; | |||||
/** | |||||
* 区(县) | |||||
*/ | |||||
private String zone; | |||||
/** | |||||
* 企业名称 | |||||
*/ | |||||
private String companyName; | |||||
/** | |||||
* 车牌号 | |||||
*/ | |||||
private String carNo; | |||||
/** | |||||
* 车架号 | |||||
*/ | |||||
private String chassisNumber; | |||||
/** | |||||
* 行驶里程 | |||||
*/ | |||||
private Integer mileage; | |||||
/** | |||||
* 累计违章次数 | |||||
*/ | |||||
private Integer violationCount; | |||||
/** | |||||
* 万公里违章次数 | |||||
*/ | |||||
private Integer avgViolationCount; | |||||
/** | |||||
* 风险评估 | |||||
*/ | |||||
private String riskEvaluation; | |||||
/** | |||||
* 备注 | |||||
*/ | |||||
private String remark; | |||||
} |
@@ -0,0 +1,40 @@ | |||||
package com.ningdatech.carapi.analysis.entity.enumeration; | |||||
import lombok.Getter; | |||||
import java.util.Arrays; | |||||
/** | |||||
* <p> | |||||
* DangerLevel | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 17:18 2022/10/25 | |||||
*/ | |||||
@Getter | |||||
public enum DangerLevel { | |||||
/** | |||||
* 预警 | |||||
*/ | |||||
RED(1, "红色预警"), | |||||
ORANGE(2, "橙色预警"), | |||||
YELLOW(3, "黄色预警"), | |||||
BLUE(4, "蓝色预警"); | |||||
private final Integer code; | |||||
private final String name; | |||||
DangerLevel(Integer code, String name) { | |||||
this.code = code; | |||||
this.name = name; | |||||
} | |||||
public static DangerLevel getByCode(Integer code) { | |||||
return Arrays.stream(values()) | |||||
.filter(w -> w.getCode().equals(code)) | |||||
.findFirst() | |||||
.orElseThrow(() -> new IllegalArgumentException("预警级别编码无效")); | |||||
} | |||||
} |
@@ -0,0 +1,43 @@ | |||||
package com.ningdatech.carapi.analysis.entity.enumeration; | |||||
import lombok.Getter; | |||||
/** | |||||
* <p> | |||||
* IndustryStandardsType | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:08 2022/10/15 | |||||
*/ | |||||
@Getter | |||||
public enum IndustryStandardsType { | |||||
/** | |||||
* 车属企业安全管理规范 | |||||
*/ | |||||
SAFETY_MANAGEMENT_SPECIFICATION(1), | |||||
/** | |||||
* 车辆安全设备规范 | |||||
*/ | |||||
SAFETY_EQUIPMENT_SPECIFICATION(2), | |||||
/** | |||||
* 车辆驾驶安全标准 | |||||
*/ | |||||
DRIVING_SAFETY_STANDARDS(3), | |||||
/** | |||||
* 安全生产管理人员标准 | |||||
*/ | |||||
STANDARDS_FOR_SAFETY_PRODUCTION_MANAGEMENT_PERSONNEL(4), | |||||
/** | |||||
* 驾驶员教育考核标准 | |||||
*/ | |||||
EVALUATION_CRITERIA_FOR_DRIVER_EDUCATION(5); | |||||
private final Integer code; | |||||
IndustryStandardsType(Integer code) { | |||||
this.code = code; | |||||
} | |||||
} |
@@ -0,0 +1,31 @@ | |||||
package com.ningdatech.carapi.analysis.entity.enumeration; | |||||
import lombok.Getter; | |||||
/** | |||||
* <p> | |||||
* 保险风险评估-风险等级枚举 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:59 2022/11/2 | |||||
*/ | |||||
@Getter | |||||
public enum InsuranceDangerLevel { | |||||
/** | |||||
* 风险等级 | |||||
*/ | |||||
HIGH(1, "高级风险"), | |||||
HIGH_2ND(2, "次高及风险"), | |||||
MID(3, "中级风险"), | |||||
LOW(4, "低级风险"); | |||||
private final Integer code; | |||||
private final String value; | |||||
InsuranceDangerLevel(Integer code, String value) { | |||||
this.code = code; | |||||
this.value = value; | |||||
} | |||||
} |
@@ -0,0 +1,36 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import com.ningdatech.basic.model.PagePo; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import javax.validation.constraints.NotNull; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* IndustryStandardsListReq | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:25 2022/10/15 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class IndustryStandardsListReq extends PagePo { | |||||
@NotNull(message = "行业标准类型不能为空") | |||||
@ApiModelProperty("行业规范类型:1 车属企业安全管理规范、2 车辆安全设备规范、3 车辆驾驶安全标准、4 安全生产管理人员标准、5 驾驶员教育考核标准") | |||||
private Integer type; | |||||
@ApiModelProperty("文件名称") | |||||
private String fileName; | |||||
@ApiModelProperty("开始时间") | |||||
private LocalDateTime startTime; | |||||
@ApiModelProperty("结束时间") | |||||
private LocalDateTime endTime; | |||||
} |
@@ -0,0 +1,34 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* <p> | |||||
* 行业标准新增实体 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@ApiModel(value = "行业标准新增实体") | |||||
public class IndustryStandardsSaveReq { | |||||
@ApiModelProperty("行业标准说明") | |||||
@NotBlank(message = "行业标准说明不能为空") | |||||
private String name; | |||||
@ApiModelProperty("标准类型") | |||||
@NotNull(message = "标准类型不能为空") | |||||
private Integer type; | |||||
@ApiModelProperty("文件ID") | |||||
@NotNull(message = "文件ID不能为空") | |||||
private Long fileId; | |||||
} |
@@ -0,0 +1,27 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import com.ningdatech.basic.model.PagePo; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
/** | |||||
* <p> | |||||
* SecurityManagementGradeListReq | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:56 2022/10/13 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class SecurityManageGradeListReq extends PagePo { | |||||
private Long regionId; | |||||
private Integer year; | |||||
private String securityLevel; | |||||
private String companyName; | |||||
} |
@@ -0,0 +1,55 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import cn.hutool.core.util.StrUtil; | |||||
import com.ningdatech.basic.model.PagePo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.apache.commons.lang3.tuple.Pair; | |||||
/** | |||||
* <p> | |||||
* SecurityRiskEvaluationListReq | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 09:27 2022/10/14 | |||||
*/ | |||||
@ApiModel("安全责任体系分析评估列表参数类") | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class SecurityRiskEvalListReq extends PagePo { | |||||
private Long regionId; | |||||
private Integer year; | |||||
@ApiModelProperty("总分值:格式为-XX,XX-XX,XX-") | |||||
private String scoreRange; | |||||
private String companyName; | |||||
private transient Pair<Integer, Integer> scoreRanges; | |||||
public void setScoreRange(String scoreRange) { | |||||
this.scoreRange = scoreRange; | |||||
this.setScoreRanges(); | |||||
} | |||||
private void setScoreRanges() { | |||||
if (StringUtils.isNotBlank(this.scoreRange)) { | |||||
String[] scoreArray = StrUtil.strip(scoreRange, "-").split("-"); | |||||
int indexOf = scoreRange.indexOf("-"); | |||||
if (indexOf == scoreRange.length() - 1) { | |||||
scoreRanges = Pair.of(Integer.valueOf(scoreArray[0]), null); | |||||
} else if (indexOf == 0) { | |||||
scoreRanges = Pair.of(null, Integer.valueOf(scoreArray[0])); | |||||
} else { | |||||
scoreRanges = Pair.of(Integer.valueOf(scoreArray[0]), Integer.valueOf(scoreArray[1])); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,78 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 安全责任体系分析评估 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@ApiModel("安全责任体系分析评估新增参数类") | |||||
public class SecurityRiskEvalSaveReq { | |||||
@ApiModelProperty("年度") | |||||
@NotNull(message = "考核年度不能为空") | |||||
private Integer year; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
@NotNull(message = "企业编码不能为空") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
@NotBlank(message = "企业名称不能为空") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
@NotNull(message = "综合得分不能为空") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("安全承诺得分") | |||||
@NotNull(message = "安全承诺得分不能为空") | |||||
private Integer promiseScore; | |||||
@ApiModelProperty("安全责任得分") | |||||
@NotNull(message = "安全责任得分不能为空") | |||||
private Integer riskScore; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("检查地址") | |||||
private String checkAddress; | |||||
@ApiModelProperty("检查人") | |||||
private String checkUser; | |||||
@ApiModelProperty("检查部门") | |||||
private String checkDept; | |||||
@ApiModelProperty("检查内容") | |||||
@NotBlank(message = "检查内容不能为空") | |||||
private String checkContent; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,70 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* 安全制度建设分析评估新增参数类 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@ApiModel("安全制度建设分析评估新增参数类") | |||||
public class SecuritySystemBuildingEvalSaveReq { | |||||
@ApiModelProperty("年度") | |||||
@NotNull(message = "考核年度不能为空") | |||||
private Integer year; | |||||
@ApiModelProperty("地区ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业编码") | |||||
@NotNull(message = "企业编码不能为空") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
@NotBlank(message = "企业名称不能为空") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
@NotNull(message = "综合得分不能为空") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("创建人ID") | |||||
private Long createBy; | |||||
@ApiModelProperty("创建时间") | |||||
private LocalDateTime createOn; | |||||
@ApiModelProperty("修改人ID") | |||||
private Long updateBy; | |||||
@ApiModelProperty("修改时间") | |||||
private LocalDateTime updateOn; | |||||
@ApiModelProperty("检查地址") | |||||
private String checkAddress; | |||||
@ApiModelProperty("检查人") | |||||
private String checkUser; | |||||
@ApiModelProperty("检查部门") | |||||
private String checkDept; | |||||
@ApiModelProperty("检查内容") | |||||
@NotBlank(message = "检查内容不能为空") | |||||
private String checkContent; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,41 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* <p> | |||||
* 车辆出险情况修改参数 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@ApiModel("车辆出险情况修改参数") | |||||
public class VehicleAccidentEvalModReq { | |||||
@ApiModelProperty("主键") | |||||
@NotNull(message = "id不能为空") | |||||
private Integer id; | |||||
@ApiModelProperty("车牌号") | |||||
@NotBlank(message = "车牌号不能为空") | |||||
private String carNo; | |||||
@ApiModelProperty("累计违章次数") | |||||
@NotNull(message = "累计违章次数不能为空") | |||||
private Integer accidentCount; | |||||
@ApiModelProperty("万公里出险次数") | |||||
@NotNull(message = "万公里出险次数不能为空") | |||||
private Integer avgAccidentCount; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,41 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* <p> | |||||
* 车辆超速情况修改参数 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@ApiModel("车辆超速情况修改参数") | |||||
public class VehicleOverSpeedEvalModReq { | |||||
@ApiModelProperty("主键") | |||||
@NotNull(message = "id不能为空") | |||||
private Integer id; | |||||
@ApiModelProperty("车牌号") | |||||
@NotBlank(message = "车牌号不能为空") | |||||
private String carNo; | |||||
@ApiModelProperty("累计超速次数") | |||||
@NotNull(message = "累计超速次数不能为空") | |||||
private Integer overSpeedCount; | |||||
@ApiModelProperty("万公里超速次数") | |||||
@NotNull(message = "万公里超速次数不能为空") | |||||
private Integer avgOverSpeedCount; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,42 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import com.ningdatech.basic.model.PagePo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import java.time.LocalDate; | |||||
/** | |||||
* <p> | |||||
* VehicleServiceLifeListReq | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:24 2022/10/15 | |||||
*/ | |||||
@Data | |||||
@EqualsAndHashCode(callSuper = true) | |||||
@ApiModel("车辆使用年限列表查询参数") | |||||
public class VehicleServiceLifeListReq extends PagePo { | |||||
@ApiModelProperty("车辆购置时间(开始)") | |||||
private LocalDate buyTimeStart; | |||||
@ApiModelProperty("车辆购置时间(结束)") | |||||
private LocalDate buyTimeEnd; | |||||
@ApiModelProperty("地域ID") | |||||
private Long regionId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
} |
@@ -0,0 +1,41 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
import javax.validation.constraints.NotNull; | |||||
/** | |||||
* <p> | |||||
* 车辆违章情况修改参数 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@ApiModel("车辆违章情况修改参数") | |||||
public class VehicleViolationEvalModReq { | |||||
@ApiModelProperty("主键") | |||||
@NotNull(message = "id不能为空") | |||||
private Integer id; | |||||
@ApiModelProperty("车牌号") | |||||
@NotBlank(message = "车牌号不能为空") | |||||
private String carNo; | |||||
@ApiModelProperty("累计违章次数") | |||||
@NotNull(message = "累计违章次数不能为空") | |||||
private Integer violationCount; | |||||
@ApiModelProperty("万公里违章次数") | |||||
@NotNull(message = "万公里违章次数不能为空") | |||||
private Integer avgViolationCount; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,42 @@ | |||||
package com.ningdatech.carapi.analysis.entity.req; | |||||
import com.ningdatech.basic.model.PagePo; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import lombok.EqualsAndHashCode; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* WarnAnalysisListReq | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 16:42 2022/10/14 | |||||
*/ | |||||
@Data | |||||
@ApiModel("预警分析列表查询参数") | |||||
@EqualsAndHashCode(callSuper = true) | |||||
public class WarnAnalysisListReq extends PagePo { | |||||
@ApiModelProperty("地域ID") | |||||
private Long regionId; | |||||
private List<Long> regionIds; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("驾驶员姓名") | |||||
private String driverName; | |||||
private String dataScopeSql; | |||||
} |
@@ -0,0 +1,39 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.experimental.Tolerate; | |||||
/** | |||||
* <p> | |||||
* CompanyWarnStatisticsVo | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 17:04 2022/10/25 | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
public class CompanyWarnStatisticsVo { | |||||
@Tolerate | |||||
public CompanyWarnStatisticsVo() { | |||||
} | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("企业地址") | |||||
private String companyAddress; | |||||
@ApiModelProperty("经度") | |||||
private String longitude; | |||||
@ApiModelProperty("纬度") | |||||
private String latitude; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
} |
@@ -0,0 +1,32 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import lombok.Data; | |||||
import java.time.LocalDateTime; | |||||
/** | |||||
* <p> | |||||
* IndustryStandardsListVo | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:19 2022/10/15 | |||||
*/ | |||||
@Data | |||||
public class IndustryStandardsListVo { | |||||
private String name; | |||||
private LocalDateTime createOn; | |||||
private Integer downCount; | |||||
private Long fileId; | |||||
private Long id; | |||||
private Long regionId; | |||||
private String regionName; | |||||
private Long companyId; | |||||
private String companyName; | |||||
} |
@@ -0,0 +1,40 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 安全管理综合评级列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:41 2022/10/13 | |||||
*/ | |||||
@Data | |||||
@ApiModel("安全管理综合评级列表视图类") | |||||
public class SecurityManageGradeVo { | |||||
@ApiModelProperty("所属地区") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("安全评级") | |||||
private String securityLevel; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer score; | |||||
} |
@@ -0,0 +1,66 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.baomidou.mybatisplus.annotation.IdType; | |||||
import com.baomidou.mybatisplus.annotation.TableId; | |||||
import com.baomidou.mybatisplus.annotation.TableName; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.io.Serializable; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 安全制度建设分析评估 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@TableName("nd_security_manage_result_eval") | |||||
@ApiModel(value = "SecurityManageResultEval对象", description = "安全制度建设分析评估") | |||||
public class SecurityManageResultEvalListVo implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
@ApiModelProperty("主键") | |||||
@TableId(value = "id", type = IdType.AUTO) | |||||
private Integer id; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("地区") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("企业ID") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("出险次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("出险扣分") | |||||
private Integer dangerScore; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("死亡扣分") | |||||
private Integer deadScore; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("受伤扣分") | |||||
private Integer injuredScore; | |||||
} |
@@ -0,0 +1,53 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.experimental.Tolerate; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* SecurityRiskEvaluationListVo | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:17 2022/10/14 | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
@ApiModel("安全责任分析评估列表视图类") | |||||
public class SecurityRiskEvalListVo { | |||||
@Tolerate | |||||
public SecurityRiskEvalListVo() { | |||||
} | |||||
@ApiModelProperty("所属地区") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("总分值") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("安全责任得分") | |||||
private Integer riskScore; | |||||
@ApiModelProperty("安全承诺得分") | |||||
private Integer promiseScore; | |||||
@ApiModelProperty("检查内容") | |||||
private String checkContent; | |||||
} |
@@ -0,0 +1,47 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.experimental.Tolerate; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 安全制度建设分析评估列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:17 2022/10/14 | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
@ApiModel("安全制度建设分析评估列表视图类") | |||||
public class SecuritySystemBuildingEvalListVo { | |||||
@Tolerate | |||||
public SecuritySystemBuildingEvalListVo() { | |||||
} | |||||
@ApiModelProperty("所属地区") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("年度") | |||||
private Integer year; | |||||
@ApiModelProperty("企业编码") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("总分值") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("检查内容") | |||||
private String checkContent; | |||||
} |
@@ -0,0 +1,55 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 车辆出险情况评估列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@ApiModel("车辆出险情况评估列表视图类") | |||||
public class VehicleAccidentEvalListVo { | |||||
@ApiModelProperty("主键") | |||||
private Integer id; | |||||
@ApiModelProperty("企业id") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车辆风险等级名称") | |||||
private String dangerLevelName; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("行驶里程") | |||||
private Integer mileage; | |||||
@ApiModelProperty("累计出险次数") | |||||
private Integer accidentCount; | |||||
@ApiModelProperty("地域") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("万公里出险次数") | |||||
private Integer avgAccidentCount; | |||||
} |
@@ -0,0 +1,55 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 车辆超速情况评估列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@ApiModel("车辆超速情况评估列表视图类") | |||||
public class VehicleOverSpeedEvalListVo { | |||||
@ApiModelProperty("主键") | |||||
private Integer id; | |||||
@ApiModelProperty("企业id") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车辆风险等级名称") | |||||
private String dangerLevelName; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("行驶里程") | |||||
private Integer mileage; | |||||
@ApiModelProperty("累计超速次数") | |||||
private Integer overSpeedCount; | |||||
@ApiModelProperty("地域") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("万公里超速次数") | |||||
private Integer avgOverSpeedCount; | |||||
} |
@@ -0,0 +1,60 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import lombok.experimental.Tolerate; | |||||
import java.time.LocalDate; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 车辆使用年限列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
@ApiModel("车辆使用年限列表视图类") | |||||
public class VehicleServiceLifeListVo { | |||||
@Tolerate | |||||
public VehicleServiceLifeListVo() { | |||||
} | |||||
@ApiModelProperty("主键") | |||||
private Integer id; | |||||
@ApiModelProperty("地域信息") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("企业") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("购置时间") | |||||
private LocalDate buyTime; | |||||
@ApiModelProperty("车辆使用时间") | |||||
private Integer usedTime; | |||||
@ApiModelProperty("车辆使用年限占比(报废年限)") | |||||
private Integer usedTimePercent; | |||||
} |
@@ -0,0 +1,59 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 车辆违章情况评估列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Data | |||||
@ApiModel("车辆违章情况评估列表视图类") | |||||
public class VehicleViolationEvalListVo { | |||||
@ApiModelProperty("主键") | |||||
private Integer id; | |||||
@ApiModelProperty("企业id") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("车辆风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车辆风险等级名称") | |||||
private String dangerLevelName; | |||||
@ApiModelProperty("车架号") | |||||
private String carFrameNo; | |||||
@ApiModelProperty("行驶里程") | |||||
private Integer mileage; | |||||
@ApiModelProperty("累计违章次数") | |||||
private Integer violationCount; | |||||
@ApiModelProperty("地域") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("万公里违章次数") | |||||
private Integer avgViolationCount; | |||||
@ApiModelProperty("备注") | |||||
private String remark; | |||||
} |
@@ -0,0 +1,58 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 车辆综合预警分析 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@ApiModel(value = "车辆综合预警分析列表视图类", description = "") | |||||
public class WarnAnalysisByCarVo { | |||||
@ApiModelProperty("主键") | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("企业Id") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("出险次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("车辆风险分值") | |||||
private Integer dangerScore; | |||||
@ApiModelProperty("车牌号") | |||||
private String carNo; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("超速次数") | |||||
private Integer overSpeedCount; | |||||
@ApiModelProperty("违章次数") | |||||
private Integer violationCount; | |||||
} |
@@ -0,0 +1,54 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 企业综合预警分析列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@ApiModel("企业综合预警分析列表视图类") | |||||
public class WarnAnalysisByCompanyVo { | |||||
@ApiModelProperty("主键") | |||||
private Integer id; | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("企业id") | |||||
private String companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("综合得分") | |||||
private Integer totalScore; | |||||
@ApiModelProperty("违章次数") | |||||
private Integer violationCount; | |||||
@ApiModelProperty("出险次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("车辆数") | |||||
private Integer carCount; | |||||
} |
@@ -0,0 +1,59 @@ | |||||
package com.ningdatech.carapi.analysis.entity.vo; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 驾驶员综合预警分析列表视图类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
@Data | |||||
@ApiModel("驾驶员综合预警分析列表视图类") | |||||
public class WarnAnalysisByDriverVo { | |||||
@ApiModelProperty("主键") | |||||
private Integer id; | |||||
@ApiModelProperty("地区ID") | |||||
private List<RegionDTO> regions; | |||||
@ApiModelProperty("企业id") | |||||
private Long companyId; | |||||
@ApiModelProperty("企业名称") | |||||
private String companyName; | |||||
@ApiModelProperty("受伤人数") | |||||
private Integer injuredCount; | |||||
@ApiModelProperty("死亡人数") | |||||
private Integer deadCount; | |||||
@ApiModelProperty("出险次数") | |||||
private Integer dangerCount; | |||||
@ApiModelProperty("车辆风险分值") | |||||
private Integer dangerScore; | |||||
@ApiModelProperty("驾驶员姓名") | |||||
private String driverName; | |||||
@ApiModelProperty("风险等级") | |||||
private Integer dangerLevel; | |||||
@ApiModelProperty("超速次数") | |||||
private Integer overSpeedCount; | |||||
@ApiModelProperty("违章次数") | |||||
private Integer violationCount; | |||||
} |
@@ -0,0 +1,312 @@ | |||||
package com.ningdatech.carapi.analysis.manage; | |||||
import cn.hutool.core.map.MapUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.google.common.collect.Lists; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.ningdatech.carapi.analysis.common.DangerLevelEnum; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCar; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCompany; | |||||
import com.ningdatech.carapi.analysis.entity.enumeration.DangerLevel; | |||||
import com.ningdatech.carapi.analysis.entity.vo.CompanyWarnStatisticsVo; | |||||
import com.ningdatech.carapi.analysis.service.IWarnAnalysisCarService; | |||||
import com.ningdatech.carapi.analysis.service.IWarnAnalysisCompanyService; | |||||
import com.ningdatech.carapi.common.model.DataChartVo; | |||||
import com.ningdatech.carapi.common.model.MapDataVO; | |||||
import com.ningdatech.carapi.safe.entity.NdInsureInfo; | |||||
import com.ningdatech.carapi.safe.service.INdInsureInfoService; | |||||
import com.ningdatech.carapi.sys.entity.dto.CompanyDTO; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import com.ningdatech.carapi.sys.helper.CompaniesCacheHelper; | |||||
import com.ningdatech.carapi.sys.helper.RegionsCacheHelper; | |||||
import com.ningdatech.carapi.sys.service.CompanyService; | |||||
import lombok.AllArgsConstructor; | |||||
import org.springframework.stereotype.Component; | |||||
import java.math.BigDecimal; | |||||
import java.math.RoundingMode; | |||||
import java.util.*; | |||||
import java.util.function.ToIntFunction; | |||||
import java.util.stream.Collectors; | |||||
/** | |||||
* <p> | |||||
* DataViewController | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 15:34 2022/10/25 | |||||
*/ | |||||
@Component | |||||
@AllArgsConstructor | |||||
public class AnalysisEvalDataViewManage { | |||||
private final INdInsureInfoService insureInfoService; | |||||
private final IWarnAnalysisCompanyService companyWarnAnalysisService; | |||||
private final IWarnAnalysisCarService carWarnAnalysisService; | |||||
private final RegionsCacheHelper regionsCacheHelper; | |||||
private final CompaniesCacheHelper companiesCacheHelper; | |||||
private final CompanyService companyService; | |||||
public List<DataChartVo> insuranceOrgStatistics(Long regionId) { | |||||
List<Long> childIds = regionsCacheHelper.listChildRegionId(regionId); | |||||
QueryWrapper<NdInsureInfo> query = Wrappers.query(); | |||||
query.select("count(distinct car_plate) as `count`, insure_company as groupKey"); | |||||
query.in("region_id", childIds); | |||||
query.groupBy("insure_company"); | |||||
List<Map<String, Object>> maps = insureInfoService.listMaps(query); | |||||
if (maps.isEmpty()) { | |||||
return Collections.emptyList(); | |||||
} | |||||
int total = CollUtils.sum(maps, (ToIntFunction<Map<String, Object>>) w -> Long.valueOf(w.get("count").toString()).intValue()); | |||||
return maps.stream().map(w -> { | |||||
DataChartVo vo = new DataChartVo(); | |||||
vo.setLabel(w.get("groupKey").toString()); | |||||
vo.setValue(Long.valueOf(w.get("count").toString()).intValue()); | |||||
String percent = BigDecimal.valueOf(vo.getValue() * 100) | |||||
.divide(BigDecimal.valueOf(total), 2, RoundingMode.HALF_UP) | |||||
.stripTrailingZeros().toPlainString(); | |||||
vo.setPercent(percent); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
} | |||||
public List<CompanyWarnStatisticsVo> companyWarnStatistics(Long regionId) { | |||||
List<Long> regionIds = regionsCacheHelper.listChildRegionId(regionId); | |||||
QueryWrapper<WarnAnalysisCompany> query = Wrappers.query(); | |||||
query.select("company_id companyId, danger_level dangerLevel"); | |||||
query.in("region_id", regionIds); | |||||
List<Map<String, Object>> analysisCompanies = companyWarnAnalysisService.listMaps(query); | |||||
if (analysisCompanies.size() == 0) { | |||||
return Collections.emptyList(); | |||||
} | |||||
List<CompanyWarnStatisticsVo> result = new ArrayList<>(); | |||||
analysisCompanies.forEach(w -> { | |||||
CompanyDTO company = companiesCacheHelper.getById(MapUtil.getLong(w, "companyId")); | |||||
if (Objects.isNull(company)) { | |||||
return; | |||||
} | |||||
CompanyWarnStatisticsVo vo = CompanyWarnStatisticsVo.builder() | |||||
.companyAddress(company.getAddress()) | |||||
.companyName(company.getName()) | |||||
.dangerLevel(MapUtil.getInt(w, "dangerLevel")) | |||||
.longitude(company.getLongitude()) | |||||
.latitude(company.getLatitude()) | |||||
.build(); | |||||
result.add(vo); | |||||
}); | |||||
return result; | |||||
} | |||||
public List<MapDataVO> carWarnStatistics(Long regionId) { | |||||
List<Long> regionIds = regionsCacheHelper.listChildRegionId(regionId); | |||||
QueryWrapper<WarnAnalysisCar> query = Wrappers.query(); | |||||
query.select("count(1) `count`, region_id regionId"); | |||||
query.in("region_id", regionIds); | |||||
query.groupBy("region_id"); | |||||
List<Map<String, Object>> carAnalysis = carWarnAnalysisService.listMaps(query); | |||||
if (carAnalysis.size() == 0) { | |||||
return Collections.emptyList(); | |||||
} | |||||
Map<RegionDTO, List<Long>> childrenMap = regionsCacheHelper.getChildrenMap(regionId, true); | |||||
List<MapDataVO> result = new ArrayList<>(); | |||||
childrenMap.forEach((k, v) -> { | |||||
MapDataVO mapData = MapDataVO.builder() | |||||
.regionName(k.getRegionName()) | |||||
.regionCode(k.getRegionCode()) | |||||
.regionId(k.getId()) | |||||
.value(0) | |||||
.build(); | |||||
carAnalysis.removeIf(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
mapData.setValue(MapUtil.getInt(w, "count") + mapData.getValue()); | |||||
return true; | |||||
} | |||||
return false; | |||||
}); | |||||
result.add(mapData); | |||||
}); | |||||
return result; | |||||
} | |||||
private <T> QueryWrapper<T> buildCountQueryGroupByRegion(List<Long> regionIds, Integer dangerLevel) { | |||||
QueryWrapper<T> query = Wrappers.query(); | |||||
query.select("count(1) as `count`, region_id as regionId"); | |||||
query.in("region_id", regionIds); | |||||
query.eq(Objects.nonNull(dangerLevel),"danger_level", dangerLevel); | |||||
query.groupBy("region_id"); | |||||
return query; | |||||
} | |||||
public List<DataChartVo> companyWarnStatisticsByLevel(Long regionId, Integer dangerLevel) { | |||||
List<DataChartVo> result = new ArrayList<>(); | |||||
List<Long> regionIds = regionsCacheHelper.listChildRegionId(regionId); | |||||
//QueryWrapper<WarnAnalysisCompany> query = buildCountQueryGroupByRegion(regionIds, dangerLevel); | |||||
//List<Map<String, Object>> analysisCompanies = companyWarnAnalysisService.listMaps(query); | |||||
// 获取红色预警的数据 | |||||
QueryWrapper<WarnAnalysisCompany> queryRed = buildCountQueryGroupByRegion(regionIds, DangerLevel.RED.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesRed = companyWarnAnalysisService.listMaps(queryRed); | |||||
// 获取橙色预警的数据 | |||||
QueryWrapper<WarnAnalysisCompany> queryOrange = buildCountQueryGroupByRegion(regionIds, DangerLevel.ORANGE.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesOrange = companyWarnAnalysisService.listMaps(queryOrange); | |||||
// 获取黄色预警的数据 | |||||
QueryWrapper<WarnAnalysisCompany> queryYellow = buildCountQueryGroupByRegion(regionIds, DangerLevel.YELLOW.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesYellow = companyWarnAnalysisService.listMaps(queryYellow); | |||||
// 获取蓝色预警的数据 | |||||
QueryWrapper<WarnAnalysisCompany> queryBlue = buildCountQueryGroupByRegion(regionIds, DangerLevel.BLUE.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesBlue = companyWarnAnalysisService.listMaps(queryBlue); | |||||
Map<RegionDTO, List<Long>> childrenMap = regionsCacheHelper.getChildrenMap(regionId, true); | |||||
// 如果是区县一级的,只返回区县一级的名字和数量 | |||||
if (childrenMap.size() == 0) { | |||||
RegionDTO regionDto = regionsCacheHelper.getByRegionId(regionId); | |||||
String regionName = regionDto.getRegionName(); | |||||
DataChartVo voRed = new DataChartVo(regionName, 0); | |||||
analysisCompaniesRed.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (regionId.equals(currRegionId)) { | |||||
voRed.setValue(voRed.getValue() + MapUtil.getInt(w, "count")); | |||||
voRed.setDangerLevel(DangerLevel.RED.getCode()); | |||||
} | |||||
}); | |||||
result.add(voRed); | |||||
DataChartVo voOrange = new DataChartVo(regionName, 0); | |||||
analysisCompaniesOrange.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (regionId.equals(currRegionId)) { | |||||
voOrange.setValue(voOrange.getValue() + MapUtil.getInt(w, "count")); | |||||
voOrange.setDangerLevel(DangerLevel.ORANGE.getCode()); | |||||
} | |||||
}); | |||||
result.add(voOrange); | |||||
DataChartVo voYellow = new DataChartVo(regionName, 0); | |||||
analysisCompaniesYellow.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (regionId.equals(currRegionId)) { | |||||
voYellow.setValue(voYellow.getValue() + MapUtil.getInt(w, "count")); | |||||
voYellow.setDangerLevel(DangerLevel.YELLOW.getCode()); | |||||
} | |||||
}); | |||||
result.add(voYellow); | |||||
DataChartVo voBlue = new DataChartVo(regionName, 0); | |||||
analysisCompaniesBlue.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (regionId.equals(currRegionId)) { | |||||
voBlue.setValue(voBlue.getValue() + MapUtil.getInt(w, "count")); | |||||
voBlue.setDangerLevel(DangerLevel.BLUE.getCode()); | |||||
} | |||||
}); | |||||
result.add(voBlue); | |||||
return result; | |||||
} else { | |||||
childrenMap.forEach((k, v) -> { | |||||
DataChartVo voRed = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesRed.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voRed.setValue(voRed.getValue() + MapUtil.getInt(w, "count")); | |||||
voRed.setDangerLevel(DangerLevel.RED.getCode()); | |||||
} | |||||
}); | |||||
result.add(voRed); | |||||
DataChartVo voOrange = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesOrange.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voOrange.setValue(voOrange.getValue() + MapUtil.getInt(w, "count")); | |||||
voOrange.setDangerLevel(DangerLevel.ORANGE.getCode()); | |||||
} | |||||
}); | |||||
result.add(voOrange); | |||||
DataChartVo voYellow = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesYellow.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voYellow.setValue(voYellow.getValue() + MapUtil.getInt(w, "count")); | |||||
voYellow.setDangerLevel(DangerLevel.YELLOW.getCode()); | |||||
} | |||||
}); | |||||
result.add(voYellow); | |||||
DataChartVo voBlue = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesBlue.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voBlue.setValue(voBlue.getValue() + MapUtil.getInt(w, "count")); | |||||
voBlue.setDangerLevel(DangerLevel.BLUE.getCode()); | |||||
} | |||||
}); | |||||
result.add(voBlue); | |||||
}); | |||||
return result; | |||||
} | |||||
} | |||||
public List<DataChartVo> carWarnStatisticsByLevel(Long regionId, Integer dangerLevel) { | |||||
List<DataChartVo> result = new ArrayList<>(); | |||||
List<Long> regionIds = regionsCacheHelper.listChildRegionId(regionId); | |||||
List<Map<String, Object>> analysisCompanies = Lists.newArrayList(); | |||||
// 获取红色预警的数据 | |||||
QueryWrapper<WarnAnalysisCar> queryRed = buildCountQueryGroupByRegion(regionIds, DangerLevel.RED.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesRed = carWarnAnalysisService.listMaps(queryRed); | |||||
// 获取橙色预警的数据 | |||||
QueryWrapper<WarnAnalysisCar> queryOrange = buildCountQueryGroupByRegion(regionIds, DangerLevel.ORANGE.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesOrange = carWarnAnalysisService.listMaps(queryOrange); | |||||
// 获取黄色预警的数据 | |||||
QueryWrapper<WarnAnalysisCar> queryYellow = buildCountQueryGroupByRegion(regionIds, DangerLevel.YELLOW.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesYellow = carWarnAnalysisService.listMaps(queryYellow); | |||||
// 获取蓝色预警的数据 | |||||
QueryWrapper<WarnAnalysisCar> queryBlue = buildCountQueryGroupByRegion(regionIds, DangerLevel.BLUE.getCode()); | |||||
List<Map<String, Object>> analysisCompaniesBlue = carWarnAnalysisService.listMaps(queryBlue); | |||||
Map<RegionDTO, List<Long>> childrenMap = regionsCacheHelper.getChildrenMap(regionId, true); | |||||
childrenMap.forEach((k, v) -> { | |||||
DataChartVo voRed = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesRed.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voRed.setValue(voRed.getValue() + MapUtil.getInt(w, "count")); | |||||
voRed.setDangerLevel(DangerLevel.RED.getCode()); | |||||
} | |||||
}); | |||||
result.add(voRed); | |||||
DataChartVo voOrange = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesOrange.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voOrange.setValue(voOrange.getValue() + MapUtil.getInt(w, "count")); | |||||
voOrange.setDangerLevel(DangerLevel.ORANGE.getCode()); | |||||
} | |||||
}); | |||||
result.add(voOrange); | |||||
DataChartVo voYellow = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesYellow.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voYellow.setValue(voYellow.getValue() + MapUtil.getInt(w, "count")); | |||||
voYellow.setDangerLevel(DangerLevel.YELLOW.getCode()); | |||||
} | |||||
}); | |||||
result.add(voYellow); | |||||
DataChartVo voBlue = new DataChartVo(k.getRegionName(), 0); | |||||
analysisCompaniesBlue.forEach(w -> { | |||||
Long currRegionId = MapUtil.getLong(w, "regionId"); | |||||
if (v.contains(currRegionId)) { | |||||
voBlue.setValue(voBlue.getValue() + MapUtil.getInt(w, "count")); | |||||
voBlue.setDangerLevel(DangerLevel.BLUE.getCode()); | |||||
} | |||||
}); | |||||
result.add(voBlue); | |||||
}); | |||||
return result; | |||||
} | |||||
} |
@@ -0,0 +1,132 @@ | |||||
package com.ningdatech.carapi.analysis.manage; | |||||
import java.time.LocalDateTime; | |||||
import java.util.List; | |||||
import java.util.Objects; | |||||
import java.util.stream.Collectors; | |||||
import org.springframework.aop.framework.AopContext; | |||||
import org.springframework.stereotype.Component; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.ningdatech.carapi.analysis.entity.IndustryStandards; | |||||
import com.ningdatech.carapi.analysis.entity.req.IndustryStandardsListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.IndustryStandardsSaveReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.IndustryStandardsListVo; | |||||
import com.ningdatech.carapi.analysis.service.IIndustryStandardsService; | |||||
import com.ningdatech.carapi.common.constant.UserRoleTypeEnum; | |||||
import com.ningdatech.carapi.common.contants.DefValConstants; | |||||
import com.ningdatech.carapi.common.util.CodeUtil; | |||||
import com.ningdatech.carapi.datascope.aop.LambdaDataScope; | |||||
import com.ningdatech.carapi.datascope.contants.LambdaDataScopeTypeEnum; | |||||
import com.ningdatech.carapi.user.security.auth.model.UserInfoDetails; | |||||
import com.ningdatech.carapi.user.util.LoginUserUtil; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import cn.hutool.core.util.StrUtil; | |||||
import lombok.RequiredArgsConstructor; | |||||
/** | |||||
* <p> | |||||
* IndustryStandardsManage | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 10:24 2022/10/15 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class IndustryStandardsManage { | |||||
private final IIndustryStandardsService industryStandardsService; | |||||
public PageVo<IndustryStandardsListVo> list(IndustryStandardsListReq req) { | |||||
Integer pageNumber = req.getPageNumber(); | |||||
Integer pageSize = req.getPageSize(); | |||||
UserInfoDetails userInfoDetails = LoginUserUtil.loginUserDetail(); | |||||
Long roleId = userInfoDetails.getRoleId(); | |||||
LambdaQueryWrapper<IndustryStandards> query = Wrappers.lambdaQuery(IndustryStandards.class); | |||||
IndustryStandardsManage context = (IndustryStandardsManage) AopContext.currentProxy(); | |||||
context.buildQuery(query,req); | |||||
List<IndustryStandards> standardsList = industryStandardsService.list(query); | |||||
// 省级部门上传的文件(上传企业所属区域为省级),按照文件类型,下级账号也要能看到 | |||||
if (!UserRoleTypeEnum.SYSTEM_ADMIN_ROLE_ID.getId().equals(roleId)) { | |||||
List<IndustryStandards> standards = industryStandardsService.list(Wrappers.lambdaQuery(IndustryStandards.class) | |||||
.eq(IndustryStandards::getRegionId, DefValConstants.ZJREGION_ID) | |||||
.eq(IndustryStandards::getType,req.getType())); | |||||
standardsList.addAll(standards); | |||||
} | |||||
if (CollUtil.isEmpty(standardsList)){ | |||||
return PageVo.empty(); | |||||
} | |||||
List<IndustryStandards> records = standardsList.stream() | |||||
.skip((long) (pageNumber - 1) * pageSize) | |||||
.limit(pageSize) | |||||
.collect(Collectors.toList()); | |||||
//Page<IndustryStandards> page = industryStandardsService.page(req.page(), query); | |||||
List<IndustryStandardsListVo> data = CollUtils.convert(records, w -> { | |||||
IndustryStandardsListVo vo = BeanUtil.copyProperties(w, IndustryStandardsListVo.class); | |||||
CodeUtil.searchCompanyNameAndRegionName(vo); | |||||
return vo; | |||||
}); | |||||
return PageVo.of(data, standardsList.size()); | |||||
} | |||||
@LambdaDataScope | |||||
public void buildQuery(LambdaQueryWrapper<IndustryStandards> query,IndustryStandardsListReq req) { | |||||
query.orderByDesc(IndustryStandards::getId).eq(IndustryStandards::getType, req.getType()) | |||||
.like(StrUtil.isNotBlank(req.getFileName()), IndustryStandards::getName, req.getFileName()) | |||||
.ge(req.getStartTime() != null, IndustryStandards::getCreateOn, req.getStartTime()) | |||||
.le(req.getEndTime() != null, IndustryStandards::getCreateOn, req.getEndTime()); | |||||
} | |||||
public void save(IndustryStandardsSaveReq req) { | |||||
IndustryStandards industryStandards = BeanUtil.copyProperties(req, IndustryStandards.class); | |||||
industryStandards.setCreateBy(LoginUserUtil.getUserId()); | |||||
industryStandards.setCreateOn(LocalDateTime.now()); | |||||
industryStandards.setRegionId(LoginUserUtil.loginUserDetail().getRegionId()); | |||||
industryStandards.setCompanyId(LoginUserUtil.loginUserDetail().getCompanyId()); | |||||
industryStandardsService.save(industryStandards); | |||||
} | |||||
public void incrementDownCount(Long id) { | |||||
industryStandardsService.incrementDownCount(id); | |||||
} | |||||
public void deleteStandardFile(Long id, Long roleId) { | |||||
LambdaQueryWrapper<IndustryStandards> wrapper = Wrappers.lambdaQuery(IndustryStandards.class); | |||||
IndustryStandardsManage context = (IndustryStandardsManage) AopContext.currentProxy(); | |||||
context.buildStandardFileQuery(wrapper, id); | |||||
IndustryStandards standards = industryStandardsService.getOne(wrapper); | |||||
if (Objects.isNull(standards)){ | |||||
throw new BizException("文件无法删除!"); | |||||
} | |||||
// IndustryStandards standards = industryStandardsService.getById(id); | |||||
// 如果文件是省级部门上传的文件,只有省级管理员角色可以删除 | |||||
Long regionId = standards.getRegionId(); | |||||
if (Objects.nonNull(regionId) && | |||||
DefValConstants.ZJREGION_ID.equals(regionId)){ | |||||
// 判断登录用户角色是否为省管理员 | |||||
if (!UserRoleTypeEnum.SYSTEM_ADMIN_ROLE_ID.getId().equals(roleId)){ | |||||
throw new BizException("您没有权限删除该文件!"); | |||||
} | |||||
} | |||||
industryStandardsService.deleteById(id); | |||||
} | |||||
@LambdaDataScope(type = LambdaDataScopeTypeEnum.ALL) | |||||
public void buildStandardFileQuery(LambdaQueryWrapper<IndustryStandards> wrapper, Long id) { | |||||
wrapper.eq(IndustryStandards::getId,id); | |||||
} | |||||
} |
@@ -0,0 +1,568 @@ | |||||
package com.ningdatech.carapi.analysis.manage; | |||||
import java.io.IOException; | |||||
import java.io.InputStream; | |||||
import java.time.Instant; | |||||
import java.time.LocalDate; | |||||
import java.time.LocalDateTime; | |||||
import java.time.ZoneId; | |||||
import java.time.temporal.ChronoUnit; | |||||
import java.util.*; | |||||
import java.util.stream.Collectors; | |||||
import org.apache.commons.collections4.CollectionUtils; | |||||
import org.springframework.aop.framework.AopContext; | |||||
import org.springframework.context.ApplicationContext; | |||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.transaction.annotation.Transactional; | |||||
import org.springframework.web.multipart.MultipartFile; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.ningdatech.carapi.analysis.common.DangerLevelEnum; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleAccidentEval; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleOverSpeedEval; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleServiceLife; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleViolationEval; | |||||
import com.ningdatech.carapi.analysis.entity.dto.OutDangerImportDto; | |||||
import com.ningdatech.carapi.analysis.entity.dto.VehicleAccidentImportDto; | |||||
import com.ningdatech.carapi.analysis.entity.dto.VehicleOverSpeedImportDto; | |||||
import com.ningdatech.carapi.analysis.entity.dto.VehicleViolationImportDto; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleAccidentEvalModReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleOverSpeedEvalModReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleServiceLifeListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.VehicleViolationEvalModReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleAccidentEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleOverSpeedEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleServiceLifeListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.VehicleViolationEvalListVo; | |||||
import com.ningdatech.carapi.analysis.service.IVehicleAccidentEvalService; | |||||
import com.ningdatech.carapi.analysis.service.IVehicleOverSpeedEvalService; | |||||
import com.ningdatech.carapi.analysis.service.IVehicleServiceLifeService; | |||||
import com.ningdatech.carapi.analysis.service.IVehicleViolationEvalService; | |||||
import com.ningdatech.carapi.car.vehicle.model.NdVehicleBaseInfo; | |||||
import com.ningdatech.carapi.car.vehicle.service.IVehicleBaseInfoService; | |||||
import com.ningdatech.carapi.common.aop.BuildChildrenRegionWrapper; | |||||
import com.ningdatech.carapi.common.util.CodeUtil; | |||||
import com.ningdatech.carapi.datascope.aop.LambdaDataScope; | |||||
import com.ningdatech.carapi.datascope.contants.LambdaDataScopeTypeEnum; | |||||
import com.ningdatech.carapi.safe.entity.NdInsureInfo; | |||||
import com.ningdatech.carapi.safe.entity.NdInsureOutDanger; | |||||
import com.ningdatech.carapi.safe.service.INdInsureInfoService; | |||||
import com.ningdatech.carapi.safe.service.INdInsureOutDangerService; | |||||
import com.ningdatech.carapi.safe.service.IVehicleAccidentReportService; | |||||
import com.ningdatech.carapi.scheduler.enums.DataTypeEnum; | |||||
import com.ningdatech.carapi.sys.entity.Company; | |||||
import com.ningdatech.carapi.sys.entity.constant.ImportTemplateConstant; | |||||
import com.ningdatech.carapi.sys.entity.enumeration.ImportTemplateEnum; | |||||
import com.ningdatech.carapi.sys.helper.RegionsCacheHelper; | |||||
import com.ningdatech.carapi.sys.service.CompanyService; | |||||
import com.ningdatech.carapi.user.util.LoginUserUtil; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import cn.hutool.core.date.DateTime; | |||||
import cn.hutool.core.date.DateUtil; | |||||
import cn.hutool.core.lang.Assert; | |||||
import cn.hutool.core.util.StrUtil; | |||||
import cn.hutool.poi.excel.ExcelReader; | |||||
import cn.hutool.poi.excel.ExcelUtil; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
/** | |||||
* <p> | |||||
* InsuranceRiskEvalManage | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:31 2022/10/15 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
@Slf4j | |||||
public class InsuranceRiskEvalManage { | |||||
private final IVehicleServiceLifeService vehicleServiceLifeService; | |||||
private final IVehicleViolationEvalService vehicleViolationEvalService; | |||||
private final IVehicleOverSpeedEvalService vehicleOverSpeedEvalService; | |||||
private final IVehicleAccidentEvalService vehicleAccidentEvalService; | |||||
private final INdInsureOutDangerService ndInsureOutDangerService; | |||||
private final RegionsCacheHelper regionsCacheHelper; | |||||
private final IVehicleBaseInfoService vehicleBaseInfoService; | |||||
private final CompanyService companyService; | |||||
private final INdInsureInfoService insureInfoService; | |||||
private final ApplicationContext applicationContext; | |||||
private final IVehicleAccidentReportService vehicleAccidentReportService; | |||||
/** | |||||
* 车辆使用年限列表 | |||||
*/ | |||||
public PageVo<VehicleServiceLifeListVo> vehicleServiceLifeList(VehicleServiceLifeListReq req) { | |||||
LambdaQueryWrapper<VehicleServiceLife> query = Wrappers.lambdaQuery(VehicleServiceLife.class); | |||||
InsuranceRiskEvalManage context = (InsuranceRiskEvalManage) AopContext.currentProxy(); | |||||
context.buildVehicleServiceLife(query,req); | |||||
Page<VehicleServiceLife> page = vehicleServiceLifeService.page(req.page(), query); | |||||
List<VehicleServiceLifeListVo> res = page.getRecords().stream().map(w -> { | |||||
VehicleServiceLifeListVo vo = BeanUtil.copyProperties(w,VehicleServiceLifeListVo.class); | |||||
vo.setRegions(regionsCacheHelper.listParents(w.getRegionId())); | |||||
int usedTime = Optional.ofNullable(w.getBuyTime()) | |||||
.flatMap(time -> Optional.ofNullable((int) ChronoUnit.YEARS.between(time, LocalDate.now()))) | |||||
.orElse(0); | |||||
vo.setUsedTime(usedTime); | |||||
// TODO 车辆使用年限百分比 | |||||
vo.setUsedTimePercent(0); | |||||
CodeUtil.searchCompanyName(vo); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildVehicleServiceLife(LambdaQueryWrapper<VehicleServiceLife> query,VehicleServiceLifeListReq req) { | |||||
query.ge(req.getBuyTimeStart() != null, VehicleServiceLife::getBuyTime, req.getBuyTimeStart()) | |||||
.le(req.getBuyTimeEnd() != null, VehicleServiceLife::getBuyTime, req.getBuyTimeEnd()) | |||||
.like(StrUtil.isNotBlank(req.getCompanyName()), VehicleServiceLife::getCompanyName, req.getCompanyName()) | |||||
.like(StrUtil.isNotBlank(req.getCarNo()), VehicleServiceLife::getCarNo, req.getCarNo()) | |||||
.eq(Objects.nonNull(req.getDangerLevel()), VehicleServiceLife::getDangerLevel, req.getDangerLevel()); | |||||
} | |||||
/** | |||||
* 车辆违章情况列表 | |||||
* | |||||
*/ | |||||
public PageVo<VehicleViolationEvalListVo> vehicleViolationEvalList(VehicleServiceLifeListReq req) { | |||||
LambdaQueryWrapper<VehicleViolationEval> query = Wrappers.lambdaQuery(VehicleViolationEval.class); | |||||
InsuranceRiskEvalManage context = (InsuranceRiskEvalManage) AopContext.currentProxy(); | |||||
context.buildVehicleViolationEvalQuery(query,req); | |||||
buildVehicleViolationEvalQuery(query,req); | |||||
Page<VehicleViolationEval> page = vehicleViolationEvalService.page(req.page(), query); | |||||
List<VehicleViolationEvalListVo> res = page.getRecords().stream().map(w -> { | |||||
VehicleViolationEvalListVo vo = BeanUtil.copyProperties(w,VehicleViolationEvalListVo.class); | |||||
vo.setRegions(regionsCacheHelper.listParents(w.getRegionId())); | |||||
vo.setDangerLevelName(DangerLevelEnum.getDescByCode(w.getDangerLevel())); | |||||
CodeUtil.searchCompanyName(vo); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildVehicleViolationEvalQuery(LambdaQueryWrapper<VehicleViolationEval> query,VehicleServiceLifeListReq req) { | |||||
query.like(StrUtil.isNotBlank(req.getCompanyName()),VehicleViolationEval::getCompanyName, req.getCompanyName()) | |||||
.like(StrUtil.isNotBlank(req.getCarNo()),VehicleViolationEval::getCarNo, req.getCarNo()) | |||||
.eq(Objects.nonNull(req.getDangerLevel()),VehicleViolationEval::getDangerLevel, req.getDangerLevel()); | |||||
} | |||||
/** | |||||
* 车辆出险情况列表 | |||||
*/ | |||||
public PageVo<VehicleAccidentEvalListVo> vehicleAccidentList(VehicleServiceLifeListReq req) { | |||||
LambdaQueryWrapper<VehicleAccidentEval> query = Wrappers.lambdaQuery(VehicleAccidentEval.class); | |||||
InsuranceRiskEvalManage context = (InsuranceRiskEvalManage) AopContext.currentProxy(); | |||||
context.buildVehicleAccident(query,req); | |||||
Page<VehicleAccidentEval> page = vehicleAccidentEvalService.page(req.page(), query); | |||||
List<VehicleAccidentEvalListVo> res = page.getRecords().stream().map(w -> { | |||||
VehicleAccidentEvalListVo vo = BeanUtil.copyProperties(w,VehicleAccidentEvalListVo.class); | |||||
vo.setRegions(regionsCacheHelper.listParents(w.getRegionId())); | |||||
vo.setDangerLevelName(DangerLevelEnum.getDescByCode(w.getDangerLevel())); | |||||
CodeUtil.searchCompanyName(vo); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res,page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildVehicleAccident(LambdaQueryWrapper<VehicleAccidentEval> query,VehicleServiceLifeListReq req) { | |||||
query.like(StrUtil.isNotBlank(req.getCompanyName()), VehicleAccidentEval::getCompanyName, req.getCompanyName()) | |||||
.like(StrUtil.isNotBlank(req.getCarNo()), VehicleAccidentEval::getCarNo, req.getCarNo()) | |||||
.eq(Objects.nonNull(req.getDangerLevel()), VehicleAccidentEval::getDangerLevel, req.getDangerLevel()); | |||||
} | |||||
/** | |||||
* 车辆超速情况列表 | |||||
*/ | |||||
public PageVo<VehicleOverSpeedEvalListVo> vehicleOverSpeedList(VehicleServiceLifeListReq req) { | |||||
LambdaQueryWrapper<VehicleOverSpeedEval> query = Wrappers.lambdaQuery(VehicleOverSpeedEval.class); | |||||
InsuranceRiskEvalManage context = (InsuranceRiskEvalManage) AopContext.currentProxy(); | |||||
context.buildVehicleOverSpeed(query,req); | |||||
Page<VehicleOverSpeedEval> page = vehicleOverSpeedEvalService.page(req.page(), query); | |||||
List<VehicleOverSpeedEvalListVo> res = page.getRecords().stream().map(w -> { | |||||
VehicleOverSpeedEvalListVo vo = BeanUtil.copyProperties(w,VehicleOverSpeedEvalListVo.class); | |||||
vo.setRegions(regionsCacheHelper.listParents(w.getRegionId())); | |||||
vo.setDangerLevelName(DangerLevelEnum.getDescByCode(w.getDangerLevel())); | |||||
CodeUtil.searchCompanyName(vo); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res,page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildVehicleOverSpeed(LambdaQueryWrapper<VehicleOverSpeedEval> query,VehicleServiceLifeListReq req) { | |||||
query.like(StrUtil.isNotBlank(req.getCompanyName()), VehicleOverSpeedEval::getCompanyName, req.getCompanyName()) | |||||
.like(StrUtil.isNotBlank(req.getCarNo()), VehicleOverSpeedEval::getCarNo, req.getCarNo()) | |||||
.eq(Objects.nonNull(req.getDangerLevel()), VehicleOverSpeedEval::getDangerLevel, req.getDangerLevel()); | |||||
} | |||||
public void vehicleViolationEvalMod(VehicleViolationEvalModReq req) { | |||||
VehicleViolationEval violationEval = BeanUtil.copyProperties(req, VehicleViolationEval.class); | |||||
violationEval.setRemark(StrUtil.nullToEmpty(violationEval.getRemark())); | |||||
violationEval.setUpdateBy(LoginUserUtil.getUserId()); | |||||
violationEval.setUpdateOn(LocalDateTime.now()); | |||||
boolean update = vehicleViolationEvalService.updateById(violationEval); | |||||
Assert.isTrue(update, "记录不存在"); | |||||
} | |||||
public void vehicleAccidentEvalMod(VehicleAccidentEvalModReq req) { | |||||
VehicleAccidentEval accidentEval = BeanUtil.copyProperties(req, VehicleAccidentEval.class); | |||||
accidentEval.setRemark(StrUtil.nullToEmpty(accidentEval.getRemark())); | |||||
accidentEval.setUpdateBy(LoginUserUtil.getUserId()); | |||||
accidentEval.setUpdateOn(LocalDateTime.now()); | |||||
boolean update = vehicleAccidentEvalService.updateById(accidentEval); | |||||
Assert.isTrue(update, "记录不存在"); | |||||
} | |||||
public void vehicleOverSpeedEvalMod(VehicleOverSpeedEvalModReq req) { | |||||
VehicleOverSpeedEval overSpeedEval = BeanUtil.copyProperties(req, VehicleOverSpeedEval.class); | |||||
overSpeedEval.setRemark(StrUtil.nullToEmpty(overSpeedEval.getRemark())); | |||||
overSpeedEval.setUpdateBy(LoginUserUtil.getUserId()); | |||||
overSpeedEval.setUpdateOn(LocalDateTime.now()); | |||||
boolean update = vehicleOverSpeedEvalService.updateById(overSpeedEval); | |||||
Assert.isTrue(update, "记录不存在"); | |||||
} | |||||
public void vehicleViolationEvalDel(Integer id) { | |||||
LambdaQueryWrapper<VehicleViolationEval> wrapper = Wrappers.lambdaQuery(VehicleViolationEval.class); | |||||
InsuranceRiskEvalManage context = (InsuranceRiskEvalManage) AopContext.currentProxy(); | |||||
context.buildQuery(wrapper, id); | |||||
VehicleViolationEval violationEval = vehicleViolationEvalService.getOne(wrapper); | |||||
if (Objects.isNull(violationEval)){ | |||||
throw new BizException("文件无法删除!"); | |||||
} | |||||
vehicleViolationEvalService.removeById(id); | |||||
} | |||||
@LambdaDataScope(type = LambdaDataScopeTypeEnum.ALL) | |||||
public void buildQuery(LambdaQueryWrapper<VehicleViolationEval> wrapper, Integer id) { | |||||
wrapper.eq(VehicleViolationEval::getId,id); | |||||
} | |||||
public void vehicleAccidentEvalDel(Integer id) { | |||||
LambdaQueryWrapper<VehicleAccidentEval> wrapper = Wrappers.lambdaQuery(VehicleAccidentEval.class); | |||||
InsuranceRiskEvalManage context = (InsuranceRiskEvalManage) AopContext.currentProxy(); | |||||
context.buildAccidentEvalQuery(wrapper, id); | |||||
VehicleAccidentEval accidentEval = vehicleAccidentEvalService.getOne(wrapper); | |||||
if (Objects.isNull(accidentEval)){ | |||||
throw new BizException("文件无法删除!"); | |||||
} | |||||
vehicleAccidentEvalService.removeById(id); | |||||
} | |||||
@LambdaDataScope(type = LambdaDataScopeTypeEnum.ALL) | |||||
public void buildAccidentEvalQuery(LambdaQueryWrapper<VehicleAccidentEval> wrapper, Integer id) { | |||||
wrapper.eq(VehicleAccidentEval::getId,id); | |||||
} | |||||
public void vehicleOverSpeedEvalDel(Integer id) { | |||||
LambdaQueryWrapper<VehicleOverSpeedEval> wrapper = Wrappers.lambdaQuery(VehicleOverSpeedEval.class); | |||||
InsuranceRiskEvalManage context = (InsuranceRiskEvalManage) AopContext.currentProxy(); | |||||
context.buildStandardFileQuery(wrapper, id); | |||||
VehicleOverSpeedEval overSpeedEval = vehicleOverSpeedEvalService.getOne(wrapper); | |||||
if (Objects.isNull(overSpeedEval)){ | |||||
throw new BizException("文件无法删除!"); | |||||
} | |||||
vehicleOverSpeedEvalService.removeById(id); | |||||
} | |||||
@LambdaDataScope(type = LambdaDataScopeTypeEnum.ALL) | |||||
public void buildStandardFileQuery(LambdaQueryWrapper<VehicleOverSpeedEval> wrapper, Integer id) { | |||||
wrapper.eq(VehicleOverSpeedEval::getId,id); | |||||
} | |||||
private void importVehicleViolationData(List<VehicleViolationImportDto> importDataList) { | |||||
if (CollectionUtils.isEmpty(importDataList)) { | |||||
return; | |||||
} | |||||
List<VehicleViolationEval> violationEvalList = new ArrayList<>(); | |||||
List<String> carNos = CollUtils.fieldList(importDataList, VehicleViolationImportDto::getCarNo); | |||||
Assert.isTrue(carNos.size() == importDataList.size(), "车牌号不可重复"); | |||||
Map<String, NdVehicleBaseInfo> carInfoMap = vehicleBaseInfoService.listByCarNo(carNos); | |||||
Assert.isTrue(carNos.size() == carInfoMap.size(), "请确保所有车牌号存在"); | |||||
List<Long> companyIds = CollUtils.fieldList(carInfoMap.values(), NdVehicleBaseInfo::getCompanyId); | |||||
Map<Long, Company> companyMap = companyService.listCompanyByIds(companyIds); | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
importDataList.forEach(w -> { | |||||
VehicleViolationEval eval = new VehicleViolationEval(); | |||||
eval.setCreateBy(userId); | |||||
eval.setCreateOn(now); | |||||
eval.setUpdateBy(userId); | |||||
eval.setUpdateOn(now); | |||||
eval.setViolationCount(w.getViolationCount()); | |||||
eval.setRemark(w.getRemark()); | |||||
eval.setAvgViolationCount(w.getAvgViolationCount()); | |||||
eval.setCarNo(w.getCarNo()); | |||||
eval.setMileage(w.getMileage()); | |||||
NdVehicleBaseInfo carInfo = carInfoMap.get(w.getCarNo()); | |||||
eval.setCarId(carInfo.getId()); | |||||
eval.setCompanyId(carInfo.getCompanyId()); | |||||
Company company = companyMap.get(eval.getCompanyId()); | |||||
eval.setCompanyName(company.getName()); | |||||
eval.setRegionId(company.getRegionId()); | |||||
eval.setCarFrameNo(w.getChassisNumber()); | |||||
eval.setDangerLevel(DangerLevelEnum.getCodeByDesc(w.getRiskEvaluation())); | |||||
violationEvalList.add(eval); | |||||
}); | |||||
LambdaQueryWrapper<VehicleViolationEval> delQuery = Wrappers.lambdaQuery(VehicleViolationEval.class) | |||||
.in(VehicleViolationEval::getCarNo, carNos); | |||||
vehicleViolationEvalService.remove(delQuery); | |||||
vehicleViolationEvalService.saveBatch(violationEvalList); | |||||
} | |||||
private void importVehicleOverSpeedData(List<VehicleOverSpeedImportDto> importDataList) { | |||||
if (CollectionUtils.isEmpty(importDataList)) { | |||||
return; | |||||
} | |||||
List<String> carNos = CollUtils.fieldList(importDataList, VehicleOverSpeedImportDto::getCarNo); | |||||
Assert.isTrue(carNos.size() == importDataList.size(), "车牌号不可重复"); | |||||
Map<String, NdVehicleBaseInfo> carInfoMap = vehicleBaseInfoService.listByCarNo(carNos); | |||||
Assert.isTrue(carNos.size() == carInfoMap.size(), "请确保所有车牌号存在"); | |||||
List<Long> companyIds = CollUtils.fieldList(carInfoMap.values(), NdVehicleBaseInfo::getCompanyId); | |||||
Map<Long, Company> companyMap = companyService.listCompanyByIds(companyIds); | |||||
List<VehicleOverSpeedEval> violationEvalList = new ArrayList<>(); | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
importDataList.forEach(w -> { | |||||
VehicleOverSpeedEval eval = new VehicleOverSpeedEval(); | |||||
eval.setCreateBy(userId); | |||||
eval.setCreateOn(now); | |||||
eval.setUpdateBy(userId); | |||||
eval.setUpdateOn(now); | |||||
eval.setOverSpeedCount(w.getOverSpeedCount()); | |||||
eval.setRemark(w.getRemark()); | |||||
eval.setAvgOverSpeedCount(w.getAvgOverSpeedCount()); | |||||
eval.setCarNo(w.getCarNo()); | |||||
eval.setMileage(w.getMileage()); | |||||
NdVehicleBaseInfo carInfo = carInfoMap.get(w.getCarNo()); | |||||
eval.setCarId(carInfo.getId()); | |||||
eval.setCompanyId(carInfo.getCompanyId()); | |||||
Company company = companyMap.get(eval.getCompanyId()); | |||||
eval.setCompanyName(company.getName()); | |||||
eval.setRegionId(company.getRegionId()); | |||||
eval.setCarFrameNo(w.getChassisNumber()); | |||||
eval.setDangerLevel(DangerLevelEnum.getCodeByDesc(w.getRiskEvaluation())); | |||||
violationEvalList.add(eval); | |||||
}); | |||||
LambdaQueryWrapper<VehicleOverSpeedEval> delQuery = Wrappers.lambdaQuery(VehicleOverSpeedEval.class) | |||||
.in(VehicleOverSpeedEval::getCarNo, carNos); | |||||
vehicleOverSpeedEvalService.remove(delQuery); | |||||
vehicleOverSpeedEvalService.saveBatch(violationEvalList); | |||||
} | |||||
private void importVehicleAccidentData(List<VehicleAccidentImportDto> importDataList) { | |||||
if (CollectionUtils.isEmpty(importDataList)) { | |||||
return; | |||||
} | |||||
List<String> carNos = CollUtils.fieldList(importDataList, VehicleAccidentImportDto::getCarNo); | |||||
Assert.isTrue(carNos.size() == importDataList.size(), "车牌号不可重复"); | |||||
Map<String, NdVehicleBaseInfo> carInfoMap = vehicleBaseInfoService.listByCarNo(carNos); | |||||
Assert.isTrue(carNos.size() == carInfoMap.size(), "请确保所有车牌号存在"); | |||||
List<Long> companyIds = CollUtils.fieldList(carInfoMap.values(), NdVehicleBaseInfo::getCompanyId); | |||||
Map<Long, Company> companyMap = companyService.listCompanyByIds(companyIds); | |||||
List<VehicleAccidentEval> violationEvalList = new ArrayList<>(); | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
importDataList.forEach(w -> { | |||||
VehicleAccidentEval eval = new VehicleAccidentEval(); | |||||
eval.setCreateBy(userId); | |||||
eval.setCreateOn(now); | |||||
eval.setUpdateBy(userId); | |||||
eval.setUpdateOn(now); | |||||
eval.setAccidentCount(w.getAccidentCount()); | |||||
eval.setRemark(w.getRemark()); | |||||
eval.setAvgAccidentCount(w.getAvgAccidentCount()); | |||||
eval.setCarNo(w.getCarNo()); | |||||
eval.setMileage(w.getMileage()); | |||||
NdVehicleBaseInfo carInfo = carInfoMap.get(w.getCarNo()); | |||||
eval.setCarId(carInfo.getId()); | |||||
eval.setCompanyId(carInfo.getCompanyId()); | |||||
Company company = companyMap.get(eval.getCompanyId()); | |||||
eval.setCompanyName(company.getName()); | |||||
eval.setRegionId(company.getRegionId()); | |||||
eval.setCarFrameNo(w.getChassisNumber()); | |||||
eval.setDangerLevel(DangerLevelEnum.getCodeByDesc(w.getRiskEvaluation())); | |||||
violationEvalList.add(eval); | |||||
}); | |||||
LambdaQueryWrapper<VehicleAccidentEval> delQuery = Wrappers.lambdaQuery(VehicleAccidentEval.class) | |||||
.in(VehicleAccidentEval::getCarNo, carNos); | |||||
vehicleAccidentEvalService.remove(delQuery); | |||||
vehicleAccidentEvalService.saveBatch(violationEvalList); | |||||
} | |||||
private void importOutDangerData(List<OutDangerImportDto> importDataList) { | |||||
if (CollectionUtils.isEmpty(importDataList)) { | |||||
return; | |||||
} | |||||
List<String> carNos = CollUtils.fieldList(importDataList, OutDangerImportDto::getCarNo); | |||||
// Assert.isTrue(carNos.size() == importDataList.size(), "车牌号不可重复"); | |||||
Map<String, NdVehicleBaseInfo> carInfoMap = vehicleBaseInfoService.listByCarNo(carNos); | |||||
Assert.isTrue(carNos.size() == carInfoMap.size(), "请确保所有车牌号存在"); | |||||
List<Long> companyIds = CollUtils.fieldList(carInfoMap.values(), NdVehicleBaseInfo::getCompanyId); | |||||
Map<Long, Company> companyMap = companyService.listCompanyByIds(companyIds); | |||||
Map<Long, NdInsureInfo> insureCompanyInfoMap = insureInfoService.listInsureCompanyByCompanyIds(companyIds); | |||||
List<NdInsureOutDanger> ndInsureOutDangers = new ArrayList<>(); | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
importDataList.forEach(w -> { | |||||
NdInsureOutDanger eval = new NdInsureOutDanger(); | |||||
eval.setCreateBy(userId); | |||||
eval.setCreateOn(now); | |||||
eval.setUpdateBy(userId); | |||||
eval.setUpdateOn(now); | |||||
NdVehicleBaseInfo carInfo = carInfoMap.get(w.getCarNo()); | |||||
Company company = companyMap.get(carInfo.getCompanyId()); | |||||
DateTime parse = DateUtil.parse(w.getAccidentTime()); | |||||
Instant instant = parse.toInstant(); | |||||
ZoneId zoneId = ZoneId.systemDefault(); | |||||
LocalDateTime accidentTime = instant.atZone(zoneId).toLocalDateTime(); | |||||
eval.setAccidentTime(accidentTime); | |||||
eval.setAccidentAddress(w.getAccidentAddress()); | |||||
eval.setCompanyId(company.getId()); | |||||
eval.setCompanyName(company.getName()); | |||||
eval.setRegionId(company.getRegionId()); | |||||
eval.setRegionName(company.getName()); | |||||
eval.setCarPlate(w.getCarNo()); | |||||
if (insureCompanyInfoMap.size() == 0){ | |||||
eval.setInsureCompany(null); | |||||
}else { | |||||
NdInsureInfo ndInsureInfo = insureCompanyInfoMap.get(carInfo.getCompanyId()); | |||||
eval.setInsureCompany(ndInsureInfo.getInsureCompany()); | |||||
} | |||||
eval.setInjuries(w.getInjuries()); | |||||
eval.setDeathToll(w.getDeathToll()); | |||||
eval.setCompensateAmount(w.getCompensateAmount()); | |||||
ndInsureOutDangers.add(eval); | |||||
}); | |||||
// 筛选出不在出险信息表中的数据,进行导入 | |||||
List<NdInsureOutDanger> insureOutDangers = ndInsureOutDangers.stream().filter(w -> { | |||||
NdInsureOutDanger ndInsureOutDanger = ndInsureOutDangerService.getOne(Wrappers.lambdaQuery(NdInsureOutDanger.class) | |||||
.eq(NdInsureOutDanger::getCarPlate, w.getCarPlate()) | |||||
.eq(NdInsureOutDanger::getInsureCompany,w.getInsureCompany()) | |||||
.eq(NdInsureOutDanger::getCompanyName,w.getCompanyName()) | |||||
.eq(NdInsureOutDanger::getAccidentAddress,w.getAccidentAddress()) | |||||
.eq(NdInsureOutDanger::getAccidentTime,w.getAccidentTime()) | |||||
.eq(NdInsureOutDanger::getInjuries,w.getInjuries()) | |||||
.eq(NdInsureOutDanger::getDeathToll,w.getDeathToll()) | |||||
.eq(NdInsureOutDanger::getCompensateAmount,w.getCompensateAmount())); | |||||
if (Objects.isNull(ndInsureOutDanger)){ | |||||
return true; | |||||
} | |||||
return false; | |||||
}).collect(Collectors.toList()); | |||||
if (CollUtil.isEmpty(insureOutDangers)){ | |||||
throw new BizException("导入数据均已存在,无需重复导入!"); | |||||
} | |||||
LambdaQueryWrapper<NdInsureOutDanger> delQuery = Wrappers.lambdaQuery(NdInsureOutDanger.class) | |||||
.in(NdInsureOutDanger::getCarPlate, carNos); | |||||
ndInsureOutDangerService.remove(delQuery); | |||||
ndInsureOutDangerService.saveBatch(insureOutDangers); | |||||
} | |||||
@Transactional(rollbackFor = Exception.class) | |||||
public void importTemplateData(ImportTemplateEnum template, MultipartFile file) { | |||||
String contentType = file.getContentType(); | |||||
if (!contentType.equals(ExcelUtil.XLS_CONTENT_TYPE) && | |||||
!contentType.equals(ExcelUtil.XLSX_CONTENT_TYPE) | |||||
) { | |||||
throw BizException.wrap("导入失败,不支持的文件类型,请按照提供的模板导入文件!"); | |||||
} | |||||
try (InputStream inputStream = file.getInputStream(); | |||||
ExcelReader reader = ExcelUtil.getReader(inputStream)) { | |||||
Map<String, String> alias; | |||||
List<String> title = ImportTemplateConstant.getTemplateTitle(template); | |||||
switch (template) { | |||||
case VEHICLE_VIOLATION: | |||||
alias = new HashMap<>(title.size()); | |||||
alias.put(title.get(0), "id"); | |||||
alias.put(title.get(1), "city"); | |||||
alias.put(title.get(2), "zone"); | |||||
alias.put(title.get(3), "companyName"); | |||||
alias.put(title.get(4), "carNo"); | |||||
alias.put(title.get(5), "chassisNumber"); | |||||
alias.put(title.get(6), "mileage"); | |||||
alias.put(title.get(7), "violationCount"); | |||||
alias.put(title.get(8), "avgViolationCount"); | |||||
alias.put(title.get(9), "riskEvaluation"); | |||||
alias.put(title.get(10), "remark"); | |||||
reader.setHeaderAlias(alias); | |||||
importVehicleViolationData(reader.readAll(VehicleViolationImportDto.class)); | |||||
break; | |||||
case VEHICLE_ACCIDENT: | |||||
alias = new HashMap<>(title.size()); | |||||
alias.put(title.get(0), "id"); | |||||
alias.put(title.get(1), "city"); | |||||
alias.put(title.get(2), "zone"); | |||||
alias.put(title.get(3), "companyName"); | |||||
alias.put(title.get(4), "carNo"); | |||||
alias.put(title.get(5), "chassisNumber"); | |||||
alias.put(title.get(6), "mileage"); | |||||
alias.put(title.get(7), "accidentCount"); | |||||
alias.put(title.get(8), "avgAccidentCount"); | |||||
alias.put(title.get(9), "riskEvaluation"); | |||||
alias.put(title.get(10), "remark"); | |||||
reader.setHeaderAlias(alias); | |||||
importVehicleAccidentData(reader.readAll(VehicleAccidentImportDto.class)); | |||||
break; | |||||
case VEHICLE_OVER_SPEED: | |||||
alias = new HashMap<>(title.size()); | |||||
alias.put(title.get(0), "id"); | |||||
alias.put(title.get(1), "city"); | |||||
alias.put(title.get(2), "zone"); | |||||
alias.put(title.get(3), "companyName"); | |||||
alias.put(title.get(4), "carNo"); | |||||
alias.put(title.get(5), "chassisNumber"); | |||||
alias.put(title.get(6), "mileage"); | |||||
alias.put(title.get(7), "overSpeedCount"); | |||||
alias.put(title.get(8), "avgOverSpeedCount"); | |||||
alias.put(title.get(9), "riskEvaluation"); | |||||
alias.put(title.get(10), "remark"); | |||||
reader.setHeaderAlias(alias); | |||||
importVehicleOverSpeedData(reader.readAll(VehicleOverSpeedImportDto.class)); | |||||
break; | |||||
case INSURE_OUT_DANGER: | |||||
alias = new HashMap<>(title.size()); | |||||
alias.put(title.get(0), "id"); | |||||
alias.put(title.get(1), "regionName"); | |||||
alias.put(title.get(2), "carNo"); | |||||
alias.put(title.get(3), "insureCompany"); | |||||
alias.put(title.get(4), "companyName"); | |||||
alias.put(title.get(5), "accidentAddress"); | |||||
alias.put(title.get(6), "accidentTime"); | |||||
alias.put(title.get(7), "injuries"); | |||||
alias.put(title.get(8), "deathToll"); | |||||
alias.put(title.get(9), "compensateAmount"); | |||||
reader.setHeaderAlias(alias); | |||||
importOutDangerData(reader.readAll(OutDangerImportDto.class)); | |||||
break; | |||||
default: | |||||
throw new BizException("不支持的数据导入类型"); | |||||
} | |||||
} catch (IOException e) { | |||||
throw new RuntimeException(e); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,245 @@ | |||||
package com.ningdatech.carapi.analysis.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ningdatech.basic.model.IdVo; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityManageGrade; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityManageResultEval; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityRiskEval; | |||||
import com.ningdatech.carapi.analysis.entity.SecuritySystemBuildingEval; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecurityManageGradeListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecurityRiskEvalListReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecurityRiskEvalSaveReq; | |||||
import com.ningdatech.carapi.analysis.entity.req.SecuritySystemBuildingEvalSaveReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecurityManageGradeVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecurityManageResultEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecurityRiskEvalListVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.SecuritySystemBuildingEvalListVo; | |||||
import com.ningdatech.carapi.analysis.service.ISecurityManageGradeService; | |||||
import com.ningdatech.carapi.analysis.service.ISecurityManageResultEvalService; | |||||
import com.ningdatech.carapi.analysis.service.ISecurityRiskEvalService; | |||||
import com.ningdatech.carapi.analysis.service.ISecuritySystemBuildingEvalService; | |||||
import com.ningdatech.carapi.common.aop.BuildChildrenRegionWrapper; | |||||
import com.ningdatech.carapi.common.util.CodeUtil; | |||||
import com.ningdatech.carapi.datascope.aop.LambdaDataScope; | |||||
import com.ningdatech.carapi.sys.entity.dto.CompanyDTO; | |||||
import com.ningdatech.carapi.sys.entity.dto.RegionDTO; | |||||
import com.ningdatech.carapi.sys.helper.CompaniesCacheHelper; | |||||
import com.ningdatech.carapi.sys.helper.RegionsCacheHelper; | |||||
import com.ningdatech.carapi.user.util.LoginUserUtil; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.apache.commons.lang3.tuple.Pair; | |||||
import org.springframework.aop.framework.AopContext; | |||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.util.Assert; | |||||
import java.time.LocalDateTime; | |||||
import java.util.List; | |||||
import java.util.stream.Collectors; | |||||
/** | |||||
* <p> | |||||
* SecurityAnalysisEvalManage | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:47 2022/10/13 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class SecurityAnalysisEvalManage { | |||||
private final RegionsCacheHelper regionsCacheHelper; | |||||
private final CompaniesCacheHelper companiesCacheHelper; | |||||
private final ISecurityManageGradeService securityManagementGradeService; | |||||
private final ISecurityRiskEvalService securityRiskEvaluationService; | |||||
private final ISecuritySystemBuildingEvalService systemBuildingEvalService; | |||||
private final ISecurityManageResultEvalService securityManageResultEvalService; | |||||
/** | |||||
* 安全管理综合评级列表 | |||||
**/ | |||||
public PageVo<SecurityManageGradeVo> list(SecurityManageGradeListReq req) { | |||||
LambdaQueryWrapper<SecurityManageGrade> query = Wrappers.lambdaQuery(SecurityManageGrade.class); | |||||
SecurityAnalysisEvalManage context = (SecurityAnalysisEvalManage) AopContext.currentProxy(); | |||||
context.buildSecurityManageGradeQuery(query,req); | |||||
Page<SecurityManageGrade> page = securityManagementGradeService.page(req.page(), query); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<SecurityManageGradeVo> res = page.getRecords().stream().map(w -> { | |||||
SecurityManageGradeVo gradeVo = BeanUtil.copyProperties(w, SecurityManageGradeVo.class); | |||||
List<RegionDTO> regions = regionsCacheHelper.listParents(w.getRegionId()); | |||||
gradeVo.setRegions(regions); | |||||
CodeUtil.searchCompanyName(gradeVo); | |||||
return gradeVo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildSecurityManageGradeQuery(LambdaQueryWrapper<SecurityManageGrade> query,SecurityManageGradeListReq req) { | |||||
if (StringUtils.isNotBlank(req.getCompanyName())) { | |||||
query.like(SecurityManageGrade::getCompanyName, req.getCompanyName()); | |||||
} | |||||
if (StringUtils.isNotBlank(req.getSecurityLevel())) { | |||||
query.eq(SecurityManageGrade::getSecurityLevel, req.getSecurityLevel()); | |||||
} | |||||
if (req.getYear() != null) { | |||||
query.eq(SecurityManageGrade::getYear, req.getYear()); | |||||
} | |||||
query.orderByDesc(SecurityManageGrade::getId); | |||||
} | |||||
/** | |||||
* 安全责任体系分析评估列表 | |||||
*/ | |||||
public PageVo<SecurityRiskEvalListVo> list(SecurityRiskEvalListReq req) { | |||||
LambdaQueryWrapper<SecurityRiskEval> query = Wrappers.lambdaQuery(SecurityRiskEval.class); | |||||
SecurityAnalysisEvalManage context = (SecurityAnalysisEvalManage) AopContext.currentProxy(); | |||||
context.buildSecurityRiskEvalQuery(query, req); | |||||
Page<SecurityRiskEval> page = securityRiskEvaluationService.page(req.page(), query); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<SecurityRiskEvalListVo> res = page.getRecords().stream().map(w -> { | |||||
SecurityRiskEvalListVo gradeVo = BeanUtil.copyProperties(w, SecurityRiskEvalListVo.class); | |||||
List<RegionDTO> regions = regionsCacheHelper.listParents(w.getRegionId()); | |||||
gradeVo.setRegions(regions); | |||||
CodeUtil.searchCompanyName(gradeVo); | |||||
return gradeVo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildSecurityRiskEvalQuery(LambdaQueryWrapper<SecurityRiskEval> query, SecurityRiskEvalListReq req) { | |||||
if (StringUtils.isNotBlank(req.getCompanyName())) { | |||||
query.like(SecurityRiskEval::getCompanyName, req.getCompanyName()); | |||||
} | |||||
if (req.getScoreRanges() != null) { | |||||
Pair<Integer, Integer> ranges = req.getScoreRanges(); | |||||
query.ge(ranges.getLeft() != null, SecurityRiskEval::getTotalScore, ranges.getLeft()); | |||||
query.le(ranges.getRight() != null, SecurityRiskEval::getTotalScore, ranges.getRight()); | |||||
} | |||||
if (req.getYear() != null) { | |||||
query.eq(SecurityRiskEval::getYear, req.getYear()); | |||||
} | |||||
query.orderByDesc(SecurityRiskEval::getId); | |||||
} | |||||
/** | |||||
* 安全制度建设分析评估列表 | |||||
*/ | |||||
public PageVo<SecuritySystemBuildingEvalListVo> listSystemBuildingEval(SecurityRiskEvalListReq req) { | |||||
LambdaQueryWrapper<SecuritySystemBuildingEval> query = Wrappers.lambdaQuery(SecuritySystemBuildingEval.class); | |||||
SecurityAnalysisEvalManage context = (SecurityAnalysisEvalManage) AopContext.currentProxy(); | |||||
context.buildSystemBuildingEvalQuery(query, req); | |||||
Page<SecuritySystemBuildingEval> page = systemBuildingEvalService.page(req.page(), query); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<SecuritySystemBuildingEvalListVo> res = page.getRecords().stream().map(w -> { | |||||
SecuritySystemBuildingEvalListVo gradeVo = BeanUtil.copyProperties(w, SecuritySystemBuildingEvalListVo.class); | |||||
List<RegionDTO> regions = regionsCacheHelper.listParents(w.getRegionId()); | |||||
gradeVo.setRegions(regions); | |||||
CodeUtil.searchCompanyName(gradeVo); | |||||
return gradeVo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildSystemBuildingEvalQuery(LambdaQueryWrapper<SecuritySystemBuildingEval> query, SecurityRiskEvalListReq req) { | |||||
if (StringUtils.isNotBlank(req.getCompanyName())) { | |||||
query.like(SecuritySystemBuildingEval::getCompanyName, req.getCompanyName()); | |||||
} | |||||
if (req.getScoreRanges() != null) { | |||||
Pair<Integer, Integer> ranges = req.getScoreRanges(); | |||||
query.ge(ranges.getLeft() != null, SecuritySystemBuildingEval::getTotalScore, ranges.getLeft()); | |||||
query.le(ranges.getRight() != null, SecuritySystemBuildingEval::getTotalScore, ranges.getRight()); | |||||
} | |||||
if (req.getYear() != null) { | |||||
query.eq(SecuritySystemBuildingEval::getYear, req.getYear()); | |||||
} | |||||
query.orderByDesc(SecuritySystemBuildingEval::getId); | |||||
} | |||||
/** | |||||
* 新增安全责任体系评估 | |||||
*/ | |||||
public IdVo<Integer> save(SecurityRiskEvalSaveReq req) { | |||||
Assert.isTrue(0L == securityRiskEvaluationService.count(Wrappers.lambdaQuery(SecurityRiskEval.class) | |||||
.eq(SecurityRiskEval::getYear, req.getYear()) | |||||
.eq(SecurityRiskEval::getCompanyId, req.getCompanyId())), "已存在该年度安全责任体系评估"); | |||||
CompanyDTO company = companiesCacheHelper.getById(req.getCompanyId()); | |||||
SecurityRiskEval insert = BeanUtil.copyProperties(req, SecurityRiskEval.class); | |||||
insert.setCreateBy(LoginUserUtil.getUserId()); | |||||
insert.setCreateOn(LocalDateTime.now()); | |||||
insert.setRegionId(company.getRegionId()); | |||||
insert.setUpdateBy(insert.getCreateBy()); | |||||
insert.setUpdateOn(insert.getCreateOn()); | |||||
securityRiskEvaluationService.save(insert); | |||||
return IdVo.of(insert.getId()); | |||||
} | |||||
/** | |||||
* 新增安全制度建设分析评估 | |||||
*/ | |||||
public IdVo<Integer> save(SecuritySystemBuildingEvalSaveReq req) { | |||||
Assert.isTrue(0L == systemBuildingEvalService.count(Wrappers.lambdaQuery(SecuritySystemBuildingEval.class) | |||||
.eq(SecuritySystemBuildingEval::getYear, req.getYear()) | |||||
.eq(SecuritySystemBuildingEval::getCompanyId, req.getCompanyId())), "已存在该年度安全制度建设评估"); | |||||
CompanyDTO company = companiesCacheHelper.getById(req.getCompanyId()); | |||||
SecuritySystemBuildingEval insert = BeanUtil.copyProperties(req, SecuritySystemBuildingEval.class); | |||||
insert.setCreateBy(LoginUserUtil.getUserId()); | |||||
insert.setCreateOn(LocalDateTime.now()); | |||||
insert.setRegionId(company.getRegionId()); | |||||
insert.setUpdateBy(insert.getCreateBy()); | |||||
insert.setUpdateOn(insert.getCreateOn()); | |||||
systemBuildingEvalService.save(insert); | |||||
return IdVo.of(insert.getId()); | |||||
} | |||||
/** | |||||
* 安全管理结果分析评估列表 | |||||
*/ | |||||
public PageVo<SecurityManageResultEvalListVo> listSecurityManageResultEval(SecurityRiskEvalListReq req) { | |||||
LambdaQueryWrapper<SecurityManageResultEval> query = Wrappers.lambdaQuery(SecurityManageResultEval.class); | |||||
SecurityAnalysisEvalManage context = (SecurityAnalysisEvalManage) AopContext.currentProxy(); | |||||
context.buildSecurityManageResultEvalQuery(query, req); | |||||
Page<SecurityManageResultEval> page = securityManageResultEvalService.page(req.page(), query); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<SecurityManageResultEvalListVo> res = page.getRecords().stream().map(w -> { | |||||
SecurityManageResultEvalListVo gradeVo = BeanUtil.copyProperties(w, SecurityManageResultEvalListVo.class); | |||||
List<RegionDTO> regions = regionsCacheHelper.listParents(w.getRegionId()); | |||||
gradeVo.setRegions(regions); | |||||
CodeUtil.searchCompanyName(gradeVo); | |||||
return gradeVo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildSecurityManageResultEvalQuery(LambdaQueryWrapper<SecurityManageResultEval> query, SecurityRiskEvalListReq req) { | |||||
if (StringUtils.isNotBlank(req.getCompanyName())) { | |||||
query.like(SecurityManageResultEval::getCompanyName, req.getCompanyName()); | |||||
} | |||||
if (req.getScoreRanges() != null) { | |||||
Pair<Integer, Integer> ranges = req.getScoreRanges(); | |||||
query.ge(ranges.getLeft() != null, SecurityManageResultEval::getTotalScore, ranges.getLeft()); | |||||
query.le(ranges.getRight() != null, SecurityManageResultEval::getTotalScore, ranges.getRight()); | |||||
} | |||||
if (req.getYear() != null) { | |||||
query.eq(SecurityManageResultEval::getYear, req.getYear()); | |||||
} | |||||
query.orderByDesc(SecurityManageResultEval::getId); | |||||
} | |||||
} |
@@ -0,0 +1,149 @@ | |||||
package com.ningdatech.carapi.analysis.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.util.StrUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCar; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCompany; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisDriver; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import com.ningdatech.carapi.analysis.entity.vo.WarnAnalysisByCarVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.WarnAnalysisByCompanyVo; | |||||
import com.ningdatech.carapi.analysis.entity.vo.WarnAnalysisByDriverVo; | |||||
import com.ningdatech.carapi.analysis.mapper.WarnAnalysisCarMapper; | |||||
import com.ningdatech.carapi.analysis.service.IWarnAnalysisCarService; | |||||
import com.ningdatech.carapi.analysis.service.IWarnAnalysisCompanyService; | |||||
import com.ningdatech.carapi.analysis.service.IWarnAnalysisDriverService; | |||||
import com.ningdatech.carapi.common.aop.BuildChildrenRegionWrapper; | |||||
import com.ningdatech.carapi.common.util.CodeUtil; | |||||
import com.ningdatech.carapi.datascope.aop.LambdaDataScope; | |||||
import com.ningdatech.carapi.sys.helper.RegionsCacheHelper; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.springframework.aop.framework.AopContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.List; | |||||
import java.util.Objects; | |||||
import java.util.stream.Collectors; | |||||
/** | |||||
* <p> | |||||
* WarnAnalysisManage | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 16:34 2022/10/14 | |||||
*/ | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class WarnAnalysisManage { | |||||
private final IWarnAnalysisCarService warnAnalysisCarService; | |||||
private final IWarnAnalysisCompanyService warnAnalysisCompanyService; | |||||
private final RegionsCacheHelper regionsCacheHelper; | |||||
private final IWarnAnalysisDriverService warnAnalysisDriverService; | |||||
private final WarnAnalysisCarMapper warnAnalysisCarMapper; | |||||
/** | |||||
* 车辆综合预警分析列表 | |||||
*/ | |||||
public PageVo<WarnAnalysisByCarVo> listCarWarnAnalysis(WarnAnalysisListReq req) { | |||||
LambdaQueryWrapper<WarnAnalysisCar> query = Wrappers.lambdaQuery(WarnAnalysisCar.class); | |||||
WarnAnalysisManage context = (WarnAnalysisManage) AopContext.currentProxy(); | |||||
context.buildCarWarnAnalysisQuery(query, req); | |||||
Page<WarnAnalysisCar> page = warnAnalysisCarService.page(req.page(), query); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<WarnAnalysisByCarVo> res = page.getRecords().stream().map(w -> { | |||||
WarnAnalysisByCarVo vo = BeanUtil.copyProperties(w, WarnAnalysisByCarVo.class); | |||||
if (Objects.nonNull(w.getRegionId())) { | |||||
vo.setRegions(regionsCacheHelper.listParents(w.getRegionId())); | |||||
} | |||||
CodeUtil.searchCompanyName(vo); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildCarWarnAnalysisQuery(LambdaQueryWrapper<WarnAnalysisCar> query, WarnAnalysisListReq req) { | |||||
query.like(StrUtil.isNotBlank(req.getCarNo()), WarnAnalysisCar::getCarNo, req.getCarNo()) | |||||
.like(StrUtil.isNotBlank(req.getCompanyName()), WarnAnalysisCar::getCompanyName, req.getCompanyName()) | |||||
.eq(Objects.nonNull(req.getDangerLevel()), WarnAnalysisCar::getDangerLevel, req.getDangerLevel()) | |||||
.orderByDesc(WarnAnalysisCar::getDangerScore) | |||||
.orderByDesc(WarnAnalysisCar::getUpdateOn); | |||||
} | |||||
/** | |||||
* 企业综合预警分析列表 | |||||
*/ | |||||
public PageVo<WarnAnalysisByCompanyVo> listCompanyWarnAnalysis(WarnAnalysisListReq req) { | |||||
String companyName = req.getCompanyName(); | |||||
Integer carCount = warnAnalysisCarMapper.selectVehiclesNum(companyName); | |||||
LambdaQueryWrapper<WarnAnalysisCompany> query = Wrappers.lambdaQuery(WarnAnalysisCompany.class); | |||||
WarnAnalysisManage context = (WarnAnalysisManage) AopContext.currentProxy(); | |||||
context.buildCompanyWarnAnalysisQuery(query, req); | |||||
Page<WarnAnalysisCompany> page = warnAnalysisCompanyService.page(req.page(), query); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<WarnAnalysisByCompanyVo> res = page.getRecords().stream().map(w -> { | |||||
WarnAnalysisByCompanyVo vo = BeanUtil.copyProperties(w, WarnAnalysisByCompanyVo.class); | |||||
if (Objects.nonNull(w.getRegionId())) { | |||||
vo.setRegions(regionsCacheHelper.listParents(w.getRegionId())); | |||||
} | |||||
vo.setCarCount(carCount); | |||||
CodeUtil.searchCompanyName(vo); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildCompanyWarnAnalysisQuery(LambdaQueryWrapper<WarnAnalysisCompany> query, WarnAnalysisListReq req) { | |||||
query.like(StrUtil.isNotBlank(req.getCompanyName()), WarnAnalysisCompany::getCompanyName, req.getCompanyName()) | |||||
.eq(Objects.nonNull(req.getDangerLevel()), WarnAnalysisCompany::getDangerLevel, req.getDangerLevel()) | |||||
.orderByDesc(WarnAnalysisCompany::getTotalScore) | |||||
.orderByDesc(WarnAnalysisCompany::getUpdateOn); | |||||
} | |||||
/** | |||||
* 驾驶员综合预警分析列表 | |||||
*/ | |||||
public PageVo<WarnAnalysisByDriverVo> listDriverWarnAnalysis(WarnAnalysisListReq req) { | |||||
LambdaQueryWrapper<WarnAnalysisDriver> query = Wrappers.lambdaQuery(WarnAnalysisDriver.class); | |||||
WarnAnalysisManage context = (WarnAnalysisManage) AopContext.currentProxy(); | |||||
context.buildDriverWarnAnalysisQuery(query, req); | |||||
Page<WarnAnalysisDriver> page = warnAnalysisDriverService.page(req.page(), query); | |||||
if (0L == page.getTotal()) { | |||||
return PageVo.empty(); | |||||
} | |||||
List<WarnAnalysisByDriverVo> res = page.getRecords().stream().map(w -> { | |||||
WarnAnalysisByDriverVo vo = BeanUtil.copyProperties(w, WarnAnalysisByDriverVo.class); | |||||
if (Objects.nonNull(w.getRegionId())) { | |||||
vo.setRegions(regionsCacheHelper.listParents(w.getRegionId())); | |||||
} | |||||
CodeUtil.searchCompanyName(vo); | |||||
return vo; | |||||
}).collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | |||||
@LambdaDataScope | |||||
@BuildChildrenRegionWrapper | |||||
public void buildDriverWarnAnalysisQuery(LambdaQueryWrapper<WarnAnalysisDriver> query, WarnAnalysisListReq req) { | |||||
query.eq(StrUtil.isNotBlank(req.getDriverName()), WarnAnalysisDriver::getDriverName, req.getDriverName()) | |||||
.like(StrUtil.isNotBlank(req.getCompanyName()), WarnAnalysisDriver::getCompanyName, req.getCompanyName()) | |||||
.eq(Objects.nonNull(req.getDangerLevel()), WarnAnalysisDriver::getDangerLevel, req.getDangerLevel()) | |||||
.orderByDesc(WarnAnalysisDriver::getDangerScore) | |||||
.orderByDesc(WarnAnalysisDriver::getUpdateOn); | |||||
} | |||||
} |
@@ -0,0 +1,18 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.IndustryStandards; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
public interface IndustryStandardsMapper extends BaseMapper<IndustryStandards> { | |||||
int incrementDownCount(Long id); | |||||
} |
@@ -0,0 +1,9 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.IndustryStandardsMapper"> | |||||
<update id="incrementDownCount"> | |||||
update nd_industry_standards set down_count = down_count + 1 where id = #{id} | |||||
</update> | |||||
</mapper> |
@@ -0,0 +1,7 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import com.ningdatech.carapi.safe.model.vo.NdInsureOutDangerVO; | |||||
public interface NdInsureOutDangerVOMapper extends BaseMapper<NdInsureOutDangerVO> { | |||||
} |
@@ -0,0 +1,7 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.NdInsureOutDangerVOMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityManageGrade; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* 安全管理综合评级 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-13 | |||||
*/ | |||||
public interface SecurityManageGradeMapper extends BaseMapper<SecurityManageGrade> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.SecurityManageGradeMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityManageResultEval; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* 安全制度建设分析评估 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface SecurityManageResultEvalMapper extends BaseMapper<SecurityManageResultEval> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.SecurityManageResultEvalMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityRiskEval; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* 安全责任体系分析评估 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface SecurityRiskEvalMapper extends BaseMapper<SecurityRiskEval> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.SecurityRiskEvalMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import com.ningdatech.carapi.analysis.entity.SecuritySystemBuildingEval; | |||||
/** | |||||
* <p> | |||||
* 安全责任体系分析评估 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface SecuritySystemBuildingEvalMapper extends BaseMapper<SecuritySystemBuildingEval> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.SecuritySystemBuildingEvalMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleAccidentEval; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* 车辆事故情况评估 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-17 | |||||
*/ | |||||
public interface VehicleAccidentEvalMapper extends BaseMapper<VehicleAccidentEval> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.VehicleAccidentEvalMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleOverSpeedEval; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* 车辆超速情况评估 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-17 | |||||
*/ | |||||
public interface VehicleOverSpeedEvalMapper extends BaseMapper<VehicleOverSpeedEval> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.VehicleOverSpeedEvalMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleServiceLife; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* 车辆使用年限 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
public interface VehicleServiceLifeMapper extends BaseMapper<VehicleServiceLife> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.VehicleServiceLifeMapper"> | |||||
</mapper> |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleViolationEval; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
/** | |||||
* <p> | |||||
* 车辆违章情况评估 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
public interface VehicleViolationEvalMapper extends BaseMapper<VehicleViolationEval> { | |||||
} |
@@ -0,0 +1,5 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.VehicleViolationEvalMapper"> | |||||
</mapper> |
@@ -0,0 +1,28 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCar; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import org.apache.ibatis.annotations.Param; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 车辆综合预警分析 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface WarnAnalysisCarMapper extends BaseMapper<WarnAnalysisCar> { | |||||
Integer selectVehiclesNum(@Param("companyName") String companyName); | |||||
Page<WarnAnalysisCar> pageCarAnalysis(Page<WarnAnalysisCar> page, @Param("param") WarnAnalysisListReq req); | |||||
List<WarnAnalysisCar> listCarAnalysis(@Param("param") WarnAnalysisListReq req); | |||||
Integer saveBatchXml(@Param("singleList") List<WarnAnalysisCar> singleList); | |||||
} |
@@ -0,0 +1,162 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.WarnAnalysisCarMapper"> | |||||
<select id="selectVehiclesNum" resultType="java.lang.Integer"> | |||||
select sum(vehicle_num) as carCount from nd_company_info where `name` = #{companyName} | |||||
</select> | |||||
<select id="pageCarAnalysis" resultType="com.ningdatech.carapi.analysis.entity.WarnAnalysisCar"> | |||||
select | |||||
car_id,car_no, | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
danger_score,danger_level | |||||
from(select | |||||
car_id,car_no, | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
(injured_count * 20 + dead_count * 100) danger_score, | |||||
(case when injured_count * 20 + dead_count * 100 >= 100 then 1 | |||||
when injured_count * 20 + dead_count * 100 >= 80 then 2 | |||||
when injured_count * 20 + dead_count * 100 >= 60 then 3 | |||||
else 4 end) danger_level | |||||
from (SELECT | |||||
b.id car_id, | |||||
b.car_plate car_no, | |||||
b.region_id, | |||||
b.company_id, | |||||
c.name company_name, | |||||
sum(ifnull(o.injuries,0)) injured_count, | |||||
sum(ifnull(o.death_toll,0)) dead_count, | |||||
ifnull(count(o.id),0) danger_count, | |||||
ifnull(count(oi.id),0) over_speed_count, | |||||
ifnull(count(vi.id),0) violation_count | |||||
FROM nd_vehicle_base_info b | |||||
left join nd_company_info c on b.company_id = c.id | |||||
left join nd_region r on b.region_id = r.id | |||||
left join (select id,car_plate,injuries,death_toll from nd_insure_out_danger where deleted = 0) o on b.car_plate = o.car_plate | |||||
left join nd_vehicle_overspeed_info oi on b.car_plate = oi.car_plate | |||||
left join nd_vehicle_violation vi on b.car_plate = vi.car_plate | |||||
where b.deleted = 0 and b.audit_state = 2 | |||||
<if test="param.regionIds != null and param.regionIds.size > 0"> | |||||
and b.region_id in | |||||
<foreach collection="param.regionIds" open="(" close=")" separator="," item="item"> | |||||
#{item} | |||||
</foreach> | |||||
</if> | |||||
<if test="param.companyName != null and param.companyName != ''"> | |||||
and c.name like concat('%',#{param.companyName},'%') | |||||
</if> | |||||
<if test="param.carNo != null and param.carNo != ''"> | |||||
and b.car_plate like concat('%',#{param.carNo},'%') | |||||
</if> | |||||
${param.dataScopeSql} | |||||
group by b.id,b.car_plate,b.region_id,b.company_id,c.name | |||||
) a ) aa | |||||
where 1 = 1 | |||||
<if test="param.dangerLevel != null and param.dangerLevel != ''"> | |||||
and aa.danger_level = #{param.dangerLevel} | |||||
</if> | |||||
</select> | |||||
<select id="listCarAnalysis" resultType="com.ningdatech.carapi.analysis.entity.WarnAnalysisCar"> | |||||
select | |||||
car_id,car_no, | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
danger_score,danger_level | |||||
from(select | |||||
car_id,car_no, | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
(danger_count / car_num * 40 + injured_count / car_num * 400) danger_score, | |||||
(case when dead_count > 0 then 1 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 60 then 2 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 40 | |||||
and danger_count / car_num * 40 + injured_count / car_num * 400 <= 60 then 3 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 20 | |||||
and danger_count / car_num * 40 + injured_count / car_num * 400 <= 40 then 4 end) danger_level | |||||
from (SELECT | |||||
count(DISTINCT b.id) car_num, | |||||
b.id car_id, | |||||
b.car_plate car_no, | |||||
b.region_id, | |||||
b.company_id, | |||||
c.name company_name, | |||||
ifnull(o.injured_count,0) injured_count, | |||||
ifnull(o.dead_count,0) dead_count, | |||||
ifnull(count(DISTINCT o.id),0) danger_count, | |||||
ifnull(count(DISTINCT oi.id),0) over_speed_count, | |||||
ifnull(count(DISTINCT vi.id),0) violation_count | |||||
FROM nd_vehicle_base_info b | |||||
left join nd_company_info c on b.company_id = c.id | |||||
left join nd_region r on b.region_id = r.id | |||||
right join | |||||
(select id,car_plate,injuries,death_toll, | |||||
sum(ifnull(injuries,0)) injured_count, | |||||
sum(ifnull(death_toll,0)) dead_count | |||||
from nd_insure_out_danger | |||||
where deleted = 0 | |||||
-- 统计近6个月的出险数据 | |||||
and accident_time | |||||
BETWEEN DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 5 MONTH),'%Y-%m-01 00:00:00') | |||||
AND LAST_DAY(NOW()) GROUP BY accident_time,car_plate ) o on b.car_plate = o.car_plate | |||||
left join nd_vehicle_overspeed_info oi on b.car_plate = oi.car_plate | |||||
left join nd_vehicle_violation vi on b.car_plate = vi.car_plate | |||||
where b.deleted = 0 and b.audit_state = 2 | |||||
<if test="param.regionIds != null and param.regionIds.size > 0"> | |||||
and b.region_id in | |||||
<foreach collection="param.regionIds" open="(" close=")" separator="," item="item"> | |||||
#{item} | |||||
</foreach> | |||||
</if> | |||||
<if test="param.companyName != null and param.companyName != ''"> | |||||
and c.name like concat('%',#{param.companyName},'%') | |||||
</if> | |||||
<if test="param.carNo != null and param.carNo != ''"> | |||||
and b.car_plate like concat('%',#{param.carNo},'%') | |||||
</if> | |||||
${param.dataScopeSql} | |||||
group by b.id,b.car_plate,b.region_id,b.company_id,c.name | |||||
) a ) aa | |||||
where 1 = 1 | |||||
<if test="param.dangerLevel != null and param.dangerLevel != ''"> | |||||
and aa.danger_level = #{param.dangerLevel} | |||||
</if> | |||||
</select> | |||||
<insert id="saveBatchXml" parameterType="java.util.List"> | |||||
INSERT INTO nd_warn_analysis_car | |||||
(region_id, | |||||
company_id, | |||||
company_name, | |||||
injured_count, | |||||
dead_count, | |||||
danger_count, | |||||
danger_score, | |||||
car_id, | |||||
car_no, | |||||
danger_level, | |||||
over_speed_count, | |||||
violation_count | |||||
) | |||||
values | |||||
<foreach collection="singleList" item="item" separator="," index="index"> | |||||
( | |||||
#{item.regionId}, | |||||
#{item.companyId}, | |||||
#{item.companyName}, | |||||
#{item.injuredCount}, | |||||
#{item.deadCount}, | |||||
#{item.dangerCount}, | |||||
#{item.dangerScore}, | |||||
#{item.carId}, | |||||
#{item.carNo}, | |||||
#{item.dangerLevel}, | |||||
#{item.overSpeedCount}, | |||||
#{item.violationCount} | |||||
) | |||||
</foreach> | |||||
</insert> | |||||
</mapper> |
@@ -0,0 +1,23 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCompany; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import org.apache.ibatis.annotations.Param; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 企业综合预警分析 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface WarnAnalysisCompanyMapper extends BaseMapper<WarnAnalysisCompany> { | |||||
List<WarnAnalysisCompany> listCompanyAnalysis(@Param("param") WarnAnalysisListReq req); | |||||
Integer saveBatchXml(@Param("singleList") List<WarnAnalysisCompany> singleList); | |||||
} |
@@ -0,0 +1,95 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.WarnAnalysisCompanyMapper"> | |||||
<select id="listCompanyAnalysis" resultType="com.ningdatech.carapi.analysis.entity.WarnAnalysisCompany"> | |||||
select | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
total_score,danger_level | |||||
from(select | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
(danger_count / car_num * 40 + injured_count / car_num * 400) total_score, | |||||
(case when dead_count > 0 then 1 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 60 then 2 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 40 | |||||
and danger_count / car_num * 40 + injured_count / car_num * 400 <= 60 then 3 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 20 | |||||
and danger_count / car_num * 40 + injured_count / car_num * 400 <= 40 then 4 end) danger_level | |||||
from (SELECT | |||||
count(DISTINCT b.id) car_num, | |||||
b.region_id, | |||||
b.company_id, | |||||
c.name company_name, | |||||
ifnull(o.injured_count,0) injured_count, | |||||
ifnull(o.dead_count,0) dead_count, | |||||
ifnull(count(DISTINCT o.id),0) danger_count, | |||||
ifnull(count(DISTINCT oi.id),0) over_speed_count, | |||||
ifnull(count(DISTINCT vi.id),0) violation_count | |||||
FROM nd_vehicle_base_info b | |||||
left join nd_company_info c on b.company_id = c.id | |||||
left join nd_region r on b.region_id = r.id | |||||
right join | |||||
-- 统计近6个月的出险数据 | |||||
(select id,car_plate,injuries,death_toll, | |||||
sum(ifnull(injuries,0)) injured_count, | |||||
sum(ifnull(death_toll,0)) dead_count | |||||
from nd_insure_out_danger | |||||
where deleted = 0 | |||||
and accident_time | |||||
BETWEEN DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 5 MONTH),'%Y-%m-01 00:00:00') | |||||
AND LAST_DAY(NOW()) GROUP BY accident_time,car_plate ) o on b.car_plate = o.car_plate | |||||
left join nd_vehicle_overspeed_info oi on b.car_plate = oi.car_plate | |||||
left join nd_vehicle_violation vi on b.car_plate = vi.car_plate | |||||
where b.deleted = 0 and b.audit_state = 2 | |||||
<if test="param.regionIds != null and param.regionIds.size > 0"> | |||||
and b.region_id in | |||||
<foreach collection="param.regionIds" open="(" close=")" separator="," item="item"> | |||||
#{item} | |||||
</foreach> | |||||
</if> | |||||
<if test="param.companyName != null and param.companyName != ''"> | |||||
and c.name like concat('%',#{param.companyName},'%') | |||||
</if> | |||||
<if test="param.carNo != null and param.carNo != ''"> | |||||
and b.car_plate like concat('%',#{param.carNo},'%') | |||||
</if> | |||||
${param.dataScopeSql} | |||||
group by b.region_id,b.company_id,c.name | |||||
) a | |||||
GROUP BY region_id,company_id,company_name) aa | |||||
where company_name is not null | |||||
<if test="param.dangerLevel != null and param.dangerLevel != ''"> | |||||
and aa.danger_level = #{param.dangerLevel} | |||||
</if> | |||||
</select> | |||||
<insert id="saveBatchXml" parameterType="java.util.List"> | |||||
INSERT INTO nd_warn_analysis_company | |||||
(region_id, | |||||
company_id, | |||||
company_name, | |||||
injured_count, | |||||
dead_count, | |||||
danger_count, | |||||
total_score, | |||||
danger_level, | |||||
violation_count | |||||
) | |||||
values | |||||
<foreach collection="singleList" item="item" separator="," index="index"> | |||||
( | |||||
#{item.regionId}, | |||||
#{item.companyId}, | |||||
#{item.companyName}, | |||||
#{item.injuredCount}, | |||||
#{item.deadCount}, | |||||
#{item.dangerCount}, | |||||
#{item.totalScore}, | |||||
#{item.dangerLevel}, | |||||
#{item.violationCount} | |||||
) | |||||
</foreach> | |||||
</insert> | |||||
</mapper> |
@@ -0,0 +1,23 @@ | |||||
package com.ningdatech.carapi.analysis.mapper; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisDriver; | |||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import org.apache.ibatis.annotations.Param; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 驾驶员综合预警分析 Mapper 接口 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-11-01 | |||||
*/ | |||||
public interface WarnAnalysisDriverMapper extends BaseMapper<WarnAnalysisDriver> { | |||||
List<WarnAnalysisDriver> listDriverAnalysis(@Param("param") WarnAnalysisListReq req); | |||||
Integer saveBatchXml(@Param("singleList") List<WarnAnalysisDriver> singleList); | |||||
} |
@@ -0,0 +1,87 @@ | |||||
<?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.ningdatech.carapi.analysis.mapper.WarnAnalysisDriverMapper"> | |||||
<select id="listDriverAnalysis" resultType="com.ningdatech.carapi.analysis.entity.WarnAnalysisDriver"> | |||||
select | |||||
driver_id,driver_name, | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
danger_score,danger_level | |||||
from(select | |||||
driver_id,driver_name, | |||||
region_id,company_id,company_name,injured_count, | |||||
dead_count,danger_count,over_speed_count,violation_count, | |||||
(danger_count / car_num * 40 + injured_count / car_num * 400) danger_score, | |||||
(case when dead_count > 0 then 1 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 60 then 2 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 40 | |||||
and danger_count / car_num * 40 + injured_count / car_num * 400 <= 60 then 3 | |||||
when danger_count / car_num * 40 + injured_count / car_num * 400 >= 20 | |||||
and danger_count / car_num * 40 + injured_count / car_num * 400 <= 40 then 4 end) danger_level | |||||
from (SELECT | |||||
count(DISTINCT b.id) car_num, | |||||
d.id driver_id,d.driver_name,c.region_id, | |||||
d.company_id,c.name company_name, | |||||
ifnull(o.injured_count,0) injured_count, | |||||
ifnull(o.dead_count,0) dead_count, | |||||
ifnull(count(DISTINCT o.id),0) danger_count, | |||||
ifnull(count(DISTINCT oi.id),0) over_speed_count, | |||||
ifnull(count(DISTINCT vi.id),0) violation_count | |||||
FROM nd_vehicle_base_info b | |||||
left join nd_vehicle_get_on g on b.car_plate = g.car_plate | |||||
right join nd_driver_info d on g.driver_id = d.id | |||||
left join nd_company_info c on d.company_id = c.id | |||||
left join nd_region r on c.region_id = r.id | |||||
right join | |||||
(select id,car_plate,injuries,death_toll, | |||||
sum(ifnull(injuries,0)) injured_count, | |||||
sum(ifnull(death_toll,0)) dead_count | |||||
from nd_insure_out_danger | |||||
where deleted = 0 | |||||
-- 统计近6个月的出险数据 | |||||
and accident_time | |||||
BETWEEN DATE_FORMAT(DATE_SUB(NOW(),INTERVAL 5 MONTH),'%Y-%m-01 00:00:00') | |||||
AND LAST_DAY(NOW()) GROUP BY accident_time,car_plate ) o on b.car_plate = o.car_plate | |||||
left join nd_vehicle_overspeed_info oi on b.car_plate = oi.car_plate | |||||
left join nd_vehicle_violation vi on b.car_plate = vi.car_plate | |||||
where b.deleted = 0 and b.audit_state = 2 and d.driver_name is not null and c.region_id is not null | |||||
${param.dataScopeSql} | |||||
group by d.id,d.driver_name,c.region_id,d.company_id,c.name | |||||
) a ) aa | |||||
where 1 = 1 | |||||
</select> | |||||
<insert id="saveBatchXml" parameterType="java.util.List"> | |||||
INSERT INTO nd_warn_analysis_driver | |||||
(region_id, | |||||
driver_id, | |||||
driver_name, | |||||
company_id, | |||||
company_name, | |||||
injured_count, | |||||
dead_count, | |||||
danger_count, | |||||
danger_score, | |||||
danger_level, | |||||
over_speed_count, | |||||
violation_count | |||||
) | |||||
values | |||||
<foreach collection="singleList" item="item" separator="," index="index"> | |||||
( | |||||
#{item.regionId}, | |||||
#{item.driverId}, | |||||
#{item.driverName}, | |||||
#{item.companyId}, | |||||
#{item.companyName}, | |||||
#{item.injuredCount}, | |||||
#{item.deadCount}, | |||||
#{item.dangerCount}, | |||||
#{item.dangerScore}, | |||||
#{item.dangerLevel}, | |||||
#{item.overSpeedCount}, | |||||
#{item.violationCount} | |||||
) | |||||
</foreach> | |||||
</insert> | |||||
</mapper> |
@@ -0,0 +1,19 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.IndustryStandards; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
public interface IIndustryStandardsService extends IService<IndustryStandards> { | |||||
boolean incrementDownCount(Long id); | |||||
void deleteById(Long id); | |||||
} |
@@ -0,0 +1,7 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import com.ningdatech.carapi.safe.model.vo.NdInsureOutDangerVO; | |||||
public interface INdInsureOutDangerVOService extends IService<NdInsureOutDangerVO> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityManageGrade; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 安全管理综合评级 服务类 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-13 | |||||
*/ | |||||
public interface ISecurityManageGradeService extends IService<SecurityManageGrade> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityManageResultEval; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 安全制度建设分析评估 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface ISecurityManageResultEvalService extends IService<SecurityManageResultEval> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import com.ningdatech.carapi.analysis.entity.SecurityRiskEval; | |||||
/** | |||||
* <p> | |||||
* 安全责任体系分析评估 服务类 | |||||
* </p> | |||||
* | |||||
* @author LiuXinXin | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface ISecurityRiskEvalService extends IService<SecurityRiskEval> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.SecuritySystemBuildingEval; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 安全责任体系分析评估 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface ISecuritySystemBuildingEvalService extends IService<SecuritySystemBuildingEval> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleAccidentEval; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 车辆事故情况评估 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-17 | |||||
*/ | |||||
public interface IVehicleAccidentEvalService extends IService<VehicleAccidentEval> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleOverSpeedEval; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 车辆超速情况评估 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-17 | |||||
*/ | |||||
public interface IVehicleOverSpeedEvalService extends IService<VehicleOverSpeedEval> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleServiceLife; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 车辆使用年限 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
public interface IVehicleServiceLifeService extends IService<VehicleServiceLife> { | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.VehicleViolationEval; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
/** | |||||
* <p> | |||||
* 车辆违章情况评估 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
public interface IVehicleViolationEvalService extends IService<VehicleViolationEval> { | |||||
} |
@@ -0,0 +1,25 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCar; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 车辆综合预警分析 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface IWarnAnalysisCarService extends IService<WarnAnalysisCar> { | |||||
Page<WarnAnalysisCar> pageCarAnalysis(Page<WarnAnalysisCar> page, WarnAnalysisListReq req); | |||||
List<WarnAnalysisCar> listCarAnalysis(WarnAnalysisListReq req); | |||||
Integer saveBatchXml(List<WarnAnalysisCar> singleList); | |||||
} |
@@ -0,0 +1,23 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCar; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisCompany; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 企业综合预警分析 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-14 | |||||
*/ | |||||
public interface IWarnAnalysisCompanyService extends IService<WarnAnalysisCompany> { | |||||
List<WarnAnalysisCompany> listCompanyAnalysis(WarnAnalysisListReq req); | |||||
Integer saveBatchXml(List<WarnAnalysisCompany> singleList); | |||||
} |
@@ -0,0 +1,22 @@ | |||||
package com.ningdatech.carapi.analysis.service; | |||||
import com.ningdatech.carapi.analysis.entity.WarnAnalysisDriver; | |||||
import com.baomidou.mybatisplus.extension.service.IService; | |||||
import com.ningdatech.carapi.analysis.entity.req.WarnAnalysisListReq; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* 驾驶员综合预警分析 服务类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-11-01 | |||||
*/ | |||||
public interface IWarnAnalysisDriverService extends IService<WarnAnalysisDriver> { | |||||
List<WarnAnalysisDriver> listDriverAnalysis(WarnAnalysisListReq warnAnalysisListReq); | |||||
Integer saveBatchXml(List<WarnAnalysisDriver> singleList); | |||||
} |
@@ -0,0 +1,30 @@ | |||||
package com.ningdatech.carapi.analysis.service.impl; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.ningdatech.carapi.analysis.entity.IndustryStandards; | |||||
import com.ningdatech.carapi.analysis.mapper.IndustryStandardsMapper; | |||||
import com.ningdatech.carapi.analysis.service.IIndustryStandardsService; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* <p> | |||||
* 服务实现类 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2022-10-15 | |||||
*/ | |||||
@Service | |||||
public class IndustryStandardsServiceImpl extends ServiceImpl<IndustryStandardsMapper, IndustryStandards> implements IIndustryStandardsService { | |||||
@Override | |||||
public boolean incrementDownCount(Long id) { | |||||
return baseMapper.incrementDownCount(id) > 0; | |||||
} | |||||
@Override | |||||
public void deleteById(Long id) { | |||||
baseMapper.deleteById(id); | |||||
} | |||||
} |
@@ -0,0 +1,16 @@ | |||||
package com.ningdatech.carapi.analysis.service.impl; | |||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | |||||
import com.ningdatech.carapi.analysis.mapper.NdInsureOutDangerVOMapper; | |||||
import com.ningdatech.carapi.analysis.service.INdInsureOutDangerVOService; | |||||
import com.ningdatech.carapi.safe.model.vo.NdInsureOutDangerVO; | |||||
import org.springframework.stereotype.Service; | |||||
/** | |||||
* @author CMM | |||||
* @description | |||||
* @since 2022/11/16 17:42 | |||||
*/ | |||||
@Service | |||||
public class NdInsureOutDangerVOServiceImpl extends ServiceImpl<NdInsureOutDangerVOMapper, NdInsureOutDangerVO> implements INdInsureOutDangerVOService { | |||||
} |