Commit 24ec5360 by yangyang

同步(西藏)

parent 9e22b2e8
package com.founder.commonutils.model.newPublicEntity; package com.founder.commonutils.model.newPublicEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.IOException;
import java.io.Serializable; import java.io.Serializable;
import lombok.Data; import lombok.Data;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import org.springframework.beans.BeanUtils;
import org.springframework.web.multipart.MultipartFile;
/** /**
* (TbStClgj)表实体类 * (TbStClgj)表实体类
...@@ -85,6 +81,11 @@ public class SkTrail extends Model<SkTrail> implements Comparable<SkTrail>{ ...@@ -85,6 +81,11 @@ public class SkTrail extends Model<SkTrail> implements Comparable<SkTrail>{
private String score; private String score;
/** /**
* 火车、飞机、寄递 出发1/达到2
*/
private String status;
/**
* 获取主键值 * 获取主键值
* *
* @return 主键值 * @return 主键值
......
package com.founder.commonutils.util;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* @Description 常用获取客户端信息的工具
*/
public class NetworkUtil {
/**
* 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址;
*
* @param request
* @return
* @throws
*/
/**
* 获取当前网络ip
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request){
String ipAddress = request.getHeader("X-Real-IP");
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
if("127.0.0.1".equals(ipAddress) ||
"0:0:0:0:0:0:0:1".equals(ipAddress)){
//根据网卡取本机配置的IP
InetAddress inet=null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ipAddress= inet.getHostAddress();
}
}
//对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
if(ipAddress!=null && ipAddress.length()>15){
//"***.***.***.***".length() = 15
if(ipAddress.indexOf(",")>0){
ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
}
}
return ipAddress;
}
}
...@@ -145,6 +145,13 @@ ...@@ -145,6 +145,13 @@
<artifactId>druid-spring-boot-starter</artifactId> <artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version> <version>1.1.10</version>
</dependency> </dependency>
<!--jasypt start-->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
<!--jasypt end-->
</dependencies> </dependencies>
<build> <build>
<plugins> <plugins>
......
...@@ -8,6 +8,7 @@ import com.founder.commonutils.model.newPublicEntity.ThirdToken; ...@@ -8,6 +8,7 @@ import com.founder.commonutils.model.newPublicEntity.ThirdToken;
import com.founder.commonutils.model.newPublicEntity.Token; import com.founder.commonutils.model.newPublicEntity.Token;
import com.founder.commonutils.util.JwtUser; import com.founder.commonutils.util.JwtUser;
import com.founder.commonutils.util.KeyUtil; import com.founder.commonutils.util.KeyUtil;
import com.founder.commonutils.util.NetworkUtil;
import com.founder.servicebase.logs.mapper.mysqlMapper.SkSysLogMapper; import com.founder.servicebase.logs.mapper.mysqlMapper.SkSysLogMapper;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import lombok.SneakyThrows; import lombok.SneakyThrows;
...@@ -141,8 +142,8 @@ public class SysLogAspect { ...@@ -141,8 +142,8 @@ public class SysLogAspect {
toString()); toString());
LOG.info("HTTP_METHOD : " + request.getMethod()); LOG.info("HTTP_METHOD : " + request.getMethod());
LOG.info("IP : " + request.getRemoteAddr()); LOG.info("IP : " + NetworkUtil.getIpAddr(request));
sysLog.setIp(request.getRemoteAddr()); sysLog.setIp(NetworkUtil.getIpAddr(request));
//开始调用时间 //开始调用时间
// 计时并调用目标函数 // 计时并调用目标函数
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.founder.commonutils.model.newPublicEntity.MapRestResult; import com.founder.commonutils.model.newPublicEntity.MapRestResult;
import com.founder.commonutils.model.newPublicEntity.SkRegionalsResultAll;
import com.founder.commonutils.model.vo.param.SkTrailParam; import com.founder.commonutils.model.vo.param.SkTrailParam;
import com.founder.commonutils.model.vo.param.SkTrailSaveParam; import com.founder.commonutils.model.vo.param.SkTrailSaveParam;
import com.founder.commonutils.model.vo.response.SkTrailVO; import com.founder.commonutils.model.vo.response.SkTrailVO;
...@@ -18,6 +19,8 @@ import com.founder.servicebase.logs.OperationType; ...@@ -18,6 +19,8 @@ import com.founder.servicebase.logs.OperationType;
import com.founder.publicapi.service.SkTrailService; import com.founder.publicapi.service.SkTrailService;
import com.founder.servicebase.service.SkDictionaryService; import com.founder.servicebase.service.SkDictionaryService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -26,8 +29,10 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -26,8 +29,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.text.ParseException;
import java.util.List; import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* (SkTrail)表控制层 * (SkTrail)表控制层
...@@ -201,15 +206,158 @@ public class SkTrailController extends ApiController implements ExcelControllerI ...@@ -201,15 +206,158 @@ public class SkTrailController extends ApiController implements ExcelControllerI
IPage page1 = skTrailService.page(page, queryWrapper); IPage page1 = skTrailService.page(page, queryWrapper);
List<SkTrail> records = page1.getRecords(); List<SkTrail> records = page1.getRecords();
SimpleDateFormat sf = new SimpleDateFormat();
records.sort(new Comparator<SkTrail>() {
@Override
public int compare(SkTrail o1, SkTrail o2) {
try {
long date1 = sf.parse(o1.getDate()).getTime();
long date2 = sf.parse(o2.getDate()).getTime();
if(date1 > date2){
return -1;
}else{
return 1;
}
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
});
List<SkTrailVO> list = new ArrayList<>(); List<SkTrailVO> list = new ArrayList<>();
for (SkTrail skTrail : records) { for (SkTrail skTrail : records) {
list.add(new SkTrailVO(skTrail, findByBh(skTrail.getObjectvalue(),skTrail.getObjecttype()))); list.add(new SkTrailVO(skTrail, findByBh(skTrail.getObjectvalue(),skTrail.getObjecttype())));
} }
return new MapRestResult(200, "OK", page1.getTotal(), list); return new MapRestResult(200, "OK", page1.getTotal(), list);
}
@PostMapping("queryTj")
@ApiOperation(value = "轨迹信息统计")
public MapRestResult queryTj(@RequestBody SkTrailParam sktrailParam) {
Map<String,String> mapResult = new HashMap<>();
//分页
Page page = new Page(sktrailParam.getPage(), sktrailParam.getPageSize());
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.eq("isDeleted", "0");
queryWrapper.orderByAsc("date");
if (sktrailParam.getLikeField() != null && !sktrailParam.getLikeField().equals("")) {
queryWrapper.eq("objectType", sktrailParam.getLikeField());
}
if (sktrailParam.getLikeValue() != null && !sktrailParam.getLikeValue().equals("")) {
queryWrapper.like("objectValue", sktrailParam.getLikeValue());
}
//时间
if (sktrailParam.getKssj() != null && !sktrailParam.getKssj().equals("")) {
queryWrapper.ge("str_to_date(date,'%Y-%m-%d %H:%i:%s')", sktrailParam.getKssj());
}
if (sktrailParam.getJssj() != null && !sktrailParam.getJssj().equals("")) {
queryWrapper.le("str_to_date(date,'%Y-%m-%d %H:%i:%s')", sktrailParam.getJssj());
}
IPage page1 = skTrailService.page(page, queryWrapper);
List<SkTrail> records = page1.getRecords();// 轨迹集合
List<String> listCf = new ArrayList<>();// 存储出发数据
List<String> listDd = new ArrayList<>();// 存储达到数据
List<String> listCfDistinct = new ArrayList<>();// 存储出发数据(去重后)
List<String> listDdDistinct = new ArrayList<>();// 存储达到数据(去重后)
ArrayList<Map.Entry<String,Object>> listMapCf = new ArrayList<>();// 始发地点统计
ArrayList<Map.Entry<String,Object>> listMapMd = new ArrayList<>();// 目的地点统计
if(records.size()>0)if(records.size()>0){
// 火车、飞机轨迹进行计算
if("hcgj".equals(sktrailParam.getLikeField())||"jcgj".equals(sktrailParam.getLikeField())||"jdgj".equals(sktrailParam.getLikeField())){
// 对拿回得所有数据进行分组 出发为一组/达到为一组
Map<String,List<SkTrail>> map = records.stream().collect(Collectors.groupingBy(SkTrail::getStatus));
map.forEach((key,value)->{
if(key.equals("1")){
value.stream().forEach(h->{
if(StringUtils.isNotEmpty(h.getAddress())) {
listCf.add(h.getAddress());
}
});
}else if(key.equals("2")){
value.stream().forEach(h->{
if(StringUtils.isNotEmpty(h.getAddress())) {
listDd.add(h.getAddress());
}
});
}
});
listCfDistinct = listCf.stream().distinct().collect(Collectors.toList());
// 对出发组地点 出现次数最多得地址
Map<String,Integer> mapTjCf = new LinkedHashMap<>();
for(String cf:listCfDistinct){
List<String> listDdGl = new ArrayList<>();// 过滤后数据
listDdGl = listCf.stream().filter(s -> s.equals(cf)).collect(Collectors.toList());
mapTjCf.put(cf,listDdGl.size());
}
Map<String, Object> valueResult = new LinkedHashMap<>();
Map<String, Object> valueResult1 = new LinkedHashMap<>();
mapTjCf.entrySet().stream().sorted(Map.Entry.<String,Integer>
comparingByValue().reversed())
.forEachOrdered(b->valueResult.put(b.getKey(), b.getValue()));
listMapCf = new ArrayList<>(valueResult.entrySet());
listMapCf = (ArrayList<Map.Entry<String,Object>>)listMapCf.stream().parallel()
.limit(1).collect(Collectors.toList());
listDdDistinct = listDd.stream().distinct().collect(Collectors.toList());
// 对目的地组地点 出现次数最多得地址
Map<String,Integer> mapTjDd = new HashMap<>();
for(String dd:listDdDistinct){
List<String> listDdGl = new ArrayList<>();// 过滤后数据
listDdGl = listDd.stream().filter(s -> s.equals(dd)).collect(Collectors.toList());
mapTjDd.put(dd,listDdGl.size());
}
mapTjDd.entrySet().stream().sorted(Map.Entry.<String,Integer>
comparingByValue().reversed())
.forEachOrdered(b->valueResult1.put(b.getKey(), b.getValue()));
listMapMd = new ArrayList<>(valueResult1.entrySet());
listMapMd = (ArrayList<Map.Entry<String,Object>>)listMapMd.stream().parallel()
.limit(1).collect(Collectors.toList());
String lastGj = "";// 日期为空 展示暂无数据
if(StringUtil.isEmpty(records.get(0).getDate())||"jdgj".equals(sktrailParam.getLikeField())||StringUtil.isEmpty(records.get(1).getAddress())){
lastGj = "暂无数据";
}else{
lastGj = records.get(0).getDate()+","+records.get(0).getAddress()+"—>"+records.get(1).getAddress();
}
mapResult.put("zxgj",lastGj);// 最后两条数据即为 最新轨迹
mapResult.put("sfdd",listMapCf.get(0).getKey()+"("+listMapCf.get(0).getValue()+"次"+")");
mapResult.put("mddd",listMapMd.get(0).getKey()+"("+listMapMd.get(0).getValue()+"次"+")");
}else if("wbgj".equals(sktrailParam.getLikeField())||"ldgj".equals(sktrailParam.getLikeField())){
records.stream().forEach(h->{
if(StringUtils.isNotEmpty(h.getAddress())) {
listCf.add(h.getAddress());
}
});
listCfDistinct = listCf.stream().distinct().collect(Collectors.toList());
// 对地点 出现次数最多得地址
Map<String,Integer> mapTjCf = new LinkedHashMap<>();
for(String cf:listCfDistinct){
List<String> listDdGl = new ArrayList<>();// 过滤后数据
listDdGl = listCf.stream().filter(s -> s.equals(cf)).collect(Collectors.toList());
mapTjCf.put(cf,listDdGl.size());
}
Map<String, Object> valueResult = new LinkedHashMap<>();
mapTjCf.entrySet().stream().sorted(Map.Entry.<String,Integer>
comparingByValue().reversed())
.forEachOrdered(b->valueResult.put(b.getKey(), b.getValue()));
listMapCf = new ArrayList<>(valueResult.entrySet());
listMapCf = (ArrayList<Map.Entry<String,Object>>)listMapCf.stream().parallel()
.limit(1).collect(Collectors.toList());
String lastGj = "";// 日期为空 展示暂无数据
if(StringUtil.isEmpty(records.get(0).getDate())||StringUtil.isEmpty(records.get(0).getAddress())){
lastGj = "暂无数据";
}else{
lastGj = records.get(0).getDate()+","+records.get(0).getAddress();
}
mapResult.put("zxgj",lastGj);// 最后两条数据即为 最新轨迹
mapResult.put("dd",listMapCf.get(0).getKey()+"("+listMapCf.get(0).getValue()+"次"+")");
}
}
return new MapRestResult(200, "OK", mapResult.size(), mapResult);
} }
@PostMapping("queryRxgj") @PostMapping("queryRxgj")
......
...@@ -10,15 +10,17 @@ logging.level.root=INFO ...@@ -10,15 +10,17 @@ logging.level.root=INFO
#mysql????????? #mysql?????????
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.xzxtdb.url=jdbc:mysql://47.92.48.137:3900/skyp?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai spring.datasource.xzxtdb.url=ENC(Y1dXm7lJCGbPffW6Pbg/Uid1UK2Z1Tu2TNdp9AgqT/iXb4hNRriak+glPXYD6BnO4fQwN9Sj/zguByboO4FagHEQRN0tE57RI6rJEUeTt2JHb1rc2BG1wE9QPK96E5o9K/1TSAjnD/Rr2eAxy11tFLL2fQP35EOX)
spring.datasource.xzxtdb.username=root spring.datasource.xzxtdb.username=ENC(e7qsvm7EnrdHG04YnaTMsw==)
spring.datasource.xzxtdb.password=gkptCcYy123 spring.datasource.xzxtdb.password=ENC(XPnOn0zoWMgOG8gIws+Bh7JITC3mMqSn)
spring.datasource.xzxtdb.type=com.alibaba.druid.pool.DruidDataSource
#oracle?????????(?????) #oracle?????????(?????)
spring.datasource.qgdb.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.qgdb.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.qgdb.url=jdbc:mysql://47.92.48.137:3900/skyp?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai spring.datasource.qgdb.url=ENC(Y1dXm7lJCGbPffW6Pbg/Uid1UK2Z1Tu2TNdp9AgqT/iXb4hNRriak+glPXYD6BnO4fQwN9Sj/zguByboO4FagHEQRN0tE57RI6rJEUeTt2JHb1rc2BG1wE9QPK96E5o9K/1TSAjnD/Rr2eAxy11tFLL2fQP35EOX)
spring.datasource.qgdb.username=root spring.datasource.qgdb.username=ENC(e7qsvm7EnrdHG04YnaTMsw==)
spring.datasource.qgdb.password=gkptCcYy123 spring.datasource.qgdb.password=ENC(XPnOn0zoWMgOG8gIws+Bh7JITC3mMqSn)
spring.datasource.qgdb.type=com.alibaba.druid.pool.DruidDataSource
#xml??? #xml???
mybatis-plus.mapper-locations=classpath*:com/founder/publicapi/mapper/*/xml/*.xml mybatis-plus.mapper-locations=classpath*:com/founder/publicapi/mapper/*/xml/*.xml
#es????????? #es?????????
......
...@@ -10,15 +10,16 @@ logging.level.root=INFO ...@@ -10,15 +10,16 @@ logging.level.root=INFO
#mysql���ݿ����� #mysql���ݿ�����
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.xzxtdb.url=jdbc:mysql://155.200.1.23:1106/xzxt?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 spring.datasource.xzxtdb.url=ENC(tiSZbUuzhdixQN8Dzz8Z+qVWXvVloz282KIqk3q/cjv1t3AQ/BwwkHFroqOtGySHLh1KQgly/wZyX3sdaTeyKOQyw75WCJBqpNiWugbRcKBF7eeGAQdvtMHEAJTomycF+Y7P6COEHAFRjW2OjvSx+Sqm3DeOl5XxbfpQWLFktGTTCO/18+JejVJ8b8odRxYRXAyLB/BA12f8DYqVWlsaLM7HvBZdhW9RLGVH1OHM+s5gCnLoQKZoZ4zwounPD/dpfAPo9a4U1U6qNIpXsfin2FweY3xZUhJH)
spring.datasource.xzxtdb.username=root spring.datasource.xzxtdb.username=ENC(AcwX02W3j68cs+8BTDI9Sw==)
spring.datasource.xzxtdb.password=XzxtPwd#54 spring.datasource.xzxtdb.password=ENC(kB78UiJzT7X+gn2hy9HnYO8JZJhfBnVQ)
spring.datasource.xzxtdb.type=com.alibaba.druid.pool.DruidDataSource
#oracle���ݿ�����(ȫ����) #oracle���ݿ�����(ȫ����)
spring.datasource.qgdb.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.qgdb.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.qgdb.url=jdbc:mysql://155.200.1.23:1106/xzxt?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8 spring.datasource.qgdb.url=ENC(tiSZbUuzhdixQN8Dzz8Z+qVWXvVloz282KIqk3q/cjv1t3AQ/BwwkHFroqOtGySHLh1KQgly/wZyX3sdaTeyKOQyw75WCJBqpNiWugbRcKBF7eeGAQdvtMHEAJTomycF+Y7P6COEHAFRjW2OjvSx+Sqm3DeOl5XxbfpQWLFktGTTCO/18+JejVJ8b8odRxYRXAyLB/BA12f8DYqVWlsaLM7HvBZdhW9RLGVH1OHM+s5gCnLoQKZoZ4zwounPD/dpfAPo9a4U1U6qNIpXsfin2FweY3xZUhJH)
spring.datasource.qgdb.username=root spring.datasource.qgdb.username=ENC(kB78UiJzT7X+gn2hy9HnYO8JZJhfBnVQ)
spring.datasource.qgdb.password=XzxtPwd#54 spring.datasource.qgdb.password=ENC(kB78UiJzT7X+gn2hy9HnYO8JZJhfBnVQ)
#xmlɨ�� #xmlɨ��
mybatis-plus.mapper-locations=classpath*:com/founder/publicapi/mapper/*/xml/*.xml mybatis-plus.mapper-locations=classpath*:com/founder/publicapi/mapper/*/xml/*.xml
#es�������ر� #es�������ر�
......
...@@ -5,3 +5,8 @@ spring.jackson.date-format=yyyy-MM-dd HH:mm:ss ...@@ -5,3 +5,8 @@ spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8 spring.jackson.time-zone=GMT+8
logging.level.root=INFO logging.level.root=INFO
#加密秘钥
jasypt.encryptor.password=lybgeek
#指定解密算法(默认)
jasypt.encryptor.algorithm=PBEWithMD5AndDES
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment