| | |
| | | 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.*; |
| | | |
| | | |
| | | /** |
| | |
| | | |
| | | @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); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | // |
| | | // /** |
| | | // * 每月第一天的1点执行的任务 |