Bladeren bron

新增nfc查询node先查询设备是否存在 新增key删除和lock删除 判断最近一个月有没有被作业使用,如果被使用 暂时不能删除

车车 2 maanden geleden
bovenliggende
commit
b45d6908e6

+ 20 - 7
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/key/KeyServiceImpl.java

@@ -8,7 +8,9 @@ import cn.iocoder.yudao.module.iscs.controller.admin.key.vo.KeyPageReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.key.vo.KeyRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.key.vo.KeySaveReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.key.KeyDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowWorkTicketKeyDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.key.KeyMapper;
+import cn.iocoder.yudao.module.iscs.service.workdesign.WorkflowWorkTicketKeyService;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -17,6 +19,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -33,6 +36,8 @@ public class KeyServiceImpl extends ServiceImpl<KeyMapper, KeyDO> implements Key
 
     @Resource
     private KeyMapper keyMapper;
+    @Resource
+    private WorkflowWorkTicketKeyService workflowWorkTicketKeyService;
 
     @Override
     public Long createKey(KeySaveReqVO createReqVO) {
@@ -97,20 +102,28 @@ public class KeyServiceImpl extends ServiceImpl<KeyMapper, KeyDO> implements Key
     }
 
     @Override
-        public void deleteKeyListByIds(List<Long> ids) {
+    public void deleteKeyListByIds(List<Long> ids) {
         // 校验存在
-        validateKeyExists(ids);
-        // 删除
-        keyMapper.deleteByIds(ids);
-        }
-
-    private void validateKeyExists(List<Long> ids) {
         List<KeyDO> list = keyMapper.selectByIds(ids);
         if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
             throw exception(KEY_NOT_EXISTS);
         }
+        List<String> keyNfcList = list.stream().map(KeyDO::getKeyNfc).toList();
+        // 校验最近一个月有没有被某个作业使用,有则不能删除
+        // 1. 获取当前时间
+        LocalDateTime now = LocalDateTime.now();
+        // 2. 获取过去最近一个月的时间(精确到月份偏移)
+        LocalDateTime lastMonthTime = now.minusMonths(1);
+        List<WorkflowWorkTicketKeyDO> workflowWorkTicketKeyDOS = workflowWorkTicketKeyService.list(Wrappers.<WorkflowWorkTicketKeyDO>lambdaQuery()
+                .in(WorkflowWorkTicketKeyDO::getKeyNfc, keyNfcList)
+                .ge(WorkflowWorkTicketKeyDO::getCreateTime, lastMonthTime));
+        Assert.isTrue(workflowWorkTicketKeyDOS.isEmpty(), "该硬件近一个月存在作业,暂不可删除");
+
+        // 删除
+        keyMapper.deleteByIds(ids);
     }
 
+
     private void validateKeyExists(Long id) {
         if (keyMapper.selectById(id) == null) {
             throw exception(KEY_NOT_EXISTS);

+ 19 - 7
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/lock/LockServiceImpl.java

@@ -8,7 +8,9 @@ import cn.iocoder.yudao.module.iscs.controller.admin.lock.vo.LockPageReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.lock.vo.LockRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.lock.vo.LockSaveReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.lock.LockDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.workdesign.WorkflowWorkTicketLockDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.lock.LockMapper;
+import cn.iocoder.yudao.module.iscs.service.workdesign.WorkflowWorkTicketLockService;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -17,6 +19,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -33,6 +36,8 @@ public class LockServiceImpl extends ServiceImpl<LockMapper, LockDO> implements
 
     @Resource
     private LockMapper lockMapper;
+    @Resource
+    private WorkflowWorkTicketLockService workflowWorkTicketLockService;
 
     @Override
     public Long createLock(LockSaveReqVO createReqVO) {
@@ -71,20 +76,27 @@ public class LockServiceImpl extends ServiceImpl<LockMapper, LockDO> implements
     }
 
     @Override
-        public void deleteLockListByIds(List<Long> ids) {
+    public void deleteLockListByIds(List<Long> ids) {
         // 校验存在
-        validateLockExists(ids);
-        // 删除
-        lockMapper.deleteByIds(ids);
-        }
-
-    private void validateLockExists(List<Long> ids) {
         List<LockDO> list = lockMapper.selectByIds(ids);
         if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
             throw exception(LOCK_NOT_EXISTS);
         }
+        List<String> lockNfcList = list.stream().map(LockDO::getLockNfc).toList();
+        // 校验最近一个月有没有被某个作业使用,有则不能删除
+        // 1. 获取当前时间
+        LocalDateTime now = LocalDateTime.now();
+        // 2. 获取过去最近一个月的时间(精确到月份偏移)
+        LocalDateTime lastMonthTime = now.minusMonths(1);
+        List<WorkflowWorkTicketLockDO> workflowWorkTicketLockDOList = workflowWorkTicketLockService.list(Wrappers.<WorkflowWorkTicketLockDO>lambdaQuery()
+                .in(WorkflowWorkTicketLockDO::getLockNfc, lockNfcList)
+                .ge(WorkflowWorkTicketLockDO::getCreateTime, lastMonthTime));
+        Assert.isTrue(workflowWorkTicketLockDOList.isEmpty(), "该硬件近一个月存在作业,暂不可删除");
+        // 删除
+        lockMapper.deleteByIds(ids);
     }
 
+
     private void validateLockExists(Long id) {
         if (lockMapper.selectById(id) == null) {
             throw exception(LOCK_NOT_EXISTS);

+ 7 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/workdesign/WorkflowWorkHandleServiceImpl.java

@@ -698,6 +698,13 @@ public class WorkflowWorkHandleServiceImpl implements WorkflowWorkHandleService
     @Override
     public WorkflowWorkNodeRespVO getNodeDetailByNfc(String nfc) {
         Assert.notBlank(nfc, "请告诉我NFC");
+        // 检查该nfc是否有设备
+        List<KeyDO> keyDOList = iscsKeyService.list(Wrappers.<KeyDO>lambdaQuery()
+                .eq(KeyDO::getKeyNfc, nfc));
+        List<LockDO> lockDOList = iscsLockService.list(Wrappers.<LockDO>lambdaQuery()
+                .eq(LockDO::getLockNfc, nfc));
+        Assert.isFalse(keyDOList.isEmpty() && lockDOList.isEmpty(), "无该设备");
+
         // 获取钥匙关联的node
         WorkflowWorkTicketKeyDO ticketKeyDO = keyService.getOne(Wrappers.<WorkflowWorkTicketKeyDO>lambdaQuery()
                 .eq(WorkflowWorkTicketKeyDO::getKeyNfc, nfc)