Commit 0a25c13ed15a90b1884b4603dd267ac350936021

Authored by guzijian
1 parent bf58e609

feat: 修改金高签到逻辑

Bsth-admin/src/main/java/com/ruoyi/common/ErrorTypeProperties.java
... ... @@ -10,6 +10,10 @@ public interface ErrorTypeProperties {
10 10 String ALCOHOL_SIGN_IN_ERROR = "酒精测试超标,";
11 11 String WORK_DAY_ERROR = "当天没有排班,";
12 12 String SIGN_IN_TIMEOUT = "没有在规定时间内签到,";
13   - String SIGN_OUT_TIMEOUT = "没有在规定时间内签退,";
  13 +// String SIGN_OUT_TIMEOUT = "没有在规定时间内签退,";
  14 + /**
  15 + * 金高没有签退
  16 + */
  17 + String SIGN_OUT_TIMEOUT = "没有在规定时间内签到,";
14 18  
15 19 }
... ...
Bsth-admin/src/main/java/com/ruoyi/common/cache/NowSchedulingCache.java
... ... @@ -40,9 +40,9 @@ public class NowSchedulingCache {
40 40 List<DriverScheduling> schedulingList = schedulingMapper.queryToDay(date, null, null, null);
41 41 handlerResultMap(resultMap, schedulingList);
42 42 // 获取错误排班
43   - List<ErrorJobcode> errorScheduling = ThreadJobService.getErrorScheduling(resultMap);
  43 +// List<ErrorJobcode> errorScheduling = ThreadJobService.getErrorScheduling(resultMap);
44 44 // 插入错误排班
45   - errorJobcodeService.insertBatchErrorJobcode(errorScheduling);
  45 +// errorJobcodeService.insertBatchErrorJobcode(errorScheduling);
46 46 // 更新缓存
47 47 cacheNowDayScheduling.put(date, resultMap);
48 48 }
... ...
Bsth-admin/src/main/java/com/ruoyi/driver/service/impl/DriverServiceImpl.java
... ... @@ -73,7 +73,7 @@ import static com.ruoyi.common.redispre.GlobalRedisPreName.DRIVER_SCHEDULING_PRE
73 73 @Service
74 74 public class DriverServiceImpl implements IDriverService {
75 75  
76   - private Logger log = LoggerFactory.getLogger(DriverServiceImpl.class);
  76 + private static final Logger log = LoggerFactory.getLogger(DriverServiceImpl.class);
77 77  
78 78 @Autowired
79 79 private ISysNoticeService noticeService;
... ... @@ -164,9 +164,9 @@ public class DriverServiceImpl implements IDriverService {
164 164 LocalDateTime endTime = ConstDateUtil.getLocalDateTimeByLongTime(timeMap.get(index).getTimestamps());
165 165 long nowBetween = ChronoUnit.MINUTES.between(endTime, nowTime);
166 166 // 如果当前有效范围内签到记录无效如酒精测试异常则重复当前操作
167   - if ((Math.abs(nowBetween) <= 60) && timeMap.get(index).getExType().equals(SIGN_ALCOHOL_EX_NUM) && timeMap.get(index).getBcType().equals(BC_TYPE_OUT)) {
  167 + if ((Math.abs(nowBetween) <= 60)) {
168 168 return timeMap.get(index);
169   - } else {
  169 + } else if (nowBetween > 60L){
170 170 index = index < timeMap.size() - 1 ? index + 1 : index;
171 171 }
172 172 }
... ... @@ -358,6 +358,7 @@ public class DriverServiceImpl implements IDriverService {
358 358 } else {
359 359 // 特定设备是无需酒精测试的
360 360 vo.setCheckAlcohol(needCheckAlcoholDevice);
  361 + vo.setPlanAction("签到");
361 362 vos.add(vo);
362 363 }
363 364 }
... ...
Bsth-admin/src/main/java/com/ruoyi/in/service/impl/SignInServiceImpl.java
... ... @@ -517,52 +517,7 @@ public class SignInServiceImpl implements ISignInService {
517 517 }
518 518 // 不在有效时间范围内,判断当前是否有签到记录 当前应签到还是签退
519 519 if (!(Math.abs(nowBetween) <= 60)) {
520   - // 签到一个逻辑 当前无记录
521   - if (currentScheduling.getBcType().equals(BC_TYPE_OUT) && Objects.isNull(currentScheduling.getSignInId())) {
522   - DriverSignInRecommendation lastClosestTimestamp = schedulingService.computedTheCurrentClosestTimestamp(dto, now, -1);
523   - // 给出签到范围
524   - // 上一次无记|签到,type:签退 当前时间小于最近签到时间 -> 超时签退
525   - if (nowBetween < -60L && Objects.isNull(lastClosestTimestamp.getSignInId()) && signIn.getType().equals(SIGN_OUT) && lastClosestTimestamp.getBcType().equals(BC_TYPE_IN)) {
526   - signIn.setRemark(SIGN_OUT_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(lastClosestTimestamp.getTimestamps())) + "前后一小时内打卡。");
527   - globalIndex.setIndex(lastClosestTimestamp.getIndex());
528   - result = false;
529   - }
530   - // 上一次无记无|签到,type:签退 当前时间小于最近签到时间 -> 超时签退
531   - else if (nowBetween < -60L && Objects.isNull(lastClosestTimestamp.getSignInId()) && signIn.getType().equals(SIGN_OUT) && lastClosestTimestamp.getIndex().equals(currentScheduling.getIndex())) {
532   - signIn.setRemark(SIGN_IN_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。");
533   - globalIndex.setIndex(currentScheduling.getIndex());
534   - result = false;
535   - }
536   - // 当前最近无记录|签到,type:签到|签退 -> 签到超时给上
537   - else {
538   - signIn.setRemark(SIGN_IN_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。");
539   - globalIndex.setIndex(currentScheduling.getIndex());
540   - result = false;
541   - }
542   - }
543   - // 签退一个逻辑 当前无记录
544   - if (currentScheduling.getBcType().equals(BC_TYPE_IN) && Objects.isNull(currentScheduling.getSignInId())) {
545   - DriverSignInRecommendation lastClosestTimestamp = schedulingService.computedTheCurrentClosestTimestamp(dto, now, -1);
546   - // 上一次无记|签退,type:签到 当前时间小于最近签退时间 -> 签到异常
547   - if (nowBetween < -60L && Objects.isNull(lastClosestTimestamp.getSignInId()) && signIn.getType().equals(SIGN_IN)) {
548   - signIn.setRemark(SIGN_IN_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(lastClosestTimestamp.getTimestamps())) + "前后一小时内打卡。");
549   - globalIndex.setIndex(lastClosestTimestamp.getIndex());
550   - result = false;
551   - }
552   - // 当前无记|签退 , type:签退|签到 ——> 签退异常
553   - else {
554   - signIn.setRemark(SIGN_OUT_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。");
555   - globalIndex.setIndex(currentScheduling.getIndex());
556   - result = false;
557   - }
558   - }
559   - // 签退|签到 当前有记录
560   - if (!Objects.isNull(currentScheduling.getSignInId())) {
561   - String prompt = "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。";
562   - signIn.setRemark((currentScheduling.getBcType().equals(BC_TYPE_IN) ? SIGN_OUT_TIMEOUT : SIGN_IN_TIMEOUT) + prompt);
563   - globalIndex.setIndex(currentScheduling.getIndex());
564   - result = false;
565   - }
  520 + result = handlerTimerOutSign(globalIndex, signIn, dto, now, result, currentScheduling, nowBetween);
566 521 } else {
567 522 globalIndex.setIndex(currentScheduling.getIndex());
568 523 result = true;
... ... @@ -573,6 +528,56 @@ public class SignInServiceImpl implements ISignInService {
573 528 }
574 529 }
575 530  
  531 + private Boolean handlerTimerOutSign(GlobalIndex globalIndex, SignIn signIn, List<DriverScheduling> dto, long now, Boolean result, DriverSignInRecommendation currentScheduling, long nowBetween) {
  532 + // 签到一个逻辑 当前无记录
  533 + if (currentScheduling.getBcType().equals(BC_TYPE_OUT) && Objects.isNull(currentScheduling.getSignInId())) {
  534 + DriverSignInRecommendation lastClosestTimestamp = schedulingService.computedTheCurrentClosestTimestamp(dto, now, -1);
  535 + // 给出签到范围
  536 + // 上一次无记|签到,type:签退 当前时间小于最近签到时间 -> 超时签退
  537 + if (nowBetween < -60L && Objects.isNull(lastClosestTimestamp.getSignInId()) && signIn.getType().equals(SIGN_OUT) && lastClosestTimestamp.getBcType().equals(BC_TYPE_IN)) {
  538 + signIn.setRemark(SIGN_OUT_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(lastClosestTimestamp.getTimestamps())) + "前后一小时内打卡。");
  539 + globalIndex.setIndex(lastClosestTimestamp.getIndex());
  540 + result = false;
  541 + }
  542 + // 上一次无记无|签到,type:签退 当前时间小于最近签到时间 -> 超时签退
  543 + else if (nowBetween < -60L && Objects.isNull(lastClosestTimestamp.getSignInId()) && signIn.getType().equals(SIGN_OUT) && lastClosestTimestamp.getIndex().equals(currentScheduling.getIndex())) {
  544 + signIn.setRemark(SIGN_IN_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。");
  545 + globalIndex.setIndex(currentScheduling.getIndex());
  546 + result = false;
  547 + }
  548 + // 当前最近无记录|签到,type:签到|签退 -> 签到超时给上
  549 + else {
  550 + signIn.setRemark(SIGN_IN_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。");
  551 + globalIndex.setIndex(currentScheduling.getIndex());
  552 + result = false;
  553 + }
  554 + }
  555 + // 签退一个逻辑 当前无记录
  556 + if (currentScheduling.getBcType().equals(BC_TYPE_IN) && Objects.isNull(currentScheduling.getSignInId())) {
  557 + DriverSignInRecommendation lastClosestTimestamp = schedulingService.computedTheCurrentClosestTimestamp(dto, now, -1);
  558 + // 上一次无记|签退,type:签到 当前时间小于最近签退时间 -> 签到异常
  559 + if (nowBetween < -60L && Objects.isNull(lastClosestTimestamp.getSignInId()) && signIn.getType().equals(SIGN_IN)) {
  560 + signIn.setRemark(SIGN_IN_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(lastClosestTimestamp.getTimestamps())) + "前后一小时内打卡。");
  561 + globalIndex.setIndex(lastClosestTimestamp.getIndex());
  562 + result = false;
  563 + }
  564 + // 当前无记|签退 , type:签退|签到 ——> 签退异常
  565 + else {
  566 + signIn.setRemark(SIGN_OUT_TIMEOUT + "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。");
  567 + globalIndex.setIndex(currentScheduling.getIndex());
  568 + result = false;
  569 + }
  570 + }
  571 + // 签退|签到 当前有记录
  572 + if (!Objects.isNull(currentScheduling.getSignInId())) {
  573 + String prompt = "请在" + ConstDateUtil.formatDate("HH:mm", new Date(currentScheduling.getTimestamps())) + "前后一小时内打卡。";
  574 + signIn.setRemark((currentScheduling.getBcType().equals(BC_TYPE_IN) ? SIGN_OUT_TIMEOUT : SIGN_IN_TIMEOUT) + prompt);
  575 + globalIndex.setIndex(currentScheduling.getIndex());
  576 + result = false;
  577 + }
  578 + return result;
  579 + }
  580 +
576 581 private Boolean handlerExceptionRecord(List<DriverScheduling> dto, long now, GlobalIndex globalIndex, SignIn signIn) {
577 582 DriverSignInRecommendation currentScheduling = schedulingService.computedTheCurrentClosestTimestamp(dto, now, 0);
578 583 LocalDateTime endTime = ConstDateUtil.getLocalDateTimeByLongTime(currentScheduling.getTimestamps());
... ...
Bsth-admin/src/main/java/com/ruoyi/service/ThreadJobService.java
... ... @@ -402,6 +402,8 @@ public class ThreadJobService {
402 402  
403 403 // 处理非司售人员的排班明细
404 404 bcList.addAll(handleOtherPostsScheduling());
  405 + // 金高只需要签到
  406 + bcList = bcList.stream().filter(item->BC_TYPE_OUT.equals(item.getBcType())).collect(Collectors.toList());
405 407 // 插入排班
406 408 schedulingMapper.insertRoster(bcList);
407 409 // 异常数据过多,不通过自增获取id再次查询获取
... ... @@ -414,9 +416,9 @@ public class ThreadJobService {
414 416 // 更新缓存
415 417 nowSchedulingCache.setCacheScheduling(date, resultMap);
416 418 // 获取错误排班
417   - List<ErrorJobcode> errorScheduling = getErrorScheduling(resultMap);
  419 +// List<ErrorJobcode> errorScheduling = getErrorScheduling(resultMap);
418 420 // 插入错误排班
419   - errorJobcodeService.insertBatchErrorJobcode(errorScheduling);
  421 +// errorJobcodeService.insertBatchErrorJobcode(errorScheduling);
420 422 }
421 423 }
422 424  
... ...
Bsth-admin/src/main/resources/application-druid-prd.yml
... ... @@ -30,7 +30,7 @@ spring:
30 30 # 测试地址
31 31 url: jdbc:mysql://127.0.0.1:3306/all-in-one?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&useAffectedRows=true&allowMultiQueries=true
32 32 username: root
33   - password: qinpugongjiao20230730
  33 + password: jingaogongjiao20230730
34 34 # 从库数据源
35 35 slave:
36 36 # 从数据源开关/默认关闭
... ... @@ -70,7 +70,7 @@ spring:
70 70 url-pattern: /druid/*
71 71 # 控制台管理用户名和密码
72 72 login-username: qpgj
73   - login-password: 2023#manager@qpgjuse
  73 + login-password: 2023#manager@jsgjuse
74 74 filter:
75 75 stat:
76 76 enabled: true
... ...