kongdeqiang
2024-09-26 7156119e51320afd0ffdd0723cd983fd415d61d9
src/main/java/com/boying/controller/BarrierController.java
@@ -2,6 +2,7 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.boying.common.R;
import com.boying.entity.Barrier;
@@ -24,7 +25,8 @@
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
@RestController
@RequestMapping("ffzf/barrier")
@@ -199,4 +201,33 @@
           }
        }
    }
    @PostMapping("getDisConnect")
    @Operation(summary = "设备掉线通知" , description = "设备掉线通知" )
    public Object getDisConnect() {
        List<Map<String,Object>> resultlist = new ArrayList<>();
        String barrierCodeAll = redisTemplate.opsForValue().get("barrierCode_all");
        if(StringUtils.isBlank(barrierCodeAll)){
            QueryWrapper<Barrier> wrapper = new QueryWrapper<>();
            wrapper.select(" code ");
            List<Barrier> list = barrierService.list(wrapper);
            String collect = list.stream().map(Barrier::getCode).collect(Collectors.joining(","));
            redisTemplate.opsForValue().set("barrierCode_all",collect);
            barrierCodeAll = collect;
        }
        for (String s : barrierCodeAll.split(",")) {
            Barrier barrier = barrierService.findByCode(s);
            long between = ChronoUnit.SECONDS.between(barrier.getUpdateTime(), LocalDateTime.now());
            if(between>121){
                Map<String,Object> map = new HashMap<>();
                map.put("parkName",parkService.getOneById(barrier.getParkId()).getName());
                map.put("type",barrier.getType()==0?"出口":"入口");
                map.put("downTime",barrier.getUpdateTime());
                resultlist.add(map);
            }
        }
        Collections.sort(resultlist, (m1, m2)-> String.valueOf(m2.get("downTime")).compareTo(String.valueOf(m1.get("downTime")))); // lamuda排序
        return R.ok(resultlist);
    }
}