package com.huimv.admin.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.EnvWater; import com.huimv.admin.entity.vo.energyMonthVo; import com.huimv.admin.entity.vo.energyYearVo; import com.huimv.admin.mapper.EnvWaterMapper; import com.huimv.admin.service.IEnvWaterService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; /** *

* 服务实现类 *

* * @author author * @since 2023-03-23 */ @Service public class EnvWaterServiceImpl extends ServiceImpl implements IEnvWaterService { @Autowired private EnvWaterMapper envWaterMapper; @Override public Result listWater(Map paramsMap) { Date timesMonthmorning = DataUill.getTimesMonthmorning(); Date currentYearStartTime = DataUill.getCurrentYearStartTime(); Date lastYearStartTime = DataUill.getLastYearStartTime(); Date lastYearEndTime = DataUill.getLastYearEndTime(); String farmId = paramsMap.get("farmId"); String type = paramsMap.get("type"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //格式化时间 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("farm_id",farmId); Map resultMap = new HashMap(); //月 if ("1".equals(type)){ queryWrapper.ge("update_time",timesMonthmorning); List energyMonthVos = envWaterMapper.listDayWater(queryWrapper); resultMap.put("data", energyMonthVos); BigDecimal currentWater = envWaterMapper.getWater(queryWrapper); if (ObjectUtil.isNull(currentWater)){ currentWater = BigDecimal.ZERO; } resultMap.put("currentValue",currentWater); //上个月 //获取上个月的第一天 Calendar cal_1 = Calendar.getInstance();//获取当前日期 cal_1.add(Calendar.MONTH, -1); cal_1.set(Calendar.DAY_OF_MONTH, 1);//设置为1号 cal_1.set(Calendar.HOUR_OF_DAY, 0); cal_1.set(Calendar.MINUTE, 0); cal_1.set(Calendar.SECOND, 0); String firstDay = format.format(cal_1.getTime()); //获取上个月的最后一天 Calendar cal_2 = Calendar.getInstance(); cal_2.set(Calendar.DAY_OF_MONTH, 0);//设置为1号,当前日期既为本月第一天 cal_2.set(Calendar.HOUR_OF_DAY, 23); cal_2.set(Calendar.MINUTE, 59); cal_2.set(Calendar.SECOND, 59); String lastDay = format.format(cal_2.getTime()); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("farm_id",farmId).between("update_time",firstDay,lastDay); BigDecimal lastWater = envWaterMapper.getWater(wrapper); if (ObjectUtil.isNull(lastWater)){ resultMap.put("lastValue",0); resultMap.put("gap",100); return new Result(ResultCode.SUCCESS,resultMap); } resultMap.put("lastValue",lastWater); double gap = ((currentWater.doubleValue() - lastWater.doubleValue()) / lastWater.doubleValue()) * 100; if (ObjectUtil.isNull(gap)){ gap = 0.0; } BigDecimal bg = new BigDecimal(gap).setScale(2, RoundingMode.UP); resultMap.put("gap",bg); return new Result(ResultCode.SUCCESS,resultMap); }else { //年 queryWrapper.ge("update_time",currentYearStartTime); List energyMonthVos = envWaterMapper.listMonthWater(queryWrapper); resultMap.put("data", energyMonthVos); BigDecimal currentWater = envWaterMapper.getWater(queryWrapper); if (ObjectUtil.isNull(currentWater)){ currentWater = BigDecimal.ZERO; } resultMap.put("currentValue",currentWater); //上一年 String firstDay = format.format(lastYearStartTime); String lastDay = format.format(lastYearEndTime); QueryWrapper wrapper = new QueryWrapper(); wrapper.eq("farm_id",farmId).between("update_time",firstDay,lastDay); BigDecimal lastWater = envWaterMapper.getWater(wrapper); if (ObjectUtil.isNull(lastWater)){ resultMap.put("lastValue",0); resultMap.put("gap",100); return new Result(ResultCode.SUCCESS,resultMap); } resultMap.put("lastValue",lastWater); double gap = ((currentWater.doubleValue() - lastWater.doubleValue()) / lastWater.doubleValue()) * 100; if (ObjectUtil.isNull(gap)){ gap = 0.0; } BigDecimal bg = new BigDecimal(gap).setScale(2, RoundingMode.UP); resultMap.put("gap",bg); return new Result(ResultCode.SUCCESS,resultMap); } } }