Commit 2712a6dd by chentian

新增比对数据查询功能,比对结果查询功能

parent 6100e73c
......@@ -15,5 +15,7 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter {
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/form").setViewName("form");
registry.addViewController("/sourceDataList").setViewName("sourceDataList");
registry.addViewController("/comparisonDataList").setViewName("comparisonDataList");
registry.addViewController("/comparisonResultList").setViewName("comparisonResultList");
}
}
package com.cc.solr.controller;
import com.cc.solr.entity.ConditionInfo;
import com.cc.solr.util.ResultMap;
import com.cc.solr.util.propertiesUtil;
import io.swagger.annotations.*;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.Properties;
@RestController
@RequestMapping(value = "/comparisondata")
public class ComparisonDataController {
/**
* 7、查 ++:关键字、高亮、分页 ✔
*
* @return
* @throws SolrServerException
* @throws IOException
*/
@PostMapping("/selectByConditionInfo")
//方法描述
@ApiOperation(value = "插入接口-分页查询", notes = "分页查询")
//参数描述
@ApiImplicitParams({
@ApiImplicitParam(name = "ConditionInfo", value = "查询条件实体类", required = true),
})
//返回值描述
@ApiResponses(value = {
@ApiResponse(code = 200, message = "OK"),
@ApiResponse(code = 405, message = "查询失败")
})
public ResultMap selectByConditionInfo(ConditionInfo conditionInfo)
throws SolrServerException, IOException {
//不用默认SolrClient取url,用HttpSolrClient来访问solr,默认的在application.yml里面,只能配置一个地址,这里的地址写在配置文件里,可以写多个。
Properties properties = propertiesUtil.propertiesUtil("solr.properties");
String comparisonsolrdata= properties.getProperty("comparisonsolrdata");
HttpSolrClient client = new HttpSolrClient(comparisonsolrdata);
SolrQuery params = new SolrQuery();
// 查询条件
if (conditionInfo.getQ() == null || "".equals(conditionInfo.getQ())) {
params.set("q", "*:*");//查询字符串,必须的
} else {
params.set("q", conditionInfo.getQ());//暂时写死,查询字符串,必须的
}
// fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,
if (conditionInfo.getFq() != null && !"".equals(conditionInfo.getFq())) {
params.set("fq", conditionInfo.getFq());
}
/*// 排序
if(conditionInfo.getSort()!=null && !"".equals(conditionInfo.getSort())){
params.addSort(conditionInfo.getSort(), SolrQuery.ORDER.desc);
}*/
// 分页
if (conditionInfo.getPage() == 1) {//page是页数,首页起始行数用(页数-1*10)(0,10),第二页起始行数用(页数-1*10)+1:(11,20)
params.setStart((conditionInfo.getPage() - 1) * 10);
} else {
params.setStart((conditionInfo.getPage() - 1) * 10 + 1);
}
params.setRows(conditionInfo.getLimit());//每页显示10条
// solr数据库是 itaem
if (conditionInfo.getCore() == null || "".equals(conditionInfo.getCore())) {
String core = properties.getProperty("core");
String[] cores = core.split(",", -1);
core = cores[0];
conditionInfo.setCore(core);
}
QueryResponse queryResponse = client.query(conditionInfo.getCore(), params);
//QueryResponse queryResponse = client.query(params);
SolrDocumentList results = queryResponse.getResults();
// 数量,分页用
long total = results.getNumFound();// JS 使用 size=MXA 和 data.length 即可知道长度了(但不合理),itaem实例里的数据总数
//查询列表与查询总数放到resultMap,用于页面展示
ResultMap resultMap = new ResultMap();
resultMap.setCount(new Long(total).intValue());
resultMap.setData(results);
return resultMap;
}
}
package com.cc.solr.controller;
import com.cc.solr.entity.ConditionInfo;
import com.cc.solr.util.ResultMap;
import com.cc.solr.util.propertiesUtil;
import io.swagger.annotations.*;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.Properties;
@RestController
@RequestMapping(value = "/comparisonresult")
public class ComparisonResultController {
/**
* 7、查 ++:关键字、高亮、分页 ✔
*
* @return
* @throws SolrServerException
* @throws IOException
*/
@PostMapping("/selectByConditionInfo")
//方法描述
@ApiOperation(value = "插入接口-分页查询", notes = "分页查询")
//参数描述
@ApiImplicitParams({
@ApiImplicitParam(name = "ConditionInfo", value = "查询条件实体类", required = true),
})
//返回值描述
@ApiResponses(value = {
@ApiResponse(code = 200, message = "OK"),
@ApiResponse(code = 405, message = "查询失败")
})
public ResultMap selectByConditionInfo(ConditionInfo conditionInfo)
throws SolrServerException, IOException {
//不用默认SolrClient取url,用HttpSolrClient来访问solr,默认的在application.yml里面,只能配置一个地址,这里的地址写在配置文件里,可以写多个。
Properties properties = propertiesUtil.propertiesUtil("solr.properties");
String comparisonsolrdata= properties.getProperty("comparisonsolrdata");
HttpSolrClient client = new HttpSolrClient(comparisonsolrdata);
SolrQuery params = new SolrQuery();
// 查询条件
if (conditionInfo.getQ() == null || "".equals(conditionInfo.getQ())) {
params.set("q", "*:*");//查询字符串,必须的
} else {
params.set("q", conditionInfo.getQ());//暂时写死,查询字符串,必须的
}
// fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,
if (conditionInfo.getFq() != null && !"".equals(conditionInfo.getFq())) {
params.set("fq", conditionInfo.getFq());
}
/*// 排序
if(conditionInfo.getSort()!=null && !"".equals(conditionInfo.getSort())){
params.addSort(conditionInfo.getSort(), SolrQuery.ORDER.desc);
}*/
// 分页
if (conditionInfo.getPage() == 1) {//page是页数,首页起始行数用(页数-1*10)(0,10),第二页起始行数用(页数-1*10)+1:(11,20)
params.setStart((conditionInfo.getPage() - 1) * 10);
} else {
params.setStart((conditionInfo.getPage() - 1) * 10 + 1);
}
params.setRows(conditionInfo.getLimit());//每页显示10条
// solr数据库是 itaem
if (conditionInfo.getCore() == null || "".equals(conditionInfo.getCore())) {
String core = properties.getProperty("core");
String[] cores = core.split(",", -1);
core = cores[0];
conditionInfo.setCore(core);
}
QueryResponse queryResponse = client.query(conditionInfo.getCore(), params);
//QueryResponse queryResponse = client.query(params);
SolrDocumentList results = queryResponse.getResults();
// 数量,分页用
long total = results.getNumFound();// JS 使用 size=MXA 和 data.length 即可知道长度了(但不合理),itaem实例里的数据总数
//查询列表与查询总数放到resultMap,用于页面展示
ResultMap resultMap = new ResultMap();
resultMap.setCount(new Long(total).intValue());
resultMap.setData(results);
return resultMap;
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>比对数据</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/css/xadmin.css">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
<link rel="stylesheet" href="/css/font.css">
<link rel="stylesheet" href="/fenye/fenye.css" media="all">
<link rel="stylesheet" href="/fenye/font-awesome.min.css" media="all">
<script type="text/javascript" src="/jquery/jquery.min.js"></script>
<link rel="stylesheet" href="/layui/css/layui.css" media="all">
<script type="text/javascript" src="/js/xadmin.js"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
<style>
.l15{line-height: 15px;}
.h30{height: 30px;border-radius: 5px;padding-right:10px;}
</style>
</head>
<body>
<div class="wrapper">
<!-- 左侧菜单开始 -->
<div class="left-nav">
<div id="side-nav">
<ul id="nav">
<li class="list" id="H10E0301" >
<a href="sourceDataList">
<i class="fa fa-sitemap" aria-hidden="true"></i>
源数据查询
</a>
</li>
<li class="list current" id="H10E0302" current>
<a href="comparisonDataList">
<i class="fa fa-server" aria-hidden="true"></i>
比对数据查询
</a>
</li>
<li class="list" id="H10E0303" >
<a href="comparisonResultList">
<i class="fa fa-bolt" aria-hidden="true"></i>
比对结果查询
</a>
</li>
</ul>
</div>
</div>
<!-- 左侧菜单结束 -->
<!-- 右侧主体开始 -->
<div class="page-content">
<div class="content">
<label class="layui-form-label l15" style="padding-right: 0;">数据源:</label>
<div class="layui-input-block" style="float:left;margin-left:0;">
<select name="core" lay-verify="" id="core" style="height:30px;width:200px;" class="h30">
</select>
</div>
<div class="layui-form-mid" style="padding:0 !important;">
<label class="layui-form-label l15" style="width:100px;">查询字符串:</label>
<div class="layui-input-inline">
<input type="text" name="q" id="q" lay-verify="required"
class="layui-input h30" placeholder="ID:A5111021400002017120001" >
</div>
</div>
<div class="layui-form-mid" style="padding:0 !important;">
<label class="layui-form-label l15">过滤查询:</label>
<div class="layui-input-inline">
<input type="text" name="fq" id="fq" lay-verify="required"
class="layui-input h30" placeholder="ID:A5111021400002017120001" >
</div>
</div>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal queryList" style="margin-left: 20px;">查询</button>
<button class="layui-btn layui-btn-normal clear" style="margin-left: 20px;">清空</button>
</div>
<table class="layui-hide" id="test" lay-filter="test" width="98%"></table>
</div>
</div>
<!-- 右侧主体结束 -->
</div>
<script src="/layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
layui.use('table', function () {
var table = layui.table;
var tableIns;
//begin
//初始化页面查询实例
$.ajax({
url: 'sourcedata/getCores',
async: false, // 注意此处需要同步,因为先绑定表头,才能绑定数据
type: "POST",
dataType: "json",
success: function (obj) {
$.each(obj, function(i,val){
$("#core").append("<option value='"+val+"'>"+val+"</option>"); //为Select追加一个Option(下拉项)
});
}
});
//初始化页面查询列
$.ajax({
url: 'sourcedata/getCols',
async: false, // 注意此处需要同步,因为先绑定表头,才能绑定数据
type: "POST",
data:{selCore:$('#core option:selected').val()},
dataType: "json",
success: function (jsonObj) {
var columnsAll = new Array(); //如果返回的数据不为空,则添加遍历该数据集合
if (jsonObj.length > 0) {
for (var i = 0; i < jsonObj.length; i++) {
debugger;//把返回的数据封装到一个对象中
var col = {}
col['title'] = jsonObj[i].title;
col['field'] = jsonObj[i].field;
col['align'] = 'center';
col['sort'] = true;
columnsAll.push(col);
}
//初始化加载table
tableIns = table.render({
elem: '#test'
, url: 'comparisondata/selectByConditionInfo'
, method: 'POST'
, toolbar: '#toolbarDemo'
, title: '比对数据表'
, page: true
, limit: 10
, cols: [columnsAll]
});
}
}
});
//end
//查询按钮
$('.queryList').on('click', function () {
var core = cheNull($('#core').val());
var q = cheNull($('#q').val());
var fq = cheNull($('#fq').val());
//begin
//重新加载列以及table
$.ajax({
url: 'sourcedata/getCols',
async: false, // 注意此处需要同步,因为先绑定表头,才能绑定数据
type: "POST",
data:{selCore:$('#core option:selected').val()},
dataType: "json",
success: function (jsonObj) {
var columnsAll = new Array(); //如果返回的数据不为空,则添加遍历该数据集合
if (jsonObj.length > 0) {
for (var i = 0; i < jsonObj.length; i++) {
debugger;//把返回的数据封装到一个对象中
var col = {}
col['title'] = jsonObj[i].title;
col['field'] = jsonObj[i].field;
col['align'] = 'center';
col['sort'] = true;
columnsAll.push(col);
}
tableIns = table.render({
elem: '#test'
, url: 'comparisondata/selectByConditionInfo'
, method: 'POST'
, toolbar: '#toolbarDemo'
, title: '比对数据表'
, page: true
, limit: 10
, cols: [columnsAll]
,where: {//查询条件
core: core,
q: q,
fq: fq
}
});
}
}
});
//end
});
});
$('.clear').on('click', function () {
$('#q').val("");
$('#fq').val("");
});
function cheNull(str) {
if (str == "") {
return undefined;
} else {
return str;
}
}
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>比对结果</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/css/xadmin.css">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
<link rel="stylesheet" href="/css/font.css">
<link rel="stylesheet" href="/fenye/fenye.css" media="all">
<link rel="stylesheet" href="/fenye/font-awesome.min.css" media="all">
<script type="text/javascript" src="/jquery/jquery.min.js"></script>
<link rel="stylesheet" href="/layui/css/layui.css" media="all">
<script type="text/javascript" src="/js/xadmin.js"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
<style>
.l15{line-height: 15px;}
.h30{height: 30px;border-radius: 5px;padding-right:10px;}
</style>
</head>
<body>
<div class="wrapper">
<!-- 左侧菜单开始 -->
<div class="left-nav">
<div id="side-nav">
<ul id="nav">
<li class="list" id="H10E0301" >
<a href="sourceDataList">
<i class="fa fa-sitemap" aria-hidden="true"></i>
源数据查询
</a>
</li>
<li class="list" id="H10E0302">
<a href="comparisonDataList">
<i class="fa fa-server" aria-hidden="true"></i>
比对数据查询
</a>
</li>
<li class="list current" id="H10E0303" current>
<a href="comparisonResultList">
<i class="fa fa-bolt" aria-hidden="true"></i>
比对结果查询
</a>
</li>
</ul>
</div>
</div>
<!-- 左侧菜单结束 -->
<!-- 右侧主体开始 -->
<div class="page-content">
<div class="content">
<label class="layui-form-label l15" style="padding-right: 0;">数据源:</label>
<div class="layui-input-block" style="float:left;margin-left:0;">
<select name="core" lay-verify="" id="core" style="height:30px;width:200px;" class="h30">
</select>
</div>
<div class="layui-form-mid" style="padding:0 !important;">
<label class="layui-form-label l15" style="width:100px;">查询字符串:</label>
<div class="layui-input-inline">
<input type="text" name="q" id="q" lay-verify="required"
class="layui-input h30" placeholder="ID:A5111021400002017120001" >
</div>
</div>
<div class="layui-form-mid" style="padding:0 !important;">
<label class="layui-form-label l15">过滤查询:</label>
<div class="layui-input-inline">
<input type="text" name="fq" id="fq" lay-verify="required"
class="layui-input h30" placeholder="ID:A5111021400002017120001" >
</div>
</div>
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal queryList" style="margin-left: 20px;">查询</button>
<button class="layui-btn layui-btn-normal clear" style="margin-left: 20px;">清空</button>
</div>
<table class="layui-hide" id="test" lay-filter="test" width="98%"></table>
</div>
</div>
<!-- 右侧主体结束 -->
</div>
<script src="/layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
layui.use('table', function () {
var table = layui.table;
var tableIns;
//begin
//初始化页面查询实例
$.ajax({
url: 'sourcedata/getCores',
async: false, // 注意此处需要同步,因为先绑定表头,才能绑定数据
type: "POST",
dataType: "json",
success: function (obj) {
$.each(obj, function(i,val){
$("#core").append("<option value='"+val+"'>"+val+"</option>"); //为Select追加一个Option(下拉项)
});
}
});
//初始化页面查询列
$.ajax({
url: 'sourcedata/getCols',
async: false, // 注意此处需要同步,因为先绑定表头,才能绑定数据
type: "POST",
data:{selCore:$('#core option:selected').val()},
dataType: "json",
success: function (jsonObj) {
var columnsAll = new Array(); //如果返回的数据不为空,则添加遍历该数据集合
if (jsonObj.length > 0) {
for (var i = 0; i < jsonObj.length; i++) {
debugger;//把返回的数据封装到一个对象中
var col = {}
col['title'] = jsonObj[i].title;
col['field'] = jsonObj[i].field;
col['align'] = 'center';
col['sort'] = true;
columnsAll.push(col);
}
//初始化加载table
tableIns = table.render({
elem: '#test'
, url: 'comparisonresult/selectByConditionInfo'
, method: 'POST'
, toolbar: '#toolbarDemo'
, title: '比对结果表'
, page: true
, limit: 10
, cols: [columnsAll]
});
}
}
});
//end
//查询按钮
$('.queryList').on('click', function () {
var core = cheNull($('#core').val());
var q = cheNull($('#q').val());
var fq = cheNull($('#fq').val());
//begin
//重新加载列以及table
$.ajax({
url: 'sourcedata/getCols',
async: false, // 注意此处需要同步,因为先绑定表头,才能绑定数据
type: "POST",
data:{selCore:$('#core option:selected').val()},
dataType: "json",
success: function (jsonObj) {
var columnsAll = new Array(); //如果返回的数据不为空,则添加遍历该数据集合
if (jsonObj.length > 0) {
for (var i = 0; i < jsonObj.length; i++) {
debugger;//把返回的数据封装到一个对象中
var col = {}
col['title'] = jsonObj[i].title;
col['field'] = jsonObj[i].field;
col['align'] = 'center';
col['sort'] = true;
columnsAll.push(col);
}
tableIns = table.render({
elem: '#test'
, url: 'comparisonresult/selectByConditionInfo'
, method: 'POST'
, toolbar: '#toolbarDemo'
, title: '比对结果表'
, page: true
, limit: 10
, cols: [columnsAll]
,where: {//查询条件
core: core,
q: q,
fq: fq
}
});
}
}
});
//end
});
});
$('.clear').on('click', function () {
$('#q').val("");
$('#fq').val("");
});
function cheNull(str) {
if (str == "") {
return undefined;
} else {
return str;
}
}
</script>
</body>
</html>
\ No newline at end of file
......@@ -26,12 +26,24 @@
<div class="left-nav">
<div id="side-nav">
<ul id="nav">
<li class="list" id="H10E0301" current>
<li class="list current" id="H10E0301" current>
<a href="sourceDataList">
<i class="fa fa-sitemap" aria-hidden="true"></i>
源数据查询
</a>
</li>
<li class="list" id="H10E0302" >
<a href="comparisonDataList">
<i class="fa fa-server" aria-hidden="true"></i>
比对数据查询
</a>
</li>
<li class="list" id="H10E0303" >
<a href="comparisonResultList">
<i class="fa fa-bolt" aria-hidden="true"></i>
比对结果查询
</a>
</li>
</ul>
</div>
</div>
......@@ -160,7 +172,7 @@
, url: 'sourcedata/selectByConditionInfo'
, method: 'POST'
, toolbar: '#toolbarDemo'
, title: '用户数据表'
, title: '数据表'
, page: true
, limit: 10
, cols: [columnsAll]
......
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