Sfoglia il codice sorgente

物资柜分页逻辑补充

车车 2 mesi fa
parent
commit
b0ae19e397

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

@@ -1,95 +1,92 @@
-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));
-    }
-
-}
+package cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet;
+
+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.materialscabinet.vo.MaterialsCabinetPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.MaterialsCabinetRespVO;
+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.service.materialscabinet.MaterialsCabinetService;
+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-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<MaterialsCabinetRespVO> 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<MaterialsCabinetRespVO> list = materialsCabinetService.getMaterialsCabinetPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "物资柜.xls", "数据", MaterialsCabinetRespVO.class, list);
+    }
+
+}

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

@@ -1,10 +1,10 @@
 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 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;
@@ -13,6 +13,9 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 @Data
 public class MaterialsCabinetPageReqVO extends PageParam {
 
+    @Schema(description = "主键")
+    private Long cabinetId;
+
     @Schema(description = "物资柜编号")
     private String cabinetCode;
 
@@ -44,4 +47,4 @@ public class MaterialsCabinetPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
-}
+}

+ 17 - 5
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscabinet/vo/MaterialsCabinetRespVO.java

@@ -1,11 +1,11 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 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.*;
 
 @Schema(description = "管理后台 - 物资柜 Response VO")
 @Data
@@ -56,4 +56,16 @@ public class MaterialsCabinetRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
-}
+    @Schema(description = "硬件Name")
+    private String hardwareName;
+
+    @Schema(description = "区域Name")
+    private String workareaName;
+
+    @Schema(description = "岗位Name")
+    private String workstationName;
+
+    @Schema(description = "异常原因")
+    private String exReason;
+
+}

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

@@ -1,13 +1,13 @@
 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 com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
 import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 物资柜 Mapper
@@ -32,4 +32,6 @@ public interface MaterialsCabinetMapper extends BaseMapperX<MaterialsCabinetDO>
                 .orderByDesc(MaterialsCabinetDO::getId));
     }
 
-}
+    Page<MaterialsCabinetRespVO> getIsMaterialsCabinetPage(Page<MaterialsCabinetDO> page, @Param(value = "vo") MaterialsCabinetPageReqVO vo);
+
+}

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

