Преглед изворни кода

新增结束和取消作业接口

车车 пре 1 месец
родитељ
комит
feacd7552e

+ 15 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/hardwareapi/HardwareApiController.java

@@ -2,12 +2,14 @@ package cn.iocoder.yudao.module.iscs.controller.admin.hardwareapi;
 
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketSaveReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dto.exUpdate.ExDTO;
 import cn.iocoder.yudao.module.iscs.dal.dto.hardwareApi.*;
 import cn.iocoder.yudao.module.iscs.service.hardwareapi.HardwareApiService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -143,4 +145,17 @@ public class HardwareApiController {
     }
 
 
+    @Operation(summary = "mars结束作业票")
+    @PostMapping("/updateJobToFinish")
+    public CommonResult<Boolean> updateJobToFinish(@RequestBody @Valid JobTicketSaveReqVO isJobTicket) {
+        return CommonResult.success(hardwareApiService.updateJobToFinish(isJobTicket));
+    }
+
+    @Operation(summary = "mars取消作业票")
+    @PostMapping("/updateJobToCancel")
+    public CommonResult<Boolean> updateJobToCancel(@RequestBody @Valid JobTicketSaveReqVO isJobTicket) {
+        return CommonResult.success(hardwareApiService.updateJobToCancel(isJobTicket));
+    }
+
+
 }

+ 5 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/hardwareapi/HardwareApiService.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iscs.service.hardwareapi;
 
 
 import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketSaveReqVO;
 import cn.iocoder.yudao.module.iscs.dal.dto.exUpdate.ExDTO;
 import cn.iocoder.yudao.module.iscs.dal.dto.hardwareApi.*;
 
@@ -137,4 +138,8 @@ public interface HardwareApiService {
      */
     Integer getLockStateByNfc(String nfc, Long ticketId);
 
+    Boolean updateJobToFinish(JobTicketSaveReqVO isJobTicket);
+
+    Boolean updateJobToCancel(JobTicketSaveReqVO isJobTicket);
+
 }

+ 35 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/hardwareapi/HardwareApiServiceImpl.java

@@ -43,6 +43,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
+import static cn.iocoder.yudao.module.iscs.enums.TicketStatusEnum.FINISHED;
 import static cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants.ISCS_ATTR;
 
 
@@ -1144,4 +1145,38 @@ public class HardwareApiServiceImpl implements HardwareApiService {
         }
         return 5;
     }
+
+    @Override
+    public Boolean updateJobToFinish(JobTicketSaveReqVO isJobTicket) {
+        Assert.notNull(isJobTicket.getId(), "作业票ID不可为空!");
+        // 1.查询未完成的八大步骤
+        List<JobTicketStepDO> list = iIsJobTicketStepService.list(Wrappers.<JobTicketStepDO>lambdaQuery()
+                .eq(JobTicketStepDO::getTicketId, isJobTicket.getId())
+                .ne(JobTicketStepDO::getStepStatus, 1));
+        Assert.isTrue(list.isEmpty(), "存在未完成的步骤,暂不可完成!");
+        // 2.既然走到这了,说明可以完成了
+        isJobTicketService.update(Wrappers.<JobTicketDO>lambdaUpdate().eq(JobTicketDO::getId, isJobTicket.getId())
+                .set(JobTicketDO::getTicketStatus, FINISHED.status)
+                .set(JobTicketDO::getTicketEndTime, new Date()));
+        // 结束作业
+        isTicketOperLogService.addLog11(isJobTicket.getId(), isJobTicketService.getById(isJobTicket.getId()).getTicketName());
+        return true;
+    }
+
+    @Override
+    public Boolean updateJobToCancel(JobTicketSaveReqVO isJobTicket) {
+        Assert.notNull(isJobTicket.getId(), "作业票ID不可为空!");
+        // 1.检查第六步有没有被执行,被执行了不能取消
+        JobTicketStepDO jobTicketStep = iIsJobTicketStepService.getOne(Wrappers.<JobTicketStepDO>lambdaQuery()
+                .eq(JobTicketStepDO::getTicketId, isJobTicket.getId())
+                .eq(JobTicketStepDO::getStepIndex, 6)
+                .eq(JobTicketStepDO::getStepStatus, 1));
+        Assert.isFalse(jobTicketStep != null, "该作业票已执行至第六步,无法取消!");
+        // 2.既然走到这了,说明可以取消
+        isJobTicketService.update(Wrappers.<JobTicketDO>lambdaUpdate().eq(JobTicketDO::getId, isJobTicket.getId())
+                .set(JobTicketDO::getTicketStatus, 6));
+        // 取消作业
+        isTicketOperLogService.addLog10(isJobTicket.getId(), isJobTicketService.getById(isJobTicket.getId()).getTicketName());
+        return true;
+    }
 }

+ 17 - 0
yudao-module-iscs/src/main/resources/mapper/JobTicketLockMapper.xml

@@ -30,4 +30,21 @@
                  left join isc_lock l on l.id = j.lock_id
         where j.ticket_id = #{ticketId}
     </select>
+    <select id="getLockJobByBfc"
+            resultType="cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket.JobTicketLockDO">
+        SELECT tl.*
+        FROM isc_job_ticket_lock tl
+        LEFT JOIN isc_lock l on l.id = tl.lock_id
+        LEFT JOIN isc_job_ticket j ON j.id = tl.ticket_id
+        <where>
+            j.ticket_status != 5
+            AND j.ticket_status != 6
+            AND l.lock_nfc = #{nfc}
+            <if test="ticketId != null">
+                AND tl.ticket_id = #{ticketId}
+            </if>
+        </where>
+        order by tl.id desc
+        limit 1
+    </select>
 </mapper>