Browse Source

井筒全息快照

xiaoqiao 1 year ago
parent
commit
2397b4ee03

+ 15 - 5
src/main/java/com/bowintek/practice/controller/WellInfoController.java

@@ -37,11 +37,21 @@ public class WellInfoController {
     @GetMapping("/getOrganizationTree")
     public BaseResponse getDictionaryList() {
         List<CdOrganizationTreeVo> treeVoList = organizationService.getListTree();
-        List<HashMap<String, Object>> treeData = new ArrayList<>();
-        treeVoList.forEach((it) -> {
-            HashMap<String, Object> node = new HashMap<>();
-            //  node.put("key",)
-        });
         return RespGenerstor.success(organizationService.getListTree());
     }
+
+    @GetMapping("/getWellInfo")
+    public BaseResponse getWellInfo(String well_id) {
+        HashMap<String,Object> wellInfo = wellInfoService.getWellInfo(well_id);
+        List<HashMap<String,Object>>  boreholeInterList =wellInfoService.selectBoreholeInterList(well_id);
+        List<HashMap<String,Object>>  testHistoryList =wellInfoService.selectTestHistoryList(well_id);
+        List<HashMap<String,Object>>  analyticalAssaysList =wellInfoService.selectAnalyticalAssaysList(well_id);
+
+        HashMap<String, Object> result = new HashMap<>();
+        result.put("dataModel",wellInfo);
+        result.put("boreholeInterList",boreholeInterList);
+        result.put("testHistoryList",testHistoryList);
+        result.put("analyticalAssaysList",analyticalAssaysList);
+        return RespGenerstor.success(result);
+    }
 }

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

@@ -8,5 +8,38 @@ import java.util.List;
 
 public interface WellInfoCQuery {
 
+    /**
+     * 查询井信息列表
+     * @param params
+     * @return
+     */
     List<HashMap<String,Object>> getWellInfoList(WellInfoParams params);
+
+    /**
+     * 获取井信息
+     * @param well_id
+     * @return
+     */
+    HashMap<String,Object> getWellInfo(String well_id);
+
+    /**
+     * 查询裸眼井综合解释列表
+     * @param well_id
+     * @return
+     */
+    List<HashMap<String,Object>> selectBoreholeInterList(String well_id);
+
+    /**
+     * 查询测试历史列表
+     * @param well_id
+     * @return
+     */
+    List<HashMap<String,Object>> selectTestHistoryList(String well_id);
+
+    /**
+     * 查询分析化验列表
+     * @param well_id
+     * @return
+     */
+    List<HashMap<String,Object>> selectAnalyticalAssaysList(String well_id);
 }

+ 33 - 0
src/main/java/com/bowintek/practice/services/impl/WellInfoServiceImpl.java

@@ -18,6 +18,7 @@ import org.springframework.stereotype.Component;
 import java.util.HashMap;
 import java.util.List;
 
+import static com.bowintek.practice.util.Constant.BOREHOLE_INTER_TYPE;
 import static com.bowintek.practice.util.Constant.FACT_CURRENT_STATE;
 
 @Component
@@ -27,6 +28,7 @@ public class WellInfoServiceImpl implements WellInfoService {
     private WellBasicInformationMapper wellBasicInformationMapper;
     @Autowired
     private WellInfoCQuery wellInfoCQuery;
+
     @Override
     @SwitchDataSource(DBTypeEnum.POSTGRE)
     public PageInfo<HashMap<String, Object>> getList(Integer page, Integer rows, WellInfoParams params) {
@@ -43,4 +45,35 @@ public class WellInfoServiceImpl implements WellInfoService {
         });
         return result;
     }
