|
|
@@ -105,7 +105,7 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
}
|
|
|
|
|
|
// 检测,如果这个点位是隔离节点,并且他的有对应的解除隔离,需要更新解除隔离
|
|
|
- if (byId.getType().equals(WorkTypeEnum.ISOLATION.getValue())) {
|
|
|
+ if (byId.getType().equals(WorkTypeEnum.LOCK.getValue())) {
|
|
|
List<WorkflowWorkNodeDO> list = list(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
.eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
|
|
|
.eq(WorkflowWorkNodeDO::getIsolationNodeUuid, byId.getUuid()));
|
|
|
@@ -164,31 +164,34 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
});
|
|
|
saveBatch(workNodeDOList);
|
|
|
|
|
|
- // 存储上锁人、公锁人、点位
|
|
|
+ // 存储上锁人、点位
|
|
|
List<WorkflowWorkNodeUserDO> workflowWorkNodeUserDOS = new ArrayList<>();
|
|
|
for (WorkflowWorkNodeDO nodeDO : workNodeDOList) {
|
|
|
- if ("isolation".equals(nodeDO.getType())) {
|
|
|
- for (WorkflowDesignNodeDO workflowDesignNodeDO : designNodeDOList) {
|
|
|
- if (nodeDO.getUuid().equals(workflowDesignNodeDO.getUuid())) {
|
|
|
- // 解析上锁人
|
|
|
- if (StringUtils.isNotBlank(workflowDesignNodeDO.getLockPerson())) {
|
|
|
- WorkflowWorkNodeUserDO workflowWorkNodeUserDO = new WorkflowWorkNodeUserDO();
|
|
|
- workflowWorkNodeUserDO.setNodeId(nodeDO.getId());
|
|
|
- workflowWorkNodeUserDO.setType("jtlocker");
|
|
|
- workflowWorkNodeUserDO.setUserId(Long.valueOf(workflowDesignNodeDO.getLockPerson()));
|
|
|
- workflowWorkNodeUserDOS.add(workflowWorkNodeUserDO);
|
|
|
- }
|
|
|
- // 解析共锁人
|
|
|
- if (StringUtils.isNotBlank(workflowDesignNodeDO.getColockPersons())) {
|
|
|
- List<Long> longs = parseStringToLongList(workflowDesignNodeDO.getColockPersons());
|
|
|
- for (Long aLong : longs) {
|
|
|
- WorkflowWorkNodeUserDO workflowWorkNodeUserDO = new WorkflowWorkNodeUserDO();
|
|
|
- workflowWorkNodeUserDO.setNodeId(nodeDO.getId());
|
|
|
- workflowWorkNodeUserDO.setType("jtcolocker");
|
|
|
- workflowWorkNodeUserDO.setUserId(aLong);
|
|
|
- workflowWorkNodeUserDOS.add(workflowWorkNodeUserDO);
|
|
|
- }
|
|
|
- }
|
|
|
+ if (WorkTypeEnum.LOCK.value.equals(nodeDO.getType())) {
|
|
|
+ // 解析上锁人
|
|
|
+ if (StringUtils.isNotBlank(nodeDO.getLockPerson())) {
|
|
|
+ WorkflowWorkNodeUserDO workflowWorkNodeUserDO = new WorkflowWorkNodeUserDO();
|
|
|
+ workflowWorkNodeUserDO.setNodeId(nodeDO.getId());
|
|
|
+ workflowWorkNodeUserDO.setType("jtlocker");
|
|
|
+ workflowWorkNodeUserDO.setUserId(Long.valueOf(nodeDO.getLockPerson()));
|
|
|
+ workflowWorkNodeUserDOS.add(workflowWorkNodeUserDO);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 解析点位进行存储
|
|
|
+ analysisPointSave(nodeDO.getId(), nodeDO.getIsolationPoints());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 开始解析共锁人
|
|
|
+ if (WorkTypeEnum.COLOCK.value.equals(nodeDO.getType())) {
|
|
|
+ // 解析共锁人
|
|
|
+ if (StringUtils.isNotBlank(nodeDO.getColockPersons())) {
|
|
|
+ List<Long> longs = parseStringToLongList(nodeDO.getColockPersons());
|
|
|
+ for (Long aLong : longs) {
|
|
|
+ WorkflowWorkNodeUserDO workflowWorkNodeUserDO = new WorkflowWorkNodeUserDO();
|
|
|
+ workflowWorkNodeUserDO.setNodeId(nodeDO.getId());
|
|
|
+ workflowWorkNodeUserDO.setType("jtcolocker");
|
|
|
+ workflowWorkNodeUserDO.setUserId(aLong);
|
|
|
+ workflowWorkNodeUserDOS.add(workflowWorkNodeUserDO);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -334,9 +337,9 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (nodeDO.getType().equals(WorkTypeEnum.ISOLATION.value)) {
|
|
|
+ if (nodeDO.getType().equals(WorkTypeEnum.LOCK.value)) {
|
|
|
String nodeProgress = nodeDO.getNodeProgress();
|
|
|
- // 上锁/共锁
|
|
|
+ // 上锁
|
|
|
List<WorkflowWorkNodeUserDO> nodeUserDOList = workflowWorkNodeUserService.list(Wrappers.<WorkflowWorkNodeUserDO>lambdaQuery().eq(WorkflowWorkNodeUserDO::getNodeId, nodeDO.getId()));
|
|
|
// 上锁人数据
|
|
|
List<Long> jtlockerIds = nodeUserDOList.stream().filter(o -> "jtlocker".equals(o.getType())).map(WorkflowWorkNodeUserDO::getUserId).toList();
|
|
|
@@ -378,15 +381,20 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
templateParams.put("name", "");
|
|
|
copyMessageSend(nodeDO, longs, "MESSAGE_011", templateParams);
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ if (nodeDO.getType().equals(WorkTypeEnum.COLOCK.value)) {
|
|
|
+ // 共锁
|
|
|
+ List<WorkflowWorkNodeUserDO> nodeUserDOList = workflowWorkNodeUserService.list(Wrappers.<WorkflowWorkNodeUserDO>lambdaQuery().eq(WorkflowWorkNodeUserDO::getNodeId, nodeDO.getId()));
|
|
|
// 共锁人
|
|
|
List<Long> jtcolockerIds = nodeUserDOList.stream().filter(o -> "jtcolocker".equals(o.getType())).map(WorkflowWorkNodeUserDO::getUserId).toList();
|
|
|
- if (!jtcolockerIds.isEmpty() && StringUtils.isNotBlank(nodeProgress) && "3".equals(nodeProgress)) {
|
|
|
+ if (!jtcolockerIds.isEmpty()) {
|
|
|
List<AdminUserDO> userList = adminUserService.getUserList(jtcolockerIds);
|
|
|
for (AdminUserDO adminUserDO : userList) {
|
|
|
// 发送
|
|
|
Map<String, Object> templateParams = new HashMap<>();
|
|
|
templateParams.put("name", adminUserDO.getNickname());
|
|
|
- templateParams.put("user", jtlockerName);
|
|
|
+ templateParams.put("user", "");
|
|
|
sendMessage(nodeDO, adminUserDO.getId(), "MESSAGE_008", templateParams);
|
|
|
}
|
|
|
// 抄送
|
|
|
@@ -397,10 +405,9 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (nodeDO.getType().equals(WorkTypeEnum.RELEASEISOLATION.value)) {
|
|
|
- // 解除共锁/上锁
|
|
|
+ if (nodeDO.getType().equals(WorkTypeEnum.UNLOCKCOLOCK.value)) {
|
|
|
+ // 解除共锁
|
|
|
if (StringUtils.isNotBlank(nodeDO.getIsolationNodeUuid())) {
|
|
|
- String nodeProgress = nodeDO.getNodeProgress();
|
|
|
// 先找到对应的上锁node
|
|
|
WorkflowWorkNodeDO parentNode = getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
.eq(WorkflowWorkNodeDO::getWorkId, nodeDO.getWorkId())
|
|
|
@@ -410,7 +417,7 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
// 共锁人
|
|
|
List<Long> jtcolockerIds = nodeUserDOList.stream().filter(o -> "jtcolocker".equals(o.getType())).map(WorkflowWorkNodeUserDO::getUserId).toList();
|
|
|
StringBuilder jtcolockerName = new StringBuilder();
|
|
|
- if (!jtcolockerIds.isEmpty() && StringUtils.isNotBlank(nodeProgress) && "1".equals(nodeProgress)) {
|
|
|
+ if (!jtcolockerIds.isEmpty()) {
|
|
|
List<AdminUserDO> userList = adminUserService.getUserList(jtcolockerIds);
|
|
|
for (AdminUserDO adminUserDO : userList) {
|
|
|
// 发送
|
|
|
@@ -425,39 +432,52 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
templateParams.put("name", "");
|
|
|
copyMessageSend(nodeDO, longs, "MESSAGE_009", templateParams);
|
|
|
}
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (nodeDO.getType().equals(WorkTypeEnum.UNLOCK.value)) {
|
|
|
+ // 解除上锁
|
|
|
+ if (StringUtils.isNotBlank(nodeDO.getIsolationNodeUuid())) {
|
|
|
+ String nodeProgress = nodeDO.getNodeProgress();
|
|
|
+ // 先找到对应的上锁node
|
|
|
+ WorkflowWorkNodeDO parentNode = getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, nodeDO.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getUuid, nodeDO.getIsolationNodeUuid()));
|
|
|
+ // 再找关联的人员信息
|
|
|
+ List<WorkflowWorkNodeUserDO> nodeUserDOList = workflowWorkNodeUserService.list(Wrappers.<WorkflowWorkNodeUserDO>lambdaQuery().eq(WorkflowWorkNodeUserDO::getNodeId, parentNode.getId()));
|
|
|
// 上锁人
|
|
|
List<Long> jtlockerIds = nodeUserDOList.stream().filter(o -> "jtlocker".equals(o.getType())).map(WorkflowWorkNodeUserDO::getUserId).toList();
|
|
|
- if (!jtlockerIds.isEmpty() && StringUtils.isNotBlank(nodeProgress) && "2".equals(nodeProgress)) {
|
|
|
+ if (!jtlockerIds.isEmpty() && StringUtils.isNotBlank(nodeProgress) && "1".equals(nodeProgress)) {
|
|
|
List<AdminUserDO> userList = adminUserService.getUserList(jtlockerIds);
|
|
|
for (AdminUserDO adminUserDO : userList) {
|
|
|
// 发送
|
|
|
Map<String, Object> templateParams = new HashMap<>();
|
|
|
templateParams.put("name", adminUserDO.getNickname());
|
|
|
- templateParams.put("names", jtcolockerName);
|
|
|
+ templateParams.put("names", "");
|
|
|
sendMessage(nodeDO, adminUserDO.getId(), "MESSAGE_005", templateParams);
|
|
|
}
|
|
|
// 抄送
|
|
|
longs.addAll(jtlockerIds);
|
|
|
Map<String, Object> templateParams = new HashMap<>();
|
|
|
templateParams.put("name", "");
|
|
|
- templateParams.put("names", jtcolockerName);
|
|
|
+ templateParams.put("names", "");
|
|
|
copyMessageSend(nodeDO, longs, "MESSAGE_005", templateParams);
|
|
|
}
|
|
|
// 上锁人归还硬件
|
|
|
- if (!jtlockerIds.isEmpty() && StringUtils.isNotBlank(nodeProgress) && "3".equals(nodeProgress)) {
|
|
|
+ if (!jtlockerIds.isEmpty() && StringUtils.isNotBlank(nodeProgress) && "2".equals(nodeProgress)) {
|
|
|
List<AdminUserDO> userList = adminUserService.getUserList(jtlockerIds);
|
|
|
for (AdminUserDO adminUserDO : userList) {
|
|
|
// 发送
|
|
|
Map<String, Object> templateParams = new HashMap<>();
|
|
|
templateParams.put("name", adminUserDO.getNickname());
|
|
|
- templateParams.put("names", jtcolockerName);
|
|
|
+ templateParams.put("names", "");
|
|
|
sendMessage(nodeDO, adminUserDO.getId(), "MESSAGE_012", templateParams);
|
|
|
}
|
|
|
// 抄送
|
|
|
longs.addAll(jtlockerIds);
|
|
|
Map<String, Object> templateParams = new HashMap<>();
|
|
|
templateParams.put("name", "");
|
|
|
- templateParams.put("names", jtcolockerName);
|
|
|
+ templateParams.put("names", "");
|
|
|
copyMessageSend(nodeDO, longs, "MESSAGE_012", templateParams);
|
|
|
}
|
|
|
}
|
|
|
@@ -639,5 +659,81 @@ public class WorkflowWorkNodeServiceImpl extends ServiceImpl<WorkflowWorkNodeMap
|
|
|
return myCompletedNodeList;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<WorkflowWorkNodeDO> getNodeTaskList(Long nodeId) {
|
|
|
+ // 定义上锁点位
|
|
|
+ WorkflowWorkNodeDO lockNode = null;
|
|
|
+ // 定义任务线返回值
|
|
|
+ List<WorkflowWorkNodeDO> workflowWorkNodeDOS = new ArrayList<>();
|
|
|
+
|
|
|
+
|
|
|
+ WorkflowWorkNodeDO byId = getById(nodeId);
|
|
|
+ if (byId != null) {
|
|
|
+ // 如果上锁节点
|
|
|
+ if (byId.getType().equals(WorkTypeEnum.LOCK.value)) {
|
|
|
+ lockNode = byId;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果共锁节点 / 解锁节点
|
|
|
+ if (byId.getType().equals(WorkTypeEnum.COLOCK.value) || byId.getType().equals(WorkTypeEnum.UNLOCK.value)) {
|
|
|
+ WorkflowWorkNodeDO one = getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getType, WorkTypeEnum.LOCK.value)
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getUuid, byId.getIsolationNodeUuid()));
|
|
|
+ lockNode = one;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果解除共锁节点
|
|
|
+ if (byId.getType().equals(WorkTypeEnum.UNLOCKCOLOCK.value)) {
|
|
|
+ // 先找打共锁
|
|
|
+ WorkflowWorkNodeDO one = getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getType, WorkTypeEnum.COLOCK.value)
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getUuid, byId.getIsolationNodeUuid()));
|
|
|
+ // 再找到上锁
|
|
|
+ WorkflowWorkNodeDO one1 = getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getType, WorkTypeEnum.LOCK.value)
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getUuid, one.getIsolationNodeUuid()));
|
|
|
+ lockNode = one1;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 通过上锁点位去查询
|
|
|
+ if (lockNode != null && lockNode.getType().equals(WorkTypeEnum.LOCK.value)) {
|
|
|
+ // lock
|
|
|
+ workflowWorkNodeDOS.add(lockNode);
|
|
|
+
|
|
|
+ // coLock
|
|
|
+ List<WorkflowWorkNodeDO> coLockNodes = list(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getType, WorkTypeEnum.COLOCK.value)
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, lockNode.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getIsolationNodeUuid, lockNode.getUuid()));
|
|
|
+ workflowWorkNodeDOS.addAll(coLockNodes);
|
|
|
+
|
|
|
+ // unlockCoLock
|
|
|
+ if (!coLockNodes.isEmpty()) {
|
|
|
+ List<String> coLockUuids = coLockNodes.stream().map(WorkflowWorkNodeDO::getUuid).toList();
|
|
|
+ List<WorkflowWorkNodeDO> unlockCoLockNodes = list(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getType, WorkTypeEnum.UNLOCKCOLOCK.value)
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, lockNode.getWorkId())
|
|
|
+ .in(WorkflowWorkNodeDO::getIsolationNodeUuid, coLockUuids));
|
|
|
+ workflowWorkNodeDOS.addAll(unlockCoLockNodes);
|
|
|
+ }
|
|
|
+
|
|
|
+ // unlock
|
|
|
+ WorkflowWorkNodeDO unlockNodes = getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkNodeDO::getType, WorkTypeEnum.UNLOCK.value)
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, lockNode.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getIsolationNodeUuid, lockNode.getUuid()));
|
|
|
+ workflowWorkNodeDOS.add(unlockNodes);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return workflowWorkNodeDOS;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|