Explorar el Código

增加动液面数据相关接口

chenwen hace 1 año
padre
commit
d1acf283e6

+ 86 - 0
src/main/java/com/hb/proj/data/controller/LiquidController.java

@@ -0,0 +1,86 @@
+package com.hb.proj.data.controller;
+
+import java.util.Date;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.hb.proj.data.service.LiquidService;
+import com.hb.proj.model.LiquidPO;
+import com.hb.proj.model.LiquidVO;
+import com.hb.proj.utils.RespVO;
+import com.hb.proj.utils.RespVOBuilder;
+import com.hb.xframework.dao.util.PageModel;
+import com.hb.xframework.util.DateUtil;
+
+import jakarta.validation.constraints.NotBlank;
+
+@RestController
+@RequestMapping("/liquid")
+@Validated
+public class LiquidController {
+
+	@Autowired
+	private LiquidService  service;
+	
+	
+	/**
+	 * 分页查询指定井的动液面数据
+	 * @param wellId
+	 * @param startTime
+	 * @param endTime
+	 * @param pageNum
+	 * @param pageSize
+	 * @return
+	 */
+	@RequestMapping("/query")
+	public RespVO<PageModel<LiquidVO>> query(@NotBlank(message="井号不能为空") String wellId,
+			Date startTime,Date endTime,
+			@RequestParam(value = "currentPage", defaultValue = "1") Integer pageNum,
+			@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
+		String nowstr=DateUtil.format(new Date(), "yyyy-MM-dd");
+		if(startTime==null) {
+			startTime=DateUtil.parse(nowstr+" 00:00:00");
+		}
+		if(endTime==null) {
+			endTime=DateUtil.parse(nowstr+" 23:59:59");
+		}
+		return RespVOBuilder.ok(service.query(wellId, startTime,endTime,pageNum, pageSize));
+	}
+	
+	/**
+	 * 获得动液面单个记录明细数据
+	 * @param dataId
+	 * @return
+	 */
+	@RequestMapping("/get")
+	public RespVO<LiquidPO>  get(@NotBlank(message="记录号不能为空") String dataId){
+		return RespVOBuilder.ok(service.getDtl(dataId));
+	}
+	
+	
+	/**
+	 * 保存计算结果
+	 * @param liquid
+	 * @return
+	 */
+	@RequestMapping("/save")
+	public RespVO<Object>  save(@Validated LiquidPO liquid){
+		service.saveCalculate(liquid);
+		return RespVOBuilder.ok();
+	}
+	
+	/**
+	 * 逻辑删除单个记录
+	 * @param liquid
+	 * @return
+	 */
+	@RequestMapping("/delete")
+	public RespVO<Object>  delete(@NotBlank(message="记录号不能为空") String dataId){
+		service.delete(dataId);
+		return RespVOBuilder.ok();
+	}
+}

+ 98 - 0
src/main/java/com/hb/proj/data/service/LiquidService.java

