|
|
@@ -11,6 +11,7 @@ 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;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -20,7 +21,6 @@ import org.springframework.validation.annotation.Validated;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
-import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 作业票处理过程 Service 实现类
|
|
|
@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@Service
|
|
|
@Validated
|
|
|
+@Slf4j
|
|
|
public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService {
|
|
|
|
|
|
@Autowired
|
|
|
@@ -48,10 +49,11 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
@Autowired
|
|
|
private WorkflowWorkNodeService workflowWorkNodeService;
|
|
|
@Autowired
|
|
|
- private KeyService isKeyService;
|
|
|
+ private KeyService iscsKeyService;
|
|
|
@Autowired
|
|
|
private LockService iscsLockService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private WorkflowWorkPointService workflowWorkPointService;
|
|
|
|
|
|
@Override
|
|
|
public Boolean insertWorkTicket(WorkHandleSaveReqVO vo) {
|
|
|
@@ -110,116 +112,95 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
public BackDataVO updatePointLock(KeyBackVO keyBackVO) {
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
List<PointLockVO> list = keyBackVO.getList();
|
|
|
- Long nodeId = null;
|
|
|
+ BackDataVO backDataVO = new BackDataVO();
|
|
|
+ KeyDO keyDO = iscsKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
|
|
|
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()));
|
|
|
- }
|
|
|
- }
|
|
|
- } 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);
|
|
|
- }
|
|
|
-
|
|
|
- if (nodeId != null && StringUtils.isNotBlank(keyBackVO.getKeyNfc())) {
|
|
|
+ if (keyDO == null || list.isEmpty()) {
|
|
|
+ // 如果没有任务,则直接返回
|
|
|
+ backDataVO.setWorkName("无作业");
|
|
|
+ backDataVO.setNodeName("无任务");
|
|
|
+ backDataVO.setOrderNo(null);
|
|
|
+ backDataVO.setInitiatorName(null);
|
|
|
+ backDataVO.setHardwareName(keyDO != null ? keyDO.getKeyName() : "无法识别的钥匙");
|
|
|
+ backDataVO.setBackDesc("归还成功");
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(now);
|
|
|
+ return backDataVO;
|
|
|
+ } else {
|
|
|
+ Long nodeId = list.get(0).getNodeId();
|
|
|
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);
|
|
|
- }
|
|
|
+ WorkflowWorkDO workflowWorkDO = workflowWorkService.getById(nodeDO.getWorkId());
|
|
|
+ List<WorkflowWorkPointDO> list1 = workflowWorkPointService.list(Wrappers.<WorkflowWorkPointDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkPointDO::getNodeId, nodeId));
|
|
|
+ if (list1.isEmpty() || list1.size() != list.size()) {
|
|
|
+ // 检测作业有没有完成,没有完成提示归还失败
|
|
|
backDataVO.setWorkName(workflowWorkDO.getName());
|
|
|
- backDataVO.setNodeName(nodeDO.getNodeName());
|
|
|
+ backDataVO.setNodeName(workflowWorkDO.getName());
|
|
|
backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
|
|
|
backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
|
|
|
+ backDataVO.setHardwareName(keyDO.getKeyName());
|
|
|
+ backDataVO.setBackDesc("归还失败(任务未完成)");
|
|
|
+ backDataVO.setBackStatus("0");
|
|
|
+ backDataVO.setOperationTime(LocalDateTime.now());
|
|
|
+ return backDataVO;
|
|
|
} else {
|
|
|
- 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(workflowWorkDO.getName());
|
|
|
+ backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
|
|
|
+ backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
|
|
|
+ backDataVO.setHardwareName(keyDO.getKeyName());
|
|
|
+ backDataVO.setBackDesc("归还成功");
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(LocalDateTime.now());
|
|
|
+
|
|
|
+ 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()));
|
|
|
}
|
|
|
- backDataVO.setWorkName("无作业任务");
|
|
|
- backDataVO.setNodeName("无关联作业");
|
|
|
- // backDataVO.setOrderNo();
|
|
|
- // backDataVO.setInitiatorName();
|
|
|
- hardwareDataVOS.add(hardwareDataVO);
|
|
|
- backDataVO.setHardwareDataList(hardwareDataVOS);
|
|
|
}
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("发生异常{}", e);
|
|
|
+ backDataVO.setWorkName(null);
|
|
|
+ backDataVO.setNodeName(null);
|
|
|
+ backDataVO.setOrderNo(null);
|
|
|
+ backDataVO.setInitiatorName(null);
|
|
|
+ backDataVO.setHardwareName(keyDO != null ? keyDO.getKeyName() : "无法识别的钥匙");
|
|
|
+ backDataVO.setBackDesc(null);
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(now);
|
|
|
return backDataVO;
|
|
|
}
|
|
|
+ return backDataVO;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -322,10 +303,23 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
@Override
|
|
|
public BackDataVO updatePointUnlock(KeyBackVO keyBackVO) {
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
- Long nodeId = null;
|
|
|
- try{
|
|
|
- if (!keyBackVO.getList().isEmpty()) {
|
|
|
- nodeId = keyBackVO.getList().get(0).getNodeId();
|
|
|
+ List<PointLockVO> list = keyBackVO.getList();
|
|
|
+ BackDataVO backDataVO = new BackDataVO();
|
|
|
+ KeyDO keyDO = iscsKeyService.getOne(Wrappers.<KeyDO>lambdaQuery().eq(KeyDO::getKeyNfc, keyBackVO.getKeyNfc()));
|
|
|
+ try {
|
|
|
+ if (keyDO == null || list.isEmpty()) {
|
|
|
+ // 如果没有任务,则直接返回
|
|
|
+ backDataVO.setWorkName("无作业");
|
|
|
+ backDataVO.setNodeName("无任务");
|
|
|
+ backDataVO.setOrderNo(null);
|
|
|
+ backDataVO.setInitiatorName(null);
|
|
|
+ backDataVO.setHardwareName(keyDO != null ? keyDO.getKeyName() : "无法识别的钥匙");
|
|
|
+ backDataVO.setBackDesc("归还成功");
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(now);
|
|
|
+ return backDataVO;
|
|
|
+ } else {
|
|
|
+ Long nodeId = keyBackVO.getList().get(0).getNodeId();
|
|
|
Long fatherNodeId = 0L;
|
|
|
Assert.notNull(nodeId, "nodeId不可为空");
|
|
|
WorkflowWorkNodeDO byId = workflowWorkNodeService.getById(nodeId);
|
|
|
@@ -336,102 +330,70 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
.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()));
|
|
|
- }
|
|
|
- }
|
|
|
- } 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);
|
|
|
- }
|
|
|
+ WorkflowWorkDO workflowWorkDO = workflowWorkService.getById(byId.getWorkId());
|
|
|
+ List<WorkflowWorkPointDO> list1 = workflowWorkPointService.list(Wrappers.<WorkflowWorkPointDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkPointDO::getNodeId, fatherNodeId));
|
|
|
|
|
|
- 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);
|
|
|
- }
|
|
|
+ // 检查是不是所有人都已经解除共锁
|
|
|
+ Boolean b = pointUnlockCheck(fatherNodeId);
|
|
|
+ if (!b || list1.isEmpty() || list1.size() != list.size()) {
|
|
|
+ // 检测作业有没有完成,没有完成提示归还失败
|
|
|
backDataVO.setWorkName(workflowWorkDO.getName());
|
|
|
- backDataVO.setNodeName(nodeDO.getNodeName());
|
|
|
+ backDataVO.setNodeName(workflowWorkDO.getName());
|
|
|
backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
|
|
|
backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
|
|
|
+ backDataVO.setHardwareName(keyDO.getKeyName());
|
|
|
+ backDataVO.setBackDesc("归还失败(任务未完成)");
|
|
|
+ backDataVO.setBackStatus("0");
|
|
|
+ backDataVO.setOperationTime(LocalDateTime.now());
|
|
|
+ return backDataVO;
|
|
|
} else {
|
|
|
- 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(workflowWorkDO.getName());
|
|
|
+ backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
|
|
|
+ backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
|
|
|
+ backDataVO.setHardwareName(keyDO.getKeyName());
|
|
|
+ backDataVO.setBackDesc("归还成功");
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(LocalDateTime.now());
|
|
|
+ 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()));
|
|
|
}
|
|
|
- backDataVO.setWorkName("无作业任务");
|
|
|
- backDataVO.setNodeName("无关联作业");
|
|
|
- // backDataVO.setOrderNo();
|
|
|
- // backDataVO.setInitiatorName();
|
|
|
- hardwareDataVOS.add(hardwareDataVO);
|
|
|
- backDataVO.setHardwareDataList(hardwareDataVOS);
|
|
|
}
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("发生异常{}", e);
|
|
|
+ backDataVO.setWorkName(null);
|
|
|
+ backDataVO.setNodeName(null);
|
|
|
+ backDataVO.setOrderNo(null);
|
|
|
+ backDataVO.setInitiatorName(null);
|
|
|
+ backDataVO.setHardwareName(keyDO != null ? keyDO.getKeyName() : "无法识别的钥匙");
|
|
|
+ backDataVO.setBackDesc(null);
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(now);
|
|
|
return backDataVO;
|
|
|
}
|
|
|
+ return backDataVO;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -484,88 +446,93 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
.eq(WorkflowWorkNodeUserDO::getType, "jtcolocker")
|
|
|
.eq(WorkflowWorkNodeUserDO::getStatus, "1"));
|
|
|
if (!list.isEmpty()) {
|
|
|
- List<Long> colockUserIds = list.stream().map(WorkflowWorkNodeUserDO::getUserId).toList();
|
|
|
- List<AdminUserDO> userList = adminUserService.getUserList(colockUserIds);
|
|
|
- String colockUserNames = userList.stream().map(AdminUserDO::getNickname).collect(Collectors.joining(","));
|
|
|
- Assert.isTrue(false, colockUserNames + "未解除共锁,暂不可解锁");
|
|
|
+ // List<Long> colockUserIds = list.stream().map(WorkflowWorkNodeUserDO::getUserId).toList();
|
|
|
+ // List<AdminUserDO> userList = adminUserService.getUserList(colockUserIds);
|
|
|
+ // String colockUserNames = userList.stream().map(AdminUserDO::getNickname).collect(Collectors.joining(","));
|
|
|
+ // Assert.isTrue(false, colockUserNames + "未解除共锁,暂不可解锁");
|
|
|
+ return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Boolean updateBackLock(List<HandleLockVO> list) {
|
|
|
+ public List<BackDataVO> updateBackLock(List<HandleLockVO> list) {
|
|
|
// 直接还
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
- Long nodeId = null;
|
|
|
+ List<BackDataVO> backDataVOList = new ArrayList<>();
|
|
|
+
|
|
|
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()
|
|
|
+ // 查询挂锁信息
|
|
|
+ LockDO lockDO = iscsLockService.getOne(Wrappers.<LockDO>lambdaQuery().eq(LockDO::getLockNfc, vo.getLockNfc()));
|
|
|
+ // 查询该挂锁是不是有已解锁未归还的任务
|
|
|
+ List<WorkflowWorkTicketLockDO> list1 = lockService.list((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);
|
|
|
+ .eq(WorkflowWorkTicketLockDO::getLockStatus, "4")));
|
|
|
+ if (lockDO == null || list1.isEmpty()) {
|
|
|
+ // 如果没有任务,则直接返回
|
|
|
+ BackDataVO backDataVO = new BackDataVO();
|
|
|
+ backDataVO.setWorkName("无作业");
|
|
|
+ backDataVO.setNodeName("无任务");
|
|
|
+ backDataVO.setOrderNo(null);
|
|
|
+ backDataVO.setInitiatorName(null);
|
|
|
+ backDataVO.setHardwareName(lockDO != null ? lockDO.getLockName() : "无法识别的挂锁");
|
|
|
+ backDataVO.setBackDesc("归还成功");
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(LocalDateTime.now());
|
|
|
+ backDataVOList.add(backDataVO);
|
|
|
+ } else {
|
|
|
+ WorkflowWorkNodeDO workflowWorkNode = workflowWorkNodeService.getWorkflowWorkNode(list1.get(0).getNodeId());
|
|
|
+ WorkflowWorkDO workflowWorkDO = workflowWorkService.getById(workflowWorkNode.getWorkId());
|
|
|
+ // 查询钥匙有没有归还,没归还提示归还失败
|
|
|
+ List<WorkflowWorkTicketKeyDO> list2 = keyService.list(Wrappers.<WorkflowWorkTicketKeyDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkTicketKeyDO::getNodeId, workflowWorkNode.getId())
|
|
|
+ .eq(WorkflowWorkTicketKeyDO::getKeyStatus, "1"));
|
|
|
+ if (!list2.isEmpty()) {
|
|
|
+ BackDataVO backDataVO = new BackDataVO();
|
|
|
+ backDataVO.setWorkName(workflowWorkDO.getName());
|
|
|
+ backDataVO.setNodeName(workflowWorkDO.getName());
|
|
|
+ backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
|
|
|
+ backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
|
|
|
+ backDataVO.setHardwareName(lockDO.getLockName());
|
|
|
+ backDataVO.setBackDesc("归还失败(任务未完成)");
|
|
|
+ backDataVO.setBackStatus("0");
|
|
|
+ backDataVO.setOperationTime(LocalDateTime.now());
|
|
|
+ backDataVOList.add(backDataVO);
|
|
|
+ } else {
|
|
|
+ BackDataVO backDataVO = new BackDataVO();
|
|
|
+ backDataVO.setWorkName(workflowWorkDO.getName());
|
|
|
+ backDataVO.setNodeName(workflowWorkDO.getName());
|
|
|
+ backDataVO.setOrderNo(workflowWorkDO.getOrderNo());
|
|
|
+ backDataVO.setInitiatorName(workflowWorkDO.getInitiatorName());
|
|
|
+ backDataVO.setHardwareName(lockDO.getLockName());
|
|
|
+ backDataVO.setBackDesc("归还成功");
|
|
|
+ backDataVO.setBackStatus("1");
|
|
|
+ backDataVO.setOperationTime(LocalDateTime.now());
|
|
|
+ backDataVOList.add(backDataVO);
|
|
|
+
|
|
|
+ // 开始执行完成任务节点的挂锁归还
|
|
|
+ lockService.update(Wrappers.<WorkflowWorkTicketLockDO>lambdaUpdate()
|
|
|
+ .eq(WorkflowWorkTicketLockDO::getLockNfc, vo.getLockNfc())
|
|
|
+ .eq(WorkflowWorkTicketLockDO::getLockStatus, "4")
|
|
|
+ .set(WorkflowWorkTicketLockDO::getLockStatus, "5")
|
|
|
+ .set(WorkflowWorkTicketLockDO::getToHardwareCode, vo.getHardwareCode()));
|
|
|
+
|
|
|
+ // 检测是不是都已经归还
|
|
|
+ WorkflowWorkNodeDO childNode = workflowWorkNodeService.getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, workflowWorkNode.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getIsolationNodeUuid, workflowWorkNode.getUuid()));
|
|
|
+ checkBackAutoApproval(childNode.getId(), workflowWorkNode.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
} 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);
|
|
|
-
|
|
|
- } 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);
|
|
|
-
|
|
|
- }
|
|
|
+ log.error("发生异常{}", e);
|
|
|
}
|
|
|
-
|
|
|
- return true;
|
|
|
+ return backDataVOList;
|
|
|
}
|
|
|
|
|
|
|