+
+    @Override
+    @SwitchDataSource(DBTypeEnum.POSTGRE)
+    public HashMap<String,Object> getWellInfo(String well_id){
+        return wellInfoCQuery.getWellInfo(well_id);
+    }
+
+    @Override
+    @SwitchDataSource(DBTypeEnum.POSTGRE)
+    public List<HashMap<String,Object>> selectBoreholeInterList(String well_id){
+        List<HashMap<String,Object>> dataList = wellInfoCQuery.selectBoreholeInterList(well_id);
+
+        dataList.forEach(it->{
+            if(BOREHOLE_INTER_TYPE.keySet().contains(it.get("borehole_inter_type"))){
+                it.put("borehole_inter_type_name",BOREHOLE_INTER_TYPE.get(it.get("borehole_inter_type")));
+            }
+        });
+        return dataList;
+    }
+
+    @Override
+    @SwitchDataSource(DBTypeEnum.POSTGRE)
+    public List<HashMap<String,Object>> selectTestHistoryList(String well_id){
+        return wellInfoCQuery.selectTestHistoryList(well_id);
+    }
+
+    @Override
+    @SwitchDataSource(DBTypeEnum.POSTGRE)
+    public List<HashMap<String,Object>> selectAnalyticalAssaysList(String well_id){
+        return wellInfoCQuery.selectAnalyticalAssaysList(well_id);
+    }
 }

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

@@ -9,5 +9,9 @@ import java.util.List;
 
 public interface WellInfoService {
 
+    HashMap<String,Object> getWellInfo(String well_id);
     PageInfo< HashMap<String, Object>> getList(Integer page, Integer rows, WellInfoParams params);
+    List<HashMap<String,Object>> selectBoreholeInterList(String well_id);
+    List<HashMap<String,Object>> selectTestHistoryList(String well_id);
+    List<HashMap<String,Object>> selectAnalyticalAssaysList(String well_id);
 }

+ 15 - 0
src/main/java/com/bowintek/practice/util/Constant.java

@@ -17,4 +17,19 @@ public class Constant {
             this.put("11","启用并启用流程");
         }
     };
+    /**
+     * 裸眼井解释成果类型
+     */
+    public static final HashMap<String,String>  BOREHOLE_INTER_TYPE=new HashMap<>(){
+        {
+            this.put("00","裸眼井基本解释成果");
+            this.put("01","岩石力学参数");
+            this.put("02","储层孔隙结构评价");
+            this.put("04","裂缝型地层测井解释成果");
+            this.put("05","烃源岩解释成果");
+            this.put("06","致密油气储层解释成果");
+            this.put("07","煤层气测井解释成果");
+            this.put("08","页岩气测井解释成果");
+        }
+    };
 }

+ 39 - 15
src/main/resources/mapping/cquery/WellInfoCQuery.xml

@@ -2,21 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.bowintek.practice.mapper.cquery.WellInfoCQuery">
 
-    <select id="getWellInfoList" parameterType="com.bowintek.practice.vo.query.WellInfoParams"  resultType="java.util.HashMap">
-        select well.*,fact_daily.oil_prod_begin_date,fact_daily.oil_prod_recent_date,fact_daily.current_state,fact_daily.water_cut,
-               fact_mon.oil_prod_mon,fact_mon.gas_prod_mon,fact_mon.gas_prod_year,fact_mon.oil_prod_year
+    <select id="getWellInfo" resultType="java.util.HashMap">
+        select *
         from well_basic_information well
