车车 4 місяців тому
батько
коміт
72d5b7e8bb
18 змінених файлів з 502 додано та 285 видалено
  1. 92 95
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/isolationpoint/IsolationPointController.java
  2. 16 4
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/isolationpoint/vo/IsolationPointPageReqVO.java
  3. 35 5
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/isolationpoint/vo/IsolationPointRespVO.java
  4. 1 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/lotostation/LotoStationController.java
  5. 1 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/mappoint/MapPointController.java
  6. 1 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/mappoint/vo/MapPointRespVO.java
  7. 94 95
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/MaterialsCheckRecordController.java
  8. 25 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/vo/CheckRecordParamVO.java
  9. 4 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscheckplan/MaterialsCheckPlanDO.java
  10. 8 8
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dataobject/materialscheckrecord/MaterialsCheckRecordDO.java
  11. 1 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dto/hardwareApi/UpdateSwitchStatusDTO.java
  12. 3 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/isolationpoint/IsolationPointMapper.java
  13. 2 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/isolationpoint/IsolationPointService.java
  14. 29 2
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/isolationpoint/IsolationPointServiceImpl.java
  15. 1 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/map/MapServiceImpl.java
  16. 65 63
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordService.java
  17. 62 7
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordServiceImpl.java
  18. 62 0
      yudao-module-iscs/src/main/resources/mapper/IsolationPointMapper.xml

+ 92 - 95
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/isolationpoint/IsolationPointController.java

