Переглянути джерело

Merge remote-tracking branch 'origin/master'

Lloyd 3 роки тому
батько
коміт
c0aa1fdb85

+ 19 - 4
src/main/java/com/gct/aoid/controller/AoidDailyYieldController.java

@@ -2,16 +2,14 @@ package com.gct.aoid.controller;
2 2
 
3 3
 
4 4
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
5
+import com.gct.aoid.entity.AoidDailyYield;
5 6
 import com.gct.aoid.entity.Vo.AoidYeildVo;
6 7
 import com.gct.aoid.service.AoidDailyYieldService;
7 8
 import com.gct.common.core.result.Result;
8 9
 import io.swagger.annotations.Api;
9 10
 import io.swagger.annotations.ApiOperation;
10 11
 import org.springframework.beans.factory.annotation.Autowired;
11
-import org.springframework.web.bind.annotation.PostMapping;
12
-import org.springframework.web.bind.annotation.RequestBody;
13
-import org.springframework.web.bind.annotation.RequestMapping;
14
-import org.springframework.web.bind.annotation.RestController;
12
+import org.springframework.web.bind.annotation.*;
15 13
 
16 14
 import java.util.List;
17 15
 import java.util.Map;
@@ -27,6 +25,7 @@ import java.util.Map;
27 25
 @Api(value = "AoidDailyYieldController", description = "功图量液")
28 26
 @RestController
29 27
 @RequestMapping("/aoidDailyYield")
28
+@CrossOrigin
30 29
 public class AoidDailyYieldController {
31 30
 
32 31
     @Autowired
@@ -46,5 +45,21 @@ public class AoidDailyYieldController {
46 45
         Page<Map<String, Object>> page =   aoidDailyYieldService.getAoidDailyYieldInfoByWellIdAndPorDatePeriodByPage(aoidYeildVo.getWellId(), aoidYeildVo.getStartDate(),aoidYeildVo.getSize(),aoidYeildVo.getPage());
47 46
         return page ==null|| page.getRecords().size()==0?Result.error("未找到"):Result.ok(page);
48 47
     }
48
+
49
+
50
+
51
+
52
+
53
+    @ApiOperation(value = "获取默认数据" ,notes = "量液获取默认数据")
54
+    @GetMapping("/getDefaultData")
55
+    public Result getDefaultData(){
56
+        AoidDailyYield defaultData = aoidDailyYieldService.getDefaultData();
57
+        return defaultData ==null?Result.error("未找到"):Result.ok(defaultData);
58
+    }
59
+
60
+
61
+
62
+
63
+
49 64
 }
50 65
 

+ 10 - 0
src/main/java/com/gct/aoid/entity/AoidDailyYield.java

@@ -155,4 +155,14 @@ public class AoidDailyYield {
155 155
 
156 156
     @ApiModelProperty(value = "汽油比")
157 157
     private double qyb;
158
+
159
+    @TableField(exist = false)
160
+    private String jq;
161
+
162
+
163
+
164
+
165
+    @TableField(exist = false)
166
+    private String  zd;
167
+
158 168
 }

+ 8 - 1
src/main/java/com/gct/aoid/feignclient/BaseDataClient.java

@@ -15,7 +15,7 @@ import javax.websocket.server.PathParam;
15 15
  * @version 1.0
16 16
  * @since 2021/1/25 下午6:02
17 17
  */
18
-@FeignClient(value = "centralbase",fallback = BaseDataHystrix.class)
18
+@FeignClient(value = "centralbase",fallback = BaseDataHystrix.class,url = "localhost:9002")
19 19
 public interface BaseDataClient {
20 20
     @RequestMapping(value = "/getLatestA2DailyData/{WellID}",method = RequestMethod.GET)
21 21
     String getLatestA2DailyData(@PathVariable("WellID") String wellID) ;
@@ -28,4 +28,11 @@ public interface BaseDataClient {
28 28
     @RequestMapping(value = "/cbPcProWellboreVolDaily/getA2DataForCalVolDaily/{WellName}/{dateTime}",method = RequestMethod.GET)
29 29
     String getA2DataForCalVolDaily(@PathVariable("WellName") String wellName,@PathVariable("dateTime") String dateTime);
30 30
 
31
+    @RequestMapping("/org/getOrgId/{orgId}")
32
+    String getOrgId(@PathVariable("orgId") String orgId);
33
+
34
+
35
+
36
+
37
+
31 38
 }

+ 11 - 0
src/main/java/com/gct/aoid/feignclient/BaseDataHystrix.java

@@ -28,4 +28,15 @@ public class BaseDataHystrix implements  BaseDataClient {
28 28
     }
29 29
 
30 30
 
31
+
32
+    @Override
33
+    public String getOrgId(String orgId) {
34
+        return "请求超时了";
35
+    }
36
+
37
+
38
+
39
+
40
+
41
+
31 42
 }

