From 73b750200f25df08aa64124da49e7461f9de6653 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 13 十二月 2024 15:09:49 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/NTTravel

---
 DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java |   81 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 79 insertions(+), 2 deletions(-)

diff --git a/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java b/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
index 0dae0a9..a82d768 100644
--- a/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
+++ b/DriverNTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -1,13 +1,19 @@
 package com.stylefeng.guns.modular.system.util;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.modular.system.dao.DriverWorkMapper;
+import com.stylefeng.guns.modular.system.model.Driver;
+import com.stylefeng.guns.modular.system.model.DriverWork;
+import com.stylefeng.guns.modular.system.model.TSysFaceDistinguish;
 import com.stylefeng.guns.modular.system.service.IDriverService;
 import com.stylefeng.guns.modular.system.service.IOrderService;
+import com.stylefeng.guns.modular.system.service.ITSysFaceDistinguishService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
-import java.util.HashSet;
-import java.util.Set;
+import javax.annotation.Resource;
+import java.util.*;
 
 
 /**
@@ -24,10 +30,80 @@
 
     @Autowired
     private JGPushUtil jgPushUtil;
+    @Resource
+    private DriverWorkMapper driverWorkMapper;
+
+    @Autowired
+    private ITSysFaceDistinguishService faceDistinguishService;
+
+    @Autowired
+    private PushUtil pushUtil;
+
+
 
     public Set<Integer> driverIds = new HashSet<>();//存储需要提醒司机预约单的司机id
 
 
+    //每隔一分钟去检测司机人脸
+    @Scheduled(fixedRate = 1000 * 60)
+    public void driverFace(){
+        //拿到后台配置的人脸识别配置
+        TSysFaceDistinguish tSysFaceDistinguish = faceDistinguishService.selectOne(null);
+        //如果是关闭就结束
+        if (tSysFaceDistinguish.getIsOpen()==2){
+            return;
+        }
+        System.err.println("================正在进行人脸识别任务");
+        //获取上线司机的ids
+        List<DriverWork> driverIds = driverWorkMapper.selectList(new EntityWrapper<DriverWork>().eq("state", 1));
+        //判断司机是否有正在进行中的订单,获取闲置司机id
+        List<Integer> drivers = new ArrayList<>();
+        for (DriverWork driverWork : driverIds) {
+            try {
+                List<Map<String, Object>> list = orderService.queryOrderList(1, 1, 10, driverWork.getDriverId());
+                if(list.isEmpty()){
+                    drivers.add(driverWork.getDriverId());
+                }
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+       //从后台获取人脸识别的配置,比对最后一次打卡时间后进行socket推送
+        List<Integer> pullDrivers = new ArrayList<>();
+
+        List<Driver> drivers1 = new ArrayList<>();
+
+        List<Driver> todrivers = driverService.selectBatchIds(drivers);
+        Date now = new Date();
+        for (Driver todriver : todrivers) {
+            if (todriver.getLastFacialTime()==null){
+                pullDrivers.add(todriver.getId());
+                todriver.setFailCount(1);
+                drivers1.add(todriver);
+                continue;
+            }
+            Date lastFacialTime = todriver.getLastFacialTime();
+            // 创建一个Calendar实例并设置为给定的日期
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(lastFacialTime);
+
+            // 增加2分钟
+            calendar.add(Calendar.MINUTE, tSysFaceDistinguish.getMinuteNum());
+            Date updatedDate = calendar.getTime();
+            int compareResult = now.compareTo(updatedDate);
+            if (compareResult >= 0) {
+                pullDrivers.add(todriver.getId());
+            }
+        }
+        driverService.updateBatchById(drivers1);
+        if (!pullDrivers.isEmpty()){
+            for (Integer pullDriver : pullDrivers) {
+                pushUtil.pushFaceTime(2,pullDriver);
+            }
+        }
+
+
+    }
 
 
     /**
@@ -82,6 +158,7 @@
     }
 
 
+
 //
 //    /**
 //     * 每月第一天的1点执行的任务

--
Gitblit v1.7.1