EnergySumRptService.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. package com.hb.proj.car.service;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Service;
  6. import com.hb.proj.model.CarConsume;
  7. import com.hb.proj.model.CarConsumeMulRptVO;
  8. import com.hb.proj.model.ERP;
  9. import com.hb.proj.model.MonitorRemainOil;
  10. import com.hb.proj.model.OtherConsume;
  11. import com.hb.proj.model.Workload;
  12. import com.hb.proj.model.Wpg;
  13. import com.hb.proj.model.WpgCorrect;
  14. import com.hb.xframework.dao.core.SpringJdbcDAO;
  15. /**
  16. * 用能用水统计汇总-表6(含各项目部上报的合计数据+物资站ERP数据)
  17. * @author hb
  18. *
  19. */
  20. @Service
  21. public class EnergySumRptService {
  22. @Autowired
  23. private SpringJdbcDAO dao;
  24. /**
  25. * 指定月份内车辆的用油期末期初差值
  26. * @param startMonth
  27. * @param endMonth
  28. * @return
  29. */
  30. public MonitorRemainOil carOilPeriodDiff(String startMonth,String endMonth){
  31. StringBuilder sql=new StringBuilder(300);
  32. sql.append("select sum(case when r.oil_type='柴油' then ifnull(start_volume,0) else 0 end) coil_start_volume,");
  33. sql.append(" sum(case when r.oil_type='汽油' then ifnull(start_volume,0) else 0 end) oil_start_volume ");
  34. sql.append(" from t_oil_monitor_report mr ");
  35. sql.append(" inner join t_car c on mr.car_id=c.car_id ");
  36. sql.append(" inner join t_quota_rule r on c.quota_rule_id=r.record_id ");
  37. sql.append(" where mr.rpt_month=? ");
  38. MonitorRemainOil startOil=dao.queryForObject(sql.toString(), MonitorRemainOil.class, startMonth);
  39. sql.setLength(0);
  40. sql.append("select sum(case when r.oil_type='柴油' then ifnull(end_volume,0) else 0 end) coil_end_volume,");
  41. sql.append(" sum(case when r.oil_type='汽油' then ifnull(end_volume,0) else 0 end) oil_end_volume ");
  42. sql.append(" from t_oil_monitor_report mr ");
  43. sql.append(" inner join t_car c on mr.car_id=c.car_id ");
  44. sql.append(" inner join t_quota_rule r on c.quota_rule_id=r.record_id ");
  45. sql.append(" where mr.rpt_month=? ");
  46. MonitorRemainOil endOil=dao.queryForObject(sql.toString(), MonitorRemainOil.class, endMonth);
  47. if(startOil==null){
  48. return endOil;
  49. }
  50. if(endOil==null){
  51. return startOil;
  52. }
  53. startOil.setCoilEndVolume(endOil.getCoilEndVolume());
  54. startOil.setOilEndVolume(endOil.getOilEndVolume());
  55. return startOil;
  56. }
  57. /**
  58. * 按月统计车辆的用油期末期初差值
  59. * @param year
  60. * @return
  61. */
  62. public List<MonitorRemainOil> carOilPeriodDiffMonthGrp(String year){
  63. StringBuilder sql=new StringBuilder(300);
  64. sql.append("select mr.rpt_month, (case when r.oil_type='柴油' then ifnull(start_volume,0) else 0 end) coil_start_volume,");
  65. sql.append(" (case when r.oil_type='汽油' then ifnull(start_volume,0) else 0 end) oil_start_volume, ");
  66. sql.append(" (case when r.oil_type='柴油' then ifnull(end_volume,0) else 0 end) coil_end_volume,");
  67. sql.append(" (case when r.oil_type='汽油' then ifnull(end_volume,0) else 0 end) oil_end_volume ");
  68. sql.append(" from t_oil_monitor_report mr ");
  69. sql.append(" inner join t_car c on mr.car_id=c.car_id ");
  70. sql.append(" inner join t_quota_rule r on c.quota_rule_id=r.record_id ");
  71. sql.append(" where substr(mr.rpt_month,1,4)=? ");
  72. return dao.queryForListPojo(sql.toString(), MonitorRemainOil.class, year);
  73. }
  74. /**
  75. * 综合分析-万元占比报表新指标2022.7.18
  76. * @param startMonth
  77. * @param endMonth
  78. * @return
  79. */
  80. public CarConsumeMulRptVO carOilMonthSum(String startMonth,String endMonth){
  81. StringBuilder sql=new StringBuilder();
  82. sql.append("select sum(check_mile) check_mile,sum(case when r.oil_type='柴油' then ifnull(travel_mile,0) else 0 end) coil_travel_mile,");
  83. sql.append("sum(case when r.oil_type='汽油' then ifnull(travel_mile,0) else 0 end) oil_travel_mile,");
  84. sql.append("sum(ifnull(oil_erp,0)+ifnull(oil_kl,0)) oil_us_liter,");
  85. sql.append("sum(ifnull(coil_erp,0)+ifnull(coil_kl,0)) coil_us_liter,");
  86. sql.append("sum(ifnull(work_cost,0)) work_us_liter,sum(ifnull(engine_cost,0)) engine_us_liter");
  87. sql.append(" from t_car_consume s");
  88. sql.append(" inner join t_car c on s.car_id=c.car_id");
  89. sql.append(" inner join t_quota_rule r on c.quota_rule_id=r.record_id");
  90. sql.append(" where DATE_FORMAT(s.rpt_date,'%Y-%m') between ? and ? ");
  91. return dao.queryForObject(sql.toString(), CarConsumeMulRptVO.class,startMonth,endMonth);
  92. }
  93. /**
  94. * 综合分析-用能用水按月统计新指标2022.7.18
  95. * @param year
  96. * @return
  97. */
  98. public List<CarConsumeMulRptVO> carOilMulRptMonthGrp(String year){
  99. StringBuilder sql=new StringBuilder();
  100. sql.append("select DATE_FORMAT(s.rpt_date,'%Y-%m') rpt_month,sum(case when r.oil_type='柴油' then ifnull(travel_mile,0) else 0 end) coil_travel_mile,");
  101. sql.append("sum(case when r.oil_type='汽油' then ifnull(travel_mile,0) else 0 end) oil_travel_mile,");
  102. sql.append("sum(ifnull(oil_erp,0)+ifnull(oil_kl,0)) oil_us_liter,");
  103. sql.append("sum(ifnull(coil_erp,0)+ifnull(coil_kl,0)) coil_us_liter,");
  104. sql.append("sum(ifnull(work_cost,0)) work_us_liter,sum(ifnull(engine_cost,0)) engine_us_liter,sum(engine_cost_kg)/1000 engine_cost_ton");
  105. sql.append(" from t_car_consume s");
  106. sql.append(" inner join t_car c on s.car_id=c.car_id");
  107. sql.append(" inner join t_quota_rule r on c.quota_rule_id=r.record_id");
  108. sql.append(" where DATE_FORMAT(s.rpt_date,'%Y') = ? ");
  109. sql.append(" group by DATE_FORMAT(s.rpt_date,'%Y-%m')");
  110. return dao.queryForListPojo(sql.toString(), CarConsumeMulRptVO.class,year);
  111. }
  112. /**
  113. * 油能源统计
  114. * @param rptYear
  115. * @return
  116. */
  117. public List<CarConsume> carOilSumRpt(String rptYear){
  118. List<Object> params=new ArrayList<Object>();
  119. StringBuilder sql=new StringBuilder();
  120. sql.append("select max(s.rpt_date) rpt_date,sum(oil_real_cost)/1000 oil_real_cost,sum(coil_real_cost)/1000 coil_real_cost,sum(oil_coal)oil_coal, sum(coil_coal) coil_coal, ");
  121. sql.append(" sum(engine_cost_kg)/1000 engine_cost_kg,sum(oil_kl_money)/10000 oil_kl_money,sum(coil_kl_money)/10000 coil_kl_money");
  122. sql.append(" from t_car_consume s ");
  123. sql.append(" where DATE_FORMAT(s.rpt_date,'%Y') = ? ");
  124. sql.append(" group by DATE_FORMAT(s.rpt_date,'%Y-%m')");
  125. params.add(rptYear);
  126. return dao.queryForListPojo(sql.toString(),CarConsume.class,params.toArray());
  127. }
  128. /**
  129. * 按年查询按月分组,物资ERP数据
  130. * @param year
  131. * @return
  132. */
  133. public List<ERP> erpMonthGrp(String year){
  134. StringBuilder sql=new StringBuilder();
  135. sql.append("select max(rpt_month) rpt_month,sum(oil_count) oil_count,sum(oil_money) oil_money,sum(coil_count) coil_count,sum(coil_money) coil_money,");
  136. sql.append("sum(oil_count_correct) oil_count_correct,sum(oil_money_correct) oil_money_correct,");
  137. sql.append("sum(coil_count_correct) coil_count_correct,sum(coil_money_correct) coil_money_correct,");
  138. sql.append("sum(oil_coal) oil_coal,sum(coil_coal) coil_coal,sum(oil_correct_coal) oil_correct_coal,sum(coil_correct_coal) coil_correct_coal,");
  139. sql.append("sum(oil_sum_coal) oil_sum_coal,sum(coil_sum_coal) coil_sum_coal,");
  140. sql.append("sum(oil_count_sum) oil_count_sum,sum(coil_count_sum) coil_count_sum,sum(oil_money_sum) oil_money_sum,sum(coil_money_sum) coil_money_sum ");
  141. sql.append(" from t_material_erp");
  142. sql.append(" where DATE_FORMAT(rpt_month,'%Y') = ? ");
  143. sql.append(" group by DATE_FORMAT(rpt_month,'%Y-%m')");
  144. return dao.queryForListPojo(sql.toString(), ERP.class,year);
  145. }
  146. /**
  147. * 多月累计物资ERP数据
  148. * @param startMonth
  149. * @param endMonth
  150. * @return
  151. */
  152. public ERP erpMonthSum(String startMonth,String endMonth){
  153. StringBuilder sql=new StringBuilder();
  154. sql.append("select max(rpt_month) rpt_month,sum(oil_count) oil_count,sum(oil_money) oil_money,sum(coil_count) coil_count,sum(coil_money) coil_money,");
  155. sql.append("sum(oil_count_correct) oil_count_correct,sum(oil_money_correct) oil_money_correct,");
  156. sql.append("sum(coil_count_correct) coil_count_correct,sum(coil_money_correct) coil_money_correct,");
  157. sql.append("sum(oil_coal) oil_coal,sum(coil_coal) coil_coal,sum(oil_correct_coal) oil_correct_coal,sum(coil_correct_coal) coil_correct_coal,");
  158. sql.append("sum(oil_sum_coal) oil_sum_coal,sum(coil_sum_coal) coil_sum_coal,");
  159. sql.append("sum(oil_count_sum) oil_count_sum,sum(coil_count_sum) coil_count_sum,sum(oil_money_sum) oil_money_sum,sum(coil_money_sum) coil_money_sum ");
  160. sql.append(" from t_material_erp");
  161. sql.append(" where DATE_FORMAT(rpt_month,'%Y-%m') between ? and ? ");
  162. return dao.queryForObject(sql.toString(), ERP.class,startMonth,endMonth);
  163. }
  164. /**
  165. * 油能源统计-根据要求从t_other_consume取(各项目部录入月累计消耗数据),不再通过车辆累加2020.9.15
  166. * @param rptYear
  167. * @return
  168. */
  169. public List<OtherConsume> otherMonthGrp(String rptYear){
  170. List<Object> params=new ArrayList<Object>();
  171. StringBuilder sql=new StringBuilder();
  172. sql.append("select max(s.rpt_month) rpt_month,");
  173. sql.append(" sum(oil_count_kg)/1000 oil_count_kg,sum(coil_count_kg)/1000 coil_count_kg,");
  174. sql.append(" sum(oil_erp_count_kg)/1000 oil_erp_count_kg,sum(coil_erp_count_kg)/1000 coil_erp_count_kg,");
  175. sql.append(" sum(oil_kl_count_kg)/1000 oil_kl_count_kg,sum(coil_kl_count_kg)/1000 coil_kl_count_kg,");
  176. sql.append(" sum(oil_kl_coal) oil_kl_coal,sum(coil_kl_coal) coil_kl_coal,");
  177. sql.append(" sum(oil_kl_money)/10000 oil_kl_money,sum(coil_kl_money)/10000 coil_kl_money");
  178. sql.append(" from t_other_consume s ");
  179. sql.append(" where DATE_FORMAT(s.rpt_month,'%Y') = ? ");
  180. sql.append(" group by DATE_FORMAT(s.rpt_month,'%Y-%m')");
  181. params.add(rptYear);
  182. return dao.queryForListPojo(sql.toString(),OtherConsume.class,params.toArray());
  183. }
  184. /**
  185. * 多月累计各项目部上报油耗数据
  186. * @param startMonth
  187. * @param endMonth
  188. * @return
  189. */
  190. public OtherConsume otherMonthSum(String startMonth,String endMonth){
  191. StringBuilder sql=new StringBuilder();
  192. sql.append("select max(s.rpt_month) rpt_month,");
  193. sql.append(" sum(oil_count_kg)/1000 oil_count_kg,sum(coil_count_kg)/1000 coil_count_kg,");
  194. sql.append(" sum(oil_erp_count_kg)/1000 oil_erp_count_kg,sum(coil_erp_count_kg)/1000 coil_erp_count_kg,");
  195. sql.append(" sum(oil_kl_count_kg)/1000 oil_kl_count_kg,sum(coil_kl_count_kg)/1000 coil_kl_count_kg,");
  196. sql.append(" sum(oil_kl_coal) oil_kl_coal,sum(coil_kl_coal) coil_kl_coal,");
  197. sql.append(" sum(oil_kl_money)/10000 oil_kl_money,sum(coil_kl_money)/10000 coil_kl_money");
  198. sql.append(" from t_other_consume s ");
  199. sql.append(" where DATE_FORMAT(s.rpt_month,'%Y-%m') between ? and ? ");
  200. return dao.queryForObject(sql.toString(),OtherConsume.class,startMonth,endMonth);
  201. }
  202. /**
  203. * 水电气能耗-按年查询按月分组
  204. * @param rptYear
  205. * @return
  206. */
  207. public List<Wpg> wpgSumRpt(String rptYear){
  208. StringBuilder sql=new StringBuilder();
  209. sql.append("SELECT max(rpt_month) rpt_month,sum(water_count)/10000 water_count,sum(water_cost)/10000 water_cost, ");
  210. sql.append(" sum(power_count)/10000 power_count,sum(power_cost)/10000 power_cost, ");
  211. sql.append(" sum(ngas_count)/10000 ngas_count,sum(ngas_cost)/10000 ngas_cost, ");
  212. sql.append(" sum(lgas_count)/1000 lgas_count,sum(lgas_cost)/10000 lgas_cost,sum(power_coal) power_coal, sum(lgas_coal) lgas_coal,sum(ngas_coal) ngas_coal");
  213. sql.append(" FROM t_wpg_account w where DATE_FORMAT(rpt_month,'%Y') = ? ");
  214. sql.append(" group by DATE_FORMAT(rpt_month,'%Y-%m') ");
  215. return dao.queryForListPojo(sql.toString(),Wpg.class,rptYear);
  216. }
  217. /**
  218. * 多月累计水电气能耗
  219. * @param startMonth
  220. * @param endMonth
  221. * @return
  222. */
  223. public Wpg wpgMonthSum(String startMonth,String endMonth){
  224. StringBuilder sql=new StringBuilder();
  225. sql.append("SELECT max(rpt_month) rpt_month,sum(water_count)/10000 water_count,sum(water_cost)/10000 water_cost, ");
  226. sql.append(" sum(power_count)/10000 power_count,sum(power_cost)/10000 power_cost, ");
  227. sql.append(" sum(ngas_count)/10000 ngas_count,sum(ngas_cost)/10000 ngas_cost, ");
  228. sql.append(" sum(lgas_count)/1000 lgas_count,sum(lgas_cost)/10000 lgas_cost,sum(power_coal) power_coal, sum(lgas_coal) lgas_coal,sum(ngas_coal) ngas_coal");
  229. sql.append(" FROM t_wpg_account w where DATE_FORMAT(rpt_month,'%Y-%m') between ? and ? ");
  230. return dao.queryForObject(sql.toString(),Wpg.class,startMonth,endMonth);
  231. }
  232. /**
  233. * 水电气按年查询,按月分组
  234. * @param rptYear
  235. * @return
  236. */
  237. public List<WpgCorrect> wpgCorrectSumRpt(String rptYear){
  238. StringBuilder sql=new StringBuilder();
  239. sql.append("select max(rpt_month) rpt_month,sum(water_count_correct) water_count_correct,sum(water_cost_correct) water_cost_correct,sum(power_count_correct) power_count_correct,sum(power_cost_correct) power_cost_correct,");
  240. sql.append("sum(ngas_count_correct) ngas_count_correct,sum(ngas_cost_correct) ngas_cost_correct,sum(lgas_count_correct) lgas_count_correct,sum(lgas_cost_correct) lgas_cost_correct,");
  241. sql.append("sum(power_correct_coal) power_correct_coal,sum(ngas_correct_coal) ngas_correct_coal,sum(lgas_correct_coal) lgas_correct_coal");
  242. sql.append(" from t_wpg_correct where DATE_FORMAT(rpt_month,'%Y') = ?");
  243. sql.append(" group by DATE_FORMAT(rpt_month,'%Y-%m') ");
  244. return dao.queryForListPojo(sql.toString(),WpgCorrect.class,rptYear);
  245. }
  246. /**
  247. * 多月累计水电气修正值
  248. * @param startMonth
  249. * @param endMonth
  250. * @return
  251. */
  252. public WpgCorrect wpgCorrectMonthSum(String startMonth,String endMonth){
  253. StringBuilder sql=new StringBuilder();
  254. sql.append("select max(rpt_month) rpt_month,sum(water_count_correct) water_count_correct,sum(water_cost_correct) water_cost_correct,sum(power_count_correct) power_count_correct,sum(power_cost_correct) power_cost_correct,");
  255. sql.append("sum(ngas_count_correct) ngas_count_correct,sum(ngas_cost_correct) ngas_cost_correct,sum(lgas_count_correct) lgas_count_correct,sum(lgas_cost_correct) lgas_cost_correct,");
  256. sql.append("sum(power_correct_coal) power_correct_coal,sum(ngas_correct_coal) ngas_correct_coal,sum(lgas_correct_coal) lgas_correct_coal");
  257. sql.append(" from t_wpg_correct where DATE_FORMAT(rpt_month,'%Y-%m') between ? and ? ");
  258. return dao.queryForObject(sql.toString(),WpgCorrect.class,startMonth,endMonth);
  259. }
  260. /**
  261. * 工作量,产值统计---按年查询按月分组
  262. * @param rptYear
  263. * @return
  264. */
  265. public List<Workload> workloadSumRpt(String rptYear){
  266. List<Object> params=new ArrayList<Object>();
  267. StringBuilder sql=new StringBuilder();
  268. sql.append("SELECT max(rpt_month) rpt_month,sum(well_count) well_count, ");
  269. sql.append(" sum(industry_value) industry_value,sum(added_value) added_value ");
  270. sql.append(" FROM t_workload_value w ");
  271. sql.append(" where DATE_FORMAT(rpt_month,'%Y') = ? ");
  272. sql.append(" group by DATE_FORMAT(rpt_month,'%Y-%m') ");
  273. params.add(rptYear);
  274. return dao.queryForListPojo(sql.toString(),Workload.class,params.toArray());
  275. }
  276. /**
  277. * 工作量,产值统计---按跨月查询按月分组
  278. * @param startMonth
  279. * @param endMonth
  280. * @return
  281. */
  282. public List<Workload> workloadSumRpt(String startMonth,String endMonth){
  283. StringBuilder sql=new StringBuilder();
  284. sql.append("SELECT max(rpt_month) rpt_month,sum(well_count) well_count, ");
  285. sql.append(" sum(industry_value) industry_value,sum(added_value) added_value ");
  286. sql.append(" FROM t_workload_value w ");
  287. sql.append(" where DATE_FORMAT(rpt_month,'%Y-%m') between ? and ? ");
  288. sql.append(" group by DATE_FORMAT(rpt_month,'%Y-%m') ");
  289. return dao.queryForListPojo(sql.toString(),Workload.class,startMonth,endMonth);
  290. }
  291. /**
  292. * 工作量,产值统计---多月累计
  293. * @param rptYear
  294. * @return
  295. */
  296. public Workload workloadMonthSum(String startMonth,String endMonth){
  297. StringBuilder sql=new StringBuilder();
  298. sql.append("SELECT sum(well_count) well_count,sum(builder_area) builder_area,");
  299. sql.append(" sum(industry_value) industry_value,sum(added_value) added_value ");
  300. sql.append(" FROM t_workload_value w ");
  301. sql.append(" where DATE_FORMAT(rpt_month,'%Y-%m') between ? and ? ");
  302. return dao.queryForObject(sql.toString(),Workload.class,startMonth,endMonth);
  303. }
  304. }