@@ -1,95 +1,92 @@
-package cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint;
-
-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.isolationpoint.vo.*;
-import cn.iocoder.yudao.module.iscs.dal.dataobject.isolationpoint.IsolationPointDO;
-import cn.iocoder.yudao.module.iscs.service.isolationpoint.IsolationPointService;
-
-@Tag(name = "管理后台 - 隔离点")
-@RestController
-@RequestMapping("/iscs/isolation-point")
-@Validated
-public class IsolationPointController {
-
-    @Resource
-    private IsolationPointService isolationPointService;
-
-    @PostMapping("/insertIsolationPoint")
-    @Operation(summary = "创建隔离点")
-    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:create')")
-    public CommonResult<Long> insertIsolationPoint(@Valid @RequestBody IsolationPointSaveReqVO createReqVO) {
-        return success(isolationPointService.createIsolationPoint(createReqVO));
-    }
-
-    @PutMapping("/updateIsolationPoint")
-    @Operation(summary = "更新隔离点")
-    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:update')")
-    public CommonResult<Boolean> updateIsolationPoint(@Valid @RequestBody IsolationPointSaveReqVO updateReqVO) {
-        isolationPointService.updateIsolationPoint(updateReqVO);
-        return success(true);
-    }
-
-    @DeleteMapping("/deleteIsolationPointList")
-    @Parameter(name = "ids", description = "编号", required = true)
-    @Operation(summary = "批量删除隔离点")
-                @PreAuthorize("@ss.hasPermission('iscs:isolation-point:delete')")
-    public CommonResult<Boolean> deleteIsolationPointList(@RequestParam("ids") List<Long> ids) {
-        isolationPointService.deleteIsolationPointListByIds(ids);
-        return success(true);
-    }
-
-    @GetMapping("/selectIsolationPointById")
-    @Operation(summary = "获得隔离点")
-    @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:query')")
-    public CommonResult<IsolationPointRespVO> selectIsolationPointById(@RequestParam("id") Long id) {
-        IsolationPointDO isolationPoint = isolationPointService.getIsolationPoint(id);
-        return success(BeanUtils.toBean(isolationPoint, IsolationPointRespVO.class));
-    }
-
-    @GetMapping("/getIsolationPointPage")
-    @Operation(summary = "获得隔离点分页")
-    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:query')")
-    public CommonResult<PageResult<IsolationPointRespVO>> getIsolationPointPage(@Valid IsolationPointPageReqVO pageReqVO) {
-        PageResult<IsolationPointDO> pageResult = isolationPointService.getIsolationPointPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IsolationPointRespVO.class));
-    }
-
-    @GetMapping("/exportIsolationPointExcel")
-    @Operation(summary = "导出隔离点 Excel")
-    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:export')")
-    @ApiAccessLog(operateType = EXPORT)
-    public void exportIsolationPointExcel(@Valid IsolationPointPageReqVO pageReqVO,
-              HttpServletResponse response) throws IOException {
-        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IsolationPointDO> list = isolationPointService.getIsolationPointPage(pageReqVO).getList();
-        // 导出 Excel
-        ExcelUtils.write(response, "隔离点.xls", "数据", IsolationPointRespVO.class,
-                        BeanUtils.toBean(list, IsolationPointRespVO.class));
-    }
-
-}
+package cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.isolationpoint.IsolationPointDO;
+import cn.iocoder.yudao.module.iscs.service.isolationpoint.IsolationPointService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 隔离点")
+@RestController
+@RequestMapping("/iscs/isolation-point")
+@Validated
+public class IsolationPointController {
+
+    @Resource
+    private IsolationPointService isolationPointService;
+
+    @PostMapping("/insertIsolationPoint")
+    @Operation(summary = "创建隔离点")
+    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:create')")
+    public CommonResult<Long> insertIsolationPoint(@Valid @RequestBody IsolationPointSaveReqVO createReqVO) {
+        return success(isolationPointService.createIsolationPoint(createReqVO));
+    }
+
+    @PutMapping("/updateIsolationPoint")
+    @Operation(summary = "更新隔离点")
+    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:update')")
+    public CommonResult<Boolean> updateIsolationPoint(@Valid @RequestBody IsolationPointSaveReqVO updateReqVO) {
+        isolationPointService.updateIsolationPoint(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/deleteIsolationPointList")
+    @Parameter(name = "ids", description = "编号", required = true)
+    @Operation(summary = "批量删除隔离点")
+                @PreAuthorize("@ss.hasPermission('iscs:isolation-point:delete')")
+    public CommonResult<Boolean> deleteIsolationPointList(@RequestParam("ids") List<Long> ids) {
+        isolationPointService.deleteIsolationPointListByIds(ids);
+        return success(true);
+    }
+
+    @GetMapping("/selectIsolationPointById")
+    @Operation(summary = "获得隔离点")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:query')")
+    public CommonResult<IsolationPointRespVO> selectIsolationPointById(@RequestParam("id") Long id) {
+        IsolationPointDO isolationPoint = isolationPointService.getIsolationPoint(id);
+        return success(BeanUtils.toBean(isolationPoint, IsolationPointRespVO.class));
+    }
+
+    @GetMapping("/getIsolationPointPage")
+    @Operation(summary = "获得隔离点分页")
+    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:query')")
+    public CommonResult<PageResult<IsolationPointRespVO>> getIsolationPointPage(@Valid IsolationPointPageReqVO pageReqVO) {
+        PageResult<IsolationPointRespVO> pageResult = isolationPointService.getIsolationPointPage(pageReqVO);
+        return success(pageResult);
+    }
+
+    @GetMapping("/exportIsolationPointExcel")
+    @Operation(summary = "导出隔离点 Excel")
+    @PreAuthorize("@ss.hasPermission('iscs:isolation-point:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportIsolationPointExcel(@Valid IsolationPointPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IsolationPointRespVO> list = isolationPointService.getIsolationPointPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "隔离点.xls", "数据", IsolationPointRespVO.class, list);
+    }
+
+}

+ 16 - 4
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/isolationpoint/vo/IsolationPointPageReqVO.java

@@ -1,10 +1,10 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo;
 
-import lombok.*;
-import java.util.*;
-import io.swagger.v3.oas.annotations.media.Schema;
 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;
@@ -64,8 +64,20 @@ public class IsolationPointPageReqVO extends PageParam {
     @Schema(description = "备注", example = "随便")
     private String remark;
 
+    @Schema(description = "删除")
+    private Integer deleted;
+
     @Schema(description = "创建时间")
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
-}
+    @Schema(description = "开始时间")
+    private String startTime;
+
+    @Schema(description = "结束时间")
+    private String endTime;
+
+    @Schema(description = "工艺id")
+    private Long machineryId;
+
+}

+ 35 - 5
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/isolationpoint/vo/IsolationPointRespVO.java

@@ -1,11 +1,13 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
+import lombok.Data;
+
 import java.time.LocalDateTime;
-import com.alibaba.excel.annotation.*;
+import java.util.Date;
 
 @Schema(description = "管理后台 - 隔离点 Response VO")
 @Data
@@ -88,4 +90,32 @@ public class IsolationPointRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
-}
+    @Schema(description = "挂锁类型名称")
+    private String lockTypeName;
+
+    @Schema(description = "挂锁类型编码")
+    private String lockTypeCode;
+
+    @Schema(description = "挂锁类型图标")
+    private String lockTypeIcon;
+
+    @Schema(description = "挂锁类型图片")
+    private String lockTypeImg;
+
+    @Schema(description = "锁具类型图片")
+    private String locksetTypeImg;
+
+    @Schema(description = "岗位名称")
+    private String workstationName;
+
+    @Schema(description = "所属电柜Name")
+    private String lotoName;
+
+    @Schema(description = "岗位名称")
+    private String machineryName;
+
+    @Schema(description = "开关状态最近更新时间")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date switchLastUpdateTime;
+
+}

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/lotostation/LotoStationController.java

