Commit 338eed96 by chentian

es增加抽取基站,查詢基站

parent 85fcb26d
package com.founder.commonutils.esEntity;
public class Syss {
private String systemid;
private String ssxzqhdm;
private String ssxzqhmc;
private String ssxzjddm;
private String ssxzjdmc;
private String sspcsdm;
private String sspcsmc;
private String ssjwsdm;
private String ssjwsmc;
private String sssqcjwhdm;
private String sssqcjwhmc;
private String zwwgdm;
private String zwwgmc;
private String ssjlxdm;
private String ssjlxmc;
private String sszt;
private String ssmc ;
private String ssdz ;
private String sslb ;
private String ssbh ;
private String gldw;
private String lxr ;
private String lxdh ;
private String zxjd ;
private String zxwd ;
private String sjly ;
private String wxtbh ;
private String creator ;
private String creatorname ;
private String createdtime;
private String lastupdatedby ;
private String lastupdatedname;
private String lastupdatedtime ;
private String rksj ;
public String getSystemid() {
return systemid;
}
public void setSystemid(String systemid) {
this.systemid = systemid;
}
public String getSsxzqhdm() {
return ssxzqhdm;
}
public void setSsxzqhdm(String ssxzqhdm) {
this.ssxzqhdm = ssxzqhdm;
}
public String getSsxzqhmc() {
return ssxzqhmc;
}
public void setSsxzqhmc(String ssxzqhmc) {
this.ssxzqhmc = ssxzqhmc;
}
public String getSsxzjddm() {
return ssxzjddm;
}
public void setSsxzjddm(String ssxzjddm) {
this.ssxzjddm = ssxzjddm;
}
public String getSsxzjdmc() {
return ssxzjdmc;
}
public void setSsxzjdmc(String ssxzjdmc) {
this.ssxzjdmc = ssxzjdmc;
}
public String getSspcsdm() {
return sspcsdm;
}
public void setSspcsdm(String sspcsdm) {
this.sspcsdm = sspcsdm;
}
public String getSspcsmc() {
return sspcsmc;
}
public void setSspcsmc(String sspcsmc) {
this.sspcsmc = sspcsmc;
}
public String getSsjwsdm() {
return ssjwsdm;
}
public void setSsjwsdm(String ssjwsdm) {
this.ssjwsdm = ssjwsdm;
}
public String getSsjwsmc() {
return ssjwsmc;
}
public void setSsjwsmc(String ssjwsmc) {
this.ssjwsmc = ssjwsmc;
}
public String getSssqcjwhdm() {
return sssqcjwhdm;
}
public void setSssqcjwhdm(String sssqcjwhdm) {
this.sssqcjwhdm = sssqcjwhdm;
}
public String getSssqcjwhmc() {
return sssqcjwhmc;
}
public void setSssqcjwhmc(String sssqcjwhmc) {
this.sssqcjwhmc = sssqcjwhmc;
}
public String getZwwgdm() {
return zwwgdm;
}
public void setZwwgdm(String zwwgdm) {
this.zwwgdm = zwwgdm;
}
public String getZwwgmc() {
return zwwgmc;
}
public void setZwwgmc(String zwwgmc) {
this.zwwgmc = zwwgmc;
}
public String getSsjlxdm() {
return ssjlxdm;
}
public void setSsjlxdm(String ssjlxdm) {
this.ssjlxdm = ssjlxdm;
}
public String getSsjlxmc() {
return ssjlxmc;
}
public void setSsjlxmc(String ssjlxmc) {
this.ssjlxmc = ssjlxmc;
}
public String getSszt() {
return sszt;
}
public void setSszt(String sszt) {
this.sszt = sszt;
}
public String getSsmc() {
return ssmc;
}
public void setSsmc(String ssmc) {
this.ssmc = ssmc;
}
public String getSsdz() {
return ssdz;
}
public void setSsdz(String ssdz) {
this.ssdz = ssdz;
}
public String getSslb() {
return sslb;
}
public void setSslb(String sslb) {
this.sslb = sslb;
}
public String getSsbh() {
return ssbh;
}
public void setSsbh(String ssbh) {
this.ssbh = ssbh;
}
public String getGldw() {
return gldw;
}
public void setGldw(String gldw) {
this.gldw = gldw;
}
public String getLxr() {
return lxr;
}
public void setLxr(String lxr) {
this.lxr = lxr;
}
public String getLxdh() {
return lxdh;
}
public void setLxdh(String lxdh) {
this.lxdh = lxdh;
}
public String getZxjd() {
return zxjd;
}
public void setZxjd(String zxjd) {
this.zxjd = zxjd;
}
public String getZxwd() {
return zxwd;
}
public void setZxwd(String zxwd) {
this.zxwd = zxwd;
}
public String getSjly() {
return sjly;
}
public void setSjly(String sjly) {
this.sjly = sjly;
}
public String getWxtbh() {
return wxtbh;
}
public void setWxtbh(String wxtbh) {
this.wxtbh = wxtbh;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getCreatorname() {
return creatorname;
}
public void setCreatorname(String creatorname) {
this.creatorname = creatorname;
}
public String getCreatedtime() {
return createdtime;
}
public void setCreatedtime(String createdtime) {
this.createdtime = createdtime;
}
public String getLastupdatedby() {
return lastupdatedby;
}
public void setLastupdatedby(String lastupdatedby) {
this.lastupdatedby = lastupdatedby;
}
public String getLastupdatedname() {
return lastupdatedname;
}
public void setLastupdatedname(String lastupdatedname) {
this.lastupdatedname = lastupdatedname;
}
public String getLastupdatedtime() {
return lastupdatedtime;
}
public void setLastupdatedtime(String lastupdatedtime) {
this.lastupdatedtime = lastupdatedtime;
}
public String getRksj() {
return rksj;
}
public void setRksj(String rksj) {
this.rksj = rksj;
}
}
package com.founder.commonutils.publicEntity;
import java.util.List;
public class GeographicInfo {
private String field; //空间检索字段
private List<GeoPoint> points; //点位list
private GeoPoint point; //点位
private String distance;//半径
private GeoPoint bottom_right;
private GeoPoint top_left;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public List<GeoPoint> getPoints() {
return points;
}
public void setPoints(List<GeoPoint> points) {
this.points = points;
}
public GeoPoint getPoint() {
return point;
}
public void setPoint(GeoPoint point) {
this.point = point;
}
public String getDistance() {
return distance;
}
public void setDistance(String distance) {
this.distance = distance;
}
public GeoPoint getBottom_right() {
return bottom_right;
}
public void setBottom_right(GeoPoint bottom_right) {
this.bottom_right = bottom_right;
}
public GeoPoint getTop_left() {
return top_left;
}
public void setTop_left(GeoPoint top_left) {
this.top_left = top_left;
}
@Override
public String toString() {
return "GeographicInfo{" +
"field='" + field + '\'' +
", points=" + points +
", point=" + point +
", distance='" + distance + '\'' +
", bottom_right=" + bottom_right +
", top_left=" + top_left +
'}';
}
}
......@@ -81,7 +81,7 @@ public class Receiving implements Serializable {
private String index; //索引名
private GeographicInfoMap geographicInfo;//空间信息
private rbss rbss;//查询条件
public static long getSerialVersionUID() {
return serialVersionUID;
......@@ -407,11 +407,4 @@ public class Receiving implements Serializable {
this.geographicInfo = geographicInfo;
}
public rbss getRbss() {
return rbss;
}
public void setRbss(rbss rbss) {
this.rbss = rbss;
}
}
\ No newline at end of file
package com.founder.commonutils.publicEntity;
import com.founder.commonutils.publicEntity.GeographicInfo;
import java.io.Serializable;
/**
* Created by admin on 2020/5/18.
*/
public class RequestBean implements Serializable {
private static final long serialVersionUID = 1L;
private String index; //索引名
private String type; //表名
private GeographicInfo geographicInfo;//空间信息
//private rbss rbss;//查询条件
private String poiname;
public String getPoiname() {
return poiname;
}
public void setPoiname(String poiname) {
this.poiname = poiname;
}
public String getIndex() {
return index;
}
public void setIndex(String index) {
this.index = index;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public GeographicInfo getGeographicInfo() {
return geographicInfo;
}
public void setGeographicInfo(GeographicInfo geographicInfo) {
this.geographicInfo = geographicInfo;
}
@Override
public String toString() {
return "RequestBean{" +
"index='" + index + '\'' +
", type='" + type + '\'' +
", geographicInfo=" + geographicInfo +
'}';
}
}
package com.founder.commonutils.publicEntity;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
/**
* Xzxt-Rest自定义响应结构
*/
public class XzxtRestResult<T> {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
// 响应业务状态
@ApiModelProperty(value="响应业务状态")
private Integer status;
// 响应消息
@ApiModelProperty(value="响应消息")
private String msg;
// 响应中的数据
@ApiModelProperty(value="响应的数据")
private T data;
//redis key
@ApiModelProperty(value="redis的key值")
private String rediskey;
public static <T> XzxtRestResult build(Integer status, String msg, T data) {
return new XzxtRestResult(status, msg, data);
}
public static <T> XzxtRestResult ok(T data) {
return new XzxtRestResult(data);
}
public static <T> XzxtRestResult ok(int i, String count, List<T> list) {
return new XzxtRestResult(null);
}
public XzxtRestResult() {
}
public static <T> XzxtRestResult build(Integer status, String msg, String reidskey, T data) {
return new XzxtRestResult(status, msg, reidskey,data);
}
public XzxtRestResult(Integer status, String msg, T data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public XzxtRestResult(Integer status, String msg, String reidskey, T data) {
this.status = status;
this.msg = msg;
this.rediskey=reidskey;
this.data = data;
}
public XzxtRestResult(T data) {
this.status = 200;
this.msg = "OK";
this.data = data;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
public String getRediskey() {
return rediskey;
}
public void setRediskey(String rediskey) {
this.rediskey = rediskey;
}
/**
* 将json结果集转化为Xzxt-Rest对象
*
* @param jsonData json数据
* @param clazz Xzxt-Rest中的object类型
* @return
*/
public static XzxtRestResult formatToPojo(String jsonData, Class<?> clazz) {
try {
if (clazz == null) {
return MAPPER.readValue(jsonData, XzxtRestResult.class);
}
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (clazz != null) {
if (data.isObject()) {
obj = MAPPER.readValue(data.traverse(), clazz);
} else if (data.isTextual()) {
obj = MAPPER.readValue(data.asText(), clazz);
}
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
System.out.println(e.getStackTrace());
return new XzxtRestResult();
}
}
/**
* object对象的转化
*
* @param json
* @return
*/
public static XzxtRestResult format(String json) {
try {
return MAPPER.readValue(json, XzxtRestResult.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return
*/
public static XzxtRestResult formatToList(String jsonData, Class<?> clazz) {
try {
JsonNode jsonNode = MAPPER.readTree(jsonData);
JsonNode data = jsonNode.get("data");
Object obj = null;
if (data.isArray() && data.size() > 0) {
obj = MAPPER.readValue(data.traverse(),
MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));
}
return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);
} catch (Exception e) {
return null;
}
}
}
package com.founder.commonutils.publicEntity;
import java.io.Serializable;
import java.util.Arrays;
public class rbss implements Serializable {
private static final long serialVersionUID = 1L;
//标准地址------------------------------
// 1 门牌
private String[] pzlx;
// 建筑物1 建筑物2 单元3 户室4
private String[] dzyslx;
//标准地址------------------------------
//实有房屋------------------------------
//09 其它 08 多功能建筑(综合楼宇) 01 住宅 04 办公楼 05 宾馆酒店 06 文体娱乐设施 03 商铺 02 工厂及仓库 07 政府和公共设施
private String[] fwsyyt;
//0是出租屋 ,其他按照上面类型类搜索,
//未空的为未知
private String sfczfw;
//实有房屋------------------------------
//地址代码 房屋和标准地址共用
private String dzdm;
//实有设施------------------------------
//按照设施类别,三级分类
private String[] sslb;
//实有设施------------------------------
//实有单位------------------------------
//包含多个,要按照包含来查询不能等于或者like
private String dwcslb;
//单位--人口(fwcsdm)
private String systemid;
//单位--地址(dzdm)
private String[] sj_dzdm;
//实有单位------------------------------
//实有人口------------------------------
//包含多个,要按照包含来查询不能等于或者like
//01 常住人口 02 流动人口 03 常住人口待定人员 04 境外人员 05 流浪乞讨人员
private String[] syrkgllb;
//房屋场所代码 --单位(systemld)
private String fwcsdm;
//现居地地址代码 --地址(dzdm) --房屋(dzdm)
private String[] xjddzdm;
//zjhm
private String zjhm;
//实有人口------------------------------
private String countall; //数据总览 all pzlx dzyslx 实有房屋
private String poiname;
private String value;
//警情
private String ab;//案别
//案件
private String ajlx;//案件类型 01 刑事 02 治安
private String ajfl;//案件大类:01 盗窃案 02抢夺案
private String dzqc;//地址全称
private String flag;
private String account_nam;// ad开户人姓名 (宽带)
private String certificate;// 开户人身份证号码 (宽带)
private String fix_address;// 装机地址 (宽带)
private String imsi;// ad账号(归一化后) (宽带)
private String city_code;// 所属地市 (宽带)
private String kssj;
private String jssj;
private String base_statio1;//4Gstatio1
private String ssid_positi;//4Gpositi
private String identityCard;//identityCard
private String organizationCode;
public String getOrgLevel() {
return orgLevel;
}
public void setOrgLevel(String orgLevel) {
this.orgLevel = orgLevel;
}
private String orgLevel;
public String getOrganizationCode() {
return organizationCode;
}
public void setOrganizationCode(String organizationCode) {
this.organizationCode = organizationCode;
}
public String getIdentityCard() {
return identityCard;
}
public void setIdentityCard(String identityCard) {
this.identityCard = identityCard;
}
public String getZjhm() {
return zjhm;
}
public void setZjhm(String zjhm) {
this.zjhm = zjhm;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String getBase_statio1() {
return base_statio1;
}
public void setBase_statio1(String base_statio1) {
this.base_statio1 = base_statio1;
}
public String getSsid_positi() {
return ssid_positi;
}
public void setSsid_positi(String ssid_positi) {
this.ssid_positi = ssid_positi;
}
public String getJssj() {
return jssj;
}
public void setJssj(String jssj) {
this.jssj = jssj;
}
public String getKssj() {
return kssj;
}
public void setKssj(String kssj) {
this.kssj = kssj;
}
public String getAccount_nam() {
return account_nam;
}
public void setAccount_nam(String account_nam) {
this.account_nam = account_nam;
}
public String getCertificate() {
return certificate;
}
public void setCertificate(String certificate) {
this.certificate = certificate;
}
public String getFix_address() {
return fix_address;
}
public void setFix_address(String fix_address) {
this.fix_address = fix_address;
}
public String getImsi() {
return imsi;
}
public void setImsi(String imsi) {
this.imsi = imsi;
}
public String getCity_code() {
return city_code;
}
public void setCity_code(String city_code) {
this.city_code = city_code;
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String getDzqc() {
return dzqc;
}
public void setDzqc(String dzqc) {
this.dzqc = dzqc;
}
public String getAjlx() {
return ajlx;
}
public void setAjlx(String ajlx) {
this.ajlx = ajlx;
}
public String getAb() {
return ab;
}
public void setAb(String ab) {
this.ab = ab;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getPoiname() {
return poiname;
}
public void setPoiname(String poiname) {
this.poiname = poiname;
}
public String getCountall() {
return countall;
}
public void setCountall(String countall) {
this.countall = countall;
}
public String[] getPzlx() {
return pzlx;
}
public void setPzlx(String[] pzlx) {
this.pzlx = pzlx;
}
public String[] getDzyslx() {
return dzyslx;
}
public void setDzyslx(String[] dzyslx) {
this.dzyslx = dzyslx;
}
public String getSfczfw() {
return sfczfw;
}
public void setSfczfw(String sfczfw) {
this.sfczfw = sfczfw;
}
public String getDzdm() {
return dzdm;
}
public void setDzdm(String dzdm) {
this.dzdm = dzdm;
}
public String[] getSslb() {
return sslb;
}
public void setSslb(String[] sslb) {
this.sslb = sslb;
}
public String getDwcslb() {
return dwcslb;
}
public void setDwcslb(String dwcslb) {
this.dwcslb = dwcslb;
}
public String getSystemid() {
return systemid;
}
public void setSystemid(String systemid) {
this.systemid = systemid;
}
public String[] getSj_dzdm() {
return sj_dzdm;
}
public void setSj_dzdm(String[] sj_dzdm) {
this.sj_dzdm = sj_dzdm;
}
public String[] getSyrkgllb() {
return syrkgllb;
}
public void setSyrkgllb(String[] syrkgllb) {
this.syrkgllb = syrkgllb;
}
public String getFwcsdm() {
return fwcsdm;
}
public void setFwcsdm(String fwcsdm) {
this.fwcsdm = fwcsdm;
}
public String[] getXjddzdm() {
return xjddzdm;
}
public void setXjddzdm(String[] xjddzdm) {
this.xjddzdm = xjddzdm;
}
public String[] getFwsyyt() {
return fwsyyt;
}
public void setFwsyyt(String[] fwsyyt) {
this.fwsyyt = fwsyyt;
}
public String getAjfl() {
return ajfl;
}
public void setAjfl(String ajfl) {
this.ajfl = ajfl;
}
@Override
public String toString() {
return "rbss{" +
"pzlx=" + Arrays.toString(pzlx) +
", dzyslx=" + Arrays.toString(dzyslx) +
", fwsyyt=" + Arrays.toString(fwsyyt) +
", sfczfw='" + sfczfw + '\'' +
", dzdm='" + dzdm + '\'' +
", sslb=" + Arrays.toString(sslb) +
", dwcslb='" + dwcslb + '\'' +
", systemid='" + systemid + '\'' +
", sj_dzdm=" + Arrays.toString(sj_dzdm) +
", syrkgllb=" + Arrays.toString(syrkgllb) +
", fwcsdm='" + fwcsdm + '\'' +
", xjddzdm=" + Arrays.toString(xjddzdm) +
", zjhm='" + zjhm + '\'' +
", countall='" + countall + '\'' +
", poiname='" + poiname + '\'' +
", value='" + value + '\'' +
", ab='" + ab + '\'' +
", ajlx='" + ajlx + '\'' +
", dzqc='" + dzqc + '\'' +
", flag='" + flag + '\'' +
", account_nam='" + account_nam + '\'' +
", certificate='" + certificate + '\'' +
", fix_address='" + fix_address + '\'' +
", imsi='" + imsi + '\'' +
", city_code='" + city_code + '\'' +
", kssj='" + kssj + '\'' +
", jssj='" + jssj + '\'' +
", base_statio1='" + base_statio1 + '\'' +
", ssid_positi='" + ssid_positi + '\'' +
", identityCard='" + identityCard + '\'' +
'}';
}
}
......@@ -26,9 +26,9 @@ public class CodeGenerator {
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir("D:\\map-parent\\service\\es" + "/src/main/java");//生成路径
gc.setOutputDir("F:\\MyProject\\map-parent\\service\\es" + "/src/main/java");//生成路径
gc.setAuthor("Changchao");//作者
gc.setAuthor("chent");//作者
gc.setOpen(false); //生成后是否打开资源管理器
gc.setFileOverride(false); //重新生成时文件是否覆盖
......@@ -50,8 +50,8 @@ public class CodeGenerator {
// dsc.setDbType(DbType.MYSQL);
dsc.setUrl("jdbc:oracle:thin:@47.92.129.99:1600:orcl");
dsc.setDriverName("oracle.jdbc.driver.OracleDriver");
dsc.setUsername("XZXT");
dsc.setPassword("XZXT");
dsc.setUsername("MAPYWGL");
dsc.setPassword("MAPYWGL");
dsc.setDbType(DbType.ORACLE);
mpg.setDataSource(dsc);
......@@ -70,7 +70,7 @@ public class CodeGenerator {
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("TB_ST_ASJ");//生成的表
strategy.setInclude("TB_ZY_JZXX");//生成的表
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀
......
......@@ -2,10 +2,11 @@ package com.founder.eszy.controller;
import com.founder.commonutils.publicEntity.R;
import com.founder.eszy.esExtract.EsSyssTranslation;
import com.founder.eszy.esExtract.EsTbZyJzxxTranslation;
import com.founder.eszy.esSearch.esSearch;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -14,22 +15,22 @@ import org.springframework.web.bind.annotation.RestController;
public class EsExtractController {
@Autowired
private EsSyssTranslation esSyssTranslation;
private EsTbZyJzxxTranslation esTbZyJzxxTranslation;
@Autowired
private esSearch esSearch;
//实有设施
// 查询案事件标注信息
@ApiOperation(value = "实有设施es全量抽取")
@GetMapping("/syss")
@Value("${jz_index}")
private String jz_index;
//基站
@ApiOperation(value = "基站es全量抽取")
@GetMapping("/jzxx")
public R syss() {
System.out.println("syssES开始=========================");
System.out.println("jzxxES开始=========================");
try {
esSyssTranslation.SyssEsSave();
esTbZyJzxxTranslation.SyssEsSave();
} catch (Exception e) {
e.printStackTrace();
}
int count = (int) esSearch.EScount("syss");
return R.ok().message("实有设施数据抽取完成" + count);
int count = (int) esSearch.EScount(jz_index);
return R.ok().message("基站数据抽取完成" + count);
}
}
package com.founder.eszy.controller;
import com.founder.commonutils.publicEntity.*;
import com.founder.eszy.esSearch.EsTbZyJzxxTranslationQuery;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@RestController
public class EsQueryController {
@Autowired
private EsTbZyJzxxTranslationQuery esTbZyJzxxTranslationQuery;
//基站搜索
@ApiOperation(value = "基站查询")
@RequestMapping(value = "/getTbZyJzxxList",method = RequestMethod.POST)
public R getTbZyJzxxList(@RequestBody RequestBean bean) throws Exception {
List<Map<String,Object>> result= new ArrayList<>();
//按区域范围查询es数据
if(bean.getGeographicInfo()!=null&&!StringUtils.isEmpty(bean.getGeographicInfo())){
GeographicInfo geographicInfo =bean.getGeographicInfo();
String distance=geographicInfo.getDistance();
//判断是否是圆
if(distance!=null&&distance!=""){
GeoPoint point=geographicInfo.getPoint();
if (distance == null || point == null){
return null;
}
try {
result = esTbZyJzxxTranslationQuery.searchGeoDistance(bean.getIndex(),bean.getType(),geographicInfo.getField(),distance,point);
}catch (Exception e){
e.printStackTrace();
}
return XzxtRestResult.build(200,result.size()+"",result);
}else{
try {
result = esTbZyJzxxTranslationQuery.searchGeoPolygon(bean.getIndex(),bean.getType(),geographicInfo.getField(),geographicInfo.getPoints(),bean.getRbss());
}catch (Exception e){
e.printStackTrace();
}
return XzxtRestResult.build(200,result.size()+"",result);
}
}
//不带区域信息查询es数据
else{
result = esTbZyJzxxTranslationQuery.searchQuery(bean.getIndex(),bean.getType(),null,null);
return XzxtRestResult.build(200,result.size()+"",result);
}
}
}
package com.founder.eszy.esExtract;
import com.founder.commonutils.esEntity.Syss;
import com.founder.commonutils.esEntity.TbZyJzxx;
import com.founder.commonutils.publicEntity.R;
import com.founder.commonutils.publicEntity.Receiving;
import com.founder.eszy.mapper.SyssMapper;
import com.founder.eszy.mapper.TbZyJzxxMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by admin on 2020/5/12.
* Created by chent 20210309
*/
@Service
public class EsSyssTranslation {
//获取单个卡口的数据、查询车辆的卡口的数据、获取关联关系
public class EsTbZyJzxxTranslation {
@Autowired
private SyssMapper syssMapper;
private TbZyJzxxMapper tbZyJzxxMapper;
@Autowired
private SyssEs es;
@Value("${syss_count}")
private int syss_count;
@Value("${syss_limit}")
private int syss_limit;
@Value("${syss_begin}")
private int syss_begin;
@Value("${syss_index}")
private String syss_index;
private TbZyJzxxEs es;
@Value("${jz_count}")
private int jz_count;
@Value("${jz_limit}")
private int jz_limit;
@Value("${jz_begin}")
private int jz_begin;
@Value("${jz_index}")
private String jz_index;
//批量导入es--------------------------------------------------------------------
public R SyssEsSave() throws Exception {
long start = System.currentTimeMillis();
......@@ -39,8 +37,8 @@ public class EsSyssTranslation {
Receiving receiving = new Receiving();
//receiving.setValue("'A01D67B67AA513CFE0530E07920A9B35','A01D67BAC6D613DBE0530E07920A6998'");
//分院
int size =syss_count;
int limit=syss_limit;
int size =jz_count;
int limit=jz_limit;
//特殊处理
if(limit==0){
limit=1;
......@@ -48,9 +46,8 @@ public class EsSyssTranslation {
long threadNum = size / limit;
int startnum = 0;
int endnum = 0;
List<List<Syss>> lists = new ArrayList<>();
ExecutorService executorService1 = Executors.newCachedThreadPool();//按需分配线程池
for (int i = syss_begin; i < threadNum + 1; i++) {
for (int i = jz_begin; i < threadNum + 1; i++) {
startnum = i * limit+1;
endnum = ((i + 1) * limit);
if (startnum > size) {
......@@ -65,17 +62,17 @@ public class EsSyssTranslation {
receiving.setBegin(startnum+"");
receiving.setEnd(endnum+"");
//System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum);
List<Syss> syssList = syssMapper.selectSyssList(receiving);
List<TbZyJzxx> syssList = tbZyJzxxMapper.selectTbZyJzxxList(receiving);
System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum+"====总数"+syssList.size());
HandleThread thread = new HandleThread(syssList,syss_index);
HandleThread thread = new HandleThread(syssList,jz_index);
executorService1.execute(thread);
}
return null;
}
class HandleThread extends Thread {
private List<Syss> data;
private List<TbZyJzxx> data;
private String index;
public HandleThread(List<Syss> data,String index) {
public HandleThread(List<TbZyJzxx> data,String index) {
this.data = data;
this.index=index;
}
......
package com.founder.eszy.esExtract;
import com.founder.commonutils.esEntity.Syss;
import com.founder.commonutils.esEntity.TbZyJzxx;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
......@@ -18,10 +18,10 @@ import java.util.List;
import java.util.Map;
/**
* Created by chentian on 2020/5/19.
* Created by chentian on 2021-3-9
*/
@Service
public class SyssEs {
public class TbZyJzxxEs {
/**
* 一 创建索引方法 批量提交时 调这个方法
*/
......@@ -55,22 +55,23 @@ public class SyssEs {
.startObject("properties")// <br>//不动
/**
* 底下这些是字段 ctrl+shift+u
* .field("index", false) 不建立索引,凡是查询条件,建议加上索引,提升查询速度
*/
.startObject("ssmc").field("type", "keyword").endObject()//设施名称
.startObject("ssdz").field("type", "keyword").field("index", false).endObject()//设施地址
.startObject("ssbh").field("type", "keyword").field("index", false).endObject()//设施编号(来自各业务系统)
.startObject("gldw").field("type", "keyword").field("index", false).endObject()//管理单位
.startObject("sjly").field("type", "keyword").field("index", false).endObject()//数据来源
.startObject("createdtime").field("type", "keyword").field("index", false).endObject()//创建时间
.startObject("sszt").field("type", "keyword").endObject()//设施状态
//搜索查询
.startObject("sslb").field("type", "keyword").endObject()//设施类别
.startObject("x").field("type", "keyword").endObject()//中心经度
.startObject("y").field("type", "keyword").endObject()//中心纬度
.startObject("lac").field("type", "keyword").endObject()//小区号
.startObject("cid").field("type", "keyword").endObject()//基站编码
.startObject("x").field("type", "keyword").field("index", false).endObject()
.startObject("y").field("type", "keyword").field("index", false).endObject()
.startObject("xy").field("type", "geo_point").endObject()//经纬度特殊处理
.startObject("systemid").field("type", "keyword").endObject()//系统主键
.startObject("lonLat").field("type", "keyword").field("index", false).endObject()
.startObject("mark").field("type", "keyword").field("index", false).endObject()
.startObject("xzqh").field("type", "keyword").endObject()
//搜索查询
.startObject("xzqhDz").field("type", "keyword").endObject()
.startObject("province").field("type", "keyword").endObject()
.startObject("city").field("type", "keyword").endObject()
.startObject("district").field("type", "geo_point").endObject()
//更新时间
.startObject("updatedtime").field("type", "keyword").endObject()//修改时间
// .startObject("updatedtime").field("type", "keyword").endObject()//修改时间
.endObject().endObject().endObject();
......@@ -103,32 +104,30 @@ public class SyssEs {
* 批量提交方法
* @param result
*/
public String bulkCommit(List<Syss> result, String indexName) {
for (Syss e : result) {
public String bulkCommit(List<TbZyJzxx> result, String indexName) {
for (TbZyJzxx e : result) {
try {
//String indexName = "syss";
createESIndex(indexName);
BulkRequestBuilder bulkRequest = esClient.prepareBulk();
Map<String, Object> map = new HashMap<String, Object>();
//对应es字段
map.put("systemid", e.getSystemid());
map.put("ssmc",e.getSsmc());
map.put("ssdz",e.getSsdz());
map.put("sslb",e.getSslb());
map.put("ssbh",e.getSsbh());
map.put("sjly",e.getSjly());
map.put("ssbh",e.getSsbh());
map.put("createdtime",e.getCreatedtime());
map.put("updatedtime",e.getLastupdatedtime());
map.put("sszt",e.getSszt());
map.put("x",e.getZxjd());
map.put("y",e.getZxwd());
map.put("cid", e.getCid());//基站编码
map.put("lac",e.getLac());
map.put("x",e.getX());
map.put("y",e.getY());
map.put("lonLat",e.getLonLat());
map.put("mark",e.getMark());
map.put("xzqh",e.getXzqh());
map.put("xzqhDz",e.getXzqhDz());
map.put("province",e.getProvince());
map.put("city",e.getCity());
map.put("district",e.getDistrict());
//es 特需
map.put("xy",e.getZxwd()+","+e.getZxjd());
bulkRequest.add(esClient.prepareIndex(indexName, "pointdata",e.getSystemid()).setSource(map));
map.put("xy",e.getX()+","+e.getY());
bulkRequest.add(esClient.prepareIndex(indexName, "pointdata",e.getCid()).setSource(map));
bulkRequest.execute().actionGet();
} catch (Exception e1 ) {
e1.printStackTrace();
......
package com.founder.eszy.esSearch;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.index.query.*;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.sort.GeoDistanceSortBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.*;
/**
* Created by chent on 2021-3-9
*/
@Service
public class EsTbZyJzxxTranslationQuery {
@Autowired
private QueryFactory factory;
@Autowired
private Client client;
private static Logger logger = LoggerFactory.getLogger(EsTbZyJzxxTranslationQuery.class);
/**
* 查找位于多边形中的位置
* @param index 索引
* @param type 类型
* @param field 索引字段
* @param points 构成多边形的点
*/
public List<Map<String, Object>> searchGeoPolygon(String index, String type, String field, List<GeoPoint> points) throws Exception {
GeoPolygonQueryBuilder qb = factory.builtPolygonQuery(field, points);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.filter(qb);
return searchQuery(index, type, boolQueryBuilder,null);
}
/**
* 查询距离中心点指定的范围内的位置
* @param index index
* @param type type
* @param field 索引字段
* @param distance 距离
* @param point 中心点
* @return
* @throws Exception
*/
public List<Map<String, Object>> searchGeoDistance(String index, String type, String field, String distance, GeoPoint point) throws Exception {
Map<String, Object> map = factory.builtDistanceQuery(field, distance, point);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
QueryBuilder qb = (QueryBuilder) map.get("qb");
//按距离排序
GeoDistanceSortBuilder sort = (GeoDistanceSortBuilder) map.get("sort");
boolQueryBuilder.filter(qb);
return searchQuery(index, type, boolQueryBuilder,sort);
}
/**
* 基础查询
* @param index 索引
* @param type type
* @return List<Map>
*/
public List<Map<String, Object>> searchQuery(String index, String type, BoolQueryBuilder boolQueryBuilder, GeoDistanceSortBuilder sort) {
//基础查询不带空间检索
if(boolQueryBuilder==null&& StringUtils.isEmpty(boolQueryBuilder)) {
BoolQueryBuilder bq = QueryBuilders.boolQuery();
return search(index, type, bq, sort);
}else{
//基础查询带空间检索
return search(index, type, boolQueryBuilder, sort);
}
}
/**
* 执行查询
* @param index 索引
* @param type type
* @param builder 查询语句
* @return List<Map>
*/
private List<Map<String, Object>> search(String index, String type, BoolQueryBuilder builder, GeoDistanceSortBuilder sort) {
try {
List<Map<String, Object>> list = new ArrayList<>();
SearchRequestBuilder srb = client.prepareSearch(index).setSize(900000);
if (type != null && type.length() != 0){
srb.setTypes(type);
}
String falg="";
if (sort != null && !StringUtils.isEmpty(sort)) {
srb.addSort(sort);
//用于区分 要距离排序还要时间
falg="1";
}
srb.setQuery(builder);
SearchResponse searchResponse = srb.execute().actionGet();
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
Map<String, Object> map = hit.getSourceAsMap();
if (falg.equals("1")){
BigDecimal geoDis = new BigDecimal((Double) hit.getSortValues()[0]);
map.put("距离",geoDis.setScale(4, BigDecimal.ROUND_HALF_DOWN)+"km");
}
list.add(map);
logger.info("hits:" + map);
}
return list;
} catch (Exception e) {
logger.error("error!", e);
}
return null;
}
}
package com.founder.eszy.esSearch;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.index.query.GeoBoundingBoxQueryBuilder;
import org.elasticsearch.index.query.GeoPolygonQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.sort.GeoDistanceSortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by admin on 2020/5/18.
*/
@Service
public class QueryFactory {
/**
* 针对geo_point类型的查找,查询符合多边形内的数据
* @param field
* @param points
* @return
* @throws Exception
*/
public GeoPolygonQueryBuilder builtPolygonQuery(String field, List<GeoPoint> points) throws Exception {
if (points == null || points.size() <= 0) {
throw new Exception("bad args of geo points");
}
GeoPolygonQueryBuilder qb = QueryBuilders.geoPolygonQuery(field, points);
return qb;
}
/**
* 针对geo_point类型
* 获取在指定矩形框内的数据
* @param field 字段
* @param point1 矩形左上边界
* @param point2 矩形右下边界
* @return
* @throws Exception
*/
public GeoBoundingBoxQueryBuilder builtBoundingBoxQuery(String field, GeoPoint point1, GeoPoint point2) throws Exception {
if (point1 == null || point2 == null) {
throw new Exception("bad args of geo points");
}
GeoBoundingBoxQueryBuilder qb = QueryBuilders.geoBoundingBoxQuery(field)
.setCorners(point2,point1);
return qb;
}
/**
* 针对geo_point类型
* 查找在给定的中心点确定范围内的数据
* @param field
* @param distance
* @param point
* @return
* @throws Exception
*/
public Map<String,Object> builtDistanceQuery(String field, String distance, GeoPoint point) throws Exception {
if (point == null) {
throw new Exception("bad args of geo points");
}
QueryBuilder qb = QueryBuilders.geoDistanceQuery(field)
.point(point)
.distance(distance, DistanceUnit.KILOMETERS);
GeoDistanceSortBuilder sort = SortBuilders.geoDistanceSort(field,point)
.order(SortOrder.ASC)
.unit(DistanceUnit.KILOMETERS);
Map<String,Object> map=new HashMap<>();
map.put("qb",qb);
map.put("sort",sort);
return map;
}
}
......@@ -2,18 +2,18 @@ package com.founder.eszy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.esEntity.Syss;
import com.founder.commonutils.esEntity.TbZyJzxx;
import com.founder.commonutils.publicEntity.Receiving;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* Created by Administrator on 2019/11/12.
* Created by chent 2021-3-9
*/
@Mapper
public interface SyssMapper extends BaseMapper<Syss> {
List<Syss> selectSyssList(Receiving receiving);
public interface TbZyJzxxMapper extends BaseMapper<TbZyJzxx> {
List<TbZyJzxx> selectTbZyJzxxList(Receiving receiving);
}
<?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.founder.eszy.mapper.SyssMapper">
<mapper namespace="com.founder.eszy.mapper.TbZyJzxxMapper">
<select id="selectSyssList" parameterType="com.founder.commonutils.publicEntity.Receiving" resultType="com.founder.commonutils.esEntity.Syss">
<select id="selectTbZyJzxxList" parameterType="com.founder.commonutils.publicEntity.Receiving" resultType="com.founder.commonutils.esEntity.TbZyJzxx">
select t2.* from(
select t1.*,rownum as rn from
(
SELECT *
FROM b_ebss_syss WHERE
zxjd<![CDATA[ >= ]]>'113'and zxjd<![CDATA[ <= ]]>'115' and zxwd<![CDATA[ >= ]]>'22' and zxwd<![CDATA[ <= ]]>'24'
FROM tb_zy_jzxx WHERE
x is not null and y is not null
) t1
<where>
rownum<![CDATA[ <= ]]> #{ end , jdbcType=VARCHAR }
......
......@@ -5,5 +5,5 @@ spring.data.elasticsearch.cluster-name= my-application
# oracleݿ
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@47.92.129.99:1600:orcl
spring.datasource.username=XZXT
spring.datasource.password=XZXT
\ No newline at end of file
spring.datasource.username=MAPYWGL
spring.datasource.password=MAPYWGL
\ No newline at end of file
#es
spring.data.elasticsearch.cluster-nodes=47.92.48.137:9301
spring.data.elasticsearch.cluster-nodes= 26.13.5.15:9300
spring.data.elasticsearch.cluster-name= my-application
# oracleݿ
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@47.92.129.99:1600:orcl
spring.datasource.url=jdbc:oracle:thin:@10.100.17.120:1521:XZXT
spring.datasource.username=XZXT
spring.datasource.password=XZXT
\ No newline at end of file
spring.datasource.password=XzxtPwd#15
\ No newline at end of file
......@@ -18,8 +18,14 @@ mybatis-plus.mapper-locations=classpath:com/founder/eszy/mapper/xml/*.xml
#mybatis日志
#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#实有设施--------------
syss_count=1639932
syss_limit=10000
syss_begin=0
syss_index=syss
\ No newline at end of file
#基站--------------
jz_count=600000
jz_limit=10000
jz_begin=0
jz_index=jizhan
#卡口--------------
kk_count=10000
kk_limit=10000
kk_begin=0
kk_index=kakou
\ 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