|
@@ -23,6 +23,8 @@ import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.sql.Date;
|
|
|
import java.sql.Timestamp;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* @Project : huimv.shiwan
|
|
@@ -53,16 +55,12 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
private ConfigBean configBean;
|
|
|
@Autowired
|
|
|
private IPigpenService pigpenService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private EnvWaterGegeEntityRepo envWaterGegeEntityRepo;
|
|
|
-
|
|
|
@Autowired
|
|
|
private EnvPhEntityRepo envPhEntityRepo;
|
|
|
-
|
|
|
@Autowired
|
|
|
private EnvWaterMeterRepo envWaterMeterRepo;
|
|
|
-
|
|
|
@Autowired
|
|
|
private EnvElectricityMeterRepo envElectricityMeterRepo;
|
|
|
@Resource
|
|
@@ -76,8 +74,9 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
|
|
|
//保存每天的用水量
|
|
|
@Override
|
|
|
- public void saveDayWaterConsumption(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ public void saveDayWaterConsumption(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) throws ParseException {
|
|
|
System.out.println("保存每天用电数据 dataJo>>>>>>>>>>>>>>>>>>"+dataJo);
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
String deviceCode = dataJo.getString("deviceCode");
|
|
|
String sensorSn = dataJo.getString("sensorSn");
|
|
|
//查询每天的用水量数据
|
|
@@ -85,10 +84,27 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
if(envWaterDay == null){
|
|
|
envWaterDayService.saveDayWater(dataJo,envDeviceRegisterEntity,nowTimestamp,todayDate,farmCode);
|
|
|
}else{
|
|
|
- envWaterDayService.updateDayWater(envWaterDay,dataJo,envDeviceRegisterEntity,nowTimestamp,todayDate,farmCode);
|
|
|
+ System.out.println(dateUtil.getTodayMissionText()+"+ 计算当天的总用水量 farmCode >>"+farmCode);
|
|
|
+ System.out.println(dateUtil.getTodayMissionText()+"+ 计算当天的总用水量 deviceCode >>"+deviceCode);
|
|
|
+ System.out.println(dateUtil.getTodayMissionText()+"+ 计算当天的总用水量 todayDate >>"+todayDate);
|
|
|
+ //读取当天的累加次数
|
|
|
+ float sumWaterMeter = getSumTodayWaterMeter(farmCode,deviceCode,todayDate);
|
|
|
+ System.out.println(dateUtil.getTodayMissionText()+" sumWaterMeter 每天的用水量累加 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> "+sumWaterMeter);
|
|
|
+ if(sumWaterMeter != 0.0){
|
|
|
+ envWaterDayService.updateDayWater(sumWaterMeter,envWaterDay,dataJo,envDeviceRegisterEntity,nowTimestamp,todayDate,farmCode);
|
|
|
+ }else{
|
|
|
+ System.out.println("sumWaterMeter==0,不用更新");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //获取累加结果
|
|
|
+ private float getSumTodayWaterMeter(String farmCode,String deviceCode, Date todayDate) {
|
|
|
+ List<Object[]> sumList = envWaterMeterRepo.getSumWaterMeter(farmCode,deviceCode,todayDate);
|
|
|
+ Object[] sumObj = (Object[]) sumList.get(0);
|
|
|
+ return Float.parseFloat(sumObj[0].toString());
|
|
|
+ }
|
|
|
+
|
|
|
//保存每月的用水量
|
|
|
@Override
|
|
|
public void saveMonthWaterConsumption(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
@@ -103,10 +119,20 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
if(envWaterMonth == null){
|
|
|
envWaterMonthService.saveMonthWater(dataJo,envDeviceRegisterEntity,nowTimestamp,year,month,farmCode);
|
|
|
}else{
|
|
|
+ //计算本月的每天用水量累加
|
|
|
+ float sumWaterMeter = sumDayWaterMeterForMonth(farmCode,deviceCode,todayDate);
|
|
|
envWaterMonthService.updateMonthWater(envWaterMonth,dataJo,nowTimestamp,year,month,farmCode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //累加计算本月水量
|
|
|
+ private float sumDayWaterMeterForMonth(String farmCode,String deviceCode, Date todayDate) {
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
+ java.util.Date startDate = dateUtil.getFirstDayInThisMonth();
|
|
|
+ java.util.Date endDate = dateUtil.getEndDayInThisMonth();
|
|
|
+ return envWaterDayService.getSumWaterMeter(farmCode,deviceCode,new java.sql.Date(startDate.getTime()),new java.sql.Date(endDate.getTime()));
|
|
|
+ }
|
|
|
+
|
|
|
//保存每天的用电量
|
|
|
@Override
|
|
|
public void saveDayElectricityConsumption(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
@@ -152,7 +178,6 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
producer.sendSensorAskToMQ(sensorJo);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//更新传感器数据
|
|
|
private void updateSensorRegister(String deviceCode, int sensorSn, Timestamp nowTimestamp, Date todayDate, String value, String farmCode, int sensorSort) {
|
|
|
if (sensorRegisterService.isExistSensorRegister(deviceCode, sensorSn, farmCode, sensorSort)) {
|
|
@@ -251,30 +276,26 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
//保存水表
|
|
|
@Override
|
|
|
public void saveWaterMeter(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
- int valueData = dataJo.getIntValue("value");
|
|
|
+ int newValueData = dataJo.getIntValue("value");
|
|
|
String deviceCode = dataJo.getString("deviceCode");
|
|
|
EnvWaterMeter envWaterMeterData = envWaterMeterRepo.getOneByMaxId(deviceCode);
|
|
|
- Integer waterMeterData ;
|
|
|
+ Integer lastWaterMeterData ;
|
|
|
Integer value = 0;
|
|
|
-
|
|
|
if (envWaterMeterData ==null || envWaterMeterData.getWaterMeterData() ==null){
|
|
|
- waterMeterData = 0;
|
|
|
+ lastWaterMeterData = 0;
|
|
|
}else {
|
|
|
- waterMeterData =envWaterMeterData.getWaterMeterData();
|
|
|
+ lastWaterMeterData = envWaterMeterData.getWaterMeterData();
|
|
|
}
|
|
|
-
|
|
|
- if (valueData >= waterMeterData){
|
|
|
- value = valueData-waterMeterData;
|
|
|
+ if (newValueData >= lastWaterMeterData){
|
|
|
+ value = newValueData - lastWaterMeterData;
|
|
|
}else {
|
|
|
- value = valueData;
|
|
|
+ value = newValueData;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
EnvWaterMeter envWaterMeter = new EnvWaterMeter();
|
|
|
envWaterMeter.setDeviceCode(deviceCode);
|
|
|
envWaterMeter.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
envWaterMeter.setWaterMeter(new BigDecimal(mathUtil.countMeter(value)));
|
|
|
- envWaterMeter.setWaterMeterData(valueData);
|
|
|
+ envWaterMeter.setWaterMeterData(newValueData);
|
|
|
envWaterMeter.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
envWaterMeter.setAddTime(nowTimestamp);
|
|
|
envWaterMeter.setAddDate(todayDate);
|
|
@@ -282,6 +303,8 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
envWaterMeter.setPigpenId(envDeviceRegisterEntity.getPigpenId());
|
|
|
envWaterMeter.setUnitId(envDeviceRegisterEntity.getUnitId());
|
|
|
envWaterMeter.setDataUnit(dataJo.getString("dataUnit"));
|
|
|
+ System.out.println("已经保存水量流水数据 >>");
|
|
|
+ System.out.println("envWaterMeter >> "+envWaterMeter.toString());
|
|
|
envWaterMeterRepo.saveAndFlush(envWaterMeter);
|
|
|
}
|
|
|
|