소스 검색

采油井日报接口调整,新增注水井日报接口

chenwen 1 년 전
부모
커밋
9b4cd007d7

+ 103 - 0
src/main/java/com/hb/proj/model/RptWaterDailyDutyPO.java

@@ -0,0 +1,103 @@
+package com.hb.proj.model;
+
+import java.util.Date;
+
+import lombok.Data;
+
+@Data
+public class RptWaterDailyDutyPO {
+
+	/**
+	 * 主键
+	 */
+	private String dutyId;
+	
+	/**
+	 * 班次h:min
+	 */
+	private String dutyTime;
+	
+	
+	/**
+	 * 井号
+	 */
+	private String wellId;
+	
+	/**
+	 * 日报日期
+	 */
+	private Date dailyDate;
+	
+	
+	/**
+	 * 巡检时间h:min
+	 */
+	private String patrolTime;
+	
+	/**
+	 * 注水时间h:min
+	 */
+	private String injectTime;
+	
+	/**
+	 * 油压MPa
+	 */
+	private Double oilPress;
+	
+	/**
+	 * 套压MPa
+	 */
+	private Double casingPress;
+	
+	/**
+	 * 干压MPa
+	 */
+	private Double dryPress;
+	
+	/**
+	 * 泵压MPa
+	 */
+	private Double pumpPress;
+	
+	/**
+	 * 全井注水计量值m^3
+	 */
+	private Double fullInjectMeter;
+	
+	/**
+	 * 全井注水实际值m^3/d
+	 */
+	private Double fullInjectReal;
+	
+	/**
+	 * 分层1注水计量值m^3
+	 */
+	private Double layer1InjectMeter;
+	
+	/**
+	 * 分层1注水实际值m^3
+	 */
+	private Double layer1InjectReal;
+	
+	/**
+	 * 分层2注水计量值m^3
+	 */
+	private Double layer2InjectMeter;
+	
+	/**
+	 * 分层2注水实际值m^3
+	 */
+	private Double layer2InjectReal;
+	
+	/**
+	 * 分层3注水计量值m^3
+	 */
+	private Double layer3InjectMeter;
+	
+	/**
+	 * 分层3注水实际值m^3
+	 */
+	private Double layer3InjectReal;
+	
+	
+}

+ 94 - 0
src/main/java/com/hb/proj/model/RptWaterDailyPO.java

@@ -0,0 +1,94 @@
+package com.hb.proj.model;
+
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import jakarta.validation.constraints.Positive;
+import lombok.Data;
+
+@Data
+public class RptWaterDailyPO {
+
+	/**
+	 * 
+	 * 记录主键
+	 */
+	private String dailyId;
+	
+	/**
+	 * 日报日期
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+	private Date dailyDate;
+	
+	/**
+	 * 井号
+	 */
+	private String wellId;
+	
+	
+	
+	/**
+	 * 注水方式:正注、返注、笼统注
+	 */
+	private String injectMode;
+	
+	/**
+	 * 全井配注(m3/d)
+	 */
+	@Positive(message="全井配注应为大于0的数字")
+	private Double fullInjectQuota;
+	
+	/**
+	 * 分层1配注(m3/d)
+	 */
+	@Positive(message="分层1配注应为大于0的数字")
+	private Double layer1InjectQuota;
+	
+	/**
+	 * 分层2配注(m3/d)
+	 */
+	@Positive(message="分层2配注应为大于0的数字")
+	private Double layer2InjectQuota;
+	
+	/**
+	 * 分层3配注(m3/d)
+	 */
+	@Positive(message="分层3配注应为大于0的数字")
+	private Double layer3InjectQuota;
+	
+	
+	
+	/**
+	 * 备注
+	 */
+	private String note;
+	
+	/**
+	 * 白班巡检人
+	 */
+	private String dayPatrolBy;
+	
+	
+	
+	/**
+	 * 夜班巡检人
+	 */
+	private String nightPatrolBy;
+	
+	
+	
+	/**
+	 * 审核人
+	 */
+	private String auditor;
+	
+	private String createBy;
+	
+	private String modifyBy;
+	
+	private Date createTime;
+	
+	private Date modifyTime;
+}

+ 57 - 0
src/main/java/com/hb/proj/model/RptWaterDailyVO.java

