Procházet zdrojové kódy

对接pda修改调整

车车 před 3 týdny
rodič
revize
7fad5d9f32

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workhandle/PDATicketController.java

@@ -18,7 +18,7 @@ import java.util.List;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
 
-@Tag(name = "管理后台 - 作业票处理过程")
+@Tag(name = "管理后台 - 作业票处理过程pda")
 @RestController
 @RequestMapping("/isc/work-handle-pda")
 @Validated

+ 3 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workhandle/vo/BackDataVO.java

@@ -33,4 +33,7 @@ public class BackDataVO {
     @Schema(description = "操作时间")
     private LocalDateTime operationTime;
 
+    @Schema(description = "钥匙归还标记(1-可以归还)")
+    private String keyBack;
+
 }

+ 2 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/workdesign/workhandle/vo/PDAKeyBackVO.java

@@ -12,8 +12,8 @@ public class PDAKeyBackVO {
     @Schema(description = "钥匙目标(0-挂锁 1-解锁)")
     private Integer target;
 
-    @Schema(description = "钥匙nfc")
-    private String keyNfc;
+    @Schema(description = "钥匙macAddress")
+    private String macAddress;
 
     @Schema(description = "柜子标识")
     private String hardwareCode;

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/PDAHandleService.java

@@ -15,7 +15,7 @@ public interface PDAHandleService {
 
     BackDataVO updateKeyBack(PDAKeyBackVO vo);
 
-    List<KeyStatusVO> getKeyStatus(List<String> macs);
+    List<KeyStatusVO>  getKeyStatus(List<String> macs);
 
 
 }

+ 23 - 5
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/PDAHandleServiceImpl.java

@@ -68,7 +68,7 @@ public class PDAHandleServiceImpl implements PDAHandleService {
         LocalDateTime now = LocalDateTime.now();
         List<PointLockVO> list = keyBackVO.getList();
         BackDataVO backDataVO = new BackDataVO();
-        KeyDO keyDO = iscsKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
+        KeyDO keyDO = iscsKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getMacAddress, keyBackVO.getMacAddress()));
         try {
             if (keyDO == null || list.isEmpty()) {
                 // 如果没有任务,则直接返回
@@ -114,6 +114,14 @@ public class PDAHandleServiceImpl implements PDAHandleService {
                         if (StringUtils.isNotBlank(vo.getPointNfc())
                                 && StringUtils.isNotBlank(vo.getLockNfc())
                                 && vo.getClosed().equals(1)) {
+                            // 防止pda重复提交,校验是否节点上锁完成,完成了就跳过
+                            WorkflowWorkPointDO ifClock = pointService.getOne(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
+                                    .eq(WorkflowWorkPointDO::getNodeId, vo.getNodeId())
+                                    .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc()));
+                            if (ifClock.getStatus().equals("1")) {
+                                continue;
+                            }
+
                             pointService.update(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
                                     .eq(WorkflowWorkPointDO::getNodeId, vo.getNodeId())
                                     .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc())
@@ -168,7 +176,7 @@ public class PDAHandleServiceImpl implements PDAHandleService {
                     }
 
                     // 帮助归还钥匙
-                    String keyNfc = keyBackVO.getKeyNfc();
+                    String keyNfc = keyDO.getKeyNfc();
                     if (StringUtils.isNotBlank(keyNfc)) {
                         // PDA需要判断是否全部上锁完成,完成才可以归还
                         if (unclockPoints.isEmpty()) {
@@ -179,6 +187,7 @@ public class PDAHandleServiceImpl implements PDAHandleService {
                                     .set(WorkflowWorkTicketKeyDO::getKeyStatus, "2")
                                     .set(WorkflowWorkTicketKeyDO::getToHardwareCode, keyBackVO.getHardwareCode())
                                     .set(WorkflowWorkTicketKeyDO::getGiveBackTime, now));
+                            backDataVO.setKeyBack("1");
                         }
 
                         if (!list2.isEmpty()) {
@@ -213,7 +222,7 @@ public class PDAHandleServiceImpl implements PDAHandleService {
         LocalDateTime now = LocalDateTime.now();
         List<PointLockVO> list = keyBackVO.getList();
         BackDataVO backDataVO = new BackDataVO();
-        KeyDO keyDO = iscsKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
+        KeyDO keyDO = iscsKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getMacAddress, keyBackVO.getMacAddress()));
         try {
             if (keyDO == null || list.isEmpty()) {
                 // 如果没有任务,则直接返回
@@ -271,6 +280,14 @@ public class PDAHandleServiceImpl implements PDAHandleService {
                                 && StringUtils.isNotBlank(vo.getLockNfc())
                                 && vo.getClosed().equals(1)) {
                             // closed = 1 说明这个点位解锁任务操作完成
+
+                            // 防止pda重复提交,校验是否节点解锁完成,完成了就跳过
+                            WorkflowWorkPointDO ifClock = pointService.getOne(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
+                                    .eq(WorkflowWorkPointDO::getNodeId, fatherNodeId)
+                                    .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc()));
+                            if (ifClock.getStatus().equals("2")) {
+                                continue;
+                            }
                             pointService.update(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
                                     .eq(WorkflowWorkPointDO::getNodeId, fatherNodeId)
                                     .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc())
@@ -287,7 +304,7 @@ public class PDAHandleServiceImpl implements PDAHandleService {
                     Boolean b1 = checkBackAutoApproval(nodeId, fatherNodeId);
 
                     // 帮助归还钥匙
-                    String keyNfc = keyBackVO.getKeyNfc();
+                    String keyNfc = keyDO.getKeyNfc();
                     if (StringUtils.isNotBlank(keyNfc)) {
                         // PDA需要检测是不是全部解锁完成,全部解锁完成了才算归还
                         if (b1) {
@@ -298,6 +315,7 @@ public class PDAHandleServiceImpl implements PDAHandleService {
                                     .set(WorkflowWorkTicketKeyDO::getKeyStatus, "2")
                                     .set(WorkflowWorkTicketKeyDO::getToHardwareCode, keyBackVO.getHardwareCode())
                                     .set(WorkflowWorkTicketKeyDO::getGiveBackTime, now));
+                            backDataVO.setKeyBack("1");
                         }
 
                         // isc_workflow_work_log日志记录
@@ -332,7 +350,7 @@ public class PDAHandleServiceImpl implements PDAHandleService {
         LocalDateTime now = LocalDateTime.now();
         // 检测点位是不是全部解锁完成
         List<WorkflowWorkPointDO> list = pointService.list(Wrappers.<WorkflowWorkPointDO>lambdaQuery()
-                .eq(WorkflowWorkPointDO::getNodeId, nodeId)
+                .eq(WorkflowWorkPointDO::getNodeId, fatherNodeId)
                 .ne(WorkflowWorkPointDO::getStatus, "2"));
         if (!list.isEmpty()) {
             // 说明没有全部解锁