Commit dae02ebb by liu_xiaoxu

案件查询和错误的嫌疑人查询

parent f77f1e14
......@@ -62,7 +62,37 @@ public class MisSolrController {
System.out.println("当前页:"+page+"----------行数:"+rows);
return iMisSolrService.queryMisSolrAsj(q,fqList,misAsjRyRelateVO,page,rows, sorlAddress, sorlInstance,groupids,sort,order,unitcode,configMap,daohan,groupidvalue);
}
/**
* solr查询本地实例 TB_ST_RY_ZBFZXYR
* 关联表:TB_ST_RY、TB_XW_ZBFZXYR、TB_ST_ASJ
* 嫌疑人查询
* @return
*/
@RequestMapping("/listMisXyr")
@ResponseBody
public EasyUIPage listMisXyr(HttpServletRequest request, MisAsjRyRelateVO misAsjRyRelateVO, String unitcode, String grade,String groupids,String sort,String order,String sorlInstance,String daohan,String groupidvalue,String selectedCols){
User user=(User)request.getSession().getAttribute("user");
Properties properties=propertiesUtil("solr.properties");
String sorlAddress =properties.getProperty("sorlAddress");
Properties configProperties=propertiesUtil("config.properties");
Map<String,Object> configMap = new HashedMap();
configMap.put("zhyyPath",configProperties.getProperty("zhyyPath"));
configMap.put("mainurl",configProperties.getProperty("main.url"));
configMap.put("caijiurl",configProperties.getProperty("caiji.url"));
configMap.put("zxajurl",configProperties.getProperty("zxaj.url"));
Map<String,Object> map = getMisXyrFqList(misAsjRyRelateVO,unitcode,grade);
List<String> fqList = (List<String>)map.get("fqList");
String q = (String)map.get("q");
//Sorl查询
Record record = new Record();
record.setXyr_record(selectedCols);
record.setUserid(user.getIdentitycard());
recordService.updateRecord(record);
String page = request.getParameter("page");
String rows = request.getParameter("rows");
System.out.println(page+"----------"+rows);
return iMisSolrService.queryMisSolrXyr(q,fqList,misAsjRyRelateVO,page,rows, sorlAddress, sorlInstance,groupids,sort,order,unitcode,configMap,daohan,groupidvalue);
}
private Map<String,Object> getMisAsjFqList(MisAsjRyRelateVO misAsjRyRelateVO,String unitcode,String grade) {
Map<String, Object> map = new HashedMap();
List<String> fqList = new ArrayList<>();
......@@ -70,7 +100,99 @@ public class MisSolrController {
if(null!=misAsjRyRelateVO.getCaseid() && !"".equals(misAsjRyRelateVO.getCaseid())){
misAsjq += " AND CASEID:*" + misAsjRyRelateVO.getCaseid()+"*";
}
if(null!=misAsjRyRelateVO.getCasetype() && !"".equals(misAsjRyRelateVO.getCasetype())){
misAsjq += " AND CASETYPE:*" + misAsjRyRelateVO.getCasetype()+"*";
}
if(null!=misAsjRyRelateVO.getCasearea() && !"".equals(misAsjRyRelateVO.getCasearea())){
misAsjq += " AND CASEAREA:*" + misAsjRyRelateVO.getCasearea()+"*";
}
if(null!=misAsjRyRelateVO.getCaseplace() && !"".equals(misAsjRyRelateVO.getCaseplace())){
misAsjq += " AND CASEPLACE:*" + misAsjRyRelateVO.getCaseplace()+"*";
}
if(null!=misAsjRyRelateVO.getDeadamount() && !"".equals(misAsjRyRelateVO.getDeadamount())){
if("null".equals(misAsjRyRelateVO.getDeadamount())){
misAsjq += " AND -DEADAMOUNT:*";
}else{
misAsjq += " AND DEADAMOUNT:"+misAsjRyRelateVO.getDeadamount();
}
}
if(null!=misAsjRyRelateVO.getCasetimef() && !"".equals(misAsjRyRelateVO.getCasetimef())){
if(null!=misAsjRyRelateVO.getCasetimee() && !"".equals(misAsjRyRelateVO.getCasetimee())) {
misAsjq += " AND CASETIMEF:[" + misAsjRyRelateVO.getCasetimef()+" TO "+"*]";
misAsjq += " AND CASETIMEE:[* TO " + misAsjRyRelateVO.getCasetimee()+"]";
}else{
misAsjq += " AND CASETIMEF:["+misAsjRyRelateVO.getCasetimef()+" TO "+"*]";
}
}else if(null!=misAsjRyRelateVO.getCasetimee() && !"".equals(misAsjRyRelateVO.getCasetimee())) {
misAsjq += " AND CASETIMEE:[* TO " + misAsjRyRelateVO.getCasetimee()+"]";
}
fqList.add(misAsjq);
String str = "";
String q = "*:*";
String jyaq = misAsjRyRelateVO.getBrief();
if(null!=jyaq && !"".equals(jyaq)){
jyaq=jyaq.replaceAll("and","AND").replaceAll("or","OR");
if(jyaq.indexOf("AND")>0) {
String[] andArr = jyaq.split("AND");
for (int i = 0; i < andArr.length; i++) {
if (andArr[i].indexOf("OR") > 0) {
String[] orArr = andArr[i].split("OR");
for (int j = 0; j < orArr.length; j++) {
if ((orArr[j].indexOf("(") != -1) || (orArr[j].indexOf("(") != -1)) {
str += " (JYAQ:*" + orArr[j].substring(1, orArr[j].length()) + "* OR ";
} else if (orArr[j].indexOf(")") > 0 || orArr[j].indexOf(")") > 0) {
str += " JYAQ:*" + orArr[j].substring(0, orArr[j].length() - 1) + "*)";
} else {
str += " JYAQ:*" + orArr[j]+"*";
}
}
if (i < andArr.length - 1) {
str += " AND ";
}
} else {
if (i == andArr.length - 1) {
str += " JYAQ:*" + andArr[i]+"*";
} else {
str += " JYAQ:*" + andArr[i] + "* AND ";
}
}
}
}else if(jyaq.indexOf("OR")>0){
str +="(";
String[] orArr = jyaq.split("OR");
for (int j = 0; j < orArr.length; j++) {
if (j == orArr.length - 1) {
str += " JYAQ:*" + orArr[j]+"*";
} else {
str += " JYAQ:*" + orArr[j] + "* OR ";
}
}
str +=")";
}else{
str =" JYAQ:*" + jyaq+"*";
}
System.out.println(str);
q = str;
}
System.out.println("过虑查询条件fqList==================="+fqList);
System.out.println("查询的关键字q==================="+q);
map.put("fqList",fqList);
map.put("q",q);
return map;
}
private Map<String,Object> getMisXyrFqList(MisAsjRyRelateVO misAsjRyRelateVO,String unitcode,String grade) {
Map<String, Object> map = new HashedMap();
List<String> fqList = new ArrayList<>();
String misAsjq = "IFDET:0";
if(null!=misAsjRyRelateVO.getCaseid() && !"".equals(misAsjRyRelateVO.getCaseid())){
misAsjq += " AND CASEID:*" + misAsjRyRelateVO.getCaseid()+"*";
}
if(null!=misAsjRyRelateVO.getIdcardnumb() && !"".equals(misAsjRyRelateVO.getIdcardnumb())){
misAsjq += " AND IDCARDNUMB:*" + misAsjRyRelateVO.getIdcardnumb()+"*";
}
fqList.add(misAsjq);
String str = "";
String q = "*:*";
......@@ -125,6 +247,7 @@ public class MisSolrController {
map.put("q",q);
return map;
}
/**
* @return 生成文件
*/
......
......@@ -37,10 +37,12 @@ public class RecordController {
if(null == recordService.queryRybhRecord(users.getIdentitycard())){
record.setUserid(users.getIdentitycard());
record.setAj_record("案事件编号:id,案件名称:ajmc,侦查阶段:zcjdmc,业务状态:sjzt,案件类别:ajlbdmmc,案件时间:ajxgsj,立案单位:ladw_gajgmc,简要案情:jyaq");
record.setAj_record("案事件编号:id,案件名称:ajmc,侦查阶段:zcjdmc,业务状态:sj" +
"zt,案件类别:ajlbdmmc,案件时间:ajxgsj,立案单位:ladw_gajgmc,简要案情:jyaq");
record.setXyr_record("案事件编号:asjbh,证件号码:cyzj_zjhm,姓名:xm,性别:xbdmmc,民族:mzmc,户籍地行政区划:hjdz_xzqhmc,现住地行政区划:xzz_xzqhmc,到案状态:zhfzxyr_fzxyrdaztmc");
record.setRybh_record("案事件编号:asjbh,证件号码:cyzj_zjhm,姓名:xm,性别:xbdmmc,民族:mzmc,户籍地行政区划:hjdz_xzqhmc,人身侵犯结果:rsqfjgmc,人身伤害程度:rsshcdmc");
record.setAjzlz_record("案事件编号:caseid,简要案情:brief");
record.setAjzlz_record("案事件编号:caseid,案件类别:casetype,发案区域:casearea,案件时间:casetimef,案件状态:casestatus,立案单位:registerunit,简要案情:brief");
record.setMisxyr_record("案事件编号:caseid,姓名:name");
recordService.insertRecord(record);
}else{
record = recordService.queryRybhRecord(users.getIdentitycard());
......
......@@ -13,6 +13,8 @@ public class Record {
private String xyr_record;
private String aj_record;
private String ajzlz_record;
private String misxyr_record;
private String misshr_record;
private String gxsj;
private String id;
......@@ -28,6 +30,21 @@ public class Record {
public String getUserid() {
return userid;
}
public String getMisxyr_record() {
return misxyr_record;
}
public void setMisxyr_record(String misxyr_record) {
this.misxyr_record = misxyr_record;
}
public String getMisshr_record() {
return misshr_record;
}
public void setMisshr_record(String misshr_record) {
this.misshr_record = misshr_record;
}
public void setUserid(String userid) {
this.userid = userid;
......
......@@ -11,6 +11,8 @@ import java.util.Map;
public interface IMisSolrService {
EasyUIPage queryMisSolrAsj(String q, List<String> fqList, MisAsjRyRelateVO misAsjRyRelateVO, String page, String rows, String solrAddress, String sorlInstance, String groupids, String sort, String order, String unitcode, Map<String,Object> configMap, String daohan, String groupidvalue);
EasyUIPage queryMisSolrXyr(String q, List<String> fqList, MisAsjRyRelateVO misAsjRyRelateVO, String page, String rows, String solrAddress, String sorlInstance, String groupids, String sort, String order, String unitcode, Map<String,Object> configMap, String daohan, String groupidvalue);
List<Map<String, Object>> getMisAsjSorlByFQ(String ssdw,String fq,Integer maxValue,String solrAddress, String sorlInstance,String[] checkIds);
}
......@@ -105,7 +105,12 @@ public class MisSolrServiceImpl implements IMisSolrService {
for (SolrDocument solrDocument : results) {
Map<String, Object> mapResult = new HashMap<String, Object>();
mapResult.put("caseid", solrDocument.get("CASEID"));
mapResult.put("brief", solrDocument.get("BRIEF"));
mapResult.put("casetype", solrDocument.get("CASETYPE"));
mapResult.put("casearea", solrDocument.get("CASEAREA"));
mapResult.put("casetimef", solrDocument.get("CASETIMEF"));
mapResult.put("casestatus", solrDocument.get("CASESTATUS"));
mapResult.put("registerunit", solrDocument.get("REGISTERUNIT"));
// 输出高亮
Map<String, List<String>> map = highlighting.get(solrDocument.get("CASEID"));
List<String> list = map.get("keywords");
......@@ -178,6 +183,152 @@ public class MisSolrServiceImpl implements IMisSolrService {
}
return easyUIPage;
}
//嫌疑人查询
public EasyUIPage queryMisSolrXyr(String q, List<String> fqList, MisAsjRyRelateVO misAsjRyRelateVO, String page, String rows, String solrAddress, String sorlInstance, String groupids, String sort, String order, String unitcode, Map<String, Object> configMap, String daohan, String groupidvalue) {
List<Map<String, Object>> asjxxList = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> groupLists = new ArrayList<>();
//根据查询条件分页查询案件信息 start
EasyUIPage easyUIPage = null;
int numFound;
try {
if (null != page && null != rows) {
easyUIPage = new EasyUIPage();
easyUIPage.setPage(Integer.parseInt(page));// 页数
easyUIPage.setPagePara(Integer.parseInt(rows));// 行数
int begin = easyUIPage.getBegin();// 开始行数
int end = Integer.parseInt(rows);// 取几行
System.out.println(begin + "======================" + end);
String serverUrl2 = solrAddress + "/" + sorlInstance;
HttpSolrClient client = new HttpSolrClient(serverUrl2);
ModifiableSolrParams solrParams = new ModifiableSolrParams();
SolrQuery filterQuery = new SolrQuery();
solrParams.add("q", q);
solrParams.add("start", begin + "");
solrParams.add("rows", end + "");
if (StringUtils.isNotBlank(sort) && sort.equals("FINDTIME")) {
solrParams.add("sort", sort.toUpperCase() + " " + order);
} else {
if (StringUtils.isNotBlank(order)) {
if (sort.equals("bfillunit")) {
solrParams.add("sort", "BFILLUNIT" + " " + order);
} else {
solrParams.add("sort", sort.toUpperCase() + " " + order);
}
} else {
solrParams.add("sort", "FINDTIME DESC");
}
}
String flag = "";
if (CollectionUtils.isNotEmpty(fqList)) {
for (int i = 0; i < fqList.size(); i++) {
filterQuery.addFilterQuery(fqList.get(i)); //遍历fqList,加入filterQuery,每个关联的core用一个fq
flag += fqList.get(i) + "&&&"; //将查询条件保存到flag中,传到前端,以便前端使用
}
}
// ======高亮设置===
// 开启高亮
filterQuery.setHighlight(true);
// 高亮域
filterQuery.addHighlightField("keywords");
// 前缀
filterQuery.setHighlightSimplePre("<font style='color:red'>");
// 后缀
filterQuery.setHighlightSimplePost("</font>");
//设置高亮每个分片的最大长度,默认为100
filterQuery.setHighlightFragsize(100000);
solrParams.add(filterQuery);
// 执行搜索
QueryResponse queryResponse = client.query(solrParams);
// 搜索结果
SolrDocumentList results = queryResponse.getResults();
// 查询出来的数量
numFound = (int) results.getNumFound();
System.out.println("总查询出:" + numFound + "条记录");
// 遍历搜索记录
// 获取高亮信息
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
for (SolrDocument solrDocument : results) {
Map<String, Object> mapResult = new HashMap<String, Object>();
//mapResult.put("caseid", solrDocument.get("CASEID"));
mapResult.put("idcardnumb", solrDocument.get("IDCARDNUMB"));
// 输出高亮
Map<String, List<String>> map = highlighting.get(solrDocument.get("CASEID"));
List<String> list = map.get("keywords");
asjxxList.add(mapResult);
}
//根据查询条件分页查询案件信息 end
//根据分类查询分类信息 start
if (null != groupids && !"".equals(groupids)) {
String[] arr = groupids.split(",");
for (int i = 0; i < arr.length; i++) {
String groupid = "";
groupid = "CASE_M_AJZLZ";
Map<String, Object> total = new HashedMap();
ModifiableSolrParams groupSolrParams = new ModifiableSolrParams();
SolrQuery groupFilterQuery = new SolrQuery();
groupSolrParams.add("q", q);
groupSolrParams.add("group", "true");
String groupidField = groupid;
//案件类别类
if (groupid.equals("CASETYPE") && StringUtils.isNotBlank(misAsjRyRelateVO.getCasetype())) {
groupidField = "CASETYPE_MC";
}
groupSolrParams.add("group.field", groupidField);
groupSolrParams.add("rows", "20000"); //分组的个数限制
groupSolrParams.add(groupFilterQuery);
// 执行搜索
QueryResponse response = client.query(groupSolrParams);
if (response != null) {
GroupResponse groupResponse = response.getGroupResponse();
if (groupResponse != null) {
List<GroupCommand> groupList = groupResponse.getValues();
List<Map<String, Object>> l = new ArrayList<>();
for (GroupCommand groupCommand : groupList) {
List<Group> groups = groupCommand.getValues();
for (Group group : groups) {
Map<String, Object> map = new HashedMap();
if (StringUtils.isBlank(daohan)) {
map.put("groupNum", group.getResult().getNumFound());
map.put("groupValue", group.getGroupValue());
}
if (map.size() > 0) {
l.add(map);
}
}
}
total.put("groupid", groupid);
total.put("groupList", l);
}
}
if (StringUtils.isNotBlank(daohan)) {
String[] aa = daohan.split(":");
if (aa[0].equals(groupid)) {
total.put("daohan", aa[1]);
}
}
groupLists.add(total);
}
}
client.close();
easyUIPage.setGroupLists(groupLists);
easyUIPage.setRows(asjxxList);
easyUIPage.setTotal(numFound);// total
easyUIPage.setFlag(flag);
easyUIPage.setConfigMap(configMap);
easyUIPage.setGroupidvalue(groupidvalue);
}
} catch (Exception e) {
e.printStackTrace();
}
return easyUIPage;
}
public List<Map<String, Object>> getMisAsjSorlByFQ(String ssdw,String fq,Integer maxValue,String solrAddress, String sorlInstance,String[] checkIds){
solrAddress = solrAddress + "/"+sorlInstance;
HttpSolrClient client = new HttpSolrClient(solrAddress);
......
......@@ -8,6 +8,7 @@
<result column="xyr_record" jdbcType="VARCHAR" property="xyr_record" />
<result column="aj_record" jdbcType="VARCHAR" property="aj_record" />
<result column="ajzlz_record" jdbcType="VARCHAR" property="ajzlz_record" />
<result column="misxyr_record" jdbcType="VARCHAR" property="misxyr_record" />
<result column="gxsj" jdbcType="VARCHAR" property="gxsj" />
</resultMap>
<!--查询被害人的记录-->
......@@ -30,6 +31,9 @@
<if test="ajzlz_record != null">
ajzlz_record = #{ajzlz_record,jdbcType=VARCHAR},
</if>
<if test="misxyr_record != null">
misxyr_record = #{misxyr_record,jdbcType=VARCHAR},
</if>
GXSJ =SYSDATE
</set>
WHERE userid =#{userid,jdbcType=INTEGER}
......
......@@ -219,6 +219,11 @@ var navCategory = {
url = "listMisAsj";
sorlInstance = "CASE_M_AJZLZ";
}
else if(searchType=='misxyr'){
presentType = $('input[type=radio][name="misxyrPresentType"]:checked ').val();
url = "listMisXyr";
sorlInstance = "CASE_S_XYR";
}
searchTerm.sorlInstance=sorlInstance;
if(presentType=='DList'){
$("#dListContainer").show();
......
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