Explorar el Código

初始化作业票用户表、作业票执行步骤表、作业票隔离点表、作业票锁具表、作业票关联挂锁、作业票钥匙表、作业票表

车车 hace 11 meses
padre
commit
03eb01e916
Se han modificado 63 ficheros con 3659 adiciones y 0 borrados
  1. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/JobTicketController.java
  2. 61 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/vo/JobTicketPageReqVO.java
  3. 75 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/vo/JobTicketRespVO.java
  4. 59 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/vo/JobTicketSaveReqVO.java
  5. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/JobTicketKeyController.java
  6. 49 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/vo/JobTicketKeyPageReqVO.java
  7. 59 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/vo/JobTicketKeyRespVO.java
  8. 45 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/vo/JobTicketKeySaveReqVO.java
  9. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/JobTicketLockController.java
  10. 44 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/vo/JobTicketLockPageReqVO.java
  11. 55 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/vo/JobTicketLockRespVO.java
  12. 40 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/vo/JobTicketLockSaveReqVO.java
  13. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/JobTicketLocksetController.java
  14. 52 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/vo/JobTicketLocksetPageReqVO.java
  15. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/vo/JobTicketLocksetRespVO.java
  16. 47 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/vo/JobTicketLocksetSaveReqVO.java
  17. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/JobTicketPointsController.java
  18. 64 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/vo/JobTicketPointsPageReqVO.java
  19. 79 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/vo/JobTicketPointsRespVO.java
  20. 62 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/vo/JobTicketPointsSaveReqVO.java
  21. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/JobTicketStepController.java
  22. 38 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/vo/JobTicketStepPageReqVO.java
  23. 47 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/vo/JobTicketStepRespVO.java
  24. 36 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/vo/JobTicketStepSaveReqVO.java
  25. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/JobTicketUserController.java
  26. 41 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/vo/JobTicketUserPageReqVO.java
  27. 51 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/vo/JobTicketUserRespVO.java
  28. 38 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/vo/JobTicketUserSaveReqVO.java
  29. 86 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticket/JobTicketDO.java
  30. 70 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketkey/JobTicketKeyDO.java
  31. 64 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketlock/JobTicketLockDO.java
  32. 80 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketlockset/JobTicketLocksetDO.java
  33. 90 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketpoints/JobTicketPointsDO.java
  34. 56 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketstep/JobTicketStepDO.java
  35. 60 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketuser/JobTicketUserDO.java
  36. 39 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticket/JobTicketMapper.java
  37. 35 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketkey/JobTicketKeyMapper.java
  38. 34 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketlock/JobTicketLockMapper.java
  39. 36 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketlockset/JobTicketLocksetMapper.java
  40. 40 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketpoints/JobTicketPointsMapper.java
  41. 32 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketstep/JobTicketStepMapper.java
  42. 33 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketuser/JobTicketUserMapper.java
  43. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticket/JobTicketService.java
  44. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticket/JobTicketServiceImpl.java
  45. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketkey/JobTicketKeyService.java
  46. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketkey/JobTicketKeyServiceImpl.java
  47. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlock/JobTicketLockService.java
  48. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlock/JobTicketLockServiceImpl.java
  49. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlockset/JobTicketLocksetService.java
  50. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlockset/JobTicketLocksetServiceImpl.java
  51. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketpoints/JobTicketPointsService.java
  52. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketpoints/JobTicketPointsServiceImpl.java
  53. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketstep/JobTicketStepService.java
  54. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketstep/JobTicketStepServiceImpl.java
  55. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketuser/JobTicketUserService.java
  56. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketuser/JobTicketUserServiceImpl.java
  57. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/JobTicketKeyMapper.xml
  58. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/JobTicketLockMapper.xml
  59. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/JobTicketLocksetMapper.xml
  60. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/JobTicketMapper.xml
  61. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/JobTicketPointsMapper.xml
  62. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/JobTicketStepMapper.xml
  63. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/JobTicketUserMapper.xml

+ 95 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/JobTicketController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticket;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket.JobTicketDO;
+import cn.iocoder.yudao.module.iscs.service.jobticket.JobTicketService;
+
+@Tag(name = "管理后台 - 作业票")
+@RestController
+@RequestMapping("/iscs/job-ticket")
+@Validated
+public class JobTicketController {
+
+    @Resource
+    private JobTicketService jobTicketService;
+
+    @PostMapping("/insertJobTicket")
+    @Operation(summary = "创建作业票")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket:create')")
+    public CommonResult<Long> insertJobTicket(@Valid @RequestBody JobTicketSaveReqVO createReqVO) {
+        return success(jobTicketService.createJobTicket(createReqVO));
+    }
+
+    @PutMapping("/updateJobTicket")
+    @Operation(summary = "更新作业票")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket:update')")
+    public CommonResult<Boolean> updateJobTicket(@Valid @RequestBody JobTicketSaveReqVO updateReqVO) {
+        jobTicketService.updateJobTicket(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteJobTicketList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除作业票")
+                @PreAuthorize("@ss.hasPermission('iscs:job-ticket:delete')")
+    public CommonResult<Boolean> deleteJobTicketList(@RequestParam("ids") List<Long> ids) {
+        jobTicketService.deleteJobTicketListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectJobTicketById")
+    @Operation(summary = "获得作业票")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket:query')")
+    public CommonResult<JobTicketRespVO> selectJobTicketById(@RequestParam("id") Long id) {
+        JobTicketDO jobTicket = jobTicketService.getJobTicket(id);
+        return success(BeanUtils.toBean(jobTicket, JobTicketRespVO.class));
+    }
+
+    @GetMapping("/getJobTicketPage")
+    @Operation(summary = "获得作业票分页")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket:query')")
+    public CommonResult<PageResult<JobTicketRespVO>> getJobTicketPage(@Valid JobTicketPageReqVO pageReqVO) {
+        PageResult<JobTicketDO> pageResult = jobTicketService.getJobTicketPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobTicketRespVO.class));
+    }
+
+    @GetMapping("/exportJobTicketExcel")
+    @Operation(summary = "导出作业票 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobTicketExcel(@Valid JobTicketPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobTicketDO> list = jobTicketService.getJobTicketPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "作业票.xls", "数据", JobTicketRespVO.class,
+                        BeanUtils.toBean(list, JobTicketRespVO.class));
+    }
+
+}

+ 61 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/vo/JobTicketPageReqVO.java

