Sfoglia il codice sorgente

初始化物资检查计划关联物资柜表、物资借出表、物资使用说明表、物资检查记录表、物资检查计划表、物资更换记录、物资柜表、物资表

车车 11 mesi fa
parent
commit
8135867f93
72 ha cambiato i file con 4179 aggiunte e 0 eliminazioni
  1. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materials/MaterialsController.java
  2. 74 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materials/vo/MaterialsPageReqVO.java
  3. 92 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materials/vo/MaterialsRespVO.java
  4. 67 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materials/vo/MaterialsSaveReqVO.java
  5. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscabinet/MaterialsCabinetController.java
  6. 47 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscabinet/vo/MaterialsCabinetPageReqVO.java
  7. 59 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscabinet/vo/MaterialsCabinetRespVO.java
  8. 44 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscabinet/vo/MaterialsCabinetSaveReqVO.java
  9. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/MaterialsChangeRecordController.java
  10. 51 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/vo/MaterialsChangeRecordPageReqVO.java
  11. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/vo/MaterialsChangeRecordRespVO.java
  12. 47 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialschangerecord/vo/MaterialsChangeRecordSaveReqVO.java
  13. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckplan/MaterialsCheckPlanController.java
  14. 37 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckplan/vo/MaterialsCheckPlanPageReqVO.java
  15. 44 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckplan/vo/MaterialsCheckPlanRespVO.java
  16. 32 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckplan/vo/MaterialsCheckPlanSaveReqVO.java
  17. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/MaterialsCheckRecordController.java
  18. 51 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/vo/MaterialsCheckRecordPageReqVO.java
  19. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/vo/MaterialsCheckRecordRespVO.java
  20. 49 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/vo/MaterialsCheckRecordSaveReqVO.java
  21. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsinstructions/MaterialsInstructionsController.java
  22. 47 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsinstructions/vo/MaterialsInstructionsPageReqVO.java
  23. 59 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsinstructions/vo/MaterialsInstructionsRespVO.java
  24. 42 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsinstructions/vo/MaterialsInstructionsSaveReqVO.java
  25. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsloan/MaterialsLoanController.java
  26. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsloan/vo/MaterialsLoanPageReqVO.java
  27. 75 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsloan/vo/MaterialsLoanRespVO.java
  28. 60 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsloan/vo/MaterialsLoanSaveReqVO.java
  29. 95 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsplancabinet/MaterialsPlanCabinetController.java
  30. 30 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsplancabinet/vo/MaterialsPlanCabinetPageReqVO.java
  31. 39 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsplancabinet/vo/MaterialsPlanCabinetRespVO.java
  32. 29 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsplancabinet/vo/MaterialsPlanCabinetSaveReqVO.java
  33. 102 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materials/MaterialsDO.java
  34. 68 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscabinet/MaterialsCabinetDO.java
  35. 73 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialschangerecord/MaterialsChangeRecordDO.java
  36. 53 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscheckplan/MaterialsCheckPlanDO.java
  37. 73 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscheckrecord/MaterialsCheckRecordDO.java
  38. 68 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialsinstructions/MaterialsInstructionsDO.java
  39. 89 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialsloan/MaterialsLoanDO.java
  40. 49 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialsplancabinet/MaterialsPlanCabinetDO.java
  41. 43 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materials/MaterialsMapper.java
  42. 35 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialscabinet/MaterialsCabinetMapper.java
  43. 36 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialschangerecord/MaterialsChangeRecordMapper.java
  44. 31 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialscheckplan/MaterialsCheckPlanMapper.java
  45. 36 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialscheckrecord/MaterialsCheckRecordMapper.java
  46. 35 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialsinstructions/MaterialsInstructionsMapper.java
  47. 39 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialsloan/MaterialsLoanMapper.java
  48. 29 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialsplancabinet/MaterialsPlanCabinetMapper.java
  49. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materials/MaterialsService.java
  50. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materials/MaterialsServiceImpl.java
  51. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscabinet/MaterialsCabinetService.java
  52. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscabinet/MaterialsCabinetServiceImpl.java
  53. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialschangerecord/MaterialsChangeRecordService.java
  54. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialschangerecord/MaterialsChangeRecordServiceImpl.java
  55. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckplan/MaterialsCheckPlanService.java
  56. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckplan/MaterialsCheckPlanServiceImpl.java
  57. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordService.java
  58. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordServiceImpl.java
  59. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsinstructions/MaterialsInstructionsService.java
  60. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsinstructions/MaterialsInstructionsServiceImpl.java
  61. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsloan/MaterialsLoanService.java
  62. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsloan/MaterialsLoanServiceImpl.java
  63. 63 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsplancabinet/MaterialsPlanCabinetService.java
  64. 87 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsplancabinet/MaterialsPlanCabinetServiceImpl.java
  65. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsCabinetMapper.xml
  66. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsChangeRecordMapper.xml
  67. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsCheckPlanMapper.xml
  68. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsCheckRecordMapper.xml
  69. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsInstructionsMapper.xml
  70. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsLoanMapper.xml
  71. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsMapper.xml
  72. 12 0
      yudao-module-iscs/src/main/java/resources/mapper/MaterialsPlanCabinetMapper.xml

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materials;
+
+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.materials.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materials.MaterialsDO;
+import cn.iocoder.yudao.module.iscs.service.materials.MaterialsService;
+
+@Tag(name = "管理后台 - 物资")
+@RestController
+@RequestMapping("/iscs/materials")
+@Validated
+public class MaterialsController {
+
+    @Resource
+    private MaterialsService materialsService;
+
+    @PostMapping("/insertMaterials")
+    @Operation(summary = "创建物资")
+    @PreAuthorize("@ss.hasPermission('iscs:materials:create')")
+    public CommonResult<Long> insertMaterials(@Valid @RequestBody MaterialsSaveReqVO createReqVO) {
+        return success(materialsService.createMaterials(createReqVO));
+    }
+
+    @PutMapping("/updateMaterials")
+    @Operation(summary = "更新物资")
+    @PreAuthorize("@ss.hasPermission('iscs:materials:update')")
+    public CommonResult<Boolean> updateMaterials(@Valid @RequestBody MaterialsSaveReqVO updateReqVO) {
+        materialsService.updateMaterials(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资")
+                @PreAuthorize("@ss.hasPermission('iscs:materials:delete')")
+    public CommonResult<Boolean> deleteMaterialsList(@RequestParam("ids") List<Long> ids) {
+        materialsService.deleteMaterialsListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsById")
+    @Operation(summary = "获得物资")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials:query')")
+    public CommonResult<MaterialsRespVO> selectMaterialsById(@RequestParam("id") Long id) {
+        MaterialsDO materials = materialsService.getMaterials(id);
+        return success(BeanUtils.toBean(materials, MaterialsRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsPage")
+    @Operation(summary = "获得物资分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials:query')")
+    public CommonResult<PageResult<MaterialsRespVO>> getMaterialsPage(@Valid MaterialsPageReqVO pageReqVO) {
+        PageResult<MaterialsDO> pageResult = materialsService.getMaterialsPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsExcel")
+    @Operation(summary = "导出物资 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsExcel(@Valid MaterialsPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsDO> list = materialsService.getMaterialsPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资.xls", "数据", MaterialsRespVO.class,
+                        BeanUtils.toBean(list, MaterialsRespVO.class));
+    }
+
+}

+ 74 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materials/vo/MaterialsPageReqVO.java

@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materials.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.LocalDate;
+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 MaterialsPageReqVO extends PageParam {
+
+    @Schema(description = "物资编号")
+    private String materialsCode;
+
+    @Schema(description = "物资名称", example = "王五")
+    private String materialsName;
+
+    @Schema(description = "物资类型ID", example = "31062")
+    private Long materialsTypeId;
+
+    @Schema(description = "区域ID", example = "25504")
+    private Long workareaId;
+
+    @Schema(description = "物资柜ID", example = "13314")
+    private Long materialsCabinetId;
+
+    @Schema(description = "可用寿命")
+    private String serviceLife;
+
+    @Schema(description = "剩余寿命")
+    private String availableLife;
+
+    @Schema(description = "可用次数")
+    private Integer serviceTimes;
+
+    @Schema(description = "剩余次数")
+    private Integer availableTimes;
+
+    @Schema(description = "有效期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] expirationDate;
+
+    @Schema(description = "物资RFID", example = "8812")
+    private String materialsRfid;
+
+    @Schema(description = "供应商")
+    private String supplier;
+
+    @Schema(description = "启用时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] startTime;
+
+    @Schema(description = "属性数组,JSON 格式 [{propertId: , valueId: }, {propertId: , valueId: }]")
+    private String properties;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "状态(0-借出 1-柜中)")
+    private String loanState;
+
+    @Schema(description = "物资状态(字典material_info_status)", example = "2")
+    private String status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 92 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materials/vo/MaterialsRespVO.java

@@ -0,0 +1,92 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materials.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.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 物资 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MaterialsRespVO {
+
+    @Schema(description = "物资ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9413")
+    @ExcelProperty("物资ID")
+    private Long id;
+
+    @Schema(description = "物资编号")
+    @ExcelProperty("物资编号")
+    private String materialsCode;
+
+    @Schema(description = "物资名称", example = "王五")
+    @ExcelProperty("物资名称")
+    private String materialsName;
+
+    @Schema(description = "物资类型ID", example = "31062")
+    @ExcelProperty("物资类型ID")
+    private Long materialsTypeId;
+
+    @Schema(description = "区域ID", example = "25504")
+    @ExcelProperty("区域ID")
+    private Long workareaId;
+
+    @Schema(description = "物资柜ID", example = "13314")
+    @ExcelProperty("物资柜ID")
+    private Long materialsCabinetId;
+
+    @Schema(description = "可用寿命")
+    @ExcelProperty("可用寿命")
+    private String serviceLife;
+
+    @Schema(description = "剩余寿命")
+    @ExcelProperty("剩余寿命")
+    private String availableLife;
+
+    @Schema(description = "可用次数")
+    @ExcelProperty("可用次数")
+    private Integer serviceTimes;
+
+    @Schema(description = "剩余次数")
+    @ExcelProperty("剩余次数")
+    private Integer availableTimes;
+
+    @Schema(description = "有效期")
+    @ExcelProperty("有效期")
+    private LocalDate expirationDate;
+
+    @Schema(description = "物资RFID", example = "8812")
+    @ExcelProperty("物资RFID")
+    private String materialsRfid;
+
+    @Schema(description = "供应商")
+    @ExcelProperty("供应商")
+    private String supplier;
+
+    @Schema(description = "启用时间")
+    @ExcelProperty("启用时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "属性数组,JSON 格式 [{propertId: , valueId: }, {propertId: , valueId: }]")
+    @ExcelProperty("属性数组,JSON 格式 [{propertId: , valueId: }, {propertId: , valueId: }]")
+    private String properties;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "状态(0-借出 1-柜中)")
+    @ExcelProperty("状态(0-借出 1-柜中)")
+    private String loanState;
+
+    @Schema(description = "物资状态(字典material_info_status)", example = "2")
+    @ExcelProperty("物资状态(字典material_info_status)")
+    private String status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 67 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materials/vo/MaterialsSaveReqVO.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materials.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 物资新增/修改 Request VO")
+@Data
+public class MaterialsSaveReqVO {
+
+    @Schema(description = "物资ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "9413")
+    private Long id;
+
+    @Schema(description = "物资编号")
+    private String materialsCode;
+
+    @Schema(description = "物资名称", example = "王五")
+    private String materialsName;
+
+    @Schema(description = "物资类型ID", example = "31062")
+    private Long materialsTypeId;
+
+    @Schema(description = "区域ID", example = "25504")
+    private Long workareaId;
+
+    @Schema(description = "物资柜ID", example = "13314")
+    private Long materialsCabinetId;
+
+    @Schema(description = "可用寿命")
+    private String serviceLife;
+
+    @Schema(description = "剩余寿命")
+    private String availableLife;
+
+    @Schema(description = "可用次数")
+    private Integer serviceTimes;
+
+    @Schema(description = "剩余次数")
+    private Integer availableTimes;
+
+    @Schema(description = "有效期")
+    private LocalDate expirationDate;
+
+    @Schema(description = "物资RFID", example = "8812")
+    private String materialsRfid;
+
+    @Schema(description = "供应商")
+    private String supplier;
+
+    @Schema(description = "启用时间")
+    private LocalDateTime startTime;
+
+    @Schema(description = "属性数组,JSON 格式 [{propertId: , valueId: }, {propertId: , valueId: }]")
+    private String properties;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "状态(0-借出 1-柜中)")
+    private String loanState;
+
+    @Schema(description = "物资状态(字典material_info_status)", example = "2")
+    private String status;
+
+}

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet;
+
+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.materialscabinet.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscabinet.MaterialsCabinetDO;
+import cn.iocoder.yudao.module.iscs.service.materialscabinet.MaterialsCabinetService;
+
+@Tag(name = "管理后台 - 物资柜")
+@RestController
+@RequestMapping("/iscs/materials-cabinet")
+@Validated
+public class MaterialsCabinetController {
+
+    @Resource
+    private MaterialsCabinetService materialsCabinetService;
+
+    @PostMapping("/insertMaterialsCabinet")
+    @Operation(summary = "创建物资柜")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-cabinet:create')")
+    public CommonResult<Long> insertMaterialsCabinet(@Valid @RequestBody MaterialsCabinetSaveReqVO createReqVO) {
+        return success(materialsCabinetService.createMaterialsCabinet(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsCabinet")
+    @Operation(summary = "更新物资柜")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-cabinet:update')")
+    public CommonResult<Boolean> updateMaterialsCabinet(@Valid @RequestBody MaterialsCabinetSaveReqVO updateReqVO) {
+        materialsCabinetService.updateMaterialsCabinet(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsCabinetList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资柜")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-cabinet:delete')")
+    public CommonResult<Boolean> deleteMaterialsCabinetList(@RequestParam("ids") List<Long> ids) {
+        materialsCabinetService.deleteMaterialsCabinetListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsCabinetById")
+    @Operation(summary = "获得物资柜")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-cabinet:query')")
+    public CommonResult<MaterialsCabinetRespVO> selectMaterialsCabinetById(@RequestParam("id") Long id) {
+        MaterialsCabinetDO materialsCabinet = materialsCabinetService.getMaterialsCabinet(id);
+        return success(BeanUtils.toBean(materialsCabinet, MaterialsCabinetRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsCabinetPage")
+    @Operation(summary = "获得物资柜分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-cabinet:query')")
+    public CommonResult<PageResult<MaterialsCabinetRespVO>> getMaterialsCabinetPage(@Valid MaterialsCabinetPageReqVO pageReqVO) {
+        PageResult<MaterialsCabinetDO> pageResult = materialsCabinetService.getMaterialsCabinetPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsCabinetRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsCabinetExcel")
+    @Operation(summary = "导出物资柜 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-cabinet:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsCabinetExcel(@Valid MaterialsCabinetPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsCabinetDO> list = materialsCabinetService.getMaterialsCabinetPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资柜.xls", "数据", MaterialsCabinetRespVO.class,
+                        BeanUtils.toBean(list, MaterialsCabinetRespVO.class));
+    }
+
+}

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

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.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 MaterialsCabinetPageReqVO extends PageParam {
+
+    @Schema(description = "物资柜编号")
+    private String cabinetCode;
+
+    @Schema(description = "物资柜名称", example = "王五")
+    private String cabinetName;
+
+    @Schema(description = "硬件ID", example = "22217")
+    private Long hardwareId;
+
+    @Schema(description = "区域ID", example = "9782")
+    private Long workareaId;
+
+    @Schema(description = "所属岗位ID", example = "29056")
+    private Long workstationId;
+
+    @Schema(description = "物资柜图标")
+    private String cabinetIcon;
+
+    @Schema(description = "物资柜略图")
+    private String cabinetPicture;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "状态(0-正常(所有都在物资柜,都正常的) 1-使用中(有借出在外的) 2-异常(有物资异常的))", example = "1")
+    private String status;
+
+    @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/materialscabinet/vo/MaterialsCabinetRespVO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.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 MaterialsCabinetRespVO {
+
+    @Schema(description = "物资柜ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14078")
+    @ExcelProperty("物资柜ID")
+    private Long id;
+
+    @Schema(description = "物资柜编号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("物资柜编号")
+    private String cabinetCode;
+
+    @Schema(description = "物资柜名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @ExcelProperty("物资柜名称")
+    private String cabinetName;
+
+    @Schema(description = "硬件ID", example = "22217")
+    @ExcelProperty("硬件ID")
+    private Long hardwareId;
+
+    @Schema(description = "区域ID", example = "9782")
+    @ExcelProperty("区域ID")
+    private Long workareaId;
+
+    @Schema(description = "所属岗位ID", example = "29056")
+    @ExcelProperty("所属岗位ID")
+    private Long workstationId;
+
+    @Schema(description = "物资柜图标")
+    @ExcelProperty("物资柜图标")
+    private String cabinetIcon;
+
+    @Schema(description = "物资柜略图")
+    @ExcelProperty("物资柜略图")
+    private String cabinetPicture;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "状态(0-正常(所有都在物资柜,都正常的) 1-使用中(有借出在外的) 2-异常(有物资异常的))", example = "1")
+    @ExcelProperty("状态(0-正常(所有都在物资柜,都正常的) 1-使用中(有借出在外的) 2-异常(有物资异常的))")
+    private String status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

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

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.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 MaterialsCabinetSaveReqVO {
+
+    @Schema(description = "物资柜ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14078")
+    private Long id;
+
+    @Schema(description = "物资柜编号", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "物资柜编号不能为空")
+    private String cabinetCode;
+
+    @Schema(description = "物资柜名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
+    @NotEmpty(message = "物资柜名称不能为空")
+    private String cabinetName;
+
+    @Schema(description = "硬件ID", example = "22217")
+    private Long hardwareId;
+
+    @Schema(description = "区域ID", example = "9782")
+    private Long workareaId;
+
+    @Schema(description = "所属岗位ID", example = "29056")
+    private Long workstationId;
+
+    @Schema(description = "物资柜图标")
+    private String cabinetIcon;
+
+    @Schema(description = "物资柜略图")
+    private String cabinetPicture;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "状态(0-正常(所有都在物资柜,都正常的) 1-使用中(有借出在外的) 2-异常(有物资异常的))", example = "1")
+    private String status;
+
+}

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord;
+
+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.materialschangerecord.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
+import cn.iocoder.yudao.module.iscs.service.materialschangerecord.MaterialsChangeRecordService;
+
+@Tag(name = "管理后台 - 物资更换记录")
+@RestController
+@RequestMapping("/iscs/materials-change-record")
+@Validated
+public class MaterialsChangeRecordController {
+
+    @Resource
+    private MaterialsChangeRecordService materialsChangeRecordService;
+
+    @PostMapping("/insertMaterialsChangeRecord")
+    @Operation(summary = "创建物资更换记录")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:create')")
+    public CommonResult<Long> insertMaterialsChangeRecord(@Valid @RequestBody MaterialsChangeRecordSaveReqVO createReqVO) {
+        return success(materialsChangeRecordService.createMaterialsChangeRecord(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsChangeRecord")
+    @Operation(summary = "更新物资更换记录")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:update')")
+    public CommonResult<Boolean> updateMaterialsChangeRecord(@Valid @RequestBody MaterialsChangeRecordSaveReqVO updateReqVO) {
+        materialsChangeRecordService.updateMaterialsChangeRecord(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsChangeRecordList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资更换记录")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:delete')")
+    public CommonResult<Boolean> deleteMaterialsChangeRecordList(@RequestParam("ids") List<Long> ids) {
+        materialsChangeRecordService.deleteMaterialsChangeRecordListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsChangeRecordById")
+    @Operation(summary = "获得物资更换记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:query')")
+    public CommonResult<MaterialsChangeRecordRespVO> selectMaterialsChangeRecordById(@RequestParam("id") Long id) {
+        MaterialsChangeRecordDO materialsChangeRecord = materialsChangeRecordService.getMaterialsChangeRecord(id);
+        return success(BeanUtils.toBean(materialsChangeRecord, MaterialsChangeRecordRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsChangeRecordPage")
+    @Operation(summary = "获得物资更换记录分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:query')")
+    public CommonResult<PageResult<MaterialsChangeRecordRespVO>> getMaterialsChangeRecordPage(@Valid MaterialsChangeRecordPageReqVO pageReqVO) {
+        PageResult<MaterialsChangeRecordDO> pageResult = materialsChangeRecordService.getMaterialsChangeRecordPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsChangeRecordRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsChangeRecordExcel")
+    @Operation(summary = "导出物资更换记录 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-change-record:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsChangeRecordExcel(@Valid MaterialsChangeRecordPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsChangeRecordDO> list = materialsChangeRecordService.getMaterialsChangeRecordPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资更换记录.xls", "数据", MaterialsChangeRecordRespVO.class,
+                        BeanUtils.toBean(list, MaterialsChangeRecordRespVO.class));
+    }
+
+}

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

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.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 MaterialsChangeRecordPageReqVO extends PageParam {
+
+    @Schema(description = "物资检查主键ID", example = "25149")
+    private Long checkRecordId;
+
+    @Schema(description = "原物资id", example = "10457")
+    private Long oldMaterialsId;
+
+    @Schema(description = "原物资rfid", example = "8316")
+    private String oldMaterialsRfid;
+
+    @Schema(description = "新物资id", example = "21382")
+    private Long newMaterialsId;
+
+    @Schema(description = "新物资rfid", example = "20852")
+    private String newMaterialsRfid;
+
+    @Schema(description = "更换人id", example = "4138")
+    private Long changeUserId;
+
+    @Schema(description = "更换时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] changeDate;
+
+    @Schema(description = "更换类型(0-手动更换 1-自动更换)", example = "2")
+    private String changeType;
+
+    @Schema(description = "操作类型(0-取出 1-放入 2-替换)", example = "1")
+    private String operateType;
+
+    @Schema(description = "状态", example = "2")
+    private String status;
+
+    @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/materialschangerecord/vo/MaterialsChangeRecordRespVO.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.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 MaterialsChangeRecordRespVO {
+
+    @Schema(description = "物资更换id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21884")
+    @ExcelProperty("物资更换id")
+    private Long id;
+
+    @Schema(description = "物资检查主键ID", example = "25149")
+    @ExcelProperty("物资检查主键ID")
+    private Long checkRecordId;
+
+    @Schema(description = "原物资id", example = "10457")
+    @ExcelProperty("原物资id")
+    private Long oldMaterialsId;
+
+    @Schema(description = "原物资rfid", example = "8316")
+    @ExcelProperty("原物资rfid")
+    private String oldMaterialsRfid;
+
+    @Schema(description = "新物资id", example = "21382")
+    @ExcelProperty("新物资id")
+    private Long newMaterialsId;
+
+    @Schema(description = "新物资rfid", example = "20852")
+    @ExcelProperty("新物资rfid")
+    private String newMaterialsRfid;
+
+    @Schema(description = "更换人id", example = "4138")
+    @ExcelProperty("更换人id")
+    private Long changeUserId;
+
+    @Schema(description = "更换时间")
+    @ExcelProperty("更换时间")
+    private LocalDateTime changeDate;
+
+    @Schema(description = "更换类型(0-手动更换 1-自动更换)", example = "2")
+    @ExcelProperty("更换类型(0-手动更换 1-自动更换)")
+    private String changeType;
+
+    @Schema(description = "操作类型(0-取出 1-放入 2-替换)", example = "1")
+    @ExcelProperty("操作类型(0-取出 1-放入 2-替换)")
+    private String operateType;
+
+    @Schema(description = "状态", example = "2")
+    @ExcelProperty("状态")
+    private String status;
+
+    @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/materialschangerecord/vo/MaterialsChangeRecordSaveReqVO.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.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 MaterialsChangeRecordSaveReqVO {
+
+    @Schema(description = "物资更换id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21884")
+    private Long id;
+
+    @Schema(description = "物资检查主键ID", example = "25149")
+    private Long checkRecordId;
+
+    @Schema(description = "原物资id", example = "10457")
+    private Long oldMaterialsId;
+
+    @Schema(description = "原物资rfid", example = "8316")
+    private String oldMaterialsRfid;
+
+    @Schema(description = "新物资id", example = "21382")
+    private Long newMaterialsId;
+
+    @Schema(description = "新物资rfid", example = "20852")
+    private String newMaterialsRfid;
+
+    @Schema(description = "更换人id", example = "4138")
+    private Long changeUserId;
+
+    @Schema(description = "更换时间")
+    private LocalDateTime changeDate;
+
+    @Schema(description = "更换类型(0-手动更换 1-自动更换)", example = "2")
+    private String changeType;
+
+    @Schema(description = "操作类型(0-取出 1-放入 2-替换)", example = "1")
+    private String operateType;
+
+    @Schema(description = "状态", example = "2")
+    private String status;
+
+}

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckplan;
+
+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.materialscheckplan.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckplan.MaterialsCheckPlanDO;
+import cn.iocoder.yudao.module.iscs.service.materialscheckplan.MaterialsCheckPlanService;
+
+@Tag(name = "管理后台 - 物资检查计划")
+@RestController
+@RequestMapping("/iscs/materials-check-plan")
+@Validated
+public class MaterialsCheckPlanController {
+
+    @Resource
+    private MaterialsCheckPlanService materialsCheckPlanService;
+
+    @PostMapping("/insertMaterialsCheckPlan")
+    @Operation(summary = "创建物资检查计划")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-plan:create')")
+    public CommonResult<Long> insertMaterialsCheckPlan(@Valid @RequestBody MaterialsCheckPlanSaveReqVO createReqVO) {
+        return success(materialsCheckPlanService.createMaterialsCheckPlan(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsCheckPlan")
+    @Operation(summary = "更新物资检查计划")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-plan:update')")
+    public CommonResult<Boolean> updateMaterialsCheckPlan(@Valid @RequestBody MaterialsCheckPlanSaveReqVO updateReqVO) {
+        materialsCheckPlanService.updateMaterialsCheckPlan(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsCheckPlanList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资检查计划")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-check-plan:delete')")
+    public CommonResult<Boolean> deleteMaterialsCheckPlanList(@RequestParam("ids") List<Long> ids) {
+        materialsCheckPlanService.deleteMaterialsCheckPlanListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsCheckPlanById")
+    @Operation(summary = "获得物资检查计划")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-plan:query')")
+    public CommonResult<MaterialsCheckPlanRespVO> selectMaterialsCheckPlanById(@RequestParam("id") Long id) {
+        MaterialsCheckPlanDO materialsCheckPlan = materialsCheckPlanService.getMaterialsCheckPlan(id);
+        return success(BeanUtils.toBean(materialsCheckPlan, MaterialsCheckPlanRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsCheckPlanPage")
+    @Operation(summary = "获得物资检查计划分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-plan:query')")
+    public CommonResult<PageResult<MaterialsCheckPlanRespVO>> getMaterialsCheckPlanPage(@Valid MaterialsCheckPlanPageReqVO pageReqVO) {
+        PageResult<MaterialsCheckPlanDO> pageResult = materialsCheckPlanService.getMaterialsCheckPlanPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsCheckPlanRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsCheckPlanExcel")
+    @Operation(summary = "导出物资检查计划 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-plan:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsCheckPlanExcel(@Valid MaterialsCheckPlanPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsCheckPlanDO> list = materialsCheckPlanService.getMaterialsCheckPlanPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资检查计划.xls", "数据", MaterialsCheckPlanRespVO.class,
+                        BeanUtils.toBean(list, MaterialsCheckPlanRespVO.class));
+    }
+
+}

+ 37 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckplan/vo/MaterialsCheckPlanPageReqVO.java

@@ -0,0 +1,37 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckplan.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.LocalDate;
+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 MaterialsCheckPlanPageReqVO extends PageParam {
+
+    @Schema(description = "计划名称", example = "赵六")
+    private String planName;
+
+    @Schema(description = "所属岗位ID", example = "7503")
+    private Long workstationId;
+
+    @Schema(description = "计划日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDate[] planDate;
+
+    @Schema(description = "检察员", example = "15814")
+    private Long checkUserId;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

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

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckplan.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.LocalDate;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 物资检查计划 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class MaterialsCheckPlanRespVO {
+
+    @Schema(description = "物资计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27344")
+    @ExcelProperty("物资计划id")
+    private Long id;
+
+    @Schema(description = "计划名称", example = "赵六")
+    @ExcelProperty("计划名称")
+    private String planName;
+
+    @Schema(description = "所属岗位ID", example = "7503")
+    @ExcelProperty("所属岗位ID")
+    private Long workstationId;
+
+    @Schema(description = "计划日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("计划日期")
+    private LocalDate planDate;
+
+    @Schema(description = "检察员", example = "15814")
+    @ExcelProperty("检察员")
+    private Long checkUserId;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 32 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckplan/vo/MaterialsCheckPlanSaveReqVO.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckplan.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Schema(description = "管理后台 - 物资检查计划新增/修改 Request VO")
+@Data
+public class MaterialsCheckPlanSaveReqVO {
+
+    @Schema(description = "物资计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27344")
+    private Long id;
+
+    @Schema(description = "计划名称", example = "赵六")
+    private String planName;
+
+    @Schema(description = "所属岗位ID", example = "7503")
+    private Long workstationId;
+
+    @Schema(description = "计划日期", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "计划日期不能为空")
+    private LocalDate planDate;
+
+    @Schema(description = "检察员", example = "15814")
+    private Long checkUserId;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+}

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord;
+
+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.materialscheckrecord.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckrecord.MaterialsCheckRecordDO;
+import cn.iocoder.yudao.module.iscs.service.materialscheckrecord.MaterialsCheckRecordService;
+
+@Tag(name = "管理后台 - 物资检查记录")
+@RestController
+@RequestMapping("/iscs/materials-check-record")
+@Validated
+public class MaterialsCheckRecordController {
+
+    @Resource
+    private MaterialsCheckRecordService materialsCheckRecordService;
+
+    @PostMapping("/insertMaterialsCheckRecord")
+    @Operation(summary = "创建物资检查记录")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-record:create')")
+    public CommonResult<Long> insertMaterialsCheckRecord(@Valid @RequestBody MaterialsCheckRecordSaveReqVO createReqVO) {
+        return success(materialsCheckRecordService.createMaterialsCheckRecord(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsCheckRecord")
+    @Operation(summary = "更新物资检查记录")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-record:update')")
+    public CommonResult<Boolean> updateMaterialsCheckRecord(@Valid @RequestBody MaterialsCheckRecordSaveReqVO updateReqVO) {
+        materialsCheckRecordService.updateMaterialsCheckRecord(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsCheckRecordList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资检查记录")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-check-record:delete')")
+    public CommonResult<Boolean> deleteMaterialsCheckRecordList(@RequestParam("ids") List<Long> ids) {
+        materialsCheckRecordService.deleteMaterialsCheckRecordListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsCheckRecordById")
+    @Operation(summary = "获得物资检查记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-record:query')")
+    public CommonResult<MaterialsCheckRecordRespVO> selectMaterialsCheckRecordById(@RequestParam("id") Long id) {
+        MaterialsCheckRecordDO materialsCheckRecord = materialsCheckRecordService.getMaterialsCheckRecord(id);
+        return success(BeanUtils.toBean(materialsCheckRecord, MaterialsCheckRecordRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsCheckRecordPage")
+    @Operation(summary = "获得物资检查记录分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-record:query')")
+    public CommonResult<PageResult<MaterialsCheckRecordRespVO>> getMaterialsCheckRecordPage(@Valid MaterialsCheckRecordPageReqVO pageReqVO) {
+        PageResult<MaterialsCheckRecordDO> pageResult = materialsCheckRecordService.getMaterialsCheckRecordPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsCheckRecordRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsCheckRecordExcel")
+    @Operation(summary = "导出物资检查记录 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-check-record:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsCheckRecordExcel(@Valid MaterialsCheckRecordPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsCheckRecordDO> list = materialsCheckRecordService.getMaterialsCheckRecordPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资检查记录.xls", "数据", MaterialsCheckRecordRespVO.class,
+                        BeanUtils.toBean(list, MaterialsCheckRecordRespVO.class));
+    }
+
+}

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

@@ -0,0 +1,51 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.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 MaterialsCheckRecordPageReqVO extends PageParam {
+
+    @Schema(description = "计划id", example = "23117")
+    private Long planId;
+
+    @Schema(description = "所属岗位ID", example = "13015")
+    private Long workstationId;
+
+    @Schema(description = "物资柜id", example = "9875")
+    private Long cabinetId;
+
+    @Schema(description = "物资id", example = "28747")
+    private Long materialsId;
+
+    @Schema(description = "检察员", example = "25279")
+    private Long checkUserId;
+
+    @Schema(description = "检查时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] checkDate;
+
+    @Schema(description = "异常原因(字典exceptions_status)", example = "不对")
+    private String reason;
+
+    @Schema(description = "措施")
+    private String measure;
+
+    @Schema(description = "检查记录状态(字典checks_status)", example = "1")
+    private String status;
+
+    @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/materialscheckrecord/vo/MaterialsCheckRecordRespVO.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.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 MaterialsCheckRecordRespVO {
+
+    @Schema(description = "检查主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31232")
+    @ExcelProperty("检查主键ID")
+    private Long id;
+
+    @Schema(description = "计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23117")
+    @ExcelProperty("计划id")
+    private Long planId;
+
+    @Schema(description = "所属岗位ID", example = "13015")
+    @ExcelProperty("所属岗位ID")
+    private Long workstationId;
+
+    @Schema(description = "物资柜id", example = "9875")
+    @ExcelProperty("物资柜id")
+    private Long cabinetId;
+
+    @Schema(description = "物资id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28747")
+    @ExcelProperty("物资id")
+    private Long materialsId;
+
+    @Schema(description = "检察员", example = "25279")
+    @ExcelProperty("检察员")
+    private Long checkUserId;
+
+    @Schema(description = "检查时间")
+    @ExcelProperty("检查时间")
+    private LocalDateTime checkDate;
+
+    @Schema(description = "异常原因(字典exceptions_status)", example = "不对")
+    @ExcelProperty("异常原因(字典exceptions_status)")
+    private String reason;
+
+    @Schema(description = "措施")
+    @ExcelProperty("措施")
+    private String measure;
+
+    @Schema(description = "检查记录状态(字典checks_status)", example = "1")
+    @ExcelProperty("检查记录状态(字典checks_status)")
+    private String status;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

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

@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.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 MaterialsCheckRecordSaveReqVO {
+
+    @Schema(description = "检查主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31232")
+    private Long id;
+
+    @Schema(description = "计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23117")
+    @NotNull(message = "计划id不能为空")
+    private Long planId;
+
+    @Schema(description = "所属岗位ID", example = "13015")
+    private Long workstationId;
+
+    @Schema(description = "物资柜id", example = "9875")
+    private Long cabinetId;
+
+    @Schema(description = "物资id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28747")
+    @NotNull(message = "物资id不能为空")
+    private Long materialsId;
+
+    @Schema(description = "检察员", example = "25279")
+    private Long checkUserId;
+
+    @Schema(description = "检查时间")
+    private LocalDateTime checkDate;
+
+    @Schema(description = "异常原因(字典exceptions_status)", example = "不对")
+    private String reason;
+
+    @Schema(description = "措施")
+    private String measure;
+
+    @Schema(description = "检查记录状态(字典checks_status)", example = "1")
+    private String status;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+}

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsinstructions;
+
+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.materialsinstructions.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsinstructions.MaterialsInstructionsDO;
+import cn.iocoder.yudao.module.iscs.service.materialsinstructions.MaterialsInstructionsService;
+
+@Tag(name = "管理后台 - 物资使用说明")
+@RestController
+@RequestMapping("/iscs/materials-instructions")
+@Validated
+public class MaterialsInstructionsController {
+
+    @Resource
+    private MaterialsInstructionsService materialsInstructionsService;
+
+    @PostMapping("/insertMaterialsInstructions")
+    @Operation(summary = "创建物资使用说明")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-instructions:create')")
+    public CommonResult<Long> insertMaterialsInstructions(@Valid @RequestBody MaterialsInstructionsSaveReqVO createReqVO) {
+        return success(materialsInstructionsService.createMaterialsInstructions(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsInstructions")
+    @Operation(summary = "更新物资使用说明")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-instructions:update')")
+    public CommonResult<Boolean> updateMaterialsInstructions(@Valid @RequestBody MaterialsInstructionsSaveReqVO updateReqVO) {
+        materialsInstructionsService.updateMaterialsInstructions(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsInstructionsList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资使用说明")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-instructions:delete')")
+    public CommonResult<Boolean> deleteMaterialsInstructionsList(@RequestParam("ids") List<Long> ids) {
+        materialsInstructionsService.deleteMaterialsInstructionsListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsInstructionsById")
+    @Operation(summary = "获得物资使用说明")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-instructions:query')")
+    public CommonResult<MaterialsInstructionsRespVO> selectMaterialsInstructionsById(@RequestParam("id") Long id) {
+        MaterialsInstructionsDO materialsInstructions = materialsInstructionsService.getMaterialsInstructions(id);
+        return success(BeanUtils.toBean(materialsInstructions, MaterialsInstructionsRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsInstructionsPage")
+    @Operation(summary = "获得物资使用说明分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-instructions:query')")
+    public CommonResult<PageResult<MaterialsInstructionsRespVO>> getMaterialsInstructionsPage(@Valid MaterialsInstructionsPageReqVO pageReqVO) {
+        PageResult<MaterialsInstructionsDO> pageResult = materialsInstructionsService.getMaterialsInstructionsPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsInstructionsRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsInstructionsExcel")
+    @Operation(summary = "导出物资使用说明 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-instructions:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsInstructionsExcel(@Valid MaterialsInstructionsPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsInstructionsDO> list = materialsInstructionsService.getMaterialsInstructionsPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资使用说明.xls", "数据", MaterialsInstructionsRespVO.class,
+                        BeanUtils.toBean(list, MaterialsInstructionsRespVO.class));
+    }
+
+}

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

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsinstructions.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 MaterialsInstructionsPageReqVO extends PageParam {
+
+    @Schema(description = "标题")
+    private String instructionsTitle;
+
+    @Schema(description = "物资类型ID", example = "8184")
+    private Long materialsTypeId;
+
+    @Schema(description = "文件地址", example = "https://www.iocoder.cn")
+    private String fileUrl;
+
+    @Schema(description = "PDF转成图片后的文件地址")
+    private String fileUrlImg;
+
+    @Schema(description = "PDF转成图片后的文件路径")
+    private String filePathImg;
+
+    @Schema(description = "文件类型", example = "2")
+    private String fileType;
+
+    @Schema(description = "排序")
+    private Integer orderNum;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "物资状态(0-正常 1-异常 2-被更换)", example = "1")
+    private String status;
+
+    @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/materialsinstructions/vo/MaterialsInstructionsRespVO.java

@@ -0,0 +1,59 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsinstructions.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 MaterialsInstructionsRespVO {
+
+    @Schema(description = "说明ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13493")
+    @ExcelProperty("说明ID")
+    private Long id;
+
+    @Schema(description = "标题")
+    @ExcelProperty("标题")
+    private String instructionsTitle;
+
+    @Schema(description = "物资类型ID", example = "8184")
+    @ExcelProperty("物资类型ID")
+    private Long materialsTypeId;
+
+    @Schema(description = "文件地址", example = "https://www.iocoder.cn")
+    @ExcelProperty("文件地址")
+    private String fileUrl;
+
+    @Schema(description = "PDF转成图片后的文件地址")
+    @ExcelProperty("PDF转成图片后的文件地址")
+    private String fileUrlImg;
+
+    @Schema(description = "PDF转成图片后的文件路径")
+    @ExcelProperty("PDF转成图片后的文件路径")
+    private String filePathImg;
+
+    @Schema(description = "文件类型", example = "2")
+    @ExcelProperty("文件类型")
+    private String fileType;
+
+    @Schema(description = "排序")
+    @ExcelProperty("排序")
+    private Integer orderNum;
+
+    @Schema(description = "备注", example = "随便")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "物资状态(0-正常 1-异常 2-被更换)", example = "1")
+    @ExcelProperty("物资状态(0-正常 1-异常 2-被更换)")
+    private String status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 42 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsinstructions/vo/MaterialsInstructionsSaveReqVO.java

@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsinstructions.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 MaterialsInstructionsSaveReqVO {
+
+    @Schema(description = "说明ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "13493")
+    private Long id;
+
+    @Schema(description = "标题")
+    private String instructionsTitle;
+
+    @Schema(description = "物资类型ID", example = "8184")
+    private Long materialsTypeId;
+
+    @Schema(description = "文件地址", example = "https://www.iocoder.cn")
+    private String fileUrl;
+
+    @Schema(description = "PDF转成图片后的文件地址")
+    private String fileUrlImg;
+
+    @Schema(description = "PDF转成图片后的文件路径")
+    private String filePathImg;
+
+    @Schema(description = "文件类型", example = "2")
+    private String fileType;
+
+    @Schema(description = "排序")
+    private Integer orderNum;
+
+    @Schema(description = "备注", example = "随便")
+    private String remark;
+
+    @Schema(description = "物资状态(0-正常 1-异常 2-被更换)", example = "1")
+    private String status;
+
+}

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsloan;
+
+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.materialsloan.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsloan.MaterialsLoanDO;
+import cn.iocoder.yudao.module.iscs.service.materialsloan.MaterialsLoanService;
+
+@Tag(name = "管理后台 - 物资借出")
+@RestController
+@RequestMapping("/iscs/materials-loan")
+@Validated
+public class MaterialsLoanController {
+
+    @Resource
+    private MaterialsLoanService materialsLoanService;
+
+    @PostMapping("/insertMaterialsLoan")
+    @Operation(summary = "创建物资借出")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-loan:create')")
+    public CommonResult<Long> insertMaterialsLoan(@Valid @RequestBody MaterialsLoanSaveReqVO createReqVO) {
+        return success(materialsLoanService.createMaterialsLoan(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsLoan")
+    @Operation(summary = "更新物资借出")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-loan:update')")
+    public CommonResult<Boolean> updateMaterialsLoan(@Valid @RequestBody MaterialsLoanSaveReqVO updateReqVO) {
+        materialsLoanService.updateMaterialsLoan(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsLoanList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资借出")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-loan:delete')")
+    public CommonResult<Boolean> deleteMaterialsLoanList(@RequestParam("ids") List<Long> ids) {
+        materialsLoanService.deleteMaterialsLoanListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsLoanById")
+    @Operation(summary = "获得物资借出")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-loan:query')")
+    public CommonResult<MaterialsLoanRespVO> selectMaterialsLoanById(@RequestParam("id") Long id) {
+        MaterialsLoanDO materialsLoan = materialsLoanService.getMaterialsLoan(id);
+        return success(BeanUtils.toBean(materialsLoan, MaterialsLoanRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsLoanPage")
+    @Operation(summary = "获得物资借出分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-loan:query')")
+    public CommonResult<PageResult<MaterialsLoanRespVO>> getMaterialsLoanPage(@Valid MaterialsLoanPageReqVO pageReqVO) {
+        PageResult<MaterialsLoanDO> pageResult = materialsLoanService.getMaterialsLoanPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsLoanRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsLoanExcel")
+    @Operation(summary = "导出物资借出 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-loan:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsLoanExcel(@Valid MaterialsLoanPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsLoanDO> list = materialsLoanService.getMaterialsLoanPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资借出.xls", "数据", MaterialsLoanRespVO.class,
+                        BeanUtils.toBean(list, MaterialsLoanRespVO.class));
+    }
+
+}

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

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsloan.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 MaterialsLoanPageReqVO extends PageParam {
+
+    @Schema(description = "物资ID", example = "10493")
+    private Long materialsId;
+
+    @Schema(description = "领取人ID", example = "27824")
+    private Long loanUserId;
+
+    @Schema(description = "领取柜ID", example = "19962")
+    private Long loanFromId;
+
+    @Schema(description = "领取时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] loanTime;
+
+    @Schema(description = "提醒时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] reminderTime;
+
+    @Schema(description = "归还人ID", example = "28697")
+    private Long restitutionUserId;
+
+    @Schema(description = "归还柜ID", example = "21688")
+    private Long restitutionToId;
+
+    @Schema(description = "理应归还时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] restitutionTime;
+
+    @Schema(description = "实际归还时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] actualRestitutionTime;
+
+    @Schema(description = "超时报警")
+    private LocalDateTime timeoutAlarm;
+
+    @Schema(description = "是否需要归还")
+    private Integer restitutionRequired;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "状态(0-待归还 1-已归还 2-超时未归还)", example = "2")
+    private String status;
+
+    @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/materialsloan/vo/MaterialsLoanRespVO.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsloan.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 MaterialsLoanRespVO {
+
+    @Schema(description = "出借主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25774")
+    @ExcelProperty("出借主键ID")
+    private Long id;
+
+    @Schema(description = "物资ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10493")
+    @ExcelProperty("物资ID")
+    private Long materialsId;
+
+    @Schema(description = "领取人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27824")
+    @ExcelProperty("领取人ID")
+    private Long loanUserId;
+
+    @Schema(description = "领取柜ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19962")
+    @ExcelProperty("领取柜ID")
+    private Long loanFromId;
+
+    @Schema(description = "领取时间")
+    @ExcelProperty("领取时间")
+    private LocalDateTime loanTime;
+
+    @Schema(description = "提醒时间")
+    @ExcelProperty("提醒时间")
+    private LocalDateTime reminderTime;
+
+    @Schema(description = "归还人ID", example = "28697")
+    @ExcelProperty("归还人ID")
+    private Long restitutionUserId;
+
+    @Schema(description = "归还柜ID", example = "21688")
+    @ExcelProperty("归还柜ID")
+    private Long restitutionToId;
+
+    @Schema(description = "理应归还时间")
+    @ExcelProperty("理应归还时间")
+    private LocalDateTime restitutionTime;
+
+    @Schema(description = "实际归还时间")
+    @ExcelProperty("实际归还时间")
+    private LocalDateTime actualRestitutionTime;
+
+    @Schema(description = "超时报警")
+    @ExcelProperty("超时报警")
+    private LocalDateTime timeoutAlarm;
+
+    @Schema(description = "是否需要归还", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("是否需要归还")
+    private Integer restitutionRequired;
+
+    @Schema(description = "备注", example = "你猜")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "状态(0-待归还 1-已归还 2-超时未归还)", example = "2")
+    @ExcelProperty("状态(0-待归还 1-已归还 2-超时未归还)")
+    private String status;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 60 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsloan/vo/MaterialsLoanSaveReqVO.java

@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsloan.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 MaterialsLoanSaveReqVO {
+
+    @Schema(description = "出借主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25774")
+    private Long id;
+
+    @Schema(description = "物资ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10493")
+    @NotNull(message = "物资ID不能为空")
+    private Long materialsId;
+
+    @Schema(description = "领取人ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "27824")
+    @NotNull(message = "领取人ID不能为空")
+    private Long loanUserId;
+
+    @Schema(description = "领取柜ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19962")
+    @NotNull(message = "领取柜ID不能为空")
+    private Long loanFromId;
+
+    @Schema(description = "领取时间")
+    private LocalDateTime loanTime;
+
+    @Schema(description = "提醒时间")
+    private LocalDateTime reminderTime;
+
+    @Schema(description = "归还人ID", example = "28697")
+    private Long restitutionUserId;
+
+    @Schema(description = "归还柜ID", example = "21688")
+    private Long restitutionToId;
+
+    @Schema(description = "理应归还时间")
+    private LocalDateTime restitutionTime;
+
+    @Schema(description = "实际归还时间")
+    private LocalDateTime actualRestitutionTime;
+
+    @Schema(description = "超时报警")
+    private LocalDateTime timeoutAlarm;
+
+    @Schema(description = "是否需要归还", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "是否需要归还不能为空")
+    private Integer restitutionRequired;
+
+    @Schema(description = "备注", example = "你猜")
+    private String remark;
+
+    @Schema(description = "状态(0-待归还 1-已归还 2-超时未归还)", example = "2")
+    private String status;
+
+}

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

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsplancabinet;
+
+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.materialsplancabinet.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsplancabinet.MaterialsPlanCabinetDO;
+import cn.iocoder.yudao.module.iscs.service.materialsplancabinet.MaterialsPlanCabinetService;
+
+@Tag(name = "管理后台 - 物资检查计划关联物资柜")
+@RestController
+@RequestMapping("/iscs/materials-plan-cabinet")
+@Validated
+public class MaterialsPlanCabinetController {
+
+    @Resource
+    private MaterialsPlanCabinetService materialsPlanCabinetService;
+
+    @PostMapping("/insertMaterialsPlanCabinet")
+    @Operation(summary = "创建物资检查计划关联物资柜")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-plan-cabinet:create')")
+    public CommonResult<Long> insertMaterialsPlanCabinet(@Valid @RequestBody MaterialsPlanCabinetSaveReqVO createReqVO) {
+        return success(materialsPlanCabinetService.createMaterialsPlanCabinet(createReqVO));
+    }
+
+    @PutMapping("/updateMaterialsPlanCabinet")
+    @Operation(summary = "更新物资检查计划关联物资柜")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-plan-cabinet:update')")
+    public CommonResult<Boolean> updateMaterialsPlanCabinet(@Valid @RequestBody MaterialsPlanCabinetSaveReqVO updateReqVO) {
+        materialsPlanCabinetService.updateMaterialsPlanCabinet(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteMaterialsPlanCabinetList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除物资检查计划关联物资柜")
+                @PreAuthorize("@ss.hasPermission('iscs:materials-plan-cabinet:delete')")
+    public CommonResult<Boolean> deleteMaterialsPlanCabinetList(@RequestParam("ids") List<Long> ids) {
+        materialsPlanCabinetService.deleteMaterialsPlanCabinetListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectMaterialsPlanCabinetById")
+    @Operation(summary = "获得物资检查计划关联物资柜")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-plan-cabinet:query')")
+    public CommonResult<MaterialsPlanCabinetRespVO> selectMaterialsPlanCabinetById(@RequestParam("id") Long id) {
+        MaterialsPlanCabinetDO materialsPlanCabinet = materialsPlanCabinetService.getMaterialsPlanCabinet(id);
+        return success(BeanUtils.toBean(materialsPlanCabinet, MaterialsPlanCabinetRespVO.class));
+    }
+
+    @GetMapping("/getMaterialsPlanCabinetPage")
+    @Operation(summary = "获得物资检查计划关联物资柜分页")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-plan-cabinet:query')")
+    public CommonResult<PageResult<MaterialsPlanCabinetRespVO>> getMaterialsPlanCabinetPage(@Valid MaterialsPlanCabinetPageReqVO pageReqVO) {
+        PageResult<MaterialsPlanCabinetDO> pageResult = materialsPlanCabinetService.getMaterialsPlanCabinetPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, MaterialsPlanCabinetRespVO.class));
+    }
+
+    @GetMapping("/exportMaterialsPlanCabinetExcel")
+    @Operation(summary = "导出物资检查计划关联物资柜 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:materials-plan-cabinet:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportMaterialsPlanCabinetExcel(@Valid MaterialsPlanCabinetPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<MaterialsPlanCabinetDO> list = materialsPlanCabinetService.getMaterialsPlanCabinetPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资检查计划关联物资柜.xls", "数据", MaterialsPlanCabinetRespVO.class,
+                        BeanUtils.toBean(list, MaterialsPlanCabinetRespVO.class));
+    }
+
+}

+ 30 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsplancabinet/vo/MaterialsPlanCabinetPageReqVO.java

@@ -0,0 +1,30 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsplancabinet.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 MaterialsPlanCabinetPageReqVO extends PageParam {
+
+    @Schema(description = "签名图片")
+    private String signatureImg;
+
+    @Schema(description = "签名时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] signatureTime;
+
+    @Schema(description = "是否提交(0-否 1-是)")
+    private String submit;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 39 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsplancabinet/vo/MaterialsPlanCabinetRespVO.java

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsplancabinet.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 MaterialsPlanCabinetRespVO {
+
+    @Schema(description = "物资计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1692")
+    @ExcelProperty("物资计划ID")
+    private Long planId;
+
+    @Schema(description = "物资柜ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25755")
+    @ExcelProperty("物资柜ID")
+    private Long cabinetId;
+
+    @Schema(description = "签名图片")
+    @ExcelProperty("签名图片")
+    private String signatureImg;
+
+    @Schema(description = "签名时间")
+    @ExcelProperty("签名时间")
+    private LocalDateTime signatureTime;
+
+    @Schema(description = "是否提交(0-否 1-是)")
+    @ExcelProperty("是否提交(0-否 1-是)")
+    private String submit;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 29 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialsplancabinet/vo/MaterialsPlanCabinetSaveReqVO.java

@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialsplancabinet.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 MaterialsPlanCabinetSaveReqVO {
+
+    @Schema(description = "物资计划ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1692")
+    private Long planId;
+
+    @Schema(description = "物资柜ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "25755")
+    private Long cabinetId;
+
+    @Schema(description = "签名图片")
+    private String signatureImg;
+
+    @Schema(description = "签名时间")
+    private LocalDateTime signatureTime;
+
+    @Schema(description = "是否提交(0-否 1-是)")
+    private String submit;
+
+}

+ 102 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materials/MaterialsDO.java

@@ -0,0 +1,102 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materials;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 物资 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_materials")
+@KeySequence("isc_materials_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsDO extends BaseDO {
+
+    /**
+     * 物资ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 物资编号
+     */
+    private String materialsCode;
+    /**
+     * 物资名称
+     */
+    private String materialsName;
+    /**
+     * 物资类型ID
+     */
+    private Long materialsTypeId;
+    /**
+     * 区域ID
+     */
+    private Long workareaId;
+    /**
+     * 物资柜ID
+     */
+    private Long materialsCabinetId;
+    /**
+     * 可用寿命
+     */
+    private String serviceLife;
+    /**
+     * 剩余寿命
+     */
+    private String availableLife;
+    /**
+     * 可用次数
+     */
+    private Integer serviceTimes;
+    /**
+     * 剩余次数
+     */
+    private Integer availableTimes;
+    /**
+     * 有效期
+     */
+    private LocalDate expirationDate;
+    /**
+     * 物资RFID
+     */
+    private String materialsRfid;
+    /**
+     * 供应商
+     */
+    private String supplier;
+    /**
+     * 启用时间
+     */
+    private LocalDateTime startTime;
+    /**
+     * 属性数组,JSON 格式 [{propertId: , valueId: }, {propertId: , valueId: }]
+     */
+    private String properties;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态(0-借出 1-柜中)
+     */
+    private String loanState;
+    /**
+     * 物资状态(字典material_info_status)
+     */
+    private String status;
+
+
+}

+ 68 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscabinet/MaterialsCabinetDO.java

@@ -0,0 +1,68 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materialscabinet;
+
+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_materials_cabinet")
+@KeySequence("isc_materials_cabinet_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsCabinetDO extends BaseDO {
+
+    /**
+     * 物资柜ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 物资柜编号
+     */
+    private String cabinetCode;
+    /**
+     * 物资柜名称
+     */
+    private String cabinetName;
+    /**
+     * 硬件ID
+     */
+    private Long hardwareId;
+    /**
+     * 区域ID
+     */
+    private Long workareaId;
+    /**
+     * 所属岗位ID
+     */
+    private Long workstationId;
+    /**
+     * 物资柜图标
+     */
+    private String cabinetIcon;
+    /**
+     * 物资柜略图
+     */
+    private String cabinetPicture;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态(0-正常(所有都在物资柜,都正常的) 1-使用中(有借出在外的) 2-异常(有物资异常的))
+     */
+    private String status;
+
+
+}

+ 73 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialschangerecord/MaterialsChangeRecordDO.java

@@ -0,0 +1,73 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord;
+
+import lombok.*;
+import java.util.*;
+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_materials_change_record")
+@KeySequence("isc_materials_change_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsChangeRecordDO extends BaseDO {
+
+    /**
+     * 物资更换id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 物资检查主键ID
+     */
+    private Long checkRecordId;
+    /**
+     * 原物资id
+     */
+    private Long oldMaterialsId;
+    /**
+     * 原物资rfid
+     */
+    private String oldMaterialsRfid;
+    /**
+     * 新物资id
+     */
+    private Long newMaterialsId;
+    /**
+     * 新物资rfid
+     */
+    private String newMaterialsRfid;
+    /**
+     * 更换人id
+     */
+    private Long changeUserId;
+    /**
+     * 更换时间
+     */
+    private LocalDateTime changeDate;
+    /**
+     * 更换类型(0-手动更换 1-自动更换)
+     */
+    private String changeType;
+    /**
+     * 操作类型(0-取出 1-放入 2-替换)
+     */
+    private String operateType;
+    /**
+     * 状态
+     */
+    private String status;
+
+
+}

+ 53 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscheckplan/MaterialsCheckPlanDO.java

@@ -0,0 +1,53 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckplan;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDate;
+
+/**
+ * 物资检查计划 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_materials_check_plan")
+@KeySequence("isc_materials_check_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsCheckPlanDO extends BaseDO {
+
+    /**
+     * 物资计划id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 计划名称
+     */
+    private String planName;
+    /**
+     * 所属岗位ID
+     */
+    private Long workstationId;
+    /**
+     * 计划日期
+     */
+    private LocalDate planDate;
+    /**
+     * 检察员
+     */
+    private Long checkUserId;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 73 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscheckrecord/MaterialsCheckRecordDO.java

@@ -0,0 +1,73 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckrecord;
+
+import lombok.*;
+import java.util.*;
+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_materials_check_record")
+@KeySequence("isc_materials_check_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsCheckRecordDO extends BaseDO {
+
+    /**
+     * 检查主键ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 计划id
+     */
+    private Long planId;
+    /**
+     * 所属岗位ID
+     */
+    private Long workstationId;
+    /**
+     * 物资柜id
+     */
+    private Long cabinetId;
+    /**
+     * 物资id
+     */
+    private Long materialsId;
+    /**
+     * 检察员
+     */
+    private Long checkUserId;
+    /**
+     * 检查时间
+     */
+    private LocalDateTime checkDate;
+    /**
+     * 异常原因(字典exceptions_status)
+     */
+    private String reason;
+    /**
+     * 措施
+     */
+    private String measure;
+    /**
+     * 检查记录状态(字典checks_status)
+     */
+    private String status;
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+}

+ 68 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialsinstructions/MaterialsInstructionsDO.java

@@ -0,0 +1,68 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materialsinstructions;
+
+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_materials_instructions")
+@KeySequence("isc_materials_instructions_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsInstructionsDO extends BaseDO {
+
+    /**
+     * 说明ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 标题
+     */
+    private String instructionsTitle;
+    /**
+     * 物资类型ID
+     */
+    private Long materialsTypeId;
+    /**
+     * 文件地址
+     */
+    private String fileUrl;
+    /**
+     * PDF转成图片后的文件地址
+     */
+    private String fileUrlImg;
+    /**
+     * PDF转成图片后的文件路径
+     */
+    private String filePathImg;
+    /**
+     * 文件类型
+     */
+    private String fileType;
+    /**
+     * 排序
+     */
+    private Integer orderNum;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 物资状态(0-正常 1-异常 2-被更换)
+     */
+    private String status;
+
+
+}

+ 89 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialsloan/MaterialsLoanDO.java

@@ -0,0 +1,89 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materialsloan;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+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_materials_loan")
+@KeySequence("isc_materials_loan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsLoanDO extends BaseDO {
+
+    /**
+     * 出借主键ID
+     */
+    @TableId
+    private Long id;
+    /**
+     * 物资ID
+     */
+    private Long materialsId;
+    /**
+     * 领取人ID
+     */
+    private Long loanUserId;
+    /**
+     * 领取柜ID
+     */
+    private Long loanFromId;
+    /**
+     * 领取时间
+     */
+    private LocalDateTime loanTime;
+    /**
+     * 提醒时间
+     */
+    private LocalDateTime reminderTime;
+    /**
+     * 归还人ID
+     */
+    private Long restitutionUserId;
+    /**
+     * 归还柜ID
+     */
+    private Long restitutionToId;
+    /**
+     * 理应归还时间
+     */
+    private LocalDateTime restitutionTime;
+    /**
+     * 实际归还时间
+     */
+    private LocalDateTime actualRestitutionTime;
+    /**
+     * 超时报警
+     */
+    private LocalDateTime timeoutAlarm;
+    /**
+     * 是否需要归还
+     */
+    private Integer restitutionRequired;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态(0-待归还 1-已归还 2-超时未归还)
+     */
+    private String status;
+
+
+}

+ 49 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialsplancabinet/MaterialsPlanCabinetDO.java

@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.iscs.dal.dataobject.materialsplancabinet;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 物资检查计划关联物资柜 DO
+ *
+ * @author 芋道源码
+ */
+@TableName("isc_materials_plan_cabinet")
+@KeySequence("isc_materials_plan_cabinet_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MaterialsPlanCabinetDO extends BaseDO {
+
+    /**
+     * 物资计划ID
+     */
+    @TableId
+    private Long Id;
+    /**
+     * 物资柜ID
+     */
+    private Long cabinetId;
+    /**
+     * 签名图片
+     */
+    private String signatureImg;
+    /**
+     * 签名时间
+     */
+    private LocalDateTime signatureTime;
+    /**
+     * 是否提交(0-否 1-是)
+     */
+    private String submit;
+
+
+}

+ 43 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materials/MaterialsMapper.java

@@ -0,0 +1,43 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materials;
+
+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.materials.MaterialsDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materials.vo.*;
+
+/**
+ * 物资 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsMapper extends BaseMapperX<MaterialsDO> {
+
+    default PageResult<MaterialsDO> selectPage(MaterialsPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsDO>()
+                .eqIfPresent(MaterialsDO::getMaterialsCode, reqVO.getMaterialsCode())
+                .likeIfPresent(MaterialsDO::getMaterialsName, reqVO.getMaterialsName())
+                .eqIfPresent(MaterialsDO::getMaterialsTypeId, reqVO.getMaterialsTypeId())
+                .eqIfPresent(MaterialsDO::getWorkareaId, reqVO.getWorkareaId())
+                .eqIfPresent(MaterialsDO::getMaterialsCabinetId, reqVO.getMaterialsCabinetId())
+                .eqIfPresent(MaterialsDO::getServiceLife, reqVO.getServiceLife())
+                .eqIfPresent(MaterialsDO::getAvailableLife, reqVO.getAvailableLife())
+                .eqIfPresent(MaterialsDO::getServiceTimes, reqVO.getServiceTimes())
+                .eqIfPresent(MaterialsDO::getAvailableTimes, reqVO.getAvailableTimes())
+                .betweenIfPresent(MaterialsDO::getExpirationDate, reqVO.getExpirationDate())
+                .eqIfPresent(MaterialsDO::getMaterialsRfid, reqVO.getMaterialsRfid())
+                .eqIfPresent(MaterialsDO::getSupplier, reqVO.getSupplier())
+                .betweenIfPresent(MaterialsDO::getStartTime, reqVO.getStartTime())
+                .eqIfPresent(MaterialsDO::getProperties, reqVO.getProperties())
+                .eqIfPresent(MaterialsDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(MaterialsDO::getLoanState, reqVO.getLoanState())
+                .eqIfPresent(MaterialsDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(MaterialsDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsDO::getId));
+    }
+
+}

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

@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materialscabinet;
+
+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.materialscabinet.MaterialsCabinetDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.*;
+
+/**
+ * 物资柜 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsCabinetMapper extends BaseMapperX<MaterialsCabinetDO> {
+
+    default PageResult<MaterialsCabinetDO> selectPage(MaterialsCabinetPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsCabinetDO>()
+                .eqIfPresent(MaterialsCabinetDO::getCabinetCode, reqVO.getCabinetCode())
+                .likeIfPresent(MaterialsCabinetDO::getCabinetName, reqVO.getCabinetName())
+                .eqIfPresent(MaterialsCabinetDO::getHardwareId, reqVO.getHardwareId())
+                .eqIfPresent(MaterialsCabinetDO::getWorkareaId, reqVO.getWorkareaId())
+                .eqIfPresent(MaterialsCabinetDO::getWorkstationId, reqVO.getWorkstationId())
+                .eqIfPresent(MaterialsCabinetDO::getCabinetIcon, reqVO.getCabinetIcon())
+                .eqIfPresent(MaterialsCabinetDO::getCabinetPicture, reqVO.getCabinetPicture())
+                .eqIfPresent(MaterialsCabinetDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(MaterialsCabinetDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(MaterialsCabinetDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsCabinetDO::getId));
+    }
+
+}

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

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materialschangerecord;
+
+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.materialschangerecord.MaterialsChangeRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.*;
+
+/**
+ * 物资更换记录 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsChangeRecordMapper extends BaseMapperX<MaterialsChangeRecordDO> {
+
+    default PageResult<MaterialsChangeRecordDO> selectPage(MaterialsChangeRecordPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsChangeRecordDO>()
+                .eqIfPresent(MaterialsChangeRecordDO::getCheckRecordId, reqVO.getCheckRecordId())
+                .eqIfPresent(MaterialsChangeRecordDO::getOldMaterialsId, reqVO.getOldMaterialsId())
+                .eqIfPresent(MaterialsChangeRecordDO::getOldMaterialsRfid, reqVO.getOldMaterialsRfid())
+                .eqIfPresent(MaterialsChangeRecordDO::getNewMaterialsId, reqVO.getNewMaterialsId())
+                .eqIfPresent(MaterialsChangeRecordDO::getNewMaterialsRfid, reqVO.getNewMaterialsRfid())
+                .eqIfPresent(MaterialsChangeRecordDO::getChangeUserId, reqVO.getChangeUserId())
+                .betweenIfPresent(MaterialsChangeRecordDO::getChangeDate, reqVO.getChangeDate())
+                .eqIfPresent(MaterialsChangeRecordDO::getChangeType, reqVO.getChangeType())
+                .eqIfPresent(MaterialsChangeRecordDO::getOperateType, reqVO.getOperateType())
+                .eqIfPresent(MaterialsChangeRecordDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(MaterialsChangeRecordDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsChangeRecordDO::getId));
+    }
+
+}

+ 31 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialscheckplan/MaterialsCheckPlanMapper.java

@@ -0,0 +1,31 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materialscheckplan;
+
+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.materialscheckplan.MaterialsCheckPlanDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckplan.vo.*;
+
+/**
+ * 物资检查计划 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsCheckPlanMapper extends BaseMapperX<MaterialsCheckPlanDO> {
+
+    default PageResult<MaterialsCheckPlanDO> selectPage(MaterialsCheckPlanPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsCheckPlanDO>()
+                .likeIfPresent(MaterialsCheckPlanDO::getPlanName, reqVO.getPlanName())
+                .eqIfPresent(MaterialsCheckPlanDO::getWorkstationId, reqVO.getWorkstationId())
+                .betweenIfPresent(MaterialsCheckPlanDO::getPlanDate, reqVO.getPlanDate())
+                .eqIfPresent(MaterialsCheckPlanDO::getCheckUserId, reqVO.getCheckUserId())
+                .eqIfPresent(MaterialsCheckPlanDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(MaterialsCheckPlanDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsCheckPlanDO::getId));
+    }
+
+}

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

@@ -0,0 +1,36 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materialscheckrecord;
+
+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.materialscheckrecord.MaterialsCheckRecordDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.*;
+
+/**
+ * 物资检查记录 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsCheckRecordMapper extends BaseMapperX<MaterialsCheckRecordDO> {
+
+    default PageResult<MaterialsCheckRecordDO> selectPage(MaterialsCheckRecordPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsCheckRecordDO>()
+                .eqIfPresent(MaterialsCheckRecordDO::getPlanId, reqVO.getPlanId())
+                .eqIfPresent(MaterialsCheckRecordDO::getWorkstationId, reqVO.getWorkstationId())
+                .eqIfPresent(MaterialsCheckRecordDO::getCabinetId, reqVO.getCabinetId())
+                .eqIfPresent(MaterialsCheckRecordDO::getMaterialsId, reqVO.getMaterialsId())
+                .eqIfPresent(MaterialsCheckRecordDO::getCheckUserId, reqVO.getCheckUserId())
+                .betweenIfPresent(MaterialsCheckRecordDO::getCheckDate, reqVO.getCheckDate())
+                .eqIfPresent(MaterialsCheckRecordDO::getReason, reqVO.getReason())
+                .eqIfPresent(MaterialsCheckRecordDO::getMeasure, reqVO.getMeasure())
+                .eqIfPresent(MaterialsCheckRecordDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(MaterialsCheckRecordDO::getRemark, reqVO.getRemark())
+                .betweenIfPresent(MaterialsCheckRecordDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsCheckRecordDO::getId));
+    }
+
+}

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

@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materialsinstructions;
+
+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.materialsinstructions.MaterialsInstructionsDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsinstructions.vo.*;
+
+/**
+ * 物资使用说明 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsInstructionsMapper extends BaseMapperX<MaterialsInstructionsDO> {
+
+    default PageResult<MaterialsInstructionsDO> selectPage(MaterialsInstructionsPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsInstructionsDO>()
+                .eqIfPresent(MaterialsInstructionsDO::getInstructionsTitle, reqVO.getInstructionsTitle())
+                .eqIfPresent(MaterialsInstructionsDO::getMaterialsTypeId, reqVO.getMaterialsTypeId())
+                .eqIfPresent(MaterialsInstructionsDO::getFileUrl, reqVO.getFileUrl())
+                .eqIfPresent(MaterialsInstructionsDO::getFileUrlImg, reqVO.getFileUrlImg())
+                .eqIfPresent(MaterialsInstructionsDO::getFilePathImg, reqVO.getFilePathImg())
+                .eqIfPresent(MaterialsInstructionsDO::getFileType, reqVO.getFileType())
+                .eqIfPresent(MaterialsInstructionsDO::getOrderNum, reqVO.getOrderNum())
+                .eqIfPresent(MaterialsInstructionsDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(MaterialsInstructionsDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(MaterialsInstructionsDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsInstructionsDO::getId));
+    }
+
+}

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

@@ -0,0 +1,39 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materialsloan;
+
+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.materialsloan.MaterialsLoanDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsloan.vo.*;
+
+/**
+ * 物资借出 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsLoanMapper extends BaseMapperX<MaterialsLoanDO> {
+
+    default PageResult<MaterialsLoanDO> selectPage(MaterialsLoanPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsLoanDO>()
+                .eqIfPresent(MaterialsLoanDO::getMaterialsId, reqVO.getMaterialsId())
+                .eqIfPresent(MaterialsLoanDO::getLoanUserId, reqVO.getLoanUserId())
+                .eqIfPresent(MaterialsLoanDO::getLoanFromId, reqVO.getLoanFromId())
+                .betweenIfPresent(MaterialsLoanDO::getLoanTime, reqVO.getLoanTime())
+                .betweenIfPresent(MaterialsLoanDO::getReminderTime, reqVO.getReminderTime())
+                .eqIfPresent(MaterialsLoanDO::getRestitutionUserId, reqVO.getRestitutionUserId())
+                .eqIfPresent(MaterialsLoanDO::getRestitutionToId, reqVO.getRestitutionToId())
+                .betweenIfPresent(MaterialsLoanDO::getRestitutionTime, reqVO.getRestitutionTime())
+                .betweenIfPresent(MaterialsLoanDO::getActualRestitutionTime, reqVO.getActualRestitutionTime())
+                .eqIfPresent(MaterialsLoanDO::getTimeoutAlarm, reqVO.getTimeoutAlarm())
+                .eqIfPresent(MaterialsLoanDO::getRestitutionRequired, reqVO.getRestitutionRequired())
+                .eqIfPresent(MaterialsLoanDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(MaterialsLoanDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(MaterialsLoanDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsLoanDO::getId));
+    }
+
+}

+ 29 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialsplancabinet/MaterialsPlanCabinetMapper.java

@@ -0,0 +1,29 @@
+package cn.iocoder.yudao.module.iscs.dal.mysql.materialsplancabinet;
+
+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.materialsplancabinet.MaterialsPlanCabinetDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsplancabinet.vo.*;
+
+/**
+ * 物资检查计划关联物资柜 Mapper
+ *
+ * @author 芋道源码
+ */
+@Mapper
+public interface MaterialsPlanCabinetMapper extends BaseMapperX<MaterialsPlanCabinetDO> {
+
+    default PageResult<MaterialsPlanCabinetDO> selectPage(MaterialsPlanCabinetPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<MaterialsPlanCabinetDO>()
+                .eqIfPresent(MaterialsPlanCabinetDO::getSignatureImg, reqVO.getSignatureImg())
+                .betweenIfPresent(MaterialsPlanCabinetDO::getSignatureTime, reqVO.getSignatureTime())
+                .eqIfPresent(MaterialsPlanCabinetDO::getSubmit, reqVO.getSubmit())
+                .betweenIfPresent(MaterialsPlanCabinetDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(MaterialsPlanCabinetDO::getId));
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materials/MaterialsService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materials;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materials.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materials.MaterialsDO;
+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 MaterialsService extends IService<MaterialsDO> {
+
+    /**
+     * 创建物资
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterials(@Valid MaterialsSaveReqVO createReqVO);
+
+    /**
+     * 更新物资
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterials(@Valid MaterialsSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资
+     *
+     * @param id 编号
+     */
+    void deleteMaterials(Long id);
+
+    /**
+    * 批量删除物资
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsListByIds(List<Long> ids);
+
+    /**
+     * 获得物资
+     *
+     * @param id 编号
+     * @return 物资
+     */
+    MaterialsDO getMaterials(Long id);
+
+    /**
+     * 获得物资分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资分页
+     */
+    PageResult<MaterialsDO> getMaterialsPage(MaterialsPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materials/MaterialsServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materials;
+
+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.materials.vo.MaterialsPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materials.vo.MaterialsSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materials.MaterialsDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materials.MaterialsMapper;
+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 MaterialsServiceImpl extends ServiceImpl<MaterialsMapper, MaterialsDO> implements MaterialsService {
+
+    @Resource
+    private MaterialsMapper materialsMapper;
+
+    @Override
+    public Long createMaterials(MaterialsSaveReqVO createReqVO) {
+        // 插入
+        MaterialsDO materials = BeanUtils.toBean(createReqVO, MaterialsDO.class);
+        materialsMapper.insert(materials);
+
+        // 返回
+        return materials.getId();
+    }
+
+    @Override
+    public void updateMaterials(MaterialsSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsExists(updateReqVO.getId());
+        // 更新
+        MaterialsDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsDO.class);
+        materialsMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterials(Long id) {
+        // 校验存在
+        validateMaterialsExists(id);
+        // 删除
+        materialsMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsExists(ids);
+        // 删除
+        materialsMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsExists(List<Long> ids) {
+        List<MaterialsDO> list = materialsMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsExists(Long id) {
+        if (materialsMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsDO getMaterials(Long id) {
+        return materialsMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsDO> getMaterialsPage(MaterialsPageReqVO pageReqVO) {
+        return materialsMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscabinet/MaterialsCabinetService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materialscabinet;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscabinet.MaterialsCabinetDO;
+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 MaterialsCabinetService extends IService<MaterialsCabinetDO> {
+
+    /**
+     * 创建物资柜
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsCabinet(@Valid MaterialsCabinetSaveReqVO createReqVO);
+
+    /**
+     * 更新物资柜
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsCabinet(@Valid MaterialsCabinetSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资柜
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsCabinet(Long id);
+
+    /**
+    * 批量删除物资柜
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsCabinetListByIds(List<Long> ids);
+
+    /**
+     * 获得物资柜
+     *
+     * @param id 编号
+     * @return 物资柜
+     */
+    MaterialsCabinetDO getMaterialsCabinet(Long id);
+
+    /**
+     * 获得物资柜分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资柜分页
+     */
+    PageResult<MaterialsCabinetDO> getMaterialsCabinetPage(MaterialsCabinetPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscabinet/MaterialsCabinetServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materialscabinet;
+
+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.materialscabinet.vo.MaterialsCabinetPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.MaterialsCabinetSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscabinet.MaterialsCabinetDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materialscabinet.MaterialsCabinetMapper;
+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 MaterialsCabinetServiceImpl extends ServiceImpl<MaterialsCabinetMapper, MaterialsCabinetDO> implements MaterialsCabinetService {
+
+    @Resource
+    private MaterialsCabinetMapper materialsCabinetMapper;
+
+    @Override
+    public Long createMaterialsCabinet(MaterialsCabinetSaveReqVO createReqVO) {
+        // 插入
+        MaterialsCabinetDO materialsCabinet = BeanUtils.toBean(createReqVO, MaterialsCabinetDO.class);
+        materialsCabinetMapper.insert(materialsCabinet);
+
+        // 返回
+        return materialsCabinet.getId();
+    }
+
+    @Override
+    public void updateMaterialsCabinet(MaterialsCabinetSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsCabinetExists(updateReqVO.getId());
+        // 更新
+        MaterialsCabinetDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsCabinetDO.class);
+        materialsCabinetMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterialsCabinet(Long id) {
+        // 校验存在
+        validateMaterialsCabinetExists(id);
+        // 删除
+        materialsCabinetMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsCabinetListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsCabinetExists(ids);
+        // 删除
+        materialsCabinetMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsCabinetExists(List<Long> ids) {
+        List<MaterialsCabinetDO> list = materialsCabinetMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_CABINET_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsCabinetExists(Long id) {
+        if (materialsCabinetMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_CABINET_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsCabinetDO getMaterialsCabinet(Long id) {
+        return materialsCabinetMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsCabinetDO> getMaterialsCabinetPage(MaterialsCabinetPageReqVO pageReqVO) {
+        return materialsCabinetMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialschangerecord/MaterialsChangeRecordService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materialschangerecord;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
+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 MaterialsChangeRecordService extends IService<MaterialsChangeRecordDO> {
+
+    /**
+     * 创建物资更换记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsChangeRecord(@Valid MaterialsChangeRecordSaveReqVO createReqVO);
+
+    /**
+     * 更新物资更换记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsChangeRecord(@Valid MaterialsChangeRecordSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资更换记录
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsChangeRecord(Long id);
+
+    /**
+    * 批量删除物资更换记录
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsChangeRecordListByIds(List<Long> ids);
+
+    /**
+     * 获得物资更换记录
+     *
+     * @param id 编号
+     * @return 物资更换记录
+     */
+    MaterialsChangeRecordDO getMaterialsChangeRecord(Long id);
+
+    /**
+     * 获得物资更换记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资更换记录分页
+     */
+    PageResult<MaterialsChangeRecordDO> getMaterialsChangeRecordPage(MaterialsChangeRecordPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialschangerecord/MaterialsChangeRecordServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materialschangerecord;
+
+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.materialschangerecord.vo.MaterialsChangeRecordPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialschangerecord.vo.MaterialsChangeRecordSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialschangerecord.MaterialsChangeRecordDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materialschangerecord.MaterialsChangeRecordMapper;
+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 MaterialsChangeRecordServiceImpl extends ServiceImpl<MaterialsChangeRecordMapper, MaterialsChangeRecordDO> implements MaterialsChangeRecordService {
+
+    @Resource
+    private MaterialsChangeRecordMapper materialsChangeRecordMapper;
+
+    @Override
+    public Long createMaterialsChangeRecord(MaterialsChangeRecordSaveReqVO createReqVO) {
+        // 插入
+        MaterialsChangeRecordDO materialsChangeRecord = BeanUtils.toBean(createReqVO, MaterialsChangeRecordDO.class);
+        materialsChangeRecordMapper.insert(materialsChangeRecord);
+
+        // 返回
+        return materialsChangeRecord.getId();
+    }
+
+    @Override
+    public void updateMaterialsChangeRecord(MaterialsChangeRecordSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsChangeRecordExists(updateReqVO.getId());
+        // 更新
+        MaterialsChangeRecordDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsChangeRecordDO.class);
+        materialsChangeRecordMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterialsChangeRecord(Long id) {
+        // 校验存在
+        validateMaterialsChangeRecordExists(id);
+        // 删除
+        materialsChangeRecordMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsChangeRecordListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsChangeRecordExists(ids);
+        // 删除
+        materialsChangeRecordMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsChangeRecordExists(List<Long> ids) {
+        List<MaterialsChangeRecordDO> list = materialsChangeRecordMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_CHANGE_RECORD_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsChangeRecordExists(Long id) {
+        if (materialsChangeRecordMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_CHANGE_RECORD_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsChangeRecordDO getMaterialsChangeRecord(Long id) {
+        return materialsChangeRecordMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsChangeRecordDO> getMaterialsChangeRecordPage(MaterialsChangeRecordPageReqVO pageReqVO) {
+        return materialsChangeRecordMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckplan/MaterialsCheckPlanService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materialscheckplan;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckplan.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckplan.MaterialsCheckPlanDO;
+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 MaterialsCheckPlanService extends IService<MaterialsCheckPlanDO> {
+
+    /**
+     * 创建物资检查计划
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsCheckPlan(@Valid MaterialsCheckPlanSaveReqVO createReqVO);
+
+    /**
+     * 更新物资检查计划
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsCheckPlan(@Valid MaterialsCheckPlanSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资检查计划
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsCheckPlan(Long id);
+
+    /**
+    * 批量删除物资检查计划
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsCheckPlanListByIds(List<Long> ids);
+
+    /**
+     * 获得物资检查计划
+     *
+     * @param id 编号
+     * @return 物资检查计划
+     */
+    MaterialsCheckPlanDO getMaterialsCheckPlan(Long id);
+
+    /**
+     * 获得物资检查计划分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资检查计划分页
+     */
+    PageResult<MaterialsCheckPlanDO> getMaterialsCheckPlanPage(MaterialsCheckPlanPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckplan/MaterialsCheckPlanServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materialscheckplan;
+
+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.materialscheckplan.vo.MaterialsCheckPlanPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckplan.vo.MaterialsCheckPlanSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckplan.MaterialsCheckPlanDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materialscheckplan.MaterialsCheckPlanMapper;
+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 MaterialsCheckPlanServiceImpl extends ServiceImpl<MaterialsCheckPlanMapper, MaterialsCheckPlanDO> implements MaterialsCheckPlanService {
+
+    @Resource
+    private MaterialsCheckPlanMapper materialsCheckPlanMapper;
+
+    @Override
+    public Long createMaterialsCheckPlan(MaterialsCheckPlanSaveReqVO createReqVO) {
+        // 插入
+        MaterialsCheckPlanDO materialsCheckPlan = BeanUtils.toBean(createReqVO, MaterialsCheckPlanDO.class);
+        materialsCheckPlanMapper.insert(materialsCheckPlan);
+
+        // 返回
+        return materialsCheckPlan.getId();
+    }
+
+    @Override
+    public void updateMaterialsCheckPlan(MaterialsCheckPlanSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsCheckPlanExists(updateReqVO.getId());
+        // 更新
+        MaterialsCheckPlanDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsCheckPlanDO.class);
+        materialsCheckPlanMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterialsCheckPlan(Long id) {
+        // 校验存在
+        validateMaterialsCheckPlanExists(id);
+        // 删除
+        materialsCheckPlanMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsCheckPlanListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsCheckPlanExists(ids);
+        // 删除
+        materialsCheckPlanMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsCheckPlanExists(List<Long> ids) {
+        List<MaterialsCheckPlanDO> list = materialsCheckPlanMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_CHECK_PLAN_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsCheckPlanExists(Long id) {
+        if (materialsCheckPlanMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_CHECK_PLAN_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsCheckPlanDO getMaterialsCheckPlan(Long id) {
+        return materialsCheckPlanMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsCheckPlanDO> getMaterialsCheckPlanPage(MaterialsCheckPlanPageReqVO pageReqVO) {
+        return materialsCheckPlanMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materialscheckrecord;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckrecord.MaterialsCheckRecordDO;
+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 MaterialsCheckRecordService extends IService<MaterialsCheckRecordDO> {
+
+    /**
+     * 创建物资检查记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsCheckRecord(@Valid MaterialsCheckRecordSaveReqVO createReqVO);
+
+    /**
+     * 更新物资检查记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsCheckRecord(@Valid MaterialsCheckRecordSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资检查记录
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsCheckRecord(Long id);
+
+    /**
+    * 批量删除物资检查记录
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsCheckRecordListByIds(List<Long> ids);
+
+    /**
+     * 获得物资检查记录
+     *
+     * @param id 编号
+     * @return 物资检查记录
+     */
+    MaterialsCheckRecordDO getMaterialsCheckRecord(Long id);
+
+    /**
+     * 获得物资检查记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资检查记录分页
+     */
+    PageResult<MaterialsCheckRecordDO> getMaterialsCheckRecordPage(MaterialsCheckRecordPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materialscheckrecord;
+
+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.materialscheckrecord.vo.MaterialsCheckRecordPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.MaterialsCheckRecordSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckrecord.MaterialsCheckRecordDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materialscheckrecord.MaterialsCheckRecordMapper;
+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 MaterialsCheckRecordServiceImpl extends ServiceImpl<MaterialsCheckRecordMapper, MaterialsCheckRecordDO> implements MaterialsCheckRecordService {
+
+    @Resource
+    private MaterialsCheckRecordMapper materialsCheckRecordMapper;
+
+    @Override
+    public Long createMaterialsCheckRecord(MaterialsCheckRecordSaveReqVO createReqVO) {
+        // 插入
+        MaterialsCheckRecordDO materialsCheckRecord = BeanUtils.toBean(createReqVO, MaterialsCheckRecordDO.class);
+        materialsCheckRecordMapper.insert(materialsCheckRecord);
+
+        // 返回
+        return materialsCheckRecord.getId();
+    }
+
+    @Override
+    public void updateMaterialsCheckRecord(MaterialsCheckRecordSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsCheckRecordExists(updateReqVO.getId());
+        // 更新
+        MaterialsCheckRecordDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsCheckRecordDO.class);
+        materialsCheckRecordMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterialsCheckRecord(Long id) {
+        // 校验存在
+        validateMaterialsCheckRecordExists(id);
+        // 删除
+        materialsCheckRecordMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsCheckRecordListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsCheckRecordExists(ids);
+        // 删除
+        materialsCheckRecordMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsCheckRecordExists(List<Long> ids) {
+        List<MaterialsCheckRecordDO> list = materialsCheckRecordMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_CHECK_RECORD_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsCheckRecordExists(Long id) {
+        if (materialsCheckRecordMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_CHECK_RECORD_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsCheckRecordDO getMaterialsCheckRecord(Long id) {
+        return materialsCheckRecordMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsCheckRecordDO> getMaterialsCheckRecordPage(MaterialsCheckRecordPageReqVO pageReqVO) {
+        return materialsCheckRecordMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsinstructions/MaterialsInstructionsService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materialsinstructions;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsinstructions.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsinstructions.MaterialsInstructionsDO;
+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 MaterialsInstructionsService extends IService<MaterialsInstructionsDO> {
+
+    /**
+     * 创建物资使用说明
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsInstructions(@Valid MaterialsInstructionsSaveReqVO createReqVO);
+
+    /**
+     * 更新物资使用说明
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsInstructions(@Valid MaterialsInstructionsSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资使用说明
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsInstructions(Long id);
+
+    /**
+    * 批量删除物资使用说明
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsInstructionsListByIds(List<Long> ids);
+
+    /**
+     * 获得物资使用说明
+     *
+     * @param id 编号
+     * @return 物资使用说明
+     */
+    MaterialsInstructionsDO getMaterialsInstructions(Long id);
+
+    /**
+     * 获得物资使用说明分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资使用说明分页
+     */
+    PageResult<MaterialsInstructionsDO> getMaterialsInstructionsPage(MaterialsInstructionsPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsinstructions/MaterialsInstructionsServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materialsinstructions;
+
+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.materialsinstructions.vo.MaterialsInstructionsPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsinstructions.vo.MaterialsInstructionsSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsinstructions.MaterialsInstructionsDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materialsinstructions.MaterialsInstructionsMapper;
+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 MaterialsInstructionsServiceImpl extends ServiceImpl<MaterialsInstructionsMapper, MaterialsInstructionsDO> implements MaterialsInstructionsService {
+
+    @Resource
+    private MaterialsInstructionsMapper materialsInstructionsMapper;
+
+    @Override
+    public Long createMaterialsInstructions(MaterialsInstructionsSaveReqVO createReqVO) {
+        // 插入
+        MaterialsInstructionsDO materialsInstructions = BeanUtils.toBean(createReqVO, MaterialsInstructionsDO.class);
+        materialsInstructionsMapper.insert(materialsInstructions);
+
+        // 返回
+        return materialsInstructions.getId();
+    }
+
+    @Override
+    public void updateMaterialsInstructions(MaterialsInstructionsSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsInstructionsExists(updateReqVO.getId());
+        // 更新
+        MaterialsInstructionsDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsInstructionsDO.class);
+        materialsInstructionsMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterialsInstructions(Long id) {
+        // 校验存在
+        validateMaterialsInstructionsExists(id);
+        // 删除
+        materialsInstructionsMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsInstructionsListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsInstructionsExists(ids);
+        // 删除
+        materialsInstructionsMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsInstructionsExists(List<Long> ids) {
+        List<MaterialsInstructionsDO> list = materialsInstructionsMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_INSTRUCTIONS_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsInstructionsExists(Long id) {
+        if (materialsInstructionsMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_INSTRUCTIONS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsInstructionsDO getMaterialsInstructions(Long id) {
+        return materialsInstructionsMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsInstructionsDO> getMaterialsInstructionsPage(MaterialsInstructionsPageReqVO pageReqVO) {
+        return materialsInstructionsMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsloan/MaterialsLoanService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materialsloan;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsloan.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsloan.MaterialsLoanDO;
+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 MaterialsLoanService extends IService<MaterialsLoanDO> {
+
+    /**
+     * 创建物资借出
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsLoan(@Valid MaterialsLoanSaveReqVO createReqVO);
+
+    /**
+     * 更新物资借出
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsLoan(@Valid MaterialsLoanSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资借出
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsLoan(Long id);
+
+    /**
+    * 批量删除物资借出
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsLoanListByIds(List<Long> ids);
+
+    /**
+     * 获得物资借出
+     *
+     * @param id 编号
+     * @return 物资借出
+     */
+    MaterialsLoanDO getMaterialsLoan(Long id);
+
+    /**
+     * 获得物资借出分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资借出分页
+     */
+    PageResult<MaterialsLoanDO> getMaterialsLoanPage(MaterialsLoanPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsloan/MaterialsLoanServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materialsloan;
+
+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.materialsloan.vo.MaterialsLoanPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsloan.vo.MaterialsLoanSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsloan.MaterialsLoanDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materialsloan.MaterialsLoanMapper;
+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 MaterialsLoanServiceImpl extends ServiceImpl<MaterialsLoanMapper, MaterialsLoanDO> implements MaterialsLoanService {
+
+    @Resource
+    private MaterialsLoanMapper materialsLoanMapper;
+
+    @Override
+    public Long createMaterialsLoan(MaterialsLoanSaveReqVO createReqVO) {
+        // 插入
+        MaterialsLoanDO materialsLoan = BeanUtils.toBean(createReqVO, MaterialsLoanDO.class);
+        materialsLoanMapper.insert(materialsLoan);
+
+        // 返回
+        return materialsLoan.getId();
+    }
+
+    @Override
+    public void updateMaterialsLoan(MaterialsLoanSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsLoanExists(updateReqVO.getId());
+        // 更新
+        MaterialsLoanDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsLoanDO.class);
+        materialsLoanMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterialsLoan(Long id) {
+        // 校验存在
+        validateMaterialsLoanExists(id);
+        // 删除
+        materialsLoanMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsLoanListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsLoanExists(ids);
+        // 删除
+        materialsLoanMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsLoanExists(List<Long> ids) {
+        List<MaterialsLoanDO> list = materialsLoanMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_LOAN_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsLoanExists(Long id) {
+        if (materialsLoanMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_LOAN_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsLoanDO getMaterialsLoan(Long id) {
+        return materialsLoanMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsLoanDO> getMaterialsLoanPage(MaterialsLoanPageReqVO pageReqVO) {
+        return materialsLoanMapper.selectPage(pageReqVO);
+    }
+
+}

+ 63 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsplancabinet/MaterialsPlanCabinetService.java

@@ -0,0 +1,63 @@
+package cn.iocoder.yudao.module.iscs.service.materialsplancabinet;
+
+import java.util.*;
+import jakarta.validation.*;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsplancabinet.vo.*;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsplancabinet.MaterialsPlanCabinetDO;
+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 MaterialsPlanCabinetService extends IService<MaterialsPlanCabinetDO> {
+
+    /**
+     * 创建物资检查计划关联物资柜
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createMaterialsPlanCabinet(@Valid MaterialsPlanCabinetSaveReqVO createReqVO);
+
+    /**
+     * 更新物资检查计划关联物资柜
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateMaterialsPlanCabinet(@Valid MaterialsPlanCabinetSaveReqVO updateReqVO);
+
+    /**
+     * 删除物资检查计划关联物资柜
+     *
+     * @param id 编号
+     */
+    void deleteMaterialsPlanCabinet(Long id);
+
+    /**
+    * 批量删除物资检查计划关联物资柜
+    *
+    * @param ids 编号
+    */
+    void deleteMaterialsPlanCabinetListByIds(List<Long> ids);
+
+    /**
+     * 获得物资检查计划关联物资柜
+     *
+     * @param id 编号
+     * @return 物资检查计划关联物资柜
+     */
+    MaterialsPlanCabinetDO getMaterialsPlanCabinet(Long id);
+
+    /**
+     * 获得物资检查计划关联物资柜分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 物资检查计划关联物资柜分页
+     */
+    PageResult<MaterialsPlanCabinetDO> getMaterialsPlanCabinetPage(MaterialsPlanCabinetPageReqVO pageReqVO);
+
+}

+ 87 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialsplancabinet/MaterialsPlanCabinetServiceImpl.java

@@ -0,0 +1,87 @@
+package cn.iocoder.yudao.module.iscs.service.materialsplancabinet;
+
+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.materialsplancabinet.vo.MaterialsPlanCabinetPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialsplancabinet.vo.MaterialsPlanCabinetSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsplancabinet.MaterialsPlanCabinetDO;
+import cn.iocoder.yudao.module.iscs.dal.mysql.materialsplancabinet.MaterialsPlanCabinetMapper;
+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 MaterialsPlanCabinetServiceImpl extends ServiceImpl<MaterialsPlanCabinetMapper, MaterialsPlanCabinetDO> implements MaterialsPlanCabinetService {
+
+    @Resource
+    private MaterialsPlanCabinetMapper materialsPlanCabinetMapper;
+
+    @Override
+    public Long createMaterialsPlanCabinet(MaterialsPlanCabinetSaveReqVO createReqVO) {
+        // 插入
+        MaterialsPlanCabinetDO materialsPlanCabinet = BeanUtils.toBean(createReqVO, MaterialsPlanCabinetDO.class);
+        materialsPlanCabinetMapper.insert(materialsPlanCabinet);
+
+        // 返回
+        return materialsPlanCabinet.getId();
+    }
+
+    @Override
+    public void updateMaterialsPlanCabinet(MaterialsPlanCabinetSaveReqVO updateReqVO) {
+        // 校验存在
+        validateMaterialsPlanCabinetExists(updateReqVO.getPlanId());
+        // 更新
+        MaterialsPlanCabinetDO updateObj = BeanUtils.toBean(updateReqVO, MaterialsPlanCabinetDO.class);
+        materialsPlanCabinetMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteMaterialsPlanCabinet(Long id) {
+        // 校验存在
+        validateMaterialsPlanCabinetExists(id);
+        // 删除
+        materialsPlanCabinetMapper.deleteById(id);
+    }
+
+    @Override
+        public void deleteMaterialsPlanCabinetListByIds(List<Long> ids) {
+        // 校验存在
+        validateMaterialsPlanCabinetExists(ids);
+        // 删除
+        materialsPlanCabinetMapper.deleteByIds(ids);
+        }
+
+    private void validateMaterialsPlanCabinetExists(List<Long> ids) {
+        List<MaterialsPlanCabinetDO> list = materialsPlanCabinetMapper.selectByIds(ids);
+        if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
+            /// throw exception(MATERIALS_PLAN_CABINET_NOT_EXISTS);
+        }
+    }
+
+    private void validateMaterialsPlanCabinetExists(Long id) {
+        if (materialsPlanCabinetMapper.selectById(id) == null) {
+            /// throw exception(MATERIALS_PLAN_CABINET_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public MaterialsPlanCabinetDO getMaterialsPlanCabinet(Long id) {
+        return materialsPlanCabinetMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<MaterialsPlanCabinetDO> getMaterialsPlanCabinetPage(MaterialsPlanCabinetPageReqVO pageReqVO) {
+        return materialsPlanCabinetMapper.selectPage(pageReqVO);
+    }
+
+}

+ 12 - 0
yudao-module-iscs/src/main/java/resources/mapper/MaterialsCabinetMapper.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.materialscabinet.MaterialsCabinetMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/MaterialsChangeRecordMapper.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.materialschangerecord.MaterialsChangeRecordMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/MaterialsCheckPlanMapper.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.materialscheckplan.MaterialsCheckPlanMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/MaterialsCheckRecordMapper.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.materialscheckrecord.MaterialsCheckRecordMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/MaterialsInstructionsMapper.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.materialsinstructions.MaterialsInstructionsMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/MaterialsLoanMapper.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.materialsloan.MaterialsLoanMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/MaterialsMapper.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.materials.MaterialsMapper">
+
+    <!--
+        一般情况下,尽可能使用 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/MaterialsPlanCabinetMapper.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.materialsplancabinet.MaterialsPlanCabinetMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>