package com.huimv.admin.service.impl;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.huimv.admin.common.token.TokenSign;
import com.huimv.admin.common.utils.DataUill;
import com.huimv.admin.common.utils.Result;
import com.huimv.admin.common.utils.ResultCode;
import com.huimv.admin.entity.*;
import com.huimv.admin.entity.dto.ListRankVo;
import com.huimv.admin.entity.vo.*;
import com.huimv.admin.mapper.*;
import com.huimv.admin.service.IEnergyDataService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
* 耗能数据 服务实现类
*
*
* @author author
* @since 2023-02-14
*/
@Service
public class EnergyDataServiceImpl extends ServiceImpl implements IEnergyDataService {
@Autowired
private EnergyDataMapper dataMapper;
@Autowired
private BasePigpenMapper basePigpenMapper;
@Autowired
private EnergyWarningInfoMapper warningInfoMapper;
@Autowired
private EnergyEnvDeviceMapper envDeviceMapper;
@Autowired
private EnergyScreenMapper screenMapper;
@Autowired
private BaseFarmMapper farmMapper;
@Override
public Result listCount(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String waterDisplayType = paramsMap.get("waterDisplayType");
String electricityDisplayType = paramsMap.get("electricityDisplayType");
String feedDisplayType = paramsMap.get("feedDisplayType");
String gasDisplayType = paramsMap.get("gasDisplayType");
QueryWrapper waterqueryWrapper = new QueryWrapper<>();
QueryWrapper electricityqueryWrapper = new QueryWrapper<>();
QueryWrapper feedqueryWrapper = new QueryWrapper<>();
QueryWrapper gasqueryWrapper = new QueryWrapper<>();
if (ObjectUtil.isNotEmpty(waterDisplayType)) {
waterqueryWrapper.eq("display_type", waterDisplayType);
}
if (ObjectUtil.isNotEmpty(electricityDisplayType)) {
electricityqueryWrapper.eq("display_type", electricityDisplayType);
}
if (ObjectUtil.isNotEmpty(feedDisplayType)) {
feedqueryWrapper.eq("display_type", feedDisplayType);
}
if (ObjectUtil.isNotEmpty(gasDisplayType)) {
gasqueryWrapper.eq("display_type", gasDisplayType);
}
Date monthmorning = DataUill.getTimesMonthmorning();
waterqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
electricityqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
feedqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
gasqueryWrapper.eq("farm_id", farmId).ge("create_date", monthmorning);
EnergyDataVo energyDataVo = dataMapper.listWaterCount(waterqueryWrapper);
energyDataVo.setGasValue(dataMapper.listGasCount(gasqueryWrapper));
energyDataVo.setFeedValue(dataMapper.listFeedCount(feedqueryWrapper));
energyDataVo.setElectricityValue(dataMapper.listElectricityCount(electricityqueryWrapper));
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("farm_id", farmId);
Integer count = warningInfoMapper.selectCount(queryWrapper1);
// Float f = 0.00f;
// f = (Float.parseFloat(energyDataVo.getElectricityValue()) +
// Float.parseFloat(energyDataVo.getFeedValue()) +
// Float.parseFloat(energyDataVo.getGasValue()) + Float.parseFloat(energyDataVo.getWaterValue()));
// DecimalFormat df1 = new DecimalFormat("#.00");
energyDataVo.setCount(count);
return new Result(ResultCode.SUCCESS, energyDataVo);
}
@Override
public Result listData(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String dataType = paramsMap.get("dataType");
String displayType = paramsMap.get("displayType");
String timeType = paramsMap.get("timeType");
String startTime = paramsMap.get("startTime");
String endTime = paramsMap.get("endTime");
if (dataType == null || dataType == "") {
dataType = "1";
}
if (timeType == null || timeType == "") {
timeType = "3";
}
QueryWrapper dataQueryWrapper = new QueryWrapper<>();
dataQueryWrapper.eq("farm_id", farmId);
if (ObjectUtil.isNotEmpty(displayType)) {
dataQueryWrapper.eq("display_type", displayType);
}
//用水
if ("1".equals(dataType)) {
dataQueryWrapper.isNotNull("water_value");
//自定义
if ("4".equals(timeType)) {
startTime = startTime + " 00:00:00";
endTime = endTime + " 23:59:59";
dataQueryWrapper.between("create_date", startTime, endTime);
return new Result(ResultCode.SUCCESS, dataMapper.listDayWater(dataQueryWrapper));
}
//全年
if ("3".equals(timeType)) {
DateTime dateTime = DateUtil.beginOfYear(new Date());
dataQueryWrapper.ge("create_date", dateTime);
List energyWaterDataVos = dataMapper.listYearWater(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyWaterDataVos);
}
//本月
if ("2".equals(timeType)) {
Date timesMonthmorning = DataUill.getTimesMonthmorning();
dataQueryWrapper.ge("create_date", timesMonthmorning);
return new Result(ResultCode.SUCCESS, dataMapper.listDayWater(dataQueryWrapper));
}
//本周
if ("1".equals(timeType)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
dataQueryWrapper.ge("create_date", calendar.getTime());
List energyWaterDataVos = dataMapper.listDayWater(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyWaterDataVos);
}
}
//用电
else if ("2".equals(dataType)) {
dataQueryWrapper.isNotNull("electricity_value");
//自定义
if ("4".equals(timeType)) {
startTime = startTime + " 00:00:00";
endTime = endTime + " 23:59:59";
dataQueryWrapper.between("create_date", startTime, endTime);
return new Result(ResultCode.SUCCESS, dataMapper.listDayElectricity(dataQueryWrapper));
}
//全年
if ("3".equals(timeType)) {
DateTime dateTime = DateUtil.beginOfYear(new Date());
dataQueryWrapper.ge("create_date", dateTime);
List energyElectricityDataVos = dataMapper.listYearElectricity(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyElectricityDataVos);
}
//本月
if ("2".equals(timeType)) {
Date timesMonthmorning = DataUill.getTimesMonthmorning();
dataQueryWrapper.ge("create_date", timesMonthmorning);
return new Result(ResultCode.SUCCESS, dataMapper.listDayElectricity(dataQueryWrapper));
}
//本周
if ("1".equals(timeType)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
dataQueryWrapper.ge("create_date", calendar.getTime());
List energyElectricityDataVos = dataMapper.listDayElectricity(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyElectricityDataVos);
}
}
//饲料
else if ("3".equals(dataType)) {
dataQueryWrapper.isNotNull("feed_value");
//自定义
if ("4".equals(timeType)) {
startTime = startTime + " 00:00:00";
endTime = endTime + " 23:59:59";
dataQueryWrapper.between("create_date", startTime, endTime);
return new Result(ResultCode.SUCCESS, dataMapper.listDayFeed(dataQueryWrapper));
}
//全年
if ("3".equals(timeType)) {
DateTime dateTime = DateUtil.beginOfYear(new Date());
dataQueryWrapper.ge("create_date", dateTime);
List energyFeedDataVos = dataMapper.listYearFeed(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyFeedDataVos);
}
//本月
if ("2".equals(timeType)) {
Date timesMonthmorning = DataUill.getTimesMonthmorning();
dataQueryWrapper.ge("create_date", timesMonthmorning);
return new Result(ResultCode.SUCCESS, dataMapper.listDayFeed(dataQueryWrapper));
}
//本周
if ("1".equals(timeType)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
dataQueryWrapper.ge("create_date", calendar.getTime());
List energyFeedDataVos = dataMapper.listDayFeed(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyFeedDataVos);
}
}
//天然气
else if ("4".equals(dataType)) {
dataQueryWrapper.isNotNull("gas_value");
//自定义
if ("4".equals(timeType)) {
startTime = startTime + " 00:00:00";
endTime = endTime + " 23:59:59";
dataQueryWrapper.between("create_date", startTime, endTime);
return new Result(ResultCode.SUCCESS, dataMapper.listDayGas(dataQueryWrapper));
}
//全年
if ("3".equals(timeType)) {
DateTime dateTime = DateUtil.beginOfYear(new Date());
dataQueryWrapper.ge("create_date", dateTime);
List energyGasDataVos = dataMapper.listYearGas(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyGasDataVos);
}
//本月
if ("2".equals(timeType)) {
Date timesMonthmorning = DataUill.getTimesMonthmorning();
dataQueryWrapper.ge("create_date", timesMonthmorning);
return new Result(ResultCode.SUCCESS, dataMapper.listDayGas(dataQueryWrapper));
}
//本周
if ("1".equals(timeType)) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
dataQueryWrapper.ge("create_date", calendar.getTime());
List energyGasDataVos = dataMapper.listDayGas(dataQueryWrapper);
return new Result(ResultCode.SUCCESS, energyGasDataVos);
}
}
return new Result(ResultCode.SUCCESS);
}
@Override
public Result listRank(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String displayType = paramsMap.get("displayType");
String dataType = paramsMap.get("dataType");
String timeType = paramsMap.get("timeType");
String startTime = paramsMap.get("startTime");
String endTime = paramsMap.get("endTime");
if (dataType == null || dataType == "") {
dataType = "1";
}
if (timeType == null || timeType == "") {
timeType = "3";
}
JSONArray jsonArray = new JSONArray();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).eq("f_type", 2).eq("other3", 1);
List pigpens = basePigpenMapper.selectList(queryWrapper);//得到所有的楼层
for (BasePigpen pigpen : pigpens) {
Float value = 0.00f;
JSONObject jsonObject = new JSONObject();
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.like("other2", pigpen.getId()).eq("farm_id", farmId).ne("id", pigpen.getId());
List basePigpens1 = basePigpenMapper.selectList(queryWrapper1);
List idList = new ArrayList<>();
basePigpens1.forEach(item -> {
idList.add(item.getId());
});//某一层所有单元的id
QueryWrapper waterWrapper = new QueryWrapper<>();
QueryWrapper gasWrapper = new QueryWrapper<>();
QueryWrapper electricityWrapper = new QueryWrapper<>();
QueryWrapper feedWrapper = new QueryWrapper<>();
if (idList.size() != 0) {
waterWrapper.eq("farm_id", farmId).in("unit_id", idList);
gasWrapper.eq("farm_id", farmId).in("unit_id", idList);
electricityWrapper.eq("farm_id", farmId).in("unit_id", idList);
feedWrapper.eq("farm_id", farmId).in("unit_id", idList);
if ("4".equals(timeType)) {
//自定义
startTime = startTime + " 00:00:00";
endTime = endTime + " 23:59:59";
waterWrapper.between("create_date", startTime, endTime);
gasWrapper.between("create_date", startTime, endTime);
electricityWrapper.between("create_date", startTime, endTime);
feedWrapper.between("create_date", startTime, endTime);
} else if ("3".equals(timeType)) {
//本年
DateTime dateTime = DateUtil.beginOfYear(new Date());
waterWrapper.ge("create_date", dateTime);
gasWrapper.ge("create_date", dateTime);
electricityWrapper.ge("create_date", dateTime);
feedWrapper.ge("create_date", dateTime);
} else if ("2".equals(timeType)) {
//本月
Date timesMonthmorning = DataUill.getTimesMonthmorning();
waterWrapper.ge("create_date", timesMonthmorning);
gasWrapper.ge("create_date", timesMonthmorning);
electricityWrapper.ge("create_date", timesMonthmorning);
feedWrapper.ge("create_date", timesMonthmorning);
} else if ("1".equals(timeType)) {
//本周
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 7);
waterWrapper.ge("create_date", calendar.getTime());
gasWrapper.ge("create_date", calendar.getTime());
electricityWrapper.ge("create_date", calendar.getTime());
feedWrapper.ge("create_date", calendar.getTime());
}
if (ObjectUtil.isNotEmpty(displayType)) {
waterWrapper.eq("display_type", displayType);
}
if (ObjectUtil.isNotEmpty(displayType)) {
gasWrapper.eq("display_type", displayType);
}
if (ObjectUtil.isNotEmpty(displayType)) {
electricityWrapper.eq("display_type", displayType);
}
if (ObjectUtil.isNotEmpty(displayType)) {
feedWrapper.eq("display_type", displayType);
}
waterWrapper.select(" IFNULL(SUM(water_value),0) waterValue ");
gasWrapper.select(" IFNULL(SUM(gas_value),0) gasValue ");
electricityWrapper.select(" IFNULL(SUM(electricity_value),0) electricityValue ");
feedWrapper.select(" IFNULL(SUM(feed_value),0) feedValue ");
if ("1".equals(dataType)) {
value = Float.parseFloat(dataMapper.selectOne(waterWrapper).getWaterValue());
jsonObject.put("value", value);
}
if ("2".equals(dataType)) {
value = Float.parseFloat(dataMapper.selectOne(electricityWrapper).getElectricityValue());
jsonObject.put("value", value);
}
if ("3".equals(dataType)) {
value = Float.parseFloat(dataMapper.selectOne(feedWrapper).getFeedValue());
jsonObject.put("value", value);
}
if ("4".equals(dataType)) {
value = Float.parseFloat(dataMapper.selectOne(gasWrapper).getGasValue());
jsonObject.put("value", value);
}
} else {
jsonObject.put("value", 0);
}
jsonObject.put("buildName", pigpen.getBuildName());
jsonArray.add(jsonObject);
}
JSONArray arraySort = jsonArraySort(jsonArray, "value", true);
return new Result(ResultCode.SUCCESS, arraySort);
}
@Override
public Result listDataScreen(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String waterDisplayType = paramsMap.get("waterDisplayType");
String electricityDisplayType = paramsMap.get("electricityDisplayType");
String feedDisplayType = paramsMap.get("feedDisplayType");
String gasDisplayType = paramsMap.get("gasDisplayType");
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("farm_id", farmId);
if (ObjectUtil.isNotEmpty(gasDisplayType)) {
queryWrapper1.eq("display_type", gasDisplayType);
}
QueryWrapper queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("farm_id", farmId);
if (ObjectUtil.isNotEmpty(feedDisplayType)) {
queryWrapper2.eq("display_type", feedDisplayType);
}
QueryWrapper queryWrapper3 = new QueryWrapper<>();
queryWrapper3.eq("farm_id", farmId);
if (ObjectUtil.isNotEmpty(waterDisplayType)) {
queryWrapper3.eq("display_type", waterDisplayType);
}
QueryWrapper queryWrapper4 = new QueryWrapper<>();
queryWrapper4.eq("farm_id", farmId);
if (ObjectUtil.isNotEmpty(electricityDisplayType)) {
queryWrapper4.eq("display_type", electricityDisplayType);
}
List energyGasDataVos = dataMapper.listDayGas(queryWrapper1.isNotNull("gas_value"));
List energyFeedDataVos = dataMapper.listDayFeed(queryWrapper2.isNotNull("feed_value"));
List energyWaterDataVos = dataMapper.listDayWater(queryWrapper3.isNotNull("water_value"));
List energyElectricityDataVos = dataMapper.listDayElectricity(queryWrapper4.isNotNull("electricity_value"));
Collections.reverse(energyGasDataVos);
Collections.reverse(energyFeedDataVos);
Collections.reverse(energyWaterDataVos);
Collections.reverse(energyElectricityDataVos);
JSONObject jsonObject = new JSONObject();
jsonObject.put("gas", energyGasDataVos);
jsonObject.put("water", energyWaterDataVos);
jsonObject.put("energyElectricity", energyElectricityDataVos);
if (energyFeedDataVos.size() != 0) {
for (EnergyAllDataVo energyFeedDataVo : energyFeedDataVos) {
Double feed = Double.valueOf(energyFeedDataVo.getValue());
DecimalFormat def = new DecimalFormat("0.00");
energyFeedDataVo.setValue(def.format(feed / 1000));
}
}
jsonObject.put("feed", energyFeedDataVos);
return new Result(ResultCode.SUCCESS, jsonObject);
}
@Override
public Result listRankScreen(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String dataType = paramsMap.get("dataType");
String waterDisplayType = paramsMap.get("waterDisplayType");
String electricityDisplayType = paramsMap.get("electricityDisplayType");
String feedDisplayType = paramsMap.get("feedDisplayType");
String gasDisplayType = paramsMap.get("gasDisplayType");
if (dataType == null || dataType == "") {
dataType = "1";
}
JSONArray jsonArray = new JSONArray();
QueryWrapper waterWrapper = new QueryWrapper<>();
QueryWrapper gasWrapper = new QueryWrapper<>();
QueryWrapper electricityWrapper = new QueryWrapper<>();
QueryWrapper feedWrapper = new QueryWrapper<>();
Date timesMonthmorning = DataUill.getTimesMonthmorning();
waterWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
gasWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
feedWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
electricityWrapper.eq("farm_id", farmId).ge("create_date", timesMonthmorning);
if (ObjectUtil.isNotEmpty(waterDisplayType)) {
waterWrapper.eq("display_type", waterDisplayType);
}
if (ObjectUtil.isNotEmpty(gasDisplayType)) {
gasWrapper.eq("display_type", gasDisplayType);
}
if (ObjectUtil.isNotEmpty(electricityDisplayType)) {
electricityWrapper.eq("display_type", electricityDisplayType);
}
if (ObjectUtil.isNotEmpty(feedDisplayType)) {
feedWrapper.eq("display_type", feedDisplayType);
}
List lists = new ArrayList<>();
if ("1".equals(dataType)) {
lists = dataMapper.listRankWater(waterWrapper);
}
if ("2".equals(dataType)) {
lists = dataMapper.listRankElectricity(waterWrapper);
}
if ("3".equals(dataType)) {
lists = dataMapper.listRankFeed(waterWrapper);
}
if ("4".equals(dataType)) {
lists = dataMapper.listRankGas(waterWrapper);
}
for (ListRankVo list : lists) {
JSONObject jsonObject = new JSONObject();
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).eq("unit_id", list.getUnitId());
EnergyEnvDevice envDevice = envDeviceMapper.selectOne(queryWrapper);
jsonObject.put("value", list.getValue());
jsonObject.put("buildName", envDevice.getDeviceName());
jsonArray.add(jsonObject);
}
return new Result(ResultCode.SUCCESS, jsonArray);
}
@Override
public Result listDataAll(HttpServletRequest httpServletRequest, Map paramsMap) {
String farmId = paramsMap.get("farmId");
String type = paramsMap.get("type");// 1水 2电
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
String time = paramsMap.get("time");
if ("".equals(time) || null == time) {
Date timesmorning = DataUill.getTimesmorning();
time = sdf1.format(timesmorning);
}
String start = time + " 00:00:00";
String end = time + " 23:59:59";
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).between("create_date", start, end).eq("type", type);
List energyScreens = screenMapper.selectList(queryWrapper);
JSONArray jsonArray = new JSONArray();
if (energyScreens.size() != 0) {
for (EnergyScreen energyScreen : energyScreens) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceCode", energyScreen.getDeviceCode());
jsonObject.put("buildName", energyScreen.getBuildName());
jsonObject.put("day1", energyScreen.getTodayRead());
jsonObject.put("day2", energyScreen.getTodayConsume());
jsonObject.put("day3", energyScreen.getYesterdayConsume());
jsonObject.put("week1", energyScreen.getWeekConsume());
jsonObject.put("week2", energyScreen.getLastWeekConsume());
jsonObject.put("month1", energyScreen.getMonthConsume());
jsonObject.put("month2", energyScreen.getLastMonthConsume());
jsonObject.put("day4", energyScreen.getDayDifference());
jsonObject.put("week3", energyScreen.getWeekDifference());
jsonObject.put("month3", energyScreen.getMonthDifference());
jsonArray.add(jsonObject);
}
}
return new Result(ResultCode.SUCCESS, jsonArray);
}
@Override
public Result listDataAll2(HttpServletRequest httpServletRequest, Map paramsMap) throws ParseException {
String farmId = TokenSign.getFarmIds(httpServletRequest);
if (farmId.length() > 2) {
farmId = paramsMap.get("farmId");
}
String type = paramsMap.get("type");// 1水 2电
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
String time = paramsMap.get("time");
if ("".equals(time) || null == time) {
Date timesmorning = DataUill.getTimesmorning();
time = sdf1.format(timesmorning);
}
String start = time + " 00:00:00";
String end = time + " 23:59:59";
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("farm_id", farmId).between("create_date", start, end).eq("type", type);
List energyScreens = screenMapper.selectList(queryWrapper);
JSONArray jsonArray = new JSONArray();
if (energyScreens.size() != 0) {
for (EnergyScreen energyScreen : energyScreens) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceCode", energyScreen.getDeviceCode());
jsonObject.put("buildName", energyScreen.getBuildName());
jsonObject.put("todayRead", energyScreen.getTodayRead());
jsonObject.put("todayConsume", energyScreen.getTodayConsume());
jsonObject.put("yesterdayConsume", energyScreen.getYesterdayConsume());
jsonObject.put("weekConsume", energyScreen.getWeekConsume());
jsonObject.put("lastWeekConsume", energyScreen.getLastWeekConsume());
jsonObject.put("monthConsume", energyScreen.getMonthConsume());
jsonObject.put("lastMonthConsume", energyScreen.getLastMonthConsume());
jsonObject.put("dayDifference", energyScreen.getDayDifference());
jsonObject.put("weekDifference", energyScreen.getWeekDifference());
jsonObject.put("monthDifference", energyScreen.getMonthDifference());
jsonObject.put("farmName", energyScreen.getFarmName());
jsonArray.add(jsonObject);
}
}
return new Result(ResultCode.SUCCESS, jsonArray);
}
@Override
public Result listDataTail(HttpServletRequest httpServletRequest, Map paramsMap) throws ParseException {
String deviceCode = paramsMap.get("deviceCode");
String type = paramsMap.get("type");
// String farmId = paramsMap.get("farmId");
if ("".equals(type) || null == type) {
type = "1";
}
String startDate = paramsMap.get("startDate");
String endDate = paramsMap.get("endDate");
if ("".equals(startDate) || null == startDate) {
Date date1 = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
startDate = sdf.format(date1);
endDate = sdf.format(date1);
}
HashMap map = new HashMap<>();
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("type", type);
jsonObject1.put("startDate", startDate);
jsonObject1.put("endDate", endDate);
List list = new ArrayList<>();
if ("".equals(deviceCode) || null == deviceCode) {
QueryWrapper queryWrapper1 = new QueryWrapper<>();
queryWrapper1.in("farm_id", 26, 29, 22, 28, 21, 33, 34, 35);
if ("1".equals(type)) {
queryWrapper1.eq("remark", 1);
} else {
queryWrapper1.eq("remark", 0);
}
List envDevices = envDeviceMapper.selectList(queryWrapper1);
envDevices.forEach(item -> {
list.add(item.getDeviceCode());
});
jsonObject1.put("deviceCode", list);
} else {
list.add(deviceCode);
jsonObject1.put("deviceCode", list);
}
map.put("Content-Type", "application/json;charset=utf-8");
String post = HttpRequest.post("http://huimv.ifarmcloud.com/huimvAdmin/energy-electricity/sendData")//http://huimv.ifarmcloud.com/
.headerMap(map, false).body(jsonObject1.toJSONString()).timeout(30 * 1000).execute().body();
System.out.println(post);
JSONArray jsonArray = JSON.parseArray(post);
System.out.println(jsonArray);
JSONArray array = new JSONArray();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = new JSONObject();
if (ObjectUtil.isEmpty(jsonArray.getJSONObject(i).get("other2"))) {
jsonObject.put("farmName", "");
} else {
jsonObject.put("farmName", jsonArray.getJSONObject(i).get("other2"));
}
if (ObjectUtil.isEmpty(jsonArray.getJSONObject(i).get("other1"))) {
jsonObject.put("buildName", "");
} else {
jsonObject.put("buildName", jsonArray.getJSONObject(i).get("other1"));
}
jsonObject.put("deviceCode", jsonArray.getJSONObject(i).get("chipCode"));
jsonObject.put("createTime", jsonArray.getJSONObject(i).get("createDate"));
if ("1".equals(type)) {
jsonObject.put("value", jsonArray.getJSONObject(i).get("waterValue"));
} else {
jsonObject.put("value", jsonArray.getJSONObject(i).get("electricityValue"));
}
jsonObject.put("originalValue", jsonArray.getJSONObject(i).get("other3"));
array.add(jsonObject);
}
return new Result(ResultCode.SUCCESS, array);
}
@Override
public Result listAll(Map paramsMap) {
String farmId = paramsMap.get("farmId");
String dataType = paramsMap.get("dataType");
List energyData = new ArrayList<>();
if ("1".equals(dataType)) {
energyData = dataMapper.selectList(new QueryWrapper().lambda()
.eq(EnergyData::getFarmId, farmId)
.eq(EnergyData::getDisplayType, 1)
.isNotNull(EnergyData::getWaterValue)
.orderByDesc(EnergyData::getCreateDate));
}
if ("2".equals(dataType)) {
energyData = dataMapper.selectList(new QueryWrapper().lambda()
.eq(EnergyData::getFarmId, farmId)
.eq(EnergyData::getDisplayType, 1)
.isNotNull(EnergyData::getElectricityValue)
.orderByDesc(EnergyData::getCreateDate));
}
if ("3".equals(dataType)) {
energyData = dataMapper.selectList(new QueryWrapper().lambda()
.eq(EnergyData::getFarmId, farmId)
.eq(EnergyData::getDisplayType, 1)
.isNotNull(EnergyData::getFeedValue)
.orderByDesc(EnergyData::getCreateDate));
}
if ("4".equals(dataType)) {
energyData = dataMapper.selectList(new QueryWrapper().lambda()
.eq(EnergyData::getFarmId, farmId)
.eq(EnergyData::getDisplayType, 1)
.isNotNull(EnergyData::getGasValue)
.orderByDesc(EnergyData::getCreateDate));
}
return new Result(ResultCode.SUCCESS, energyData);
}
/*数组排序*/
public static JSONArray jsonArraySort(JSONArray jsonArr, String sortKey, boolean is_desc) {
//存放排序结果json数组
JSONArray sortedJsonArray = new JSONArray();
//用于排序的list
List jsonValues = new ArrayList();
//将参数json数组每一项取出,放入list
if (jsonArr.size() < 8) {
for (int i = 0; i < jsonArr.size(); i++) {
jsonValues.add(jsonArr.getJSONObject(i));
}
//快速排序,重写compare方法,完成按指定字段比较,完成排序
Collections.sort(jsonValues, new Comparator() {
//排序字段
private final String KEY_NAME = sortKey;
//重写compare方法
@Override
public int compare(JSONObject a, JSONObject b) {
//如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
//String valA = new String();
//String valB = new String();
Float valA = 0.00f;
Float valB = 0.00f;
try {
valA = Float.parseFloat(a.getString(KEY_NAME));
valB = Float.parseFloat(b.getString(KEY_NAME));
} catch (JSONException e) {
e.printStackTrace();
}
//是升序还是降序
if (is_desc) {
return -valA.compareTo(valB);
} else {
return -valB.compareTo(valA);
}
}
});
//将排序后结果放入结果jsonArray
for (int i = 0; i < jsonArr.size(); i++) {
sortedJsonArray.add(jsonValues.get(i));
}
} else {
for (int i = 0; i < jsonArr.size(); i++) {
jsonValues.add(jsonArr.getJSONObject(i));
}
//快速排序,重写compare方法,完成按指定字段比较,完成排序
Collections.sort(jsonValues, new Comparator() {
//排序字段
private final String KEY_NAME = sortKey;
//重写compare方法
@Override
public int compare(JSONObject a, JSONObject b) {
//如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
//String valA = new String();
//String valB = new String();
Float valA = 0.00f;
Float valB = 0.00f;
try {
valA = Float.parseFloat(a.getString(KEY_NAME));
valB = Float.parseFloat(b.getString(KEY_NAME));
} catch (JSONException e) {
e.printStackTrace();
}
//是升序还是降序
if (is_desc) {
return -valA.compareTo(valB);
} else {
return -valB.compareTo(valA);
}
}
});
//将排序后结果放入结果jsonArray
for (int i = 0; i < 8; i++) {
sortedJsonArray.add(jsonValues.get(i));
}
}
return sortedJsonArray;
}
/*数组排序*/
public static JSONArray jsonArraySort1(JSONArray jsonArr, String sortKey, boolean is_desc) {
//存放排序结果json数组
JSONArray sortedJsonArray = new JSONArray();
//用于排序的list
List jsonValues = new ArrayList();
//将参数json数组每一项取出,放入list
for (int i = 0; i < jsonArr.size(); i++) {
jsonValues.add(jsonArr.getJSONObject(i));
}
//快速排序,重写compare方法,完成按指定字段比较,完成排序
Collections.sort(jsonValues, new Comparator() {
//排序字段
private final String KEY_NAME = sortKey;
//重写compare方法
@Override
public int compare(JSONObject a, JSONObject b) {
//如果用String接会导致一位数和两位数混合比对的时候不能准确比出来,要用int类型接
//String valA = new String();
//String valB = new String();
Float valA = 0.00f;
Float valB = 0.00f;
try {
valA = Float.parseFloat(a.getString(KEY_NAME));
valB = Float.parseFloat(b.getString(KEY_NAME));
} catch (JSONException e) {
e.printStackTrace();
}
//是升序还是降序
if (is_desc) {
return -valA.compareTo(valB);
} else {
return -valB.compareTo(valA);
}
}
});
//将排序后结果放入结果jsonArray
if (jsonArr.size() < 5) {
for (int i = 0; i < jsonArr.size(); i++) {
sortedJsonArray.add(jsonValues.get(i));
}
} else {
for (int i = 0; i < 5; i++) {
sortedJsonArray.add(jsonValues.get(i));
}
}
return sortedJsonArray;
}
}