EnergyFeedServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  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.util.ObjectUtil;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.alibaba.fastjson.JSONException;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  9. import com.huimv.admin.common.utils.DataUill;
  10. import com.huimv.admin.common.utils.Result;
  11. import com.huimv.admin.common.utils.ResultCode;
  12. import com.huimv.admin.entity.BasePigpen;
  13. import com.huimv.admin.entity.EnergyData;
  14. import com.huimv.admin.entity.EnergyFeed;
  15. import com.huimv.admin.entity.vo.EnergyFeedDataVo;
  16. import com.huimv.admin.mapper.BasePigpenMapper;
  17. import com.huimv.admin.mapper.EnergyDataMapper;
  18. import com.huimv.admin.mapper.EnergyFeedMapper;
  19. import com.huimv.admin.service.IEnergyFeedService;
  20. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import javax.servlet.http.HttpServletRequest;
  24. import java.text.DecimalFormat;
  25. import java.util.*;
  26. /**
  27. * <p>
  28. * 服务实现类
  29. * </p>
  30. *
  31. * @author author
  32. * @since 2023-02-14
  33. */
  34. @Service
  35. public class EnergyFeedServiceImpl extends ServiceImpl<EnergyFeedMapper, EnergyFeed> implements IEnergyFeedService {
  36. @Autowired
  37. private EnergyFeedMapper energyFeedMapper;
  38. @Autowired
  39. private BasePigpenMapper basePigpenMapper;
  40. @Autowired
  41. private EnergyDataMapper dataMapper;
  42. @Override
  43. public Result listPigpen(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  44. String farmId = paramsMap.get("farmId");
  45. String displayType = paramsMap.get("displayType");
  46. String id = paramsMap.get("id");
  47. JSONArray jsonArray = new JSONArray();
  48. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  49. queryWrapper.eq("farm_id", farmId).eq("parent_id", id);
  50. List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//所有层
  51. for (BasePigpen basePigpen : basePigpens) {
  52. Float count = 0.00f;
  53. QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
  54. basePigpenQueryWrapper.like("other2", basePigpen.getId()).eq("farm_id", farmId).eq("f_type", 3);
  55. List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(basePigpenQueryWrapper);//得到所有的单元
  56. List<Integer> idList = new ArrayList<>();
  57. basePigpens1.forEach(item->{
  58. idList.add(item.getId());
  59. });
  60. JSONObject jsonObject = new JSONObject();
  61. QueryWrapper<EnergyData> queryWrapper1 = new QueryWrapper<>();
  62. queryWrapper1.in("unit_id", idList).eq("farm_id", farmId);
  63. if (ObjectUtil.isNotEmpty(displayType)){
  64. queryWrapper1.eq("display_type",displayType);
  65. }
  66. DateTime dateTime = DateUtil.beginOfDay(new Date());
  67. queryWrapper1.ge("create_date", dateTime);
  68. queryWrapper1.select(" IFNULL(SUM(feed_value),'0') feedValue");
  69. queryWrapper1.lambda().isNotNull(EnergyData::getFeedValue);
  70. EnergyData energyGas = dataMapper.selectOne(queryWrapper1);
  71. if (ObjectUtil.isNotEmpty(energyGas)) {
  72. count = count + Float.parseFloat(energyGas.getFeedValue());
  73. } else {
  74. count = count + 0.00f;
  75. }
  76. DecimalFormat df = new DecimalFormat("0.00");
  77. jsonObject.put("value", df.format(count));
  78. jsonObject.put("buildName", basePigpen.getBuildName());
  79. jsonObject.put("id", basePigpen.getId());
  80. jsonArray.add(jsonObject);
  81. }
  82. return new Result(ResultCode.SUCCESS, jsonArray);
  83. }
  84. @Override
  85. public Result listData(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  86. String farmId = paramsMap.get("farmId");
  87. String type = paramsMap.get("type");
  88. String displayType = paramsMap.get("displayType");
  89. String id = paramsMap.get("id");//楼层id
  90. String startTime = paramsMap.get("startTime");
  91. String endTime = paramsMap.get("endTime");
  92. List<EnergyFeedDataVo> energyGasList = null;
  93. //默认显示本年
  94. if (type == null || type == "") {
  95. type = "3";
  96. }
  97. QueryWrapper<BasePigpen> pigpenQueryWrapper = new QueryWrapper<>();
  98. pigpenQueryWrapper.eq("farm_id", farmId).like("other2", id);
  99. List<BasePigpen> basePigpens = basePigpenMapper.selectList(pigpenQueryWrapper);//单元的集合
  100. List<Integer> unitIds = new ArrayList<>();
  101. basePigpens.forEach(item -> {
  102. unitIds.add(item.getId());
  103. });
  104. QueryWrapper<EnergyData> queryWrapper = new QueryWrapper<>();
  105. if (ObjectUtil.isNotEmpty(displayType)){
  106. queryWrapper.eq("display_type",displayType);
  107. }
  108. queryWrapper.isNotNull("feed_value");
  109. queryWrapper.eq("farm_id", farmId).in("unit_id", unitIds);
  110. //自定义查询
  111. if ("4".equals(type)) {
  112. startTime = startTime + " 00:00:00";
  113. endTime = endTime + " 23:59:59";
  114. queryWrapper.between("create_date", startTime, endTime);
  115. energyGasList = dataMapper.listDay2(queryWrapper);
  116. }
  117. //全年
  118. else if ("3".equals(type)) {
  119. DateTime dateTime = DateUtil.beginOfYear(new Date());
  120. queryWrapper.ge("create_date", dateTime);
  121. List<EnergyFeedDataVo> energyFeedDataVos = dataMapper.listYear2(queryWrapper);
  122. energyGasList = energyFeedDataVos;
  123. }
  124. //本月
  125. else if ("2".equals(type)) {
  126. Date timesMonthmorning = DataUill.getTimesMonthmorning();
  127. queryWrapper.ge("create_date", timesMonthmorning);
  128. energyGasList = dataMapper.listDay2(queryWrapper);
  129. }
  130. //本周
  131. else if ("1".equals(type)) {
  132. Calendar calendar = Calendar.getInstance();
  133. calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
  134. queryWrapper.ge("create_date", calendar.getTime());
  135. List<EnergyFeedDataVo> energyFeedDataVos = dataMapper.listDay2(queryWrapper);
  136. energyGasList = energyFeedDataVos;
  137. }
  138. return new Result(ResultCode.SUCCESS, energyGasList);
  139. }
  140. @Override
  141. public Result listPigpenApp(HttpServletRequest httpServletRequest, Map<String, String> paramsMap) {
  142. String farmId = paramsMap.get("farmId");
  143. String displayType = paramsMap.get("displayType");
  144. JSONArray jsonArray = new JSONArray();
  145. QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
  146. queryWrapper.eq("farm_id", farmId).eq("f_type", 1);
  147. List<BasePigpen> basePigpens = basePigpenMapper.selectList(queryWrapper);//所有层
  148. for (BasePigpen basePigpen : basePigpens) {
  149. Float count = 0.00f;
  150. QueryWrapper<BasePigpen> basePigpenQueryWrapper = new QueryWrapper<>();
  151. basePigpenQueryWrapper.like("other2", basePigpen.getId()).eq("farm_id", farmId).eq("f_type", 3);
  152. List<BasePigpen> basePigpens1 = basePigpenMapper.selectList(basePigpenQueryWrapper);//得到所有的单元
  153. List<Integer> idList = new ArrayList<>();
  154. basePigpens1.forEach(item->{
  155. idList.add(item.getId());
  156. });
  157. JSONObject jsonObject = new JSONObject();
  158. QueryWrapper<EnergyData> queryWrapper1 = new QueryWrapper<>();
  159. if (ObjectUtil.isNotEmpty(displayType)){
  160. queryWrapper.eq("display_type",displayType);
  161. }
  162. queryWrapper1.in("unit_id", idList).eq("farm_id", farmId);
  163. queryWrapper1.lambda().isNotNull(EnergyData::getFeedValue);
  164. DateTime dateTime = DateUtil.beginOfWeek(new Date());
  165. queryWrapper1.ge("create_date", dateTime);
  166. queryWrapper1.select(" IFNULL(SUM(feed_value),'0') feedValue");
  167. EnergyData energyGas = dataMapper.selectOne(queryWrapper1);
  168. if (ObjectUtil.isNotEmpty(energyGas)) {
  169. count = count + Float.parseFloat(energyGas.getFeedValue());
  170. } else {
  171. count = count + 0.00f;
  172. }
  173. DecimalFormat df = new DecimalFormat("0.00");
  174. jsonObject.put("value", df.format(count));
  175. jsonObject.put("buildName", basePigpen.getBuildName());
  176. jsonObject.put("id", basePigpen.getId());
  177. jsonArray.add(jsonObject);
  178. }
  179. JSONArray array = jsonArraySort(jsonArray, "value", true);
  180. return new Result(ResultCode.SUCCESS, array);
  181. }
  182. /*数组排序*/
  183. public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
  184. //存放排序结果json数组
  185. JSONArray sortedJsonArray = new JSONArray();
  186. //用于排序的list
  187. List<JSONObject> jsonValues = new ArrayList<JSONObject>();
  188. //将参数json数组每一项取出,放入list
  189. for (int i = 0; i < jsonArr.size(); i++) {
  190. jsonValues.add(jsonArr.getJSONObject(i));
  191. }
  192. //快速排序,重写compare方法,完成按指定字段比较,完成排序
  193. Collections.sort(jsonValues, new Comparator<JSONObject>() {
  194. //排序字段
  195. private final String KEY_NAME = sortKey;
  196. //重写compare方法
  197. @Override
  198. public int compare(JSONObject a, JSONObject b) {
  199. //如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
  200. //String valA = new String();
  201. //String valB = new String();
  202. Float valA = 0.00f;
  203. Float valB = 0.00f;
  204. try {
  205. valA = Float.parseFloat(a.getString(KEY_NAME));
  206. valB = Float.parseFloat(b.getString(KEY_NAME));
  207. } catch (JSONException e) {
  208. e.printStackTrace();
  209. }
  210. //是升序还是降序
  211. if (is_desc) {
  212. return -valA.compareTo(valB);
  213. } else {
  214. return -valB.compareTo(valA);
  215. }
  216. }
  217. });
  218. //将排序后结果放入结果jsonArray
  219. for (int i = 0; i < jsonArr.size(); i++) {
  220. sortedJsonArray.add(jsonValues.get(i));
  221. }
  222. return sortedJsonArray;
  223. }
  224. }