@@ -115,7 +115,7 @@ public class LotoStationController {
 
     @PostMapping("/updatePointsBindingLoto")
     @Operation(summary = "隔离点绑定/解绑电柜")
-    @PreAuthorize("@ss.hasPermi('iscs:station:edit')")
+    @PreAuthorize("@ss.hasPermission('iscs:station:update')")
     public CommonResult<Boolean> updatePointsBindingLoto(@RequestBody @Parameter(name = "vo", description = "修改数据类,放到body") BindingPointVO vo)
     {
         return CommonResult.success(lotoStationService.updatePointsBindingLoto(vo));

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/mappoint/MapPointController.java

@@ -94,7 +94,7 @@ public class MapPointController {
 
     @PostMapping("/updateMapPointList")
     @Operation(summary = "地图点位数据变更(绑定,位移,解绑)")
-    @PreAuthorize("@ss.hasPermi('iscs:map-point:add')")
+    @PreAuthorize("@ss.hasPermission('iscs:map-point:update')")
     @ApiAccessLog(operateType = UPDATE)
     public CommonResult<Boolean> updateMapPointList(@RequestBody @Parameter(name = "isMapPoint", description = "新增数据类,放到body") MapPointParamDTO dto)
     {

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/mappoint/vo/MapPointRespVO.java

@@ -66,7 +66,7 @@ public class MapPointRespVO {
     private String pointSerialNumber;
 
     @Schema(description = "开关状态(0-开 1-关)")
-    private String switchStatus;
+    private Integer switchStatus;
 
     @Schema(description = "开关状态最近更新时间")
     @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")

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

@@ -1,95 +1,94 @@
-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));
-    }
-
-}
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.CheckRecordParamVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.MaterialsCheckRecordPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.MaterialsCheckRecordRespVO;
+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.service.materialscheckrecord.MaterialsCheckRecordService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@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 CheckRecordParamVO vo) {
+        return success(materialsCheckRecordService.createMaterialsCheckRecord(vo));
+    }
+
+    @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));
+    }
+
+}

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

@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo;
+
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckrecord.MaterialsCheckRecordDO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 物资检查记录对象 is_materials_check_record
+ *
+ * @author cgj
+ * @date 2025-01-14
+ */
+@Data
+public class CheckRecordParamVO
+{
+
+    @Schema(description = "list")
+    private List<MaterialsCheckRecordDO> list;
+
+    @Schema(description = "签名地址")
+    private String signatureImg;
+
+}

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

@@ -48,6 +48,10 @@ public class MaterialsCheckPlanDO extends BaseDO {
      * 备注
      */
     private String remark;
+    /**
+     * 检查状态(字典checking_status)
+     */
+    private Integer status;
 
 
 }

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

@@ -1,12 +1,12 @@
 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;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.util.Date;
 
 /**
  * 物资检查记录 DO
@@ -51,7 +51,7 @@ public class MaterialsCheckRecordDO extends BaseDO {
     /**
      * 检查时间
      */
-    private LocalDateTime checkDate;
+    private Date checkDate;
     /**
      * 异常原因(字典exceptions_status)
      */
@@ -70,4 +70,4 @@ public class MaterialsCheckRecordDO extends BaseDO {
     private String remark;
 
 
-}
+}

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/dto/hardwareApi/UpdateSwitchStatusDTO.java

