Browse Source

井史简介

xiaoqiao 1 year ago
parent
commit
803c17007e

+ 4 - 0
src/main/java/com/bowintek/practice/controller/WellInfoController.java

@@ -97,4 +97,8 @@ public class WellInfoController {
         List<HashMap<String, Object>> dataIndexList = wellInfoService.selectDataIndexList(wellId);
         return RespGenerstor.success(dataIndexList);
     }
+    @GetMapping("/getConstructUnitTree")
+    public BaseResponse getConstructUnitTree() {
+        return RespGenerstor.success(wellInfoService.getConstructUnitTree());
+    }
 }

+ 18 - 0
src/main/java/com/bowintek/practice/mapper/cquery/WellInfoCQuery.java

@@ -93,4 +93,22 @@ public interface WellInfoCQuery {
      * @return
      */
     List<HashMap<String,Object>> selectDataIndexList(String well_id);
+
+    /**
+     * 地质单元类型列表
+     * @return
+     */
+    List<HashMap<String,Object>> selectDimProjectTypeList();
+
+    /**
+     * 构造单元层级列表
+     * @return
+     */
+    List<HashMap<String,Object>> selectConstructUnitList();
+
+    /**
+     * 油气单元层级列表
+     * @return
+     */
+    List<HashMap<String,Object>> selectOilgasUnitList();
 }

+ 49 - 8
src/main/java/com/bowintek/practice/services/impl/WellInfoServiceImpl.java

@@ -18,9 +18,8 @@ import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import static com.bowintek.practice.util.Constant.BOREHOLE_INTER_TYPE;
 import static com.bowintek.practice.util.Constant.FACT_CURRENT_STATE;
