Sfoglia il codice sorgente

fix. 多次打签退卡限制

caozixuan 7 mesi fa
parent
commit
0bb1f7a635

+ 12 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingServiceImpl.java

@@ -512,6 +512,18 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                 }
                 break;
             case OUT: // 签退打卡
+                if (Objects.nonNull(tbDing.getSignOutTime()) && CollectionUtils.isNotEmpty(otherSopDingList)) {
+                    // 多次签退打卡 校验该次签退打卡必须是当天已打卡的sop打卡记录中签到时间最晚的(只能在最后一个打卡的sop上继续打签退卡)
+                    Long maxSingInTime = 0L;
+                    Optional<Long> optional = todayDingList.stream().map(TBDing::getSignInTime).max(Long::compareTo);
+                    if (optional.isPresent()) {
+                        maxSingInTime = optional.get();
+                    }
+                    if (!Objects.equals(maxSingInTime, tbDing.getSignInTime())) {
+                        throw ExceptionResultEnum.ERROR.exception("重复打签退卡异常");
+                    }
+                }
+
                 tbDing.setSignOutTime(signTime);
                 tbDing.setSignOutAddress(signAddress);
                 tbDing.setAxisOutX(axisX);