Bläddra i källkod

锁控对接业务调整

车车 3 månader sedan
förälder
incheckning
e4ec970e56

+ 38 - 17
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/HardwareApiServiceImpl.java

@@ -105,13 +105,15 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         // 1.4获取上锁时的数据
         IsJobTicketKey jobTicketKey = iIsJobTicketKeyService.getOne(Wrappers.<IsJobTicketKey>lambdaUpdate()
                 .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                .ne(IsJobTicketKey::getKeyStatus, "2")
                 .eq(IsJobTicketKey::getTicketType, "0"));
-        // 2.根据作业票判断到了哪一阶段了,如果上锁数据中这两个数据有空的,那肯定是上锁阶段还没有完成
-        if (jobTicketKey.getCollectTime() == null || jobTicketKey.getGiveBackTime() == null) {
+        // 2.根据作业票判断到了哪一阶段了,如果未归还的上锁数据不为空并且上锁数据中这两个数据有空的,那肯定是上锁阶段还没有完成
+        if (jobTicketKey!=null && (jobTicketKey.getCollectTime() == null || jobTicketKey.getGiveBackTime() == null)) {
             // 3.上锁阶段取钥匙
             iIsJobTicketKeyService.update(Wrappers.<IsJobTicketKey>lambdaUpdate()
-                    .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
-                    .eq(IsJobTicketKey::getTicketType, "0")
+                    /*.eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                    .eq(IsJobTicketKey::getTicketType, "0")*/
+                    .eq(IsJobTicketKey::getRecordId, jobTicketKey.getRecordId())
                     .set(IsJobTicketKey::getKeyId, startKey.getKeyId())
                     .set(IsJobTicketKey::getFromHardwareId, isHardware.getId())
                     .set(IsJobTicketKey::getCollectTime, date)
@@ -123,10 +125,15 @@ public class HardwareApiServiceImpl implements HardwareApiService {
             reqVO.equipStatus = 3;
             isJobTicketService.updateTicketProgress(reqVO);
         } else {
+            IsJobTicketKey jobTicketKey1 = iIsJobTicketKeyService.getOne(Wrappers.<IsJobTicketKey>lambdaUpdate()
+                    .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                    .ne(IsJobTicketKey::getKeyStatus, "2")
+                    .eq(IsJobTicketKey::getTicketType, "1"));
             // 3.1解锁阶段取钥匙
             iIsJobTicketKeyService.update(Wrappers.<IsJobTicketKey>lambdaUpdate()
-                    .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
-                    .eq(IsJobTicketKey::getTicketType, "1")
+                    /*.eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                    .eq(IsJobTicketKey::getTicketType, "1")*/
+                    .eq(IsJobTicketKey::getRecordId, jobTicketKey1.getRecordId())
                     .set(IsJobTicketKey::getKeyId, startKey.getKeyId())
                     .set(IsJobTicketKey::getFromHardwareId, isHardware.getId())
                     .set(IsJobTicketKey::getCollectTime, date)
@@ -218,13 +225,15 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         // 1.4获取上锁时的数据
         IsJobTicketKey jobTicketKey = iIsJobTicketKeyService.getOne(Wrappers.<IsJobTicketKey>lambdaUpdate()
                 .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                .ne(IsJobTicketKey::getKeyStatus, "2")
                 .eq(IsJobTicketKey::getTicketType, "0"));
-        // 2.根据作业票判断到了哪一阶段了,如果上锁数据中这两个数据有空的,那肯定是上锁阶段还没有完成
-        if (jobTicketKey.getCollectTime() == null || jobTicketKey.getGiveBackTime() == null) {
+        // 2.根据作业票判断到了哪一阶段了,如果未归还的上锁数据不为空并且上锁数据中这两个数据有空的,那肯定是上锁阶段还没有完成
+        if (jobTicketKey!=null && (jobTicketKey.getCollectTime() == null || jobTicketKey.getGiveBackTime() == null)) {
             // 3.1上锁阶段还钥匙
             iIsJobTicketKeyService.update(Wrappers.<IsJobTicketKey>lambdaUpdate()
-                    .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
-                    .eq(IsJobTicketKey::getTicketType, "0")
+                    /*.eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                    .eq(IsJobTicketKey::getTicketType, "0")*/
+                    .eq(IsJobTicketKey::getRecordId, jobTicketKey.getRecordId())
                     .set(IsJobTicketKey::getKeyId, startKey.getKeyId())
                     .set(IsJobTicketKey::getToHardwareId, isHardware.getId())
                     .set(IsJobTicketKey::getGiveBackTime, date)
@@ -246,10 +255,15 @@ public class HardwareApiServiceImpl implements HardwareApiService {
                 iIsJobTicketKeyService.save(isJobTicketKey);
             }
         } else {
+            IsJobTicketKey jobTicketKey1 = iIsJobTicketKeyService.getOne(Wrappers.<IsJobTicketKey>lambdaUpdate()
+                    .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                    .ne(IsJobTicketKey::getKeyStatus, "2")
+                    .eq(IsJobTicketKey::getTicketType, "1"));
             // 3.2解锁阶段还钥匙
             iIsJobTicketKeyService.update(Wrappers.<IsJobTicketKey>lambdaUpdate()
-                    .eq(IsJobTicketKey::getTicketId, dto.getTicketId())
-                    .eq(IsJobTicketKey::getTicketType, "1")
+                    /*.eq(IsJobTicketKey::getTicketId, dto.getTicketId())
+                    .eq(IsJobTicketKey::getTicketType, "1")*/
+                    .eq(IsJobTicketKey::getRecordId, jobTicketKey1.getRecordId())
                     .set(IsJobTicketKey::getKeyId, startKey.getKeyId())
                     .set(IsJobTicketKey::getToHardwareId, isHardware.getId())
                     .set(IsJobTicketKey::getGiveBackTime, date)
@@ -262,6 +276,13 @@ public class HardwareApiServiceImpl implements HardwareApiService {
                 isJobTicketService.update(Wrappers.<IsJobTicket>lambdaUpdate()
                         .eq(IsJobTicket::getTicketId, dto.getTicketId())
                         .set(IsJobTicket::getTicketStatus, "4"));
+            } else {
+                // 3.1.2如果没解完,允许再次获取一个新钥匙去解锁,所以要在生成一个解锁时取钥匙的初始化数据
+                IsJobTicketKey isJobTicketKey = new IsJobTicketKey();
+                isJobTicketKey.setTicketId(dto.getTicketId());
+                isJobTicketKey.setKeyStatus("0");
+                isJobTicketKey.setTicketType(1);
+                iIsJobTicketKeyService.save(isJobTicketKey);
             }
         }
         /*JobTicketUpdateProgressReqVO reqVO = new JobTicketUpdateProgressReqVO();
@@ -379,7 +400,7 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         if (dto.getTicketId() != null) {
             // 2.1登陆后归还, 判断钥匙在哪个阶段,根据不同阶段更新不一样
             Integer lockStateByNfc = getLockStateByNfc(dto.getLockNfc(), dto.getTicketId());
-            if (lockStateByNfc.equals(0)) {
+            if (lockStateByNfc.equals(0) || lockStateByNfc.equals(2)) {
                 // 0-上锁未取钥匙(可锁-需更改还锁逻辑)
                 iIsJobTicketLockService.update(Wrappers.<IsJobTicketLock>lambdaUpdate()
                         .eq(IsJobTicketLock::getTicketId, dto.getTicketId())
@@ -409,10 +430,10 @@ public class HardwareApiServiceImpl implements HardwareApiService {
             } else if (jobTicketLockList.size() == 1) {
                 // 2.1登陆后归还, 判断钥匙在哪个阶段,根据不同阶段更新不一样
                 Integer lockStateByNfc = getLockStateByNfc(dto.getLockNfc(), jobTicketLockList.get(0).getTicketId());
-                if (lockStateByNfc.equals(0)) {
+                if (lockStateByNfc.equals(0) || lockStateByNfc.equals(2)) {
                     // 0-上锁未取钥匙(可锁-需更改还锁逻辑)
                     iIsJobTicketLockService.update(Wrappers.<IsJobTicketLock>lambdaUpdate()
-                            .eq(IsJobTicketLock::getTicketId, dto.getTicketId())
+                            .eq(IsJobTicketLock::getTicketId, jobTicketLockList.get(0).getTicketId())
                             .eq(IsJobTicketLock::getLockId, lock.getLockId())
                             .set(IsJobTicketLock::getLockId, null)
                             .set(IsJobTicketLock::getFromHardwareId, null)
@@ -949,7 +970,7 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         boolean b = false;
         Assert.notNull(ticketId, "当前作业票id不能为空!");
         // 0.检查是不是取了锁 但是没有取钥匙,如果是说明数据有问题,断过网
-        checkExTakeLock(ticketId);
+        // checkExTakeLock(ticketId);
         IsJobTicket isJobTicket = isJobTicketService.getById(ticketId);
         // 1.查询当前作业票需要上锁的点位信息
         List<IsJobTicketPoints> listByTicketId = iIsJobTicketPointsService.list(Wrappers.<IsJobTicketPoints>lambdaQuery()
@@ -1245,7 +1266,7 @@ public class HardwareApiServiceImpl implements HardwareApiService {
                 return 0;
             } else if (lockLast.getKeyStatus().equals("1")) {
                 return 1;
-            } else if (lockLast.getKeyStatus().equals("2") &&  unlockLast.getKeyStatus().equals("0")) {
+            } else if (lockLast.getKeyStatus().equals("2") && unlockLast.getKeyStatus().equals("0")) {
                 return 2;
             } else if (unlockLast.getKeyStatus().equals("1")) {
                 return 3;