Переглянути джерело

新增归还硬件的日志

小车车 3 місяців тому
батько
коміт
da7a6ae785

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

@@ -34,8 +34,8 @@ public class WorkflowWorkTicketController {
     }
 
     @PostMapping("/updatePointLock")
-    @Operation(summary = "点位上锁")
-    public CommonResult<Boolean> updatePointLock(@Valid @RequestBody KeyBackVO vo) {
+    @Operation(summary = "点位上锁(归还钥匙)")
+    public CommonResult<BackDataVO> updatePointLock(@Valid @RequestBody KeyBackVO vo) {
         return success(workflowWorkHandleService.updatePointLock(vo));
     }
 
@@ -59,8 +59,8 @@ public class WorkflowWorkTicketController {
     }*/
 
     @PostMapping("/updatePointUnlock")
-    @Operation(summary = "点位解除上锁")
-    public CommonResult<Boolean> updatePointUnlock(@Valid @RequestBody KeyBackVO vo) {
+    @Operation(summary = "点位解除上锁(归还钥匙)")
+    public CommonResult<BackDataVO> updatePointUnlock(@Valid @RequestBody KeyBackVO vo) {
         return success(workflowWorkHandleService.updatePointUnlock(vo));
     }
 

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

@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workhandle.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+@Schema(description = "管理后台 - 归还钥匙/挂锁的返回数据")
+@Data
+public class BackDataVO {
+
+    @Schema(description = "作业名称")
+    private String workName;
+
+    @Schema(description = "任务名称")
+    private String nodeName;
+
+    @Schema(description = "作业单号")
+    private String orderNo;
+
+    @Schema(description = "发起人姓名(冗余字段)", example = "赵六")
+    private String initiatorName;
+
+    @Schema(description = "任务描述")
+    private List<HardwareDataVO> hardwareDataList;
+
+}

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

@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workhandle.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 归还钥匙/挂锁的返回数据")
+@Data
+public class HardwareDataVO {
+    @Schema(description = "硬件名称")
+    private String hardwareName;
+
+    @Schema(description = "归还描述")
+    private String backDesc;
+
+    @Schema(description = "操作时间")
+    private LocalDateTime operationTime;
+}

+ 2 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowWorkHandleService.java

@@ -14,7 +14,7 @@ public interface WorkflowWorkHandleService {
 
     Boolean insertWorkTicket(WorkHandleSaveReqVO vo);
 
-    Boolean updatePointLock(KeyBackVO vo);
+    BackDataVO updatePointLock(KeyBackVO vo);
 
     Boolean updateUserLock(UserLockVO vo);
 
@@ -22,7 +22,7 @@ public interface WorkflowWorkHandleService {
 
     // Boolean insertUnlockKey(UnlockKeyVO vo);
 
-    Boolean updatePointUnlock(KeyBackVO vo);
+    BackDataVO updatePointUnlock(KeyBackVO vo);
 
     Boolean updateBackLock(List<HandleLockVO> list);
 

+ 289 - 108
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowWorkHandleServiceImpl.java

@@ -3,7 +3,11 @@ package cn.iocoder.yudao.module.iscs.service.workdesign;
 import cn.hutool.core.lang.Assert;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workflowworknode.vo.ApprovalNodeReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.workdesign.workhandle.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.key.KeyDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.lock.LockDO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.*;
+import cn.iocoder.yudao.module.iscs.service.key.KeyService;
+import cn.iocoder.yudao.module.iscs.service.lock.LockService;
 import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
 import cn.iocoder.yudao.module.system.service.user.AdminUserService;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -43,6 +47,10 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
     private WorkflowWorkService workflowWorkService;
     @Autowired
     private WorkflowWorkNodeService workflowWorkNodeService;
+    @Autowired
+    private KeyService isKeyService;
+    @Autowired
+    private LockService iscsLockService;
 
 
     @Override
@@ -99,49 +107,122 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
 
     @Transactional
     @Override
-    public Boolean updatePointLock(KeyBackVO keyBackVO) {
+    public BackDataVO updatePointLock(KeyBackVO keyBackVO) {
         LocalDateTime now = LocalDateTime.now();
         List<PointLockVO> list = keyBackVO.getList();
-        if (!list.isEmpty()) {
-            Long nodeId = list.get(0).getNodeId();
-            Assert.notNull(nodeId, "nodeId不可为空");
-            for (PointLockVO vo : list) {
-                Assert.notBlank(vo.getPointNfc(), "pointNfc不可为空");
-                Assert.notBlank(vo.getLockNfc(), "lockNfc不可为空");
-                pointService.update(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
-                        .eq(WorkflowWorkPointDO::getNodeId, vo.getNodeId())
-                        .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc())
-                        .set(WorkflowWorkPointDO::getLockNfc, vo.getLockNfc())
-                        .set(WorkflowWorkPointDO::getLockTime, now)
-                        .set(WorkflowWorkPointDO::getStatus, "1"));
+        Long nodeId = null;
+        try {
+            if (!list.isEmpty()) {
+                nodeId = list.get(0).getNodeId();
+                Assert.notNull(nodeId, "nodeId不可为空");
+                for (PointLockVO vo : list) {
+                    Assert.notBlank(vo.getPointNfc(), "pointNfc不可为空");
+                    Assert.notBlank(vo.getLockNfc(), "lockNfc不可为空");
+                    pointService.update(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
+                            .eq(WorkflowWorkPointDO::getNodeId, vo.getNodeId())
+                            .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc())
+                            .set(WorkflowWorkPointDO::getLockNfc, vo.getLockNfc())
+                            .set(WorkflowWorkPointDO::getLockTime, now)
+                            .set(WorkflowWorkPointDO::getStatus, "1"));
+                }
+                // 检测上锁完成,更改上锁人状态
+                List<WorkflowWorkPointDO> unclockPoints = pointService.list(Wrappers.<WorkflowWorkPointDO>lambdaQuery()
+                        .eq(WorkflowWorkPointDO::getNodeId, nodeId)
+                        .eq(WorkflowWorkPointDO::getStatus, "0"));
+                if (unclockPoints.isEmpty()) {
+                    // 说明全部点位上锁完成,可以更新上锁人状态
+                    nodeUserService.update(Wrappers.<WorkflowWorkNodeUserDO>lambdaUpdate()
+                            .eq(WorkflowWorkNodeUserDO::getNodeId, nodeId)
+                            .eq(WorkflowWorkNodeUserDO::getType, "jtlocker")
+                            .set(WorkflowWorkNodeUserDO::getStatus, "1")
+                            .set(WorkflowWorkNodeUserDO::getLockTime, now));
+                }
+
+                // 帮助归还钥匙
+                String keyNfc = keyBackVO.getKeyNfc();
+                if (StringUtils.isNotBlank(keyNfc)) {
+                    // 开始归还钥匙
+                    keyService.update(Wrappers.<WorkflowWorkTicketKeyDO>lambdaUpdate()
+                            .eq(WorkflowWorkTicketKeyDO::getNodeId, nodeId)
+                            .eq(WorkflowWorkTicketKeyDO::getKeyNfc, keyNfc)
+                            .set(WorkflowWorkTicketKeyDO::getKeyStatus, "2")
+                            .set(WorkflowWorkTicketKeyDO::getToHardwareCode, keyBackVO.getHardwareCode()));
+                }
             }
-            // 检测上锁完成,更改上锁人状态
-            List<WorkflowWorkPointDO> unclockPoints = pointService.list(Wrappers.<WorkflowWorkPointDO>lambdaQuery()
-                    .eq(WorkflowWorkPointDO::getNodeId, nodeId)
-                    .eq(WorkflowWorkPointDO::getStatus, "0"));
-            if (unclockPoints.isEmpty()) {
-                // 说明全部点位上锁完成,可以更新上锁人状态
-                nodeUserService.update(Wrappers.<WorkflowWorkNodeUserDO>lambdaUpdate()
-                        .eq(WorkflowWorkNodeUserDO::getNodeId, nodeId)
-                        .eq(WorkflowWorkNodeUserDO::getType, "jtlocker")
-                        .set(WorkflowWorkNodeUserDO::getStatus, "1")
-                        .set(WorkflowWorkNodeUserDO::getLockTime, now));
+        } catch (Exception e) {
+            Assert.isTrue(false, e.getMessage());
+        } finally {
+            BackDataVO backDataVO = new BackDataVO();
+            // backDataVO.setWorkName();
+            // backDataVO.setNodeName();
+            // backDataVO.setOrderNo();
+            // backDataVO.setInitiatorName();
+            // backDataVO.setHardwareDataList();
+            List<HardwareDataVO> hardwareDataVOS = new ArrayList<>();
+            HardwareDataVO hardwareDataVO = new HardwareDataVO();
+
+            if (nodeId == null && StringUtils.isNotBlank(keyBackVO.getKeyNfc())) {
+                // 百分百没有作业直接返回钥匙返还成功
+                KeyDO keyDO = isKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
+                if (keyDO != null) {
+                    hardwareDataVO.setHardwareName(keyDO.getKeyName());
+                    hardwareDataVO.setBackDesc("钥匙归还成功");
+                    hardwareDataVO.setOperationTime(now);
+                } else {
+                    hardwareDataVO.setHardwareName("无法识别钥匙");
+                    hardwareDataVO.setBackDesc("钥匙归还失败");
+                    hardwareDataVO.setOperationTime(now);
+                }
+
+                backDataVO.setWorkName("无作业任务");
+                backDataVO.setNodeName("无关联作业");
+                // backDataVO.setOrderNo();
+                // backDataVO.setInitiatorName();
+                hardwareDataVOS.add(hardwareDataVO);
+                backDataVO.setHardwareDataList(hardwareDataVOS);
             }
 
-            // 帮助归还钥匙
-            String keyNfc = keyBackVO.getKeyNfc();
-            if (StringUtils.isNotBlank(keyNfc)) {
-                // 开始归还钥匙
-                keyService.update(Wrappers.<WorkflowWorkTicketKeyDO>lambdaUpdate()
-                        .eq(WorkflowWorkTicketKeyDO::getNodeId, nodeId)
-                        .eq(WorkflowWorkTicketKeyDO::getKeyNfc, keyNfc)
-                        .set(WorkflowWorkTicketKeyDO::getKeyStatus, "2")
-                        .set(WorkflowWorkTicketKeyDO::getToHardwareCode, keyBackVO.getHardwareCode()));
+            if (nodeId != null && StringUtils.isNotBlank(keyBackVO.getKeyNfc())) {
+                WorkflowWorkNodeDO nodeDO = workflowWorkNodeService.getById(nodeId);
+                KeyDO keyDO = isKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
+                if (nodeDO != null) {
+                    WorkflowWorkDO workflowWorkDO = workflowWorkService.getById(nodeDO.getWorkId());
+                    if (keyDO != null) {
+                        hardwareDataVO.setHardwareName(keyDO.getKeyName());
+                        hardwareDataVO.setBackDesc("钥匙归还成功");
+                        hardwareDataVO.setOperationTime(now);
+                    } else {
+                        hardwareDataVO.setHardwareName("无法识别钥匙");
+                        hardwareDataVO.setBackDesc("钥匙归还失败");
+                        hardwareDataVO.setOperationTime(now);
+                    }
+                    backDataVO.setWorkName(workflowWorkDO.getName());
+                    backDataVO.setNodeName(nodeDO.getNodeName());
+                    backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
+                    backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
+                } else {
+                    if (keyDO != null) {
+                        hardwareDataVO.setHardwareName(keyDO.getKeyName());
+                        hardwareDataVO.setBackDesc("钥匙归还成功");
+                        hardwareDataVO.setOperationTime(now);
+                    } else {
+                        hardwareDataVO.setHardwareName("无法识别钥匙");
+                        hardwareDataVO.setBackDesc("钥匙归还失败");
+                        hardwareDataVO.setOperationTime(now);
+                    }
+                    backDataVO.setWorkName("无作业任务");
+                    backDataVO.setNodeName("无关联作业");
+                    // backDataVO.setOrderNo();
+                    // backDataVO.setInitiatorName();
+                    hardwareDataVOS.add(hardwareDataVO);
+                    backDataVO.setHardwareDataList(hardwareDataVOS);
+                }
             }
+            return backDataVO;
         }
-        return true;
     }
 
+
     @Transactional
     @Override
     public Boolean updateUserLock(UserLockVO vo) {
@@ -239,69 +320,125 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
 
     @Transactional
     @Override
-    public Boolean updatePointUnlock(KeyBackVO keyBackVO) {
+    public BackDataVO updatePointUnlock(KeyBackVO keyBackVO) {
         LocalDateTime now = LocalDateTime.now();
-        if (!keyBackVO.getList().isEmpty()) {
-            Long nodeId = keyBackVO.getList().get(0).getNodeId();
-            Long fatherNodeId = 0L;
-            Assert.notNull(nodeId, "nodeId不可为空");
-            WorkflowWorkNodeDO byId = workflowWorkNodeService.getById(nodeId);
-            if (StringUtils.isNotBlank(byId.getIsolationNodeUuid())) {
-                // 如果是解除节点的查询操作,则查询对应隔离节点的数据
-                WorkflowWorkNodeDO one = workflowWorkNodeService.getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
-                        .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
-                        .eq(WorkflowWorkNodeDO::getUuid, byId.getIsolationNodeUuid()));
-                fatherNodeId = one.getId();
+        Long nodeId = null;
+        try{
+            if (!keyBackVO.getList().isEmpty()) {
+                nodeId = keyBackVO.getList().get(0).getNodeId();
+                Long fatherNodeId = 0L;
+                Assert.notNull(nodeId, "nodeId不可为空");
+                WorkflowWorkNodeDO byId = workflowWorkNodeService.getById(nodeId);
+                if (StringUtils.isNotBlank(byId.getIsolationNodeUuid())) {
+                    // 如果是解除节点的查询操作,则查询对应隔离节点的数据
+                    WorkflowWorkNodeDO one = workflowWorkNodeService.getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
+                            .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
+                            .eq(WorkflowWorkNodeDO::getUuid, byId.getIsolationNodeUuid()));
+                    fatherNodeId = one.getId();
+                }
+                // 检查是不是所有人都已经解除共锁
+                pointUnlockCheck(fatherNodeId);
+                for (PointLockVO vo : keyBackVO.getList()) {
+                    Assert.notBlank(vo.getPointNfc(), "pointNfc不可为空");
+                    pointService.update(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
+                            .eq(WorkflowWorkPointDO::getNodeId, fatherNodeId)
+                            .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc())
+                            .set(WorkflowWorkPointDO::getUnlockTime, now)
+                            .set(WorkflowWorkPointDO::getStatus, "2"));
+                }
+
+                // 检测解除共锁(未解除不可解锁,前面pointUnlockCheck判断了现在不用判断了)和点位解锁是否完成
+                checkBackAutoApproval(nodeId, fatherNodeId);
+
+                // 帮助归还钥匙
+                String keyNfc = keyBackVO.getKeyNfc();
+                if (StringUtils.isNotBlank(keyNfc)) {
+                    // 开始归还钥匙
+                    keyService.update(Wrappers.<WorkflowWorkTicketKeyDO>lambdaUpdate()
+                            .eq(WorkflowWorkTicketKeyDO::getNodeId, nodeId)
+                            .eq(WorkflowWorkTicketKeyDO::getKeyNfc, keyNfc)
+                            .set(WorkflowWorkTicketKeyDO::getKeyStatus, "2")
+                            .set(WorkflowWorkTicketKeyDO::getToHardwareCode, keyBackVO.getHardwareCode()));
+                }
             }
-            // 检查是不是所有人都已经解除共锁
-            pointUnlockCheck(fatherNodeId);
-            for (PointLockVO vo : keyBackVO.getList()) {
-                Assert.notBlank(vo.getPointNfc(), "pointNfc不可为空");
-                pointService.update(Wrappers.<WorkflowWorkPointDO>lambdaUpdate()
-                        .eq(WorkflowWorkPointDO::getNodeId, fatherNodeId)
-                        .eq(WorkflowWorkPointDO::getPointNfc, vo.getPointNfc())
-                        .set(WorkflowWorkPointDO::getUnlockTime, now)
-                        .set(WorkflowWorkPointDO::getStatus, "2"));
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        } finally {
+            BackDataVO backDataVO = new BackDataVO();
+            // backDataVO.setWorkName();
+            // backDataVO.setNodeName();
+            // backDataVO.setOrderNo();
+            // backDataVO.setInitiatorName();
+            // backDataVO.setHardwareDataList();
+            List<HardwareDataVO> hardwareDataVOS = new ArrayList<>();
+            HardwareDataVO hardwareDataVO = new HardwareDataVO();
+
+            if (nodeId == null && StringUtils.isNotBlank(keyBackVO.getKeyNfc())) {
+                // 百分百没有作业直接返回钥匙返还成功
+                KeyDO keyDO = isKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
+                if (keyDO != null) {
+                    hardwareDataVO.setHardwareName(keyDO.getKeyName());
+                    hardwareDataVO.setBackDesc("钥匙归还成功");
+                    hardwareDataVO.setOperationTime(now);
+                } else {
+                    hardwareDataVO.setHardwareName("无法识别钥匙");
+                    hardwareDataVO.setBackDesc("钥匙归还失败");
+                    hardwareDataVO.setOperationTime(now);
+                }
+
+                backDataVO.setWorkName("无作业任务");
+                backDataVO.setNodeName("无关联作业");
+                // backDataVO.setOrderNo();
+                // backDataVO.setInitiatorName();
+                hardwareDataVOS.add(hardwareDataVO);
+                backDataVO.setHardwareDataList(hardwareDataVOS);
             }
 
-            // 检测解除共锁(未解除不可解锁,前面pointUnlockCheck判断了现在不用判断了)和点位解锁是否完成
-            checkBackAutoApproval(nodeId, fatherNodeId);
-            /*List<WorkflowWorkPointDO> unlockPoints = pointService.list(Wrappers.<WorkflowWorkPointDO>lambdaQuery()
-                    .eq(WorkflowWorkPointDO::getNodeId, fatherNodeId)
-                    .ne(WorkflowWorkPointDO::getStatus, "2"));
-            if (unlockPoints.isEmpty()) {
-                // 全部解锁完成开始审批
-                ApprovalNodeReqVO approvalNodeReqVO = new ApprovalNodeReqVO();
-                approvalNodeReqVO.setNodeId(nodeId);
-                approvalNodeReqVO.setApprovalStatus("approved");
-                approvalNodeReqVO.setApprovalOpinion("approved");
-                workflowWorkService.updateNodeApproval(approvalNodeReqVO);
-
-                // 同时更新上锁人解锁完成状态
-                nodeUserService.update(Wrappers.<WorkflowWorkNodeUserDO>lambdaUpdate()
-                        .eq(WorkflowWorkNodeUserDO::getNodeId, fatherNodeId)
-                        .eq(WorkflowWorkNodeUserDO::getType, "jtlocker")
-                        .set(WorkflowWorkNodeUserDO::getStatus, "2")
-                        .set(WorkflowWorkNodeUserDO::getUnlockTime, now));
-            }*/
-
-            // 帮助归还钥匙
-            String keyNfc = keyBackVO.getKeyNfc();
-            if (StringUtils.isNotBlank(keyNfc)) {
-                // 开始归还钥匙
-                keyService.update(Wrappers.<WorkflowWorkTicketKeyDO>lambdaUpdate()
-                        .eq(WorkflowWorkTicketKeyDO::getNodeId, nodeId)
-                        .eq(WorkflowWorkTicketKeyDO::getKeyNfc, keyNfc)
-                        .set(WorkflowWorkTicketKeyDO::getKeyStatus, "2")
-                        .set(WorkflowWorkTicketKeyDO::getToHardwareCode, keyBackVO.getHardwareCode()));
+            if (nodeId != null && StringUtils.isNotBlank(keyBackVO.getKeyNfc())) {
+                WorkflowWorkNodeDO nodeDO = workflowWorkNodeService.getById(nodeId);
+                KeyDO keyDO = isKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
+                if (nodeDO != null) {
+                    WorkflowWorkDO workflowWorkDO = workflowWorkService.getById(nodeDO.getWorkId());
+                    if (keyDO != null) {
+                        hardwareDataVO.setHardwareName(keyDO.getKeyName());
+                        hardwareDataVO.setBackDesc("钥匙归还成功");
+                        hardwareDataVO.setOperationTime(now);
+                    } else {
+                        hardwareDataVO.setHardwareName("无法识别钥匙");
+                        hardwareDataVO.setBackDesc("钥匙归还失败");
+                        hardwareDataVO.setOperationTime(now);
+                    }
+                    backDataVO.setWorkName(workflowWorkDO.getName());
+                    backDataVO.setNodeName(nodeDO.getNodeName());
+                    backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
+                    backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
+                } else {
+                    if (keyDO != null) {
+                        hardwareDataVO.setHardwareName(keyDO.getKeyName());
+                        hardwareDataVO.setBackDesc("钥匙归还成功");
+                        hardwareDataVO.setOperationTime(now);
+                    } else {
+                        hardwareDataVO.setHardwareName("无法识别钥匙");
+                        hardwareDataVO.setBackDesc("钥匙归还失败");
+                        hardwareDataVO.setOperationTime(now);
+                    }
+                    backDataVO.setWorkName("无作业任务");
+                    backDataVO.setNodeName("无关联作业");
+                    // backDataVO.setOrderNo();
+                    // backDataVO.setInitiatorName();
+                    hardwareDataVOS.add(hardwareDataVO);
+                    backDataVO.setHardwareDataList(hardwareDataVOS);
+                }
             }
+            return backDataVO;
         }
-        return true;
     }
 
+
     /**
      * 检测是不是钥匙和锁都还完,如果是,自动审批当前节点
-     * @param nodeId 解除隔离节点的nodeId
+     *
+     * @param nodeId       解除隔离节点的nodeId
      * @param fatherNodeId 隔离节点的nodeId
      * @return
      */
@@ -358,32 +495,76 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
     @Override
     public Boolean updateBackLock(List<HandleLockVO> list) {
         // 直接还
-        // LocalDateTime now = LocalDateTime.now();
-        if (!list.isEmpty()) {
-            Long nodeId = list.get(0).getNodeId();
-            Assert.notNull(nodeId, "nodeId不能为空!");
-            WorkflowWorkNodeDO byId = workflowWorkNodeService.getById(nodeId);
-
-            for (HandleLockVO vo : list) {
-                Assert.notNull(vo.getLockNfc(), "lockNfc不可为空");
-                Assert.notNull(vo.getHardwareCode(), "hardwareCode不可为空");
-                lockService.update(Wrappers.<WorkflowWorkTicketLockDO>lambdaUpdate()
-                        .eq(WorkflowWorkTicketLockDO::getLockNfc, vo.getLockNfc())
-                        .set(WorkflowWorkTicketLockDO::getLockStatus, "5")
-                        .set(WorkflowWorkTicketLockDO::getToHardwareCode, vo.getHardwareCode()));
+        LocalDateTime now = LocalDateTime.now();
+        Long nodeId = null;
+        try {
+            if (!list.isEmpty()) {
+                nodeId = list.get(0).getNodeId();
+                Assert.notNull(nodeId, "nodeId不能为空!");
+                WorkflowWorkNodeDO byId = workflowWorkNodeService.getById(nodeId);
+
+                for (HandleLockVO vo : list) {
+                    Assert.notNull(vo.getLockNfc(), "lockNfc不可为空");
+                    Assert.notNull(vo.getHardwareCode(), "hardwareCode不可为空");
+                    lockService.update(Wrappers.<WorkflowWorkTicketLockDO>lambdaUpdate()
+                            .eq(WorkflowWorkTicketLockDO::getLockNfc, vo.getLockNfc())
+                            .set(WorkflowWorkTicketLockDO::getLockStatus, "5")
+                            .set(WorkflowWorkTicketLockDO::getToHardwareCode, vo.getHardwareCode()));
+                }
+
+                if (StringUtils.isNotBlank(byId.getIsolationNodeUuid())) {
+                    // 如果是解除节点的查询操作,则查询对应隔离节点的数据
+                    WorkflowWorkNodeDO one = workflowWorkNodeService.getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
+                            .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
+                            .eq(WorkflowWorkNodeDO::getUuid, byId.getIsolationNodeUuid()));
+                    Long fatherNodeId = one.getId();
+
+                    // 检测是不是都已经
+                    checkBackAutoApproval(nodeId, fatherNodeId);
+                }
             }
+        } catch (Exception e) {
+            System.out.println(e.getMessage());
+        } finally {
+            BackDataVO backDataVO = new BackDataVO();
+            List<HardwareDataVO> hardwareDataVOS = new ArrayList<>();
+            if (nodeId == null) {
+                for (HandleLockVO vo : list) {
+                    LockDO lockDO = iscsLockService.getOne(Wrappers.<LockDO>lambdaUpdate()
+                            .eq(LockDO::getLockNfc, vo.getLockNfc()));
+                    HardwareDataVO hardwareDataVO = new HardwareDataVO();
+                    hardwareDataVO.setHardwareName(lockDO != null ? lockDO.getLockName() : "无挂锁信息");
+                    hardwareDataVO.setBackDesc(lockDO != null ? "钥匙归还成功" : "钥匙归还失败");
+                    hardwareDataVO.setOperationTime(now);
+                    hardwareDataVOS.add(hardwareDataVO);
+                }
+                backDataVO.setWorkName("无作业任务");
+                backDataVO.setNodeName("无关联作业");
+                backDataVO.setHardwareDataList(hardwareDataVOS);
 
-            if (StringUtils.isNotBlank(byId.getIsolationNodeUuid())) {
-                // 如果是解除节点的查询操作,则查询对应隔离节点的数据
-                WorkflowWorkNodeDO one = workflowWorkNodeService.getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
-                        .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
-                        .eq(WorkflowWorkNodeDO::getUuid, byId.getIsolationNodeUuid()));
-                Long fatherNodeId = one.getId();
+            } else {
+                WorkflowWorkNodeDO workflowWorkNode = workflowWorkNodeService.getWorkflowWorkNode(nodeId);
+                WorkflowWorkDO workflowWorkDO = workflowWorkService.getById(workflowWorkNode.getWorkId());
+
+                for (HandleLockVO vo : list) {
+                    LockDO lockDO = iscsLockService.getOne(Wrappers.<LockDO>lambdaUpdate()
+                            .eq(LockDO::getLockNfc, vo.getLockNfc()));
+                    WorkflowWorkTicketLockDO ticketLockDO = lockService.getOne(Wrappers.<WorkflowWorkTicketLockDO>lambdaQuery()
+                            .eq(WorkflowWorkTicketLockDO::getNodeId, nodeId)
+                            .eq(WorkflowWorkTicketLockDO::getLockNfc, vo.getLockNfc()));
+                    HardwareDataVO hardwareDataVO = new HardwareDataVO();
+                    hardwareDataVO.setHardwareName(lockDO != null ? lockDO.getLockName() : "无挂锁信息");
+                    hardwareDataVO.setBackDesc(lockDO != null ? "钥匙归还成功" : "钥匙归还失败");
+                    hardwareDataVO.setOperationTime(now);
+                    hardwareDataVOS.add(hardwareDataVO);
+                }
+                backDataVO.setWorkName("无作业任务");
+                backDataVO.setNodeName("无关联作业");
+                backDataVO.setHardwareDataList(hardwareDataVOS);
 
-                // 检测是不是都已经
-                checkBackAutoApproval(nodeId, fatherNodeId);
             }
         }
+
         return true;
     }