|
@@ -0,0 +1,143 @@
|
|
|
+package com.huimv.eartag2.manage2.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.huimv.eartag2.common.dao.entity.SysBaseConfigEntity;
|
|
|
+import com.huimv.eartag2.common.dao.repo.SysBaseConfigEntityRepo;
|
|
|
+import com.huimv.eartag2.manage2.mapper.BasePigpenMapper;
|
|
|
+import com.huimv.eartag2.manage2.mapper.EartagEartagRegister2Mapper;
|
|
|
+import com.huimv.eartag2.manage2.mapper.EartagOnlineStatusMapper;
|
|
|
+import com.huimv.eartag2.manage2.mapper.SysBaseConfigMapper;
|
|
|
+import com.huimv.eartag2.manage2.pojo.BasePigpen;
|
|
|
+import com.huimv.eartag2.manage2.pojo.EartagEartagRegister2;
|
|
|
+import com.huimv.eartag2.manage2.pojo.EartagOnlineStatus;
|
|
|
+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.stereotype.Service;
|
|
|
+
|
|
|
+import java.sql.Timestamp;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Project :
|
|
|
+ * @Package :
|
|
|
+ * @Description : TODO
|
|
|
+ * @Version : 1.0
|
|
|
+ * @Author : ZhuoNing
|
|
|
+ * @Create : 2020-12-25
|
|
|
+ **/
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class EartagServiceImpl implements IEartagService {
|
|
|
+ @Autowired
|
|
|
+ private BasePigpenMapper basePigpenMapper;
|
|
|
+ @Autowired
|
|
|
+ private EartagEartagRegister2Mapper eartagEartagRegister2Mapper;
|
|
|
+ @Autowired
|
|
|
+ private com.huimv.eartag2.manage2.mapper.SysBaseConfigMapper SysBaseConfigMapper;
|
|
|
+ @Autowired
|
|
|
+ private EartagOnlineStatusMapper eartagOnlineStatusMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateEartagLiveStatusAndCount() {
|
|
|
+ System.out.println("updateEartagLiveStatusAndCount 123");
|
|
|
+ // {}
|
|
|
+ List<BasePigpen> basePigpenList = getUnitByPigpen();
|
|
|
+ System.out.println("basePigpenList.size="+basePigpenList.size());
|
|
|
+ if(basePigpenList.size()==0){
|
|
|
+ System.out.println("单元数为0");
|
|
|
+ }
|
|
|
+ Timestamp nowTimestamp = new Timestamp(new java.util.Date().getTime());
|
|
|
+ int offlineTimeDef = 30;
|
|
|
+ Map confMap = new HashMap();
|
|
|
+ confMap.put("config_key","eartagOfflineTime");
|
|
|
+ List<SysBaseConfig> configList = SysBaseConfigMapper.selectByMap(confMap);
|
|
|
+ if(configList.size()>0){
|
|
|
+ offlineTimeDef = Integer.parseInt(configList.get(0).getConfigValue());
|
|
|
+ log.info("耳标离线时间="+offlineTimeDef);
|
|
|
+ }else{
|
|
|
+ log.error("耳标离线时间属性未配置.");
|
|
|
+ }
|
|
|
+ List countList = new ArrayList();
|
|
|
+ for(BasePigpen basePigpen:basePigpenList){
|
|
|
+// System.out.println("basePigpen="+basePigpen);
|
|
|
+ String farmId = basePigpen.getFarmCode();
|
|
|
+ Integer unitId = basePigpen.getId();
|
|
|
+ String unitName = basePigpen.getPigpenName();
|
|
|
+ Map countMap = new HashMap<String,Object>();
|
|
|
+ countList.add(countMap);
|
|
|
+ int onlineTimes = 0;
|
|
|
+ int offlineTimes = 0;
|
|
|
+ StringBuilder onlineSb = new StringBuilder();
|
|
|
+ StringBuilder offlineSb = new StringBuilder();
|
|
|
+ // 用330110002测试
|
|
|
+ if(farmId.trim().equalsIgnoreCase("330110002")){
|
|
|
+ // {读取相关耳标注册记录}
|
|
|
+ List<EartagEartagRegister2> eartagEartagRegister2List = getEartagRegister(farmId,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);
|
|
|
+ offlineTimes++;
|
|
|
+ if(offlineSb.length()>0){
|
|
|
+ offlineSb.append(",");
|
|
|
+ }
|
|
|
+ offlineSb.append(eartagEartagRegister2.getEarmark());
|
|
|
+ }else{
|
|
|
+ eartagEartagRegister2.setLiveStatus(1);
|
|
|
+ onlineTimes++;
|
|
|
+ if(onlineSb.length()>0){
|
|
|
+ onlineSb.append(",");
|
|
|
+ }
|
|
|
+ onlineSb.append(eartagEartagRegister2.getEarmark());
|
|
|
+ }
|
|
|
+ eartagEartagRegister2Mapper.updateById(eartagEartagRegister2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ countMap.put("farmId",farmId);
|
|
|
+ countMap.put("unitId",unitId);
|
|
|
+ countMap.put("unitName",unitName);
|
|
|
+ countMap.put("total",onlineTimes+offlineTimes);
|
|
|
+ countMap.put("online",onlineTimes);
|
|
|
+ countMap.put("offline",offlineTimes);
|
|
|
+ countMap.put("onlineEarmark",onlineSb.toString());
|
|
|
+ countMap.put("offlineEarmark",offlineSb.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ 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.setUnitId(countMap.get("unitId").toString());
|
|
|
+ eartagOnlineStatus.setUnitName(countMap.get("unitName").toString());
|
|
|
+ eartagOnlineStatus.setTotal(Integer.parseInt(countMap.get("total").toString()));
|
|
|
+ eartagOnlineStatus.setOnline(Integer.parseInt(countMap.get("online").toString()));
|
|
|
+ eartagOnlineStatus.setOffline(Integer.parseInt(countMap.get("offline").toString()));
|
|
|
+ eartagOnlineStatus.setOnlineEarmark(countMap.get("onlineEarmark").toString());
|
|
|
+ eartagOnlineStatus.setOfflineEarmark(countMap.get("offlineEarmark").toString());
|
|
|
+ eartagOnlineStatus.setAddTime(nowTimestamp);
|
|
|
+ eartagOnlineStatusMapper.insert(eartagOnlineStatus);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<EartagEartagRegister2> getEartagRegister(String farmId, Integer unitId) {
|
|
|
+ HashMap paramsMap = new HashMap();
|
|
|
+ paramsMap.put("farm_id",farmId);
|
|
|
+ paramsMap.put("unit_id",unitId);
|
|
|
+ return eartagEartagRegister2Mapper.selectByMap(paramsMap);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<BasePigpen> getUnitByPigpen(){
|
|
|
+ QueryWrapper<BasePigpen> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("f_type","2");
|
|
|
+ return basePigpenMapper.selectList(queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|