Commit 8aafc43472a3804f2542380730bbc8d4acb4f2d1
1 parent
4fa8a048
优化管理员代领钥匙逻辑
Showing
2 changed files
with
26 additions
and
8 deletions
Bsth-admin/src/main/java/com/ruoyi/controller/dss/KeyBoxController.java
| ... | ... | @@ -336,18 +336,36 @@ public class KeyBoxController extends BaseController { |
| 336 | 336 | String date = DateFormatUtils.format(DateUtils.getNowDate(),"yyyy-MM-dd"); |
| 337 | 337 | LambdaQueryWrapper<LinggangScheduling> wrapper = new LambdaQueryWrapper<>(); |
| 338 | 338 | wrapper.eq(LinggangScheduling::getNbbm,dto.getKeyItem().get(0).getPlate()).and(i -> i.and(j -> j.apply("DATE_FORMAT(schedule_date, '%Y-%m-%d') LIKE {0}", date+"%"))) |
| 339 | - .and(i -> i.eq(LinggangScheduling::getBcType,"out")).and(i -> i.eq(LinggangScheduling::getPosts,"驾驶员")) | |
| 340 | - .last("ORDER BY ABS(fcsj_t - UNIX_TIMESTAMP() * 1000) LIMIT 1"); | |
| 339 | + .and(i -> i.eq(LinggangScheduling::getBcType,"out")).and(i -> i.eq(LinggangScheduling::getPosts,"驾驶员")); | |
| 341 | 340 | //sql 语句: |
| 342 | 341 | // SELECT * FROM `linggang_scheduling` |
| 343 | 342 | // WHERE nbbm = 'A01' AND DATE_FORMAT(schedule_date, '%Y-%m-%d') LIKE '2023-07-08%' AND bc_type = 'out' AND posts = '驾驶员' |
| 344 | - // ORDER BY ABS(fcsj_t - UNIX_TIMESTAMP() * 100) | |
| 345 | - // LIMIT 1 | |
| 343 | + | |
| 344 | + // 查询符合条件的调度信息列表 | |
| 346 | 345 | List<LinggangScheduling> scheduling = schedulingService.list(wrapper); |
| 346 | + // 初始化调度信息索引 | |
| 347 | + int schedulingIndex = 0; | |
| 348 | + // 检查调度信息列表是否不为空 | |
| 347 | 349 | if(!scheduling.isEmpty()){ |
| 348 | - scheduling.get(0).setExType(4); | |
| 349 | - scheduling.get(0).setRemark("管理员代领钥匙"); | |
| 350 | - schedulingService.updateById(scheduling.get(0)); | |
| 350 | + // 初始化一个数组,用于存储每个调度信息与当前时间的毫秒差 | |
| 351 | + long[] timing = new long[scheduling.size()]; | |
| 352 | + // 获取当前系统时间的毫秒值 | |
| 353 | + long time = System.currentTimeMillis(); | |
| 354 | + // 遍历调度信息列表,计算每个调度信息的时间与当前时间的差值 | |
| 355 | + for(int i=0;i<scheduling.size();i++){ | |
| 356 | + timing[i] = Math.abs(time - scheduling.get(i).getFcsjT()); | |
| 357 | + } | |
| 358 | + // 遍历时间差数组,找到与当前时间最接近的调度信息索引 | |
| 359 | + for (int i = 0; i < timing.length; i++){ | |
| 360 | + if (timing[i] < timing[schedulingIndex]) { | |
| 361 | + schedulingIndex = i; | |
| 362 | + } | |
| 363 | + } | |
| 364 | + // 更新与当前时间最接近的调度信息,设置其事件类型为4,并备注管理员代领钥匙 | |
| 365 | + scheduling.get(schedulingIndex).setExType(4); | |
| 366 | + scheduling.get(schedulingIndex).setRemark("管理员代领钥匙"); | |
| 367 | + // 调用服务方法更新数据库中的相应调度信息 | |
| 368 | + schedulingService.updateById(scheduling.get(schedulingIndex)); | |
| 351 | 369 | } |
| 352 | 370 | } |
| 353 | 371 | ... | ... |
Bsth-admin/src/main/java/com/ruoyi/service/impl/BigViewServiceImpl.java
| ... | ... | @@ -472,7 +472,7 @@ public class BigViewServiceImpl implements BigViewService { |
| 472 | 472 | return; |
| 473 | 473 | } |
| 474 | 474 | // 如有多异常覆盖策略 异常等级排 未签 -》 迟到 -》 酒驾 |
| 475 | - if (driverInfoVo.getSignStatus().compareTo(personInfoVo.getSignStatus()) > 0) { | |
| 475 | + if (driverInfoVo.getSignStatus().compareTo(personInfoVo.getSignStatus()) > 0 && personInfoVo.getSignStatus()!=4) { | |
| 476 | 476 | return; |
| 477 | 477 | } |
| 478 | 478 | } | ... | ... |