|
@@ -61,29 +61,103 @@ public class EnvironImpl implements IEnviron {
|
|
|
*/
|
|
|
@Override
|
|
|
public void handleEnvironJSONObject(String data) throws ParseException {
|
|
|
+ System.out.println("接收数据>>"+data);
|
|
|
// JSONObject deviceJo = JSON.parseObject(data);
|
|
|
EnvHourEntity envHourEntity = JSON.parseObject(data, EnvHourEntity.class);
|
|
|
envHourRepo.save(envHourEntity);
|
|
|
|
|
|
Integer farmId = envHourEntity.getFarmId();
|
|
|
// String todayDateText = dateUtil.formatTimestampToDate(envHourEntity.getAddTime());
|
|
|
+// String todayDateTimeText = dateUtil.formatTimestampToDatetime(envHourEntity.getDatetime());
|
|
|
+// System.out.println(">>>>>>>>>>> 采样时间 todayDateTimeText>>"+todayDateTimeText);
|
|
|
String todayDateText = dateUtil.formatTimestampToDate(envHourEntity.getDatetime());
|
|
|
- //计算每天平均数量
|
|
|
- countDayAvgEnviron(farmId, todayDateText);
|
|
|
+// System.out.println(">>>>>>>>>>> 采样日期 todayDateText>>"+todayDateText);
|
|
|
+
|
|
|
+ //计算每天平均数据
|
|
|
+ countDayAvgEnviron2(farmId, todayDateText);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 计算每天都平均数据
|
|
|
+ public void countDayAvgEnviron2(Integer farmId, String todayDateText) throws ParseException {
|
|
|
+ System.out.println("计算每天的环保数据");
|
|
|
+ System.out.println("farmId="+farmId);
|
|
|
+ System.out.println("todayDateText="+todayDateText);
|
|
|
+ //计算平均数
|
|
|
+ List<Object[]> envHourEntityList = envHourRepo.findByFarmIdAndDate(farmId, todayDateText);
|
|
|
+ System.out.println("每天小时采集数envHourEntityList.size>>"+envHourEntityList.size());
|
|
|
+
|
|
|
+ if (envHourEntityList.size() > 0) {
|
|
|
+ //更新新数据
|
|
|
+ JSONArray dataJa = new JSONArray();
|
|
|
+ for (int a = 0; a < envHourEntityList.size(); a++) {
|
|
|
+ JSONObject dataJo = new JSONObject();
|
|
|
+ dataJa.add(dataJo);
|
|
|
+ Object[] avgObj = (Object[]) envHourEntityList.get(a);
|
|
|
+ dataJo.put("cod", avgObj[2]);
|
|
|
+ dataJo.put("ad", avgObj[3]);
|
|
|
+ dataJo.put("ph", avgObj[4]);
|
|
|
+ dataJo.put("ws", avgObj[5]);
|
|
|
+ }
|
|
|
+ BigDecimal codBd = new BigDecimal(0);
|
|
|
+ BigDecimal adBd = new BigDecimal(0);
|
|
|
+ BigDecimal phBd = new BigDecimal(0);
|
|
|
+ BigDecimal wsBd = new BigDecimal(0);
|
|
|
+
|
|
|
+ for (int a = 0; a < dataJa.size(); a++) {
|
|
|
+ JSONObject dataJo = dataJa.getJSONObject(a);
|
|
|
+ codBd = new BigDecimal(dataJo.getString("cod")).add(codBd);
|
|
|
+ adBd = new BigDecimal(dataJo.getString("ad")).add(adBd);
|
|
|
+ phBd = new BigDecimal(dataJo.getString("ph")).add(phBd);
|
|
|
+ wsBd = new BigDecimal(dataJo.getString("ws")).add(wsBd);
|
|
|
+ }
|
|
|
+ //精度位数
|
|
|
+ int bit = 3;
|
|
|
+ double codDouble = codBd.divide(new BigDecimal(dataJa.size()), 3, BigDecimal.ROUND_HALF_UP).setScale(bit, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ double adDouble = adBd.divide(new BigDecimal(dataJa.size()), 3, BigDecimal.ROUND_HALF_UP).setScale(bit, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ double phDouble = phBd.divide(new BigDecimal(dataJa.size()), 3, BigDecimal.ROUND_HALF_UP).setScale(bit, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ double wsDouble = wsBd.divide(new BigDecimal(dataJa.size()), 3, BigDecimal.ROUND_HALF_UP).setScale(bit, BigDecimal.ROUND_HALF_UP).doubleValue();
|
|
|
+ Optional<EnvDayEntity> option = envDayRepo.findByFarmIdAndDate(farmId, todayDateText);
|
|
|
+ if(option.isPresent()){
|
|
|
+ System.out.println("更新数据");
|
|
|
+ //更新数据
|
|
|
+ EnvDayEntity envDayEntity = option.get();
|
|
|
+ envDayEntity.setAd(String.valueOf(adDouble));
|
|
|
+ envDayEntity.setCod(String.valueOf(codDouble));
|
|
|
+ envDayEntity.setPh(String.valueOf(phDouble));
|
|
|
+ envDayEntity.setWs(String.valueOf(wsDouble));
|
|
|
+ envDayEntity.setFarmId(farmId);
|
|
|
+ envDayEntity.setAddDate(dateUtil.parseDate(todayDateText));
|
|
|
+ //保存
|
|
|
+ envDayRepo.saveAndFlush(envDayEntity);
|
|
|
+ }else{
|
|
|
+ System.out.println("增加新数据");
|
|
|
+ //增加新数据
|
|
|
+ EnvDayEntity envDayEntity = new EnvDayEntity();
|
|
|
+ envDayEntity.setAd(String.valueOf(adDouble));
|
|
|
+ envDayEntity.setCod(String.valueOf(codDouble));
|
|
|
+ envDayEntity.setPh(String.valueOf(phDouble));
|
|
|
+ envDayEntity.setWs(String.valueOf(wsDouble));
|
|
|
+ envDayEntity.setFarmId(farmId);
|
|
|
+ envDayEntity.setAddDate(dateUtil.parseDate(todayDateText));
|
|
|
+ //保存
|
|
|
+ envDayRepo.saveAndFlush(envDayEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void countDayAvgEnviron(Integer farmId, String todayDateText) throws ParseException {
|
|
|
-// System.out.println("farmId="+farmId);
|
|
|
-// System.out.println("todayDateText="+todayDateText);
|
|
|
+ System.out.println("计算每天的环保数据");
|
|
|
+ System.out.println("farmId="+farmId);
|
|
|
+ System.out.println("todayDateText="+todayDateText);
|
|
|
//计算平均数
|
|
|
List<Object[]> envHourEntityList = envHourRepo.findByFarmIdAndDate(farmId, todayDateText);
|
|
|
System.out.println("每天小时采集数envHourEntityList.size>>"+envHourEntityList.size());
|
|
|
|
|
|
if (envHourEntityList.size() > 0) {
|
|
|
//删除旧数据
|
|
|
- envHourRepo.removeByFarmIdAndDate(farmId, todayDateText);
|
|
|
-
|
|
|
+// envHourRepo.removeByFarmIdAndDate(farmId, todayDateText);
|
|
|
+ envDayRepo.removeByFarmIdAndDate(farmId, todayDateText);
|
|
|
|
|
|
JSONArray dataJa = new JSONArray();
|
|
|
for (int a = 0; a < envHourEntityList.size(); a++) {
|