basic codes

main
PeterAlbus 3 years ago
parent 96577fd4ce
commit 1b3785aaf7

35
.gitignore vendored

@ -0,0 +1,35 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
/src/main/resources/5963105_www.peteralbus.com.pfx
/src/main/resources/application.yml

@ -1,2 +1,6 @@
# earthquick_springboot # earthquick_springboot
back end of project earthquick back end of project earthquick
使用流程:
将application.yml.example修改为application.yml
其中的数据库信息改成自己的

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.peteralbus</groupId>
<artifactId>earthquick</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>earthquick</name>
<description>earthquick</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<!-- 引入json处理包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>
<!--使用日期格式注解需要的两个包-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.13</version>
</dependency>
<!-- swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
</dependency>
<!-- swagger-bootstrap-ui增强ui -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<!--jsoup-->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

@ -0,0 +1,26 @@
package com.peteralbus;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* The type Earthquick application.
* @author PeterAlbus
*/
@SpringBootApplication
@EnableScheduling
public class EarthquickApplication
{
/**
* The entry point of application.
*
* @param args the input arguments
*/
public static void main(String[] args)
{
SpringApplication.run(EarthquickApplication.class, args);
}
}

@ -0,0 +1,48 @@
package com.peteralbus.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* The type Swagger config.
* @author PeterAlbus
* Created on 2022/1/20
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig
{
/**
* Create rest api docket.
*
* @return the docket
*/
@Bean
public Docket createRestApi()
{
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo()
{
return new ApiInfoBuilder()
.title("EarthQuick API Doc")
.description("This is a restful api document of EarthQuick.")
.contact(new Contact("PeterAlbus", "https://www.peteralbus.com/", "wuhongdb@163.com"))
.version("1.0")
.build();
}
}

@ -0,0 +1,168 @@
package com.peteralbus.controller;
import com.peteralbus.entity.EarthquakeInfo;
import com.peteralbus.service.EarthquakeInfoService;
import com.peteralbus.util.EstimateUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* The type Earthquake info controller.
*
* @author PeterAlbus
*/
@Api(value = "api of earthquake info")
@CrossOrigin
@RestController
@RequestMapping("/earthquakeInfo")
public class EarthquakeInfoController
{
/**
* The Estimate util.
*/
EstimateUtil estimateUtil;
/**
* The Earthquake info service.
*/
EarthquakeInfoService earthquakeInfoService;
/**
* Sets estimate util.
*
* @param estimateUtil the estimate util
*/
@Autowired
public void setEstimateUtil(EstimateUtil estimateUtil)
{
this.estimateUtil = estimateUtil;
}
/**
* Sets earthquake info service.
*
* @param earthquakeInfoService the earthquake info service
*/
@Autowired
public void setEarthquakeInfoService(EarthquakeInfoService earthquakeInfoService)
{
this.earthquakeInfoService = earthquakeInfoService;
}
/**
* Gets all earthquake.
*
* @return the all earthquake
*/
@ApiOperation(value = "get all earthquake")
@GetMapping("/getAllEarthquake")
List<EarthquakeInfo> getAllEarthquake()
{
return earthquakeInfoService.queryInfoWithLine(null);
}
/**
* Gets earthquake by id.
*
* @param earthquakeId the earthquake info id
* @return the earthquake by id
*/
@GetMapping("/getEarthquakeById")
EarthquakeInfo getEarthquakeById(int earthquakeId)
{
Map<String, Object> mapParameter = new HashMap<String, Object>();
mapParameter.put("earthquakeId",earthquakeId);
return earthquakeInfoService.queryInfoWithLine(mapParameter).get(0);
}
/**
* Gets death predict.
*
* @param earthquakeId the earthquake info id
* @return the death predict
*/
@GetMapping("/getDeathPredict")
public double getDeathPredict(int earthquakeId)
{
Map<String, Object> mapParameter = new HashMap<String, Object>();
mapParameter.put("earthquakeId",earthquakeId);
EarthquakeInfo earthquakeInfo=earthquakeInfoService.queryInfoWithLine(mapParameter).get(0);
int population=3133;
return estimateUtil.deathPredict(population,earthquakeInfo.getMagnitude(),earthquakeInfo.getHighIntensity());
}
/**
* Gets economy predict.
*
* @param earthquakeId the earthquake info id
* @return the economy predict
*/
@GetMapping("/getEconomyPredict")
public double getEconomyPredict(int earthquakeId)
{
Map<String, Object> mapParameter = new HashMap<String, Object>();
mapParameter.put("earthquakeId",earthquakeId);
EarthquakeInfo earthquakeInfo=earthquakeInfoService.queryInfoWithLine(mapParameter).get(0);
return estimateUtil.economyPredict(earthquakeInfo.getHighIntensity());
}
/**
* Add earthquake string.
*
* @param earthquakeInfo the earthquake info
* @return the string
*/
@RequestMapping("/addEarthquake")
public String addEarthquake(EarthquakeInfo earthquakeInfo)
{
Double dividingLine=105.0;
if(earthquakeInfo.getLongitude()<dividingLine)
{
/*西部地区*/
earthquakeInfo.getIntensity(5.253,1.398,4.164,26,0,2.019,1.398,2.943,8,0);
}
else
{
/*东部地区*/
earthquakeInfo.getIntensity(5.019,1.446,4.136,24,0,2.240,1.446,3.070,9,0);
}
int result=earthquakeInfoService.insertEarthquakeInfo(earthquakeInfo);
if(result==0)
{
return "fail";
}
else
{
return "success";
}
}
/**
* Delete earthquake string.
*
* @param earthquakeId the earthquake id
* @return the string
*/
@RequestMapping("/deleteById")
public String deleteEarthquake(int earthquakeId)
{
EarthquakeInfo earthquakeInfo=this.getEarthquakeById(earthquakeId);
int result=earthquakeInfoService.deleteEarthquakeInfo(earthquakeInfo);
if(result>0)
{
return "success";
}
else
{
return "fail";
}
}
}

@ -0,0 +1,121 @@
package com.peteralbus.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* The type Earthquake info.
*
* @author PeterAlbus
*/
@ToString
@Data
@AllArgsConstructor
@NoArgsConstructor
public class EarthquakeInfo implements Serializable
{
@TableId(type= IdType.ASSIGN_ID)
private Long earthquakeId;
private String earthquakeName;
private Double magnitude;
private Double highIntensity;
private Double longitude;
private Double latitude;
private Double depth;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime earthquakeTime;
@TableField(exist = false)
private List<IntensityLine> intensityLineList=new ArrayList<>();
/**
* Gets intensity.
*
* @param x1 The first regression constant of the regression equation(for long radius)
* @param y1 the second regression constant of the regression equation(for long radius)
* @param z1 the third regression constant of the regression equation(for long radius)
* @param b1 the fourth regression constant of the regression equation(for long radius)
* @param e1 the fifth regression constant of the regression equation(for long radius)
* @param x2 The first regression constant of the regression equation(for short radius)
* @param y2 the second regression constant of the regression equation(for short radius)
* @param z2 the third regression constant of the regression equation(for short radius)
* @param b2 the fourth regression constant of the regression equation(for short radius)
* @param e2 the fifth regression constant of the regression equation(for short radius)
*/
public void getIntensity(double x1,double y1,double z1,double b1,double e1,double x2,double y2,double z2,double b2,double e2)
{
double longRadius =0,shortRadius = 0;
double ia=x1+y1*magnitude-z1*Math.log10(longRadius+b1)+e1;
double ib=x2+y2*magnitude-z2*Math.log10(shortRadius+b2)+e2;
System.out.println("震中烈度:"+ia+"/"+ib);
setHighIntensity(ia);
int intensity=(int)ia;
intensityLineList.clear();
int count=0;
while (intensity>3)
{
longRadius=Math.pow(10,-(intensity-x1-e1-y1*magnitude)/z1)-b1;
shortRadius=Math.pow(10,-(intensity-x2-e2-y2*magnitude)/z2)-b2;
IntensityLine intensityLine=new IntensityLine(longRadius,shortRadius,-20.0,intensity,earthquakeId);
intensityLineList.add(intensityLine);
intensity--;
count++;
}
}
/**
* Gets intensity , use ln.
*
* @param x1 The first regression constant of the regression equation(for long radius)
* @param y1 the second regression constant of the regression equation(for long radius)
* @param z1 the third regression constant of the regression equation(for long radius)
* @param b1 the fourth regression constant of the regression equation(for long radius)
* @param x2 The first regression constant of the regression equation(for short radius)
* @param y2 the second regression constant of the regression equation(for short radius)
* @param z2 the third regression constant of the regression equation(for short radius)
* @param b2 the fourth regression constant of the regression equation(for short radius)
*/
public void getIntensityLn(double x1,double y1,double z1,double b1,double x2,double y2,double z2,double b2)
{
double longRadius =0,shortRadius = 0;
double ia=x1+y1*magnitude-z1*Math.log10(longRadius+b1);
double ib=x2+y2*magnitude-z2*Math.log10(shortRadius+b2);
System.out.println("震中烈度:"+ia+"/"+ib);
setHighIntensity(ia);
int intensity=(int)ia;
intensityLineList.clear();
while (intensity>1)
{
longRadius=Math.exp(-(intensity-x1-y1*magnitude)/z1)-b1;
shortRadius=Math.exp(-(intensity-x2-y2*magnitude)/z2)-b2;
IntensityLine intensityLine=new IntensityLine(longRadius,shortRadius,-20.0,intensity,earthquakeId);
intensityLineList.add(intensityLine);
intensity--;
}
}
/**
* Gets formatted time.
*
* @return the formatted time
*/
public String getFormattedTime()
{
DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return dateTimeFormatter.format(earthquakeTime);
}
}

@ -0,0 +1,39 @@
package com.peteralbus.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.io.Serializable;
/**
* The type Intensity line.
*
* @author PeterAlbus
*/
@ToString
@Data
@AllArgsConstructor
@NoArgsConstructor
public class IntensityLine implements Serializable
{
@TableId(type= IdType.ASSIGN_ID)
private Long lineId;
private Double longRadius;
private Double shortRadius;
private Double angle;
private Integer intensity;
private Long earthquakeId;
public IntensityLine(Double longRadius, Double shortRadius, Double angle, Integer intensity, Long earthquakeId)
{
this.longRadius = longRadius;
this.shortRadius = shortRadius;
this.angle = angle;
this.intensity = intensity;
this.earthquakeId = earthquakeId;
}
}

@ -0,0 +1,26 @@
package com.peteralbus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.peteralbus.entity.EarthquakeInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
* The interface Earthquake info mapper.
* @author PeterAlbus
* Created on 2022/1/20.
*/
@Mapper
public interface EarthquakeInfoMapper extends BaseMapper<EarthquakeInfo>
{
/**
* Query info with line list.
*
* @param parameter the parameter which can contain earthquakeId,startIndex,pageSize
* @return the list
*/
List<EarthquakeInfo> queryInfoWithLine(Map<String, Object> parameter);
}

@ -0,0 +1,15 @@
package com.peteralbus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.peteralbus.entity.IntensityLine;
import org.apache.ibatis.annotations.Mapper;
/**
* The interface Intensity line mapper.
* @author PeterAlbus
* Created on 2022/1/20.
*/
@Mapper
public interface IntensityLineMapper extends BaseMapper<IntensityLine>
{
}

@ -0,0 +1,39 @@
package com.peteralbus.service;
import com.peteralbus.entity.EarthquakeInfo;
import java.util.List;
import java.util.Map;
/**
* The interface Earthquake info service.
* @author PeterAlbus
* Created on 2022/1/20.
*/
public interface EarthquakeInfoService
{
/**
* Query info with line list.
*
* @param parameter the parameter
* @return the list
*/
List<EarthquakeInfo> queryInfoWithLine(Map<String, Object> parameter);
/**
* Insert earthquake info int.
*
* @param earthquakeInfo the earthquake info
* @return the int
*/
int insertEarthquakeInfo(EarthquakeInfo earthquakeInfo);
/**
* Delete earthquake info int.
*
* @param earthquakeInfo the earthquake info
* @return the int
*/
int deleteEarthquakeInfo(EarthquakeInfo earthquakeInfo);
}

@ -0,0 +1,20 @@
package com.peteralbus.service;
import java.util.List;
/**
* The interface Intensity line service.
* @author PeterAlbus
* Created on 2022/1/20.
*/
public interface IntensityLineService
{
/**
* Gets multi line string wkt to json.
*
* @param wkt the wkt
* @return the multi line string wkt to json
*/
List<Double[]> getMultiLineStringWktToJson(String wkt);
}

@ -0,0 +1,91 @@
package com.peteralbus.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.peteralbus.entity.EarthquakeInfo;
import com.peteralbus.entity.IntensityLine;
import com.peteralbus.mapper.EarthquakeInfoMapper;
import com.peteralbus.mapper.IntensityLineMapper;
import com.peteralbus.service.EarthquakeInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* The type Earthquake info service.
* @author PeterAlbus
* Created on 2022/1/20.
*/
@Service
public class EarthquakeInfoServiceImpl implements EarthquakeInfoService
{
/**
* The Earthquake info mapper.
*/
EarthquakeInfoMapper earthquakeInfoMapper;
/**
* The Intensity line mapper.
*/
IntensityLineMapper intensityLineMapper;
/**
* Sets earthquake info mapper.
*
* @param earthquakeInfoMapper the earthquake info mapper
*/
@Autowired
public void setEarthquakeInfoMapper(EarthquakeInfoMapper earthquakeInfoMapper)
{
this.earthquakeInfoMapper = earthquakeInfoMapper;
}
/**
* Sets intensity line mapper.
*
* @param intensityLineMapper the intensity line mapper
*/
@Autowired
public void setIntensityLineMapper(IntensityLineMapper intensityLineMapper)
{
this.intensityLineMapper = intensityLineMapper;
}
@Override
public List<EarthquakeInfo> queryInfoWithLine(Map<String, Object> parameter)
{
return earthquakeInfoMapper.queryInfoWithLine(parameter);
}
@Override
public int insertEarthquakeInfo(EarthquakeInfo earthquakeInfo)
{
int result = 0;
result = earthquakeInfoMapper.insert(earthquakeInfo);
if (result == 0)
{
return result;
}
for (IntensityLine inensityLine : earthquakeInfo.getIntensityLineList())
{
inensityLine.setEarthquakeId(earthquakeInfo.getEarthquakeId());
result = intensityLineMapper.insert(inensityLine);
}
return result;
}
@Override
public int deleteEarthquakeInfo(EarthquakeInfo earthquakeInfo)
{
int result = 0;
QueryWrapper<IntensityLine> intensityLineQueryWrapper = new QueryWrapper<>();
intensityLineQueryWrapper.eq("earthquake_id", earthquakeInfo.getEarthquakeId());
result = intensityLineMapper.delete(intensityLineQueryWrapper);
if (result > 0)
{
result = earthquakeInfoMapper.deleteById(earthquakeInfo);
}
return result;
}
}

@ -0,0 +1,40 @@
package com.peteralbus.service.impl;
import com.peteralbus.service.IntensityLineService;
import java.util.ArrayList;
import java.util.List;
/**
* The type Intensity line service.
* @author PeterAlbus
* Created on 2022/1/20.
*/
public class IntensityLineServiceImpl implements IntensityLineService
{
@Override
public List<Double[]> getMultiLineStringWktToJson(String wkt)
{
String toTailWkt = wkt.substring(0, wkt.length() - 1);
String[] strHead = toTailWkt.split("\\(", 2);
String[] strList = strHead[1].split("\\),\\(");
List<Double[]> list = new ArrayList<Double[]>();
for (String value : strList)
{
String item = value.trim();
item = item.substring(1, item.length() - 1);
String[] items = item.split(",");
for (String s : items)
{
String jItem = s.trim();
String[] jItems = jItem.split(" ");
Double[] listResult = new Double[]{
Double.parseDouble(jItems[0]),
Double.parseDouble(jItems[1])};
list.add(listResult);
}
}
return list;
}
}

@ -0,0 +1,86 @@
package com.peteralbus.task;
import com.peteralbus.entity.EarthquakeInfo;
import com.peteralbus.service.EarthquakeInfoService;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* The type Schedule Task.
* @author PeterAlbus
* Created on 2022/1/20.
*/
@Component
public class ScheduleTask
{
EarthquakeInfoService earthquakeInfoService;
@Autowired
public void setEarthquakeInfoService(EarthquakeInfoService earthquakeInfoService)
{
this.earthquakeInfoService = earthquakeInfoService;
}
@Scheduled(cron = "0 55 23 * * ?")
public void getNewEarthquake()
{
String url = "http://www.ceic.ac.cn/speedsearch";
try
{
Document doc = Jsoup.connect(url).get();
Element element = doc.select("table").first();
Elements els = element.select("tr");
int skip=1;
for (Element el : els)
{
if(skip==1)
{
skip=0;
continue;
}
Elements ele = el.select("td");
Double magnitude=Double.parseDouble(ele.get(0).text());
Double longitude=Double.parseDouble(ele.get(3).text());
Double latitude=Double.parseDouble(ele.get(2).text());
Double depth=Double.parseDouble(ele.get(4).text());
String earthquakeName=ele.get(5).text();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time=LocalDateTime.parse(ele.get(1).text(),dtf);
EarthquakeInfo earthquakeInfo=new EarthquakeInfo();
earthquakeInfo.setEarthquakeName(earthquakeName);
earthquakeInfo.setLatitude(latitude);
earthquakeInfo.setLongitude(longitude);
earthquakeInfo.setLatitude(latitude);
earthquakeInfo.setMagnitude(magnitude);
earthquakeInfo.setEarthquakeTime(time);
earthquakeInfo.setDepth(depth);
Double dividingLine=105.1;
if(earthquakeInfo.getLongitude()<dividingLine)
{
earthquakeInfo.getIntensity(5.253,1.398,4.164,26,0,2.019,1.398,2.943,8,0);
}
else
{
earthquakeInfo.getIntensity(5.019,1.446,4.136,24,0,2.240,1.446,3.070,9,0);
}
if(earthquakeInfo.getMagnitude()>4.0)
{
earthquakeInfoService.insertEarthquakeInfo(earthquakeInfo);
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

@ -0,0 +1,49 @@
package com.peteralbus.util;
import org.springframework.stereotype.Component;
/**
* The type Estimate util.
* @author PeterAlbus
*/
@Component
public class EstimateUtil
{
/**
* death predict int.
*
* @param population the population
* @param magnitude the magnitude
* @return the double
*/
public double deathPredict(int population,double magnitude,double intensity)
{
double deathPredict = 0;
/*M为震级 I为震中强度*/
double mCoefficient = Math.abs((magnitude-4.17)/0.35*intensity-0.97);
/*population 为人口密度*/
double denCoefficient = 0.05*Math.log(population)+0.74;
/*白天为1夜晚为0.75*/
double timeCoefficient = 0.75;
/*西部强度修正系数 0.3661*/
double strengthCoefficient = 0.4853;
double bdr = 0.5;
deathPredict = 0.461*mCoefficient*denCoefficient*timeCoefficient*strengthCoefficient*Math.exp(12.285*bdr);
return deathPredict;
// double deathPredict = 0;
// deathPredict = 9.6*Math.pow(10,-11)*(0.00564*population+0.1634)*Math.exp(4.19*magnitude);
// return (int)deathPredict;
}
/**
* economy lose predict double.
*
* @param highIntensity the high intensity
* @return the double
*/
public double economyPredict(double highIntensity)
{
return Math.pow(10,0.84444*highIntensity-1.831)/10000;
}
}

@ -0,0 +1,26 @@
server:
port: 8087
spring:
servlet:
multipart:
enabled: true
max-file-size: 100MB
max-request-size: 1000MB
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
datasource:
username: username
password: password
url: jdbc:mysql://47.117.160.245:3306/earthquake?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
mvc:
pathmatch:
matching-strategy: ant_path_matcher
mybatis-plus:
mapper-locations: classpath:mapper/*Mapper.xml
type-aliases-package: com.peteralbus.entity
configuration:
map-underscore-to-camel-case: true

@ -0,0 +1,33 @@
<?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.peteralbus.mapper.EarthquakeInfoMapper">
<resultMap id="EarthquakeInfoWithLines" type="EarthquakeInfo">
<id property="earthquakeId" column="earthquake_id"/>
<result property="earthquakeName" column="earthquake_name"/>
<result property="magnitude" column="magnitude"/>
<result property="highIntensity" column="high_intensity"/>
<result property="longitude" column="longitude"/>
<result property="latitude" column="latitude"/>
<result property="depth" column="depth"/>
<result property="earthquakeTime" column="earthquake_time"/>
<collection property="intensityLineList" javaType="list" ofType="IntensityLine">
<id property="lineId" column="line_id"/>
<result property="longRadius" column="long_radius"/>
<result property="shortRadius" column="short_radius"/>
<result property="angle" column="angle"/>
<result property="intensity" column="intensity"/>
<result property="earthquakeId" column="earthquake_id"/>
</collection>
</resultMap>
<select id="queryInfoWithLine" resultMap="EarthquakeInfoWithLines">
select earthquake_info.earthquake_id,earthquake_name,magnitude,high_intensity,longitude, latitude, depth ,earthquake_time, line_id, long_radius, angle, intensity, short_radius
from earthquake.earthquake_info,earthquake.intensity_line
WHERE intensity_line.earthquake_id=earthquake_info.earthquake_id
<if test="earthquakeId !=null">
and intensity_line.earthquake_id=#{earthquakeId}
</if>
<if test="startIndex != null and pageSize != NULL">
limit #{startIndex},#{pageSize}
</if>
</select>
</mapper>

@ -0,0 +1,25 @@
package com.peteralbus;
import com.peteralbus.entity.EarthquakeInfo;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
@SpringBootTest
class EarthquickApplicationTests
{
@Test
void contextLoads()
{
}
}
Loading…
Cancel
Save