@@ -19,7 +19,7 @@ public class UpdateSwitchStatusDTO {
     private String pointSerialNumber;
 
     @Schema(description = "开关状态(0-开 1-关)")
-    private String switchStatus;
+    private Integer switchStatus;
 
     @Schema(description = "开关状态最近更新时间")
     @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")

+ 3 - 0
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/isolationpoint/IsolationPointMapper.java

@@ -4,8 +4,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.PointDetailVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.isolationpoint.IsolationPointDO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -44,5 +46,6 @@ public interface IsolationPointMapper extends BaseMapperX<IsolationPointDO> {
 
     List<PointDetailVO> getPointDetailList(@Param(value = "pointIds") List<Long> pointIds);
 
+    Page<IsolationPointRespVO> getIsolationPointPage(Page<IsolationPointDO> page, @Param(value = "vo") IsolationPointPageReqVO vo);
 
 }

+ 2 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/isolationpoint/IsolationPointService.java

@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iscs.service.isolationpoint;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointSaveReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.PointDetailVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.isolationpoint.IsolationPointDO;
@@ -60,7 +61,7 @@ public interface IsolationPointService extends IService<IsolationPointDO> {
      * @param pageReqVO 分页查询
      * @return 隔离点分页
      */
-    PageResult<IsolationPointDO> getIsolationPointPage(IsolationPointPageReqVO pageReqVO);
+    PageResult<IsolationPointRespVO> getIsolationPointPage(IsolationPointPageReqVO pageReqVO);
 
     List<PointDetailVO> getPointDetailList(List<Long> pointIds);
 

+ 29 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/isolationpoint/IsolationPointServiceImpl.java

@@ -4,13 +4,19 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Assert;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.redis.RedisCacheUtil;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointSaveReqVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.PointDetailVO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.isolationpoint.IsolationPointDO;
+import cn.iocoder.yudao.module.iscs.dal.dto.hardwareApi.UpdateSwitchStatusDTO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.isolationpoint.IsolationPointMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -18,6 +24,7 @@ import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.iscs.enums.ErrorCodeConstants.ISOLATION_POINT_NOT_EXISTS;
+import static cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants.ISCS_ATTR;
 
 /**
  * 隔离点 Service 实现类
@@ -30,6 +37,8 @@ public class IsolationPointServiceImpl extends ServiceImpl<IsolationPointMapper,
 
     @Resource
     private IsolationPointMapper isolationPointMapper;
+    @Autowired
+    private RedisCacheUtil redisCacheUtil;
 
     @Override
     public Long createIsolationPoint(IsolationPointSaveReqVO createReqVO) {
@@ -85,8 +94,26 @@ public class IsolationPointServiceImpl extends ServiceImpl<IsolationPointMapper,
     }
 
     @Override
-    public PageResult<IsolationPointDO> getIsolationPointPage(IsolationPointPageReqVO pageReqVO) {
-        return isolationPointMapper.selectPage(pageReqVO);
+    public PageResult<IsolationPointRespVO> getIsolationPointPage(IsolationPointPageReqVO pageReqVO) {
+        Page<IsolationPointDO> page = new Page<IsolationPointDO>().setCurrent(pageReqVO.getPageNo()).setSize(pageReqVO.getPageSize());
+        Page<IsolationPointRespVO> pageResult = isolationPointMapper.getIsolationPointPage(page, pageReqVO);
+        List<UpdateSwitchStatusDTO> switchStatusList = redisCacheUtil.getCacheList(ISCS_ATTR + "sys.points.switch.records");
+        if (!switchStatusList.isEmpty() && !pageResult.getRecords().isEmpty()) {
+            for (IsolationPointRespVO pointPageVO : pageResult.getRecords()) {
+                for (UpdateSwitchStatusDTO updateSwitchStatusDTO : switchStatusList) {
+                    if (StringUtils.isNotBlank(pointPageVO.getPointSerialNumber())
+                            && StringUtils.isNotBlank(updateSwitchStatusDTO.getPointSerialNumber())
+                            && pointPageVO.getPointSerialNumber().equals(updateSwitchStatusDTO.getPointSerialNumber())) {
+                        pointPageVO.setSwitchStatus(updateSwitchStatusDTO.getSwitchStatus());
+                        pointPageVO.setSwitchLastUpdateTime(updateSwitchStatusDTO.getSwitchLastUpdateTime());
+                    }
+                }
+            }
+        }
+        PageResult<IsolationPointRespVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(pageResult.getRecords());
+        respVOPageResult.setTotal(pageResult.getTotal());
+        return respVOPageResult;
     }
 
     @Override

+ 1 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/map/MapServiceImpl.java

@@ -107,8 +107,8 @@ public class MapServiceImpl extends ServiceImpl<MapMapper, MapDO> implements Map
                     }
                 }
             }
-            mapRespVO.setPointList(list);
         }
+        mapRespVO.setPointList(list);
         return mapRespVO;
     }
 

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

@@ -1,63 +1,65 @@
-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);
-
-}
+package cn.iocoder.yudao.module.iscs.service.materialscheckrecord;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.CheckRecordParamVO;
+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 com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * 物资检查记录 Service 接口
+ *
+ * @author 芋道源码
+ */
+public interface MaterialsCheckRecordService extends IService<MaterialsCheckRecordDO> {
+
+    /**
+     * 创建物资检查记录
+     *
+     * @param vo 创建信息
+     * @return 编号
+     */
+    Long createMaterialsCheckRecord(@Valid CheckRecordParamVO vo);
+
+    /**
+     * 更新物资检查记录
+     *
+     * @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);
+
+}

+ 62 - 7
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordServiceImpl.java

@@ -1,18 +1,33 @@
 package cn.iocoder.yudao.module.iscs.service.materialscheckrecord;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.Assert;
 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.CheckRecordParamVO;
 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.materials.MaterialsDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckplan.MaterialsCheckPlanDO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscheckrecord.MaterialsCheckRecordDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialsplancabinet.MaterialsPlanCabinetDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.materialscheckrecord.MaterialsCheckRecordMapper;
+import cn.iocoder.yudao.module.iscs.service.materials.MaterialsService;
+import cn.iocoder.yudao.module.iscs.service.materialscheckplan.MaterialsCheckPlanService;
+import cn.iocoder.yudao.module.iscs.service.materialsplancabinet.MaterialsPlanCabinetService;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
+import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
+
+import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId;
+
 
 /**
  * 物资检查记录 Service 实现类
@@ -25,15 +40,55 @@ public class MaterialsCheckRecordServiceImpl extends ServiceImpl<MaterialsCheckR
 
     @Resource
     private MaterialsCheckRecordMapper materialsCheckRecordMapper;
+    @Resource
+    private MaterialsService materialsService;
+    @Resource
+    private MaterialsCheckPlanService materialsCheckPlanService;
+    @Resource
+    private MaterialsPlanCabinetService materialsPlanCabinetService;
 
     @Override
-    public Long createMaterialsCheckRecord(MaterialsCheckRecordSaveReqVO createReqVO) {
-        // 插入
-        MaterialsCheckRecordDO materialsCheckRecord = BeanUtils.toBean(createReqVO, MaterialsCheckRecordDO.class);
-        materialsCheckRecordMapper.insert(materialsCheckRecord);
-
-        // 返回
-        return materialsCheckRecord.getId();
+    public Long createMaterialsCheckRecord(CheckRecordParamVO vo) {
+        if (!vo.getList().isEmpty()) {
+            Long userId = getLoginUserId();
+            // 0.检查是否已经提交,如果已经提交则不允许再次提交
+            List<Long> cabinetIds = vo.getList().stream().map(MaterialsCheckRecordDO::getCabinetId).collect(Collectors.toList());
+            List<MaterialsCheckRecordDO> oldRecords = list(Wrappers.<MaterialsCheckRecordDO>lambdaQuery()
+                    .eq(MaterialsCheckRecordDO::getPlanId, vo.getList().get(0).getPlanId())
+                    .isNotNull(MaterialsCheckRecordDO::getStatus)
+                    .in(MaterialsCheckRecordDO::getCabinetId, cabinetIds));
+            Assert.isTrue(oldRecords.isEmpty(), "存在重复提的提交检查记录,请检查!");
+            // 因为硬件逻辑更改,生成了初始化数据,可能会干扰,所以先清除,排除干扰
+            remove(Wrappers.<MaterialsCheckRecordDO>lambdaQuery().eq(MaterialsCheckRecordDO::getPlanId, vo.getList().get(0).getPlanId()));
+            for (MaterialsCheckRecordDO isMaterialsCheckRecord : vo.getList()) {
+                Assert.notNull(isMaterialsCheckRecord.getPlanId(), "计划id不能为空!");
+                Assert.notNull(isMaterialsCheckRecord.getMaterialsId(), "物资id不能为空!");
+                isMaterialsCheckRecord.setCheckDate(new Date());
+                isMaterialsCheckRecord.setCheckUserId(userId);
+                save(isMaterialsCheckRecord);
+                // 2.开始更新物资本身状态
+                if ("1".equals(isMaterialsCheckRecord.getStatus()) && StringUtils.isNotBlank(isMaterialsCheckRecord.getReason())) {
+                    //  reason字典值exceptions_status 对应调整material_info_status  损坏和过期时对应的,所以直接set
+                    materialsService.update(Wrappers.<MaterialsDO>lambdaUpdate()
+                            .eq(MaterialsDO::getId, isMaterialsCheckRecord.getMaterialsId())
+                            .set(MaterialsDO::getStatus, isMaterialsCheckRecord.getReason()));
+                }
+            }
+            // 2.1更新IsMaterialsPlanCabinet数据
+            materialsPlanCabinetService.update(Wrappers.<MaterialsPlanCabinetDO>lambdaUpdate()
+                    .eq(MaterialsPlanCabinetDO::getId, vo.getList().get(0).getPlanId())
+                    .in(MaterialsPlanCabinetDO::getCabinetId, cabinetIds)
+                    .set(MaterialsPlanCabinetDO::getSignatureImg, vo.getSignatureImg())
+                    .set(MaterialsPlanCabinetDO::getSignatureTime, new Date()));
+            // 3.如果该计划中的所有物资柜都有提交,则自动更新完成该检查计划
+            List<MaterialsPlanCabinetDO> list = materialsPlanCabinetService.list(Wrappers.<MaterialsPlanCabinetDO>lambdaQuery()
+                    .eq(MaterialsPlanCabinetDO::getId, vo.getList().get(0).getPlanId())
+                    .isNull(MaterialsPlanCabinetDO::getSignatureTime));
+            materialsCheckPlanService.update(Wrappers.<MaterialsCheckPlanDO>lambdaUpdate()
+                    .eq(MaterialsCheckPlanDO::getId, vo.getList().get(0).getPlanId())
+                    .set(MaterialsCheckPlanDO::getStatus, list.isEmpty() ? 1 : 2));
+        }
+        return 1L;
     }
 
     @Override

+ 62 - 0
yudao-module-iscs/src/main/resources/mapper/IsolationPointMapper.xml

@@ -26,4 +26,66 @@
             </foreach>
         </where>
     </select>
+    <select id="getIsolationPointPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.IsolationPointRespVO">
+        SELECT
+        p.*,
+        l.lock_type_name,
+        l.lock_type_code,
+        l.lock_type_icon,
+        l.lock_type_img,
+        t.lockset_type_img,
+        s.loto_name,
+        w.workstation_name,
+        GROUP_CONCAT(DISTINCT ma.machinery_name) AS machinery_name,
+        r.rfid as point_nfc
+        FROM isc_isolation_point p
+        LEFT JOIN isc_lock_type l ON l.id = p.lock_type_id
+        LEFT JOIN isc_lockset_type t ON t.id = p.lockset_type_id
+        LEFT JOIN isc_workstation w ON w.id = p.workstation_id
+        LEFT JOIN isc_loto_station s ON s.id = p.loto_id
+        LEFT JOIN isc_machinery_points m ON m.point_id = p.id
+        LEFT JOIN isc_machinery ma ON ma.id = m.machinery_id
+        LEFT JOIN isc_rfid_token r on r.id = p.rfid_id
+        <where>
+            <if test="vo.pointCode != null and vo.pointCode.trim != ''">
+                and p.point_code like concat('%',#{vo.pointCode},'%')
+            </if>
+            <if test="vo.pointName != null and vo.pointName.trim != ''">
+                and p.point_name like concat('%',#{vo.pointName},'%')
+            </if>
+            <if test="vo.deleted != null">
+                and p.deleted = #{vo.deleted}
+            </if>
+            <if test="vo.pointType != null and vo.pointType.trim != ''">
+                and p.point_type = #{vo.pointType}
+            </if>
+            <if test="vo.powerType != null and vo.powerType.trim != ''">
+                and p.power_type = #{vo.powerType}
+            </if>
+            <if test="vo.startTime != null and vo.startTime.trim != ''">
+                and p.create_time &gt;= #{vo.startTime}
+            </if>
+            <if test="vo.endTime != null and vo.endTime.trim != ''">
+                and p.create_time &lt;= #{vo.endTime}
+            </if>
+            <if test="vo.lockTypeId != null">
+                and p.lock_type_id = #{vo.lockTypeId}
+            </if>
+            <if test="vo.workstationId != null">
+                and p.workstation_id = #{vo.workstationId}
+            </if>
+            <if test="vo.machineryId != null">
+                and m.machinery_id = #{vo.machineryId}
+            </if>
+            <if test="vo.lotoId != null and vo.lotoId != 0">
+                and p.loto_id = #{vo.lotoId}
+            </if>
+            <if test="vo.lotoId != null and vo.lotoId == 0">
+                and p.loto_id is null
+            </if>
+        </where>
+        group by p.id
+        order by p.id desc
+    </select>
 </mapper>