@@ -0,0 +1,57 @@
+package com.hb.proj.model;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.BeanUtils;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class RptWaterDailyVO extends RptWaterDailyPO {
+
+	/**
+	 * 井名
+	 */
+	private String wellName;
+	
+	
+	private Map<String,RptWaterDailyDutyPO> duties;
+	
+	public RptWaterDailyVO() {
+		duties=new HashMap<>(3);
+	}
+	
+	public void addDuty(RptWaterDailyDutyPO duty) {
+		duties.put(duty.getDutyTime(),duty);
+	}
+
+	/**
+	 * 保证班报记录里的wellId,dailyDate与日报一致
+	 * @return
+	 */
+	public List<RptWaterDailyDutyPO> getInnerDuties() {
+		List<RptWaterDailyDutyPO> rtn=new ArrayList<>(duties.size());
+		for(String key : duties.keySet()) {
+			duties.get(key).setWellId(this.getWellId());
+			duties.get(key).setDailyDate(this.getDailyDate());
+			rtn.add(duties.get(key));
+		}
+		return rtn;
+	}
+	
+	/**
+	 * 日报VO转为可持久化的PO
+	 * @return
+	 */
+	public RptWaterDailyPO toPO() {
+		RptWaterDailyPO po=new RptWaterDailyPO();
+		BeanUtils.copyProperties(this, po);
+		return po;
+	}
+	
+}

+ 5 - 5
src/main/java/com/hb/proj/rpt/controller/RptOilDailyController.java

