Browse Source

fix:
考勤打卡如果一个人有多个sop,只在他选择的sop上打卡(不为他生成其他sop的打卡记录)

caozixuan 1 năm trước cách đây
mục cha
commit
7dcd06f629

+ 13 - 29
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingServiceImpl.java

@@ -365,7 +365,6 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                 .eq(TBDing::getUserId, userId)
                 .eq(TBDing::getSignDate, signDate));
 
-        List<String> otherSopNoList = tbSopInfoService.findFlowPassageByCrmNo(crmNo);
         if (CollectionUtils.isEmpty(tbDingList)) {
             // 没有这天的打卡记录 - 新增打卡记录
             TBDing tbDing = new TBDing();
@@ -395,45 +394,30 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
                     tbDing.setFaceOutPass(facePass);
                     break;
             }
-            List<TBDing> willAddDingList = otherSopNoList.stream().flatMap(e -> {
-                TBDing cell = new TBDing();
-                BeanUtils.copyProperties(tbDing, cell);
-                cell.setSopNo(e);
-                return Stream.of(cell);
-            }).collect(Collectors.toList());
-            this.saveBatch(willAddDingList);
+            this.save(tbDing);
         } else {
             // 有这天的打卡记录 - 签退打卡或更新打卡
             if (tbDingList.size() > 1) {
                 throw ExceptionResultEnum.ERROR.exception(String.format("用户id为[%s],sop单号为[%s],在[%s]的打卡记录异常", userId, sopNo, signDate));
             }
-            // 此人当天的所有sop打卡记录
-            List<TBDing> recordList = this.list(new QueryWrapper<TBDing>().lambda()
-                    .eq(TBDing::getDingSopNo, sopNo)
-                    .eq(TBDing::getUserId, userId)
-                    .eq(TBDing::getSignDate, signDate));
-
+            TBDing tbDing = tbDingList.get(0);
             switch (signType) {
                 case IN: // 签到打卡
-                    for (TBDing e : recordList) {
-                        e.setSignInTime(signTime);
-                        e.setSignInAddress(signAddress);
-                        e.setAxisInX(axisX);
-                        e.setAxisInY(axisY);
-                        e.setFaceInPass(facePass);
-                    }
+                    tbDing.setSignInTime(signTime);
+                    tbDing.setSignInAddress(signAddress);
+                    tbDing.setAxisInX(axisX);
+                    tbDing.setAxisInY(axisY);
+                    tbDing.setFaceInPass(facePass);
                     break;
                 case OUT: // 签退打卡
-                    for (TBDing e : recordList) {
-                        e.setSignOutTime(signTime);
-                        e.setSignOutAddress(signAddress);
-                        e.setAxisOutX(axisX);
-                        e.setAxisOutY(axisY);
-                        e.setFaceOutPass(facePass);
-                    }
+                    tbDing.setSignOutTime(signTime);
+                    tbDing.setSignOutAddress(signAddress);
+                    tbDing.setAxisOutX(axisX);
+                    tbDing.setAxisOutY(axisY);
+                    tbDing.setFaceOutPass(facePass);
                     break;
             }
-            this.updateBatchById(recordList);
+            this.updateById(tbDing);
         }
     }