+ 13 - 0
src/main/java/com/gct/aoid/feignclient/WarningClint.java

@@ -0,0 +1,13 @@
1
+package com.gct.aoid.feignclient;
2
+
3
+import org.springframework.cloud.openfeign.FeignClient;
4
+import org.springframework.web.bind.annotation.PathVariable;
5
+import org.springframework.web.bind.annotation.RequestMapping;
6
+import org.springframework.web.bind.annotation.RequestMethod;
7
+
8
+@FeignClient(value = "warning",fallback = WarningHystrix.class)
9
+public interface WarningClint {
10
+
11
+    @RequestMapping(value = "/wnGkMsg/extractWorkingConditionDiagnosis/{WellID}",method = RequestMethod.GET)
12
+    String extractWorkingConditionDiagnosis(@PathVariable("WellID") String wellID,@PathVariable("date") String date) ;
13
+}

+ 9 - 0
src/main/java/com/gct/aoid/feignclient/WarningHystrix.java

@@ -0,0 +1,9 @@
1
+package com.gct.aoid.feignclient;
2
+
3
+public class WarningHystrix implements WarningClint{
4
+
5
+    @Override
6
+    public String extractWorkingConditionDiagnosis(String wellID, String date) {
7
+        return "error";
8
+    }
9
+}

+ 46 - 0
src/main/java/com/gct/aoid/job/AoidWarningJobDetail.java

@@ -0,0 +1,46 @@
1
+package com.gct.aoid.job;
2
+
3
+import com.gct.aoid.mapper.SumDataTaskMapper;
4
+import com.gct.aoid.service.AoidWarningService;
5
+import lombok.extern.slf4j.Slf4j;
6
+import org.quartz.JobExecutionContext;
7
+import org.quartz.JobExecutionException;
8
+import org.springframework.beans.factory.annotation.Autowired;
9
+import org.springframework.scheduling.quartz.QuartzJobBean;
10
+
11
+import java.time.LocalDateTime;
12
+import java.time.format.DateTimeFormatter;
13
+
14
+/**
15
+ * class name: CalLiqDailyJobDetail
16
+ *
17
+ * @author lloyd
18
+ * @version 1.0
19
+ * @since 2021/5/21 上午10:24
20
+ */
21
+@Slf4j
22
+public class AoidWarningJobDetail extends QuartzJobBean {
23
+    @Autowired
24
+    public AoidWarningService aoidWarningService;
25
+
26
+    @Override
27
+    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
28
+        //sumDataTaskMapper= (SumDataTaskMapper)jobExecutionContext.getJobDetail().getJobDataMap().get("dao");
29
+        String jobName = jobExecutionContext.getJobDetail().getJobDataMap().getString(JobDataKey.JobName.getDec());
30
+        String jobGroup = jobExecutionContext.getJobDetail().getJobDataMap().getString(JobDataKey.JobGroup.getDec());
31
+        LocalDateTime localDateTime = LocalDateTime.now();
32
+        log.info("*===>AoidWarningJobDetail--JobName:{}--JobGroup:{},Time:{}", jobName, jobGroup, localDateTime.format(DateTimeFormatter.ISO_DATE_TIME));
33
+        //String date = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(localDateTime);
34
+       // String dateTime = date + " 00:00:00";
35
+        try {
36
+            String isWarning = aoidWarningService.isWarning("H257", "2021-05-15");
37
+            System.out.println(isWarning);
38
+        } catch (Exception e) {
39
+            e.printStackTrace();
40
+            throw new RuntimeException("aoidWaring error");
41
+        } finally {
42
+            log.info("<===*AoidWarningJobDetail,Time:{}", localDateTime.format(DateTimeFormatter.ISO_DATE_TIME));
43
+        }
44
+    }
45
+
46
+}