-                 left join (
-            select daily.* from FACT_DWR_PC_PRO_WELL_VOL_DAILY daily
-                                    inner join(
-                select  well_id, max(prod_time) prod_time from FACT_DWR_PC_PRO_WELL_VOL_DAILY group by well_id
-            ) maxdaily on daily.well_id=maxdaily.well_id and daily.prod_time=maxdaily.prod_time
+        where well.well_id = #{well_id}
+    </select>
+    <select id="getWellInfoList" parameterType="com.bowintek.practice.vo.query.WellInfoParams"
+            resultType="java.util.HashMap">
+        select
+        well.*,fact_daily.oil_prod_begin_date,fact_daily.oil_prod_recent_date,fact_daily.current_state,fact_daily.water_cut,
+        fact_mon.oil_prod_mon,fact_mon.gas_prod_mon,fact_mon.gas_prod_year,fact_mon.oil_prod_year
+        from well_basic_information well
+        left join (
+        select daily.* from FACT_DWR_PC_PRO_WELL_VOL_DAILY daily
+        inner join(
+        select well_id, max(prod_time) prod_time from FACT_DWR_PC_PRO_WELL_VOL_DAILY group by well_id
+        ) maxdaily on daily.well_id=maxdaily.well_id and daily.prod_time=maxdaily.prod_time
         )fact_daily on well.well_id= fact_daily.well_id
-                 left join (
-            select mon.* from fact_dwr_pc_pro_well_vol_monthly mon
-                                  inner join(
-                select  well_id, max(prod_time) prod_time from fact_dwr_pc_pro_well_vol_monthly group by well_id
-            ) maxmon on mon.well_id=maxmon.well_id and mon.prod_time=maxmon.prod_time
+        left join (
+        select mon.* from fact_dwr_pc_pro_well_vol_monthly mon
+        inner join(
+        select well_id, max(prod_time) prod_time from fact_dwr_pc_pro_well_vol_monthly group by well_id
+        ) maxmon on mon.well_id=maxmon.well_id and mon.prod_time=maxmon.prod_time
         )fact_mon on well.well_id= fact_mon.well_id
         where 1=1
         <if test="well_common_name!='' and well_common_name!=null">
@@ -44,13 +51,30 @@
             and fact_daily.oil_prod_begin_date <![CDATA[ >= ]]> CAST(#{oil_prod_begin_date_begin} AS DATE)
         </if>
         <if test="oil_prod_begin_date_end!='' and oil_prod_begin_date_end!=null">
-            and fact_daily.oil_prod_begin_date  <![CDATA[ < ]]> (CAST(#{oil_prod_begin_date_end} AS DATE) + INTERVAL '1 day')
+            and fact_daily.oil_prod_begin_date  <![CDATA[ < ]]> (CAST(#{oil_prod_begin_date_end} AS DATE) + INTERVAL '1
+            day')
         </if>
         <if test="oil_prod_recent_date_begin!='' and oil_prod_recent_date_begin!=null">
             and fact_daily.oil_prod_recent_date <![CDATA[ >= ]]> CAST(#{oil_prod_recent_date_begin} AS DATE)
         </if>
         <if test="oil_prod_recent_date_end!='' and oil_prod_recent_date_end!=null">
-            and fact_daily.oil_prod_recent_date  <![CDATA[ < ]]> (CAST(#{oil_prod_recent_date_end} AS DATE) + INTERVAL '1 day')
+            and fact_daily.oil_prod_recent_date  <![CDATA[ < ]]> (CAST(#{oil_prod_recent_date_end} AS DATE) + INTERVAL
+            '1 day')
         </if>
     </select>
+    <select id="selectBoreholeInterList" resultType="java.util.HashMap">
+        select *
+        from fact_dwr_wl_ach_borehole_inter bi
+        where bi.well_id = #{well_id}
+    </select>
+    <select id="selectTestHistoryList" resultType="java.util.HashMap">
+        select *
+        from dws_dm_test_history th
+        where th.well_id = #{well_id}
+    </select>
+    <select id="selectAnalyticalAssaysList" resultType="java.util.HashMap">
+        select *
+        from dws_dm_analytical_assays aa
+        where aa.well_id = #{well_id}
+    </select>
 </mapper>

+ 58 - 0
vue/src/views/wellinfo/columns.ts

@@ -0,0 +1,58 @@
+export const boreholeInterColumns=[
+  {title: '井id', dataIndex: 'well_id', key: 'well_id', width: 120},
+  {title: '井筒id', dataIndex: 'wellbore_id', key: 'wellbore_id', width: 120},
+  {title: '层位id', dataIndex: 'zone_id', key: 'zone_id', width: 120},
+  {title: '层号(序号)', dataIndex: 'zone_no', key: 'zone_no', width: 120},
+  {title: '裸眼井解释成果类型', dataIndex: 'borehole_inter_type_name', key: 'borehole_inter_type_name', width: 120},
+  {title: '起始深度', dataIndex: 'start_depth', key: 'start_depth', width: 120},
+  {title: '终止深度', dataIndex: 'end_depth', key: 'end_depth', width: 120},
+  {title: '厚度', dataIndex: 'thickness', key: 'thickness', width: 120},
+  {title: '岩性类型', dataIndex: 'lithology_class', key: 'lithology_class', width: 120},
+  {title: '自然电位', dataIndex: 'spontaneous_potential', key: 'spontaneous_potential', width: 120},
+  {title: '自然伽马', dataIndex: 'sp_gamma_radiant_intensity', key: 'sp_gamma_radiant_intensity', width: 120},
+  {title: '井径', dataIndex: 'well_diameter', key: 'well_diameter', width: 120},
+  {title: '体积密度', dataIndex: 'formation_volume_density', key: 'formation_volume_density', width: 120},
+  {title: '声波时差', dataIndex: 'sonic_differential_time', key: 'sonic_differential_time', width: 120},
+  {title: '中子', dataIndex: 'compensated_neutron', key: 'compensated_neutron', width: 120},
+  {title: '浅电阻率', dataIndex: 'laterolog_shallow', key: 'laterolog_shallow', width: 120},
+  {title: '深电阻率', dataIndex: 'laterolog_deep', key: 'laterolog_deep', width: 120},
+  {title: '冲洗带电阻率', dataIndex: 'laterolog_flushed_zone', key: 'laterolog_flushed_zone', width: 120},
+  {title: '密度孔隙度', dataIndex: 'density_porosity', key: 'density_porosity', width: 120},
+  {title: '声波孔隙度', dataIndex: 'sonic_porosity', key: 'sonic_porosity', width: 120},
+  {title: '中子孔隙度', dataIndex: 'neutron_porosity', key: 'neutron_porosity', width: 120},
+  {title: '有效孔隙度', dataIndex: 'effective_porosity', key: 'effective_porosity', width: 120},
+  {title: '总孔隙度', dataIndex: 'total_porosity', key: 'total_porosity', width: 120},
+  {title: '渗透率', dataIndex: 'permeability', key: 'permeability', width: 120},
+  {title: '含油气饱和度', dataIndex: 'oil_gas_saturation', key: 'oil_gas_saturation', width: 120},
+  {title: '束缚水饱和度', dataIndex: 'irreducible_water_saturation', key: 'irreducible_water_saturation', width: 120},
+  {title: '泥质含量', dataIndex: 'shale_content', key: 'shale_content', width: 120},
+  {title: '砂质含量', dataIndex: 'sandy_content', key: 'sandy_content', width: 120},
+  {title: '灰质含量', dataIndex: 'lime_content', key: 'lime_content', width: 120},
+  {title: '白云质含量', dataIndex: 'dolomitic_content', key: 'dolomitic_content', width: 120},
+  {title: '碳酸盐岩含量', dataIndex: 'carbonate_content', key: 'carbonate_content', width: 120},
+  {title: '指标类型', dataIndex: 'idx_type', key: 'idx_type', width: 120},
+  {title: '解释结论', dataIndex: 'interpretation_result', key: 'interpretation_result', width: 120},
+  {title: '垂深顶深', dataIndex: 'start_tvd', key: 'start_tvd', width: 120},
+  {title: '垂深底深', dataIndex: 'end_tvd', key: 'end_tvd', width: 120},
+  {title: '垂深层厚 ', dataIndex: 'tvd_thickness', key: 'tvd_thickness', width: 120},
+  {title: '备注', dataIndex: 'remarks', key: 'remarks', width: 120},
+  {title: '创建/更新日期', dataIndex: 'update_date', key: 'update_date', width: 120,customRender:({record})=>{
+    return record.update_date == null ? record.create_date : record.update_date;
+    }}
+];
+export const testHistoryColumns=[
+  {title: '井id', dataIndex: 'well_id', key: 'well_id', width: 120},
+  {title: '测试日期', dataIndex: 'testing_date', key: 'testing_date', width: 120},
+  {title: '测试名称', dataIndex: 'testing_name', key: 'testing_name', width: 120},
+  {title: '测试单位', dataIndex: 'anal_coy', key: 'anal_coy', width: 120},
+  {title: '内容描述', dataIndex: 'construction_description', key: 'construction_description', width: 120}
+]
+
+export const analyticalAssaysColumns=[
+  {title: '井id', dataIndex: 'well_id', key: 'well_id', width: 120},
+  {title: '分析类型', dataIndex: 'item_code', key: 'item_code', width: 120},
+  {title: '分析指标', dataIndex: 'item_name', key: 'item_name', width: 120},
+  {title: '指标单位', dataIndex: 'meter_unit', key: 'meter_unit', width: 120},
+  {title: '指标值', dataIndex: 'idx_value', key: 'idx_value', width: 120},
+  {title: '描述', dataIndex: 'description', key: 'description', width: 120}
+]

+ 214 - 139
vue/src/views/wellinfo/detail.vue

@@ -1,134 +1,195 @@
 <template>
-  <a-card title="井史简介" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardSummary.expand" @click="cardSettings.cardSummary.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardSummary.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardSummary.expand">
-      井名宁13-23构造位置XXXXXXXX,于2015年02月03日开钻,2015年08月22日完钻,采取先期裸眼完并方式完井。
 
-      投产于2015年09月09日,生产层位XXX层位 2023年10月27日进行最近一次流压测试,油层中部压力33.4MPa,中部温度166.85°C,2023年11月07日,油嘴6.5mm,油压14.66MPa,套压0.4MPa,日产液量38.2t/d,日产油量22.58t/d,含水40.88%,动液面788m,截止目前累产油290594.34吨。
-    </div>
-  </a-card>
-  <a-card title="生产动态" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardChat.expand" @click="cardSettings.cardChat.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardChat.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardChat.expand">
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
-  <a-card title="基本信息" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardBaseInfo.expand" @click="cardSettings.cardBaseInfo.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardBaseInfo.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardBaseInfo.expand">
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
-  <a-card title="业务解释" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardExplain.expand" @click="cardSettings.cardExplain.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardExplain.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardExplain.expand">
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
-  <a-card title="相关文档" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardFile.expand" @click="cardSettings.cardFile.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardFile.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardFile.expand">
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
-  <a-card title="测试历史" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardTest.expand" @click="cardSettings.cardTest.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardTest.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardTest.expand">
-      本井共实施5次系统试井,4次压恢压降试井,5次工程测井, 11次静压测试, 107次流压测试, 2023年10月27日进行最近一次流压测试,油层中部压力33.47MPa,中部温度132.32 ℃
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
-  <a-card title="分析化验" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardAnalysis.expand" @click="cardSettings.cardAnalysis.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardAnalysis.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardAnalysis.expand">
-      本井共实监原油全分析共90组,原油族组份分析12组,天然气全分析47组,B2S含量分析19组,油田水分析2组,PVT分析3组:
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
-  <a-card title="作业简史(业务过程)" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardWork.expand" @click="cardSettings.cardWork.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardWork.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardWork.expand">
-      哈23-12井井实施井下作业施工1次,其中油管测试1次;2015年08月23日油管测试,油管测试井段7458m-7613.05m
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
-  <a-card title="GIS地图" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
-    <template #extra>
-      <UpSquareOutlined v-if="cardSettings.cardGIS.expand" @click="cardSettings.cardGIS.expand=false"
-                        :style="cardSettings.buttonStyle"/>
-      <DownSquareOutlined v-else @click="cardSettings.cardGIS.expand=true"
-                          :style="cardSettings.buttonStyle"/>
-    </template>
-    <div v-if="cardSettings.cardGIS.expand">
-      哈23-12井井实施井下作业施工1次,其中油管测试1次;2015年08月23日油管测试,油管测试井段7458m-7613.05m
-      <p>Card content</p>
-      <p>Card content</p>
-      <p>Card content</p>
-    </div>
-  </a-card>
+ <div>
+   <a-card title="井史简介" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardSummary.expand" @click="cardSettings.cardSummary.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardSummary.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardSummary.expand" class="info-body">
+       <p>井名宁<span>13-23</span>构造位置<span>XXXXXXXX</span>,于<span>2015年02月03日</span>开钻,2015年08月22日完钻,采取<span>先期裸眼完并</span>方式完井。
+       </p>
+
+       <p>投产于<span>2015年09月09日</span>,生产层位<span>XXX</span>层位 <span>2023年10月27日</span>进行最近一次流压测试,油层中部压力<span>33.4</span>MPa,中部温度<span>166.85</span>°C,<span>2023年11月07日</span>,油嘴<span>6.5</span>mm,
+       </p>
+       <p>
+         油压<span>14.66</span>MPa,套压<span>0.4</span>MPa,日产液量<span>38.2</span>t/d,日产油量<span>22.58</span>t/d,含水<span>40.88</span>%,动液面<span>788</span>m,截止目前累产油<span>290594.34</span>吨。
+       </p>
+     </div>
+   </a-card>
+   <a-card title="生产动态" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardChat.expand" @click="cardSettings.cardChat.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardChat.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardChat.expand">
+       <p>Card content</p>
+       <p>Card content</p>
+       <p>Card content</p>
+     </div>
+   </a-card>
+   <a-card title="基本信息" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardBaseInfo.expand" @click="cardSettings.cardBaseInfo.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardBaseInfo.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardBaseInfo.expand">
+       <a-divider type="vertical" class="info-title" style="margin-top: 0px" dashed>井身结构</a-divider>
+       <a-descriptions bordered>
+         <a-descriptions-item label="井id:">{{dataModel.well_id }}</a-descriptions-item>
+         <a-descriptions-item label="井名:">{{dataModel.well_common_name }}</a-descriptions-item>
+         <a-descriptions-item label="井别:">{{dataModel.well_purpose }}</a-descriptions-item>
+         <a-descriptions-item label="井型:">{{dataModel.well_type }}</a-descriptions-item>
+         <a-descriptions-item label="开钻日期:">{{dataModel.spud_date }}</a-descriptions-item>
+         <a-descriptions-item label="完钻日期:">{{dataModel.end_drilling_date }}</a-descriptions-item>
+         <a-descriptions-item label="设计井深:">{{dataModel.budgeted_md }}</a-descriptions-item>
+         <a-descriptions-item label="完钻层位:">{{dataModel.completion_formation }}</a-descriptions-item>
+         <a-descriptions-item label="完井方式:">{{dataModel.completion_method }}</a-descriptions-item>
+       </a-descriptions>
+       <a-divider type="vertical" class="info-title" dashed>井信息</a-divider>
+       <a-descriptions bordered>
+         <a-descriptions-item label="采油厂机构:">{{dataModel.org_name_a1 }}</a-descriptions-item>
+         <a-descriptions-item label="单位名称:">{{dataModel.org_name_a2 }}</a-descriptions-item>
+         <a-descriptions-item label="标准井名:">{{dataModel.well_legal_name }}</a-descriptions-item>
+         <a-descriptions-item label="地理位置描述:" :span="3">{{dataModel.geo_description }}</a-descriptions-item>
+         <a-descriptions-item label="构造位置描述:" :span="3">{{dataModel.structure_pos }}</a-descriptions-item>
+         <a-descriptions-item label="创建/更新日期:">
+           {{dataModel.update_date == null ? dataModel.create_date : dataModel.update_date }}
+         </a-descriptions-item>
+         <a-descriptions-item label="井筒生命阶段:">{{dataModel.phase }}</a-descriptions-item>
+         <a-descriptions-item label="通用井筒名:">{{dataModel.wellbore_common_name }}</a-descriptions-item>
+         <a-descriptions-item label="目的层:">{{dataModel.target_formation }}</a-descriptions-item>
+         <a-descriptions-item label="审定测量深度:">{{dataModel.authorized_md }}</a-descriptions-item>
+         <a-descriptions-item label="审定真垂直深度:">{{dataModel.authorized_tvd }}</a-descriptions-item>
+
+         <a-descriptions-item label="井底测量深度:">{{dataModel.bh_md }}</a-descriptions-item>
+         <a-descriptions-item label="井底位置描述信息:" :span="2">{{dataModel.geo_description_bh }}</a-descriptions-item>
+         <a-descriptions-item label="井底真垂直深度:">{{dataModel.bh_tvd }}</a-descriptions-item>
+         <a-descriptions-item label="相对于参考面的造斜点深度:">{{dataModel.ko_md }}</a-descriptions-item>
+         <a-descriptions-item label="实际造斜点真垂直深度:">{{dataModel.ko_tvd }}</a-descriptions-item>
+         <a-descriptions-item label="地质单元:">{{dataModel.project_name }}</a-descriptions-item>
+         <a-descriptions-item label="单元类型:">{{dataModel.project_type }}</a-descriptions-item>
+         <a-descriptions-item label="单元等级:">{{dataModel.project_level }}</a-descriptions-item>
+         <a-descriptions-item label="备注:" :span="3">{{dataModel.remarks }}</a-descriptions-item>
+       </a-descriptions>
+       <a-divider type="vertical" class="info-title" dashed>井盆地凹陷信息</a-divider>
+       <a-descriptions bordered>
+         <a-descriptions-item label="标准盆地:">{{dataModel.bz_basin }}</a-descriptions-item>
+         <a-descriptions-item label="标准地陷:">{{dataModel.bz_depression }}</a-descriptions-item>
+         <a-descriptions-item label="标准凹陷:">{{dataModel.bz_depressed }}</a-descriptions-item>
+         <a-descriptions-item label="标准构造带:">{{dataModel.bz_structural_belt }}</a-descriptions-item>
+         <a-descriptions-item label="标准区块:">{{dataModel.bz_qkdy }}</a-descriptions-item>
+         <a-descriptions-item label="标准组织机构:">{{dataModel.bz_org_name }}</a-descriptions-item>
+         <a-descriptions-item label="标准作业区名:">{{dataModel.bz_dwmc }}</a-descriptions-item>
+       </a-descriptions>
+     </div>
+   </a-card>
+   <a-card title="业务解释" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardExplain.expand" @click="cardSettings.cardExplain.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardExplain.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardExplain.expand">
+       <a-table :columns="boreholeInterColumns" :data-source="boreholeInterList" :scroll="{ x:'100%', y: 500 }"
+                :pagination="false"
+                bordered>
+       </a-table>
+     </div>
+   </a-card>
+   <a-card title="相关文档" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardFile.expand" @click="cardSettings.cardFile.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardFile.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardFile.expand">
+       <p>Card content</p>
+       <p>Card content</p>
+       <p>Card content</p>
+     </div>
+   </a-card>
+   <a-card title="测试历史" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardTest.expand" @click="cardSettings.cardTest.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardTest.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardTest.expand">
+       <p>本井共实施5次系统试井,4次压恢压降试井,5次工程测井, 11次静压测试, 107次流压测试,
+         2023年10月27日进行最近一次流压测试,油层中部压力33.47MPa,中部温度132.32 ℃<br/>
+       </p>
+       <a-table :columns="testHistoryColumns" :data-source="testHistoryList" :scroll="{ x:'100%', y: 500 }"
+                :pagination="false"
+                bordered>
+       </a-table>
+     </div>
+   </a-card>
+   <a-card title="分析化验" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardAnalysis.expand" @click="cardSettings.cardAnalysis.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardAnalysis.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardAnalysis.expand">
+       <p>
+       本井共实监原油全分析共90组,原油族组份分析12组,天然气全分析47组,B2S含量分析19组,油田水分析2组,PVT分析3组:
+       </p>
+       <br>
+       <a-table :columns="analyticalAssaysColumns" :data-source="analyticalAssaysList" :scroll="{ x:'100%', y: 500 }"
+                :pagination="false"
+                bordered>
+       </a-table>
+     </div>
+   </a-card>
+   <a-card title="作业简史(业务过程)" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardWork.expand" @click="cardSettings.cardWork.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardWork.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardWork.expand">
+       哈23-12井井实施井下作业施工1次,其中油管测试1次;2015年08月23日油管测试,油管测试井段7458m-7613.05m
+       <p>Card content</p>
+       <p>Card content</p>
+       <p>Card content</p>
+     </div>
+   </a-card>
+   <a-card title="GIS地图" :bordered="false" :headStyle="cardSettings.cardHeadStyle" class="card-detail">
+     <template #extra>
+       <UpSquareOutlined v-if="cardSettings.cardGIS.expand" @click="cardSettings.cardGIS.expand=false"
+                         :style="cardSettings.buttonStyle"/>
+       <DownSquareOutlined v-else @click="cardSettings.cardGIS.expand=true"
+                           :style="cardSettings.buttonStyle"/>
+     </template>
+     <div v-if="cardSettings.cardGIS.expand">
+       哈23-12井井实施井下作业施工1次,其中油管测试1次;2015年08月23日油管测试,油管测试井段7458m-7613.05m
+       <p>Card content</p>
+       <p>Card content</p>
+       <p>Card content</p>
+     </div>
+   </a-card>
+ </div>
 </template>
 <script lang="ts">
-import {ref, defineComponent} from 'vue';
+import {ref, defineComponent, toRefs, reactive} from 'vue';
 import {get} from "@/api/common";
 import {useTabsViewStore} from "@/store/modules/tabsView";
 import dayjs from "dayjs";
-import type {Subject} from "@/views/subject/model";
 import {useRoute} from "vue-router";
 import router from "@/router";
+import {boreholeInterColumns,testHistoryColumns,analyticalAssaysColumns} from './columns';
 
 export default defineComponent({
   name: 'wellinfoDetail',
@@ -136,9 +197,9 @@ export default defineComponent({
   setup() {
     const tabsViewStore = useTabsViewStore();
     const route = useRoute();
-    const cardSettings =ref( {
+    const cardSettings = ref({
       cardHeadStyle: {fontWeight: 'bold'},
-      buttonStyle:{fontSize: '26px', cursor:'pointer'},
+      buttonStyle: {fontSize: '20px', cursor: 'pointer'},
       cardSummary: {expand: true},
       cardChat: {expand: true},
       cardBaseInfo: {expand: true},
@@ -149,23 +210,22 @@ export default defineComponent({
       cardWork: {expand: true},
       cardGIS: {expand: true}
     })
-    const dataModel = ref<Subject>({
-      subjectName: "",
-      tabCode: "",
-      tabName: "",
-      isReferences: 0,
-      tabDesc: "",
-      execSql: "",
-      tagList: []
+    const wellData = reactive({
+      dataModel:{},
+      boreholeInterList:[],
+      testHistoryList:[],
+      analyticalAssaysList:[]
     });
 
     const loadData = async (id) => {
       if (id == undefined) {
         return;
       }
-      get('subject/getSubject',
-        {subjectId: id}).then(data => {
-        dataModel.value = data;
+      get('wellInfo/getWellInfo',{well_id: id}).then(data => {
+        wellData.dataModel = data.dataModel;
+        wellData.boreholeInterList =data.boreholeInterList;
+        wellData.testHistoryList=data.testHistoryList;
+        wellData.analyticalAssaysList=data.analyticalAssaysList;
       })
     }
     const onClose = () => {
@@ -174,9 +234,9 @@ export default defineComponent({
     };
 
     return {
+      ...toRefs(wellData),
       loadData, cardSettings,
-      onClose,
-      dataModel,
+      onClose,boreholeInterColumns,testHistoryColumns,analyticalAssaysColumns,
       dayjs
     };
   },
@@ -188,7 +248,22 @@ export default defineComponent({
 </script>
 
 <style lang="less" scoped>
-.card-detail{
-  width: 100%;margin-top:10px;
+.card-detail {
+  width: 100%;
+  margin-top: 10px;
+}
+
+.info-body {
+  line-height: 30px;
+
+  span {
+    color: #4E61D0
+  }
+}
+
+.info-title {
+  border-color: #7cb305;
+  margin: 15px;
+  font-weight: bold;
 }
 </style>