@@ -0,0 +1,61 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 作业票分页 Request VO")
+@Data
+public class JobTicketPageReqVO extends PageParam {
+
+    @Schema(description = "作业票编号")
+    private String ticketCode;
+
+    @Schema(description = "作业票名称", example = "王五")
+    private String ticketName;
+
+    @Schema(description = "所属车间ID", example = "29703")
+    private Long workshopId;
+
+    @Schema(description = "所属区域ID", example = "116")
+    private Long workareaId;
+
+    @Schema(description = "mars岗位ID", example = "3368")
+    private Long workstationId;
+
+    @Schema(description = "设备工艺ID", example = "21613")
+    private Long machineryId;
+
+    @Schema(description = "所属SOPID", example = "665")
+    private Long sopId;
+
+    @Schema(description = "作业票类型(字典值)", example = "1")
+    private String ticketType;
+
+    @Schema(description = "作业票详情")
+    private String ticketContent;
+
+    @Schema(description = "作业票状态(字典值)(0未开始 1待上锁 2进行中 3待解锁 4已解锁 5已结束6已取消)", example = "2")
+    private String ticketStatus;
+
+    @Schema(description = "作业票开始时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] ticketStartTime;
+
+    @Schema(description = "作业票结束时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] ticketEndTime;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 75 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/vo/JobTicketRespVO.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 作业票 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobTicketRespVO {
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9364")
+    @ExcelProperty("作业票ID")
+    private Long id;
+
+    @Schema(description = "作业票编号")
+    @ExcelProperty("作业票编号")
+    private String ticketCode;
+
+    @Schema(description = "作业票名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @ExcelProperty("作业票名称")
+    private String ticketName;
+
+    @Schema(description = "所属车间ID", example = "29703")
+    @ExcelProperty("所属车间ID")
+    private Long workshopId;
+
+    @Schema(description = "所属区域ID", example = "116")
+    @ExcelProperty("所属区域ID")
+    private Long workareaId;
+
+    @Schema(description = "mars岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3368")
+    @ExcelProperty("mars岗位ID")
+    private Long workstationId;
+
+    @Schema(description = "设备工艺ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21613")
+    @ExcelProperty("设备工艺ID")
+    private Long machineryId;
+
+    @Schema(description = "所属SOPID", example = "665")
+    @ExcelProperty("所属SOPID")
+    private Long sopId;
+
+    @Schema(description = "作业票类型(字典值)", example = "1")
+    @ExcelProperty("作业票类型(字典值)")
+    private String ticketType;
+
+    @Schema(description = "作业票详情")
+    @ExcelProperty("作业票详情")
+    private String ticketContent;
+
+    @Schema(description = "作业票状态(字典值)(0未开始 1待上锁 2进行中 3待解锁 4已解锁 5已结束6已取消)", example = "2")
+    @ExcelProperty("作业票状态(字典值)(0未开始 1待上锁 2进行中 3待解锁 4已解锁 5已结束6已取消)")
+    private String ticketStatus;
+
+    @Schema(description = "作业票开始时间")
+    @ExcelProperty("作业票开始时间")
+    private LocalDateTime ticketStartTime;
+
+    @Schema(description = "作业票结束时间")
+    @ExcelProperty("作业票结束时间")
+    private LocalDateTime ticketEndTime;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 59 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticket/vo/JobTicketSaveReqVO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 作业票新增/修改 Request VO")
+@Data
+public class JobTicketSaveReqVO {
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9364")
+    private Long id;
+
+    @Schema(description = "作业票编号")
+    private String ticketCode;
+
+    @Schema(description = "作业票名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @NotEmpty(message = "作业票名称不能为空")
+    private String ticketName;
+
+    @Schema(description = "所属车间ID", example = "29703")
+    private Long workshopId;
+
+    @Schema(description = "所属区域ID", example = "116")
+    private Long workareaId;
+
+    @Schema(description = "mars岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3368")
+    @NotNull(message = "mars岗位ID不能为空")
+    private Long workstationId;
+
+    @Schema(description = "设备工艺ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21613")
+    @NotNull(message = "设备工艺ID不能为空")
+    private Long machineryId;
+
+    @Schema(description = "所属SOPID", example = "665")
+    private Long sopId;
+
+    @Schema(description = "作业票类型(字典值)", example = "1")
+    private String ticketType;
+
+    @Schema(description = "作业票详情")
+    private String ticketContent;
+
+    @Schema(description = "作业票状态(字典值)(0未开始 1待上锁 2进行中 3待解锁 4已解锁 5已结束6已取消)", example = "2")
+    private String ticketStatus;
+
+    @Schema(description = "作业票开始时间")
+    private LocalDateTime ticketStartTime;
+
+    @Schema(description = "作业票结束时间")
+    private LocalDateTime ticketEndTime;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+}

+ 95 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/JobTicketKeyController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketkey.JobTicketKeyDO;
+import cn.iocoder.yudao.module.iscs.service.jobticketkey.JobTicketKeyService;
+
+@Tag(name = "管理后台 - 作业票钥匙")
+@RestController
+@RequestMapping("/iscs/job-ticket-key")
+@Validated
+public class JobTicketKeyController {
+
+    @Resource
+    private JobTicketKeyService jobTicketKeyService;
+
+    @PostMapping("/insertJobTicketKey")
+    @Operation(summary = "创建作业票钥匙")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-key:create')")
+    public CommonResult<Long> insertJobTicketKey(@Valid @RequestBody JobTicketKeySaveReqVO createReqVO) {
+        return success(jobTicketKeyService.createJobTicketKey(createReqVO));
+    }
+
+    @PutMapping("/updateJobTicketKey")
+    @Operation(summary = "更新作业票钥匙")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-key:update')")
+    public CommonResult<Boolean> updateJobTicketKey(@Valid @RequestBody JobTicketKeySaveReqVO updateReqVO) {
+        jobTicketKeyService.updateJobTicketKey(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteJobTicketKeyList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除作业票钥匙")
+                @PreAuthorize("@ss.hasPermission('iscs:job-ticket-key:delete')")
+    public CommonResult<Boolean> deleteJobTicketKeyList(@RequestParam("ids") List<Long> ids) {
+        jobTicketKeyService.deleteJobTicketKeyListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectJobTicketKeyById")
+    @Operation(summary = "获得作业票钥匙")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-key:query')")
+    public CommonResult<JobTicketKeyRespVO> selectJobTicketKeyById(@RequestParam("id") Long id) {
+        JobTicketKeyDO jobTicketKey = jobTicketKeyService.getJobTicketKey(id);
+        return success(BeanUtils.toBean(jobTicketKey, JobTicketKeyRespVO.class));
+    }
+
+    @GetMapping("/getJobTicketKeyPage")
+    @Operation(summary = "获得作业票钥匙分页")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-key:query')")
+    public CommonResult<PageResult<JobTicketKeyRespVO>> getJobTicketKeyPage(@Valid JobTicketKeyPageReqVO pageReqVO) {
+        PageResult<JobTicketKeyDO> pageResult = jobTicketKeyService.getJobTicketKeyPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobTicketKeyRespVO.class));
+    }
+
+    @GetMapping("/exportJobTicketKeyExcel")
+    @Operation(summary = "导出作业票钥匙 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-key:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobTicketKeyExcel(@Valid JobTicketKeyPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobTicketKeyDO> list = jobTicketKeyService.getJobTicketKeyPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "作业票钥匙.xls", "数据", JobTicketKeyRespVO.class,
+                        BeanUtils.toBean(list, JobTicketKeyRespVO.class));
+    }
+
+}

+ 49 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/vo/JobTicketKeyPageReqVO.java

@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 作业票钥匙分页 Request VO")
+@Data
+public class JobTicketKeyPageReqVO extends PageParam {
+
+    @Schema(description = "作业票ID", example = "2352")
+    private Long ticketId;
+
+    @Schema(description = "钥匙ID", example = "31956")
+    private Long keyId;
+
+    @Schema(description = "取出硬件ID", example = "26792")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "22651")
+    private Long toHardwareId;
+
+    @Schema(description = "取出时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] collectTime;
+
+    @Schema(description = "归还时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] giveBackTime;
+
+    @Schema(description = "钥匙状态(0-待取出 1-已取出 2-已归还)", example = "2")
+    private String keyStatus;
+
+    @Schema(description = "作业锁类型(0-上锁 1-解锁)", example = "2")
+    private Integer ticketType;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 59 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/vo/JobTicketKeyRespVO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 作业票钥匙 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobTicketKeyRespVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19219")
+    @ExcelProperty("主键ID")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2352")
+    @ExcelProperty("作业票ID")
+    private Long ticketId;
+
+    @Schema(description = "钥匙ID", example = "31956")
+    @ExcelProperty("钥匙ID")
+    private Long keyId;
+
+    @Schema(description = "取出硬件ID", example = "26792")
+    @ExcelProperty("取出硬件ID")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "22651")
+    @ExcelProperty("归还硬件ID")
+    private Long toHardwareId;
+
+    @Schema(description = "取出时间")
+    @ExcelProperty("取出时间")
+    private LocalDateTime collectTime;
+
+    @Schema(description = "归还时间")
+    @ExcelProperty("归还时间")
+    private LocalDateTime giveBackTime;
+
+    @Schema(description = "钥匙状态(0-待取出 1-已取出 2-已归还)", example = "2")
+    @ExcelProperty("钥匙状态(0-待取出 1-已取出 2-已归还)")
+    private String keyStatus;
+
+    @Schema(description = "作业锁类型(0-上锁 1-解锁)", example = "2")
+    @ExcelProperty("作业锁类型(0-上锁 1-解锁)")
+    private Integer ticketType;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 45 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketkey/vo/JobTicketKeySaveReqVO.java

@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 作业票钥匙新增/修改 Request VO")
+@Data
+public class JobTicketKeySaveReqVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19219")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2352")
+    @NotNull(message = "作业票ID不能为空")
+    private Long ticketId;
+
+    @Schema(description = "钥匙ID", example = "31956")
+    private Long keyId;
+
+    @Schema(description = "取出硬件ID", example = "26792")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "22651")
+    private Long toHardwareId;
+
+    @Schema(description = "取出时间")
+    private LocalDateTime collectTime;
+
+    @Schema(description = "归还时间")
+    private LocalDateTime giveBackTime;
+
+    @Schema(description = "钥匙状态(0-待取出 1-已取出 2-已归还)", example = "2")
+    private String keyStatus;
+
+    @Schema(description = "作业锁类型(0-上锁 1-解锁)", example = "2")
+    private Integer ticketType;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+}

+ 95 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/JobTicketLockController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlock.JobTicketLockDO;
+import cn.iocoder.yudao.module.iscs.service.jobticketlock.JobTicketLockService;
+
+@Tag(name = "管理后台 - 作业票关联挂锁")
+@RestController
+@RequestMapping("/iscs/job-ticket-lock")
+@Validated
+public class JobTicketLockController {
+
+    @Resource
+    private JobTicketLockService jobTicketLockService;
+
+    @PostMapping("/insertJobTicketLock")
+    @Operation(summary = "创建作业票关联挂锁")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lock:create')")
+    public CommonResult<Long> insertJobTicketLock(@Valid @RequestBody JobTicketLockSaveReqVO createReqVO) {
+        return success(jobTicketLockService.createJobTicketLock(createReqVO));
+    }
+
+    @PutMapping("/updateJobTicketLock")
+    @Operation(summary = "更新作业票关联挂锁")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lock:update')")
+    public CommonResult<Boolean> updateJobTicketLock(@Valid @RequestBody JobTicketLockSaveReqVO updateReqVO) {
+        jobTicketLockService.updateJobTicketLock(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteJobTicketLockList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除作业票关联挂锁")
+                @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lock:delete')")
+    public CommonResult<Boolean> deleteJobTicketLockList(@RequestParam("ids") List<Long> ids) {
+        jobTicketLockService.deleteJobTicketLockListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectJobTicketLockById")
+    @Operation(summary = "获得作业票关联挂锁")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lock:query')")
+    public CommonResult<JobTicketLockRespVO> selectJobTicketLockById(@RequestParam("id") Long id) {
+        JobTicketLockDO jobTicketLock = jobTicketLockService.getJobTicketLock(id);
+        return success(BeanUtils.toBean(jobTicketLock, JobTicketLockRespVO.class));
+    }
+
+    @GetMapping("/getJobTicketLockPage")
+    @Operation(summary = "获得作业票关联挂锁分页")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lock:query')")
+    public CommonResult<PageResult<JobTicketLockRespVO>> getJobTicketLockPage(@Valid JobTicketLockPageReqVO pageReqVO) {
+        PageResult<JobTicketLockDO> pageResult = jobTicketLockService.getJobTicketLockPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobTicketLockRespVO.class));
+    }
+
+    @GetMapping("/exportJobTicketLockExcel")
+    @Operation(summary = "导出作业票关联挂锁 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lock:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobTicketLockExcel(@Valid JobTicketLockPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobTicketLockDO> list = jobTicketLockService.getJobTicketLockPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "作业票关联挂锁.xls", "数据", JobTicketLockRespVO.class,
+                        BeanUtils.toBean(list, JobTicketLockRespVO.class));
+    }
+
+}

+ 44 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/vo/JobTicketLockPageReqVO.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 作业票关联挂锁分页 Request VO")
+@Data
+public class JobTicketLockPageReqVO extends PageParam {
+
+    @Schema(description = "作业票ID", example = "4052")
+    private Long ticketId;
+
+    @Schema(description = "挂锁ID", example = "13114")
+    private Long lockId;
+
+    @Schema(description = "隔离点ID", example = "19349")
+    private Long isolationPointId;
+
+    @Schema(description = "锁具状态(0-待取出 1-未上锁 2-已上锁 3-待解锁 4-已解锁 5-已归还)", example = "2")
+    private String lockStatus;
+
+    @Schema(description = "取出硬件ID", example = "27383")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "31578")
+    private Long toHardwareId;
+
+    @Schema(description = "删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 55 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/vo/JobTicketLockRespVO.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 作业票关联挂锁 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobTicketLockRespVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22637")
+    @ExcelProperty("主键ID")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4052")
+    @ExcelProperty("作业票ID")
+    private Long ticketId;
+
+    @Schema(description = "挂锁ID", example = "13114")
+    @ExcelProperty("挂锁ID")
+    private Long lockId;
+
+    @Schema(description = "隔离点ID", example = "19349")
+    @ExcelProperty("隔离点ID")
+    private Long isolationPointId;
+
+    @Schema(description = "锁具状态(0-待取出 1-未上锁 2-已上锁 3-待解锁 4-已解锁 5-已归还)", example = "2")
+    @ExcelProperty("锁具状态(0-待取出 1-未上锁 2-已上锁 3-待解锁 4-已解锁 5-已归还)")
+    private String lockStatus;
+
+    @Schema(description = "取出硬件ID", example = "27383")
+    @ExcelProperty("取出硬件ID")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "31578")
+    @ExcelProperty("归还硬件ID")
+    private Long toHardwareId;
+
+    @Schema(description = "删除标志(0代表存在 2代表删除)")
+    @ExcelProperty("删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 40 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlock/vo/JobTicketLockSaveReqVO.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 作业票关联挂锁新增/修改 Request VO")
+@Data
+public class JobTicketLockSaveReqVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22637")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "4052")
+    @NotNull(message = "作业票ID不能为空")
+    private Long ticketId;
+
+    @Schema(description = "挂锁ID", example = "13114")
+    private Long lockId;
+
+    @Schema(description = "隔离点ID", example = "19349")
+    private Long isolationPointId;
+
+    @Schema(description = "锁具状态(0-待取出 1-未上锁 2-已上锁 3-待解锁 4-已解锁 5-已归还)", example = "2")
+    private String lockStatus;
+
+    @Schema(description = "取出硬件ID", example = "27383")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "31578")
+    private Long toHardwareId;
+
+    @Schema(description = "删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+}

+ 95 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/JobTicketLocksetController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlockset.JobTicketLocksetDO;
+import cn.iocoder.yudao.module.iscs.service.jobticketlockset.JobTicketLocksetService;
+
+@Tag(name = "管理后台 - 作业票锁具")
+@RestController
+@RequestMapping("/iscs/job-ticket-lockset")
+@Validated
+public class JobTicketLocksetController {
+
+    @Resource
+    private JobTicketLocksetService jobTicketLocksetService;
+
+    @PostMapping("/insertJobTicketLockset")
+    @Operation(summary = "创建作业票锁具")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lockset:create')")
+    public CommonResult<Long> insertJobTicketLockset(@Valid @RequestBody JobTicketLocksetSaveReqVO createReqVO) {
+        return success(jobTicketLocksetService.createJobTicketLockset(createReqVO));
+    }
+
+    @PutMapping("/updateJobTicketLockset")
+    @Operation(summary = "更新作业票锁具")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lockset:update')")
+    public CommonResult<Boolean> updateJobTicketLockset(@Valid @RequestBody JobTicketLocksetSaveReqVO updateReqVO) {
+        jobTicketLocksetService.updateJobTicketLockset(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteJobTicketLocksetList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除作业票锁具")
+                @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lockset:delete')")
+    public CommonResult<Boolean> deleteJobTicketLocksetList(@RequestParam("ids") List<Long> ids) {
+        jobTicketLocksetService.deleteJobTicketLocksetListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectJobTicketLocksetById")
+    @Operation(summary = "获得作业票锁具")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lockset:query')")
+    public CommonResult<JobTicketLocksetRespVO> selectJobTicketLocksetById(@RequestParam("id") Long id) {
+        JobTicketLocksetDO jobTicketLockset = jobTicketLocksetService.getJobTicketLockset(id);
+        return success(BeanUtils.toBean(jobTicketLockset, JobTicketLocksetRespVO.class));
+    }
+
+    @GetMapping("/getJobTicketLocksetPage")
+    @Operation(summary = "获得作业票锁具分页")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lockset:query')")
+    public CommonResult<PageResult<JobTicketLocksetRespVO>> getJobTicketLocksetPage(@Valid JobTicketLocksetPageReqVO pageReqVO) {
+        PageResult<JobTicketLocksetDO> pageResult = jobTicketLocksetService.getJobTicketLocksetPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobTicketLocksetRespVO.class));
+    }
+
+    @GetMapping("/exportJobTicketLocksetExcel")
+    @Operation(summary = "导出作业票锁具 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-lockset:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobTicketLocksetExcel(@Valid JobTicketLocksetPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobTicketLocksetDO> list = jobTicketLocksetService.getJobTicketLocksetPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "作业票锁具.xls", "数据", JobTicketLocksetRespVO.class,
+                        BeanUtils.toBean(list, JobTicketLocksetRespVO.class));
+    }
+
+}

+ 52 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/vo/JobTicketLocksetPageReqVO.java

@@ -0,0 +1,52 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 作业票锁具分页 Request VO")
+@Data
+public class JobTicketLocksetPageReqVO extends PageParam {
+
+    @Schema(description = "作业票ID", example = "31539")
+    private Long jobTicketId;
+
+    @Schema(description = "隔离点ID", example = "17858")
+    private Long pointId;
+
+    @Schema(description = "锁具ID", example = "4561")
+    private Long locksetId;
+
+    @Schema(description = "取出硬件ID", example = "22416")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "26083")
+    private Long toHardwareId;
+
+    @Schema(description = "所需锁具类型ID", example = "5015")
+    private Long locksetTypeId;
+
+    @Schema(description = "附件状态(0待取出(点击开始作业)1 已取出(锁具出柜子) 2待使用(上锁钥匙出机柜)3 使用中(上锁钥匙还机柜)4 待拆除(解锁钥匙出机柜)5 待归还(解锁钥匙还机柜,但锁具为归还)6 已归还(锁具还物资柜))", example = "1")
+    private String locksetStatus;
+
+    @Schema(description = "取出时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] collectTime;
+
+    @Schema(description = "归还时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] giveBackTime;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/vo/JobTicketLocksetRespVO.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 作业票锁具 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobTicketLocksetRespVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12212")
+    @ExcelProperty("主键ID")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31539")
+    @ExcelProperty("作业票ID")
+    private Long jobTicketId;
+
+    @Schema(description = "隔离点ID", example = "17858")
+    @ExcelProperty("隔离点ID")
+    private Long pointId;
+
+    @Schema(description = "锁具ID", example = "4561")
+    @ExcelProperty("锁具ID")
+    private Long locksetId;
+
+    @Schema(description = "取出硬件ID", example = "22416")
+    @ExcelProperty("取出硬件ID")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "26083")
+    @ExcelProperty("归还硬件ID")
+    private Long toHardwareId;
+
+    @Schema(description = "所需锁具类型ID", example = "5015")
+    @ExcelProperty("所需锁具类型ID")
+    private Long locksetTypeId;
+
+    @Schema(description = "附件状态(0待取出(点击开始作业)1 已取出(锁具出柜子) 2待使用(上锁钥匙出机柜)3 使用中(上锁钥匙还机柜)4 待拆除(解锁钥匙出机柜)5 待归还(解锁钥匙还机柜,但锁具为归还)6 已归还(锁具还物资柜))", example = "1")
+    @ExcelProperty("附件状态(0待取出(点击开始作业)1 已取出(锁具出柜子) 2待使用(上锁钥匙出机柜)3 使用中(上锁钥匙还机柜)4 待拆除(解锁钥匙出机柜)5 待归还(解锁钥匙还机柜,但锁具为归还)6 已归还(锁具还物资柜))")
+    private String locksetStatus;
+
+    @Schema(description = "取出时间")
+    @ExcelProperty("取出时间")
+    private LocalDateTime collectTime;
+
+    @Schema(description = "归还时间")
+    @ExcelProperty("归还时间")
+    private LocalDateTime giveBackTime;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 47 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketlockset/vo/JobTicketLocksetSaveReqVO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 作业票锁具新增/修改 Request VO")
+@Data
+public class JobTicketLocksetSaveReqVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12212")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31539")
+    @NotNull(message = "作业票ID不能为空")
+    private Long jobTicketId;
+
+    @Schema(description = "隔离点ID", example = "17858")
+    private Long pointId;
+
+    @Schema(description = "锁具ID", example = "4561")
+    private Long locksetId;
+
+    @Schema(description = "取出硬件ID", example = "22416")
+    private Long fromHardwareId;
+
+    @Schema(description = "归还硬件ID", example = "26083")
+    private Long toHardwareId;
+
+    @Schema(description = "所需锁具类型ID", example = "5015")
+    private Long locksetTypeId;
+
+    @Schema(description = "附件状态(0待取出(点击开始作业)1 已取出(锁具出柜子) 2待使用(上锁钥匙出机柜)3 使用中(上锁钥匙还机柜)4待拆除(解锁钥匙出机柜)5待归还(解锁钥匙还机柜,但锁具为归还)6已归还(锁具还物资柜))", example = "1")
+    private String locksetStatus;
+
+    @Schema(description = "取出时间")
+    private LocalDateTime collectTime;
+
+    @Schema(description = "归还时间")
+    private LocalDateTime giveBackTime;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+}

+ 95 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/JobTicketPointsController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketpoints.JobTicketPointsDO;
+import cn.iocoder.yudao.module.iscs.service.jobticketpoints.JobTicketPointsService;
+
+@Tag(name = "管理后台 - 作业票隔离点")
+@RestController
+@RequestMapping("/iscs/job-ticket-points")
+@Validated
+public class JobTicketPointsController {
+
+    @Resource
+    private JobTicketPointsService jobTicketPointsService;
+
+    @PostMapping("/insertJobTicketPoints")
+    @Operation(summary = "创建作业票隔离点")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-points:create')")
+    public CommonResult<Long> insertJobTicketPoints(@Valid @RequestBody JobTicketPointsSaveReqVO createReqVO) {
+        return success(jobTicketPointsService.createJobTicketPoints(createReqVO));
+    }
+
+    @PutMapping("/updateJobTicketPoints")
+    @Operation(summary = "更新作业票隔离点")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-points:update')")
+    public CommonResult<Boolean> updateJobTicketPoints(@Valid @RequestBody JobTicketPointsSaveReqVO updateReqVO) {
+        jobTicketPointsService.updateJobTicketPoints(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteJobTicketPointsList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除作业票隔离点")
+                @PreAuthorize("@ss.hasPermission('iscs:job-ticket-points:delete')")
+    public CommonResult<Boolean> deleteJobTicketPointsList(@RequestParam("ids") List<Long> ids) {
+        jobTicketPointsService.deleteJobTicketPointsListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectJobTicketPointsById")
+    @Operation(summary = "获得作业票隔离点")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-points:query')")
+    public CommonResult<JobTicketPointsRespVO> selectJobTicketPointsById(@RequestParam("id") Long id) {
+        JobTicketPointsDO jobTicketPoints = jobTicketPointsService.getJobTicketPoints(id);
+        return success(BeanUtils.toBean(jobTicketPoints, JobTicketPointsRespVO.class));
+    }
+
+    @GetMapping("/getJobTicketPointsPage")
+    @Operation(summary = "获得作业票隔离点分页")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-points:query')")
+    public CommonResult<PageResult<JobTicketPointsRespVO>> getJobTicketPointsPage(@Valid JobTicketPointsPageReqVO pageReqVO) {
+        PageResult<JobTicketPointsDO> pageResult = jobTicketPointsService.getJobTicketPointsPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobTicketPointsRespVO.class));
+    }
+
+    @GetMapping("/exportJobTicketPointsExcel")
+    @Operation(summary = "导出作业票隔离点 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-points:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobTicketPointsExcel(@Valid JobTicketPointsPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobTicketPointsDO> list = jobTicketPointsService.getJobTicketPointsPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "作业票隔离点.xls", "数据", JobTicketPointsRespVO.class,
+                        BeanUtils.toBean(list, JobTicketPointsRespVO.class));
+    }
+
+}

+ 64 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/vo/JobTicketPointsPageReqVO.java

@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 作业票隔离点分页 Request VO")
+@Data
+public class JobTicketPointsPageReqVO extends PageParam {
+
+    @Schema(description = "作业票ID", example = "22267")
+    private Long ticketId;
+
+    @Schema(description = "所属车间ID", example = "24894")
+    private Long workshopId;
+
+    @Schema(description = "所属区域ID", example = "18964")
+    private Long workareaId;
+
+    @Schema(description = "隔离点ID", example = "1405")
+    private Long pointId;
+
+    @Schema(description = "隔离点状态(0-未上锁 1-已上锁 2-已解锁)", example = "1")
+    private String pointStatus;
+
+    @Schema(description = "挂锁ID", example = "18472")
+    private Long lockId;
+
+    @Schema(description = "上锁钥匙ID", example = "18512")
+    private Long lockedByKeyId;
+
+    @Schema(description = "解锁钥匙ID", example = "3899")
+    private Long unlockedByKeyId;
+
+    @Schema(description = "上锁时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] lockTime;
+
+    @Schema(description = "解锁时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] unlockTime;
+
+    @Schema(description = "前置隔离点ID", example = "18707")
+    private Long prePointId;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "mars岗位ID", example = "16468")
+    private Long workstationId;
+
+    @Schema(description = "设备工艺ID", example = "19137")
+    private Long machineryId;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 79 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/vo/JobTicketPointsRespVO.java

@@ -0,0 +1,79 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 作业票隔离点 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobTicketPointsRespVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30425")
+    @ExcelProperty("主键ID")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22267")
+    @ExcelProperty("作业票ID")
+    private Long ticketId;
+
+    @Schema(description = "所属车间ID", example = "24894")
+    @ExcelProperty("所属车间ID")
+    private Long workshopId;
+
+    @Schema(description = "所属区域ID", example = "18964")
+    @ExcelProperty("所属区域ID")
+    private Long workareaId;
+
+    @Schema(description = "隔离点ID", example = "1405")
+    @ExcelProperty("隔离点ID")
+    private Long pointId;
+
+    @Schema(description = "隔离点状态(0-未上锁 1-已上锁 2-已解锁)", example = "1")
+    @ExcelProperty("隔离点状态(0-未上锁 1-已上锁 2-已解锁)")
+    private String pointStatus;
+
+    @Schema(description = "挂锁ID", example = "18472")
+    @ExcelProperty("挂锁ID")
+    private Long lockId;
+
+    @Schema(description = "上锁钥匙ID", example = "18512")
+    @ExcelProperty("上锁钥匙ID")
+    private Long lockedByKeyId;
+
+    @Schema(description = "解锁钥匙ID", example = "3899")
+    @ExcelProperty("解锁钥匙ID")
+    private Long unlockedByKeyId;
+
+    @Schema(description = "上锁时间")
+    @ExcelProperty("上锁时间")
+    private LocalDateTime lockTime;
+
+    @Schema(description = "解锁时间")
+    @ExcelProperty("解锁时间")
+    private LocalDateTime unlockTime;
+
+    @Schema(description = "前置隔离点ID", example = "18707")
+    @ExcelProperty("前置隔离点ID")
+    private Long prePointId;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "mars岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16468")
+    @ExcelProperty("mars岗位ID")
+    private Long workstationId;
+
+    @Schema(description = "设备工艺ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19137")
+    @ExcelProperty("设备工艺ID")
+    private Long machineryId;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 62 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketpoints/vo/JobTicketPointsSaveReqVO.java

@@ -0,0 +1,62 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 作业票隔离点新增/修改 Request VO")
+@Data
+public class JobTicketPointsSaveReqVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30425")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22267")
+    @NotNull(message = "作业票ID不能为空")
+    private Long ticketId;
+
+    @Schema(description = "所属车间ID", example = "24894")
+    private Long workshopId;
+
+    @Schema(description = "所属区域ID", example = "18964")
+    private Long workareaId;
+
+    @Schema(description = "隔离点ID", example = "1405")
+    private Long pointId;
+
+    @Schema(description = "隔离点状态(0-未上锁 1-已上锁 2-已解锁)", example = "1")
+    private String pointStatus;
+
+    @Schema(description = "挂锁ID", example = "18472")
+    private Long lockId;
+
+    @Schema(description = "上锁钥匙ID", example = "18512")
+    private Long lockedByKeyId;
+
+    @Schema(description = "解锁钥匙ID", example = "3899")
+    private Long unlockedByKeyId;
+
+    @Schema(description = "上锁时间")
+    private LocalDateTime lockTime;
+
+    @Schema(description = "解锁时间")
+    private LocalDateTime unlockTime;
+
+    @Schema(description = "前置隔离点ID", example = "18707")
+    private Long prePointId;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "mars岗位ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16468")
+    @NotNull(message = "mars岗位ID不能为空")
+    private Long workstationId;
+
+    @Schema(description = "设备工艺ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19137")
+    @NotNull(message = "设备工艺ID不能为空")
+    private Long machineryId;
+
+}

+ 95 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/JobTicketStepController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketstep.JobTicketStepDO;
+import cn.iocoder.yudao.module.iscs.service.jobticketstep.JobTicketStepService;
+
+@Tag(name = "管理后台 - 作业票执行步骤")
+@RestController
+@RequestMapping("/iscs/job-ticket-step")
+@Validated
+public class JobTicketStepController {
+
+    @Resource
+    private JobTicketStepService jobTicketStepService;
+
+    @PostMapping("/insertJobTicketStep")
+    @Operation(summary = "创建作业票执行步骤")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-step:create')")
+    public CommonResult<Long> insertJobTicketStep(@Valid @RequestBody JobTicketStepSaveReqVO createReqVO) {
+        return success(jobTicketStepService.createJobTicketStep(createReqVO));
+    }
+
+    @PutMapping("/updateJobTicketStep")
+    @Operation(summary = "更新作业票执行步骤")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-step:update')")
+    public CommonResult<Boolean> updateJobTicketStep(@Valid @RequestBody JobTicketStepSaveReqVO updateReqVO) {
+        jobTicketStepService.updateJobTicketStep(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteJobTicketStepList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除作业票执行步骤")
+                @PreAuthorize("@ss.hasPermission('iscs:job-ticket-step:delete')")
+    public CommonResult<Boolean> deleteJobTicketStepList(@RequestParam("ids") List<Long> ids) {
+        jobTicketStepService.deleteJobTicketStepListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectJobTicketStepById")
+    @Operation(summary = "获得作业票执行步骤")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-step:query')")
+    public CommonResult<JobTicketStepRespVO> selectJobTicketStepById(@RequestParam("id") Long id) {
+        JobTicketStepDO jobTicketStep = jobTicketStepService.getJobTicketStep(id);
+        return success(BeanUtils.toBean(jobTicketStep, JobTicketStepRespVO.class));
+    }
+
+    @GetMapping("/getJobTicketStepPage")
+    @Operation(summary = "获得作业票执行步骤分页")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-step:query')")
+    public CommonResult<PageResult<JobTicketStepRespVO>> getJobTicketStepPage(@Valid JobTicketStepPageReqVO pageReqVO) {
+        PageResult<JobTicketStepDO> pageResult = jobTicketStepService.getJobTicketStepPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobTicketStepRespVO.class));
+    }
+
+    @GetMapping("/exportJobTicketStepExcel")
+    @Operation(summary = "导出作业票执行步骤 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-step:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobTicketStepExcel(@Valid JobTicketStepPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobTicketStepDO> list = jobTicketStepService.getJobTicketStepPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "作业票执行步骤.xls", "数据", JobTicketStepRespVO.class,
+                        BeanUtils.toBean(list, JobTicketStepRespVO.class));
+    }
+
+}

+ 38 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/vo/JobTicketStepPageReqVO.java

@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 作业票执行步骤分页 Request VO")
+@Data
+public class JobTicketStepPageReqVO extends PageParam {
+
+    @Schema(description = "所属作业票ID", example = "5336")
+    private Long ticketId;
+
+    @Schema(description = "执行步骤序号")
+    private Integer stepIndex;
+
+    @Schema(description = "步骤状态(0-未执行 1-已执行)", example = "1")
+    private String stepStatus;
+
+    @Schema(description = "作业步骤详情")
+    private String stepContent;
+
+    @Schema(description = "作业步骤详情(安卓)")
+    private String androidStepContent;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 47 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/vo/JobTicketStepRespVO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 作业票执行步骤 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobTicketStepRespVO {
+
+    @Schema(description = "执行步骤ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22173")
+    @ExcelProperty("执行步骤ID")
+    private Long id;
+
+    @Schema(description = "所属作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5336")
+    @ExcelProperty("所属作业票ID")
+    private Long ticketId;
+
+    @Schema(description = "执行步骤序号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("执行步骤序号")
+    private Integer stepIndex;
+
+    @Schema(description = "步骤状态(0-未执行 1-已执行)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("步骤状态(0-未执行 1-已执行)")
+    private String stepStatus;
+
+    @Schema(description = "作业步骤详情")
+    @ExcelProperty("作业步骤详情")
+    private String stepContent;
+
+    @Schema(description = "作业步骤详情(安卓)")
+    @ExcelProperty("作业步骤详情(安卓)")
+    private String androidStepContent;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 36 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketstep/vo/JobTicketStepSaveReqVO.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 作业票执行步骤新增/修改 Request VO")
+@Data
+public class JobTicketStepSaveReqVO {
+
+    @Schema(description = "执行步骤ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "22173")
+    private Long id;
+
+    @Schema(description = "所属作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5336")
+    @NotNull(message = "所属作业票ID不能为空")
+    private Long ticketId;
+
+    @Schema(description = "执行步骤序号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "执行步骤序号不能为空")
+    private Integer stepIndex;
+
+    @Schema(description = "步骤状态(0-未执行 1-已执行)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotEmpty(message = "步骤状态(0-未执行 1-已执行)不能为空")
+    private String stepStatus;
+
+    @Schema(description = "作业步骤详情")
+    private String stepContent;
+
+    @Schema(description = "作业步骤详情(安卓)")
+    private String androidStepContent;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+}

+ 95 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/JobTicketUserController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.*;
+import jakarta.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketuser.JobTicketUserDO;
+import cn.iocoder.yudao.module.iscs.service.jobticketuser.JobTicketUserService;
+
+@Tag(name = "管理后台 - 作业票用户")
+@RestController
+@RequestMapping("/iscs/job-ticket-user")
+@Validated
+public class JobTicketUserController {
+
+    @Resource
+    private JobTicketUserService jobTicketUserService;
+
+    @PostMapping("/insertJobTicketUser")
+    @Operation(summary = "创建作业票用户")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-user:create')")
+    public CommonResult<Long> insertJobTicketUser(@Valid @RequestBody JobTicketUserSaveReqVO createReqVO) {
+        return success(jobTicketUserService.createJobTicketUser(createReqVO));
+    }
+
+    @PutMapping("/updateJobTicketUser")
+    @Operation(summary = "更新作业票用户")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-user:update')")
+    public CommonResult<Boolean> updateJobTicketUser(@Valid @RequestBody JobTicketUserSaveReqVO updateReqVO) {
+        jobTicketUserService.updateJobTicketUser(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteJobTicketUserList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除作业票用户")
+                @PreAuthorize("@ss.hasPermission('iscs:job-ticket-user:delete')")
+    public CommonResult<Boolean> deleteJobTicketUserList(@RequestParam("ids") List<Long> ids) {
+        jobTicketUserService.deleteJobTicketUserListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectJobTicketUserById")
+    @Operation(summary = "获得作业票用户")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-user:query')")
+    public CommonResult<JobTicketUserRespVO> selectJobTicketUserById(@RequestParam("id") Long id) {
+        JobTicketUserDO jobTicketUser = jobTicketUserService.getJobTicketUser(id);
+        return success(BeanUtils.toBean(jobTicketUser, JobTicketUserRespVO.class));
+    }
+
+    @GetMapping("/getJobTicketUserPage")
+    @Operation(summary = "获得作业票用户分页")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-user:query')")
+    public CommonResult<PageResult<JobTicketUserRespVO>> getJobTicketUserPage(@Valid JobTicketUserPageReqVO pageReqVO) {
+        PageResult<JobTicketUserDO> pageResult = jobTicketUserService.getJobTicketUserPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, JobTicketUserRespVO.class));
+    }
+
+    @GetMapping("/exportJobTicketUserExcel")
+    @Operation(summary = "导出作业票用户 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:job-ticket-user:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportJobTicketUserExcel(@Valid JobTicketUserPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<JobTicketUserDO> list = jobTicketUserService.getJobTicketUserPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "作业票用户.xls", "数据", JobTicketUserRespVO.class,
+                        BeanUtils.toBean(list, JobTicketUserRespVO.class));
+    }
+
+}

+ 41 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/vo/JobTicketUserPageReqVO.java

@@ -0,0 +1,41 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 作业票用户分页 Request VO")
+@Data
+public class JobTicketUserPageReqVO extends PageParam {
+
+    @Schema(description = "作业票ID", example = "27299")
+    private Long ticketId;
+
+    @Schema(description = "用户ID", example = "23962")
+    private Long userId;
+
+    @Schema(description = "用户名称", example = "王五")
+    private String userName;
+
+    @Schema(description = "用户类型(0内部 1外部)", example = "1")
+    private String userType;
+
+    @Schema(description = "作业票角色(sys_role表中role_key)")
+    private String userRole;
+
+    @Schema(description = "作业状态(0未开始,1 取锁具, 2取钥匙, 3待上锁(待共锁),4 已上锁(已共锁),5 已解锁)", example = "2")
+    private String jobStatus;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 51 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/vo/JobTicketUserRespVO.java

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 作业票用户 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class JobTicketUserRespVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21745")
+    @ExcelProperty("主键ID")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27299")
+    @ExcelProperty("作业票ID")
+    private Long ticketId;
+
+    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23962")
+    @ExcelProperty("用户ID")
+    private Long userId;
+
+    @Schema(description = "用户名称", example = "王五")
+    @ExcelProperty("用户名称")
+    private String userName;
+
+    @Schema(description = "用户类型(0内部 1外部)", example = "1")
+    @ExcelProperty("用户类型(0内部 1外部)")
+    private String userType;
+
+    @Schema(description = "作业票角色(sys_role表中role_key)")
+    @ExcelProperty("作业票角色(sys_role表中role_key)")
+    private String userRole;
+
+    @Schema(description = "作业状态(0未开始,1 取锁具, 2取钥匙, 3待上锁(待共锁),4 已上锁(已共锁),5 已解锁)", example = "2")
+    @ExcelProperty("作业状态(0未开始,1 取锁具, 2取钥匙, 3待上锁(待共锁),4 已上锁(已共锁),5 已解锁)")
+    private String jobStatus;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 38 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/jobticketuser/vo/JobTicketUserSaveReqVO.java

@@ -0,0 +1,38 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 作业票用户新增/修改 Request VO")
+@Data
+public class JobTicketUserSaveReqVO {
+
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "21745")
+    private Long id;
+
+    @Schema(description = "作业票ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27299")
+    @NotNull(message = "作业票ID不能为空")
+    private Long ticketId;
+
+    @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "23962")
+    @NotNull(message = "用户ID不能为空")
+    private Long userId;
+
+    @Schema(description = "用户名称", example = "王五")
+    private String userName;
+
+    @Schema(description = "用户类型(0内部 1外部)", example = "1")
+    private String userType;
+
+    @Schema(description = "作业票角色(sys_role表中role_key)")
+    private String userRole;
+
+    @Schema(description = "作业状态(0未开始,1 取锁具, 2取钥匙, 3待上锁(待共锁),4 已上锁(已共锁),5 已解锁)", example = "2")
+    private String jobStatus;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+}

+ 86 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticket/JobTicketDO.java

@@ -0,0 +1,86 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 作业票 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_ticket")
+@KeySequence("isc_job_ticket_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobTicketDO extends BaseDO {
+
+    /**
+     * 作业票ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 作业票编号
+     */
+    private String ticketCode;
+    /**
+     * 作业票名称
+     */
+    private String ticketName;
+    /**
+     * 所属车间ID
+     */
+    private Long workshopId;
+    /**
+     * 所属区域ID
+     */
+    private Long workareaId;
+    /**
+     * mars岗位ID
+     */
+    private Long workstationId;
+    /**
+     * 设备工艺ID
+     */
+    private Long machineryId;
+    /**
+     * 所属SOPID
+     */
+    private Long sopId;
+    /**
+     * 作业票类型(字典值)
+     */
+    private String ticketType;
+    /**
+     * 作业票详情
+     */
+    private String ticketContent;
+    /**
+     * 作业票状态(字典值)(0未开始 1待上锁 2进行中 3待解锁 4已解锁 5已结束6已取消)
+     */
+    private String ticketStatus;
+    /**
+     * 作业票开始时间
+     */
+    private LocalDateTime ticketStartTime;
+    /**
+     * 作业票结束时间
+     */
+    private LocalDateTime ticketEndTime;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 70 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketkey/JobTicketKeyDO.java

@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketkey;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 作业票钥匙 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_ticket_key")
+@KeySequence("isc_job_ticket_key_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobTicketKeyDO extends BaseDO {
+
+    /**
+     * 主键ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 作业票ID
+     */
+    private Long ticketId;
+    /**
+     * 钥匙ID
+     */
+    private Long keyId;
+    /**
+     * 取出硬件ID
+     */
+    private Long fromHardwareId;
+    /**
+     * 归还硬件ID
+     */
+    private Long toHardwareId;
+    /**
+     * 取出时间
+     */
+    private LocalDateTime collectTime;
+    /**
+     * 归还时间
+     */
+    private LocalDateTime giveBackTime;
+    /**
+     * 钥匙状态(0-待取出 1-已取出 2-已归还)
+     */
+    private String keyStatus;
+    /**
+     * 作业锁类型(0-上锁 1-解锁)
+     */
+    private Integer ticketType;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 64 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketlock/JobTicketLockDO.java

@@ -0,0 +1,64 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlock;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 作业票关联挂锁 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_ticket_lock")
+@KeySequence("isc_job_ticket_lock_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobTicketLockDO extends BaseDO {
+
+    /**
+     * 主键ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 作业票ID
+     */
+    private Long ticketId;
+    /**
+     * 挂锁ID
+     */
+    private Long lockId;
+    /**
+     * 隔离点ID
+     */
+    private Long isolationPointId;
+    /**
+     * 锁具状态(0-待取出 1-未上锁 2-已上锁 3-待解锁 4-已解锁 5-已归还)
+     */
+    private String lockStatus;
+    /**
+     * 取出硬件ID
+     */
+    private Long fromHardwareId;
+    /**
+     * 归还硬件ID
+     */
+    private Long toHardwareId;
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 80 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketlockset/JobTicketLocksetDO.java

@@ -0,0 +1,80 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlockset;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 作业票锁具 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_ticket_lockset")
+@KeySequence("isc_job_ticket_lockset_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobTicketLocksetDO extends BaseDO {
+
+    /**
+     * 主键ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 作业票ID
+     */
+    private Long jobTicketId;
+    /**
+     * 隔离点ID
+     */
+    private Long pointId;
+    /**
+     * 锁具ID
+     */
+    private Long locksetId;
+    /**
+     * 取出硬件ID
+     */
+    private Long fromHardwareId;
+    /**
+     * 归还硬件ID
+     */
+    private Long toHardwareId;
+    /**
+     * 所需锁具类型ID
+     */
+    private Long locksetTypeId;
+    /**
+     * 附件状态(0待取出(点击开始作业)1
+已取出(锁具出柜子)
+2待使用(上锁钥匙出机柜)3
+使用中(上锁钥匙还机柜)4
+待拆除(解锁钥匙出机柜)5
+待归还(解锁钥匙还机柜,但锁具为归还)6
+已归还(锁具还物资柜))
+     */
+    private String locksetStatus;
+    /**
+     * 取出时间
+     */
+    private LocalDateTime collectTime;
+    /**
+     * 归还时间
+     */
+    private LocalDateTime giveBackTime;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 90 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketpoints/JobTicketPointsDO.java

@@ -0,0 +1,90 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketpoints;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 作业票隔离点 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_ticket_points")
+@KeySequence("isc_job_ticket_points_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobTicketPointsDO extends BaseDO {
+
+    /**
+     * 主键ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 作业票ID
+     */
+    private Long ticketId;
+    /**
+     * 所属车间ID
+     */
+    private Long workshopId;
+    /**
+     * 所属区域ID
+     */
+    private Long workareaId;
+    /**
+     * 隔离点ID
+     */
+    private Long pointId;
+    /**
+     * 隔离点状态(0-未上锁 1-已上锁 2-已解锁)
+     */
+    private String pointStatus;
+    /**
+     * 挂锁ID
+     */
+    private Long lockId;
+    /**
+     * 上锁钥匙ID
+     */
+    private Long lockedByKeyId;
+    /**
+     * 解锁钥匙ID
+     */
+    private Long unlockedByKeyId;
+    /**
+     * 上锁时间
+     */
+    private LocalDateTime lockTime;
+    /**
+     * 解锁时间
+     */
+    private LocalDateTime unlockTime;
+    /**
+     * 前置隔离点ID
+     */
+    private Long prePointId;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * mars岗位ID
+     */
+    private Long workstationId;
+    /**
+     * 设备工艺ID
+     */
+    private Long machineryId;
+
+
+}

+ 56 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketstep/JobTicketStepDO.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketstep;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 作业票执行步骤 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_ticket_step")
+@KeySequence("isc_job_ticket_step_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobTicketStepDO extends BaseDO {
+
+    /**
+     * 执行步骤ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 所属作业票ID
+     */
+    private Long ticketId;
+    /**
+     * 执行步骤序号
+     */
+    private Integer stepIndex;
+    /**
+     * 步骤状态(0-未执行 1-已执行)
+     */
+    private String stepStatus;
+    /**
+     * 作业步骤详情
+     */
+    private String stepContent;
+    /**
+     * 作业步骤详情(安卓)
+     */
+    private String androidStepContent;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 60 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/jobticketuser/JobTicketUserDO.java

@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketuser;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 作业票用户 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_job_ticket_user")
+@KeySequence("isc_job_ticket_user_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class JobTicketUserDO extends BaseDO {
+
+    /**
+     * 主键ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 作业票ID
+     */
+    private Long ticketId;
+    /**
+     * 用户ID
+     */
+    private Long userId;
+    /**
+     * 用户名称
+     */
+    private String userName;
+    /**
+     * 用户类型(0内部 1外部)
+     */
+    private String userType;
+    /**
+     * 作业票角色(sys_role表中role_key)
+     */
+    private String userRole;
+    /**
+     * 作业状态(0未开始,1 取锁具, 2取钥匙, 3待上锁(待共锁),4 已上锁(已共锁),5 已解锁)
+     */
+    private String jobStatus;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 39 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticket/JobTicketMapper.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.jobticket;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket.JobTicketDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.*;
+
+/**
+ * 作业票 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface JobTicketMapper extends BaseMapperX<JobTicketDO> {
+
+    default PageResult<JobTicketDO> selectPage(JobTicketPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobTicketDO>()
+                .eqIfPresent(JobTicketDO::getTicketCode, reqVO.getTicketCode())
+                .likeIfPresent(JobTicketDO::getTicketName, reqVO.getTicketName())
+                .eqIfPresent(JobTicketDO::getWorkshopId, reqVO.getWorkshopId())
+                .eqIfPresent(JobTicketDO::getWorkareaId, reqVO.getWorkareaId())
+                .eqIfPresent(JobTicketDO::getWorkstationId, reqVO.getWorkstationId())
+                .eqIfPresent(JobTicketDO::getMachineryId, reqVO.getMachineryId())
+                .eqIfPresent(JobTicketDO::getSopId, reqVO.getSopId())
+                .eqIfPresent(JobTicketDO::getTicketType, reqVO.getTicketType())
+                .eqIfPresent(JobTicketDO::getTicketContent, reqVO.getTicketContent())
+                .eqIfPresent(JobTicketDO::getTicketStatus, reqVO.getTicketStatus())
+                .betweenIfPresent(JobTicketDO::getTicketStartTime, reqVO.getTicketStartTime())
+                .betweenIfPresent(JobTicketDO::getTicketEndTime, reqVO.getTicketEndTime())
+                .eqIfPresent(JobTicketDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(JobTicketDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobTicketDO::getId));
+    }
+
+}

+ 35 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketkey/JobTicketKeyMapper.java

@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.jobticketkey;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketkey.JobTicketKeyDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo.*;
+
+/**
+ * 作业票钥匙 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface JobTicketKeyMapper extends BaseMapperX<JobTicketKeyDO> {
+
+    default PageResult<JobTicketKeyDO> selectPage(JobTicketKeyPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobTicketKeyDO>()
+                .eqIfPresent(JobTicketKeyDO::getTicketId, reqVO.getTicketId())
+                .eqIfPresent(JobTicketKeyDO::getKeyId, reqVO.getKeyId())
+                .eqIfPresent(JobTicketKeyDO::getFromHardwareId, reqVO.getFromHardwareId())
+                .eqIfPresent(JobTicketKeyDO::getToHardwareId, reqVO.getToHardwareId())
+                .betweenIfPresent(JobTicketKeyDO::getCollectTime, reqVO.getCollectTime())
+                .betweenIfPresent(JobTicketKeyDO::getGiveBackTime, reqVO.getGiveBackTime())
+                .eqIfPresent(JobTicketKeyDO::getKeyStatus, reqVO.getKeyStatus())
+                .eqIfPresent(JobTicketKeyDO::getTicketType, reqVO.getTicketType())
+                .eqIfPresent(JobTicketKeyDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(JobTicketKeyDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobTicketKeyDO::getId));
+    }
+
+}

+ 34 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketlock/JobTicketLockMapper.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.jobticketlock;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlock.JobTicketLockDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo.*;
+
+/**
+ * 作业票关联挂锁 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface JobTicketLockMapper extends BaseMapperX<JobTicketLockDO> {
+
+    default PageResult<JobTicketLockDO> selectPage(JobTicketLockPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobTicketLockDO>()
+                .eqIfPresent(JobTicketLockDO::getTicketId, reqVO.getTicketId())
+                .eqIfPresent(JobTicketLockDO::getLockId, reqVO.getLockId())
+                .eqIfPresent(JobTicketLockDO::getIsolationPointId, reqVO.getIsolationPointId())
+                .eqIfPresent(JobTicketLockDO::getLockStatus, reqVO.getLockStatus())
+                .eqIfPresent(JobTicketLockDO::getFromHardwareId, reqVO.getFromHardwareId())
+                .eqIfPresent(JobTicketLockDO::getToHardwareId, reqVO.getToHardwareId())
+                .eqIfPresent(JobTicketLockDO::getDelFlag, reqVO.getDelFlag())
+                .eqIfPresent(JobTicketLockDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(JobTicketLockDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobTicketLockDO::getId));
+    }
+
+}

+ 36 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketlockset/JobTicketLocksetMapper.java

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.jobticketlockset;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlockset.JobTicketLocksetDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo.*;
+
+/**
+ * 作业票锁具 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface JobTicketLocksetMapper extends BaseMapperX<JobTicketLocksetDO> {
+
+    default PageResult<JobTicketLocksetDO> selectPage(JobTicketLocksetPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobTicketLocksetDO>()
+                .eqIfPresent(JobTicketLocksetDO::getJobTicketId, reqVO.getJobTicketId())
+                .eqIfPresent(JobTicketLocksetDO::getPointId, reqVO.getPointId())
+                .eqIfPresent(JobTicketLocksetDO::getLocksetId, reqVO.getLocksetId())
+                .eqIfPresent(JobTicketLocksetDO::getFromHardwareId, reqVO.getFromHardwareId())
+                .eqIfPresent(JobTicketLocksetDO::getToHardwareId, reqVO.getToHardwareId())
+                .eqIfPresent(JobTicketLocksetDO::getLocksetTypeId, reqVO.getLocksetTypeId())
+                .eqIfPresent(JobTicketLocksetDO::getLocksetStatus, reqVO.getLocksetStatus())
+                .betweenIfPresent(JobTicketLocksetDO::getCollectTime, reqVO.getCollectTime())
+                .betweenIfPresent(JobTicketLocksetDO::getGiveBackTime, reqVO.getGiveBackTime())
+                .eqIfPresent(JobTicketLocksetDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(JobTicketLocksetDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobTicketLocksetDO::getId));
+    }
+
+}

+ 40 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketpoints/JobTicketPointsMapper.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.jobticketpoints;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketpoints.JobTicketPointsDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo.*;
+
+/**
+ * 作业票隔离点 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface JobTicketPointsMapper extends BaseMapperX<JobTicketPointsDO> {
+
+    default PageResult<JobTicketPointsDO> selectPage(JobTicketPointsPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobTicketPointsDO>()
+                .eqIfPresent(JobTicketPointsDO::getTicketId, reqVO.getTicketId())
+                .eqIfPresent(JobTicketPointsDO::getWorkshopId, reqVO.getWorkshopId())
+                .eqIfPresent(JobTicketPointsDO::getWorkareaId, reqVO.getWorkareaId())
+                .eqIfPresent(JobTicketPointsDO::getPointId, reqVO.getPointId())
+                .eqIfPresent(JobTicketPointsDO::getPointStatus, reqVO.getPointStatus())
+                .eqIfPresent(JobTicketPointsDO::getLockId, reqVO.getLockId())
+                .eqIfPresent(JobTicketPointsDO::getLockedByKeyId, reqVO.getLockedByKeyId())
+                .eqIfPresent(JobTicketPointsDO::getUnlockedByKeyId, reqVO.getUnlockedByKeyId())
+                .betweenIfPresent(JobTicketPointsDO::getLockTime, reqVO.getLockTime())
+                .betweenIfPresent(JobTicketPointsDO::getUnlockTime, reqVO.getUnlockTime())
+                .eqIfPresent(JobTicketPointsDO::getPrePointId, reqVO.getPrePointId())
+                .eqIfPresent(JobTicketPointsDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(JobTicketPointsDO::getWorkstationId, reqVO.getWorkstationId())
+                .eqIfPresent(JobTicketPointsDO::getMachineryId, reqVO.getMachineryId())
+                .betweenIfPresent(JobTicketPointsDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobTicketPointsDO::getId));
+    }
+
+}

+ 32 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketstep/JobTicketStepMapper.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.jobticketstep;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketstep.JobTicketStepDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo.*;
+
+/**
+ * 作业票执行步骤 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface JobTicketStepMapper extends BaseMapperX<JobTicketStepDO> {
+
+    default PageResult<JobTicketStepDO> selectPage(JobTicketStepPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobTicketStepDO>()
+                .eqIfPresent(JobTicketStepDO::getTicketId, reqVO.getTicketId())
+                .eqIfPresent(JobTicketStepDO::getStepIndex, reqVO.getStepIndex())
+                .eqIfPresent(JobTicketStepDO::getStepStatus, reqVO.getStepStatus())
+                .eqIfPresent(JobTicketStepDO::getStepContent, reqVO.getStepContent())
+                .eqIfPresent(JobTicketStepDO::getAndroidStepContent, reqVO.getAndroidStepContent())
+                .eqIfPresent(JobTicketStepDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(JobTicketStepDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobTicketStepDO::getId));
+    }
+
+}

+ 33 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/jobticketuser/JobTicketUserMapper.java

@@ -0,0 +1,33 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.jobticketuser;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketuser.JobTicketUserDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo.*;
+
+/**
+ * 作业票用户 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface JobTicketUserMapper extends BaseMapperX<JobTicketUserDO> {
+
+    default PageResult<JobTicketUserDO> selectPage(JobTicketUserPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<JobTicketUserDO>()
+                .eqIfPresent(JobTicketUserDO::getTicketId, reqVO.getTicketId())
+                .eqIfPresent(JobTicketUserDO::getUserId, reqVO.getUserId())
+                .likeIfPresent(JobTicketUserDO::getUserName, reqVO.getUserName())
+                .eqIfPresent(JobTicketUserDO::getUserType, reqVO.getUserType())
+                .eqIfPresent(JobTicketUserDO::getUserRole, reqVO.getUserRole())
+                .eqIfPresent(JobTicketUserDO::getJobStatus, reqVO.getJobStatus())
+                .eqIfPresent(JobTicketUserDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(JobTicketUserDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(JobTicketUserDO::getId));
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticket/JobTicketService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.jobticket;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket.JobTicketDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 作业票 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface JobTicketService extends IService<JobTicketDO> {
+
+    /**
+     * 创建作业票
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobTicket(@Valid JobTicketSaveReqVO createReqVO);
+
+    /**
+     * 更新作业票
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobTicket(@Valid JobTicketSaveReqVO updateReqVO);
+
+    /**
+     * 删除作业票
+     *
+     * @param id 编号
+     */
+    void deleteJobTicket(Long id);
+
+    /**
+    * 批量删除作业票
+    *
+    * @param ids 编号
+    */
+    void deleteJobTicketListByIds(List<Long> ids);
+
+    /**
+     * 获得作业票
+     *
+     * @param id 编号
+     * @return 作业票
+     */
+    JobTicketDO getJobTicket(Long id);
+
+    /**
+     * 获得作业票分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业票分页
+     */
+    PageResult<JobTicketDO> getJobTicketPage(JobTicketPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticket/JobTicketServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.jobticket;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticket.vo.JobTicketSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticket.JobTicketDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.jobticket.JobTicketMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 作业票 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class JobTicketServiceImpl extends ServiceImpl<JobTicketMapper, JobTicketDO> implements JobTicketService {
+
+    @Resource
+    private JobTicketMapper jobTicketMapper;
+
+    @Override
+    public Long createJobTicket(JobTicketSaveReqVO createReqVO) {
+        // 插入
+        JobTicketDO jobTicket = BeanUtils.toBean(createReqVO, JobTicketDO.class);
+        jobTicketMapper.insert(jobTicket);
+
+        // 返回
+        return jobTicket.getId();
+    }
+
+    @Override
+    public void updateJobTicket(JobTicketSaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobTicketExists(updateReqVO.getId());
+        // 更新
+        JobTicketDO updateObj = BeanUtils.toBean(updateReqVO, JobTicketDO.class);
+        jobTicketMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobTicket(Long id) {
+        // 校验存在
+        validateJobTicketExists(id);
+        // 删除
+        jobTicketMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteJobTicketListByIds(List<Long> ids) {
+        // 校验存在
+        validateJobTicketExists(ids);
+        // 删除
+        jobTicketMapper.deleteByIds(ids);
+        }
+
+    private void validateJobTicketExists(List<Long> ids) {
+        List<JobTicketDO> list = jobTicketMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(JOB_TICKET_NOT_EXISTS);
+        }
+    }
+
+    private void validateJobTicketExists(Long id) {
+        if (jobTicketMapper.selectById(id) == null) {
+            /// throw exception(JOB_TICKET_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobTicketDO getJobTicket(Long id) {
+        return jobTicketMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobTicketDO> getJobTicketPage(JobTicketPageReqVO pageReqVO) {
+        return jobTicketMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketkey/JobTicketKeyService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketkey;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketkey.JobTicketKeyDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 作业票钥匙 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface JobTicketKeyService extends IService<JobTicketKeyDO> {
+
+    /**
+     * 创建作业票钥匙
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobTicketKey(@Valid JobTicketKeySaveReqVO createReqVO);
+
+    /**
+     * 更新作业票钥匙
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobTicketKey(@Valid JobTicketKeySaveReqVO updateReqVO);
+
+    /**
+     * 删除作业票钥匙
+     *
+     * @param id 编号
+     */
+    void deleteJobTicketKey(Long id);
+
+    /**
+    * 批量删除作业票钥匙
+    *
+    * @param ids 编号
+    */
+    void deleteJobTicketKeyListByIds(List<Long> ids);
+
+    /**
+     * 获得作业票钥匙
+     *
+     * @param id 编号
+     * @return 作业票钥匙
+     */
+    JobTicketKeyDO getJobTicketKey(Long id);
+
+    /**
+     * 获得作业票钥匙分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业票钥匙分页
+     */
+    PageResult<JobTicketKeyDO> getJobTicketKeyPage(JobTicketKeyPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketkey/JobTicketKeyServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketkey;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo.JobTicketKeyPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketkey.vo.JobTicketKeySaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketkey.JobTicketKeyDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.jobticketkey.JobTicketKeyMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 作业票钥匙 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class JobTicketKeyServiceImpl extends ServiceImpl<JobTicketKeyMapper, JobTicketKeyDO> implements JobTicketKeyService {
+
+    @Resource
+    private JobTicketKeyMapper jobTicketKeyMapper;
+
+    @Override
+    public Long createJobTicketKey(JobTicketKeySaveReqVO createReqVO) {
+        // 插入
+        JobTicketKeyDO jobTicketKey = BeanUtils.toBean(createReqVO, JobTicketKeyDO.class);
+        jobTicketKeyMapper.insert(jobTicketKey);
+
+        // 返回
+        return jobTicketKey.getId();
+    }
+
+    @Override
+    public void updateJobTicketKey(JobTicketKeySaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobTicketKeyExists(updateReqVO.getId());
+        // 更新
+        JobTicketKeyDO updateObj = BeanUtils.toBean(updateReqVO, JobTicketKeyDO.class);
+        jobTicketKeyMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobTicketKey(Long id) {
+        // 校验存在
+        validateJobTicketKeyExists(id);
+        // 删除
+        jobTicketKeyMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteJobTicketKeyListByIds(List<Long> ids) {
+        // 校验存在
+        validateJobTicketKeyExists(ids);
+        // 删除
+        jobTicketKeyMapper.deleteByIds(ids);
+        }
+
+    private void validateJobTicketKeyExists(List<Long> ids) {
+        List<JobTicketKeyDO> list = jobTicketKeyMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(JOB_TICKET_KEY_NOT_EXISTS);
+        }
+    }
+
+    private void validateJobTicketKeyExists(Long id) {
+        if (jobTicketKeyMapper.selectById(id) == null) {
+            /// throw exception(JOB_TICKET_KEY_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobTicketKeyDO getJobTicketKey(Long id) {
+        return jobTicketKeyMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobTicketKeyDO> getJobTicketKeyPage(JobTicketKeyPageReqVO pageReqVO) {
+        return jobTicketKeyMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlock/JobTicketLockService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketlock;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlock.JobTicketLockDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 作业票关联挂锁 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface JobTicketLockService extends IService<JobTicketLockDO> {
+
+    /**
+     * 创建作业票关联挂锁
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobTicketLock(@Valid JobTicketLockSaveReqVO createReqVO);
+
+    /**
+     * 更新作业票关联挂锁
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobTicketLock(@Valid JobTicketLockSaveReqVO updateReqVO);
+
+    /**
+     * 删除作业票关联挂锁
+     *
+     * @param id 编号
+     */
+    void deleteJobTicketLock(Long id);
+
+    /**
+    * 批量删除作业票关联挂锁
+    *
+    * @param ids 编号
+    */
+    void deleteJobTicketLockListByIds(List<Long> ids);
+
+    /**
+     * 获得作业票关联挂锁
+     *
+     * @param id 编号
+     * @return 作业票关联挂锁
+     */
+    JobTicketLockDO getJobTicketLock(Long id);
+
+    /**
+     * 获得作业票关联挂锁分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业票关联挂锁分页
+     */
+    PageResult<JobTicketLockDO> getJobTicketLockPage(JobTicketLockPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlock/JobTicketLockServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketlock;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo.JobTicketLockPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlock.vo.JobTicketLockSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlock.JobTicketLockDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.jobticketlock.JobTicketLockMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 作业票关联挂锁 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class JobTicketLockServiceImpl extends ServiceImpl<JobTicketLockMapper, JobTicketLockDO> implements JobTicketLockService {
+
+    @Resource
+    private JobTicketLockMapper jobTicketLockMapper;
+
+    @Override
+    public Long createJobTicketLock(JobTicketLockSaveReqVO createReqVO) {
+        // 插入
+        JobTicketLockDO jobTicketLock = BeanUtils.toBean(createReqVO, JobTicketLockDO.class);
+        jobTicketLockMapper.insert(jobTicketLock);
+
+        // 返回
+        return jobTicketLock.getId();
+    }
+
+    @Override
+    public void updateJobTicketLock(JobTicketLockSaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobTicketLockExists(updateReqVO.getId());
+        // 更新
+        JobTicketLockDO updateObj = BeanUtils.toBean(updateReqVO, JobTicketLockDO.class);
+        jobTicketLockMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobTicketLock(Long id) {
+        // 校验存在
+        validateJobTicketLockExists(id);
+        // 删除
+        jobTicketLockMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteJobTicketLockListByIds(List<Long> ids) {
+        // 校验存在
+        validateJobTicketLockExists(ids);
+        // 删除
+        jobTicketLockMapper.deleteByIds(ids);
+        }
+
+    private void validateJobTicketLockExists(List<Long> ids) {
+        List<JobTicketLockDO> list = jobTicketLockMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(JOB_TICKET_LOCK_NOT_EXISTS);
+        }
+    }
+
+    private void validateJobTicketLockExists(Long id) {
+        if (jobTicketLockMapper.selectById(id) == null) {
+            /// throw exception(JOB_TICKET_LOCK_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobTicketLockDO getJobTicketLock(Long id) {
+        return jobTicketLockMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobTicketLockDO> getJobTicketLockPage(JobTicketLockPageReqVO pageReqVO) {
+        return jobTicketLockMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlockset/JobTicketLocksetService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketlockset;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlockset.JobTicketLocksetDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 作业票锁具 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface JobTicketLocksetService extends IService<JobTicketLocksetDO> {
+
+    /**
+     * 创建作业票锁具
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobTicketLockset(@Valid JobTicketLocksetSaveReqVO createReqVO);
+
+    /**
+     * 更新作业票锁具
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobTicketLockset(@Valid JobTicketLocksetSaveReqVO updateReqVO);
+
+    /**
+     * 删除作业票锁具
+     *
+     * @param id 编号
+     */
+    void deleteJobTicketLockset(Long id);
+
+    /**
+    * 批量删除作业票锁具
+    *
+    * @param ids 编号
+    */
+    void deleteJobTicketLocksetListByIds(List<Long> ids);
+
+    /**
+     * 获得作业票锁具
+     *
+     * @param id 编号
+     * @return 作业票锁具
+     */
+    JobTicketLocksetDO getJobTicketLockset(Long id);
+
+    /**
+     * 获得作业票锁具分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业票锁具分页
+     */
+    PageResult<JobTicketLocksetDO> getJobTicketLocksetPage(JobTicketLocksetPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketlockset/JobTicketLocksetServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketlockset;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo.JobTicketLocksetPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketlockset.vo.JobTicketLocksetSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketlockset.JobTicketLocksetDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.jobticketlockset.JobTicketLocksetMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 作业票锁具 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class JobTicketLocksetServiceImpl extends ServiceImpl<JobTicketLocksetMapper, JobTicketLocksetDO> implements JobTicketLocksetService {
+
+    @Resource
+    private JobTicketLocksetMapper jobTicketLocksetMapper;
+
+    @Override
+    public Long createJobTicketLockset(JobTicketLocksetSaveReqVO createReqVO) {
+        // 插入
+        JobTicketLocksetDO jobTicketLockset = BeanUtils.toBean(createReqVO, JobTicketLocksetDO.class);
+        jobTicketLocksetMapper.insert(jobTicketLockset);
+
+        // 返回
+        return jobTicketLockset.getId();
+    }
+
+    @Override
+    public void updateJobTicketLockset(JobTicketLocksetSaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobTicketLocksetExists(updateReqVO.getId());
+        // 更新
+        JobTicketLocksetDO updateObj = BeanUtils.toBean(updateReqVO, JobTicketLocksetDO.class);
+        jobTicketLocksetMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobTicketLockset(Long id) {
+        // 校验存在
+        validateJobTicketLocksetExists(id);
+        // 删除
+        jobTicketLocksetMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteJobTicketLocksetListByIds(List<Long> ids) {
+        // 校验存在
+        validateJobTicketLocksetExists(ids);
+        // 删除
+        jobTicketLocksetMapper.deleteByIds(ids);
+        }
+
+    private void validateJobTicketLocksetExists(List<Long> ids) {
+        List<JobTicketLocksetDO> list = jobTicketLocksetMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(JOB_TICKET_LOCKSET_NOT_EXISTS);
+        }
+    }
+
+    private void validateJobTicketLocksetExists(Long id) {
+        if (jobTicketLocksetMapper.selectById(id) == null) {
+            /// throw exception(JOB_TICKET_LOCKSET_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobTicketLocksetDO getJobTicketLockset(Long id) {
+        return jobTicketLocksetMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobTicketLocksetDO> getJobTicketLocksetPage(JobTicketLocksetPageReqVO pageReqVO) {
+        return jobTicketLocksetMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketpoints/JobTicketPointsService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketpoints;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketpoints.JobTicketPointsDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 作业票隔离点 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface JobTicketPointsService extends IService<JobTicketPointsDO> {
+
+    /**
+     * 创建作业票隔离点
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobTicketPoints(@Valid JobTicketPointsSaveReqVO createReqVO);
+
+    /**
+     * 更新作业票隔离点
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobTicketPoints(@Valid JobTicketPointsSaveReqVO updateReqVO);
+
+    /**
+     * 删除作业票隔离点
+     *
+     * @param id 编号
+     */
+    void deleteJobTicketPoints(Long id);
+
+    /**
+    * 批量删除作业票隔离点
+    *
+    * @param ids 编号
+    */
+    void deleteJobTicketPointsListByIds(List<Long> ids);
+
+    /**
+     * 获得作业票隔离点
+     *
+     * @param id 编号
+     * @return 作业票隔离点
+     */
+    JobTicketPointsDO getJobTicketPoints(Long id);
+
+    /**
+     * 获得作业票隔离点分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业票隔离点分页
+     */
+    PageResult<JobTicketPointsDO> getJobTicketPointsPage(JobTicketPointsPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketpoints/JobTicketPointsServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketpoints;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo.JobTicketPointsPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketpoints.vo.JobTicketPointsSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketpoints.JobTicketPointsDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.jobticketpoints.JobTicketPointsMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 作业票隔离点 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class JobTicketPointsServiceImpl extends ServiceImpl<JobTicketPointsMapper, JobTicketPointsDO> implements JobTicketPointsService {
+
+    @Resource
+    private JobTicketPointsMapper jobTicketPointsMapper;
+
+    @Override
+    public Long createJobTicketPoints(JobTicketPointsSaveReqVO createReqVO) {
+        // 插入
+        JobTicketPointsDO jobTicketPoints = BeanUtils.toBean(createReqVO, JobTicketPointsDO.class);
+        jobTicketPointsMapper.insert(jobTicketPoints);
+
+        // 返回
+        return jobTicketPoints.getId();
+    }
+
+    @Override
+    public void updateJobTicketPoints(JobTicketPointsSaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobTicketPointsExists(updateReqVO.getId());
+        // 更新
+        JobTicketPointsDO updateObj = BeanUtils.toBean(updateReqVO, JobTicketPointsDO.class);
+        jobTicketPointsMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobTicketPoints(Long id) {
+        // 校验存在
+        validateJobTicketPointsExists(id);
+        // 删除
+        jobTicketPointsMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteJobTicketPointsListByIds(List<Long> ids) {
+        // 校验存在
+        validateJobTicketPointsExists(ids);
+        // 删除
+        jobTicketPointsMapper.deleteByIds(ids);
+        }
+
+    private void validateJobTicketPointsExists(List<Long> ids) {
+        List<JobTicketPointsDO> list = jobTicketPointsMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(JOB_TICKET_POINTS_NOT_EXISTS);
+        }
+    }
+
+    private void validateJobTicketPointsExists(Long id) {
+        if (jobTicketPointsMapper.selectById(id) == null) {
+            /// throw exception(JOB_TICKET_POINTS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobTicketPointsDO getJobTicketPoints(Long id) {
+        return jobTicketPointsMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobTicketPointsDO> getJobTicketPointsPage(JobTicketPointsPageReqVO pageReqVO) {
+        return jobTicketPointsMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketstep/JobTicketStepService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketstep;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketstep.JobTicketStepDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 作业票执行步骤 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface JobTicketStepService extends IService<JobTicketStepDO> {
+
+    /**
+     * 创建作业票执行步骤
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobTicketStep(@Valid JobTicketStepSaveReqVO createReqVO);
+
+    /**
+     * 更新作业票执行步骤
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobTicketStep(@Valid JobTicketStepSaveReqVO updateReqVO);
+
+    /**
+     * 删除作业票执行步骤
+     *
+     * @param id 编号
+     */
+    void deleteJobTicketStep(Long id);
+
+    /**
+    * 批量删除作业票执行步骤
+    *
+    * @param ids 编号
+    */
+    void deleteJobTicketStepListByIds(List<Long> ids);
+
+    /**
+     * 获得作业票执行步骤
+     *
+     * @param id 编号
+     * @return 作业票执行步骤
+     */
+    JobTicketStepDO getJobTicketStep(Long id);
+
+    /**
+     * 获得作业票执行步骤分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业票执行步骤分页
+     */
+    PageResult<JobTicketStepDO> getJobTicketStepPage(JobTicketStepPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketstep/JobTicketStepServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketstep;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo.JobTicketStepPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketstep.vo.JobTicketStepSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketstep.JobTicketStepDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.jobticketstep.JobTicketStepMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 作业票执行步骤 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class JobTicketStepServiceImpl extends ServiceImpl<JobTicketStepMapper, JobTicketStepDO> implements JobTicketStepService {
+
+    @Resource
+    private JobTicketStepMapper jobTicketStepMapper;
+
+    @Override
+    public Long createJobTicketStep(JobTicketStepSaveReqVO createReqVO) {
+        // 插入
+        JobTicketStepDO jobTicketStep = BeanUtils.toBean(createReqVO, JobTicketStepDO.class);
+        jobTicketStepMapper.insert(jobTicketStep);
+
+        // 返回
+        return jobTicketStep.getId();
+    }
+
+    @Override
+    public void updateJobTicketStep(JobTicketStepSaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobTicketStepExists(updateReqVO.getId());
+        // 更新
+        JobTicketStepDO updateObj = BeanUtils.toBean(updateReqVO, JobTicketStepDO.class);
+        jobTicketStepMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobTicketStep(Long id) {
+        // 校验存在
+        validateJobTicketStepExists(id);
+        // 删除
+        jobTicketStepMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteJobTicketStepListByIds(List<Long> ids) {
+        // 校验存在
+        validateJobTicketStepExists(ids);
+        // 删除
+        jobTicketStepMapper.deleteByIds(ids);
+        }
+
+    private void validateJobTicketStepExists(List<Long> ids) {
+        List<JobTicketStepDO> list = jobTicketStepMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(JOB_TICKET_STEP_NOT_EXISTS);
+        }
+    }
+
+    private void validateJobTicketStepExists(Long id) {
+        if (jobTicketStepMapper.selectById(id) == null) {
+            /// throw exception(JOB_TICKET_STEP_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobTicketStepDO getJobTicketStep(Long id) {
+        return jobTicketStepMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobTicketStepDO> getJobTicketStepPage(JobTicketStepPageReqVO pageReqVO) {
+        return jobTicketStepMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketuser/JobTicketUserService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketuser;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketuser.JobTicketUserDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 作业票用户 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface JobTicketUserService extends IService<JobTicketUserDO> {
+
+    /**
+     * 创建作业票用户
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createJobTicketUser(@Valid JobTicketUserSaveReqVO createReqVO);
+
+    /**
+     * 更新作业票用户
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateJobTicketUser(@Valid JobTicketUserSaveReqVO updateReqVO);
+
+    /**
+     * 删除作业票用户
+     *
+     * @param id 编号
+     */
+    void deleteJobTicketUser(Long id);
+
+    /**
+    * 批量删除作业票用户
+    *
+    * @param ids 编号
+    */
+    void deleteJobTicketUserListByIds(List<Long> ids);
+
+    /**
+     * 获得作业票用户
+     *
+     * @param id 编号
+     * @return 作业票用户
+     */
+    JobTicketUserDO getJobTicketUser(Long id);
+
+    /**
+     * 获得作业票用户分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 作业票用户分页
+     */
+    PageResult<JobTicketUserDO> getJobTicketUserPage(JobTicketUserPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/jobticketuser/JobTicketUserServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.jobticketuser;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo.JobTicketUserPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.jobticketuser.vo.JobTicketUserSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.jobticketuser.JobTicketUserDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.jobticketuser.JobTicketUserMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import jakarta.annotation.Resource;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.List;
+
+/**
+ * 作业票用户 Service 实现类
+ *
+ * @author 芋道源码
+ */
+@Service
+@Validated
+public class JobTicketUserServiceImpl extends ServiceImpl<JobTicketUserMapper, JobTicketUserDO> implements JobTicketUserService {
+
+    @Resource
+    private JobTicketUserMapper jobTicketUserMapper;
+
+    @Override
+    public Long createJobTicketUser(JobTicketUserSaveReqVO createReqVO) {
+        // 插入
+        JobTicketUserDO jobTicketUser = BeanUtils.toBean(createReqVO, JobTicketUserDO.class);
+        jobTicketUserMapper.insert(jobTicketUser);
+
+        // 返回
+        return jobTicketUser.getId();
+    }
+
+    @Override
+    public void updateJobTicketUser(JobTicketUserSaveReqVO updateReqVO) {
+        // 校验存在
+        validateJobTicketUserExists(updateReqVO.getId());
+        // 更新
+        JobTicketUserDO updateObj = BeanUtils.toBean(updateReqVO, JobTicketUserDO.class);
+        jobTicketUserMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteJobTicketUser(Long id) {
+        // 校验存在
+        validateJobTicketUserExists(id);
+        // 删除
+        jobTicketUserMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteJobTicketUserListByIds(List<Long> ids) {
+        // 校验存在
+        validateJobTicketUserExists(ids);
+        // 删除
+        jobTicketUserMapper.deleteByIds(ids);
+        }
+
+    private void validateJobTicketUserExists(List<Long> ids) {
+        List<JobTicketUserDO> list = jobTicketUserMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(JOB_TICKET_USER_NOT_EXISTS);
+        }
+    }
+
+    private void validateJobTicketUserExists(Long id) {
+        if (jobTicketUserMapper.selectById(id) == null) {
+            /// throw exception(JOB_TICKET_USER_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public JobTicketUserDO getJobTicketUser(Long id) {
+        return jobTicketUserMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<JobTicketUserDO> getJobTicketUserPage(JobTicketUserPageReqVO pageReqVO) {
+        return jobTicketUserMapper.selectPage(pageReqVO);
+    }
+
+}

+ 12 - 0
yudao-module-iscs/src/main/java/resources/mapper/JobTicketKeyMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.jobticketkey.JobTicketKeyMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

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

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.jobticketlock.JobTicketLockMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-iscs/src/main/java/resources/mapper/JobTicketLocksetMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.jobticketlockset.JobTicketLocksetMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-iscs/src/main/java/resources/mapper/JobTicketMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.jobticket.JobTicketMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-iscs/src/main/java/resources/mapper/JobTicketPointsMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.jobticketpoints.JobTicketPointsMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-iscs/src/main/java/resources/mapper/JobTicketStepMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.jobticketstep.JobTicketStepMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-iscs/src/main/java/resources/mapper/JobTicketUserMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.iscs.dal.mysql.jobticketuser.JobTicketUserMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>