Prechádzať zdrojové kódy

动液面数据查询增加校正液面深度、校正音速的默认值处理

chenwen 1 rok pred
rodič
commit
0d0273550c

+ 6 - 1
src/main/java/com/hb/proj/data/service/LiquidService.java

@@ -32,7 +32,12 @@ public class LiquidService {
 	public PageModel<LiquidVO> query(String wellId,Date startTime,Date endTime,int pageNo,int pageSize){
 		String sql="""
 					select w.well_name,data_id,test_time,liquid_depth,compute_mode,sound_speed_dev,liquid_depth_dev,casing_press_dev,
-					battery_voltage,sound_speed_factor,sound_speed_calc
+					battery_voltage,sound_speed_factor,sound_speed_calc,sound_speed,
+					
+					(select sound_speed_factor from tzl_gather_data_liquid d2 where d2.well_id=d.well_id and d2.del_if=false 
+					and  d2.compute_mode='sound_speed' and d2.test_time between date_sub(d.test_time,interval 3 month ) 
+					and d.test_time order by d2.test_time desc limit 1) pre_sound_speed_factor
+					
 					from tzl_gather_data_liquid d
 					left join tzl_well w on d.well_id=w.well_id
 					where  d.well_id=?  and test_time between ? and ?  

+ 49 - 3
src/main/java/com/hb/proj/model/LiquidVO.java

@@ -1,5 +1,7 @@
 package com.hb.proj.model;
 
+import org.apache.commons.lang3.StringUtils;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -11,17 +13,61 @@ public class LiquidVO extends LiquidPO {
 	
 	private String computeModeName;
 	
+	private Double preSoundSpeedFactor; //最近使用了音速法的记录的音速系数
+	
+	
 	public void setComputeMode(String computeMode) {
 		super.setComputeMode(computeMode);
-		if("hoop".equals(computeMode)) {
+		if(LiquidPO.MODE_HOOP.equals(computeMode)) {
 			this.computeModeName="接箍法";
 		}
-		else if("sound_speed".equals(computeMode)) {
+		else if(LiquidPO.MODE_SOUND_SPEED.equals(computeMode)) {
 			this.computeModeName="音速法";
 		}
-		else if("sound_mark".equals(computeMode)) {
+		else if(LiquidPO.MODE_SOUND_MARK.equals(computeMode)) {
 			this.computeModeName="音标法";
 		}
 		
+		setDefSoundSpeedCalc(computeMode,this.getSoundSpeed());
+		
+		setDefLiquidDepth(computeMode,this.getLiquidDepthDev());
+		
+	}
+	
+	public void setSoundSpeed(Double soundSpeed) {
+		super.setSoundSpeed(soundSpeed);
+		setDefSoundSpeedCalc(this.getComputeMode(),soundSpeed);
+	}
+	
+	public void setLiquidDepthDev(Double liquidDepthDev) {
+		super.setLiquidDepthDev(liquidDepthDev);
+		setDefLiquidDepth(this.getComputeMode(),liquidDepthDev);
+	}
+	
+	public void setPreSoundSpeedFactor(Double preFactor) {
+		this.preSoundSpeedFactor=preFactor;
+		setDefLiquidDepth(this.getComputeMode(),this.getLiquidDepthDev());
 	}
+	
+	
+	//参与计算的属性set方法中都要注入,避免set方法调用先后顺序使注入方法无效
+	//如果是音速法,则校正音速=输入音速参数
+	private void setDefSoundSpeedCalc(String computeMode,Double soundSpeed) {
+		if(LiquidPO.MODE_SOUND_SPEED.equals(computeMode)) {
+			this.setSoundSpeedCalc(soundSpeed);
+		}
+	}
+	
+	
+	//还未手动计算过,校正深度默认=液面深度(设备)* 音速系数
+	private void setDefLiquidDepth(String computeMode,Double liquidDepthDev) {
+		if(StringUtils.isBlank(computeMode) && liquidDepthDev!=null) {
+			Double dep=liquidDepthDev*(this.preSoundSpeedFactor!=null?this.preSoundSpeedFactor:1);
+			if(dep!=null) {
+				this.setLiquidDepth(Double.parseDouble(String.format("%.2f", dep)));
+			}
+		}
+	}
+	
+	
 }