Browse Source

定时器

Newspaper 1 year ago
parent
commit
7d691d521e

+ 121 - 88
snowy-web-app/src/main/java/vip/xiaonuo/Timer/ProEnergyData.java

@@ -98,118 +98,151 @@ public class ProEnergyData implements CommonTimerTaskRunner {
                     .eq(WarningRemind::getWarningTypeId, envWarning.getId())
                     .eq(WarningRemind::getOrgId, orgId).eq(WarningRemind::getUnitId, pigpenId));
 
-            if (ObjectUtil.isNotEmpty(warningRemind)){
-                if (warningRemind.getTodayNoRemind() != 1){
-                    EnergyThreshold energyThreshold = energyThresholdMapper.selectOne(new QueryWrapper<EnergyThreshold>().lambda().eq(EnergyThreshold::getOrgId, orgId).eq(EnergyThreshold::getUnitId, pigpenId).eq(EnergyThreshold::getIsEnable,1));
-                    if (ObjectUtil.isNotEmpty(energyThreshold)){
-                        WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
-                        if (ObjectUtil.isNotEmpty(warningManager)){
-                            BigDecimal waterLower = energyThreshold.getWaterLower();
-                            if (water.compareTo(waterLower) < 0){
-                                WarningInfo warningInfo = new WarningInfo();
+            if (ObjectUtil.isNotEmpty(warningRemind)) {
+                if (warningRemind.getTodayNoRemind() != 1) {
+                    EnergyThreshold energyThreshold = energyThresholdMapper.selectOne(new QueryWrapper<EnergyThreshold>().lambda().eq(EnergyThreshold::getOrgId, orgId).eq(EnergyThreshold::getUnitId, pigpenId).eq(EnergyThreshold::getIsEnable, 1));
+                    if (ObjectUtil.isNotEmpty(energyThreshold)) {
+                        BigDecimal waterLower = energyThreshold.getWaterLower();
+                        if (water.compareTo(waterLower) < 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("用水" + water + "吨低于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("用水"+water+"吨低于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
-                                TaskInspection taskInspection = new TaskInspection();
-                                taskInspection.setNotifierId(warningManager.getSecondManagerId());
-                                taskInspection.setOrgId(orgId);
-                                taskInspection.setWarningId(warningInfo.getId());
-                                taskInspectionMapper.insert(taskInspection);
                             }
-                            BigDecimal waterUpper = energyThreshold.getWaterUpper();
-                            if (water.compareTo(waterUpper) > 0){
-                                WarningInfo warningInfo = new WarningInfo();
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        BigDecimal waterUpper = energyThreshold.getWaterUpper();
+                        if (water.compareTo(waterUpper) > 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("用水" + water + "吨高于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("用水"+water+"吨高于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
                             }
-                            BigDecimal electricityLower = energyThreshold.getElectricityLower();
-                            if (ele.compareTo(electricityLower) < 0){
-                                WarningInfo warningInfo = new WarningInfo();
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        BigDecimal electricityLower = energyThreshold.getElectricityLower();
+                        if (ele.compareTo(electricityLower) < 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("用电" + ele + "kw·h低于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("用电"+ele+"kw·h低于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
                             }
-                            BigDecimal electricityUpper = energyThreshold.getElectricityUpper();
-                            if (ele.compareTo(electricityUpper) > 0){
-                                WarningInfo warningInfo = new WarningInfo();
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        BigDecimal electricityUpper = energyThreshold.getElectricityUpper();
+                        if (ele.compareTo(electricityUpper) > 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("用电" + ele + "kw·h高于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("用电"+ele+"kw·h高于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
                             }
-                            BigDecimal sevenDayEleTotal = electricityMapper.getSevenDayTotal(orgId, pigpenId);
-                            BigDecimal sevenDayWaterTotal = waterMapper.getSevenDayTotal(orgId, pigpenId);
-
-                            BigDecimal sevenDayWaterLower = energyThreshold.getSevenDayWaterLower();
-                            if (sevenDayWaterTotal.compareTo(sevenDayWaterLower) < 0){
-                                WarningInfo warningInfo = new WarningInfo();
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        BigDecimal sevenDayEleTotal = electricityMapper.getSevenDayTotal(orgId, pigpenId);
+                        BigDecimal sevenDayWaterTotal = waterMapper.getSevenDayTotal(orgId, pigpenId);
+
+                        BigDecimal sevenDayWaterLower = energyThreshold.getSevenDayWaterLower();
+                        if (sevenDayWaterTotal.compareTo(sevenDayWaterLower) < 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("七日用水" + sevenDayWaterTotal + "吨低于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("七日用水"+sevenDayWaterTotal+"吨低于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
                             }
-                            BigDecimal sevenDayWaterUpper = energyThreshold.getSevenDayWaterUpper();
-                            if (sevenDayWaterTotal.compareTo(sevenDayWaterUpper) > 0){
-                                WarningInfo warningInfo = new WarningInfo();
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        BigDecimal sevenDayWaterUpper = energyThreshold.getSevenDayWaterUpper();
+                        if (sevenDayWaterTotal.compareTo(sevenDayWaterUpper) > 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("七日用水" + sevenDayWaterTotal + "吨高于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("七日用水"+sevenDayWaterTotal+"吨高于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
                             }
-                            BigDecimal sevenDayElectricityLower = energyThreshold.getSevenDayElectricityLower();
-                            if (sevenDayEleTotal.compareTo(sevenDayElectricityLower) < 0){
-                                WarningInfo warningInfo = new WarningInfo();
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        BigDecimal sevenDayElectricityLower = energyThreshold.getSevenDayElectricityLower();
+                        if (sevenDayEleTotal.compareTo(sevenDayElectricityLower) < 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("七日用电" + sevenDayEleTotal + "kw·h低于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("七日用电"+sevenDayEleTotal+"kw·h低于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
                             }
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
 
-                            BigDecimal sevenDayElectricityUpper = energyThreshold.getSevenDayElectricityUpper();
-                            if (sevenDayEleTotal.compareTo(sevenDayElectricityUpper) > 0){
-                                WarningInfo warningInfo = new WarningInfo();
+                        BigDecimal sevenDayElectricityUpper = energyThreshold.getSevenDayElectricityUpper();
+                        if (sevenDayEleTotal.compareTo(sevenDayElectricityUpper) > 0) {
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningContent("七日用电" + sevenDayEleTotal + "kw·h高于阈值");
+                            warningInfo.setUnitId(pigpenId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setWarningTypeId(envWarning.getId());
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getOrgId, orgId).eq(WarningManager::getType, 1));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
                                 warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
-                                warningInfo.setWarningContent("七日用电"+sevenDayEleTotal+"kw·h高于阈值");
-                                warningInfo.setUnitId(pigpenId);
-                                warningInfo.setWarningTime(now);
-                                warningInfo.setOrgId(orgId);
-                                warningInfo.setWarningTypeId(envWarning.getId());
-                                warningInfoMapper.insert(warningInfo);
                             }
-
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
                         }
+
                     }
+
                 }
             }
 
 
+        }
+    }
 
-
+    private void generateInspection(WarningManager warningManager, WarningInfo warningInfo,String orgId){
+        TaskInspection taskInspection = new TaskInspection();
+        if (ObjectUtil.isNotEmpty(warningManager)){
+            taskInspection.setNotifierId(warningManager.getSecondManagerId());
+            taskInspection.setWarningId(warningInfo.getId());
+            taskInspection.setOrgId(orgId);
+            taskInspectionMapper.insert(taskInspection);
         }
     }
 }

+ 156 - 9
snowy-web-app/src/main/java/vip/xiaonuo/Timer/ProFeedingData.java

@@ -1,18 +1,33 @@
 package vip.xiaonuo.Timer;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.common.timer.CommonTimerTaskRunner;
+import vip.xiaonuo.modular.ai.taskInspection.entity.TaskInspection;
+import vip.xiaonuo.modular.ai.taskInspection.mapper.TaskInspectionMapper;
+import vip.xiaonuo.modular.ai.warningRemind.entity.WarningRemind;
+import vip.xiaonuo.modular.ai.warningRemind.mapper.WarningRemindMapper;
+import vip.xiaonuo.modular.base.baseConfig.entity.BaseConfig;
+import vip.xiaonuo.modular.base.baseConfig.mapper.BaseConfigMapper;
 import vip.xiaonuo.modular.feed.feedingenv.entity.FeedingEnv;
 import vip.xiaonuo.modular.feed.feedingenv.mapper.FeedingEnvMapper;
 import vip.xiaonuo.modular.feed.feedingfat.entity.FeedingFat;
 import vip.xiaonuo.modular.feed.feedingfat.mapper.FeedingFatMapper;
 import vip.xiaonuo.modular.feed.feedinglist.entity.FeedingList;
 import vip.xiaonuo.modular.feed.feedinglist.mapper.FeedingListMapper;
+import vip.xiaonuo.modular.feed.feedingthreshold.entity.FeedingThreshold;
+import vip.xiaonuo.modular.feed.feedingthreshold.mapper.FeedingThresholdMapper;
+import vip.xiaonuo.modular.warning.warningInfo.entity.WarningInfo;
+import vip.xiaonuo.modular.warning.warningInfo.mapper.WarningInfoMapper;
+import vip.xiaonuo.modular.warning.warningManager.entity.WarningManager;
+import vip.xiaonuo.modular.warning.warningManager.mapper.WarningManagerMapper;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -27,6 +42,18 @@ public class ProFeedingData implements CommonTimerTaskRunner {
     private FeedingFatMapper fatMapper;
     @Autowired
     private FeedingEnvMapper envMapper;
+    @Autowired
+    private BaseConfigMapper baseConfigMapper;
+    @Autowired
+    private FeedingThresholdMapper feedingThresholdMapper;
+    @Autowired
+    private WarningRemindMapper warningRemindMapper;
+    @Autowired
+    private WarningManagerMapper warningManagerMapper;
+    @Autowired
+    private WarningInfoMapper warningInfoMapper;
+    @Autowired
+    private TaskInspectionMapper taskInspectionMapper;
 
     @Override
     public void action() {
@@ -34,21 +61,23 @@ public class ProFeedingData implements CommonTimerTaskRunner {
         queryWrapper.eq("org_id", "1543842934270394370").eq("device_status", 1);
         List<FeedingEnv> feedingEnvs = envMapper.selectList(queryWrapper);
         for (FeedingEnv feedingEnv : feedingEnvs) {
+            String unitId = feedingEnv.getUnitId();
+            String orgId = feedingEnv.getOrgId();
+            Date now = new Date();
             String water = NumberUtils.getNumFloat(5.0, 20.0);
             String feeding = NumberUtils.getNumFloat(5.0, 15.0);
             String weight = NumberUtils.getNumFloat(60.0, 65.0);
             String tem = NumberUtils.getNumFloat(36.0, 38.0);
             String act = NumberUtils.getNum(8, 10, 0);
 
-
             FeedingFat fat = new FeedingFat();
-            fat.setUnitId(feedingEnv.getUnitId());
+            fat.setUnitId(unitId);
             fat.setUnitName(feedingEnv.getUnitName());
             fat.setEartagNum(feedingEnv.getEartagNum());
-            fat.setCreateTime(new Date());
-            fat.setUploadTime(new Date());
+            fat.setCreateTime(now);
+            fat.setUploadTime(now);
             fat.setDeviceCode(feedingEnv.getDeviceCode());
-            fat.setOrgId(feedingEnv.getOrgId());
+            fat.setOrgId(orgId);
             fat.setDeviceType(feedingEnv.getType());
             fat.setWaterValue(water);
             fat.setWeigthValue(weight);
@@ -61,17 +90,135 @@ public class ProFeedingData implements CommonTimerTaskRunner {
             }
             fatMapper.insert(fat);
             FeedingList list = new FeedingList();
-            list.setUnitId(feedingEnv.getUnitId());
+            list.setUnitId(unitId);
             list.setUnitName(feedingEnv.getUnitName());
-            list.setCreateTime(new Date());
-            list.setUploadTime(new Date());
-            list.setOrgId(feedingEnv.getOrgId());
+            list.setCreateTime(now);
+            list.setUploadTime(now);
+            list.setOrgId(orgId);
             list.setType(feedingEnv.getType());
             list.setPigNum(feedingEnv.getPigNum());
             String feedValue = NumberUtils.getNumFloat(30.0, 40.0);
             list.setFeedValue(feeding);
             list.setMarginValue(feedValue);
             listMapper.insert(list);
+
+            BaseConfig baseConfig = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getConfigName, "预警类型").eq(BaseConfig::getParentId, 0));
+            BaseConfig feedWarning = baseConfigMapper.selectOne(new QueryWrapper<BaseConfig>().lambda().eq(BaseConfig::getConfigName, "饲喂预警").eq(BaseConfig::getParentId, baseConfig.getId()));
+
+            WarningRemind warningRemind = warningRemindMapper.selectOne(new QueryWrapper<WarningRemind>().lambda()
+                    .eq(WarningRemind::getWarningTypeId, feedWarning.getId())
+                    .eq(WarningRemind::getOrgId, orgId).eq(WarningRemind::getUnitId, unitId));
+
+            if (ObjectUtil.isNotEmpty(warningRemind)){
+                if (warningRemind.getTodayNoRemind() != 1){
+                    BigDecimal waterValue = new BigDecimal(water);
+                    BigDecimal feedingValue = new BigDecimal(feeding);
+
+                    FeedingThreshold fatFhreshold = feedingThresholdMapper.selectOne(new QueryWrapper<FeedingThreshold>().lambda().eq(FeedingThreshold::getOrgId, orgId).eq(FeedingThreshold::getThresholdType, 1));
+                    if (ObjectUtil.isNotEmpty(fatFhreshold)){
+                        BigDecimal feedLower,feedUpper,waterLower,waterUpper;
+                        if ("1".equals(feedingEnv.getType())) {
+                            feedLower = new BigDecimal(fatFhreshold.getFatFeedLower());
+                            feedUpper = new BigDecimal(fatFhreshold.getFatFeedUpper());
+                            waterLower = new BigDecimal(fatFhreshold.getFatWaterLower());
+                            waterUpper = new BigDecimal(fatFhreshold.getFatWaterUpper());
+                        }else {
+                            feedLower = new BigDecimal(fatFhreshold.getFeedLower());
+                            feedUpper = new BigDecimal(fatFhreshold.getFeedUpper());
+                            waterLower = new BigDecimal(fatFhreshold.getWaterLower());
+                            waterUpper = new BigDecimal(fatFhreshold.getWaterUpper());
+                        }
+
+                        if (feedingValue.compareTo(feedLower) < 0){
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningTypeId(feedWarning.getId());
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setUnitId(unitId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setWarningContent("耳标号"+feedingEnv.getEartagNum()+"采食"+feedValue+"Kg低于阈值");
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().eq("type", 2).eq("org_id", orgId));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
+                                warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
+                            }
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        if (feedingValue.compareTo(feedUpper) > 0){
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningTypeId(feedWarning.getId());
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setUnitId(unitId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setWarningContent("耳标号"+feedingEnv.getEartagNum()+"采食"+feedValue+"Kg高于阈值");
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().eq("type", 2).eq("org_id", orgId));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
+                                warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
+                            }
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        if (waterValue.compareTo(waterLower) < 0){
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningTypeId(feedWarning.getId());
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setUnitId(unitId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setWarningContent("耳标号"+feedingEnv.getEartagNum()+"饮水"+waterValue+"Kg低于阈值");
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().eq("type", 2).eq("org_id", orgId));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
+                                warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
+                            }
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                        if (waterValue.compareTo(waterUpper) > 0){
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningTypeId(feedWarning.getId());
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setUnitId(unitId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setWarningContent("耳标号"+feedingEnv.getEartagNum()+"饮水"+waterValue+"Kg高于阈值");
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().eq("type", 2).eq("org_id", orgId));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
+                                warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
+                            }
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                    }
+
+                    FeedingThreshold feedingThreshold = feedingThresholdMapper.selectOne(new QueryWrapper<FeedingThreshold>().lambda().eq(FeedingThreshold::getFeedingUnitId, unitId).eq(FeedingThreshold::getOrgId, orgId));
+                    if (ObjectUtil.isNotEmpty(feedingThreshold)){
+                        BigDecimal marginValue = new BigDecimal(feedingThreshold.getMarginValue());
+                        BigDecimal marginFeedValue = new BigDecimal(feedValue);
+                        if (marginFeedValue.compareTo(marginValue) < 0){
+                            WarningInfo warningInfo = new WarningInfo();
+                            warningInfo.setWarningTypeId(feedWarning.getId());
+                            warningInfo.setOrgId(orgId);
+                            warningInfo.setUnitId(unitId);
+                            warningInfo.setWarningTime(now);
+                            warningInfo.setWarningContent(feedingEnv.getUnitName()+"余料"+ marginFeedValue +"Kg低于阈值");
+                            WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().eq("type", 2).eq("org_id", orgId));
+                            if (ObjectUtil.isNotEmpty(warningManager)){
+                                warningInfo.setWarningNotifierId(warningManager.getSecondManagerId());
+                            }
+                            warningInfoMapper.insert(warningInfo);
+                            this.generateInspection(warningManager,warningInfo,orgId);
+                        }
+                    }
+
+                }
+            }
+        }
+    }
+
+    private void generateInspection(WarningManager warningManager, WarningInfo warningInfo,String orgId){
+        if (ObjectUtil.isNotEmpty(warningManager)){
+            TaskInspection taskInspection = new TaskInspection();
+            taskInspection.setNotifierId(warningManager.getSecondManagerId());
+            taskInspection.setWarningId(warningInfo.getId());
+            taskInspection.setOrgId(orgId);
+            taskInspectionMapper.insert(taskInspection);
         }
     }
 }

+ 11 - 6
snowy-web-app/src/main/java/vip/xiaonuo/Timer/WarningTransferTimer.java

@@ -1,5 +1,6 @@
 package vip.xiaonuo.Timer;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
@@ -32,9 +33,8 @@ public class WarningTransferTimer implements CommonTimerTaskRunner {
     private BaseConfigMapper baseConfigMapper;
 
     @Override
-    @Transactional
     public void action() {
-        List<WarningInfo> warningInfos = warningInfoMapper.selectList(new QueryWrapper<WarningInfo>().lambda().eq(WarningInfo::getWarningStatus, 0));
+        List<WarningInfo> warningInfos = warningInfoMapper.selectList(new QueryWrapper<WarningInfo>().lambda().eq(WarningInfo::getWarningStatus, 0).eq(WarningInfo::getIsUp,0));
         for (WarningInfo warningInfo : warningInfos) {
             Date warningTime = warningInfo.getWarningTime();
             String configName = baseConfigMapper.selectById(warningInfo.getWarningTypeId()).getConfigName();
@@ -57,16 +57,21 @@ public class WarningTransferTimer implements CommonTimerTaskRunner {
                     break;
             }
             WarningManager warningManager = warningManagerMapper.selectOne(new QueryWrapper<WarningManager>().lambda().eq(WarningManager::getType, warningType).eq(WarningManager::getOrgId, warningInfo.getOrgId()));
-            if (warningManager != null) {
+            if (ObjectUtil.isNotEmpty(warningManager)) {
                 Integer warningUpgradeTime = warningManager.getWarningUpgradeTime();
                 int gap = (int) ((now.getTime() - warningTime.getTime()) / (1000 * 60));
-                if (warningUpgradeTime >= gap) {
+                if (gap >= warningUpgradeTime) {
+                    System.out.println("已超时!");
                     String firstManagerId = warningManager.getFirstManagerId();
                     warningInfo.setWarningNotifierId(firstManagerId);
+                    warningInfo.setIsUp(1);
                     TaskInspection taskInspection = taskInspectionMapper.selectOne(new QueryWrapper<TaskInspection>().lambda().eq(TaskInspection::getWarningId, warningInfo.getId()));
-                    taskInspection.setNotifierId(firstManagerId);
+                    if (ObjectUtil.isNotEmpty(taskInspection)){
+                        taskInspection.setNotifierId(firstManagerId);
+                        taskInspectionMapper.updateById(taskInspection);
+                    }
                     warningInfoMapper.updateById(warningInfo);
-                    taskInspectionMapper.updateById(taskInspection);
+
                 }
             }
         }

+ 4 - 0
snowy-web-app/src/main/java/vip/xiaonuo/modular/warning/warningInfo/entity/WarningInfo.java

@@ -85,4 +85,8 @@ public class WarningInfo extends CommonEntity implements TransPojo {
     @ApiModelProperty(value = "预警位置", position = 11)
     @TableField(exist = false)
     private String buildName;
+
+    /** 预警位置 */
+    @ApiModelProperty(value = "预警升级", position = 12)
+    private Integer isUp;
 }