|
@@ -1,6 +1,8 @@
|
1
|
1
|
package com.gct.aoid.service.impl;
|
2
|
2
|
|
3
|
3
|
import com.alibaba.fastjson.JSONObject;
|
|
4
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
5
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
4
|
6
|
import com.gct.aoid.algorithm.CalDiagramProduction;
|
5
|
7
|
import com.gct.aoid.algorithm.CalPumpCard;
|
6
|
8
|
import com.gct.aoid.entity.*;
|
|
@@ -16,9 +18,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
16
|
18
|
import org.springframework.stereotype.Component;
|
17
|
19
|
|
18
|
20
|
|
19
|
|
-import java.math.BigDecimal;
|
20
|
21
|
import java.time.LocalDateTime;
|
21
|
22
|
import java.time.format.DateTimeFormatter;
|
|
23
|
+import java.util.Objects;
|
22
|
24
|
|
23
|
25
|
/**
|
24
|
26
|
* class name: CalDiagramProductionService
|
|
@@ -47,88 +49,199 @@ public class CalDiagramProductionService {
|
47
|
49
|
@Autowired
|
48
|
50
|
private AoidSinglegtYieldService aoidSinglegtYieldService;
|
49
|
51
|
|
|
52
|
+ public int sus = 0;
|
|
53
|
+
|
50
|
54
|
public void cal(String message) throws InstantiationException, IllegalAccessException {
|
51
|
55
|
//if (message !=null ) return;
|
52
|
56
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
53
|
|
- AoidCalprotaskqueue aoidCalprotaskqueue = JSONObject.parseObject(message,AoidCalprotaskqueue.class);
|
54
|
|
- String dcbpStr =null;
|
|
57
|
+ AoidCalprotaskqueue aoidCalprotaskqueue = JSONObject.parseObject(message, AoidCalprotaskqueue.class);
|
|
58
|
+ String dcbpStr = null;
|
55
|
59
|
DiagramCardBaseParam dcbp;
|
56
|
60
|
SingleDiagramDiagnoseResult sddr;
|
57
|
61
|
ProDataForCalProduction a2data;
|
58
|
62
|
ProDataForCalProduction a2dataVol;
|
59
|
63
|
try {
|
|
64
|
+// System.out.println("aoidCalprotaskqueue .getSgtbaseparamId= " + aoidCalprotaskqueue.getSgtbaseparamId());
|
60
|
65
|
dcbpStr = diagnoseClient.getDiagramCardBaseParamByID(aoidCalprotaskqueue.getSgtbaseparamId());
|
|
66
|
+// System.out.println("dcbp json:" + JSONObject.parseObject(dcbpStr, Result.class).toString());
|
61
|
67
|
dcbp = (DiagramCardBaseParam) JSONObject.parseObject(dcbpStr, Result.class).toFiguredOutObject(DiagramCardBaseParam.class);
|
62
|
|
- dcbp.setSgt(SGTUtil.encodeToDoubleArray(dcbp.getSgtStr()));
|
|
68
|
+ dcbp.setSgtFormatted(SGTUtil.encodeToDoubleArray(dcbp.getSgtStr()));
|
63
|
69
|
String sddrStr = diagnoseClient.getSingleDiagramDiagnoseResultByID(aoidCalprotaskqueue.getDiagnoseresultId());
|
64
|
70
|
sddr = (SingleDiagramDiagnoseResult) JSONObject.parseObject(sddrStr, Result.class).toFiguredOutObject(SingleDiagramDiagnoseResult.class);
|
65
|
|
- String a2dataStr = baseDataClient.getA2DataForCalProduction(dcbp.getWellName(),dcbp.getReceiveTime());
|
|
71
|
+// System.out.println("dcbp.getReceiveTime() = " + dcbp.getProdDate());
|
|
72
|
+// System.out.println("dcbp.getWellName() = " + dcbp.getWellName());
|
|
73
|
+ String a2dataStr = baseDataClient.getA2DataForCalProduction(dcbp.getWellName(), dcbp.getProdDate().substring(0, 10));
|
66
|
74
|
a2data = (ProDataForCalProduction) JSONObject.parseObject(a2dataStr, Result.class).toFiguredOutObject(ProDataForCalProduction.class);
|
67
|
|
- String a2dataStrVol = baseDataClient.getA2DataForCalVolDaily(dcbp.getWellName(), dcbp.getReceiveTime());
|
|
75
|
+ // if (a2data != null) System.out.println("a2data = " + a2data);
|
|
76
|
+ String a2dataStrVol = baseDataClient.getA2DataForCalVolDaily(dcbp.getWellName(), dcbp.getProdDate().substring(0, 10));
|
68
|
77
|
a2dataVol = (ProDataForCalProduction) JSONObject.parseObject(a2dataStrVol, Result.class).toFiguredOutObject(ProDataForCalProduction.class);
|
69
|
|
- }catch (Exception e){
|
70
|
|
- e.printStackTrace();
|
71
|
|
- throw new RuntimeException("[aoid->CalDiagramProductionService->cal:] fegin error ");
|
72
|
|
- }
|
73
|
|
- AoidGkModel model = aoidGkModelService.getGKModelByResultType(sddr.getResult1());
|
74
|
|
- AoidSinglewellConfig effectStrockModel = aoidSinglewellConfigService.getConfigOneObjByID(1);
|
75
|
|
- Double[][] bgt = calPumpCard.cal_bgt(dcbp, sddr);
|
76
|
|
-
|
77
|
|
- CalDiagramProduction.CalProductionResult production = calDiagramProduction.calProduction(dcbp.getSgt(), bgt,
|
78
|
|
- dcbp.getS(), dcbp.getN(), sddr.getResult1(), Double.valueOf(String.valueOf(a2data.getBj())), Double.valueOf(String.valueOf(a2data.getBs())),
|
79
|
|
- Double.valueOf(String.valueOf(a2dataVol.getHsl()))/100 , Double.valueOf(String.valueOf(a2dataVol.getSmd())), Double.valueOf(String.valueOf(a2dataVol.getYmd())), Double.valueOf(String.valueOf(a2dataVol.getQyb())),
|
80
|
|
- Double.valueOf(String.valueOf(a2data.getDym())), model.getGkxs(), effectStrockModel
|
|
78
|
+ // if (a2dataVol != null) System.out.println("a2dataStrVol = " + a2dataVol);
|
|
79
|
+ } catch (Exception e) {
|
|
80
|
+ throw new RuntimeException("[aoid->CalDiagramProductionService->cal:] fegin error ");
|
|
81
|
+ }
|
|
82
|
+ AoidGkModel model = aoidGkModelService.getGKModelByResultType(sddr.getResult1());
|
|
83
|
+ AoidSinglewellConfig effectStrockModel = aoidSinglewellConfigService.getConfigOneObjByID(1);
|
|
84
|
+ Double[][] bgt = calPumpCard.cal_bgt(dcbp, sddr);
|
|
85
|
+ CalDiagramProduction.CalProductionResult production = new CalDiagramProduction.CalProductionResult();
|
|
86
|
+
|
|
87
|
+ boolean checked = checkInputDataBeforeCalDiagramProduction(production, a2data, a2dataVol, bgt, dcbp, model, effectStrockModel);
|
|
88
|
+ AoidSinglegtYield aoidSinglegtYield = new AoidSinglegtYield();
|
|
89
|
+ aoidSinglegtYield.setRemark(production.remark);
|
|
90
|
+ if (checked) {
|
|
91
|
+ production = calDiagramProduction.calProduction(
|
|
92
|
+ dcbp.getSgtFormatted(),
|
|
93
|
+ bgt,
|
|
94
|
+ dcbp.getS(),
|
|
95
|
+ dcbp.getN(),
|
|
96
|
+ sddr.getResult1(),
|
|
97
|
+ a2data.getBj(),
|
|
98
|
+ a2data.getBs(),
|
|
99
|
+ a2dataVol.getHsl() / 100,
|
|
100
|
+ a2dataVol.getSmd(),
|
|
101
|
+ a2dataVol.getYmd(),
|
|
102
|
+ a2dataVol.getQyb(),
|
|
103
|
+ a2data.getDym(),
|
|
104
|
+ model.getGkxs(),
|
|
105
|
+ effectStrockModel
|
81
|
106
|
);
|
82
|
|
- aoidCalprotaskqueue.setStatus(AoidCalprotaskqueue.TaskStatus.COMPLETED.getCode());
|
|
107
|
+ /*if (production != null)
|
|
108
|
+ System.out.println("production-remark = " + production.remark);*/
|
|
109
|
+ sus++;
|
|
110
|
+ /* System.out.println("sus = " + sus);*/
|
|
111
|
+ }
|
|
112
|
+ aoidCalprotaskqueue.setStatus(AoidCalprotaskqueue.TaskStatus.COMPLETED.getCode());
|
|
113
|
+// System.out.println("JSONObject.toJSONString(production) = " + JSONObject.toJSONString(production));
|
83
|
114
|
|
84
|
|
- try {
|
85
|
|
- AoidSinglegtYield aoidSinglegtYield = new AoidSinglegtYield();
|
|
115
|
+
|
|
116
|
+ if (dcbp != null) {
|
86
|
117
|
aoidSinglegtYield.setWellId(dcbp.getWellName());
|
87
|
118
|
aoidSinglegtYield.setWellCommonName(dcbp.getWellName());
|
88
|
|
- aoidSinglegtYield.setProdDate(LocalDateTime.parse(dcbp.getReceiveTime(),df));
|
89
|
|
- aoidSinglegtYield.setStroke(BigDecimal.valueOf(new BigDecimal(dcbp.getS()).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
90
|
|
- aoidSinglegtYield.setFrequence(BigDecimal.valueOf(new BigDecimal(dcbp.getN()).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
91
|
|
- aoidSinglegtYield.setBj(new BigDecimal(a2data.getBj().toString()).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
119
|
+ if (dcbp.getProdDate() != null)
|
|
120
|
+ try {
|
|
121
|
+ aoidSinglegtYield.setProdDate(LocalDateTime.parse(dcbp.getProdDate(), df));
|
|
122
|
+ } catch (Exception e) {
|
|
123
|
+ System.out.println("dcbp.getProdDate() ERROR= " + dcbp.getProdDate());
|
|
124
|
+ }
|
|
125
|
+ aoidSinglegtYield.setStroke(dcbp.getS());
|
|
126
|
+ aoidSinglegtYield.setFrequence(dcbp.getN());
|
|
127
|
+ aoidSinglegtYield.setSxzh(dcbp.getL_max());
|
|
128
|
+ aoidSinglegtYield.setXxzh(dcbp.getL_min());
|
|
129
|
+ aoidSinglegtYield.setSgt(dcbp.getSgtStr());
|
|
130
|
+ }
|
|
131
|
+ if (a2data != null) {
|
|
132
|
+ aoidSinglegtYield.setBj(a2data.getBj());
|
92
|
133
|
aoidSinglegtYield.setBs(a2data.getBs());
|
93
|
|
- aoidSinglegtYield.setCmd(new BigDecimal(a2data.getBs().subtract(a2data.getDym()).toString()).setScale(3, BigDecimal.ROUND_HALF_UP));
|
|
134
|
+ aoidSinglegtYield.setCmd(a2data.getBs());
|
94
|
135
|
aoidSinglegtYield.setYzzj(a2data.getBj());
|
95
|
|
- aoidSinglegtYield.setSxzh(BigDecimal.valueOf(dcbp.getL_max()));
|
96
|
|
- aoidSinglegtYield.setXxzh(BigDecimal.valueOf(dcbp.getL_min()));
|
97
|
|
- aoidSinglegtYield.setSgt(SGTUtil.encodeToString(dcbp.getSgt()));
|
98
|
|
- aoidSinglegtYield.setBgt(SGTUtil.encodeToString(bgt));
|
99
|
|
- aoidSinglegtYield.setZdjg(sddr.getResult1());
|
100
|
|
- aoidSinglegtYield.setLiqProdDaily(BigDecimal.valueOf(new BigDecimal(production.rcyl).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
101
|
|
- aoidSinglegtYield.setOilProdDaily(BigDecimal.valueOf(new BigDecimal(production.rcyl1).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
102
|
|
- aoidSinglegtYield.setGasProdDaily(BigDecimal.valueOf(new BigDecimal(production.rcql).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
103
|
|
- aoidSinglegtYield.setEczdjg(sddr.getResult2());
|
104
|
|
- aoidSinglegtYield.setBx(BigDecimal.valueOf(new BigDecimal(production.bx).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
105
|
|
- aoidSinglegtYield.setHsl(new BigDecimal(a2dataVol.getHsl().toString()).setScale(3, BigDecimal.ROUND_HALF_UP));
|
106
|
|
- //aoidSinglegtYield.setFlag();
|
107
|
|
- //aoidSinglegtYield.setBdxs();
|
108
|
|
- aoidSinglegtYield.setLlpl(BigDecimal.valueOf(new BigDecimal(production.llpl).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
109
|
|
- aoidSinglegtYield.setZcc(BigDecimal.valueOf(production.zcc));
|
110
|
|
- aoidSinglegtYield.setSjcc(BigDecimal.valueOf(new BigDecimal(production.sjcc ).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
111
|
|
- aoidSinglegtYield.setYxcc(BigDecimal.valueOf(production.yxcc));
|
112
|
|
- aoidSinglegtYield.setCcss(BigDecimal.valueOf(production.ccss));
|
113
|
|
- aoidSinglegtYield.setLsss(BigDecimal.valueOf(production.lsss));
|
114
|
|
- aoidSinglegtYield.setGyss(BigDecimal.valueOf(production.gyss));
|
|
136
|
+ aoidSinglegtYield.setHsl(a2dataVol.getHsl());
|
115
|
137
|
aoidSinglegtYield.setHy(a2data.getBack_pres());
|
116
|
138
|
aoidSinglegtYield.setYy(a2data.getTubing_pres());
|
117
|
139
|
aoidSinglegtYield.setTy(a2data.getCasing_pres());
|
118
|
|
- aoidSinglegtYield.setWaterProdDaily(BigDecimal.valueOf(new BigDecimal(production.rcsl).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
119
|
|
- aoidSinglegtYield.setScsj(BigDecimal.valueOf(24));
|
120
|
|
- aoidSinglegtYield.setStrokeRatio(BigDecimal.valueOf(new BigDecimal(production.l_StrokeRatio).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
121
|
|
- /*aoidSinglegtYield.setDjdy();
|
|
140
|
+ aoidSinglegtYield.setDym(a2data.getDym());
|
|
141
|
+ }
|
|
142
|
+ if (a2dataVol != null) {
|
|
143
|
+
|
|
144
|
+ aoidSinglegtYield.setSmd(a2dataVol.getSmd());
|
|
145
|
+ aoidSinglegtYield.setYmd(a2dataVol.getYmd());
|
|
146
|
+ aoidSinglegtYield.setQyb(a2dataVol.getQyb());
|
|
147
|
+ }
|
|
148
|
+ //sddr must be not null
|
|
149
|
+ aoidSinglegtYield.setEczdjg(sddr.getResult2());
|
|
150
|
+ aoidSinglegtYield.setZdjg(sddr.getResult1());
|
|
151
|
+
|
|
152
|
+ if (bgt != null && bgt.length > 0) {
|
|
153
|
+// System.out.println("SGTUtil.encodeToString(bgt) = " + SGTUtil.encodeToString(bgt));
|
|
154
|
+ aoidSinglegtYield.setBgt(SGTUtil.encodeToString(bgt));
|
|
155
|
+ }
|
|
156
|
+ if (production != null) {
|
|
157
|
+ aoidSinglegtYield.setLiqProdDaily(production.rcyl);
|
|
158
|
+ aoidSinglegtYield.setOilProdDaily(production.rcyl1);
|
|
159
|
+ aoidSinglegtYield.setGasProdDaily(production.rcql);
|
|
160
|
+ aoidSinglegtYield.setBx(production.bx);
|
|
161
|
+ //aoidSinglegtYield.setFlag();
|
|
162
|
+ //aoidSinglegtYield.setBdxs();
|
|
163
|
+ aoidSinglegtYield.setLlpl(production.llpl);
|
|
164
|
+ aoidSinglegtYield.setZcc(production.zcc);
|
|
165
|
+ aoidSinglegtYield.setSjcc(production.sjcc);
|
|
166
|
+ aoidSinglegtYield.setYxcc(production.yxcc);
|
|
167
|
+ aoidSinglegtYield.setCcss(production.ccss);
|
|
168
|
+ aoidSinglegtYield.setLsss(production.lsss);
|
|
169
|
+ aoidSinglegtYield.setGyss(production.gyss);
|
|
170
|
+ aoidSinglegtYield.setWaterProdDaily(production.rcsl);
|
|
171
|
+ aoidSinglegtYield.setStrokeRatio(production.l_StrokeRatio);
|
|
172
|
+ }
|
|
173
|
+ aoidSinglegtYield.setScsj(24d);
|
|
174
|
+ /*aoidSinglegtYield.setDjdy();
|
122
|
175
|
aoidSinglegtYield.setHjwd();
|
123
|
176
|
aoidSinglegtYield.setYbdl();
|
124
|
177
|
aoidSinglegtYield.setXhqd();
|
125
|
178
|
aoidSinglegtYield.setSbh();*/
|
126
|
|
- aoidSinglegtYield.setSmd(a2dataVol.getSmd());
|
127
|
|
- aoidSinglegtYield.setYmd(a2dataVol.getYmd());
|
128
|
|
- aoidSinglegtYield.setQyb(BigDecimal.valueOf(new BigDecimal(a2dataVol.getQyb().toString()).setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue()));
|
129
|
|
- aoidSinglegtYieldService.save(aoidSinglegtYield);
|
130
|
|
- }catch (Exception e){
|
131
|
|
- throw new RuntimeException("[aoid->CalDiagramProductionService->cal:] insert Aoid_singlegt_yield table error ");
|
|
179
|
+
|
|
180
|
+ System.out.println("aoidSinglegtYield = " + aoidSinglegtYield);
|
|
181
|
+ aoidSinglegtYieldService.saveOrUpdate(aoidSinglegtYield,
|
|
182
|
+ new LambdaQueryWrapper<AoidSinglegtYield>()
|
|
183
|
+ .eq(AoidSinglegtYield::getWellId, aoidSinglegtYield.getWellId())
|
|
184
|
+ .eq(AoidSinglegtYield::getProdDate, aoidSinglegtYield.getProdDate())
|
|
185
|
+ );
|
|
186
|
+
|
|
187
|
+ }
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+ //public final static String[] name = {"N", "S", "BJ", "BS", "DYM", "HSL", "SMD", "QYB", "YMD"};
|
|
191
|
+// public static int[] count = {0, 0, 0, 0, 0, 0, 0, 0, 0};
|
|
192
|
+
|
|
193
|
+ private boolean checkInputDataBeforeCalDiagramProduction(CalDiagramProduction.CalProductionResult production, ProDataForCalProduction a2data, ProDataForCalProduction a2dataVol, Double[][] bgt, DiagramCardBaseParam dcbp, AoidGkModel model, AoidSinglewellConfig effectStrockModel) {
|
|
194
|
+ production.remark = "found unexpected data";
|
|
195
|
+ if (bgt == null || bgt.length == 0) return false;
|
|
196
|
+
|
|
197
|
+ if (Objects.isNull(dcbp)) return false;
|
|
198
|
+ if (Objects.isNull(dcbp.getN())) {
|
|
199
|
+// count[0]++;
|
|
200
|
+ return false;
|
132
|
201
|
}
|
|
202
|
+ if (Objects.isNull(dcbp.getS())) {
|
|
203
|
+// count[1]++;
|
|
204
|
+ return false;
|
|
205
|
+
|
|
206
|
+ }
|
|
207
|
+
|
|
208
|
+ if (Objects.isNull(a2data)) return false;
|
|
209
|
+ if (Objects.isNull(a2data.getBj())) {
|
|
210
|
+// count[2]++;
|
|
211
|
+ return false;
|
|
212
|
+ }
|
|
213
|
+ if (Objects.isNull(a2data.getBs())) {
|
|
214
|
+// count[3]++;
|
|
215
|
+ return false;
|
|
216
|
+ }
|
|
217
|
+ if (Objects.isNull(a2data.getDym())) {
|
|
218
|
+// count[4]++;
|
|
219
|
+ a2data.setDym(0.0);
|
|
220
|
+ // return false;
|
|
221
|
+ }
|
|
222
|
+
|
|
223
|
+ if (Objects.isNull(a2dataVol)) return false;
|
|
224
|
+ if (Objects.isNull(a2dataVol.getHsl())) {
|
|
225
|
+// count[5]++;
|
|
226
|
+ return false;
|
|
227
|
+ }
|
|
228
|
+ if (Objects.isNull(a2dataVol.getSmd())) {
|
|
229
|
+// count[6]++;
|
|
230
|
+ a2dataVol.setSmd(1.0);
|
|
231
|
+ }
|
|
232
|
+ if (Objects.isNull(a2dataVol.getQyb())) {
|
|
233
|
+// count[7]++;
|
|
234
|
+ return false;
|
|
235
|
+ }
|
|
236
|
+ if (Objects.isNull(a2dataVol.getYmd())) {
|
|
237
|
+// count[8]++;
|
|
238
|
+ a2dataVol.setYmd(0.84);
|
|
239
|
+ }
|
|
240
|
+
|
|
241
|
+ if (Objects.isNull(model) || Objects.isNull(model.getGkxs())) return false;
|
|
242
|
+
|
|
243
|
+ if (Objects.isNull(effectStrockModel)) return false;
|
|
244
|
+ production.remark = "checked legal";
|
|
245
|
+ return true;
|
133
|
246
|
}
|
134
|
247
|
}
|