@@ -1,63 +1,65 @@
-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);
-
-}
+package cn.iocoder.yudao.module.iscs.service.materialscabinet;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.MaterialsCabinetPageReqVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.MaterialsCabinetRespVO;
+import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.MaterialsCabinetSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscabinet.MaterialsCabinetDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import jakarta.validation.Valid;
+
+import java.util.List;
+
+/**
+ * 物资柜 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<MaterialsCabinetRespVO> getMaterialsCabinetPage(MaterialsCabinetPageReqVO pageReqVO);
+
+}

+ 74 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscabinet/MaterialsCabinetServiceImpl.java

@@ -4,15 +4,24 @@ 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.MaterialsCabinetRespVO;
 import cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.MaterialsCabinetSaveReqVO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.exceptionmisplace.ExceptionMisplaceDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.materials.MaterialsDO;
 import cn.iocoder.yudao.module.iscs.dal.dataobject.materialscabinet.MaterialsCabinetDO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.materialscabinet.MaterialsCabinetMapper;
+import cn.iocoder.yudao.module.iscs.service.exceptionmisplace.ExceptionMisplaceService;
+import cn.iocoder.yudao.module.iscs.service.materials.MaterialsService;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.Comparator;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 物资柜 Service 实现类
@@ -25,6 +34,10 @@ public class MaterialsCabinetServiceImpl extends ServiceImpl<MaterialsCabinetMap
 
     @Resource
     private MaterialsCabinetMapper materialsCabinetMapper;
+    @Resource
+    private MaterialsService materialsService;
+    @Resource
+    private ExceptionMisplaceService exceptionMisplaceService;
 
     @Override
     public Long createMaterialsCabinet(MaterialsCabinetSaveReqVO createReqVO) {
@@ -80,8 +93,67 @@ public class MaterialsCabinetServiceImpl extends ServiceImpl<MaterialsCabinetMap
     }
 
     @Override
-    public PageResult<MaterialsCabinetDO> getMaterialsCabinetPage(MaterialsCabinetPageReqVO pageReqVO) {
-        return materialsCabinetMapper.selectPage(pageReqVO);
+    public PageResult<MaterialsCabinetRespVO> getMaterialsCabinetPage(MaterialsCabinetPageReqVO pageReqVO) {
+        // return materialsCabinetMapper.selectPage(pageReqVO);
+        Page<MaterialsCabinetDO> page = new Page<MaterialsCabinetDO>().setCurrent(pageReqVO.getPageNo()).setSize(pageReqVO.getPageSize());
+        Page<MaterialsCabinetRespVO> isMaterialsCabinetPage = materialsCabinetMapper.getIsMaterialsCabinetPage(page, pageReqVO);
+        // 1.如果有柜子,则获取所有物资进行判断
+        if (!isMaterialsCabinetPage.getRecords().isEmpty()) {
+            List<Long> cabinetIds = isMaterialsCabinetPage.getRecords().stream().map(MaterialsCabinetRespVO::getId).collect(Collectors.toList());
+            // 2.开始获取所有柜子的借出或异常的物资
+            List<MaterialsDO> materials = materialsService.list(Wrappers.<MaterialsDO>lambdaQuery()
+                    .in(MaterialsDO::getMaterialsCabinetId, cabinetIds)
+                    .and(o -> o.eq(MaterialsDO::getLoanState, "0").or().ne(MaterialsDO::getStatus, "0")));
+            for (MaterialsCabinetRespVO record : isMaterialsCabinetPage.getRecords()) {
+                record.setStatus("0");
+                record.setExReason("0");
+                // 2.1判断是否异常,取物资的异常放入其中
+                List<MaterialsDO> exMaterial = materials.stream().filter(o -> o.getMaterialsCabinetId().equals(record.getId())
+                                // 把当前物资柜借出去的数据去掉,因为不属于我的异常,只能属于我借出去了,如果还到别的柜子,别的柜子应该报异常
+                                && !"3".equals(o.getStatus()) && !"0".equals(o.getStatus()))
+                        .sorted(Comparator.comparing(MaterialsDO::getStatus).reversed())
+                        .toList();
+                // 把柜子中物资的异常体现出来
+                if (!exMaterial.isEmpty()) {
+                    record.setStatus("2");
+                    record.setExReason(exMaterial.get(0).getStatus());
+                    continue;
+                }
+                // 2.2检查有没有错还进来的物资
+                List<ExceptionMisplaceDO> exLoan = exceptionMisplaceService.list(Wrappers.<ExceptionMisplaceDO>lambdaQuery()
+                        .eq(ExceptionMisplaceDO::getRestitutionToId, record.getId())
+                        .eq(ExceptionMisplaceDO::getStatus, "0")
+                        .eq(ExceptionMisplaceDO::getExceptionType, "0")
+                );
+                if (!exLoan.isEmpty()) {
+                    record.setStatus("2");
+                    record.setExReason("3");
+                    continue;
+                }
+                // 2.3判断是否存在开门超时的情况
+                List<ExceptionMisplaceDO> openEx = exceptionMisplaceService.list(Wrappers.<ExceptionMisplaceDO>lambdaQuery()
+                        .eq(ExceptionMisplaceDO::getLoanFromId, record.getId())
+                        .eq(ExceptionMisplaceDO::getStatus, "0")
+                        .eq(ExceptionMisplaceDO::getExceptionType, "1")
+                );
+                if (!openEx.isEmpty()) {
+                    record.setStatus("2");
+                    record.setExReason("5");
+                    continue;
+                }
+                // 2.4判断是否借出
+                List<MaterialsDO> loanMaterial = materials.stream().filter(o -> o.getMaterialsCabinetId().equals(record.getId())
+                        && "0".equals(o.getLoanState())).toList();
+                if (!loanMaterial.isEmpty()) {
+                    record.setStatus("1");
+                    record.setExReason("4");
+                }
+            }
+        }
+        PageResult<MaterialsCabinetRespVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(isMaterialsCabinetPage.getRecords());
+        respVOPageResult.setTotal(isMaterialsCabinetPage.getTotal());
+        return respVOPageResult;
     }
 
 }

+ 32 - 1
yudao-module-iscs/src/main/resources/mapper/MaterialsCabinetMapper.xml

@@ -9,4 +9,35 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+    <select id="getIsMaterialsCabinetPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.materialscabinet.vo.MaterialsCabinetRespVO">
+        SELECT
+        c.*,
+        h.hardware_name,
+        w.workstation_name
+        FROM
+        isc_materials_cabinet c
+        LEFT JOIN isc_hardware h ON c.hardware_id = h.id
+        LEFT JOIN isc_workstation w ON c.workstation_id = w.id
+        <where>
+            c.deleted = 0
+            <if test="vo.cabinetId != null">
+                and c.id = #{vo.cabinetId}
+            </if>
+            <if test="vo.cabinetCode != null and vo.cabinetCode.trim != ''">
+                and c.cabinet_code like concat('%',#{vo.cabinetCode},'%')
+            </if>
+            <if test="vo.workstationId != null">
+                and c.workstation_id = #{vo.workstationId}
+            </if>
+            <if test="vo.cabinetName != null and vo.cabinetName.trim != ''">
+                and c.cabinet_name like concat('%',#{vo.cabinetName},'%')
+            </if>
+            <if test="vo.status != null and vo.status.trim != ''">
+                and c.status = #{vo.status}
+            </if>
+        </where>
+        ORDER BY
+        c.id asc
+    </select>
+</mapper>