|
@@ -0,0 +1,477 @@
|
|
|
+package com.huimv.env.device.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.huimv.env.common.dao.entity.*;
|
|
|
+import com.huimv.env.common.dao.repo.*;
|
|
|
+import com.huimv.env.common.entity.EnvElectricityDay;
|
|
|
+import com.huimv.env.common.entity.EnvElectricityMonth;
|
|
|
+import com.huimv.env.common.entity.EnvWaterDay;
|
|
|
+import com.huimv.env.common.entity.EnvWaterMonth;
|
|
|
+import com.huimv.env.common.service.*;
|
|
|
+import com.huimv.env.common.utils.DateUtil;
|
|
|
+import com.huimv.env.common.utils.MathUtil;
|
|
|
+import com.huimv.env.common.utils.MathUtil2;
|
|
|
+import com.huimv.env.device.config.ConfigBean;
|
|
|
+import com.huimv.env.device.producer.Producer;
|
|
|
+import com.huimv.env.device.service.IDeviceService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
+
|
|
|
+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
|
|
|
+ * @Package : com.huimv.biosafety.uface.controller
|
|
|
+ * @Description : TODO
|
|
|
+ * @Version : 1.0
|
|
|
+ * @Author : ZhuoNing
|
|
|
+ * @Create : 2020-12-25
|
|
|
+ **/
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class DeviceServiceImpl implements IDeviceService {
|
|
|
+ @Autowired
|
|
|
+ private EnvTempEntityRepo envTempEntityRepo;
|
|
|
+ @Autowired
|
|
|
+ private EnvHumiEntityRepo envHumiEntityRepo;
|
|
|
+ @Autowired
|
|
|
+ private EnvAmmoniaEntityRepo envAmmoniaEntityRepo;
|
|
|
+ @Autowired
|
|
|
+ private MathUtil2 mathUtil;
|
|
|
+ @Autowired
|
|
|
+ private DateUtil dateUtil;
|
|
|
+ @Autowired
|
|
|
+ private Producer producer;
|
|
|
+ @Autowired
|
|
|
+ private ISensorRegisterService sensorRegisterService;
|
|
|
+ @Autowired
|
|
|
+ private ConfigBean configBean;
|
|
|
+ @Autowired
|
|
|
+ private IPigpenService pigpenService;
|
|
|
+ @Autowired
|
|
|
+ private EnvWaterGegeEntityRepo envWaterGegeEntityRepo;
|
|
|
+ @Autowired
|
|
|
+ private EnvPhEntityRepo envPhEntityRepo;
|
|
|
+ @Autowired
|
|
|
+ private EnvWaterMeterRepo envWaterMeterRepo;
|
|
|
+ @Autowired
|
|
|
+ private EnvElectricityMeterRepo envElectricityMeterRepo;
|
|
|
+ @Resource
|
|
|
+ private EnvWaterDayService envWaterDayService;
|
|
|
+ @Resource
|
|
|
+ private EnvWaterMonthService envWaterMonthService;
|
|
|
+ @Resource
|
|
|
+ private EnvElectricityDayService envElectricityDayService;
|
|
|
+ @Resource
|
|
|
+ private EnvElectricityMonthService envElectricityMonthService;
|
|
|
+ //保存每天的用水量
|
|
|
+ @Override
|
|
|
+ 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");
|
|
|
+ //查询每天的用水量数据
|
|
|
+ EnvWaterDay envWaterDay = envWaterDayService.getDayWaterConsumption(farmCode,deviceCode,sensorSn,todayDate);
|
|
|
+ System.out.println("envWaterDay="+envWaterDay);
|
|
|
+ if(envWaterDay == null){
|
|
|
+ envWaterDayService.saveDayWater(dataJo,envDeviceRegisterEntity,nowTimestamp,todayDate,farmCode);
|
|
|
+ }else{
|
|
|
+ //读取当天的累加次数
|
|
|
+ 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) {
|
|
|
+ System.out.println("保存每天用电数据 dataJo>>>>>>>>>>>>>>>>>>"+dataJo);
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ String sensorSn = dataJo.getString("sensorSn");
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
+ String year = dateUtil.getThisYear();
|
|
|
+ String month = dateUtil.getThisMonth();
|
|
|
+ //查询每天的用电量数据
|
|
|
+ EnvWaterMonth envWaterMonth = envWaterMonthService.getMonthWaterConsumption(farmCode,deviceCode,sensorSn,year,month);
|
|
|
+ if(envWaterMonth == null){
|
|
|
+ envWaterMonthService.saveMonthWater(dataJo,envDeviceRegisterEntity,nowTimestamp,year,month,farmCode);
|
|
|
+ }else{
|
|
|
+ //计算本月的每天用水量累加
|
|
|
+ float sumDayWaterMeter = sumDayWaterMeterForMonth(farmCode,deviceCode,todayDate);
|
|
|
+ envWaterMonthService.updateMonthWater(sumDayWaterMeter,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) {
|
|
|
+ System.out.println("保存每天用电数据 dataJo>>>>>>>>>>>>>>>>>>"+dataJo);
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ String sensorSn = dataJo.getString("sensorSn");
|
|
|
+ //查询每天的用电量数据
|
|
|
+ EnvElectricityDay envElectricityDay = envElectricityDayService.getDayElectricityConsumption(farmCode,deviceCode,sensorSn,todayDate);
|
|
|
+ System.out.println("envElectricityDay="+envElectricityDay);
|
|
|
+ if(envElectricityDay == null){
|
|
|
+ envElectricityDayService.saveDayElectricity(dataJo,envDeviceRegisterEntity,nowTimestamp,todayDate,farmCode);
|
|
|
+ }else{
|
|
|
+ //读取当天的累加次数
|
|
|
+ float sumElectricityMeter = getSumTodayElectricityMeter(farmCode,deviceCode,todayDate);
|
|
|
+ envElectricityDayService.updateDayElectricity(sumElectricityMeter,envElectricityDay,dataJo,envDeviceRegisterEntity,nowTimestamp,todayDate,farmCode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //累计当天所有电量
|
|
|
+ private float getSumTodayElectricityMeter(String farmCode, String deviceCode, Date todayDate) {
|
|
|
+ List<Object[]> sumList = envElectricityMeterRepo.getSumElectricityMeter(farmCode,deviceCode,todayDate);
|
|
|
+ System.out.println("00000000000000000000 sumList.size="+sumList.size());
|
|
|
+ Object[] sumObj = (Object[]) sumList.get(0);
|
|
|
+ return Float.parseFloat(sumObj[0].toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void saveMonthElectricityConsumption(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ System.out.println("保存每月用水数据 dataJo>>>>>>>>>>>>>>>>>>"+dataJo);
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ String sensorSn = dataJo.getString("sensorSn");
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
+ String year = dateUtil.getThisYear();
|
|
|
+ String month = dateUtil.getThisMonth();
|
|
|
+ //查询每天的用电量数据
|
|
|
+ EnvElectricityMonth envElectricityMonth = envElectricityMonthService.getMonthElectricityConsumption(farmCode,deviceCode,sensorSn,year,month);
|
|
|
+ if(envElectricityMonth == null){
|
|
|
+ envElectricityMonthService.saveMonthElectricity(dataJo,envDeviceRegisterEntity,nowTimestamp,year,month,farmCode);
|
|
|
+ }else{
|
|
|
+ //计算本月的每天用电量量累加
|
|
|
+ float sumDayElectricityMeter = sumDayElectricityMeterForMonth(farmCode,deviceCode,todayDate);
|
|
|
+ envElectricityMonthService.updateMonthElectricity(sumDayElectricityMeter,envElectricityMonth,dataJo,nowTimestamp);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //计算本月的每天用电量量累加
|
|
|
+ private float sumDayElectricityMeterForMonth(String farmCode, String deviceCode, Date todayDate) {
|
|
|
+ DateUtil dateUtil = new DateUtil();
|
|
|
+ java.util.Date startDate = dateUtil.getFirstDayInThisMonth();
|
|
|
+ java.util.Date endDate = dateUtil.getEndDayInThisMonth();
|
|
|
+ return envElectricityDayService.getSumElectricityMeter(farmCode,deviceCode,new java.sql.Date(startDate.getTime()),new java.sql.Date(endDate.getTime()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void sendSensorToMQ(String deviceCode, Integer sensorSn, Timestamp nowTimestamp, Date todayDate, String value, String farmCode, int sensorSort) {
|
|
|
+ JSONObject sensorJo = new JSONObject();
|
|
|
+ sensorJo.put("deviceCode", deviceCode);
|
|
|
+ sensorJo.put("sensorSn", sensorSn);
|
|
|
+ sensorJo.put("timestamp", nowTimestamp);
|
|
|
+ sensorJo.put("todayDate", todayDate);
|
|
|
+ sensorJo.put("value", value);
|
|
|
+ sensorJo.put("farmCode", farmCode);
|
|
|
+ sensorJo.put("sensorSort", sensorSort);
|
|
|
+ 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)) {
|
|
|
+ System.out.println("更新...");
|
|
|
+ //{更新传感器注册信息}
|
|
|
+ sensorRegisterService.updateSensorRegister(deviceCode, sensorSn, nowTimestamp, todayDate, value, farmCode, sensorSort);
|
|
|
+ } else {
|
|
|
+ System.out.println("新建...");
|
|
|
+ //{保存传感器注册信息}
|
|
|
+ sensorRegisterService.saveSensorRegister(deviceCode, sensorSn, nowTimestamp, todayDate, value, farmCode, sensorSort);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存温度流水数据
|
|
|
+ @Override
|
|
|
+ public void saveTempFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ EnvTempEntity envTempEntity = new EnvTempEntity();
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(mathUtil.countTemp(dataJo.getIntValue("value")));
|
|
|
+ envTempEntity.setDeviceCode(deviceCode);
|
|
|
+ envTempEntity.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
+ envTempEntity.setTemp(bigDecimal);
|
|
|
+ envTempEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
+ envTempEntity.setAddTime(nowTimestamp);
|
|
|
+ envTempEntity.setAddDate(todayDate);
|
|
|
+ envTempEntity.setFarmCode(farmCode);
|
|
|
+ envTempEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
|
|
|
+ envTempEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
|
|
|
+ envTempEntity.setDataUnit(dataJo.getString("dataUnit"));
|
|
|
+ envTempEntityRepo.saveAndFlush(envTempEntity);
|
|
|
+ if ("121".equals(deviceCode)){
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ restTemplate.getForObject("http://139.9.167.178:9050/info/saveData/save?type=1&value="+bigDecimal,String.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存湿度流水数据
|
|
|
+ @Override
|
|
|
+ public void saveHumiFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ EnvHumiEntity envHumiEntity = new EnvHumiEntity();
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(mathUtil.countHumi(dataJo.getIntValue("value")));
|
|
|
+
|
|
|
+ envHumiEntity.setDeviceCode(deviceCode);
|
|
|
+ envHumiEntity.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
+ envHumiEntity.setHumi(bigDecimal);
|
|
|
+ envHumiEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
+ envHumiEntity.setAddTime(nowTimestamp);
|
|
|
+ envHumiEntity.setAddDate(todayDate);
|
|
|
+ envHumiEntity.setFarmCode(farmCode);
|
|
|
+ envHumiEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
|
|
|
+ envHumiEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
|
|
|
+ envHumiEntity.setDataUnit(dataJo.getString("dataUnit"));
|
|
|
+ envHumiEntityRepo.saveAndFlush(envHumiEntity);
|
|
|
+ if ("121".equals(deviceCode)){
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ restTemplate.getForObject("http://139.9.167.178:9050/info/saveData/save?type=2&value="+bigDecimal,String.class);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存氨气流水数据
|
|
|
+ @Override
|
|
|
+ public void saveAmmoniaFlow(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ EnvAmmoniaEntity envAmmoniaEntity = new EnvAmmoniaEntity();
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(mathUtil.countMeter(dataJo.getIntValue("value")));
|
|
|
+ envAmmoniaEntity.setDeviceCode(deviceCode);
|
|
|
+ envAmmoniaEntity.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
+ envAmmoniaEntity.setAmmonia(bigDecimal);
|
|
|
+ envAmmoniaEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
+ envAmmoniaEntity.setAddTime(nowTimestamp);
|
|
|
+ envAmmoniaEntity.setAddDate(todayDate);
|
|
|
+ envAmmoniaEntity.setFarmCode(farmCode);
|
|
|
+ envAmmoniaEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
|
|
|
+ envAmmoniaEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
|
|
|
+ envAmmoniaEntity.setDataUnit(dataJo.getString("dataUnit"));
|
|
|
+ envAmmoniaEntityRepo.saveAndFlush(envAmmoniaEntity);
|
|
|
+ System.out.println("111111111"+deviceCode + " " +bigDecimal);
|
|
|
+ if ("121".equals(deviceCode)){
|
|
|
+ RestTemplate restTemplate = new RestTemplate();
|
|
|
+ String forObject = restTemplate.getForObject("http://139.9.167.178:9050/info/saveData/save?type=3&value=" + bigDecimal, String.class);
|
|
|
+ System.out.println("2222222"+forObject);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //保存水压流水数据
|
|
|
+ @Override
|
|
|
+ public void saveWaterGege(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ EnvWaterGege envAmmoniaEntity = new EnvWaterGege();
|
|
|
+ envAmmoniaEntity.setDeviceCode(dataJo.getString("deviceCode"));
|
|
|
+ envAmmoniaEntity.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
+ envAmmoniaEntity.setWaterGege(new BigDecimal(dataJo.getIntValue("value")));
|
|
|
+ envAmmoniaEntity.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
+ envAmmoniaEntity.setAddTime(nowTimestamp);
|
|
|
+ envAmmoniaEntity.setAddDate(todayDate);
|
|
|
+ envAmmoniaEntity.setFarmCode(farmCode);
|
|
|
+ envAmmoniaEntity.setPigpenId(envDeviceRegisterEntity.getPigpenId());
|
|
|
+ envAmmoniaEntity.setUnitId(envDeviceRegisterEntity.getUnitId());
|
|
|
+ envAmmoniaEntity.setDataUnit(dataJo.getString("dataUnit"));
|
|
|
+ envWaterGegeEntityRepo.saveAndFlush(envAmmoniaEntity);
|
|
|
+ }
|
|
|
+ //保存PH
|
|
|
+ @Override
|
|
|
+ public void savePH(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ EnvPh envPh = new EnvPh();
|
|
|
+ envPh.setDeviceCode(dataJo.getString("deviceCode"));
|
|
|
+ envPh.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
+ envPh.setPh(new BigDecimal(mathUtil.countMeter(dataJo.getIntValue("value"))));
|
|
|
+ envPh.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
+ envPh.setAddTime(nowTimestamp);
|
|
|
+ envPh.setAddDate(todayDate);
|
|
|
+ envPh.setFarmCode(farmCode);
|
|
|
+ envPh.setPigpenId(envDeviceRegisterEntity.getPigpenId());
|
|
|
+ envPh.setUnitId(envDeviceRegisterEntity.getUnitId());
|
|
|
+ envPh.setDataUnit(dataJo.getString("dataUnit"));
|
|
|
+ envPhEntityRepo.saveAndFlush(envPh);
|
|
|
+ }
|
|
|
+ //保存水表
|
|
|
+ @Override
|
|
|
+ public void saveWaterMeter(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ int newValueData = dataJo.getIntValue("value");
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ EnvWaterMeter envWaterMeterData = envWaterMeterRepo.getOneByMaxId(deviceCode);
|
|
|
+ Integer lastWaterMeterData ;
|
|
|
+ Integer value = 0;
|
|
|
+ if (envWaterMeterData ==null || envWaterMeterData.getWaterMeterData() ==null){
|
|
|
+ lastWaterMeterData = 0;
|
|
|
+ }else {
|
|
|
+ lastWaterMeterData = envWaterMeterData.getWaterMeterData();
|
|
|
+ }
|
|
|
+ if (newValueData >= lastWaterMeterData){
|
|
|
+ value = newValueData - lastWaterMeterData;
|
|
|
+ }else {
|
|
|
+ value = newValueData;
|
|
|
+ }
|
|
|
+ EnvWaterMeter envWaterMeter = new EnvWaterMeter();
|
|
|
+ envWaterMeter.setDeviceCode(deviceCode);
|
|
|
+ envWaterMeter.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
+ envWaterMeter.setWaterMeter(new BigDecimal(mathUtil.countMeter(value)));
|
|
|
+ envWaterMeter.setWaterMeterData(newValueData);
|
|
|
+ envWaterMeter.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
+ envWaterMeter.setAddTime(nowTimestamp);
|
|
|
+ envWaterMeter.setAddDate(todayDate);
|
|
|
+ envWaterMeter.setFarmCode(farmCode);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存电表
|
|
|
+ @Override
|
|
|
+ public void saveElectricityMeter(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity, Timestamp nowTimestamp, Date todayDate, String farmCode) {
|
|
|
+ int valueData = dataJo.getIntValue("value");
|
|
|
+ String deviceCode = dataJo.getString("deviceCode");
|
|
|
+ EnvElectricityMeter envElectricityMeterData = envElectricityMeterRepo.getOneByMaxId(deviceCode);
|
|
|
+ Integer electricityMeterData ;
|
|
|
+ Integer value = 0;
|
|
|
+ if (ObjectUtil.isEmpty(envElectricityMeterData)|| envElectricityMeterData.getElectricityMeterData() ==null){
|
|
|
+ electricityMeterData = 0;
|
|
|
+ }else {
|
|
|
+ electricityMeterData = envElectricityMeterData.getElectricityMeterData();
|
|
|
+ }
|
|
|
+ if (valueData >= electricityMeterData){
|
|
|
+ value = valueData-electricityMeterData;
|
|
|
+ }else {
|
|
|
+ value = 0;
|
|
|
+ }
|
|
|
+ EnvElectricityMeter envElectricityMeter = new EnvElectricityMeter();
|
|
|
+ envElectricityMeter.setDeviceCode(dataJo.getString("deviceCode"));
|
|
|
+ envElectricityMeter.setSensorSn(dataJo.getInteger("sensorSn"));
|
|
|
+ envElectricityMeter.setElectricityMeter(new BigDecimal(value));
|
|
|
+ envElectricityMeter.setElectricityMeterData(valueData);
|
|
|
+ envElectricityMeter.setAskTime(dateUtil.handleAskTime(dataJo.getString("askTime")));
|
|
|
+ envElectricityMeter.setAddTime(nowTimestamp);
|
|
|
+ envElectricityMeter.setAddDate(todayDate);
|
|
|
+ envElectricityMeter.setFarmCode(farmCode);
|
|
|
+ envElectricityMeter.setPigpenId(envDeviceRegisterEntity.getPigpenId());
|
|
|
+ envElectricityMeter.setUnitId(envDeviceRegisterEntity.getUnitId());
|
|
|
+ envElectricityMeter.setDataUnit(dataJo.getString("dataUnit"));
|
|
|
+ envElectricityMeterRepo.saveAndFlush(envElectricityMeter);
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+ @Override
|
|
|
+ public JSONObject handleAskText(String askText) {
|
|
|
+ String[] dataArray = askText.split("\\+");
|
|
|
+ return buildDataObj(dataArray);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String getMessageContent(JSONObject dataJo, EnvDeviceRegisterEntity envDeviceRegisterEntity) {
|
|
|
+ String act = configBean.getAct();
|
|
|
+ String fault = configBean.getFault();
|
|
|
+ log.info("所有故障类型="+fault);
|
|
|
+ log.info("所有动作类型="+act);
|
|
|
+ int faultSn = dataJo.getInteger("faultSn");
|
|
|
+ int actType = dataJo.getInteger("actType");
|
|
|
+ //
|
|
|
+ String faultText = getFaultText(faultSn, fault);
|
|
|
+ log.info("当前故障="+faultText);
|
|
|
+ //1:报警 2:恢复
|
|
|
+ String actText = getActText(actType, act);
|
|
|
+ log.info("当前操作="+actText);
|
|
|
+ String messageConent = "";
|
|
|
+ if (actType == 1) {
|
|
|
+ if (faultText.indexOf("报警") == -1) {
|
|
|
+ messageConent = faultText + actText;
|
|
|
+ } else {
|
|
|
+ messageConent = faultText;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ messageConent = faultText+"已"+actText;
|
|
|
+ }
|
|
|
+ //获取栋舍
|
|
|
+ String pigpenName = pigpenService.getPigpenByDevice(dataJo.getString("deviceCode"));
|
|
|
+ //芯片ID
|
|
|
+ String chipId = envDeviceRegisterEntity.getChipId();
|
|
|
+ //2栋的芯片ID[86178908]高温报警
|
|
|
+ return "["+pigpenName+"]芯片ID为["+chipId+"]的设备提示:"+messageConent;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject handleSprayStatusAskCmd(String askText) {
|
|
|
+ String[] dataArray = askText.split("\\+");
|
|
|
+ JSONObject dataJo = new JSONObject();
|
|
|
+ dataJo.put("deviceCode",dataArray[1]);
|
|
|
+ dataJo.put("sprayStatus",dataArray[3]);
|
|
|
+ dataJo.put("askTime",dataArray[4]);
|
|
|
+ return dataJo;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private String getActText(int actType, String act) {
|
|
|
+ String[] actGroupArray = act.split(",");
|
|
|
+ String actText = "";
|
|
|
+ for (int a = 0; a < actGroupArray.length; a++) {
|
|
|
+ String actGroup = actGroupArray[a];
|
|
|
+ String[] actArray = actGroup.split(":");
|
|
|
+ JSONObject newJo = new JSONObject();
|
|
|
+ newJo.put("id", actArray[0]);
|
|
|
+ newJo.put("fault", actArray[1]);
|
|
|
+ if (Integer.parseInt(actArray[0]) == actType) {
|
|
|
+ actText = actArray[1];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return actText;
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+ private String getFaultText(int faultSn, String fault) {
|
|
|
+ String[] faultGroupArray = fault.split(",");
|
|
|
+ String faultText = "";
|
|
|
+ for (int a = 0; a < faultGroupArray.length; a++) {
|
|
|
+ String falutGroup = faultGroupArray[a];
|
|
|
+ String[] faultArray = falutGroup.split(":");
|
|
|
+ if (Integer.parseInt(faultArray[0]) == faultSn) {
|
|
|
+ faultText = faultArray[1];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return faultText;
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+ public JSONObject buildDataObj(String[] dataArray) {
|
|
|
+ JSONObject dataJo = new JSONObject();
|
|
|
+ dataJo.put("deviceCode", dataArray[1]);
|
|
|
+ dataJo.put("cmd", dataArray[2]);
|
|
|
+ dataJo.put("sensorSn", dataArray[3]);
|
|
|
+ dataJo.put("value", dataArray[4]);
|
|
|
+ dataJo.put("askTime", dataArray[5]);
|
|
|
+ return dataJo;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|