@@ -76,16 +75,19 @@ public class WellInfoServiceImpl implements WellInfoService {
     public List<HashMap<String, Object>> selectTestHistoryList(String well_id) {
         return wellInfoCQuery.selectTestHistoryList(well_id);
     }
+
     @Override
     @SwitchDataSource(DBTypeEnum.POSTGRE)
     public List<HashMap<String, Object>> selectTestHistorySummary(String well_id) {
         return wellInfoCQuery.selectTestHistorySummary(well_id);
     }
+
     @Override
     @SwitchDataSource(DBTypeEnum.POSTGRE)
     public HashMap<String, Object> getLastTestHistory(String well_id) {
         return wellInfoCQuery.getLastTestHistory(well_id);
     }
+
     @Override
     @SwitchDataSource(DBTypeEnum.POSTGRE)
     public List<HashMap<String, Object>> selectAnalyticalAssaysList(String well_id) {
@@ -103,11 +105,13 @@ public class WellInfoServiceImpl implements WellInfoService {
     public List<HashMap<String, Object>> selectHistoryAssignmentList(String well_id) {
         return wellInfoCQuery.selectHistoryAssignmentList(well_id);
     }
+
     @Override
     @SwitchDataSource(DBTypeEnum.POSTGRE)
     public List<HashMap<String, Object>> selectHistoryAssignmentSummary(String well_id) {
         return wellInfoCQuery.selectHistoryAssignmentSummary(well_id);
     }
+
     @Override
     @SwitchDataSource(DBTypeEnum.POSTGRE)
     public HashMap<String, Object> getLastHistoryAssignment(String well_id) {
@@ -135,15 +139,52 @@ public class WellInfoServiceImpl implements WellInfoService {
         }
         return 1;
     }
+
     @Override
-    public WlUserExpendSetting getExpendSetting(String wellId,String userId) {
+    public WlUserExpendSetting getExpendSetting(String wellId, String userId) {
         WlUserExpendSettingExample example = new WlUserExpendSettingExample();
         example.or().andUserIDEqualTo(userId).andWell_idEqualTo(wellId);
         List<WlUserExpendSetting> list = expendSettingMapper.selectByExample(example);
-        if(list.size()>0)
-        {
-            return  list.get(0);
+        if (list.size() > 0) {
+            return list.get(0);
         }
-        return  null;
+        return null;
+    }
+
+    private void fillChildren(int level, int maxLevel, HashMap<String, Object> parent, List<HashMap<String, Object>> unitList) {
+        Map<Object, List<HashMap<String, Object>>> groupedMap = unitList.stream()
+                .collect(Collectors.groupingBy(s -> s.get("project_id_" + level)));
+        List<HashMap<String, Object>> children = new ArrayList<>();
+        parent.put("children", children);
+        groupedMap.values().forEach(gm -> {
+            HashMap<String, Object> child = new HashMap<>();
+            child.put("value", gm.get(0).get("project_id_" + level));
+            child.put("label", gm.get(0).get("project_name_" + level));
+            children.add(child);
+            if (level + 1 <= maxLevel && gm.get(0).keySet().contains("project_id_" + (level + 1))) {
+                this.fillChildren(level + 1, maxLevel, child, gm);
+            }
+        });
+    }
+
+    @Override
+    @SwitchDataSource(DBTypeEnum.POSTGRE)
+    public List<HashMap<String, Object>> getConstructUnitTree() {
+        List<HashMap<String, Object>> projectTypeList = wellInfoCQuery.selectDimProjectTypeList();
+        List<HashMap<String, Object>> constructUnitList = wellInfoCQuery.selectConstructUnitList();
+        List<HashMap<String, Object>> oilgasUnitList = wellInfoCQuery.selectOilgasUnitList();
+        List<HashMap<String, Object>> constructUnitTree = new ArrayList<>();
+        projectTypeList.forEach(it -> {
+            HashMap<String, Object> child = new HashMap<>();
+            child.put("value", it.get("key"));
+            child.put("label", it.get("title"));
+            constructUnitTree.add(child);
+            if (it.get("title").toString().equals("构造单元")) {
+                this.fillChildren(1, 5, child, constructUnitList);
+            } else if (it.get("title").toString().equals("油气田单元")) {
+                this.fillChildren(1, 7, child, oilgasUnitList);
+            }
+        });
+        return constructUnitTree;
     }
 }

+ 1 - 0
src/main/java/com/bowintek/practice/services/service/WellInfoService.java

@@ -24,4 +24,5 @@ public interface WellInfoService {
     List<HashMap<String,Object>> selectDataIndexList(String well_id);
     int saveExpendSetting(WlUserExpendSetting model);
     WlUserExpendSetting getExpendSetting(String userId ,String wellId);
+    List<HashMap<String, Object>> getConstructUnitTree();
 }

+ 1 - 0
src/main/java/com/bowintek/practice/vo/query/WellInfoParams.java

@@ -16,4 +16,5 @@ public class WellInfoParams {
     private String oil_prod_recent_date_begin;
     private String oil_prod_recent_date_end;
     private String org_id_a1;
+    private String project_id;
 }

+ 53 - 9
src/main/resources/mapping/cquery/WellInfoCQuery.xml

@@ -102,6 +102,9 @@
         <if test="org_id_a1!='' and org_id_a1!=null">
             and well.org_id_a1 =#{org_id_a1}
         </if>
+        <if test="project_id!='' and project_id!=null">
+            and well.project_id =#{project_id}
+        </if>
     </select>
     <select id="selectBoreholeInterList" resultType="java.util.HashMap">
         select *
@@ -114,15 +117,16 @@
         where th.well_id = #{well_id}
     </select>
     <select id="selectTestHistorySummary" resultType="java.util.HashMap">
-        select testing_name,count(1) as testing_num from public.dws_dm_test_history th
+        select testing_name, count(1) as testing_num
+        from public.dws_dm_test_history th
         where th.well_id = #{well_id}
         group by th.testing_name
     </select>
     <select id="getLastTestHistory" resultType="java.util.HashMap">
-        select *from  public.dws_dm_test_history th
+        select *
+        from public.dws_dm_test_history th
         where th.well_id = #{well_id}
-        order by th.testing_date desc
-        limit 1
+        order by th.testing_date desc limit 1
     </select>
     <select id="selectAnalyticalAssaysList" resultType="java.util.HashMap">
         select *
@@ -130,7 +134,8 @@
         where aa.well_id = #{well_id}
     </select>
     <select id="selectAnalyticalAssaysSummary" resultType="java.util.HashMap">
-        SELECT item_code,SUM(CASE WHEN item_code = '井裸眼井基本解释成果' THEN 1 ELSE 0 END)  AS 井裸眼井基本解释成果,
+        SELECT item_code,
+               SUM(CASE WHEN item_code = '井裸眼井基本解释成果' THEN 1 ELSE 0 END)  AS 井裸眼井基本解释成果,
                SUM(CASE WHEN item_code = '岩石力学参数解释成果' THEN 1 ELSE 0 END)  AS 岩石力学参数解释成果,
                SUM(CASE WHEN item_code = '储层孔隙结构评价' THEN 1 ELSE 0 END)    AS 储层孔隙结构评价,
                SUM(CASE WHEN item_code = '裂缝型地层测井解释成果' THEN 1 ELSE 0 END) AS 裂缝型地层测井解释成果,
@@ -148,19 +153,58 @@
         where ha.well_id = #{well_id}
     </select>
     <select id="selectHistoryAssignmentSummary" resultType="java.util.HashMap">
-        select test_processes_name,count(1) as testing_num from public.fact_dwr_brief_history_assignment bha
+        select test_processes_name, count(1) as testing_num
+        from public.fact_dwr_brief_history_assignment bha
         where bha.well_id = #{well_id}
         group by bha.test_processes_name
     </select>
     <select id="getLastHistoryAssignment" resultType="java.util.HashMap">
-        select *from  public.fact_dwr_brief_history_assignment bha
+        select *
+        from public.fact_dwr_brief_history_assignment bha
         where bha.well_id = #{well_id}
-        order by bha.start_time desc
-        limit 1
+        order by bha.start_time desc limit 1
     </select>
     <select id="selectDataIndexList" resultType="java.util.HashMap">
         select *
         from public.fact_dwr_well_data_index di
         where di.well_id = #{well_id}
     </select>
+    <select id="selectDimProjectTypeList" resultType="java.util.HashMap">
+        select name as title,value_id as key
+        from public.dim_project_type
+        where is_effect = 1
+    </select>
+    <select id="selectConstructUnitList" resultType="java.util.HashMap">
+        select lv.*,
+               desc1.name as project_name_1,
+               desc2.name as project_name_2,
+               desc3.name as project_name_3,
+               desc4.name as project_name_4,
+               desc5.name as project_name_5
+        from public.dim_construct_unit_level lv
+                 left join dim_construct_unit_desc desc1 on lv.project_id_1 = desc1.id
+                 left join dim_construct_unit_desc desc2 on lv.project_id_2 = desc2.id
+                 left join dim_construct_unit_desc desc3 on lv.project_id_3 = desc3.id
+                 left join dim_construct_unit_desc desc4 on lv.project_id_4 = desc4.id
+                 left join dim_construct_unit_desc desc5 on lv.project_id_5 = desc5.id
+        where lv.is_effect = 1
+    </select>
+    <select id="selectOilgasUnitList" resultType="java.util.HashMap">
+        select lv.*, desc1.name as project_name_1,
+               desc2.name as project_name_2,
+               desc3.name as project_name_3,
+               desc4.name as project_name_4,
+               desc5.name as project_name_5,
+               desc6.name as project_name_6,
+               desc7.name as project_name_7
+        from public.dim_oilgas_unit_level lv
+                 left join public.dim_oilgas_unit_desc desc1 on lv.project_id_1 = desc1.id
+                 left join public.dim_oilgas_unit_desc desc2 on lv.project_id_2 = desc2.id
+                 left join public.dim_oilgas_unit_desc desc3 on lv.project_id_3 = desc3.id
+                 left join public.dim_oilgas_unit_desc desc4 on lv.project_id_4 = desc4.id
+                 left join public.dim_oilgas_unit_desc desc5 on lv.project_id_5 = desc5.id
+                 left join public.dim_oilgas_unit_desc desc6 on lv.project_id_6 = desc6.id
+                 left join public.dim_oilgas_unit_desc desc7 on lv.project_id_7 = desc7.id
+        where lv.is_effect = 1
+    </select>
 </mapper>

+ 37 - 11
vue/src/views/wellinfo/index.vue

@@ -151,7 +151,8 @@
                     <th>开钻日期:</th>
                     <td>{{ item.spud_date }}</td>
                     <th>含水率:</th>
-                    <td><span style="padding:2px 10px;" :class="getTdColor( item.water_cut)">{{ item.water_cut }}</span></td>
+                    <td><span style="padding:2px 10px;" :class="getTdColor( item.water_cut)">{{ item.water_cut }}</span>
+                    </td>
                   </tr>
                   <tr>
                     <th>开始采油日期:</th>
@@ -263,7 +264,8 @@ export default defineComponent({
       oil_prod_begin_date_end: '',
       oil_prod_recent_date_begin: '',
       oil_prod_recent_date_end: '',
-      org_id_a1: ''
+      org_id_a1: '',
+      project_id: ''
     });
     const columns: TableColumnsType = [
       {
@@ -271,12 +273,13 @@ export default defineComponent({
         width: 60,
         dataIndex: 'index',
         key: 'index',
-        align: "center",fixed: 'left',
+        align: "center", fixed: 'left',
         customRender: item => `${formState.rows * (formState.page - 1) + item.index + 1}`
       },
-      {title: '井号', dataIndex: 'well_id', key: 'well_id', width: 120,fixed: 'left'},
+      {title: '井号', dataIndex: 'well_id', key: 'well_id', width: 120, fixed: 'left'},
       {title: '井名', dataIndex: 'well_common_name', key: 'well_common_name', width: 120},
       {title: '采油厂机构', dataIndex: 'org_name_a1', key: 'org_name_a1', width: 120},
+      {title: '地质单元', dataIndex: 'project_name', key: 'project_name', width: 120},
       {title: '井型', dataIndex: 'well_type', key: 'well_type', width: 120},
       {
         title: '开钻日期', dataIndex: 'spud_date', key: 'spud_date', width: 120, customRender: ({record}) =>
@@ -363,8 +366,13 @@ export default defineComponent({
     const tabChange = (key) => {
       console.log("tabChange", key);
       if (key == "2") {
-
+        formState.org_id_a1 = '';
+        subjectTrees.value.data = Object.assign(subjectTrees.value.constructUnitTree);
+      } else {
+        formState.project_id = ''
+        subjectTrees.value.data = Object.assign(subjectTrees.value.organizationTree);
       }
+      getSubjectTree();
     }
     const detail = (well_id) => {
       tabsViewStore.addTabByPath('/wellinfo/detail', {id: well_id});
@@ -374,13 +382,24 @@ export default defineComponent({
     }
     const subjectTrees = ref({
       data: [],
+      organizationTree: [],
+      constructUnitTree: [],
       expandedKeys: [''],
       selectedKeys: [''],
       autoExpandParent: true,
       searchStr: ''
     });
+    const getSubjectData = async function () {
+      get('wellInfo/getOrganizationTree', {tabName: subjectTrees.value.searchStr}).then(data => {
+        subjectTrees.value.organizationTree = data;
+        subjectTrees.value.data = Object.assign(data);
+        getSubjectTree();
+      });
+      get('wellInfo/getConstructUnitTree', {tabName: subjectTrees.value.searchStr}).then(data => {
+        subjectTrees.value.constructUnitTree = data;
+      });
+    }
     const getSubjectTree = async function () {
-      subjectTrees.value.data = await get('wellInfo/getOrganizationTree', {tabName: subjectTrees.value.searchStr});
       //计算第一个展开节点
       subjectTrees.value.expandedKeys = [];
       if (subjectTrees.value.data && subjectTrees.value.data.length > 0) {
@@ -388,7 +407,8 @@ export default defineComponent({
       }
       generateList(subjectTrees.value.data);
     }
-    getSubjectTree();
+    getSubjectData();
+
     const searchTree = () => {
       const expanded = dataList
         .map((item: any) => {
@@ -434,8 +454,14 @@ export default defineComponent({
     }
     const treeOnSelect = function (selected, selectedNodes, node) {
       console.log(selected, selectedNodes, node);
-      formState.org_id_a1 = selected.length>0 ? selectedNodes.node.key : '';
-      loadData();
+      if (selectedNodes.node.parent != undefined) {
+        if (activeTab.value == "1") {
+          formState.org_id_a1 = selected.length > 0 ? selectedNodes.node.key : '';
+        } else {
+          formState.project_id = selected.length > 0 ? selectedNodes.node.key : '';
+        }
+        loadData();
+      }
     }
     const showDoc = (id) => {
       get('wellInfo/getWellDocumentList', {wellId: id}).then(data => {
@@ -502,8 +528,8 @@ export default defineComponent({
   flex-grow: 1;
   display: flex;
 
-  .ant-row{
-    width:100%;
+  .ant-row {
+    width: 100%;
   }
 }