BaseDataController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. package com.gct.tools.etlcamelhuge.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.gct.tools.etlcamelhuge.entity.BaseDataBody;
  4. import io.swagger.annotations.Api;
  5. import io.swagger.annotations.ApiOperation;
  6. import org.omg.CORBA.IRObject;
  7. import org.springframework.jdbc.core.JdbcTemplate;
  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.RestController;
  12. import javax.annotation.Resource;
  13. import javax.sql.DataSource;
  14. import java.math.BigDecimal;
  15. import java.util.List;
  16. import java.util.Map;
  17. /**
  18. * class name: BaseDataController
  19. *
  20. * @author gxt
  21. * @version 1.0
  22. * @since 2021/8/30 下午3:51 周一
  23. */
  24. @RestController
  25. @RequestMapping("/BaseData")
  26. @Api(value = "BaseDataController", description = "基础数据操作controller")
  27. public class BaseDataController {
  28. private JdbcTemplate jdbcTemplate;
  29. @Resource(name = "oracle")
  30. DataSource oracleDataSource;
  31. @Resource(name = "centralbase")
  32. DataSource baseDataSource;
  33. @PostMapping("/saveDataToStatusDaily")
  34. @ApiOperation("从 A2 获取 数据插入到 centrlBase-StatusDaily 中")
  35. public JSONObject saveDataToStatusDaily(@RequestBody BaseDataBody baseDataBody) {
  36. JSONObject jsonObject = new JSONObject();
  37. int insertCount = 0;
  38. int updateDYMCount = 0;
  39. int updateCMDCount = 0;
  40. int updateOLiNozzleCount = 0;
  41. try {
  42. jdbcTemplate = new JdbcTemplate(oracleDataSource);
  43. String date = baseDataBody.getDate();
  44. String sql = "select distinct jh,rq,cyfs,yz,hysx , yysx ,tysx,bs,dym from DBA01 where rq = to_date('" + date + "','yyyy-MM-dd') and qyrq is not null ";
  45. List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
  46. for (Map<String, Object> map : list) {
  47. if (map.get("YZ") == null) map.put("YZ", "0.0");
  48. if (map.get("HYSX") == null) map.put("HYSX", "0.0");
  49. if (map.get("YYSX") == null) map.put("YYSX", "0.0");
  50. if (map.get("TYSX") == null) map.put("TYSX", "0.0");
  51. if (map.get("BS") == null) map.put("BS", "0.0");
  52. sql = "insert into centralbase.cb_pc_pro_wellbore_status_daily(well_id,prod_date,oil_prod_method,oil_nozzle,back_pres,tubing_pres,casing_pres,pump_depth) " +
  53. "values (?,?,?,?,?,?,?,?)";
  54. insertCount = insertBaseDataSourceOfStatusDaily(sql, map);
  55. sql = "select jh , rq , dym from centralbase.cb_pc_pro_wellbore_status_daily where (jh,rq) in (SELECT jh,max(rq) rq FROM DBA01 WHERE dym is not null and to_date('"+date+"','yyyy-MM-dd') group by jh)";
  56. List<Map<String, Object>> dymIsNotNUllList = selectA2DataOfNotIsNullDYMOrBJ(sql);
  57. for (Map<String, Object> stringObjectMap : dymIsNotNUllList) {
  58. sql = "update centralbase.cb_pc_pro_wellbore_status_daily set start_pump_liq_level = '" + stringObjectMap.get("DYM") + "' where well_id = '" + stringObjectMap.get("JH") + "' and prod_date::date = '" + stringObjectMap.get("RQ") + "' ";
  59. updateDYMCount = updateBaseDataSourceOfStatusDaily(sql) + updateDYMCount;
  60. }
  61. sql = "select well_id,prod_date,start_pump_liq_level,pump_depth from centralbase.cb_pc_pro_wellbore_status_daily where prod_date = '" + map.get("RQ") + "' ";
  62. List<Map<String, Object>> CMDDataList = selectBaseDataSourceStatusDaily(sql);
  63. for (Map<String, Object> stringObjectMap : CMDDataList) {
  64. stringObjectMap.put("submergence_depth", null);
  65. if (stringObjectMap.get("start_pump_liq_level") != null && stringObjectMap.get("pump_depth") != null) {
  66. double cmd = Double.valueOf(stringObjectMap.get("pump_depth").toString()) - Double.valueOf(stringObjectMap.get("start_pump_liq_level").toString()) / 10;
  67. BigDecimal bd = new BigDecimal(cmd);
  68. double cmd1 = bd.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
  69. stringObjectMap.put("submergence_depth", cmd1);
  70. }
  71. //修改为batch 执行,用一个list 接受,在执行那个batchUpdate
  72. sql = " update centralbase.cb_pc_pro_wellbore_status_daily set submergence_depth = '" + stringObjectMap.get("submergence_depth") + "' where well_id = '" + stringObjectMap.get("well_id") + "' and prod_date = '" + stringObjectMap.get("prod_date") + "' ";
  73. updateCMDCount = updateBaseDataSourceOfStatusDaily(sql) + updateCMDCount;
  74. }
  75. sql = "select jh , rq , bj from centralbase.cb_pc_pro_wellbore_status_daily where (jh,rq) in (SELECT jh,max(rq) rq FROM DBA01 WHERE bj is not null and to_date('"+date+"','yyyy-MM-dd') group by jh)";
  76. List<Map<String, Object>> oilNozzleList = selectA2DataOfNotIsNullDYMOrBJ(sql);
  77. for (Map<String, Object> stringObjectMap : oilNozzleList) {
  78. sql = " update centralbase.cb_pc_pro_wellbore_status_daily set oil_nozzle = '" + stringObjectMap.get("BJ") + "' where well_id ='" + stringObjectMap.get("JH") + "' and prod_date='" + stringObjectMap.get("RQ") + "' ";
  79. updateOLiNozzleCount = updateBaseDataSourceOfStatusDaily(sql) + updateOLiNozzleCount;
  80. }
  81. insertCount++;
  82. }
  83. } catch (Exception e) {
  84. e.printStackTrace();
  85. jsonObject.put("error", e.getMessage());
  86. } finally {
  87. jsonObject.put("插入条数", insertCount);
  88. jsonObject.put("修改DYM条数", updateDYMCount);
  89. jsonObject.put("修改CMD条数", updateCMDCount);
  90. jsonObject.put("修改OliNozzle条数", updateOLiNozzleCount);
  91. }
  92. return jsonObject;
  93. }
  94. public int insertBaseDataSourceOfStatusDaily(String sql, Map<String, Object> map) {
  95. jdbcTemplate = new JdbcTemplate(baseDataSource);
  96. if (map.isEmpty()) return 0;
  97. return jdbcTemplate.update(sql, map.get("JH"), map.get("RQ"), map.get("CYFS"), map.get("YZ"), map.get("HYSX"), map.get("YYSX"), map.get("BS"), map.get("DYM"));
  98. }
  99. public List<Map<String, Object>> selectA2DataOfNotIsNullDYMOrBJ(String sql) {
  100. jdbcTemplate = new JdbcTemplate(oracleDataSource);
  101. return jdbcTemplate.queryForList(sql);
  102. }
  103. public List<Map<String, Object>> selectBaseDataSourceStatusDaily(String sql) {
  104. jdbcTemplate = new JdbcTemplate(baseDataSource);
  105. return jdbcTemplate.queryForList(sql);
  106. }
  107. public int updateBaseDataSourceOfStatusDaily(String sql) {
  108. jdbcTemplate = new JdbcTemplate(baseDataSource);
  109. return jdbcTemplate.update(sql);
  110. }
  111. @PostMapping("/saveDataToVolDaily")
  112. @ApiOperation("从 A2 获取 数据插入到 centrlBase-VolDaily 中")
  113. public JSONObject saveVolDaily(@RequestBody BaseDataBody baseDataBody) {
  114. JSONObject jsonObject = new JSONObject();
  115. int insertCount = 0;
  116. int updateLiqOliDailyCount = 0;
  117. try {
  118. jdbcTemplate = new JdbcTemplate(oracleDataSource);
  119. String date = baseDataBody.getDate();
  120. String sql = " select distinct jh,rq,scsj, rcyl1,rcyl,rcql,hs, bz from DBA01 where rq = to_date('" + date + "','yyyy-MM-dd') and qyrq is not null ";
  121. List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
  122. for (Map<String, Object> map : list) {
  123. if (map.get("SCSJ") == null) map.put("SCSJ", "0.0");
  124. if (map.get("RCYL1") == null) map.put("RCYL1", "0.0");
  125. if (map.get("RCYL") == null) map.put("RCYL", "0.0");
  126. if (map.get("RCQL") == null) map.put("RCQL", "0.0");
  127. if (map.get("HS") == null) map.put("HS", "0.0");
  128. if (map.get("BZ") == null) map.put("BZ", "");
  129. map.put("RCSL", -1);
  130. map.put("QYB", -1);
  131. map.put("SQB", -1);
  132. if (map.get("RCQL") != null && map.get("RCYL") != null && !map.get("RCYL").equals("0.0") && map.get("RCYL") != "0.0") {
  133. double qyb = Double.valueOf(map.get("RCQL").toString()) / Double.valueOf(map.get("RCYL").toString());
  134. if (!Double.isNaN(qyb) && !Double.isInfinite(qyb)) {
  135. BigDecimal bd = new BigDecimal(qyb);
  136. double d1 = bd.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
  137. map.put("QYB", d1);
  138. }
  139. }
  140. if (map.get("RCYL1") != null && map.get("HS") != null && !map.get("HS").equals("0.0") && map.get("HS") != "0.0") {
  141. double rcsl = (Double.valueOf(map.get("RCYL1").toString()) * Double.valueOf(map.get("HS").toString())) / 100;
  142. if (!Double.isNaN(rcsl) && !Double.isInfinite(rcsl)) {
  143. BigDecimal bd = new BigDecimal(rcsl);
  144. double d1 = bd.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
  145. map.put("RCSL", d1);
  146. }
  147. }
  148. if (map.get("RCQL") != null && map.get("RCSL") != null && !map.get("RCQL").equals("0.0") && map.get("RCQL") != "0.0") {
  149. double sqb = Double.valueOf(map.get("RCSL").toString()) / Double.valueOf(map.get("RCQL").toString());
  150. if (!Double.isNaN(sqb) && !Double.isInfinite(sqb)) {
  151. BigDecimal bd = new BigDecimal(sqb);
  152. double d1 = bd.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
  153. map.put("SQB", d1);
  154. }
  155. }
  156. if (!map.containsKey("SMD")) {
  157. map.put("SMD", 1);
  158. }
  159. if (!map.containsKey("YMD")) {
  160. map.put("YMD", 0.85);
  161. }
  162. sql = "insert into centralbase.cb_pc_pro_wellbore_vol_daily(well_id,prod_date,prod_time,liq_prod_daily,oil_prod_daily,gas_prod_daily,water_cut,remarks,gas_oil_ratio,water_prod_daily,water_gas_ratio,surface_crude_water_density,surface_crude_oil_density) " +
  163. "values(?,?,?,?,?,?,?,?,?,?,?,?,?) ";
  164. insertCount = insertBaseDataVolDaily(sql, map) + insertCount;
  165. sql = "select distinct jh,rq,scsj, rcyl1,rcyl,rcql,hs, bz from DBA01 where rq = to_date('" + date + "','yyyy-MM-dd') and qyrq is not null ";
  166. updateLiqOliDailyCount = updateBaseDataVolDaily(sql) + updateLiqOliDailyCount;
  167. }
  168. } catch (Exception e) {
  169. jsonObject.put("error", e.getMessage());
  170. } finally {
  171. jsonObject.put("插入条数", insertCount);
  172. jsonObject.put("修改liqOliDaily条数", updateLiqOliDailyCount);
  173. }
  174. return jsonObject;
  175. }
  176. public int insertBaseDataVolDaily(String sql, Map<String, Object> map) {
  177. jdbcTemplate = new JdbcTemplate(baseDataSource);
  178. if (map.isEmpty()) return 0;
  179. return jdbcTemplate.update(sql, map.get("JH"), map.get("RQ"), map.get("SCSJ"), map.get("RCYL1"), map.get("RCYL"), map.get("RCQL"), map.get("HS"), map.get("BZ"), map.get("QYB"), map.get("RCSL"), map.get("SQB"), map.get("SMD"), map.get("YMD"));
  180. }
  181. public int updateBaseDataVolDaily(String sql) {
  182. jdbcTemplate = new JdbcTemplate(baseDataSource);
  183. return jdbcTemplate.update(sql);
  184. }
  185. }