|
@@ -1,6 +1,13 @@
|
|
|
package com.huimv.eartag2.manage2.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.huimv.eartag2.common.dao.entity.EartagAbnormalAlarmEntity;
|
|
|
+import com.huimv.eartag2.common.dao.entity.EartagAbnormalCountEntity;
|
|
|
+import com.huimv.eartag2.common.dao.repo.EartagAbnormalAlarmEntityRepo;
|
|
|
+import com.huimv.eartag2.common.dao.repo.EartagAbnormalCountEntityRepo;
|
|
|
+import com.huimv.eartag2.common.utils.DateUtil;
|
|
|
import com.huimv.eartag2.manage2.mapper.BasePigpenMapper;
|
|
|
import com.huimv.eartag2.manage2.mapper.EartagEartagRegister2Mapper;
|
|
|
import com.huimv.eartag2.manage2.mapper.EartagOnlineStatusMapper;
|
|
@@ -11,9 +18,13 @@ import com.huimv.eartag2.manage2.pojo.SysBaseConfig;
|
|
|
import com.huimv.eartag2.manage2.service.IEartagService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Example;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.swing.text.html.Option;
|
|
|
+import javax.transaction.Transactional;
|
|
|
import java.sql.Timestamp;
|
|
|
+import java.text.ParseException;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
@@ -37,7 +48,7 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
private EartagOnlineStatusMapper eartagOnlineStatusMapper;
|
|
|
|
|
|
@Override
|
|
|
- public void updateEartagLiveStatusAndCount() {
|
|
|
+ public void updateEartagLiveStatusAndCount() throws ParseException {
|
|
|
// {}
|
|
|
List<BasePigpen> basePigpenList = getUnitByPigpen();
|
|
|
System.out.println("basePigpenList.size="+basePigpenList.size());
|
|
@@ -55,12 +66,14 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
}else{
|
|
|
log.error("耳标离线时间属性未配置.");
|
|
|
}
|
|
|
+ JSONArray offlineJa = new JSONArray();
|
|
|
List countList = new ArrayList();
|
|
|
for(BasePigpen basePigpen:basePigpenList){
|
|
|
// System.out.println("basePigpen="+basePigpen);
|
|
|
- String farmId = basePigpen.getFarmCode();
|
|
|
+ String farmCode = basePigpen.getFarmCode();
|
|
|
Integer unitId = basePigpen.getId();
|
|
|
String unitName = basePigpen.getPigpenName();
|
|
|
+ String pigpenName = basePigpen.getPigpenName();
|
|
|
Map countMap = new HashMap<String,Object>();
|
|
|
countList.add(countMap);
|
|
|
int onlineTimes = 0;
|
|
@@ -70,14 +83,13 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
// 用330110002测试
|
|
|
// if(farmId.trim().equalsIgnoreCase("330110002")){
|
|
|
// {读取相关耳标注册记录}
|
|
|
- List<EartagEartagRegister2> eartagEartagRegister2List = getEartagRegister(farmId,unitId);
|
|
|
+ List<EartagEartagRegister2> eartagEartagRegister2List = getEartagRegister(farmCode,unitId);
|
|
|
if(eartagEartagRegister2List.size() == 0){
|
|
|
System.out.println("该单元没有耳标。");
|
|
|
}
|
|
|
System.out.println("该单元没有耳标 eartagEartagRegister2List.size="+eartagEartagRegister2List.size());
|
|
|
for(EartagEartagRegister2 eartagEartagRegister2:eartagEartagRegister2List){
|
|
|
Date lastTime = eartagEartagRegister2.getLastTime();
|
|
|
- System.out.println("lastTime.getTime()="+lastTime.getTime());
|
|
|
long offlineTimeDiff = nowTimestamp.getTime()-lastTime.getTime();
|
|
|
if(offlineTimeDiff/(1000*60) >= offlineTimeDef){
|
|
|
eartagEartagRegister2.setLiveStatus(0);
|
|
@@ -97,7 +109,7 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
eartagEartagRegister2Mapper.updateById(eartagEartagRegister2);
|
|
|
}
|
|
|
// }
|
|
|
- countMap.put("farmId",farmId);
|
|
|
+ countMap.put("farmCode",farmCode);
|
|
|
countMap.put("unitId",unitId);
|
|
|
countMap.put("unitName",unitName);
|
|
|
countMap.put("total",onlineTimes+offlineTimes);
|
|
@@ -105,12 +117,20 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
countMap.put("offline",offlineTimes);
|
|
|
countMap.put("onlineEarmark",onlineSb.toString());
|
|
|
countMap.put("offlineEarmark",offlineSb.toString());
|
|
|
- }
|
|
|
|
|
|
+ //耳标离线报警
|
|
|
+ if(offlineSb.length()>0){
|
|
|
+ JSONObject offlineJo = new JSONObject();
|
|
|
+ offlineJa.add(offlineJo);
|
|
|
+ offlineJo.put("pigpen",pigpenName+unitName);
|
|
|
+ offlineJo.put("earmark",offlineSb.toString());
|
|
|
+ offlineJo.put("farmCode",farmCode);
|
|
|
+ }
|
|
|
+ }
|
|
|
for(int a=0;a<countList.size();a++){
|
|
|
Map countMap = (Map) countList.get(a);
|
|
|
EartagOnlineStatus eartagOnlineStatus = new EartagOnlineStatus();
|
|
|
- eartagOnlineStatus.setFarmId(countMap.get("farmId").toString());
|
|
|
+ eartagOnlineStatus.setFarmId(countMap.get("farmCode").toString());
|
|
|
eartagOnlineStatus.setUnitId(countMap.get("unitId").toString());
|
|
|
eartagOnlineStatus.setUnitName(countMap.get("unitName").toString());
|
|
|
eartagOnlineStatus.setTotal(Integer.parseInt(countMap.get("total").toString()));
|
|
@@ -121,6 +141,70 @@ public class EartagServiceImpl implements IEartagService {
|
|
|
eartagOnlineStatus.setAddTime(nowTimestamp);
|
|
|
eartagOnlineStatusMapper.insert(eartagOnlineStatus);
|
|
|
}
|
|
|
+ //添加异常报警信息
|
|
|
+ saveEartagOfflineAlarm(offlineJa);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private EartagAbnormalAlarmEntityRepo eartagAbnormalAlarmEntityRepo;
|
|
|
+ @Autowired
|
|
|
+ private EartagAbnormalCountEntityRepo eartagAbnormalCountEntityRepo;
|
|
|
+
|
|
|
+ //添加异常报警信息
|
|
|
+ public void saveEartagOfflineAlarm(JSONArray offlineJa) throws ParseException {
|
|
|
+ String todayDateText = new DateUtil().getTodayDateText();
|
|
|
+ java.sql.Date todayDate = new java.sql.Date(new java.util.Date().getTime());
|
|
|
+ Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
|
|
|
+ //耳标离线:6
|
|
|
+ int alarmSort = 6;
|
|
|
+ //耳标:2
|
|
|
+ int alarmFrom = 2;
|
|
|
+ //状态:1
|
|
|
+ int alarmType = 1;
|
|
|
+ int offlineTimes = 0;
|
|
|
+ String farmCode = "";
|
|
|
+ //保存警报信息
|
|
|
+ for(int a=0;a<offlineJa.size();a++){
|
|
|
+ JSONObject offlineJo = offlineJa.getJSONObject(a);
|
|
|
+ String pigpen = offlineJo.getString("pigpen");
|
|
|
+ String earmark = offlineJo.getString("earmark");
|
|
|
+ farmCode = offlineJo.getString("farmCode");
|
|
|
+ String[] earmarkArray = earmark.split(",");
|
|
|
+ offlineTimes += earmarkArray.length;
|
|
|
+ for(int b=0;b<earmarkArray.length;b++){
|
|
|
+ String alarmContent = "离线警报:"+pigpen+"耳标号["+earmarkArray[b]+"]已离线";
|
|
|
+ EartagAbnormalAlarmEntity newEartagAbnormalAlarmEntity = new EartagAbnormalAlarmEntity();
|
|
|
+ newEartagAbnormalAlarmEntity.setFarmCode(farmCode);
|
|
|
+ newEartagAbnormalAlarmEntity.setAddTime(nowTimestamp);
|
|
|
+ newEartagAbnormalAlarmEntity.setAddDate(todayDate);
|
|
|
+ newEartagAbnormalAlarmEntity.setAlarmSort(alarmSort);
|
|
|
+ newEartagAbnormalAlarmEntity.setAlarmType(alarmType);
|
|
|
+ newEartagAbnormalAlarmEntity.setAlarmFrom(alarmFrom);
|
|
|
+ newEartagAbnormalAlarmEntity.setContent(alarmContent);
|
|
|
+ eartagAbnormalAlarmEntityRepo.saveAndFlush(newEartagAbnormalAlarmEntity);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //保存耳标警报次数
|
|
|
+ saveEartagOfflineCount(farmCode,offlineTimes,todayDate,nowTimestamp);
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存耳标警报次数
|
|
|
+ private void saveEartagOfflineCount(String farmCode, int offlineTimes, java.sql.Date todayDate, Timestamp nowTimestamp) {
|
|
|
+ EartagAbnormalCountEntity eartagAbnormalCountEntity = new EartagAbnormalCountEntity();
|
|
|
+ eartagAbnormalCountEntity.setFarmCode(farmCode);
|
|
|
+ eartagAbnormalCountEntity.setAddDate(todayDate);
|
|
|
+ Example<EartagAbnormalCountEntity> example = Example.of(eartagAbnormalCountEntity);
|
|
|
+ Optional<EartagAbnormalCountEntity> optional = eartagAbnormalCountEntityRepo.findOne(example);
|
|
|
+ if(!optional.isPresent()){
|
|
|
+ eartagAbnormalCountEntity.setEartagStatusCount(offlineTimes);
|
|
|
+ eartagAbnormalCountEntity.setEartagStatusUpateTime(nowTimestamp);
|
|
|
+ eartagAbnormalCountEntityRepo.saveAndFlush(eartagAbnormalCountEntity);
|
|
|
+ }else{
|
|
|
+ EartagAbnormalCountEntity queryEartagAbnormalCountEntity = optional.get();
|
|
|
+ queryEartagAbnormalCountEntity.setEartagStatusCount(offlineTimes);
|
|
|
+ queryEartagAbnormalCountEntity.setEartagStatusUpateTime(nowTimestamp);
|
|
|
+ eartagAbnormalCountEntityRepo.saveAndFlush(queryEartagAbnormalCountEntity);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private List<EartagEartagRegister2> getEartagRegister(String farmId, Integer unitId) {
|