|
@@ -19,6 +19,8 @@ import com.hb.proj.data.controller.DataTransUtils;
|
|
|
import com.hb.proj.model.MultiDataVO;
|
|
|
import com.hb.proj.model.RptOilDailyDutyPO;
|
|
|
import com.hb.proj.model.RptOilDailyVO;
|
|
|
+import com.hb.proj.model.RptWaterDailyDutyPO;
|
|
|
+import com.hb.proj.model.RptWaterDailyVO;
|
|
|
import com.hb.proj.model.SingleDataVO;
|
|
|
import com.hb.proj.model.UnitPO;
|
|
|
import com.hb.proj.model.WellParamPO;
|
|
@@ -35,9 +37,12 @@ public class RptDailyExtractFacade {
|
|
|
@Autowired
|
|
|
private UnitService unitService;
|
|
|
|
|
|
- //需要提取的实时数据字段、单位配置,用于提取数据后进行单位转换(只针对报表的单位转换)
|
|
|
+ //采油井需要提取的实时数据字段、单位配置,用于提取数据后进行单位转换(只针对报表的单位转换)
|
|
|
private static Map<String,String[]> oilDailyRTField;
|
|
|
|
|
|
+ //注水井需要提取的实时数据字段、单位配置
|
|
|
+ private static Map<String,String[]> waterDailyRTField;
|
|
|
+
|
|
|
public RptDailyExtractFacade() {
|
|
|
oilDailyRTField=new HashMap<>();
|
|
|
oilDailyRTField.put(SortCodeConstant.PARAM_OIL_PRESS, new String[]{"MPa","#.00"});
|
|
@@ -47,20 +52,58 @@ public class RptDailyExtractFacade {
|
|
|
oilDailyRTField.put(SortCodeConstant.PARAM_FREQ, new String[]{"SPM","#.0"});
|
|
|
oilDailyRTField.put(SortCodeConstant.PARAM_STROKE, new String[]{"m","#.00"});
|
|
|
oilDailyRTField.put(SortCodeConstant.PARAM_DIAGRAM_CURRENT, new String[]{"A","#.00"});
|
|
|
+
|
|
|
+
|
|
|
+ waterDailyRTField=new HashMap<>();
|
|
|
+ waterDailyRTField.put(SortCodeConstant.PARAM_OIL_PRESS, new String[]{"MPa","#.00"});
|
|
|
+ waterDailyRTField.put(SortCodeConstant.PARAM_CASING_PRESS, new String[]{"MPa","#.00"});
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 注水井日报数据提取
|
|
|
+ * 日报数据:08:00-次日08:00
|
|
|
+ * 班报数据:班次划分:08:00-16:00 16:00-00:00 00:00-08:00
|
|
|
+ * @param orgId
|
|
|
+ * @param dailyDate
|
|
|
+ * @param authUsId
|
|
|
+ */
|
|
|
+ public List<RptWaterDailyVO> extractWaterDailyData(String orgId,Date dailyDate,String authUsId) {
|
|
|
+ Assert.isTrue(StringUtils.isNotBlank(orgId), "缺少必要参数");
|
|
|
+ List<RptWaterDailyVO> dialyDatas=dailyService.loadAuthOilWellBase(orgId, authUsId,RptWaterDailyVO.class);
|
|
|
+ if(dialyDatas==null || dialyDatas.size()==0) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ Map<String,RptWaterDailyVO> dailyMap=new HashMap<>(dialyDatas.size());
|
|
|
+ for(RptWaterDailyVO daily : dialyDatas) {
|
|
|
+ daily.setDailyDate(dailyDate);
|
|
|
+ dailyMap.put(daily.getWellId(),daily);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<WellParamPO> wparams=dailyService.loadParamByWells(dailyMap.keySet(),waterDailyRTField.keySet());
|
|
|
+
|
|
|
+ Map<String,WellParamPO> paramMap=resetParamUnit(wparams);
|
|
|
+
|
|
|
+ buildWaterDutyDatas(dailyMap,paramMap,dailyDate,8); //班次:08:00-16:00
|
|
|
+
|
|
|
+ buildWaterDutyDatas(dailyMap,paramMap,dailyDate,16); //班次:16:00-00:00(次日)
|
|
|
+
|
|
|
+
|
|
|
+ buildWaterDutyDatas(dailyMap,paramMap,DateUtils.addDays(dailyDate, 1),0); //班次:00:00(次日)-08:00(次日)
|
|
|
+
|
|
|
+ return dialyDatas;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
- * 日报数据提取
|
|
|
+ * 采油井日报数据提取
|
|
|
* 日报数据:08:00-次日08:00
|
|
|
* 班报数据:班次划分:08:00-16:00 16:00-00:00 00:00-08:00
|
|
|
* @param orgId
|
|
|
* @param dailyDate
|
|
|
* @param authUsId
|
|
|
*/
|
|
|
- public List<RptOilDailyVO> extractDailyData(String orgId,Date dailyDate,String authUsId) {
|
|
|
+ public List<RptOilDailyVO> extractOilDailyData(String orgId,Date dailyDate,String authUsId) {
|
|
|
Assert.isTrue(StringUtils.isNotBlank(orgId), "缺少必要参数");
|
|
|
- List<RptOilDailyVO> dialyDatas=dailyService.loadAuthOilWellBase(orgId, authUsId);
|
|
|
+ List<RptOilDailyVO> dialyDatas=dailyService.loadAuthOilWellBase(orgId, authUsId,RptOilDailyVO.class);
|
|
|
if(dialyDatas==null || dialyDatas.size()==0) {
|
|
|
return null;
|
|
|
}
|
|
@@ -78,27 +121,75 @@ public class RptDailyExtractFacade {
|
|
|
|
|
|
bindRtExtra(dailyMap,paramMap,dailyDate); //班次:08:00-08:00(次日)
|
|
|
|
|
|
- buildDutyDatas(dailyMap,paramMap,dailyDate,8); //班次:08:00-16:00
|
|
|
+ buildOilDutyDatas(dailyMap,paramMap,dailyDate,8); //班次:08:00-16:00
|
|
|
|
|
|
|
|
|
- buildDutyDatas(dailyMap,paramMap,dailyDate,16); //班次:16:00-00:00(次日)
|
|
|
+ buildOilDutyDatas(dailyMap,paramMap,dailyDate,16); //班次:16:00-00:00(次日)
|
|
|
|
|
|
|
|
|
- buildDutyDatas(dailyMap,paramMap,DateUtils.addDays(dailyDate, 1),0); //班次:00:00(次日)-08:00(次日)
|
|
|
+ buildOilDutyDatas(dailyMap,paramMap,DateUtils.addDays(dailyDate, 1),0); //班次:00:00(次日)-08:00(次日)
|
|
|
|
|
|
return dialyDatas;
|
|
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 构建指定日期的班报数据
|
|
|
+ * 构建指定日期的注水井班报数据
|
|
|
+ * @param dailyMap
|
|
|
+ * @param paramMap
|
|
|
+ * @param dailyDate
|
|
|
+ * @param startHour
|
|
|
+ */
|
|
|
+ private void buildWaterDutyDatas(Map<String,RptWaterDailyVO> dailyMap,Map<String,WellParamPO> paramMap,Date dailyDate,int startHour) {
|
|
|
+ Date[] dates=getDutyTimes(dailyDate,startHour,8);
|
|
|
+ List<SingleDataVO> rtDatas=dailyService.loadRTDataAvg(paramMap.keySet(),dates[0],dates[1]);
|
|
|
+ if(rtDatas==null || rtDatas.size()==0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String wellId=null;
|
|
|
+ String paramCode=null;
|
|
|
+ WellParamPO wp=null;
|
|
|
+ RptWaterDailyDutyPO dutyItem=null;
|
|
|
+ Map<String,RptWaterDailyDutyPO> dutyMap=new HashMap<>();
|
|
|
+ for(SingleDataVO data : rtDatas) {
|
|
|
+ wp=paramMap.get(data.getWellParam());
|
|
|
+ wellId=wp.getWellId();
|
|
|
+ paramCode=wp.getParamCode();
|
|
|
+ if(dutyMap.containsKey(wellId)) {
|
|
|
+ dutyItem=dutyMap.get(wellId);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ dutyItem=new RptWaterDailyDutyPO();
|
|
|
+ dutyItem.setWellId(wellId);
|
|
|
+ dutyItem.setDailyDate(dailyDate);
|
|
|
+ dutyItem.setDutyTime(DateUtil.format(dates[0], "HH:mm")+"-"+DateUtil.format(dates[1], "HH:mm")); //班次时间段
|
|
|
+ dutyMap.put(wellId, dutyItem);
|
|
|
+
|
|
|
+ dailyMap.get(wellId).addDuty(dutyItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ DataTransUtils.convert(wp, data);
|
|
|
+
|
|
|
+ if(paramCode.equalsIgnoreCase(SortCodeConstant.PARAM_OIL_PRESS)) {
|
|
|
+ dutyItem.setOilPress(data.getDataVal());
|
|
|
+ }
|
|
|
+ else if(paramCode.equalsIgnoreCase(SortCodeConstant.PARAM_CASING_PRESS)) {
|
|
|
+ dutyItem.setCasingPress(data.getDataVal());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 构建指定日期的油井班报数据
|
|
|
* @param dailyMap
|
|
|
* @param paramMap
|
|
|
* @param dailyDate
|
|
|
* @param startHour
|
|
|
* @return
|
|
|
*/
|
|
|
- private void buildDutyDatas(Map<String,RptOilDailyVO> dailyMap,Map<String,WellParamPO> paramMap,Date dailyDate,int startHour) {
|
|
|
+ private void buildOilDutyDatas(Map<String,RptOilDailyVO> dailyMap,Map<String,WellParamPO> paramMap,Date dailyDate,int startHour) {
|
|
|
Date[] dates=getDutyTimes(dailyDate,startHour,8);
|
|
|
List<SingleDataVO> rtDatas=dailyService.loadRTDataAvg(paramMap.keySet(),dates[0],dates[1]);
|
|
|
if(rtDatas==null || rtDatas.size()==0) {
|