Jelajahi Sumber

安卓联调接口

车车 9 bulan lalu
induk
melakukan
8b8c364728

+ 6 - 0
ktg-admin/src/main/resources/application.yml

@@ -21,6 +21,12 @@ ktg-mes:
   onlineMax: 10
   # 检查计划邮件模板设定
   checkPlan: CHECKPLAN
+  # 工作人角色
+  jtcolocker: jtcolocker
+  # 平台八大步骤
+  eightSteps: eightSteps
+  # 安卓八大步骤
+  androidEightSteps: androidEightSteps
 
 # 开发环境配置
 server:

+ 16 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/HardwareApiController.java

@@ -105,5 +105,21 @@ public class HardwareApiController extends BaseController
         return CommonResult.success(hardwareApiService.selectTicketDetailById(ticketId));
     }
 
+    // 共锁人上锁/解锁
+    @ApiOperation("共锁人上锁/解锁")
+    @Log(title = "共锁人上锁/解锁", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateColockerStatus")
+    public CommonResult<Boolean> updateColockerStatus(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") UpdateColockerStatusDTO dto)
+    {
+        return CommonResult.success(hardwareApiService.updateColockerStatus(dto));
+    }
+
+    @ApiOperation("更新隔离点开关状态")
+    @Log(title = "更新隔离点开关状态", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateSwitchStatus")
+    public CommonResult<Boolean> updateSwitchStatus(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") UpdateSwitchStatusDTO dto)
+    {
+        return CommonResult.success(hardwareApiService.updateSwitchStatus(dto));
+    }
 
 }

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsIsolationPoint.java

@@ -90,4 +90,7 @@ public class IsIsolationPoint extends BaseBean
     @ApiModelProperty(value = "锁具类型id")
     private Long locksetTypeId;
 
+    @ApiModelProperty(value = "开关状态(0-开 1-关)")
+    private String switchStatus;
+
 }

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsJobTicketStep.java

@@ -40,6 +40,9 @@ public class IsJobTicketStep extends BaseBean
     @Excel(name = "作业步骤详情")
     private String stepContent;
 
+    @ApiModelProperty(value = "作业步骤详情")
+    private String androidStepContent;
+
     @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
     private String delFlag;
 

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsJobTicketUser.java

@@ -51,7 +51,7 @@ public class IsJobTicketUser extends BaseBean
     private String userRole;
 
     @ApiModelProperty(value = "作业状态(0未开始,1 取锁具, 2取钥匙, 3待上锁(待共锁),4 已上锁(已共锁),5 已解锁)")
-    private Integer jobStatus;
+    private String jobStatus;
 
     /** 删除标志(0代表存在 2代表删除) */
     @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")

+ 24 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/UpdateColockerStatusDTO.java

@@ -0,0 +1,24 @@
+package com.ktg.iscs.domain.dto.hardwareApi;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * UpdateTicketLockDTO
+ *
+ * @author cgj
+ * @date 2024-10-16
+ */
+@Data
+public class UpdateColockerStatusDTO {
+
+    @ApiModelProperty(value = "作业票ID")
+    private Long ticketId;
+
+    @ApiModelProperty(value = "工作卡NFC")
+    private String cardNfc;
+
+    @ApiModelProperty(value = "作业状态(4 共锁,5 解锁)")
+    private String jobStatus;
+
+}

+ 21 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/hardwareApi/UpdateSwitchStatusDTO.java

@@ -0,0 +1,21 @@
+package com.ktg.iscs.domain.dto.hardwareApi;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * UpdateTicketLockDTO
+ *
+ * @author cgj
+ * @date 2024-10-16
+ */
+@Data
+public class UpdateSwitchStatusDTO {
+
+    @ApiModelProperty(value = "隔离点NFC")
+    private String pointNfc;
+
+    @ApiModelProperty(value = "开关状态(0-开 1-关)")
+    private String switchStatus;
+
+}

+ 11 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/enums/JobStepEnum.java

@@ -9,6 +9,7 @@ import java.util.List;
 public class JobStepEnum {
 
     private List<String> steps;
+    private List<String> androidSteps;
 
     public JobStepEnum() {
         steps = new ArrayList<>();
@@ -20,6 +21,16 @@ public class JobStepEnum {
         steps.add("能量隔离证实");
         steps.add("取锁前的检查");
         steps.add("拆除锁具,并把隔离开关恢复到正常位置");
+
+        androidSteps = new ArrayList<>();
+        androidSteps.add("识别工作内容");
+        androidSteps.add("能量源隔离方式");
+        androidSteps.add("通知人员");
+        androidSteps.add("操作停机");
+        androidSteps.add("上锁挂牌");
+        androidSteps.add("能量隔离证实");
+        androidSteps.add("取锁前检查");
+        androidSteps.add("拆锁恢复开关");
     }
 
 }

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/ticketPoints/IsJobTicketPointsVO.java

@@ -90,4 +90,7 @@ public class IsJobTicketPointsVO extends BaseBean
     @ApiModelProperty(value = "作用")
     private String remark;
 
+    @ApiModelProperty(value = "开关状态")
+    private String switchStatus;
+
 }

+ 14 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/HardwareApiService.java

@@ -80,5 +80,19 @@ public interface HardwareApiService {
      */
     JobTicketVO selectTicketDetailById(Long ticketId);
 
+    /**
+     * 共锁人上锁/解锁
+     * @param dto
+     * @return
+     */
+    Boolean updateColockerStatus(UpdateColockerStatusDTO dto);
+
+    /**
+     * 更新开关状态
+     * @param dto
+     * @return
+     */
+    Boolean updateSwitchStatus(UpdateSwitchStatusDTO dto);
+
 
 }

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

@@ -12,6 +12,7 @@ import com.ktg.iscs.domain.vo.ticket.JobTicketUpdateProgressReqVO;
 import com.ktg.iscs.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.util.Date;
@@ -49,6 +50,11 @@ public class HardwareApiServiceImpl implements HardwareApiService {
     private IIsJobTicketPointsService iIsJobTicketPointsService;
     @Autowired
     private IIsJobTicketUserService iIsJobTicketUserService;
+    @Autowired
+    private IIsJobCardService iIsJobCardService;
+    @Value("${ktg-mes.jtcolocker}")
+    private String jtcolocker;
+
 
     /**
      * 取出钥匙
@@ -114,7 +120,7 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         IsJobTicketUser jobTicketUser = iIsJobTicketUserService.getOne(Wrappers.<IsJobTicketUser>lambdaQuery()
                 .eq(IsJobTicketUser::getTicketId, ticketId)
                 .eq(IsJobTicketUser::getUserRole, JobUserEnum.JTLOCKER.key));
-        Assert.isFalse(jobTicketUser.getJobStatus() > JobStatusEnum.ACQUIRE_KEY.status, "作业票已完成设备拿取,无法操作!");
+        Assert.isFalse(Integer.parseInt(jobTicketUser.getJobStatus()) > JobStatusEnum.ACQUIRE_KEY.status, "作业票已完成设备拿取,无法操作!");
         IsJobTicket isJobTicket = isJobTicketService.getOne(Wrappers.<IsJobTicket>lambdaQuery()
                 .eq(IsJobTicket::getTicketId, ticketId));
         Assert.isFalse(Integer.parseInt(isJobTicket.getTicketStatus()) > Integer.parseInt(TicketStatusEnum.READY_TO_LOCK.status), "作业票已完成设备拿取,无法进行操作!");
@@ -571,4 +577,40 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         jobTicketVO.setTicketPointsVOList(ticketPointsVOList);
         return jobTicketVO;
     }
+
+    @Override
+    public Boolean updateColockerStatus(UpdateColockerStatusDTO dto) {
+        Assert.notNull(dto.getTicketId(), "作业票id不能为空!");
+        Assert.notBlank(dto.getJobStatus(), "操作的共锁/解锁状态不能为空!");
+        Assert.notBlank(dto.getCardNfc(), "工作卡NFC不能为空!");
+        // 1.根据作业卡获取当前人员状态
+        IsJobCard card = iIsJobCardService.getOne(Wrappers.<IsJobCard>lambdaQuery().eq(IsJobCard::getCardNfc, dto.getCardNfc()));
+        Assert.isFalse(card == null, "该工作卡未绑定用户!");
+        // 2.检测获取这个人在该作业票中状态
+        IsJobTicketUser jobTicketUser = iIsJobTicketUserService.getOne(Wrappers.<IsJobTicketUser>lambdaQuery()
+                .eq(IsJobTicketUser::getUserId, card.getUserId())
+                .eq(IsJobTicketUser::getUserRole, jtcolocker));
+        Assert.isFalse(jobTicketUser == null, "该员工卡绑定的员工暂无作业任务!");
+        // 2.1判断状态
+        IsJobTicket isJobTicket = isJobTicketService.getById(dto.getTicketId());
+        Assert.isFalse("0".equals(isJobTicket.getTicketStatus()), "该作业票未开始,请勿共锁!");
+        Assert.isFalse("4".equals(dto.getJobStatus()) && "4".equals(jobTicketUser.getJobStatus()), "您已共锁,请勿重复共锁!");
+        Assert.isFalse(Integer.parseInt(jobTicketUser.getJobStatus()) < 4 && "5".equals(dto.getJobStatus()), "您还未共锁,请勿操作解除共锁!");
+        Assert.isFalse("5".equals(jobTicketUser.getJobStatus()) && "5".equals(dto.getJobStatus()), "您已解除共锁,请勿重复解除锁!");
+        // 3.开始操作
+        iIsJobTicketUserService.update(Wrappers.<IsJobTicketUser>lambdaUpdate()
+                .eq(IsJobTicketUser::getTicketId, dto.getTicketId())
+                .eq(IsJobTicketUser::getUserId, card.getUserId())
+                .set(IsJobTicketUser::getJobStatus, dto.getJobStatus()));
+        return true;
+    }
+
+    @Override
+    public Boolean updateSwitchStatus(UpdateSwitchStatusDTO dto) {
+        Assert.notBlank(dto.getPointNfc(), "隔离点nfc不能为空!");
+        Assert.notBlank(dto.getSwitchStatus(), "隔离点开关状态不能为空!");
+        return iIsIsolationPointService.update(Wrappers.<IsIsolationPoint>lambdaUpdate()
+                .eq(IsIsolationPoint::getPointNfc, dto.getPointNfc())
+                .set(IsIsolationPoint::getSwitchStatus, dto.getSwitchStatus()));
+    }
 }

+ 14 - 7
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsJobTicketServiceImpl.java

@@ -25,6 +25,7 @@ import com.ktg.iscs.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -74,6 +75,10 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
     private IIsSopService iIsSopService;
     @Autowired
     private IIsMachineryPointsService iIsMachineryPointsService;
+    @Value("${ktg-mes.eightSteps}")
+    private String eightSteps;
+    @Value("${ktg-mes.androidEightSteps}")
+    private String androidEightSteps;
 
     /**
      * 查询作业票
@@ -188,6 +193,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
         // 4.新增八大步骤信息
         JobStepEnum jobStepEnum = new JobStepEnum();
         List<String> steps = jobStepEnum.getSteps();
+        List<String> androidSteps = jobStepEnum.getAndroidSteps();
         List<IsJobTicketStep> isJobTicketSteps = new ArrayList<>();
         for (int i = 1; i <= steps.size(); i++) {
             IsJobTicketStep isJobTicketStep = new IsJobTicketStep();
@@ -195,6 +201,7 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
             isJobTicketStep.setStepIndex(i);
             isJobTicketStep.setStepStatus(i < 3 ? "1" : "0");
             isJobTicketStep.setStepContent(steps.get(i-1));
+            isJobTicketStep.setAndroidStepContent(androidSteps.get(i-1));
             isJobTicketSteps.add(isJobTicketStep);
         }
         iIsJobTicketStepService.saveBatch(isJobTicketSteps);
@@ -555,23 +562,23 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
                 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);
+                        jobUser.setJobStatus(String.valueOf(JobStatusEnum.ACQUIRE_LOCK.status));
                     } else if (equipStatus == 2) {  // 全部拿锁
-                        jobUser.setJobStatus(JobStatusEnum.ACQUIRE_KEY.status);
+                        jobUser.setJobStatus(String.valueOf(JobStatusEnum.ACQUIRE_KEY.status));
                     } else if (equipStatus == 3) {    // 已拿钥匙
-                        jobUser.setJobStatus(JobStatusEnum.READY_TO_LOCK.status);
+                        jobUser.setJobStatus(String.valueOf(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);
+                    jobUser.setJobStatus(String.valueOf(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);
+                        jobUser.setJobStatus(String.valueOf(JobStatusEnum.UNLOCKED.status));
                         // 检查所有设备归还,钥匙归还,锁没还完:已解锁(ticket_status),都还:已完成(ticket_status)
                         int toolRst = checkToolReturn(isJobTicket.getTicketId());
                         int unlockedRst = checkAllUnlocked(isJobTicket.getTicketId());
@@ -615,9 +622,9 @@ public class IsJobTicketServiceImpl extends ServiceImpl<IsJobTicketMapper, IsJob
             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);
+                        jobUser.setJobStatus(String.valueOf(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));
+                        jobUserList.stream().filter(data -> Objects.equals(data.getUserId(), userId) && Objects.equals(data.getUserRole(), JTCOLOCKER.key)).findFirst().ifPresent(data -> data.setJobStatus(String.valueOf(JobStatusEnum.UNLOCKED.status)));
                         checkJobStatus(isJobTicket, jobUserList);
                     } else if (Objects.equals(jobUser.getJobStatus(), JobStatusEnum.UNLOCKED.status)) {
                         // 作业票本人Job部分已完成

+ 2 - 2
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsJobTicketStepServiceImpl.java

@@ -77,13 +77,13 @@ public class IsJobTicketStepServiceImpl extends ServiceImpl<IsJobTicketStepMappe
         int twoLockNum = (int) pointList.stream()
                 .filter(o -> o.getPointStatus() != null && Integer.parseInt(o.getPointStatus()) >= 1).count();
         int twoUserNum = (int) userList.stream()
-                .filter(o -> o.getJobStatus() != null && o.getJobStatus() >= 4).count();
+                .filter(o -> o.getJobStatus() != null && Integer.parseInt(o.getJobStatus()) >= 4).count();
         stepVOList.get(4).setLockNum(twoLockNum).setUserNum(twoUserNum);
         // 1.3读取第八步的计数
         int threeLockNum = (int) pointList.stream()
                 .filter(o -> o.getPointStatus() != null && Integer.parseInt(o.getPointStatus()) != 2).count();
         int threeUserNum = (int) userList.stream()
-                .filter(o -> o.getJobStatus() != null && o.getJobStatus() != 5).count();
+                .filter(o -> o.getJobStatus() != null && Integer.parseInt(o.getJobStatus()) != 5).count();
         stepVOList.get(7).setLockNum(threeLockNum).setUserNum(threeUserNum).setConflictJobNum(0);
         // 2读取第八步的作业票干扰,判断该作业票点位被哪些额外作业票锁定了
         // 2.1获取被其他作业票锁定的隔离点