Commit 8536f953 by chang_chao@founder.com.cn

Merge remote-tracking branch 'remotes/origin/dev' into dev

parents 83821696 22432bf7
package com.cc.solr;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@MapperScan(value = "com.cc.solr.mapper")
// 启用异步任务
@EnableAsync
//进行定时任务
......
package com.cc.solr.controller;
import com.cc.solr.entity.ConditionInfo;
import com.cc.solr.entity.CompareTask;
import com.cc.solr.service.CompareTaskService;
import com.cc.solr.util.ResultMap;
import com.cc.solr.util.XzxtRestResult;
import com.cc.solr.util.propertiesUtil;
import io.swagger.annotations.*;
import org.apache.solr.client.solrj.SolrQuery;
......@@ -9,9 +12,9 @@ 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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.Properties;
......@@ -19,6 +22,8 @@ import java.util.Properties;
@RestController
@RequestMapping(value = "/comparisonresult")
public class ComparisonResultController {
@Autowired
CompareTaskService taskService;
/**
* 7、查 ++:关键字、高亮、分页 ✔
*
......@@ -96,5 +101,29 @@ public class ComparisonResultController {
return resultMap;
}
//保存
@PostMapping("/saveCompareTask")
@ResponseBody
public XzxtRestResult saveCompareTask(CompareTask task){
return taskService.saveTask(task);
}
//获取list
@PostMapping("/compareTaskList")
@ResponseBody
public ResultMap taskList(Model model, CompareTask task){
ResultMap resultMap=new ResultMap();
try {
resultMap =taskService.taskAll(task);
} catch (IOException e) {
e.printStackTrace();
}
return resultMap;
}
}
package com.cc.solr.entity;
import java.io.Serializable;
import java.util.Date;
public class CompareTask extends PageBean implements Serializable {
private String id;//任务编号
private String taskName;//任务名称
private String status;//状态(0:成功 1:失败)
private String core;//数据源
private String comparisonCore;//比对数据源
private String q;//查询条件
private String fq;//过滤条件
private Date lrsj;//录入时间
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCore() {
return core;
}
public void setCore(String core) {
this.core = core;
}
public String getComparisonCore() {
return comparisonCore;
}
public void setComparisonCore(String comparisonCore) {
this.comparisonCore = comparisonCore;
}
public String getQ() {
return q;
}
public void setQ(String q) {
this.q = q;
}
public String getFq() {
return fq;
}
public void setFq(String fq) {
this.fq = fq;
}
public Date getLrsj() {
return lrsj;
}
public void setLrsj(Date lrsj) {
this.lrsj = lrsj;
}
}
package com.cc.solr.mapper;
import com.cc.solr.entity.CompareTask;
import java.util.List;
//@Mapper或者@MapperScan将接口扫描装配到容器中
public interface CompareTaskMapper {
List<CompareTask> selectPageList(CompareTask task);
int selectPageCount(CompareTask task);
int saveTask(CompareTask task);
}
package com.cc.solr.service;
import com.cc.solr.entity.CompareTask;
import com.cc.solr.util.ResultMap;
import com.cc.solr.util.XzxtRestResult;
import java.io.IOException;
/**
* @author yutons
*/
public interface CompareTaskService {
ResultMap taskAll(CompareTask task) throws IOException;
XzxtRestResult saveTask(CompareTask task);
}
package com.cc.solr.service.serviceimpl;
import com.cc.solr.entity.CompareTask;
import com.cc.solr.mapper.CompareTaskMapper;
import com.cc.solr.service.CompareTaskService;
import com.cc.solr.util.KeyUtil;
import com.cc.solr.util.ResultMap;
import com.cc.solr.util.XzxtRestResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.io.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class CompareTaskServiceImpl implements CompareTaskService {
private static final Logger logger = LoggerFactory.getLogger(CompareTaskService.class);
@Resource
private CompareTaskMapper taskMapper;
@Override
public ResultMap taskAll(CompareTask task) throws IOException {
List<CompareTask> tasklist=taskMapper.selectPageList(task);
ResultMap resultMap=new ResultMap();
if (!StringUtils.isEmpty(tasklist)) {
int totals=taskMapper.selectPageCount(task);
resultMap.setCount(totals);
resultMap.setData(tasklist);
return resultMap;
}
return resultMap ;
}
@Override
public XzxtRestResult saveTask(CompareTask task) {
String id=KeyUtil.getUniqueKey("RW");
task.setId(id);
task.setLrsj(new Date());
int num=taskMapper.saveTask(task);
if(num==1){
return XzxtRestResult.build(201,"存入成功");
}else{
return XzxtRestResult.build(202,"存入失败");
}
}
}
package com.cc.solr.util;
import java.util.Random;
public class KeyUtil {
/**
*
* @Description: 生成唯一的主键 格式: 时间+随机数
* @Param:
* @return: java.lang.String
* @Author: cao peng
* @date: 2018/8/12 0012-23:14
*/
public static synchronized String getUniqueKey(String str) {
Random random = new Random();
Integer number = random.nextInt(900000) + 100000;
return str + System.currentTimeMillis()+String.valueOf(number);
}
}
package com.cc.solr.util;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
/**
* Xzxt-Rest自定义响应结构
*/
public class XzxtRestResult {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
// 响应业务状态
private Integer status;
// 响应消息
private String msg;
// 响应中的数据
private Object data;
public static XzxtRestResult build(Integer status, String msg, Object data) {
return new XzxtRestResult(status, msg, data);
}
public static XzxtRestResult ok(Object data) {
return new XzxtRestResult(data);
}
public static XzxtRestResult ok(int i, String count, List<Object> list) {
return new XzxtRestResult(null);
}
public XzxtRestResult() {
}
public static XzxtRestResult build(Integer status, String msg) {
return new XzxtRestResult(status, msg, null);
}
public XzxtRestResult(Integer status, String msg, Object data) {
this.status = status;
this.msg = msg;
this.data = data;
}
public XzxtRestResult(Object 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 Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
/**
* 将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) {
return null;
}
}
/**
* 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;
}
}
}
<?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.cc.solr.mapper.CompareTaskMapper">
<resultMap id="BaseResultMap" type="com.cc.solr.entity.CompareTask" >
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="taskName" property="taskName" jdbcType="VARCHAR" />
<result column="status" property="status" jdbcType="VARCHAR" />
<result column="core" property="core" jdbcType="VARCHAR" />
<result column="comparisonCore" property="comparisonCore" jdbcType="VARCHAR" />
<result column="q" property="q" jdbcType="VARCHAR" />
<result column="fq" property="fq" jdbcType="VARCHAR" />
<result column="lrsj" property="lrsj" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id, taskName, status, core, comparisonCore, q, fq, lrsj
</sql>
<sql id="queryWhere" >
<where>
<if test="id!=null and id !=''">AND id = #{id}</if>
</where>
</sql>
<!-- 保存 -->
<insert id="saveTask" parameterType="com.cc.solr.entity.CompareTask">
insert into compare_task ( <include refid="Base_Column_List"/>)
values (
#{id,jdbcType=VARCHAR},
#{taskName,jdbcType=VARCHAR},
#{status,jdbcType=VARCHAR},
#{core,jdbcType=VARCHAR},
#{comparisonCore,jdbcType=VARCHAR},
#{q,jdbcType=VARCHAR},
#{fq,jdbcType=VARCHAR},
#{lrsj,jdbcType=DATE})
</insert>
<!-- 通过条件分页查询,返回数据集 -->
<select id="selectPageList" parameterType="com.cc.solr.entity.CompareTask" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from compare_task
<include refid="queryWhere"/>
order by id
limit ${(page-1)*limit},#{limit}
</select>
<!-- 通过条件分页查询,返回总记录数 -->
<select id="selectPageCount" parameterType="com.cc.solr.entity.CompareTask" resultType="java.lang.Integer">
select count(1) from compare_task
<include refid="queryWhere"/>
</select>
</mapper>
\ No newline at end of file
......@@ -66,7 +66,7 @@
<!-- 右侧主体开始 -->
<div class="page-content">
<div class="content">
<label class="layui-form-label l15" style="padding-right: 0;">数据源:</label>
<!-- <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">
......@@ -89,6 +89,41 @@
<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>-->
<!--查询条件-->
<div >
<table style="width:100%;border-collapse: collapse;text-align:left;" >
<tr style="line-height:40px">
<td style="width:10%;"> 任务名称:</td>
<td > <input type="text" name="taskName" id="taskName" lay-verify="required"
class="layui-input h30" placeholder="ID:A5111021400002017120001" > </td>
<td style="width:10%;"> 数据源:</td>
<td > <select name="core" lay-verify="" id="core" style="height:30px;width:200px;" class="h30">
</select></td>
<td style="width:10%;"> 比对数据源:</td>
<td > <select name="comparisonCore" lay-verify="" id="comparisonCore" style="height:30px;width:200px;" class="h30">
</select></td>
</tr>
<tr style="line-height:30px">
<td style="width:10%;"> 查询字符串:</td>
<td th:colspan="5">
<textarea name="q" id="q" rows="3" cols="120"></textarea>
</td>
</tr>
<tr style="line-height:30px">
<td style="width:10%;"> 过滤查询:</td>
<td th:colspan="5">
<textarea name="fq" id="fq" rows="3" cols="120"></textarea>
</td>
<td>
<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>
</td>
</tr>
</table>
</div>
<table class="layui-hide" id="test" lay-filter="test" width="98%"></table>
</div>
......@@ -114,94 +149,64 @@
success: function (obj) {
$.each(obj, function(i,val){
$("#core").append("<option value='"+val+"'>"+val+"</option>"); //为Select追加一个Option(下拉项)
$("#comparisonCore").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
//初始化加载table
tableIns = table.render({
elem: '#test'
, url: 'comparisonresult/compareTaskList'
, method: 'POST'
, toolbar: '#toolbarDemo'
, title: '比对结果表'
, page: true
, limit: 10
,cols: [
[
{field:'id', title:'任务编号',align:'center', width:'25%', edit: 'text'}
,{field:'taskName', title:'任务名称',align:'center', width:'25%', edit: 'text'}
,{field:'status', title:'状态',align:'center', width:'25%', edit: 'text'}
,{field: 'right', title:'操作',align:'center', toolbar: '#barDemo1', width:'25%'}
]
]
});
//查询按钮
$('.queryList').on('click', function () {
var taskName = cheNull($('#taskName').val());
var core = cheNull($('#core').val());
var comparisonCore = cheNull($('#comparisonCore').val());
var q = cheNull($('#q').val());
var fq = cheNull($('#fq').val());
//begin
//重新加载列以及table
//保存任务
$.ajax({
url: 'sourcedata/getCols',
async: false, // 注意此处需要同步,因为先绑定表头,才能绑定数据
url: 'comparisonresult/saveCompareTask',
type: "POST",
data:{selCore:$('#core option:selected').val()},
data:{taskName:taskName,core:core,comparisonCore:comparisonCore,q:q,fq:fq},
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
success: function (obj) {
if(obj.status=="201"){
layer.msg("发起任务成功");
tableIns.reload({
page: {
curr: 1 //重新从第 1 页开始
},
done: function(res, curr, count){
}
});
}else{
layer.msg("发起任务成功");
}
}
});
//end
//保存任务
});
......@@ -210,6 +215,7 @@
$('.clear').on('click', function () {
$('#q').val("");
$('#fq').val("");
$('#taskName').val("");
});
function cheNull(str) {
......
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