|
|
@@ -1,11 +1,13 @@
|
|
|
package cn.iocoder.yudao.module.iscs.service.workdesign;
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
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.enums.WorkTypeEnum;
|
|
|
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;
|
|
|
@@ -55,14 +57,22 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
@Autowired
|
|
|
private WorkflowWorkPointService workflowWorkPointService;
|
|
|
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
public Boolean insertWorkTicket(WorkHandleSaveReqVO vo) {
|
|
|
- Assert.notNull(vo.getNodeId(), "nodeId不可为空");
|
|
|
+ Long nodeId = vo.getNodeId();
|
|
|
+ Assert.notNull(nodeId, "nodeId不可为空");
|
|
|
// 检查是否重复下发作业
|
|
|
- List<WorkflowWorkTicketDO> list = ticketService.list(Wrappers.<WorkflowWorkTicketDO>lambdaQuery().eq(WorkflowWorkTicketDO::getNodeId, vo.getNodeId()));
|
|
|
- Assert.isTrue(list.isEmpty(), "切勿重复下发作业");
|
|
|
+ WorkflowWorkTicketDO ticketDO = ticketService.getOne(Wrappers.<WorkflowWorkTicketDO>lambdaQuery().eq(WorkflowWorkTicketDO::getNodeId, vo.getNodeId()));
|
|
|
+ if (ticketDO != null) {
|
|
|
+ // 删除之前的数据覆盖
|
|
|
+ ticketService.remove(Wrappers.<WorkflowWorkTicketDO>lambdaQuery().eq(WorkflowWorkTicketDO::getNodeId, nodeId));
|
|
|
+ keyService.remove(Wrappers.<WorkflowWorkTicketKeyDO>lambdaQuery().eq(WorkflowWorkTicketKeyDO::getNodeId, nodeId));
|
|
|
+ lockService.remove(Wrappers.<WorkflowWorkTicketLockDO>lambdaQuery().eq(WorkflowWorkTicketLockDO::getNodeId, nodeId));
|
|
|
+ }
|
|
|
+ // Assert.isTrue(list.isEmpty(), "切勿重复下发作业");
|
|
|
WorkflowWorkNodeDO nodeDO = workflowWorkNodeService.getById(vo.getNodeId());
|
|
|
-
|
|
|
+ Assert.notNull(nodeDO, "任务nodeId = " + nodeId + "不存在");
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
Long ticketId = 0L;
|
|
|
if (StringUtils.isNotBlank(vo.getTicketContent())) {
|
|
|
@@ -104,9 +114,38 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
}
|
|
|
lockService.saveBatch(lockDOList);
|
|
|
}
|
|
|
+
|
|
|
+ // 如果是隔离任务检查是不是取锁完成
|
|
|
+ if (nodeDO.getType().equals(WorkTypeEnum.ISOLATION.value)) {
|
|
|
+ // 1.检查钥匙有没有取
|
|
|
+ // 2.检查挂锁和点位是不是数量相等
|
|
|
+ Integer pointCount = (int) pointService.count(Wrappers.<WorkflowWorkPointDO>lambdaQuery()
|
|
|
+ .eq(WorkflowWorkPointDO::getNodeId, nodeId));
|
|
|
+ if (!vo.getKeyNfcList().isEmpty() && !vo.getLockNfcList().isEmpty() && pointCount.equals(vo.getLockNfcList().size())) {
|
|
|
+ // 这样就算隔离的第一步骤完成,更新进度
|
|
|
+ workflowWorkNodeService.update(Wrappers.<WorkflowWorkNodeDO>lambdaUpdate()
|
|
|
+ .eq(WorkflowWorkNodeDO::getNodeProgress, "2"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果是解除隔离任务检查是不是取锁完成
|
|
|
+ if (nodeDO.getType().equals(WorkTypeEnum.RELEASEISOLATION.value)) {
|
|
|
+ // 1.检查钥匙有没有取
|
|
|
+ if (!vo.getKeyNfcList().isEmpty()) {
|
|
|
+ // 这样就算解除隔离的第二步骤完成,更新进度
|
|
|
+ workflowWorkNodeService.update(Wrappers.<WorkflowWorkNodeDO>lambdaUpdate()
|
|
|
+ .eq(WorkflowWorkNodeDO::getNodeProgress, "3"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 点位上锁(归还钥匙)
|
|
|
+ * @param keyBackVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public BackDataVO updatePointLock(KeyBackVO keyBackVO) {
|
|
|
@@ -174,6 +213,10 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
.eq(WorkflowWorkNodeUserDO::getType, "jtlocker")
|
|
|
.set(WorkflowWorkNodeUserDO::getStatus, "1")
|
|
|
.set(WorkflowWorkNodeUserDO::getLockTime, now));
|
|
|
+ // 更新nodeProgress
|
|
|
+ workflowWorkNodeService.update(Wrappers.<WorkflowWorkNodeDO>lambdaUpdate()
|
|
|
+ .eq(WorkflowWorkNodeDO::getId, nodeDO.getId())
|
|
|
+ .set(WorkflowWorkNodeDO::getNodeProgress, "3"));
|
|
|
}
|
|
|
|
|
|
// 帮助归还钥匙
|
|
|
@@ -256,13 +299,13 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
AdminUserDO adminUserDO = adminUserService.getOne(Wrappers.<AdminUserDO>lambdaQuery()
|
|
|
.eq(AdminUserDO::getCardNfc, vo.getCardNfc()));
|
|
|
Assert.notNull(adminUserDO, "共锁失败,工卡未录入!");
|
|
|
- WorkflowWorkNodeDO byId = workflowWorkNodeService.getById(vo.getNodeId());
|
|
|
+ WorkflowWorkNodeDO nodeDO = workflowWorkNodeService.getById(vo.getNodeId());
|
|
|
Long fatherNodeId = 0L;
|
|
|
- if (StringUtils.isNotBlank(byId.getIsolationNodeUuid())) {
|
|
|
+ if (StringUtils.isNotBlank(nodeDO.getIsolationNodeUuid())) {
|
|
|
// 如果是解除节点的查询操作,则查询对应隔离节点的数据
|
|
|
WorkflowWorkNodeDO one = workflowWorkNodeService.getOne(Wrappers.<WorkflowWorkNodeDO>lambdaQuery()
|
|
|
- .eq(WorkflowWorkNodeDO::getWorkId, byId.getWorkId())
|
|
|
- .eq(WorkflowWorkNodeDO::getUuid, byId.getIsolationNodeUuid()));
|
|
|
+ .eq(WorkflowWorkNodeDO::getWorkId, nodeDO.getWorkId())
|
|
|
+ .eq(WorkflowWorkNodeDO::getUuid, nodeDO.getIsolationNodeUuid()));
|
|
|
fatherNodeId = one.getId();
|
|
|
}
|
|
|
// 检查是否是需要的共锁人
|
|
|
@@ -276,6 +319,10 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
.eq(WorkflowWorkNodeUserDO::getId, nodeUserDO.getId())
|
|
|
.set(WorkflowWorkNodeUserDO::getUnlockTime, now)
|
|
|
.set(WorkflowWorkNodeUserDO::getStatus, "2"));
|
|
|
+ // 更新nodeProgress
|
|
|
+ workflowWorkNodeService.update(Wrappers.<WorkflowWorkNodeDO>lambdaUpdate()
|
|
|
+ .eq(WorkflowWorkNodeDO::getId, nodeDO.getId())
|
|
|
+ .set(WorkflowWorkNodeDO::getNodeProgress, "2"));
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -549,5 +596,15 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
|
|
|
return backDataVO;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public WorkflowWorkTicketRespVO getWorkTicketByNodeId(Long nodeId) {
|
|
|
+ // 开始查询
|
|
|
+ WorkflowWorkNodeDO nodeDO = workflowWorkNodeService.getById(nodeId);
|
|
|
+ Assert.notNull(nodeDO, "任务不存在");
|
|
|
+ WorkflowWorkTicketDO ticketDO = ticketService.getOne(Wrappers.<WorkflowWorkTicketDO>lambdaQuery().eq(WorkflowWorkTicketDO::getNodeId, nodeId));
|
|
|
+ WorkflowWorkTicketRespVO bean = BeanUtils.toBean(ticketDO, WorkflowWorkTicketRespVO.class);
|
|
|
+ return bean;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|