+ 1 - 0
src/main/java/com/gct/aoid/mapper/AoidDailyYieldMapper.java

@@ -17,4 +17,5 @@ public interface AoidDailyYieldMapper extends BaseMapper<AoidDailyYield> {
17 17
 
18 18
 
19 19
     List<AoidDailyYield> getAoidDailyYieldInfoByWellIdAndPorDatePeriod(@Param("wellId") String wellId,@Param("startDate") String startDate,@Param("endDate") String endDate);
20
+    String getAVGForA2LiqProdDaily(@Param("wellId") String wellId,@Param("date") String date);
20 21
 }

+ 4 - 0
src/main/java/com/gct/aoid/mapper/AoidDailyYieldMapper.xml

@@ -54,5 +54,9 @@
54 54
         where well_id=#{wellId} and prod_date >= #{startDate}::timestamp and  #{endDate}::timestamp >= prod_date
55 55
 
56 56
     </select>
57
+    <select id="getAVGForA2LiqProdDaily" resultType="string">
58
+        select avg(liq_prod_daily) from aoid_daily_yield where well_id= #{wellId} and
59
+            prod_date>=#{date}::timestamp - interval '30 day';
60
+    </select>
57 61
 
58 62
 </mapper>

+ 6 - 1
src/main/java/com/gct/aoid/service/AoidDailyYieldService.java

@@ -34,4 +34,9 @@ public interface AoidDailyYieldService extends IService<AoidDailyYield> {
34 34
 
35 35
     Page<Map<String,Object>> getAoidDailyYieldInfoByWellIdAndPorDatePeriodByPage(String wellId, String startDate, int pageSize, int pageNum);
36 36
 
37
-    }
37
+    AoidDailyYield getDefaultData();
38
+
39
+
40
+
41
+
42
+}

+ 6 - 0
src/main/java/com/gct/aoid/service/AoidWarningService.java

@@ -0,0 +1,6 @@
1
+package com.gct.aoid.service;
2
+
3
+public interface AoidWarningService {
4
+
5
+    String isWarning(String wellId,String date);
6
+}

+ 20 - 1
src/main/java/com/gct/aoid/service/impl/AoidDailyYieldServiceImpl.java

@@ -1,9 +1,11 @@
1 1
 package com.gct.aoid.service.impl;
2 2
 
3
+import com.alibaba.fastjson.JSON;
3 4
 import com.alibaba.fastjson.JSONObject;
4 5
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
5 6
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
6 7
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
8
+import com.fasterxml.jackson.databind.JsonNode;
7 9
 import com.gct.aoid.entity.AoidDailyYield;
8 10
 import com.gct.aoid.feignclient.BaseDataClient;
9 11
 import com.gct.aoid.mapper.AoidDailyYieldMapper;
@@ -34,7 +36,8 @@ public class AoidDailyYieldServiceImpl extends ServiceImpl<AoidDailyYieldMapper,
34 36
 
35 37
     @Autowired
36 38
     private AoidDailyYieldMapper aoidDailyYieldMapper;
37
-
39
+    @Autowired
40
+    BaseDataClient baseDataClient;
38 41
     @Override
39 42
     public Result getSingleHistoryYieldCurveOrChart(String wellName, String beginDate, String endDate) {
40 43
         QueryWrapper<AoidDailyYield> queryWrapper = new QueryWrapper<>();
@@ -75,6 +78,9 @@ public class AoidDailyYieldServiceImpl extends ServiceImpl<AoidDailyYieldMapper,
75 78
             map.put("prod_date",date);
76 79
         }
77 80
         return maps;
81
+
82
+
83
+
78 84
     }
79 85
     public Page<Map<String,Object>> getAoidDailyYieldInfoByWellIdAndPorDatePeriodByPage(String wellId, String startDate,int pageSize,int pageNum){
80 86
         startDate = startDate+" 00:00:00";
@@ -95,4 +101,17 @@ public class AoidDailyYieldServiceImpl extends ServiceImpl<AoidDailyYieldMapper,
95 101
         }
96 102
         return mapPage;
97 103
     }
