Browse Source

领域检索

xiaoqiao 7 months ago
parent
commit
5152926707

+ 3 - 3
src/main/java/com/bowintek/practice/services/impl/EsQueryServiceImpl.java

@@ -150,9 +150,9 @@ public class EsQueryServiceImpl implements EsQueryService {
                 //第一级,对比搜索
                 cmpQuerys.addAll(getRangeQueryByComparison(cmp));
                 //第二级,对比搜索
-                for (String path : pathList) {
+               /* for (String path : pathList) {
                     cmpQuerys.addAll(getNestedRangeQueryByComparison(cmp, path));
-                }
+                }*/
                 if (cmpQuerys.size() > 0) {
                     queryMustList.addAll(cmpQuerys);
                 }
@@ -282,7 +282,7 @@ public class EsQueryServiceImpl implements EsQueryService {
         else if (opreation.equals("小于等于"))
             query = RangeQuery.of(q -> q.field(fieldString).lte(JsonData.of(value)))._toQuery();
         else if (opreation.equals("等于"))
-            query = TermQuery.of(q -> q.field(fieldString).value(value))._toQuery();
+            query = MatchQuery.of(q -> q.field(fieldString).query(value))._toQuery();
         else if (opreation.equals("包括IN")) {
             String[] ins = value.split(",");
             List<FieldValue> fls = new ArrayList<>();

File diff suppressed because it is too large
+ 18351 - 65
vue/package-lock.json


+ 12 - 14
vue/src/components/basic/es-result/chat-view.vue

@@ -1,22 +1,18 @@
 <template>
   <div>
-    <div class="search-title">2023年度作业区域 年报 | 月报</div>
+    <div class="search-title">分析化验 年报 | 月报</div>
     <div class="search-view">
       <div class="search-view-chat">
         <div class="search-view-chat-img">
-        <ChartBase :timeType="('month')" :dataType="('gas')" :wellId="data.well_id"></ChartBase>
+        <ChartBase :timeType="('month')" :dataType="('gas')" :wellId="well_id"></ChartBase>
         </div>
-        <div>
-          <span>井号:留70-175X</span>
-          <span>井ID: HB_la0X7IYDTvIlePbaHlRc4SF3sfx33</span>
-          <span>作业阶段ID:sdfsfasefewesf3322233fsmtSddwg2r24F</span>
-          <span>起始时间:2021-7-30  12:00:00</span>
-          <span>终止时间:2022-1-30  20:00:00</span>
-          <span>井号:留70-175X</span>
-          <span>井ID: HB_la0X7IYDTvIlePbaHlRc4SF3sfx33</span>
-          <span>作业阶段ID:sdfsfasefewesf3322233fsmtSddwg2r24F</span>
-          <span>起始时间:2021-7-30  12:00:00</span>
-          <span>终止时间:2022-1-30  20:00:00</span>
+        <div v-for="it in data" class="search-view-chat-info" >
+          <div>井名:<span v-html="it.well_common_name"></span></div>
+          <div>分析类型:{{ it.item_code }}</div>
+          <div>分析指标:{{ it.item_name }}</div>
+          <div>指标单位:{{ it.meter_unit }}</div>
+          <div>指标值: {{ it.idx_value }}</div>
+          <div>描述: {{ it.description }}</div>
         </div>
       </div>
     </div>
@@ -32,6 +28,7 @@ export default defineComponent({
   components: {ChartBase},
   props: {
     indexSetting: Object,
+    well_id:String,
     data: Object,
   },
   setup(props) {
@@ -39,9 +36,10 @@ export default defineComponent({
     const title = props.indexSetting?.indexName;
     const fieldData = props.indexSetting?.fieldList;
     const data = props.data;
+    const well_id=props.well_id;
 
     return {
-      fieldData, data,title
+      fieldData, data,title,well_id
     };
   }
 });

+ 9 - 13
vue/src/components/basic/es-result/doc-view.vue

@@ -1,23 +1,18 @@
 <template>
   <div>
     <div class="search-title">录井文档</div>
-    <div class="search-view">
-      <div class="search-view-doc">
+    <div class="search-view" style="display: flex;flex-flow: wrap;">
+      <div class="search-view-doc" v-for="it in data">
         <img src="~@/assets/images/doc.png"/>
         <div>
-          <span>文档名称:</span><span>井号:留70-175X</span> <span>井名:录井</span>
+          <span>文档名称:{{ it.file_name }}</span> <br>
+          <span>井名:{{ it.well_common_name }}</span><br>
           <span>
-          文档类型:
+          文档类型:{{ it.file_business_type }}
             </span><br>
           <span>
-          文档大小:
+          上传时间:{{ it.date }}
           </span><br>
-          <span>
-          上传时间:
-          </span><br>
-          <span>
-          上传作者:
-          </span>
         </div>
       </div>
     </div>
@@ -25,17 +20,18 @@
 </template>
 
 <script lang="ts">
-import {defineComponent, ref} from 'vue';
+import {defineComponent} from 'vue';
 
 export default defineComponent({
   name: 'doc-view',
   components: {},
   props: {
     kid: String,
+    data:[]
   },
   setup(props) {
     console.log(props);
-    const data = ref([]);
+    const data = props.data;
 
     return {
       data

+ 18 - 31
vue/src/components/basic/es-result/list-view.vue

@@ -1,8 +1,8 @@
 <template>
   <div>
-    <div class="search-title">业务过程</div>
+    <div class="search-title">{{ title }}</div>
     <div class="search-view">
-      <a-table :columns="columns" :data-source="data" :scroll="{ x:'1500', y: 500 }"
+      <a-table :columns="columns" :data-source="data" :scroll="{ x:'1500', y: 300 }"
                :pagination="false" @resizeColumn="handleResizeColumn"
                bordered>
       </a-table>
@@ -12,48 +12,35 @@
 
 <script lang="ts">
 import {defineComponent, ref} from 'vue';
-import {get} from "@/api/common";
 
 export default defineComponent({
   name: 'list-view',
   components: {},
   props: {
     kid: String,
+    indexSetting: Object,
+    fieldCode: String,
+    data: []
   },
   setup(props) {
     console.log(props);
 
-    const data = ref([]);
+    const data = props.data;
+    const curIndex = props.indexSetting?.fieldList.filter(it => it.fieldCode == props.fieldCode)[0];
+    if (curIndex == null) {
+      console.log("查找不到对应子索引");
+      return;
+    }
+    const fieldData = curIndex.childFields;
+    console.log(fieldData);
 
-    const columns = ref([
-      {title: '开始时间', dataIndex: 'start_time', key: 'start_time', resizable: true, width: 120},
-      {title: '结束时间', dataIndex: 'end_time', key: 'end_time', resizable: true, width: 120},
-      {title: '施工简述', dataIndex: 'constr_description', key: 'constr_description', resizable: true, width: 120},
-      {title: '备注', dataIndex: 'remarks', key: 'remarks', resizable: true, width: 120},
-      {
-        title: '生产井段',
-        dataIndex: 'well_production_sections',
-        key: 'well_production_sections',
-        resizable: true,
-        width: 120
-      },
-      {title: '层位', dataIndex: 'formation_name', key: 'formation_name', resizable: true, width: 120},
-      {title: '井段顶深', dataIndex: 'top_md', key: 'top_md', resizable: true, width: 120},
-      {title: '井段底深', dataIndex: 'btm_md', key: 'btm_md', resizable: true, width: 120},
-      {title: '厚度', dataIndex: 'thickness', key: 'thickness', resizable: true, width: 120},
-      {title: '层序号', dataIndex: 'layer_no', key: 'layer_no', resizable: true, width: 120},
-      {title: '作业类型', dataIndex: 'working_type', key: 'working_type', resizable: true, width: 120},
-      {title: '作业工序名称', dataIndex: 'test_processes_name', key: 'test_processes_name', resizable: true, width: 120},
-      {title: '作业工作内容', dataIndex: 'worksummary', key: 'worksummary', resizable: true, width: 120},
-      {title: '施工次序', dataIndex: 'construct_no', key: 'construct_no', resizable: true, width: 120},
-      {title: '作业队伍', dataIndex: 'work_team', key: 'work_team', resizable: true, width: 120},
-      {title: '泵深', dataIndex: 'pump_depth', key: 'pump_depth', resizable: true, width: 120},
-    ])
-    get('esindex/getList', {page: 1, rows: 10}).then(result => {
-      data.value = result.list;
+    const title = curIndex.fieldName;
+    const columns:any = ref([]);
+    fieldData.filter(it=>it.isDisplay==1).forEach(it=>{
+      columns.value.push({title: it.fieldName, dataIndex: it.fieldCode, key: it.fieldCode, resizable: true, width: 120},)
     })
     return {
-      columns, data,
+      columns, data, title,
       handleResizeColumn: (w, col) => {
         col.width = w;
       }

+ 32 - 17
vue/src/components/basic/es-result/query-criteria.vue

@@ -3,11 +3,11 @@
   <a-row :gutter="24">
     <a-col :span="24">
       <div class="col-title">组织单位:</div>
-      <a-input v-model:value="formState.text" style="width: 400px"></a-input>
+      <a-input v-model:value="formState.org_name_a1" style="width: 400px"></a-input>
     </a-col>
     <a-col :span="24">
       <div class="col-title">作业区/项目部:</div>
-      <a-input v-model:value="formState.text" style="width: 400px"></a-input>
+      <a-input v-model:value="formState.bz_dwmc" style="width: 400px"></a-input>
     </a-col>
     <a-col :span="24">
       <div class="col-title">井名:</div>
@@ -54,14 +54,15 @@ export default defineComponent({
     const formState = reactive({
       page: 1, rows: 10,
       well_common_name: '',
+      bz_dwmc: '',
       formation_name: '',
-      text: '',
+      org_name_a1: '',
       defaultField: '',
       defaultKeyString: ''
     });
-    if(props.queryObject&&props.queryObject.queryList.length>0){
-      formState.defaultField =props.queryObject.queryList[0].field;
-      formState.defaultKeyString =props.queryObject.queryList[0].keyString;
+    if (props.queryObject && props.queryObject.queryList.length > 0) {
+      formState.defaultField = props.queryObject.queryList[0].field;
+      formState.defaultKeyString = props.queryObject.queryList[0].keyString;
     }
 
     const queryList = ref<any>(props.queryObject ? props.queryObject.queryList.slice(1) : []);
@@ -97,21 +98,35 @@ export default defineComponent({
         limit: 10
       };
       //第一条默认查询条件
-      queryObject.queryList.splice(0, 0, {
-        field: formState.defaultField,
-        keyString: formState.defaultKeyString
-      });
+      if(formState.defaultKeyString!=null&&formState.defaultKeyString!="") {
+        queryObject.queryList.splice(0, 0, {
+          field: formState.defaultField,
+          keyString: formState.defaultKeyString
+        });
+      }
       //限定条件写入
       //{"fieldName":"开钻日期", "fields":["spud_date"],"opreation":"大于","value":"2022-03-28"}
-      if(formState.well_common_name!=null&&formState.well_common_name!="") {
-        queryObject.limiters.push({
-          fields: ["well_common_name.keyword"],
-          opreation: '等于',
-          value: formState.well_common_name
-        });
+      /* if(formState.well_common_name!=null&&formState.well_common_name!="") {
+         queryObject.limiters.push({
+           fields: ["well_common_name.keyword"],
+           opreation: '等于',
+           value: formState.well_common_name
+         });
+       }*/
+      let keys = ["well_common_name", "bz_dwmc", "org_name_a1"];
+      for (let index in keys) {
+        if (formState.hasOwnProperty(keys[index])) {
+          if (formState[keys[index]] != null && formState[keys[index]] != "") {
+            queryObject.limiters.push({
+              fields: [`${keys[index]}`],
+              opreation: '等于',
+              value: formState[keys[index]]
+            });
+          }
+        }
       }
       //多个值测试,如 组织单位 in 哪些值
-     // queryObject.limiters.push({fields: ["well_type.keyword"], opreation: '包括IN', value: '直井'});
+      // queryObject.limiters.push({fields: ["well_type.keyword"], opreation: '包括IN', value: '直井'});
 
       console.log(queryObject);
       return queryObject;

+ 1 - 2
vue/src/components/basic/es-result/table-view.vue

@@ -23,9 +23,8 @@ export default defineComponent({
   setup(props) {
     console.log(props);
     const title = props.indexSetting?.indexName;
-    const fieldData = props.indexSetting?.fieldList;
+    const fieldData = props.indexSetting?.fieldList.filter(it=>it.dataType!="NESTED");
     const data = props.data;
-
     return {
       fieldData, data,title
     };

+ 32 - 13
vue/src/views/esdomain/result.vue

@@ -79,15 +79,19 @@
           <div v-if="dataList.length==0">
             没有查询的数据
           </div>
-          <template v-for="(it,index) in dataList">
+          <template v-for="(it) in dataList">
             <div>
               <div class="search-body-title">
                 井名:{{ it.well_common_name }}<p @click="showWell(it.well_id)">
                 <img src="~@/assets/images/info.png" width="18" height="16"/>查看井基础信息</p>
               </div>
               <div class="search-body-item">
-                <component :is="it.component" :indexSetting="it.indexSetting" :data="it" v-show="it.showMore||index<=3"></component>
-                <component is="chatView" :indexSetting="it.indexSetting" :data="it" v-show="it.showMore||index<=3"></component>
+                <component is="cycleView" :indexSetting="it.indexSetting" :data="it"></component>
+                <component is="tableView" :indexSetting="it.indexSetting" :data="it"></component>
+                <component is="chatView" :indexSetting="it.indexSetting" :well_id="it.well_id" :data="it.dws_dm_analytical_assays_new" v-show="it.showMore"></component>
+                <component is="listView" :indexSetting="it.indexSetting" :fieldCode="'fact_dwr_brief_history_assignment'" :data="it.fact_dwr_brief_history_assignment" v-show="it.showMore"></component>
+                <component is="listView" :indexSetting="it.indexSetting" :fieldCode="'fact_dwr_wl_ach_borehole_inter'" :data="it.fact_dwr_wl_ach_borehole_inter" v-show="it.showMore"></component>
+                <component is="docView" :indexSetting="it.indexSetting" :data="it.fact_dwr_well_data_index" v-show="it.showMore"></component>
 
                 <a-divider orientation="center" @click="it.showMore=!it.showMore">
                   <template v-if="!it.showMore">
@@ -211,9 +215,14 @@ export default defineComponent({
       {value: 'wellName', label: '井名'}
     ] as SelectProps['options'];
 
-    get('esindex/getAllList', {}).then(result => {
+
+     /* get('esindex/getAllList', {}).then(result => {
+        indexList.value = result.list;
+      }) */
+    const getIndex=async () => {
+      const result = await get('esindex/getAllList', {});
       indexList.value = result.list;
-    })
+    }
     const showWell = (well_id) => {
       tabsViewStore.addTabByPath('/wellinfo/detail', {id: well_id});
     }
@@ -280,17 +289,20 @@ export default defineComponent({
       loadData,
       dataList,
       handleChange,
+      getIndex,
       pageParams,
       keyList,onVisible,wellInfo,
       queryObject
     };
   },
   created() {
-    let queryObject = localStorage.getItem("queryObject");
-    if (queryObject != null) {
-      this.queryObject=JSON.parse(queryObject);
-      this.loadData(JSON.parse(queryObject));
-    }
+    this.getIndex().then(()=>{
+      let queryObject = localStorage.getItem("queryObject");
+      if (queryObject != null) {
+        this.queryObject=JSON.parse(queryObject);
+        this.loadData(JSON.parse(queryObject));
+      }
+    });
   },
   activated() {
   }
@@ -417,20 +429,27 @@ export default defineComponent({
 }
 
 .search-view {
+
   .search-view-chat {
     display: flex;
-
+    flex-flow: wrap;
     .search-view-chat-img{
-      width: 1200px;
+      width: 300px;
     }
     .search-chat {
       margin-right: 10px;
     }
+    .search-view-chat-info{
+      width: 150px;
+      div{
+        padding: 5px;
+      }
+    }
   }
 
   .search-view-doc {
     display: flex;
-
+    margin-bottom: 5px;
     img {
       margin-right: 10px;
     }

+ 5 - 0
vue/src/views/esindex/edit.vue

@@ -102,6 +102,7 @@ import type {EsIndexfield, EsIndex} from "@/views/esindex/model";
 import type {ImportProps} from "@/components/basic/excel/importExcel/ImportProps";
 import BImportExcel from "@/components/basic/excel/importExcel/importExcel.vue";
 import {message} from "ant-design-vue";
+import {DataTypeList} from '@/enums/dictions';
 
 interface FormState {
   dataModel: EsIndex;
@@ -173,6 +174,10 @@ export default defineComponent({
         title: '是否查询字段', dataIndex: 'isSearchField', key: 'isSearchField', align: "center", customRender: ({record}) =>
           record.isSearchField == "1" ? "是" : "否"
       },
+      {
+        title: '数据类型', dataIndex: 'dataType', key: 'dataType', align: "center", customRender: ({record}) =>
+          DataTypeList.filter(x => x.value == record.dataType)[0]?.name
+      },
       {
         title: '查询类型', dataIndex: 'queryTypeId', key: 'queryTypeId', align: "center", customRender: ({record}) =>
           queryTypeList.value.filter(x => x.value == record.queryTypeId)[0]?.name