| | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.product.common.lang.StringUtils; |
| | | import com.product.core.config.CoreConst; |
| | | import com.product.core.dao.BaseDao; |
| | | import com.product.core.entity.FieldSetEntity; |
| | | import com.product.core.permission.PermissionService; |
| | | import com.product.core.websocket.config.CmnConst; |
| | | import com.product.lucene.config.CmnConst; |
| | | import com.product.lucene.util.FileUtils; |
| | | import com.product.util.BaseUtil; |
| | | |
| | |
| | | * @throws IOException |
| | | */ |
| | | public void createdIndex(FieldSetEntity fse) { |
| | | String function_uuid=fse.getString("function_uuid"); //è·ååè½ |
| | | String function_uuid=fse.getString(CoreConst.FUNCTION_UUID); //è·ååè½ |
| | | File file=(File)fse.getObject("file"); //è·åéä»¶ |
| | | |
| | | //è·åå
¨ææ£ç´¢é
ç½® |
| | | FieldSetEntity fseConfig=baseDao.getFieldSetEntityByFilter("product_sys_document_search", "function_uuid=?", new Object[] {function_uuid}, false); |
| | | FieldSetEntity fseConfig=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH, "function_uuid=?", new Object[] {function_uuid}, false); |
| | | if (fseConfig!=null) { |
| | | String table_uuid=fseConfig.getString("table_name"); |
| | | String table_uuid=fseConfig.getString(CmnConst.TABLE_NAME); |
| | | |
| | | //è·åç¼å表é
ç½® |
| | | FieldSetEntity fseTable=baseDao.getFieldSetEntity("product_sys_datamodel_table", table_uuid, false); |
| | | FieldSetEntity fseTable=baseDao.getFieldSetEntity(CoreConst.PRODUCT_SYS_DATAMODEL_TABLE, table_uuid, false); |
| | | if (fseTable!=null) { |
| | | |
| | | //è·åéä»¶uuids |
| | | String attachments=fse.getString("attachment_uuid"); |
| | | String attachments=fse.getString(CmnConst.ATTACHMENT_UUID); |
| | | if (!StringUtils.isEmpty(attachments)) { |
| | | |
| | | //éåè·åéä»¶ä¿¡æ¯ |
| | |
| | | for (int i = 0; i < attachment.length; i++) { |
| | | |
| | | //è·åéä»¶ä¿¡æ¯ |
| | | FieldSetEntity fseAttachment=baseDao.getFieldSetEntity("product_sys_attachments", attachment[i], false); |
| | | FieldSetEntity fseAttachment=baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_ATTACHMENTS, attachment[i], false); |
| | | if (fseAttachment!=null) { |
| | | |
| | | if (file!=null) { |
| | | //çæç´¢å¼ä¿¡æ¯ |
| | | Document doc=new Document(); |
| | | doc.add(new StringField("uuid", attachment[i], Field.Store.YES)); //éä»¶UUID |
| | | doc.add(new TextField("function_uuid", function_uuid, Field.Store.YES)); //åè½UUID |
| | | doc.add(new TextField("file_name", fseAttachment.getString("file_name"), Field.Store.YES)); //æä»¶å |
| | | doc.add(new TextField("file_content", FileUtils.FileToString(file), Field.Store.YES)); //æä»¶å
å
容 |
| | | doc.add(new StringField(CoreConst.UUID, attachment[i], Field.Store.YES)); //éä»¶UUID |
| | | doc.add(new TextField(CoreConst.FUNCTION_UUID, function_uuid, Field.Store.YES)); //åè½UUID |
| | | doc.add(new TextField(CmnConst.FILE_NAME, fseAttachment.getString(CmnConst.FILE_NAME), Field.Store.YES)); //æä»¶å |
| | | doc.add(new TextField(CmnConst.FILE_CONTENT, FileUtils.FileToString(file), Field.Store.YES)); //æä»¶å
å
容 |
| | | docs.add(doc); |
| | | } |
| | | } |
| | |
| | | JSONObject jsonReturn=new JSONObject(); |
| | | |
| | | // 模ç³å¹é
,å¹é
è¯ |
| | | String search_key=fse.getString("search_key"); |
| | | String search_key=fse.getString(CmnConst.SEARCH_KEY); |
| | | if (!BaseUtil.strIsNull(search_key)) { |
| | | //æ¥è¯¢è§£æå¨ |
| | | QueryParser parser = new MultiFieldQueryParser(new String [] {"file_name","file_content"}, new SmartChineseAnalyzer()); |
| | | QueryParser parser = new MultiFieldQueryParser(new String [] {CmnConst.FILE_NAME,CmnConst.FILE_CONTENT}, new SmartChineseAnalyzer()); |
| | | Query query = parser.parse(search_key); |
| | | |
| | | //é«äº®æ ¼å¼ |
| | | SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("<span style='color:red'>", "</span>"); |
| | | SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter(CmnConst.HIGHLIGHT_BEFORE, CmnConst.HIGHLIGHT_AFTER); |
| | | //é«äº®å¹é
å¨ |
| | | Highlighter highlighter = new Highlighter(simpleHTMLFormatter, new QueryScorer(query)); |
| | | Fragmenter fragmenter = new SimpleFragmenter(100); |
| | | highlighter.setTextFragmenter(fragmenter); |
| | | |
| | | //å页æ¥è¯¢ææ¡£ |
| | | TopDocs topDocs = searchByPage(fse.getInteger("cpage"), fse.getInteger("pagesize"), indexSearcher, query); |
| | | TopDocs topDocs = searchByPage(fse.getInteger(CoreConst.CPAGE), fse.getInteger(CoreConst.PAGESIZE), indexSearcher, query); |
| | | |
| | | ScoreDoc[] hits = topDocs.scoreDocs; |
| | | for (int i = 0; i < hits.length; i++) { |
| | | Document doc = indexSearcher.doc(hits[i].doc); |
| | | JSONObject json=new JSONObject(); |
| | | if (!StringUtils.isEmpty(doc.get("function_uuid"))) { |
| | | getConfig(json, doc.get("function_uuid"), doc.get("uuid")); |
| | | if (!StringUtils.isEmpty(doc.get(CoreConst.FUNCTION_UUID))) { |
| | | getConfig(json, doc.get(CoreConst.FUNCTION_UUID), doc.get(CoreConst.UUID)); |
| | | } |
| | | json.put("function_uuid", doc.get("function_uuid")); |
| | | json.put(CoreConst.FUNCTION_UUID, doc.get(CoreConst.FUNCTION_UUID)); |
| | | |
| | | // å
容å¢å é«äº®æ¾ç¤º |
| | | String file_name=highlighter.getBestFragment(new SmartChineseAnalyzer(), "file_name",doc.get("file_name")); |
| | | String file_name=highlighter.getBestFragment(new SmartChineseAnalyzer(), CmnConst.FILE_NAME,doc.get(CmnConst.FILE_NAME)); |
| | | if (StringUtils.isEmpty(file_name)) { |
| | | file_name=doc.get("file_name"); |
| | | file_name=doc.get(CmnConst.FILE_NAME); |
| | | } |
| | | String file_content=highlighter.getBestFragment(new SmartChineseAnalyzer(), "file_content",doc.get("file_content")); |
| | | String file_content=highlighter.getBestFragment(new SmartChineseAnalyzer(), CmnConst.FILE_CONTENT,doc.get(CmnConst.FILE_CONTENT)); |
| | | if (StringUtils.isEmpty(file_content)) { |
| | | file_content=doc.get("file_content"); |
| | | file_content=doc.get(CmnConst.FILE_CONTENT); |
| | | } |
| | | json.put("file_name", file_name); |
| | | json.put("file_content", file_content); |
| | | json.put(CmnConst.FILE_NAME, file_name); |
| | | json.put(CmnConst.FILE_CONTENT, file_content); |
| | | jsonTotal.add(json); |
| | | } |
| | | |
| | | jsonReturn.put("totalCount", topDocs.totalHits.value); |
| | | jsonReturn.put(CmnConst.TOTALCOUNT, topDocs.totalHits.value); |
| | | } |
| | | |
| | | jsonReturn.put("data", jsonTotal); |
| | | jsonReturn.put(CmnConst.DATA, jsonTotal); |
| | | return jsonReturn; |
| | | } |
| | | |
| | |
| | | */ |
| | | public void getConfig(JSONObject json, String function_uuid, String uuid) { |
| | | |
| | | FieldSetEntity fseConfig=baseDao.getFieldSetEntityByFilter("product_sys_document_search", "function_uuid=?", new Object[] {function_uuid}, false); |
| | | FieldSetEntity fseConfig=baseDao.getFieldSetEntityByFilter(CmnConst.PRODUCT_SYS_DOCUMENT_SEARCH, "function_uuid=?", new Object[] {function_uuid}, false); |
| | | if (fseConfig!=null) { |
| | | |
| | | FieldSetEntity fseFunction=baseDao.getFieldSetEntity("product_sys_functions", function_uuid, false); |
| | | FieldSetEntity fseFunction=baseDao.getFieldSetEntity(CoreConst.PRODUCT_SYS_FUNCTIONS, function_uuid, false); |
| | | |
| | | //è·åæéè¿æ»¤å段 |
| | | String org_fields=fseConfig.getString("org_fileds"); |
| | | String user_fields=fseConfig.getString("user_fileds"); |
| | | String org_fields=fseConfig.getString(CmnConst.ORG_FIELDS); |
| | | String user_fields=fseConfig.getString(CmnConst.USER_FIELDS); |
| | | |
| | | //è·åéä»¶ä¿¡æ¯ |
| | | FieldSetEntity fseAttachment=baseDao.getFieldSetEntity("product_sys_attachments", uuid, false); |
| | | FieldSetEntity fseAttachment=baseDao.getFieldSetEntity(CmnConst.PRODUCT_SYS_ATTACHMENTS, uuid, false); |
| | | baseDao.loadPromptData(fseAttachment); |
| | | if (fseAttachment!=null) { |
| | | StringBuilder filter=new StringBuilder(); |
| | | filter.append(fseAttachment.getString("attachment_data_field")); |
| | | filter.append(fseAttachment.getString(CmnConst.ATTACHMENT_DATA_FIELD)); |
| | | filter.append(" =? "); |
| | | if (StringUtils.isEmpty(org_fields)) { |
| | | if (!StringUtils.isEmpty(user_fields)) { |
| | | filter.append(" AND "); |
| | | filter.append(permissionService.getDataFilter(fseAttachment.getString("attachment_data_table"), user_fields)); |
| | | filter.append(permissionService.getDataFilter(fseAttachment.getString(CmnConst.ATTACHMENT_DATA_TABLE), user_fields)); |
| | | } |
| | | }else { |
| | | if (StringUtils.isEmpty(user_fields)) { |
| | |
| | | filter.append(permissionService.getDataFilter(org_fields)); |
| | | }else { |
| | | filter.append(" AND "); |
| | | filter.append(permissionService.getDataFilter(fseAttachment.getString("attachment_data_table"), user_fields, org_fields)); |
| | | filter.append(permissionService.getDataFilter(fseAttachment.getString(CmnConst.ATTACHMENT_DATA_TABLE), user_fields, org_fields)); |
| | | } |
| | | } |
| | | |
| | | |
| | | //è·ååæ°æ® |
| | | FieldSetEntity fseService=baseDao.getFieldSetEntityByFilter(fseAttachment.getString("attachment_data_table"), filter.toString(), new Object[] {uuid}, false); |
| | | FieldSetEntity fseService=baseDao.getFieldSetEntityByFilter(fseAttachment.getString(CmnConst.ATTACHMENT_DATA_TABLE), filter.toString(), new Object[] {uuid}, false); |
| | | if (fseService==null) {//æéè¿æ»¤æ åæ°æ® |
| | | FieldSetEntity fseService2=baseDao.getFieldSetEntityByFilter(fseAttachment.getString("attachment_data_table"), fseAttachment.getString("attachment_data_field")+"=?", new Object[] {uuid}, false); |
| | | FieldSetEntity fseService2=baseDao.getFieldSetEntityByFilter(fseAttachment.getString(CmnConst.ATTACHMENT_DATA_TABLE), fseAttachment.getString(CmnConst.ATTACHMENT_DATA_FIELD)+"=?", new Object[] {uuid}, false); |
| | | if (fseService2==null) { |
| | | // json.put("date_time", fseService2.getString(fseConfig.getString("time_field"))); |
| | | json.put("title", "æ ç¸å
³ä¸å¡æ°æ®"); |
| | | json.put("function_name", fseFunction.getString("function_name")); |
| | | json.put("is_perssion", 1); |
| | | json.put(CmnConst.TITLE, "æ ç¸å
³ä¸å¡æ°æ®"); |
| | | json.put(CoreConst.FUNCTION_NAME, fseFunction.getString(CoreConst.FUNCTION_NAME)); |
| | | json.put(CmnConst.IS_PERSSION, 1); |
| | | }else { |
| | | json.put("service_uuid", fseService2.getString("uuid")); |
| | | json.put("date_time", fseService2.getString(fseConfig.getString("time_field"))); |
| | | json.put("title", fseService2.getString(fseConfig.getString("title_field"))); |
| | | json.put("function_name", fseFunction.getString("function_name")); |
| | | json.put("is_perssion", 0); |
| | | json.put(CmnConst.SERVICE_UUID, fseService2.getString(CoreConst.UUID)); |
| | | json.put(CmnConst.DATE_TIME, fseService2.getString(fseConfig.getString(CmnConst.TIME_FIELD))); |
| | | json.put(CmnConst.TITLE, fseService2.getString(fseConfig.getString(CmnConst.TITLE_FIELD))); |
| | | json.put(CoreConst.FUNCTION_NAME, fseFunction.getString(CoreConst.FUNCTION_NAME)); |
| | | json.put(CmnConst.IS_PERSSION, 0); |
| | | } |
| | | |
| | | }else { |
| | | json.put("service_uuid", fseService.getString("uuid")); |
| | | json.put("date_time", fseService.getString(fseConfig.getString("time_field"))); |
| | | json.put("title", fseService.getString(fseConfig.getString("title_field"))); |
| | | json.put("function_name", fseFunction.getString("function_name")); |
| | | json.put(CmnConst.SERVICE_UUID, fseService.getString(CoreConst.UUID)); |
| | | json.put(CmnConst.DATE_TIME, fseService.getString(fseConfig.getString(CmnConst.TIME_FIELD))); |
| | | json.put(CmnConst.TITLE, fseService.getString(fseConfig.getString(CmnConst.TITLE_FIELD))); |
| | | json.put(CoreConst.FUNCTION_NAME, fseFunction.getString(CoreConst.FUNCTION_NAME)); |
| | | } |
| | | json.put("created_by", fseAttachment.getString(CmnConst.CREATED_BY)); |
| | | json.put(CoreConst.CREATED_BY, fseAttachment.getString(CoreConst.CREATED_BY)); |
| | | } |
| | | } |
| | | } |