EnergyDataServiceImpl.java 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. package com.huimv.admin.service.impl;
  2. import cn.hutool.core.date.DateTime;
  3. import cn.hutool.core.date.DateUtil;
  4. import cn.hutool.core.lang.Pair;
  5. import cn.hutool.core.util.ObjectUtil;
  6. import cn.hutool.http.HttpRequest;
  7. import com.alibaba.fastjson.JSON;
  8. import com.alibaba.fastjson.JSONArray;
  9. import com.alibaba.fastjson.JSONException;
  10. import com.alibaba.fastjson.JSONObject;
  11. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  12. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  13. import com.huimv.admin.common.token.TokenSign;
  14. import com.huimv.admin.common.utils.DataUill;
  15. import com.huimv.admin.common.utils.Result;
  16. import com.huimv.admin.common.utils.ResultCode;
  17. import com.huimv.admin.entity.*;
  18. import com.huimv.admin.entity.dto.ListRankVo;
  19. import com.huimv.admin.entity.vo.*;
  20. import com.huimv.admin.mapper.*;
  21. import com.huimv.admin.service.IEnergyDataService;
  22. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import javax.servlet.http.HttpServletRequest;
  26. import java.text.DecimalFormat;
  27. import java.text.ParseException;
  28. import java.text.SimpleDateFormat;
  29. import java.util.*;
  30. /**
  31. * <p>
  32. * 耗能数据 服务实现类
  33. * </p>
  34. *
  35. * @author author
  36. * @since 2023-02-14
  37. */
  38. @Service
  39. public class EnergyDataServiceImpl extends ServiceImpl<EnergyDataMapper, EnergyData> implements IEnergyDataService {
  40. @Autowired
  41. private EnergyDataMapper dataMapper;
  42. @Autowired
  43. private BasePigpenMapper basePigpenMapper;
  44. @Autowired
  45. private EnergyWarningInfoMapper warningInfoMapper;
  46. @Autowired
  47. private EnergyEnvDeviceMapper envDeviceMapper;
  48. @Autowired
  49. private EnergyScreenMapper screenMapper;
  50. @Autowired
  51. private BaseFarmMapper farmMapper;
  52. @Override
  53. public Result listCount(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  54. String farmId = paramsMap.get("farmId");
  55. String waterDisplayType = paramsMap.get("waterDisplayType");
  56. String electricityDisplayType = paramsMap.get("electricityDisplayType");
  57. String feedDisplayType = paramsMap.get("feedDisplayType");
  58. String gasDisplayType = paramsMap.get("gasDisplayType");
  59. QueryWrapper<EnergyData> waterqueryWrapper = new QueryWrapper<>();
  60. QueryWrapper<EnergyData> electricityqueryWrapper = new QueryWrapper<>();
  61. QueryWrapper<EnergyData> feedqueryWrapper = new QueryWrapper<>();
  62. QueryWrapper<EnergyData> gasqueryWrapper = new QueryWrapper<>();
  63. if (ObjectUtil.isNotEmpty(waterDisplayType)) {
  64. waterqueryWrapper.eq("display_type", waterDisplayType);
  65. }
  66. if (ObjectUtil.isNotEmpty(electricityDisplayType)) {
  67. electricityqueryWrapper.eq("display_type", electricityDisplayType);
  68. }
  69. if (ObjectUtil.isNotEmpty(feedDisplayType)) {
  70. feedqueryWrapper.eq("display_type", feedDisplayType);
  71. }
  72. if (ObjectUtil.isNotEmpty(gasDisplayType)) {
  73. gasqueryWrapper.eq("display_type", gasDisplayType);
  74. }
  75. Date monthmorning = DataUill.getTimesMonthmorning();
  76. waterqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
  77. electricityqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
  78. feedqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
  79. gasqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
  80. EnergyDataVo energyDataVo = dataMapper.listWaterCount(waterqueryWrapper);
  81. energyDataVo.setGasValue(dataMapper.listGasCount(gasqueryWrapper));
  82. energyDataVo.setFeedValue(dataMapper.listFeedCount(feedqueryWrapper));
  83. energyDataVo.setElectricityValue(dataMapper.listElectricityCount(electricityqueryWrapper));
  84. QueryWrapper<EnergyWarningInfo> queryWrapper1 = new QueryWrapper<>();
  85. queryWrapper1.eq("farm_id", farmId);
  86. Integer count = warningInfoMapper.selectCount(queryWrapper1);
  87. // Float f = 0.00f;
  88. // f = (Float.parseFloat(energyDataVo.getElectricityValue()) +
  89. // Float.parseFloat(energyDataVo.getFeedValue()) +
  90. // Float.parseFloat(energyDataVo.getGasValue()) + Float.parseFloat(energyDataVo.getWaterValue()));
  91. // DecimalFormat df1 = new DecimalFormat("#.00");
  92. energyDataVo.setCount(count);
  93. return new Result(ResultCode.SUCCESS, energyDataVo);
  94. }
  95. @Override
  96. public Result listData(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  97. String farmId = paramsMap.get("farmId");
  98. String dataType = paramsMap.get("dataType");
  99. String displayType = paramsMap.get("displayType");
  100. String timeType = paramsMap.get("timeType");
  101. String startTime = paramsMap.get("startTime");
  102. String endTime = paramsMap.get("endTime");
  103. if (dataType == null || dataType == "") {
  104. dataType = "1";
  105. }
  106. if (timeType == null || timeType == "") {
  107. timeType = "3";
  108. }
  109. QueryWrapper<EnergyData> dataQueryWrapper = new QueryWrapper<>();
  110. dataQueryWrapper.eq("farm_id", farmId);
  111. if (ObjectUtil.isNotEmpty(displayType)) {
  112. dataQueryWrapper.eq("display_type", displayType);
  113. }
  114. //用水
  115. if ("1".equals(dataType)) {
  116. dataQueryWrapper.isNotNull("water_value");
  117. //自定义
  118. if ("4".equals(timeType)) {
  119. startTime = startTime + " 00:00:00";
  120. endTime = endTime + " 23:59:59";
  121. dataQueryWrapper.between("create_date", startTime, endTime);
  122. return new Result(ResultCode.SUCCESS, dataMapper.listDayWater(dataQueryWrapper));
  123. }
  124. //全年
  125. if ("3".equals(timeType)) {
  126. DateTime dateTime = DateUtil.beginOfYear(new Date());
  127. dataQueryWrapper.ge("create_date", dateTime);
  128. List<EnergyAllDataVo> energyWaterDataVos = dataMapper.listYearWater(dataQueryWrapper);
  129. return new Result(ResultCode.SUCCESS, energyWaterDataVos);
  130. }
  131. //本月
  132. if ("2".equals(timeType)) {
  133. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  134. dataQueryWrapper.ge("create_date", timesMonthmorning);
  135. return new Result(ResultCode.SUCCESS, dataMapper.listDayWater(dataQueryWrapper));
  136. }
  137. //本周
  138. if ("1".equals(timeType)) {
  139. Calendar calendar = Calendar.getInstance();
  140. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  141. dataQueryWrapper.ge("create_date", calendar.getTime());
  142. List<EnergyAllDataVo> energyWaterDataVos = dataMapper.listDayWater(dataQueryWrapper);
  143. return new Result(ResultCode.SUCCESS, energyWaterDataVos);
  144. }
  145. }
  146. //用电
  147. else if ("2".equals(dataType)) {
  148. dataQueryWrapper.isNotNull("electricity_value");
  149. //自定义
  150. if ("4".equals(timeType)) {
  151. startTime = startTime + " 00:00:00";
  152. endTime = endTime + " 23:59:59";
  153. dataQueryWrapper.between("create_date", startTime, endTime);
  154. return new Result(ResultCode.SUCCESS, dataMapper.listDayElectricity(dataQueryWrapper));
  155. }
  156. //全年
  157. if ("3".equals(timeType)) {
  158. DateTime dateTime = DateUtil.beginOfYear(new Date());
  159. dataQueryWrapper.ge("create_date", dateTime);
  160. List<EnergyAllDataVo> energyElectricityDataVos = dataMapper.listYearElectricity(dataQueryWrapper);
  161. return new Result(ResultCode.SUCCESS, energyElectricityDataVos);
  162. }
  163. //本月
  164. if ("2".equals(timeType)) {
  165. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  166. dataQueryWrapper.ge("create_date", timesMonthmorning);
  167. return new Result(ResultCode.SUCCESS, dataMapper.listDayElectricity(dataQueryWrapper));
  168. }
  169. //本周
  170. if ("1".equals(timeType)) {
  171. Calendar calendar = Calendar.getInstance();
  172. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  173. dataQueryWrapper.ge("create_date", calendar.getTime());
  174. List<EnergyAllDataVo> energyElectricityDataVos = dataMapper.listDayElectricity(dataQueryWrapper);
  175. return new Result(ResultCode.SUCCESS, energyElectricityDataVos);
  176. }
  177. }
  178. //饲料
  179. else if ("3".equals(dataType)) {
  180. dataQueryWrapper.isNotNull("feed_value");
  181. //自定义
  182. if ("4".equals(timeType)) {
  183. startTime = startTime + " 00:00:00";
  184. endTime = endTime + " 23:59:59";
  185. dataQueryWrapper.between("create_date", startTime, endTime);
  186. return new Result(ResultCode.SUCCESS, dataMapper.listDayFeed(dataQueryWrapper));
  187. }
  188. //全年
  189. if ("3".equals(timeType)) {
  190. DateTime dateTime = DateUtil.beginOfYear(new Date());
  191. dataQueryWrapper.ge("create_date", dateTime);
  192. List<EnergyAllDataVo> energyFeedDataVos = dataMapper.listYearFeed(dataQueryWrapper);
  193. return new Result(ResultCode.SUCCESS, energyFeedDataVos);
  194. }
  195. //本月
  196. if ("2".equals(timeType)) {
  197. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  198. dataQueryWrapper.ge("create_date", timesMonthmorning);
  199. return new Result(ResultCode.SUCCESS, dataMapper.listDayFeed(dataQueryWrapper));
  200. }
  201. //本周
  202. if ("1".equals(timeType)) {
  203. Calendar calendar = Calendar.getInstance();
  204. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  205. dataQueryWrapper.ge("create_date", calendar.getTime());
  206. List<EnergyAllDataVo> energyFeedDataVos = dataMapper.listDayFeed(dataQueryWrapper);
  207. return new Result(ResultCode.SUCCESS, energyFeedDataVos);
  208. }
  209. }
  210. //天然气
  211. else if ("4".equals(dataType)) {
  212. dataQueryWrapper.isNotNull("gas_value");
  213. //自定义
  214. if ("4".equals(timeType)) {
  215. startTime = startTime + " 00:00:00";
  216. endTime = endTime + " 23:59:59";
  217. dataQueryWrapper.between("create_date", startTime, endTime);
  218. return new Result(ResultCode.SUCCESS, dataMapper.listDayGas(dataQueryWrapper));
  219. }
  220. //全年
  221. if ("3".equals(timeType)) {
  222. DateTime dateTime = DateUtil.beginOfYear(new Date());
  223. dataQueryWrapper.ge("create_date", dateTime);
  224. List<EnergyAllDataVo> energyGasDataVos = dataMapper.listYearGas(dataQueryWrapper);
  225. return new Result(ResultCode.SUCCESS, energyGasDataVos);
  226. }
  227. //本月
  228. if ("2".equals(timeType)) {
  229. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  230. dataQueryWrapper.ge("create_date", timesMonthmorning);
  231. return new Result(ResultCode.SUCCESS, dataMapper.listDayGas(dataQueryWrapper));
  232. }
  233. //本周
  234. if ("1".equals(timeType)) {
  235. Calendar calendar = Calendar.getInstance();
  236. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  237. dataQueryWrapper.ge("create_date", calendar.getTime());
  238. List<EnergyAllDataVo> energyGasDataVos = dataMapper.listDayGas(dataQueryWrapper);
  239. return new Result(ResultCode.SUCCESS, energyGasDataVos);
  240. }
  241. }
  242. return new Result(ResultCode.SUCCESS);
  243. }
  244. @Override
  245. public Result listRank(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  246. String farmId = paramsMap.get("farmId");
  247. String displayType = paramsMap.get("displayType");
  248. String dataType = paramsMap.get("dataType");
  249. String timeType = paramsMap.get("timeType");
  250. String startTime = paramsMap.get("startTime");
  251. String endTime = paramsMap.get("endTime");
  252. if (dataType == null || dataType == "") {
  253. dataType = "1";
  254. }
  255. if (timeType == null || timeType == "") {
  256. timeType = "3";
  257. }
  258. JSONArray jsonArray = new JSONArray();
  259. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  260. queryWrapper.eq("farm_id", farmId).eq("f_type", 2).eq("other3", 1);
  261. List<BasePigpen> pigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的楼层
  262. for (BasePigpen pigpen : pigpens) {
  263. Float value = 0.00f;
  264. JSONObject jsonObject = new JSONObject();
  265. QueryWrapper<BasePigpen> queryWrapper1 = new QueryWrapper<>();
  266. queryWrapper1.like("other2", pigpen.getId()).eq("farm_id", farmId).ne("id", pigpen.getId());
  267. List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
  268. List<Integer> idList = new ArrayList<>();
  269. basePigpens1.forEach(item -> {
  270. idList.add(item.getId());
  271. });//某一层所有单元的id
  272. QueryWrapper<EnergyData> waterWrapper = new QueryWrapper<>();
  273. QueryWrapper<EnergyData> gasWrapper = new QueryWrapper<>();
  274. QueryWrapper<EnergyData> electricityWrapper = new QueryWrapper<>();
  275. QueryWrapper<EnergyData> feedWrapper = new QueryWrapper<>();
  276. if (idList.size() != 0) {
  277. waterWrapper.eq("farm_id", farmId).in("unit_id", idList);
  278. gasWrapper.eq("farm_id", farmId).in("unit_id", idList);
  279. electricityWrapper.eq("farm_id", farmId).in("unit_id", idList);
  280. feedWrapper.eq("farm_id", farmId).in("unit_id", idList);
  281. if ("4".equals(timeType)) {
  282. //自定义
  283. startTime = startTime + " 00:00:00";
  284. endTime = endTime + " 23:59:59";
  285. waterWrapper.between("create_date", startTime, endTime);
  286. gasWrapper.between("create_date", startTime, endTime);
  287. electricityWrapper.between("create_date", startTime, endTime);
  288. feedWrapper.between("create_date", startTime, endTime);
  289. } else if ("3".equals(timeType)) {
  290. //本年
  291. DateTime dateTime = DateUtil.beginOfYear(new Date());
  292. waterWrapper.ge("create_date", dateTime);
  293. gasWrapper.ge("create_date", dateTime);
  294. electricityWrapper.ge("create_date", dateTime);
  295. feedWrapper.ge("create_date", dateTime);
  296. } else if ("2".equals(timeType)) {
  297. //本月
  298. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  299. waterWrapper.ge("create_date", timesMonthmorning);
  300. gasWrapper.ge("create_date", timesMonthmorning);
  301. electricityWrapper.ge("create_date", timesMonthmorning);
  302. feedWrapper.ge("create_date", timesMonthmorning);
  303. } else if ("1".equals(timeType)) {
  304. //本周
  305. Calendar calendar = Calendar.getInstance();
  306. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  307. waterWrapper.ge("create_date", calendar.getTime());
  308. gasWrapper.ge("create_date", calendar.getTime());
  309. electricityWrapper.ge("create_date", calendar.getTime());
  310. feedWrapper.ge("create_date", calendar.getTime());
  311. }
  312. if (ObjectUtil.isNotEmpty(displayType)) {
  313. waterWrapper.eq("display_type", displayType);
  314. }
  315. if (ObjectUtil.isNotEmpty(displayType)) {
  316. gasWrapper.eq("display_type", displayType);
  317. }
  318. if (ObjectUtil.isNotEmpty(displayType)) {
  319. electricityWrapper.eq("display_type", displayType);
  320. }
  321. if (ObjectUtil.isNotEmpty(displayType)) {
  322. feedWrapper.eq("display_type", displayType);
  323. }
  324. waterWrapper.select(" IFNULL(SUM(water_value),0) waterValue ");
  325. gasWrapper.select(" IFNULL(SUM(gas_value),0) gasValue ");
  326. electricityWrapper.select(" IFNULL(SUM(electricity_value),0) electricityValue ");
  327. feedWrapper.select(" IFNULL(SUM(feed_value),0) feedValue ");
  328. if ("1".equals(dataType)) {
  329. value = Float.parseFloat(dataMapper.selectOne(waterWrapper).getWaterValue());
  330. jsonObject.put("value", value);
  331. }
  332. if ("2".equals(dataType)) {
  333. value = Float.parseFloat(dataMapper.selectOne(electricityWrapper).getElectricityValue());
  334. jsonObject.put("value", value);
  335. }
  336. if ("3".equals(dataType)) {
  337. value = Float.parseFloat(dataMapper.selectOne(feedWrapper).getFeedValue());
  338. jsonObject.put("value", value);
  339. }
  340. if ("4".equals(dataType)) {
  341. value = Float.parseFloat(dataMapper.selectOne(gasWrapper).getGasValue());
  342. jsonObject.put("value", value);
  343. }
  344. } else {
  345. jsonObject.put("value", 0);
  346. }
  347. jsonObject.put("buildName", pigpen.getBuildName());
  348. jsonArray.add(jsonObject);
  349. }
  350. JSONArray arraySort = jsonArraySort(jsonArray, "value", true);
  351. return new Result(ResultCode.SUCCESS, arraySort);
  352. }
  353. @Override
  354. public Result listDataScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  355. String farmId = paramsMap.get("farmId");
  356. String waterDisplayType = paramsMap.get("waterDisplayType");
  357. String electricityDisplayType = paramsMap.get("electricityDisplayType");
  358. String feedDisplayType = paramsMap.get("feedDisplayType");
  359. String gasDisplayType = paramsMap.get("gasDisplayType");
  360. QueryWrapper<EnergyData> queryWrapper1 = new QueryWrapper<>();
  361. queryWrapper1.eq("farm_id", farmId);
  362. if (ObjectUtil.isNotEmpty(gasDisplayType)) {
  363. queryWrapper1.eq("display_type", gasDisplayType);
  364. }
  365. QueryWrapper<EnergyData> queryWrapper2 = new QueryWrapper<>();
  366. queryWrapper2.eq("farm_id", farmId);
  367. if (ObjectUtil.isNotEmpty(feedDisplayType)) {
  368. queryWrapper2.eq("display_type", feedDisplayType);
  369. }
  370. QueryWrapper<EnergyData> queryWrapper3 = new QueryWrapper<>();
  371. queryWrapper3.eq("farm_id", farmId);
  372. if (ObjectUtil.isNotEmpty(waterDisplayType)) {
  373. queryWrapper3.eq("display_type", waterDisplayType);
  374. }
  375. QueryWrapper<EnergyData> queryWrapper4 = new QueryWrapper<>();
  376. queryWrapper4.eq("farm_id", farmId);
  377. if (ObjectUtil.isNotEmpty(electricityDisplayType)) {
  378. queryWrapper4.eq("display_type", electricityDisplayType);
  379. }
  380. List<EnergyAllDataVo> energyGasDataVos = dataMapper.listDayGas(queryWrapper1.isNotNull("gas_value"));
  381. List<EnergyAllDataVo> energyFeedDataVos = dataMapper.listDayFeed(queryWrapper2.isNotNull("feed_value"));
  382. List<EnergyAllDataVo> energyWaterDataVos = dataMapper.listDayWater(queryWrapper3.isNotNull("water_value"));
  383. List<EnergyAllDataVo> energyElectricityDataVos = dataMapper.listDayElectricity(queryWrapper4.isNotNull("electricity_value"));
  384. Collections.reverse(energyGasDataVos);
  385. Collections.reverse(energyFeedDataVos);
  386. Collections.reverse(energyWaterDataVos);
  387. Collections.reverse(energyElectricityDataVos);
  388. JSONObject jsonObject = new JSONObject();
  389. jsonObject.put("gas", energyGasDataVos);
  390. jsonObject.put("water", energyWaterDataVos);
  391. jsonObject.put("energyElectricity", energyElectricityDataVos);
  392. if (energyFeedDataVos.size() != 0) {
  393. for (EnergyAllDataVo energyFeedDataVo : energyFeedDataVos) {
  394. Double feed = Double.valueOf(energyFeedDataVo.getValue());
  395. DecimalFormat def = new DecimalFormat("0.00");
  396. energyFeedDataVo.setValue(def.format(feed / 1000));
  397. }
  398. }
  399. jsonObject.put("feed", energyFeedDataVos);
  400. return new Result(ResultCode.SUCCESS, jsonObject);
  401. }
  402. @Override
  403. public Result listRankScreen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  404. String farmId = paramsMap.get("farmId");
  405. String dataType = paramsMap.get("dataType");
  406. String waterDisplayType = paramsMap.get("waterDisplayType");
  407. String electricityDisplayType = paramsMap.get("electricityDisplayType");
  408. String feedDisplayType = paramsMap.get("feedDisplayType");
  409. String gasDisplayType = paramsMap.get("gasDisplayType");
  410. if (dataType == null || dataType == "") {
  411. dataType = "1";
  412. }
  413. JSONArray jsonArray = new JSONArray();
  414. QueryWrapper<EnergyData> waterWrapper = new QueryWrapper<>();
  415. QueryWrapper<EnergyData> gasWrapper = new QueryWrapper<>();
  416. QueryWrapper<EnergyData> electricityWrapper = new QueryWrapper<>();
  417. QueryWrapper<EnergyData> feedWrapper = new QueryWrapper<>();
  418. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  419. waterWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
  420. gasWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
  421. feedWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
  422. electricityWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
  423. if (ObjectUtil.isNotEmpty(waterDisplayType)) {
  424. waterWrapper.eq("display_type", waterDisplayType);
  425. }
  426. if (ObjectUtil.isNotEmpty(gasDisplayType)) {
  427. gasWrapper.eq("display_type", gasDisplayType);
  428. }
  429. if (ObjectUtil.isNotEmpty(electricityDisplayType)) {
  430. electricityWrapper.eq("display_type", electricityDisplayType);
  431. }
  432. if (ObjectUtil.isNotEmpty(feedDisplayType)) {
  433. feedWrapper.eq("display_type", feedDisplayType);
  434. }
  435. List<ListRankVo> lists = new ArrayList<>();
  436. if ("1".equals(dataType)) {
  437. lists = dataMapper.listRankWater(waterWrapper);
  438. }
  439. if ("2".equals(dataType)) {
  440. lists = dataMapper.listRankElectricity(waterWrapper);
  441. }
  442. if ("3".equals(dataType)) {
  443. lists = dataMapper.listRankFeed(waterWrapper);
  444. }
  445. if ("4".equals(dataType)) {
  446. lists = dataMapper.listRankGas(waterWrapper);
  447. }
  448. for (ListRankVo list : lists) {
  449. JSONObject jsonObject = new JSONObject();
  450. QueryWrapper<EnergyEnvDevice> queryWrapper = new QueryWrapper<>();
  451. queryWrapper.eq("farm_id", farmId).eq("unit_id", list.getUnitId());
  452. EnergyEnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper);
  453. jsonObject.put("value", list.getValue());
  454. jsonObject.put("buildName", envDevice.getDeviceName());
  455. jsonArray.add(jsonObject);
  456. }
  457. return new Result(ResultCode.SUCCESS, jsonArray);
  458. }
  459. @Override
  460. public Result listDataAll(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  461. String farmId = paramsMap.get("farmId");
  462. String type = paramsMap.get("type");// 1水 2电
  463. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  464. String time = paramsMap.get("time");
  465. if ("".equals(time) || null == time) {
  466. Date timesmorning = DataUill.getTimesmorning();
  467. time = sdf1.format(timesmorning);
  468. }
  469. String start = time + " 00:00:00";
  470. String end = time + " 23:59:59";
  471. QueryWrapper<EnergyScreen> queryWrapper = new QueryWrapper<>();
  472. queryWrapper.eq("farm_id", farmId).between("create_date", start, end).eq("type", type);
  473. List<EnergyScreen> energyScreens = screenMapper.selectList(queryWrapper);
  474. JSONArray jsonArray = new JSONArray();
  475. if (energyScreens.size() != 0) {
  476. for (EnergyScreen energyScreen : energyScreens) {
  477. JSONObject jsonObject = new JSONObject();
  478. jsonObject.put("deviceCode", energyScreen.getDeviceCode());
  479. jsonObject.put("buildName", energyScreen.getBuildName());
  480. jsonObject.put("day1", energyScreen.getTodayRead());
  481. jsonObject.put("day2", energyScreen.getTodayConsume());
  482. jsonObject.put("day3", energyScreen.getYesterdayConsume());
  483. jsonObject.put("week1", energyScreen.getWeekConsume());
  484. jsonObject.put("week2", energyScreen.getLastWeekConsume());
  485. jsonObject.put("month1", energyScreen.getMonthConsume());
  486. jsonObject.put("month2", energyScreen.getLastMonthConsume());
  487. jsonObject.put("day4", energyScreen.getDayDifference());
  488. jsonObject.put("week3", energyScreen.getWeekDifference());
  489. jsonObject.put("month3", energyScreen.getMonthDifference());
  490. jsonArray.add(jsonObject);
  491. }
  492. }
  493. return new Result(ResultCode.SUCCESS, jsonArray);
  494. }
  495. @Override
  496. public Result listDataAll2(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
  497. String farmId = TokenSign.getFarmIds(httpServletRequest);
  498. if (farmId.length() > 2) {
  499. farmId = paramsMap.get("farmId");
  500. }
  501. String type = paramsMap.get("type");// 1水 2电
  502. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
  503. String time = paramsMap.get("time");
  504. if ("".equals(time) || null == time) {
  505. Date timesmorning = DataUill.getTimesmorning();
  506. time = sdf1.format(timesmorning);
  507. }
  508. String start = time + " 00:00:00";
  509. String end = time + " 23:59:59";
  510. QueryWrapper<EnergyScreen> queryWrapper = new QueryWrapper<>();
  511. queryWrapper.eq("farm_id", farmId).between("create_date", start, end).eq("type", type);
  512. List<EnergyScreen> energyScreens = screenMapper.selectList(queryWrapper);
  513. JSONArray jsonArray = new JSONArray();
  514. if (energyScreens.size() != 0) {
  515. for (EnergyScreen energyScreen : energyScreens) {
  516. JSONObject jsonObject = new JSONObject();
  517. jsonObject.put("deviceCode", energyScreen.getDeviceCode());
  518. jsonObject.put("buildName", energyScreen.getBuildName());
  519. jsonObject.put("todayRead", energyScreen.getTodayRead());
  520. jsonObject.put("todayConsume", energyScreen.getTodayConsume());
  521. jsonObject.put("yesterdayConsume", energyScreen.getYesterdayConsume());
  522. jsonObject.put("weekConsume", energyScreen.getWeekConsume());
  523. jsonObject.put("lastWeekConsume", energyScreen.getLastWeekConsume());
  524. jsonObject.put("monthConsume", energyScreen.getMonthConsume());
  525. jsonObject.put("lastMonthConsume", energyScreen.getLastMonthConsume());
  526. jsonObject.put("dayDifference", energyScreen.getDayDifference());
  527. jsonObject.put("weekDifference", energyScreen.getWeekDifference());
  528. jsonObject.put("monthDifference", energyScreen.getMonthDifference());
  529. jsonObject.put("farmName", energyScreen.getFarmName());
  530. jsonArray.add(jsonObject);
  531. }
  532. }
  533. return new Result(ResultCode.SUCCESS, jsonArray);
  534. }
  535. @Override
  536. public Result listDataTail(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) throws ParseException {
  537. String deviceCode = paramsMap.get("deviceCode");
  538. String type = paramsMap.get("type");
  539. // String farmId = paramsMap.get("farmId");
  540. if ("".equals(type) || null == type) {
  541. type = "1";
  542. }
  543. String startDate = paramsMap.get("startDate");
  544. String endDate = paramsMap.get("endDate");
  545. if ("".equals(startDate) || null == startDate) {
  546. Date date1 = new Date();
  547. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  548. startDate = sdf.format(date1);
  549. endDate = sdf.format(date1);
  550. }
  551. HashMap<String, String> map = new HashMap<>();
  552. JSONObject jsonObject1 = new JSONObject();
  553. jsonObject1.put("type", type);
  554. jsonObject1.put("startDate", startDate);
  555. jsonObject1.put("endDate", endDate);
  556. List<String> list = new ArrayList<>();
  557. if ("".equals(deviceCode) || null == deviceCode) {
  558. QueryWrapper<EnergyEnvDevice> queryWrapper1 = new QueryWrapper<>();
  559. queryWrapper1.in("farm_id", 26, 29, 22, 28, 21, 33, 34, 35);
  560. if ("1".equals(type)) {
  561. queryWrapper1.eq("remark", 1);
  562. } else {
  563. queryWrapper1.eq("remark", 0);
  564. }
  565. List<EnergyEnvDevice> envDevices = envDeviceMapper.selectList(queryWrapper1);
  566. envDevices.forEach(item -> {
  567. list.add(item.getDeviceCode());
  568. });
  569. jsonObject1.put("deviceCode", list);
  570. } else {
  571. list.add(deviceCode);
  572. jsonObject1.put("deviceCode", list);
  573. }
  574. map.put("Content-Type", "application/json;charset=utf-8");
  575. String post = HttpRequest.post("http://huimv.ifarmcloud.com/huimvAdmin/energy-electricity/sendData")//http://huimv.ifarmcloud.com/
  576. .headerMap(map, false).body(jsonObject1.toJSONString()).timeout(30 * 1000).execute().body();
  577. System.out.println(post);
  578. JSONArray jsonArray = JSON.parseArray(post);
  579. System.out.println(jsonArray);
  580. JSONArray array = new JSONArray();
  581. for (int i = 0; i < jsonArray.size(); i++) {
  582. JSONObject jsonObject = new JSONObject();
  583. if (ObjectUtil.isEmpty(jsonArray.getJSONObject(i).get("other2"))) {
  584. jsonObject.put("farmName", "");
  585. } else {
  586. jsonObject.put("farmName", jsonArray.getJSONObject(i).get("other2"));
  587. }
  588. if (ObjectUtil.isEmpty(jsonArray.getJSONObject(i).get("other1"))) {
  589. jsonObject.put("buildName", "");
  590. } else {
  591. jsonObject.put("buildName", jsonArray.getJSONObject(i).get("other1"));
  592. }
  593. jsonObject.put("deviceCode", jsonArray.getJSONObject(i).get("chipCode"));
  594. jsonObject.put("createTime", jsonArray.getJSONObject(i).get("createDate"));
  595. if ("1".equals(type)) {
  596. jsonObject.put("value", jsonArray.getJSONObject(i).get("waterValue"));
  597. } else {
  598. jsonObject.put("value", jsonArray.getJSONObject(i).get("electricityValue"));
  599. }
  600. jsonObject.put("originalValue", jsonArray.getJSONObject(i).get("other3"));
  601. array.add(jsonObject);
  602. }
  603. return new Result(ResultCode.SUCCESS, array);
  604. }
  605. @Override
  606. public Result listAll(Map<String, String> paramsMap) {
  607. String farmId = paramsMap.get("farmId");
  608. String dataType = paramsMap.get("dataType");
  609. List<EnergyData> energyData = new ArrayList<>();
  610. if ("1".equals(dataType)) {
  611. energyData = dataMapper.selectList(new QueryWrapper<EnergyData>().lambda()
  612. .eq(EnergyData::getFarmId, farmId)
  613. .eq(EnergyData::getDisplayType, 1)
  614. .isNotNull(EnergyData::getWaterValue)
  615. .orderByDesc(EnergyData::getCreateDate));
  616. }
  617. if ("2".equals(dataType)) {
  618. energyData = dataMapper.selectList(new QueryWrapper<EnergyData>().lambda()
  619. .eq(EnergyData::getFarmId, farmId)
  620. .eq(EnergyData::getDisplayType, 1)
  621. .isNotNull(EnergyData::getElectricityValue)
  622. .orderByDesc(EnergyData::getCreateDate));
  623. }
  624. if ("3".equals(dataType)) {
  625. energyData = dataMapper.selectList(new QueryWrapper<EnergyData>().lambda()
  626. .eq(EnergyData::getFarmId, farmId)
  627. .eq(EnergyData::getDisplayType, 1)
  628. .isNotNull(EnergyData::getFeedValue)
  629. .orderByDesc(EnergyData::getCreateDate));
  630. }
  631. if ("4".equals(dataType)) {
  632. energyData = dataMapper.selectList(new QueryWrapper<EnergyData>().lambda()
  633. .eq(EnergyData::getFarmId, farmId)
  634. .eq(EnergyData::getDisplayType, 1)
  635. .isNotNull(EnergyData::getGasValue)
  636. .orderByDesc(EnergyData::getCreateDate));
  637. }
  638. return new Result(ResultCode.SUCCESS, energyData);
  639. }
  640. /*数组排序*/
  641. public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
  642. //存放排序结果json数组
  643. JSONArray sortedJsonArray = new JSONArray();
  644. //用于排序的list
  645. List<JSONObject> jsonValues = new ArrayList<JSONObject>();
  646. //将参数json数组每一项取出,放入list
  647. if (jsonArr.size() < 8) {
  648. for (int i = 0; i < jsonArr.size(); i++) {
  649. jsonValues.add(jsonArr.getJSONObject(i));
  650. }
  651. //快速排序,重写compare方法,完成按指定字段比较,完成排序
  652. Collections.sort(jsonValues, new Comparator<JSONObject>() {
  653. //排序字段
  654. private final String KEY_NAME = sortKey;
  655. //重写compare方法
  656. @Override
  657. public int compare(JSONObject a, JSONObject b) {
  658. //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
  659. //String valA = new String();
  660. //String valB = new String();
  661. Float valA = 0.00f;
  662. Float valB = 0.00f;
  663. try {
  664. valA = Float.parseFloat(a.getString(KEY_NAME));
  665. valB = Float.parseFloat(b.getString(KEY_NAME));
  666. } catch (JSONException e) {
  667. e.printStackTrace();
  668. }
  669. //是升序还是降序
  670. if (is_desc) {
  671. return -valA.compareTo(valB);
  672. } else {
  673. return -valB.compareTo(valA);
  674. }
  675. }
  676. });
  677. //将排序后结果放入结果jsonArray
  678. for (int i = 0; i < jsonArr.size(); i++) {
  679. sortedJsonArray.add(jsonValues.get(i));
  680. }
  681. } else {
  682. for (int i = 0; i < jsonArr.size(); i++) {
  683. jsonValues.add(jsonArr.getJSONObject(i));
  684. }
  685. //快速排序,重写compare方法,完成按指定字段比较,完成排序
  686. Collections.sort(jsonValues, new Comparator<JSONObject>() {
  687. //排序字段
  688. private final String KEY_NAME = sortKey;
  689. //重写compare方法
  690. @Override
  691. public int compare(JSONObject a, JSONObject b) {
  692. //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
  693. //String valA = new String();
  694. //String valB = new String();
  695. Float valA = 0.00f;
  696. Float valB = 0.00f;
  697. try {
  698. valA = Float.parseFloat(a.getString(KEY_NAME));
  699. valB = Float.parseFloat(b.getString(KEY_NAME));
  700. } catch (JSONException e) {
  701. e.printStackTrace();
  702. }
  703. //是升序还是降序
  704. if (is_desc) {
  705. return -valA.compareTo(valB);
  706. } else {
  707. return -valB.compareTo(valA);
  708. }
  709. }
  710. });
  711. //将排序后结果放入结果jsonArray
  712. for (int i = 0; i < 8; i++) {
  713. sortedJsonArray.add(jsonValues.get(i));
  714. }
  715. }
  716. return sortedJsonArray;
  717. }
  718. /*数组排序*/
  719. public static JSONArray jsonArraySort1(JSONArray jsonArr, String sortKey, boolean is_desc) {
  720. //存放排序结果json数组
  721. JSONArray sortedJsonArray = new JSONArray();
  722. //用于排序的list
  723. List<JSONObject> jsonValues = new ArrayList<JSONObject>();
  724. //将参数json数组每一项取出,放入list
  725. for (int i = 0; i < jsonArr.size(); i++) {
  726. jsonValues.add(jsonArr.getJSONObject(i));
  727. }
  728. //快速排序,重写compare方法,完成按指定字段比较,完成排序
  729. Collections.sort(jsonValues, new Comparator<JSONObject>() {
  730. //排序字段
  731. private final String KEY_NAME = sortKey;
  732. //重写compare方法
  733. @Override
  734. public int compare(JSONObject a, JSONObject b) {
  735. //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
  736. //String valA = new String();
  737. //String valB = new String();
  738. Float valA = 0.00f;
  739. Float valB = 0.00f;
  740. try {
  741. valA = Float.parseFloat(a.getString(KEY_NAME));
  742. valB = Float.parseFloat(b.getString(KEY_NAME));
  743. } catch (JSONException e) {
  744. e.printStackTrace();
  745. }
  746. //是升序还是降序
  747. if (is_desc) {
  748. return -valA.compareTo(valB);
  749. } else {
  750. return -valB.compareTo(valA);
  751. }
  752. }
  753. });
  754. //将排序后结果放入结果jsonArray
  755. if (jsonArr.size() < 5) {
  756. for (int i = 0; i < jsonArr.size(); i++) {
  757. sortedJsonArray.add(jsonValues.get(i));
  758. }
  759. } else {
  760. for (int i = 0; i < 5; i++) {
  761. sortedJsonArray.add(jsonValues.get(i));
  762. }
  763. }
  764. return sortedJsonArray;
  765. }
  766. }