ProduceParamController.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package com.hb.proj.analysis.controller;
  2. import java.util.Date;
  3. import java.util.List;
  4. import org.apache.commons.lang3.StringUtils;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.data.redis.core.RedisTemplate;
  7. import org.springframework.validation.annotation.Validated;
  8. import org.springframework.web.bind.annotation.PostMapping;
  9. import org.springframework.web.bind.annotation.RequestBody;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import org.springframework.web.bind.annotation.RestController;
  13. import com.hb.proj.allconfig.AccessToken;
  14. import com.hb.proj.allconfig.SysLog;
  15. import com.hb.proj.analysis.service.IPRService;
  16. import com.hb.proj.analysis.service.ProduceParamCalculator;
  17. import com.hb.proj.analysis.service.ProduceParamService;
  18. import com.hb.proj.model.WellAnalysisParamPO;
  19. import com.hb.proj.model.WellMeasurePO;
  20. import com.hb.proj.model.WellMeasureVO;
  21. import com.hb.proj.model.WellPumpPO;
  22. import com.hb.proj.utils.RespVO;
  23. import com.hb.proj.utils.RespVOBuilder;
  24. import com.hb.xframework.dao.util.PageModel;
  25. import com.hb.xframework.util.MapUtils;
  26. import jakarta.validation.Valid;
  27. import jakarta.validation.constraints.NotBlank;
  28. import jakarta.validation.constraints.NotNull;
  29. @RestController
  30. @RequestMapping("/analysis/produce")
  31. @Validated
  32. public class ProduceParamController {
  33. @Autowired
  34. private ProduceParamService service;
  35. @Autowired
  36. private RedisTemplate<String,Object> redisTemplate;
  37. @Autowired
  38. private IPRService iprService;
  39. /**
  40. * 分页查询测量数据(附加的独立测量数据管理页面)
  41. */
  42. @RequestMapping("/queryMeasureParamList")
  43. public RespVO<PageModel<WellMeasureVO>> queryMeasureParamList(String wellName,
  44. Date startTime,Date endTime,
  45. @RequestParam(value = "currentPage", defaultValue = "1") Integer pageNum,
  46. @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
  47. return RespVOBuilder.ok(service.queryMeasureParamList(wellName,startTime,endTime, pageNum, pageSize));
  48. }
  49. /**
  50. * 删除单个计量数据
  51. * @param measureId 待删除记录id
  52. * @return
  53. */
  54. @RequestMapping("/deleteMeasureParam")
  55. @SysLog("删除计量数据:{arg0}")
  56. public RespVO<Object> deleteMeasureParam(@NotBlank(message="缺少记录号") String measureId){
  57. service.deleteMeasureParam(measureId);
  58. return RespVOBuilder.ok();
  59. }
  60. /**
  61. * 分页查询测量数据
  62. */
  63. @RequestMapping("/queryMeasureParam")
  64. public RespVO<PageModel<WellMeasurePO>> queryMeasureParam(@NotBlank(message="缺少井号") String wellId,
  65. Date startTime,Date endTime,
  66. @RequestParam(value = "currentPage", defaultValue = "1") Integer pageNum,
  67. @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
  68. return RespVOBuilder.ok(service.queryMeasureParam(wellId,startTime,endTime, pageNum, pageSize));
  69. }
  70. /**
  71. * 分页查询抽油泵数据
  72. */
  73. @RequestMapping("/queryPump")
  74. public RespVO<PageModel<WellPumpPO>> queryPump(@NotBlank(message="缺少井号") String wellId,
  75. Date startTime,Date endTime,
  76. @RequestParam(value = "currentPage", defaultValue = "1") Integer pageNum,
  77. @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
  78. return RespVOBuilder.ok(service.queryPump(wellId,startTime,endTime, pageNum, pageSize));
  79. }
  80. /**
  81. * 分页查询分析参数
  82. */
  83. @RequestMapping("/queryAnalysisParam")
  84. public RespVO<PageModel<WellAnalysisParamPO>> queryAnalysisParam(@NotBlank(message="缺少井号") String wellId,
  85. Date startTime,Date endTime,
  86. @RequestParam(value = "currentPage", defaultValue = "1") Integer pageNum,
  87. @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
  88. return RespVOBuilder.ok(service.queryAnalysisParam(wellId,startTime,endTime, pageNum, pageSize));
  89. }
  90. /**
  91. * 获得指定井的最新生成动态参数
  92. * @param wellId
  93. * @return
  94. */
  95. @RequestMapping("/getLastParam")
  96. public RespVO<Object> getLastParam(@NotBlank(message="缺少井号") String wellId){
  97. return RespVOBuilder.ok(MapUtils.build("measure", service.getLastMeasureParam(wellId),
  98. "analysis",service.getLastAnalysisParam(wellId),
  99. "pump",service.getLastPumpParam(wellId),
  100. "regression",iprService.getLastRegression(wellId)
  101. ));
  102. }
  103. /**
  104. * 保存油井测量参数
  105. * @param measure
  106. * @param token
  107. * @return
  108. */
  109. @RequestMapping("/saveMeasure")
  110. public RespVO<Object> saveMeasure(@Validated WellMeasurePO measure,AccessToken token){
  111. if(measure.getWellBtmCompCoe()!=null && measure.getWellBtmCompCoe()!=0) {
  112. measure.setSurfaceCompCoe(1/measure.getWellBtmCompCoe());
  113. }
  114. measure.setModifyBy(token!=null?token.getUsName():"unknow");
  115. if(StringUtils.isBlank(measure.getMeasureId())) {
  116. measure.setCreateBy(token!=null?token.getUsName():"unknow");
  117. service.addMeasureParam(measure);
  118. }
  119. else {
  120. WellMeasurePO dbPO=service.getMeasureParam(measure.getMeasureId());
  121. if(dbPO==null) {
  122. return RespVOBuilder.error("记录已不存在");
  123. }
  124. measure.setCreateTime(dbPO.getCreateTime());
  125. service.updateMeasureParam(measure);
  126. }
  127. return RespVOBuilder.ok();
  128. }
  129. /**
  130. * 油井测量参数(独立菜单-计量数据 只维护:测量日期、井名、含水率、计量液量)
  131. * 修改:
  132. * 新增:
  133. * @param measures
  134. * @param token
  135. * @return
  136. */
  137. @PostMapping("/saveMeasureList")
  138. public RespVO<Object> saveMeasureList(@RequestBody @Valid List<WellMeasurePO> measures,@NotNull(message="缺少登录信息") AccessToken token){
  139. if(measures==null || measures.size()==0) {
  140. return RespVOBuilder.error("缺少计量数据");
  141. }
  142. for(WellMeasurePO measure : measures) {
  143. if(StringUtils.isNotBlank(measure.getMeasureId())) {
  144. WellMeasurePO dbPO=service.getMeasureParam(measure.getMeasureId());
  145. if(dbPO==null) {
  146. return RespVOBuilder.error("被更新记录已不存在");
  147. }
  148. dbPO.setWaterRatio(measure.getWaterRatio());
  149. dbPO.setMeteredLiquidYield(measure.getMeteredLiquidYield());
  150. dbPO.setStartTime(measure.getStartTime());
  151. dbPO.setModifyBy(token.getUsName());
  152. service.updateMeasureParam(measure);
  153. }
  154. else {
  155. measure.setModifyBy(token.getUsName());
  156. measure.setCreateBy(token.getUsName());
  157. service.addMeasureParam(measure);
  158. }
  159. }
  160. return RespVOBuilder.ok();
  161. }
  162. /**
  163. * 保存抽油泵参数
  164. * @param pump
  165. * @param token
  166. * @return
  167. */
  168. @RequestMapping("/savePump")
  169. public RespVO<Object> savePump(@Validated WellPumpPO pump,AccessToken token){
  170. pump.setModifyBy(token!=null?token.getUsName():"unknow");
  171. ProduceParamCalculator.calcPumpExtra(pump);
  172. if(StringUtils.isBlank(pump.getPumpId())) {
  173. pump.setCreateBy(token!=null?token.getUsName():"unknow");
  174. service.addPumpParam(pump);
  175. }
  176. else {
  177. WellPumpPO dbPO=service.getPumpParam(pump.getPumpId());
  178. if(dbPO==null) {
  179. return RespVOBuilder.error("记录已不存在");
  180. }
  181. pump.setCreateTime(dbPO.getCreateTime());
  182. service.updatePumpParam(pump);
  183. }
  184. return RespVOBuilder.ok();
  185. }
  186. /**
  187. * 保存分析参数(只新增)
  188. * @param pump
  189. * @param token
  190. * @return
  191. */
  192. @RequestMapping("/saveAnalysisParam")
  193. public RespVO<Object> saveAnalysisParam(@Validated WellAnalysisParamPO analysisParam,AccessToken token){
  194. analysisParam.setModifyBy(token!=null?token.getUsName():"unknow");
  195. analysisParam.setCreateBy(analysisParam.getModifyBy());
  196. service.addAnalysisParam(analysisParam);
  197. return RespVOBuilder.ok();
  198. }
  199. /**
  200. * 计算分析参数
  201. * @param wellId
  202. * @return
  203. */
  204. @RequestMapping("/calcParam")
  205. public RespVO<Object> calcParam(@NotBlank(message="缺少井号") String wellId){
  206. WellMeasurePO measure=service.getLastMeasureParam(wellId);
  207. if(measure==null) {
  208. return RespVOBuilder.error("缺少该井的测量数据");
  209. }
  210. WellPumpPO pump=service.getLastPumpParam(wellId);
  211. if(pump==null) {
  212. return RespVOBuilder.error("缺少该井的泵数据");
  213. }
  214. /*
  215. WellAnalysisParamPO analysis=service.getLastAnalysisParam(wellId);
  216. //引用相同数据计算过
  217. if(analysis!=null && analysis.getRefMeasureId().equals(measure.getMeasureId()) && analysis.getRefPumpId().equals(pump.getPumpId()) ) {
  218. return RespVOBuilder.ok();
  219. }*/
  220. //实时采集数据:冲次(要求单位 次/min)
  221. Double freq=(Double)redisTemplate.opsForHash().get(wellId,"freq");
  222. //计算出新的分析参数
  223. WellAnalysisParamPO analysis=ProduceParamCalculator.calc(measure, pump, freq);
  224. analysis.setWellId(wellId);
  225. service.addAnalysisParam(analysis);
  226. return RespVOBuilder.ok(analysis);
  227. }
  228. }