@@ -0,0 +1,98 @@
+package com.hb.proj.data.service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.hb.proj.model.LiquidPO;
+import com.hb.proj.model.LiquidVO;
+import com.hb.xframework.dao.core.SpringJdbcDAO;
+import com.hb.xframework.dao.util.PageModel;
+
+@Service
+public class LiquidService {
+
+	@Autowired
+	private SpringJdbcDAO  dao;
+	
+	
+	/**
+	 * 分页查询指定井的动液面数据  目前不用del_if过滤
+	 * @param wellId
+	 * @param startTime
+	 * @param endTime
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	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
+					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 ?  
+					order by test_time desc
+				""";
+		return dao.queryForPagedData(sql, pageNo, pageSize, LiquidVO.class, wellId,startTime,endTime);
+	}
+	
+	/**
+	 * 保存收到计算结果
+	 * @param liquid
+	 */
+	public void saveCalculate(LiquidPO  liquid) {
+		String sql="""
+				update tzl_gather_data_liquid set
+				modify_time=now()
+				,modify_by=?
+				,liquid_suface_pos=?
+				,well_head_poss=?
+				,liquid_depth=?
+				,compute_mode=?
+				""";
+		List<Object> args=new ArrayList<>();
+		args.addAll(Arrays.asList(liquid.getModifyBy(),liquid.getLiquidSufacePos(),liquid.getWellHeadPos(),liquid.getLiquidDepth(),liquid.getComputeMode()));
+		
+		if(liquid.getComputeMode().equals(LiquidPO.MODE_HOOP)) {
+			sql+=",start_hoop_pos=?,end_hoop_pos=?,avg_length_pipe=?,hoop_count=? ";
+			args.addAll(Arrays.asList(liquid.getStartHoopPos(),liquid.getEndHoopPos(),liquid.getAvgLengthPipe(),liquid.getHoopCount()));
+		}
+		else if(liquid.getComputeMode().equals(LiquidPO.MODE_SOUND_SPEED)) {
+			sql+=",sound_speed=?";
+			args.add(liquid.getSoundSpeed());
+		}
+		else if(liquid.getComputeMode().equals(LiquidPO.MODE_SOUND_MARK)) {
+			sql+=",sound_mark_pos=?,sound_mark_depth=?";
+			args.add(liquid.getSoundMarkPos());
+			args.add(liquid.getSoundMarkDepth());
+		}
+		
+		sql+=" where data_id=?";
+		args.add(liquid.getDataId());
+		
+		dao.exeUpdate(sql, args.toArray());
+	}
+	
+	
+	/**
+	 * 获得动液面单个记录明细数据
+	 * @param dataId
+	 * @return
+	 */
+	public LiquidPO  getDtl(String dataId) {
+		return dao.queryForPojo("select * from tzl_gather_data_liquid where data_id=?", LiquidPO.class, dataId);
+	}
+	
+	
+	/**
+	 * 逻辑删除动液面记录
+	 * @param dataId
+	 */
+	public void delete(String dataId) {
+		dao.exeUpdate("update tzl_gather_data_liquid set del_if=true where data_id=?", dataId);
+	}
+}

+ 65 - 0
src/main/java/com/hb/proj/model/LiquidPO.java

@@ -0,0 +1,65 @@
+package com.hb.proj.model;
+
+import java.util.Date;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
+import lombok.Data;
+
+@Data
+public class LiquidPO {
+	
+	public static final String MODE_HOOP="hoop";  //接箍法
+	
+	public static final String MODE_SOUND_SPEED="sound_speed";  //音速法
+	
+	public static final String MODE_SOUND_MARK="sound_mark";  //音标法
+
+	private Integer dataId;
+	
+	private String wellId;
+	
+	private Date testTime;
+	
+	private String liquidDatas;
+	
+	private String hoopDatas;
+	
+	private Integer liquidSufacePos;
+	
+	private Integer wellHeadPos;
+	
+	private Integer startHoopPos;
+	
+	private Integer endHoopPos;
+	
+	private Double liquidDepth;
+	
+	private Double avgLengthPipe;
+	
+	private Double soundSpeed;
+	
+	private Double soundInterval;
+	
+	@NotBlank(message="计算方法不能为空")
+	@Pattern(regexp="hoop|sound_speed|sound_mark",message="计算方法设置不正确")
+	private String computeMode;
+	
+	private Integer hoopCount;
+	
+	private Integer soundMarkPos;
+	
+	private Double  soundMarkDepth;
+	
+	private Double  soundSpeedDev;
+	
+	private Double  liquidDepthDev;
+	
+	private Double  casingPressDev;
+	
+	private Boolean delIf;
+	
+	private String modifyBy;
+	
+	private Date modifyTime;
+}

+ 11 - 0
src/main/java/com/hb/proj/model/LiquidVO.java

@@ -0,0 +1,11 @@
+package com.hb.proj.model;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper=false)
+public class LiquidVO extends LiquidPO {
+
+	private String wellName;
+}