104
+
105
+    @Override
106
+    public AoidDailyYield getDefaultData() {
107
+        AoidDailyYield aoidDailyYield = aoidDailyYieldMapper.selectOne(new QueryWrapper<AoidDailyYield>().last(" limit 1"));
108
+        String org = baseDataClient.getOrgId(aoidDailyYield.getZyq());
109
+        Result<List<Map<String, Object>>> result =JSONObject.parseObject(org, Result.class);
110
+        aoidDailyYield.setJq(result.getData().get(11).get("orgId").toString());
111
+        aoidDailyYield.setZd(result.getData().get(5).get("orgId").toString());
112
+        return aoidDailyYield;
113
+
114
+
115
+
116
+    }
98 117
 }

+ 62 - 0
src/main/java/com/gct/aoid/service/impl/AoidWarningServiceImpl.java

@@ -0,0 +1,62 @@
1
+package com.gct.aoid.service.impl;
2
+
3
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4
+import com.gct.aoid.entity.AoidDailyYield;
5
+import com.gct.aoid.feignclient.WarningClint;
6
+import com.gct.aoid.mapper.AoidDailyYieldMapper;
7
+import com.gct.aoid.service.AoidWarningService;
8
+import org.springframework.beans.factory.annotation.Autowired;
9
+
10
+import java.math.BigDecimal;
11
+
12
+public class AoidWarningServiceImpl implements AoidWarningService {
13
+
14
+    @Autowired
15
+    AoidDailyYieldMapper aoidDailyYieldMapper;
16
+    @Autowired
17
+    WarningClint warningClint;
18
+    @Override
19
+    public String isWarning(String wellId,String date) {
20
+
21
+        //获取前一个月的平均产液量
22
+        String avgForA2LiqProdDaily = aoidDailyYieldMapper.getAVGForA2LiqProdDaily(wellId, date);
23
+        //获取当前的产液量
24
+        QueryWrapper<AoidDailyYield> wrapper = new QueryWrapper<>();
25
+        wrapper.eq("well_id",wellId).eq("prod_date",date);
26
+        AoidDailyYield aoidDailyYield = aoidDailyYieldMapper.selectOne(wrapper);
27
+        Double aDouble = Double.valueOf(avgForA2LiqProdDaily);
28
+        double liqProdDaily = aoidDailyYield.getLiqProdDaily();
29
+        double difference = aDouble-liqProdDaily;
30
+        String result = "";
31
+        int[] num = {15,10,5,1,0};
32
+        double[] coefficient = {0.1,0.15,0.2,0.25,0.5};
33
+        for (int i = 0 ;i< num.length; i++){
34
+            if (aDouble>=num[i]){
35
+                if (aDouble * (1-coefficient[i]) > liqProdDaily){
36
+                    result = "液量异常";
37
+                    break;
38
+                }else {
39
+                    result = "液量正常";
40
+                    break;
41
+                }
42
+            }
43
+        }
44
+        //液量异常井 提取工况诊断是否正常,不正常 进入油井工况诊断 得出结论并输出 yuancheng wn_gk_msg context
45
+        if (result.equals("液量异常")){
46
+            String extractWorkingConditionDiagnosis = warningClint.extractWorkingConditionDiagnosis(wellId,date);
47
+            if(extractWorkingConditionDiagnosis.equals("正常")){
48
+                //正常 提取该井压力库数据,判断是否在高压区 默认 低压区
49
+                //如处在低压区,查看 平均值与当日值的差是否大于0 ,大于0 分析为油井见效,输出结果;小于0 分析为能量不足,输出结果
50
+                //如在高压区,查看 平均值与当日值的差是否大于0 ,大于0 分析为油井见效,输出结果;小于0分析为地层堵塞,输出结果
51
+                if (difference > 0){
52
+                    result = "油井见效";
53
+                }else {
54
+                    result = "能量不足";
55
+                }
56
+            }else{
57
+                result = extractWorkingConditionDiagnosis;
58
+            }
59
+        }
60
+        return result;
61
+    }
62
+}

+ 6 - 0
src/main/resources/application-dev.yml

@@ -83,6 +83,12 @@ spring:
83 83
         JobGroup: CAL_TASK
84 84
         DelayMilliseconds: 1000
85 85
         IsRepeatable: true
86
+      jt2:
87
+        IntervalInSeconds: 600
88
+        JobName: AoidWarningJobDetail
89
+        JobGroup: AoidWarning
90
+        DelayMilliseconds: 1000
91
+        IsRepeatable: true
86 92
 # swagger 相关配置
87 93
 swagger:
88 94
   authorization: