车车 11 hónapja
szülő
commit
d74d048857

+ 1 - 1
ktg-framework/src/main/java/com/ktg/framework/websocket/WebSocketIots.java

@@ -136,7 +136,7 @@ public class WebSocketIots {
      * 群发消息
      * @param message
      */
-    public void sendMassMessage(String message) {
+    public static void sendMassMessage(String message) {
         try {
             for (Session session : SESSIONS) {
                 if (session.isOpen()) {

+ 11 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/TestIscsController.java

@@ -7,6 +7,7 @@ import com.ktg.common.core.controller.BaseController;
 import com.ktg.common.enums.BusinessType;
 import com.ktg.common.pojo.CommonResult;
 import com.ktg.common.utils.poi.ExcelUtil;
+import com.ktg.framework.websocket.WebSocketIots;
 import com.ktg.iscs.domain.TestIscs;
 import com.ktg.iscs.service.ITestIscsService;
 import io.swagger.annotations.Api;
@@ -113,4 +114,14 @@ public class TestIscsController extends BaseController
     {
         return CommonResult.success(testIscsService.deleteTestIscsByIds(ids) != 0);
     }
+
+
+    @ApiOperation("测试发送消息")
+    @GetMapping(value = "/testSendMsg")
+    public CommonResult<Boolean> testSendMes(String msg)
+    {
+        WebSocketIots.sendMassMessage(msg);
+        return CommonResult.success(true);
+    }
+
 }

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/HardwareApiServiceImpl.java

@@ -309,7 +309,7 @@ public class HardwareApiServiceImpl implements HardwareApiService {
                 // 2.1更新隔离点上锁信息
                 iIsJobTicketPointsService.update(Wrappers.<IsJobTicketPoints>lambdaUpdate()
                         .eq(IsJobTicketPoints::getTicketId, dto.getTicketId())
-                        .eq(IsJobTicketPoints::getPointId, point.getPointId())
+                        .eq (IsJobTicketPoints::getPointId, point.getPointId())
                         .set(IsJobTicketPoints::getLockId, lock.getLockId())
                         .set(IsJobTicketPoints::getLockedByKeyId, key.getKeyId())
                         .set(IsJobTicketPoints::getLockTime, date)

+ 116 - 95
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsJobTicketServiceImpl.java

@@ -45,8 +45,7 @@ import static com.ktg.system.strategy.ServiceExceptionUtil.exception;
  */
 @Service
 @Slf4j
-public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJobTicket> implements IIsJobTicketService
-{
+public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJobTicket> implements IIsJobTicketService {
     @Autowired
     private IsJobTicketMapper isJobTicketMapper;
     @Autowired
@@ -73,8 +72,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
      * @return 作业票
      */
     @Override
-    public JobTicketDetailVO selectIsJobTicketByTicketId(Long ticketId)
-    {
+    public JobTicketDetailVO selectIsJobTicketByTicketId(Long ticketId) {
         // 1.查询基础数据
         IsJobTicket jobTicket = isJobTicketMapper.selectIsJobTicketByTicketId(ticketId);
         Assert.notNull(jobTicket, "作业票信息不存在!");
@@ -130,8 +128,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
      * @return 作业票
      */
     @Override
-    public List<IsJobTicket> selectIsJobTicketList(IsJobTicket isJobTicket)
-    {
+    public List<IsJobTicket> selectIsJobTicketList(IsJobTicket isJobTicket) {
         return isJobTicketMapper.selectIsJobTicketList(isJobTicket);
     }
 
@@ -143,8 +140,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
      */
     @Transactional
     @Override
-    public Boolean insertIsJobTicket(AddJobTicketDTO dto)
-    {
+    public Boolean insertIsJobTicket(AddJobTicketDTO dto) {
         // 1.断言判断必填
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketCode()), "作业票编号不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketName()), "作业票名称不可为空!");
@@ -190,6 +186,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
 
     /**
      * 3.1新增作业票和钥匙的关联关系(两条数据,一条上锁,一条解锁)
+     *
      * @return b
      */
     private boolean saveJobTicketKet(Long ticketId) {
@@ -241,8 +238,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
      */
     @Transactional
     @Override
-    public Boolean updateIsJobTicket(AddJobTicketDTO dto)
-    {
+    public Boolean updateIsJobTicket(AddJobTicketDTO dto) {
         // 1.断言判断必填
         Assert.notNull(dto.getTicketId(), "id不可为空!");
         Assert.isTrue(StringUtils.isNotBlank(dto.getTicketCode()), "作业票编号不可为空!");
@@ -273,17 +269,17 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         // 3.2如果查出来变更了,开始执行删除,重新增加一轮 / 当workarea变更也要全部换掉
         // if (pointIds.size() != isSopPoints.size() || !Objects.equals(isJobTicket.getWorkareaId(), dto.getWorkareaId())) {
         // 无法检测隔离点属性是否变更,直接清理重新新增
-            iIsJobTicketPointsService.remove(Wrappers.<IsJobTicketPoints>lambdaQuery().eq(IsJobTicketPoints::getTicketId, dto.getTicketId()));
-            // TODO 批量新增
-            for (IsJobTicketPoints isJobTicketPoints : dto.getPointsList()) {
-                IsJobTicketPoints jobTicketPoints = new IsJobTicketPoints();
-                jobTicketPoints.setTicketId(jobTicket.getTicketId());
-                jobTicketPoints.setWorkshopId(dto.getWorkshopId());
-                jobTicketPoints.setWorkareaId(dto.getWorkareaId());
-                jobTicketPoints.setPointId(isJobTicketPoints.getPointId());
-                jobTicketPoints.setPrePointId(isJobTicketPoints.getPrePointId());
-                iIsJobTicketPointsService.save(jobTicketPoints);
-            }
+        iIsJobTicketPointsService.remove(Wrappers.<IsJobTicketPoints>lambdaQuery().eq(IsJobTicketPoints::getTicketId, dto.getTicketId()));
+        // TODO 批量新增
+        for (IsJobTicketPoints isJobTicketPoints : dto.getPointsList()) {
+            IsJobTicketPoints jobTicketPoints = new IsJobTicketPoints();
+            jobTicketPoints.setTicketId(jobTicket.getTicketId());
+            jobTicketPoints.setWorkshopId(dto.getWorkshopId());
+            jobTicketPoints.setWorkareaId(dto.getWorkareaId());
+            jobTicketPoints.setPointId(isJobTicketPoints.getPointId());
+            jobTicketPoints.setPrePointId(isJobTicketPoints.getPrePointId());
+            iIsJobTicketPointsService.save(jobTicketPoints);
+        }
         // 3.2新增作业票和挂锁的关联关// 3.3新增作业票和锁具的关联关系 ----先清除
         iIsJobTicketLockService.remove(Wrappers.<IsJobTicketLock>lambdaQuery()
                 .eq(IsJobTicketLock::getTicketId, dto.getTicketId()));
@@ -315,8 +311,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
      */
     @Transactional
     @Override
-    public Boolean deleteIsJobTicketByTicketIds(String ticketIds)
-    {
+    public Boolean deleteIsJobTicketByTicketIds(String ticketIds) {
         // 1.断言判断
         Assert.notBlank(ticketIds, "请选择需要删除的数据!");
         // 2.删除主数据
@@ -326,8 +321,8 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         iIsJobTicketPointsService.remove(Wrappers.<IsJobTicketPoints>lambdaQuery()
                 .in(IsJobTicketPoints::getTicketId, longIds));
         // 3.1同时删除is_job_ticket_key
-            iIsJobTicketKeyService.remove(Wrappers.<IsJobTicketKey>lambdaQuery()
-                    .in(IsJobTicketKey::getTicketId, longIds));
+        iIsJobTicketKeyService.remove(Wrappers.<IsJobTicketKey>lambdaQuery()
+                .in(IsJobTicketKey::getTicketId, longIds));
         // 3.2同时删除is_job_ticket_lock
         iIsJobTicketLockService.remove(Wrappers.<IsJobTicketLock>lambdaQuery()
                 .in(IsJobTicketLock::getTicketId, longIds));
@@ -347,8 +342,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
      * @return 结果
      */
     @Override
-    public int deleteIsJobTicketByTicketId(Long ticketId)
-    {
+    public int deleteIsJobTicketByTicketId(Long ticketId) {
         return isJobTicketMapper.deleteIsJobTicketByTicketId(ticketId);
     }
 
@@ -360,7 +354,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
     @Override
     @Transactional
     public Boolean updateTicketProgress(JobTicketUpdateProgressReqVO reqVO) {
-        if(reqVO.equipStatus == null) {
+        if (reqVO.equipStatus == null) {
             reqVO.equipStatus = 3;
         }
         IsJobTicket isJobTicket = isJobTicketMapper.selectIsJobTicketByTicketId(reqVO.ticketId);
@@ -390,6 +384,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
 
     /**
      * 处理工作票状态
+     *
      * @param isJobTicket 工作票
      * @param jobUserList 在工作票中的所有人
      */
@@ -402,7 +397,8 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         if (matchUserList.stream().anyMatch(user -> Objects.equals(user.getUserRole(), JTLOCKER.key))) {
             if (Objects.equals(isJobTicket.getTicketStatus(), NOT_STARTED.status)
                     || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_LOCK.status)
-                    || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_UNLOCK.status)) {
+                    || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_UNLOCK.status)
+                    || Objects.equals(isJobTicket.getTicketStatus(), UNLOCKED.status)) {
                 handleJobStatus(isJobTicket, jobUserList, reqVO.userId, true, reqVO.equipStatus);
             } else if (Objects.equals(isJobTicket.getTicketStatus(), PROCESSING.status)) {
                 // 同时为上锁人、共锁人
@@ -416,7 +412,8 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         } else if (matchUserList.stream().anyMatch(user -> Objects.equals(user.getUserRole(), JTCOLOCKER.key))) {
             if (Objects.equals(isJobTicket.getTicketStatus(), NOT_STARTED.status)
                     || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_LOCK.status)
-                    || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_UNLOCK.status)) {
+                    || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_UNLOCK.status)
+                    || Objects.equals(isJobTicket.getTicketStatus(), UNLOCKED.status)) {
                 log.warn("Job ticket status is processing, cannot update progress, ticketId: {}, userId : {}", reqVO.ticketId, reqVO.userId);
                 throw exception(JOB_TICKET_STATUS_NOT_PERMITTED);
             } else if (Objects.equals(isJobTicket.getTicketStatus(), PROCESSING.status)) {
@@ -430,7 +427,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
      *
      * @param isJobTicket 工作票
      * @param jobUserList 在工作票中的所有人
-     * @param isLocker true:上锁人 false:共锁人
+     * @param isLocker    true:上锁人 false:共锁人
      */
     private void handleJobStatus(IsJobTicket isJobTicket, List<IsJobTicketUser> jobUserList, Long userId, boolean isLocker, int equipStatus) {
         if (isLocker) {
@@ -439,80 +436,104 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
                     .filter(user -> Objects.equals(user.getUserRole(), JTLOCKER.key))
                     .findFirst()
                     .ifPresent(jobUser -> {
-                if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.NOT_STARTED.status)
-                        || Objects.equals(jobUser.getJobStatus(), JobStatusEnum.ACQUIRE_LOCK.status)
-                        || Objects.equals(jobUser.getJobStatus(), JobStatusEnum.ACQUIRE_KEY.status)) {
-                    // 部分拿锁
-                    if (equipStatus == 1) {
-                        jobUser.setJobStatus(JobStatusEnum.ACQUIRE_LOCK.status);
-                    } else if (equipStatus == 2) {  // 全部拿锁
-                        jobUser.setJobStatus(JobStatusEnum.ACQUIRE_KEY.status);
-                    } else if (equipStatus == 3) {    // 已拿钥匙
-                        jobUser.setJobStatus(JobStatusEnum.READY_TO_LOCK.status);
-                        isJobTicket.setTicketStatus(READY_TO_LOCK.status);
-                    } else {
-                        log.warn("Job ticket user equipment status is null, ticketId: {}, userId : {}", isJobTicket.getTicketId(), userId);
-                        throw exception(JOB_TICKET_USER_EQUIPMENT_STATUS_NULL);
-                    }
-                } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.READY_TO_LOCK.status)) {
-                    jobUser.setJobStatus(JobStatusEnum.READY_TO_UNLOCK.status);
-                    isJobTicket.setTicketStatus(PROCESSING.status);
-                } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.READY_TO_UNLOCK.status)) {
-                    // 检查所有人
-                    if (checkJobStatus(isJobTicket, jobUserList)) {
-                        jobUser.setJobStatus(JobStatusEnum.UNLOCKED.status);
-                        // 检查所有设备归还,钥匙归还,锁没还完:已解锁(ticket_status),都还:已完成(ticket_status)
-                        int toolRst = checkToolReturn(isJobTicket.getTicketId());
-                        System.out.println("1-------------" + toolRst);
-                        if (toolRst == 1) {
-                            isJobTicket.setTicketStatus(UNLOCKED.status);
-                        } else if (toolRst == 2) {
-                            isJobTicket.setTicketStatus(FINISHED.status);
-                        }
-                    } else {
-                        throw exception(JOB_TICKET_USER_WAIT_COLOCKERS);
-                    }
-                } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.UNLOCKED.status)) {
-                    // 任务已完成,更新
+                        if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.NOT_STARTED.status)
+                                || Objects.equals(jobUser.getJobStatus(), JobStatusEnum.ACQUIRE_LOCK.status)
+                                || Objects.equals(jobUser.getJobStatus(), JobStatusEnum.ACQUIRE_KEY.status)) {
+                            // 部分拿锁
+                            if (equipStatus == 1) {
+                                jobUser.setJobStatus(JobStatusEnum.ACQUIRE_LOCK.status);
+                            } else if (equipStatus == 2) {  // 全部拿锁
+                                jobUser.setJobStatus(JobStatusEnum.ACQUIRE_KEY.status);
+                            } else if (equipStatus == 3) {    // 已拿钥匙
+                                jobUser.setJobStatus(JobStatusEnum.READY_TO_LOCK.status);
+                                isJobTicket.setTicketStatus(READY_TO_LOCK.status);
+                            } else {
+                                log.warn("Job ticket user equipment status is null, ticketId: {}, userId : {}", isJobTicket.getTicketId(), userId);
+                                throw exception(JOB_TICKET_USER_EQUIPMENT_STATUS_NULL);
+                            }
+                        } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.READY_TO_LOCK.status)) {
+                            jobUser.setJobStatus(JobStatusEnum.READY_TO_UNLOCK.status);
+                            isJobTicket.setTicketStatus(PROCESSING.status);
+                        } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.READY_TO_UNLOCK.status)) {
+                            // 检查所有人
+                            if (checkJobStatus(isJobTicket, jobUserList)) {
+                                jobUser.setJobStatus(JobStatusEnum.UNLOCKED.status);
+                                // 检查所有设备归还,钥匙归还,锁没还完:已解锁(ticket_status),都还:已完成(ticket_status)
+                                int toolRst = checkToolReturn(isJobTicket.getTicketId());
+                                int unlockedRst = checkAllUnlocked(isJobTicket.getTicketId());
+                                System.out.println("1-------------" + toolRst + " - " + unlockedRst);
+
+                                if (unlockedRst == 0) {
+                                    if (toolRst == 2) {
+                                        isJobTicket.setTicketStatus(FINISHED.status);
+                                    } else {
+                                        isJobTicket.setTicketStatus(UNLOCKED.status);
+                                    }
+                                } else {
+                                    // TODO 只还设备,不操作点位
+                                }
+                            } else {
+                                throw exception(JOB_TICKET_USER_WAIT_COLOCKERS);
+                            }
+                        } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.UNLOCKED.status)) {
+                            // 任务已完成,更新
 //                    jobUser.setJobStatus(JobStatusEnum.UNLOCKED.status);
 //                    if (checkToolReturn(isJobTicket.getTicketId())) {
 //                        isJobTicket.setTicketStatus(FINISHED.status);
 //                    }
-                    // 检查所有设备归还,钥匙归还,锁没还完:已解锁(ticket_status),都还:已完成(ticket_status)
-                    int toolRst = checkToolReturn(isJobTicket.getTicketId());
-                    System.out.println("2-------------" + toolRst);
-                    if (toolRst == 1) {
-                        isJobTicket.setTicketStatus(UNLOCKED.status);
-                    } else if (toolRst == 2) {
-                        isJobTicket.setTicketStatus(FINISHED.status);
-                    }
-                }
-            });
+                            // 检查所有设备归还,钥匙归还,锁没还完:已解锁(ticket_status),都还:已完成(ticket_status)
+                            int toolRst = checkToolReturn(isJobTicket.getTicketId());
+                            int unlockedRst = checkAllUnlocked(isJobTicket.getTicketId());
+                            System.out.println("2-------------" + toolRst + " - " + unlockedRst);
+
+                            if (unlockedRst == 0) {
+                                if (toolRst == 2) {
+                                    isJobTicket.setTicketStatus(FINISHED.status);
+                                } else {
+                                    isJobTicket.setTicketStatus(UNLOCKED.status);
+                                }
+                            } else {
+                                // TODO 只还设备,不操作点位
+                            }
+                        }
+                    });
         } else {
             jobUserList.stream()
                     .filter(jobUser -> Objects.equals(jobUser.getUserId(), userId))
                     .filter(user -> Objects.equals(user.getUserRole(), JTCOLOCKER.key))
                     .findFirst()
                     .ifPresent(jobUser -> {
-                if (Objects.equals(isJobTicket.getTicketStatus(), PROCESSING.status)) {
-                    if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.NOT_STARTED.status)) {
-                        jobUser.setJobStatus(JobStatusEnum.READY_TO_UNLOCK.status);
-                    } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.READY_TO_UNLOCK.status)) {
-                        jobUserList.stream()
-                                .filter(data -> Objects.equals(data.getUserId(), userId) && Objects.equals(data.getUserRole(), JTCOLOCKER.key))
-                                .findFirst()
-                                .ifPresent(data -> data.setJobStatus(JobStatusEnum.UNLOCKED.status));
-                        checkJobStatus(isJobTicket, jobUserList);
-                    } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.UNLOCKED.status)) {
-                        // 作业票本人Job部分已完成
-                        throw exception(JOB_TICKET_USER_JOB_IS_DONE);
-                    }
-                } else if (Objects.equals(isJobTicket.getTicketStatus(), NOT_STARTED.status)
-                        || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_LOCK.status)) {
-                    // 等上锁人上锁
-                    throw exception(JOB_TICKET_USER_WAIT_TO_LOCK);
-                }
-            });
+                        if (Objects.equals(isJobTicket.getTicketStatus(), PROCESSING.status)) {
+                            if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.NOT_STARTED.status)) {
+                                jobUser.setJobStatus(JobStatusEnum.READY_TO_UNLOCK.status);
+                            } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.READY_TO_UNLOCK.status)) {
+                                jobUserList.stream()
+                                        .filter(data -> Objects.equals(data.getUserId(), userId) && Objects.equals(data.getUserRole(), JTCOLOCKER.key))
+                                        .findFirst()
+                                        .ifPresent(data -> data.setJobStatus(JobStatusEnum.UNLOCKED.status));
+                                checkJobStatus(isJobTicket, jobUserList);
+                            } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.UNLOCKED.status)) {
+                                // 作业票本人Job部分已完成
+                                throw exception(JOB_TICKET_USER_JOB_IS_DONE);
+                            }
+                        } else if (Objects.equals(isJobTicket.getTicketStatus(), NOT_STARTED.status)
+                                || Objects.equals(isJobTicket.getTicketStatus(), READY_TO_LOCK.status)) {
+                            // 等上锁人上锁
+                            throw exception(JOB_TICKET_USER_WAIT_TO_LOCK);
+                        }
+                    });
+        }
+    }
+
+    // 0-全部解锁 1-存在未解锁的点位
+    private int checkAllUnlocked(Long ticketId) {
+        List<IsJobTicketPoints> unlockedList = iIsJobTicketPointsService.list(Wrappers.<IsJobTicketPoints>lambdaQuery()
+                .eq(IsJobTicketPoints::getTicketId, ticketId)
+                .ne(IsJobTicketPoints::getPointStatus, PointStatusEnum.REMOVE_LOCK.status));
+        if (unlockedList.isEmpty()) {
+            return 0;
+        } else {
+            return 1;
         }
     }