@@ -47,7 +47,7 @@ public class RptOilDailyController {
 	public RespVO<Object> load(@NotBlank(message = "缺少井站") String orgId, @NotNull(message = "缺少日报日期") Date dailyDate,
 			@NotNull(message = "缺少登录信息") AccessToken token) {
 		
-		List<RptOilDailyVO> dailies=dailyService.loadAuthOilWellBase(orgId, token.isSuperAdminIf()?null:token.getTokenId());
+		List<RptOilDailyVO> dailies=dailyService.loadAuthOilWellBase(orgId, token.isSuperAdminIf()?null:token.getTokenId(),RptOilDailyVO.class);
 		if(dailies==null || dailies.size()==0) {
 			return RespVOBuilder.error("未找到对应数据");
 		}
@@ -56,12 +56,12 @@ public class RptOilDailyController {
 			dailyMapping.put(daily.getWellId(), daily);
 		}
 		
-		List<RptOilDailyVO> dbDailies=dailyService.loadDailies(dailyMapping.keySet(),dailyDate);
+		List<RptOilDailyVO> dbDailies=dailyService.loadOilDailies(dailyMapping.keySet(),dailyDate);
 		if(dbDailies==null || dbDailies.size()==0) {
 			return RespVOBuilder.error("未找到对应数据");
 		}
 		
-		List<RptOilDailyDutyPO> dbDuties=dailyService.loadDuties(dailyMapping.keySet(), dailyDate);
+		List<RptOilDailyDutyPO> dbDuties=dailyService.loadOilDuties(dailyMapping.keySet(), dailyDate);
 		
 		if(dbDuties==null || dbDuties.size()==0) {
 			return RespVOBuilder.ok(dbDailies);
@@ -90,7 +90,7 @@ public class RptOilDailyController {
 	@RequestMapping("/extract")
 	public RespVO<Object> extract(@NotBlank(message = "缺少井站") String orgId,
 			@NotNull(message = "缺少日报日期") Date dailyDate, @NotNull(message = "缺少登录信息") AccessToken token) {
-		return RespVOBuilder.ok(rptFacade.extractDailyData(orgId,dailyDate,token.isSuperAdminIf()?null:token.getTokenId()));
+		return RespVOBuilder.ok(rptFacade.extractOilDailyData(orgId,dailyDate,token.isSuperAdminIf()?null:token.getTokenId()));
 	}
 	
 	/**
@@ -117,7 +117,7 @@ public class RptOilDailyController {
 			dutyList.addAll(dailyVO.getInnerDuties());
 		}
 		
-		dailyService.saveRpt(dailyList, dutyList);
+		dailyService.saveOilRpt(dailyList, dutyList);
 		
 		return RespVOBuilder.ok();
 	}

+ 126 - 0
src/main/java/com/hb/proj/rpt/controller/RptWaterDailyController.java

@@ -0,0 +1,126 @@
+package com.hb.proj.rpt.controller;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.hb.proj.allconfig.AccessToken;
+import com.hb.proj.model.RptWaterDailyDutyPO;
+import com.hb.proj.model.RptWaterDailyPO;
+import com.hb.proj.model.RptWaterDailyVO;
+import com.hb.proj.rpt.service.RptDailyDataService;
+import com.hb.proj.rpt.service.RptDailyExtractFacade;
+import com.hb.proj.utils.RespVO;
+import com.hb.proj.utils.RespVOBuilder;
+
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+
+@RestController
+@RequestMapping("/rpt/water")
+@Validated
+public class RptWaterDailyController {
+
+	@Autowired
+	private RptDailyExtractFacade  rptFacade;
+	
+	@Autowired
+	private RptDailyDataService  dailyService;
+	
+	
+	/**
+	 * 加载报表数据
+	 * @param orgId
+	 * @param dailyDate
+	 * @param token
+	 * @return
+	 */
+	@RequestMapping("/load")
+	public RespVO<Object> load(@NotBlank(message = "缺少井站") String orgId, @NotNull(message = "缺少日报日期") Date dailyDate,
+			@NotNull(message = "缺少登录信息") AccessToken token) {
+		List<RptWaterDailyVO> dailies=dailyService.loadAuthOilWellBase(orgId, token.isSuperAdminIf()?null:token.getTokenId(),RptWaterDailyVO.class);
+		if(dailies==null || dailies.size()==0) {
+			return RespVOBuilder.error("未找到对应数据");
+		}
+		Map<String,RptWaterDailyVO> dailyMapping=new HashMap<>(dailies.size());
+		for(RptWaterDailyVO daily : dailies) {
+			dailyMapping.put(daily.getWellId(), daily);
+		}
+		
+		List<RptWaterDailyVO> dbDailies=dailyService.loadWaterDailies(dailyMapping.keySet(),dailyDate);
+		if(dbDailies==null || dbDailies.size()==0) {
+			return RespVOBuilder.error("未找到对应数据");
+		}
+		
+		List<RptWaterDailyDutyPO> dbDuties=dailyService.loadWaterDuties(dailyMapping.keySet(), dailyDate);
+		
+		if(dbDuties==null || dbDuties.size()==0) {
+			return RespVOBuilder.ok(dbDailies);
+		}
+		
+		dailyMapping=new HashMap<>(dbDailies.size());
+		for(RptWaterDailyVO daily : dbDailies) {
+			dailyMapping.put(daily.getWellId(), daily);
+		}
+		
+		for(RptWaterDailyDutyPO duty : dbDuties) {
+			dailyMapping.get(duty.getWellId()).addDuty(duty);
+		}
+		
+		
+		return RespVOBuilder.ok(dbDailies);
+	}
+	
+	
+	/**
+	 * 提取日报数据
+	 * @param orgId
+	 * @param dailyDate
+	 * @param token
+	 * @return
+	 */
+	@RequestMapping("/extract")
+	public RespVO<Object> extract(@NotBlank(message = "缺少井站") String orgId,
+			@NotNull(message = "缺少日报日期") Date dailyDate, @NotNull(message = "缺少登录信息") AccessToken token) {
+		return RespVOBuilder.ok(rptFacade.extractWaterDailyData(orgId,dailyDate,token.isSuperAdminIf()?null:token.getTokenId()));
+	}
+	
+	
+	/**
+	 * 保存日报填报内容
+	 * @param daily
+	 * @param token
+	 * @return
+	 */
+	@RequestMapping("/save")
+	public RespVO<Object> save(@RequestBody @Valid List<RptWaterDailyVO> dailies, AccessToken token) throws Exception{
+		if(dailies==null || dailies.size()==0) {
+			return RespVOBuilder.error("未提供要保存的数据");
+		}
+		List<RptWaterDailyPO> dailyList=new ArrayList<>(dailies.size());
+		List<RptWaterDailyDutyPO> dutyList=new ArrayList<>(dailies.size()*3);
+		RptWaterDailyPO temp=null;
+		for(RptWaterDailyVO dailyVO : dailies) {
+			temp=dailyVO.toPO();
+			temp.setCreateBy(token!=null?token.getUsName():"unknow");
+			temp.setModifyBy(temp.getCreateBy());
+			temp.setCreateTime(new Date());
+			temp.setModifyTime(new Date());
+			dailyList.add(temp);
+			dutyList.addAll(dailyVO.getInnerDuties());
+		}
+		
+		dailyService.saveWaterRpt(dailyList, dutyList);
+		
+		return RespVOBuilder.ok();
+	}
+}

+ 116 - 13
src/main/java/com/hb/proj/rpt/service/RptDailyDataService.java

@@ -13,6 +13,9 @@ import com.hb.proj.model.MultiDataVO;
 import com.hb.proj.model.RptOilDailyDutyPO;
 import com.hb.proj.model.RptOilDailyPO;
 import com.hb.proj.model.RptOilDailyVO;
+import com.hb.proj.model.RptWaterDailyDutyPO;
+import com.hb.proj.model.RptWaterDailyPO;
+import com.hb.proj.model.RptWaterDailyVO;
 import com.hb.proj.model.SingleDataVO;
 import com.hb.proj.model.WellParamPO;
 import com.hb.xframework.dao.core.PreparedSQLArgs;
@@ -26,12 +29,44 @@ public class RptDailyDataService {
 	private SpringJdbcDAO  dao;
 	
 	/**
-	 * 按日期查询井的日报记录
+	 * 按日期查询注水井的日报记录
 	 * @param wellIds
 	 * @param date
 	 * @return
 	 */
-	public List<RptOilDailyVO> loadDailies(Set<String> wellIds,Date date){
+	public List<RptWaterDailyVO> loadWaterDailies(Set<String> wellIds,Date date){
+		String sql="""
+				select w.well_name,r.* from tzl_rpt_daily_water r 
+				inner join tzl_well w on r.well_id=w.well_id and w.del_if=false
+				where r.well_id in (%s) and r.daily_date=?
+				""";
+		return dao.queryForList(String.format(sql, "'"+StringUtils.join(wellIds,"','")+"'"), RptWaterDailyVO.class, date);
+	}
+	
+	
+	/**
+	 * 按日期查询注水井的班报记录
+	 * @param wellIds
+	 * @param date
+	 * @return
+	 */
+	public List<RptWaterDailyDutyPO> loadWaterDuties(Set<String> wellIds,Date date){
+		String sql="""
+				select r.* from tzl_rpt_daily_water_duty r 
+				where r.well_id in (%s) and r.daily_date=?
+				""";
+		return dao.queryForList(String.format(sql, "'"+StringUtils.join(wellIds,"','")+"'"), RptWaterDailyDutyPO.class, date);
+	}
+	
+	
+	
+	/**
+	 * 按日期查询油井的日报记录
+	 * @param wellIds
+	 * @param date
+	 * @return
+	 */
+	public List<RptOilDailyVO> loadOilDailies(Set<String> wellIds,Date date){
 		String sql="""
 				select w.well_name,r.* from tzl_rpt_daily_oil r 
 				inner join tzl_well w on r.well_id=w.well_id and w.del_if=false
@@ -41,12 +76,12 @@ public class RptDailyDataService {
 	}
 	
 	/**
-	 * 按日期查询井的班报记录
+	 * 按日期查询井的班报记录
 	 * @param wellIds
 	 * @param date
 	 * @return
 	 */
-	public List<RptOilDailyDutyPO> loadDuties(Set<String> wellIds,Date date){
+	public List<RptOilDailyDutyPO> loadOilDuties(Set<String> wellIds,Date date){
 		String sql="""
 				select r.* from tzl_rpt_daily_oil_duty r 
 				where r.well_id in (%s) and r.daily_date=?
@@ -60,10 +95,10 @@ public class RptDailyDataService {
 	 * @param authUsId
 	 * @return
 	 */
-	public List<RptOilDailyVO> loadAuthOilWellBase(String orgId,String authUsId){
+	public <T> List<T> loadAuthOilWellBase(String orgId,String authUsId,Class<T> cls){
 		
 		String sql="""
-					select w.well_id ,w.well_name,w.produce_mode,w.water_inject_mode
+					select w.well_id ,w.well_name,w.produce_mode,w.water_inject_mode inject_mode
 					from tzl_well w
 					where w.del_if=false and w.org_id=? 
 				""";
@@ -71,7 +106,7 @@ public class RptDailyDataService {
 		String ord="  order by w.display_num";
 		
 		if(StringUtils.isBlank(authUsId)) {
-			return dao.queryForList(sql+ord, RptOilDailyVO.class, orgId);
+			return dao.queryForList(sql+ord, cls, orgId);
 		}
 		
 		
@@ -82,7 +117,7 @@ public class RptDailyDataService {
 				""";
 		
 		
-		return dao.queryForList(sql+authWhere+ord, RptOilDailyVO.class, orgId,authUsId);
+		return dao.queryForList(sql+authWhere+ord, cls, orgId,authUsId);
 	}
 	
 	/**
@@ -152,9 +187,9 @@ public class RptDailyDataService {
 	 * @param duties
 	 * @throws Exception
 	 */
-	public void saveRpt(List<RptOilDailyPO> dailies,List<RptOilDailyDutyPO> duties)throws Exception{
-		saveDailies(dailies);
-		saveDuties(duties);
+	public void saveOilRpt(List<RptOilDailyPO> dailies,List<RptOilDailyDutyPO> duties)throws Exception{
+		saveOilDailies(dailies);
+		saveOilDuties(duties);
 	}
 	
 	/**
@@ -162,7 +197,7 @@ public class RptDailyDataService {
 	 * @param dailies
 	 * @throws Exception
 	 */
-	public void saveDailies(List<RptOilDailyPO> dailies) throws Exception{
+	public void saveOilDailies(List<RptOilDailyPO> dailies) throws Exception{
 		if(dailies==null || dailies.size()==0) {
 			return;
 		}
@@ -191,7 +226,7 @@ public class RptDailyDataService {
 	 * @param duties
 	 * @throws Exception
 	 */
-	public void saveDuties(List<RptOilDailyDutyPO> duties) throws Exception{
+	public void saveOilDuties(List<RptOilDailyDutyPO> duties) throws Exception{
 		if(duties==null || duties.size()==0) {
 			return ;
 		}
@@ -212,4 +247,72 @@ public class RptDailyDataService {
 		
 		dao.getJdbcTemplate().batchUpdate(preSQL.getSql(), batchParams);
 	}
+	
+	
+	/**
+	 * 保存注水井报表数据
+	 * @param dailies
+	 * @param duties
+	 * @throws Exception
+	 */
+	public void saveWaterRpt(List<RptWaterDailyPO> dailies,List<RptWaterDailyDutyPO> duties)throws Exception{
+		saveWaterDailies(dailies);
+		saveWaterDuties(duties);
+	}
+	
+	/**
+	 * 保存日报数据(更新操作)
+	 * @param dailies
+	 * @throws Exception
+	 */
+	public void saveWaterDailies(List<RptWaterDailyPO> dailies) throws Exception{
+		if(dailies==null || dailies.size()==0) {
+			return;
+		}
+		
+		Date dailyDate=null;
+		Set<String>  wellIds=new HashSet<>(dailies.size());
+		for(RptWaterDailyPO daily : dailies) {
+			dailyDate=daily.getDailyDate();
+			wellIds.add(daily.getWellId());
+		}
+		
+		//先删除旧记录
+		dao.exeUpdate("delete from tzl_rpt_daily_water where well_id in ('"+StringUtils.join(wellIds,"','")+"') and daily_date=?", dailyDate);
+		
+		//再批量加入新记录
+		PreparedSQLArgs preSQL=UpdateHandler.getInsertPreparedSQL(dailies.get(0), "tzl_rpt_daily_water","daily_id");
+		
+		List<Object[]> batchParams=UpdateHandler.generateBatchParams(dailies, preSQL.getParamNames());
+		
+		dao.getJdbcTemplate().batchUpdate(preSQL.getSql(), batchParams);
+		
+	}
+	
+	/**
+	 * 保存班报数据(更新操作)
+	 * @param duties
+	 * @throws Exception
+	 */
+	public void saveWaterDuties(List<RptWaterDailyDutyPO> duties) throws Exception{
+		if(duties==null || duties.size()==0) {
+			return ;
+		}
+		Date dailyDate=null;
+		Set<String>  wellIds=new HashSet<>(duties.size());
+		for(RptWaterDailyDutyPO duty : duties) {
+			dailyDate=duty.getDailyDate();
+			wellIds.add(duty.getWellId());
+		}
+		
+		//先删除旧记录
+		dao.exeUpdate("delete from tzl_rpt_daily_water_duty where well_id in ('"+StringUtils.join(wellIds,"','")+"') and daily_date=?", dailyDate);
+		
+		//再批量加入新记录
+		PreparedSQLArgs preSQL=UpdateHandler.getInsertPreparedSQL(duties.get(0), "tzl_rpt_daily_water_duty","duty_id");
+		
+		List<Object[]> batchParams=UpdateHandler.generateBatchParams(duties, preSQL.getParamNames());
+		
+		dao.getJdbcTemplate().batchUpdate(preSQL.getSql(), batchParams);
+	}
 }

+ 100 - 9
src/main/java/com/hb/proj/rpt/service/RptDailyExtractFacade.java

@@ -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) {