车车 4 månader sedan
förälder
incheckning
d4e9544f2e
12 ändrade filer med 212 tillägg och 27 borttagningar
  1. 12 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/exception/vo/ExceptionPageReqVO.java
  2. 3 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/isolationpoint/vo/IsolationPointRespVO.java
  3. 5 6
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/MaterialsCheckRecordController.java
  4. 18 0
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/vo/MaterialsCheckRecordPageReqVO.java
  5. 35 5
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/materialscheckrecord/vo/MaterialsCheckRecordRespVO.java
  6. 8 5
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/dal/mysql/materialscheckrecord/MaterialsCheckRecordMapper.java
  7. 58 2
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/isolationpoint/IsolationPointServiceImpl.java
  8. 2 1
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordService.java
  9. 9 2
      yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordServiceImpl.java
  10. 4 3
      yudao-module-iscs/src/main/resources/mapper/ExceptionMapper.xml
  11. 1 1
      yudao-module-iscs/src/main/resources/mapper/ExceptionMisplaceMapper.xml
  12. 57 1
      yudao-module-iscs/src/main/resources/mapper/MaterialsCheckRecordMapper.xml

+ 12 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/controller/admin/exception/vo/ExceptionPageReqVO.java

@@ -66,7 +66,18 @@ public class ExceptionPageReqVO extends PageParam {
     private String startHandleTime;
 
     @Schema(description = "异常处理时间")
-    @TableField(exist = false)
     private String endHandleTime;
 
+    @Schema(description = "异常类型(字典exception_type)")
+    private String exceptionTypeName;
+
+    @Schema(description = "异常等级")
+    private String exceptionLevelName;
+
+    @Schema(description = "来源name")
+    private String sourceName;
+
+    @Schema(description = "引发人Name")
+    private String raiserName;
+
 }

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

@@ -118,4 +118,7 @@ public class IsolationPointRespVO {
     @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
     private Date switchLastUpdateTime;
 
+    @Schema(description = "nfc")
+    private String pointNfc;
+
 }

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

@@ -74,8 +74,8 @@ public class MaterialsCheckRecordController {
     @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));
+        PageResult<MaterialsCheckRecordRespVO> pageResult = materialsCheckRecordService.getMaterialsCheckRecordPage(pageReqVO);
+        return success(pageResult);
     }
 
     @GetMapping("/exportMaterialsCheckRecordExcel")
@@ -85,10 +85,9 @@ public class MaterialsCheckRecordController {
     public void exportMaterialsCheckRecordExcel(@Valid MaterialsCheckRecordPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<MaterialsCheckRecordDO> list = materialsCheckRecordService.getMaterialsCheckRecordPage(pageReqVO).getList();
+        List<MaterialsCheckRecordRespVO> list = materialsCheckRecordService.getMaterialsCheckRecordPage(pageReqVO).getList();
         // 导出 Excel
-        ExcelUtils.write(response, "物资检查记录.xls", "数据", MaterialsCheckRecordRespVO.class,
-                        BeanUtils.toBean(list, MaterialsCheckRecordRespVO.class));
-    }
+        ExcelUtils.write(response, "物资检查记录.xls", "数据", MaterialsCheckRecordRespVO.class, list);
+    }   
 
 }

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

@@ -48,4 +48,22 @@ public class MaterialsCheckRecordPageReqVO extends PageParam {
     @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
     private LocalDateTime[] createTime;
 
+    @Schema(description = "计划Name")
+    private String planName;
+
+    @Schema(description = "物资Name")
+    private String materialsName;
+
+    @Schema(description = "物资类型ID")
+    private Long materialsTypeId;
+
+    @Schema(description = "Rfid")
+    private String materialsRfid;
+
+    @Schema(description = "startTime")
+    private String startTime;
+
+    @Schema(description = "endTime")
+    private String endTime;
+
 }

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

@@ -1,11 +1,11 @@
 package cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.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
@@ -60,4 +60,34 @@ public class MaterialsCheckRecordRespVO {
     @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
-}
+    @Schema(description = "计划名称")
+    private String planName;
+
+    @Schema(description = "物资柜名称")
+    private String cabinetName;
+
+    @Schema(description = "物资名称")
+    private String materialsName;
+
+    @Schema(description = "物资类型ID")
+    private Long materialsTypeId;
+
+    @Schema(description = "物资类型")
+    private String materialsTypeName;
+
+    @Schema(description = "物资RFID")
+    private String materialsRfid;
+
+    @Schema(description = "检察员")
+    private String checkUserName;
+
+    @Schema(description = "删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @Schema(description = "物资类型图标")
+    private String materialsTypeIcon;
+
+    @Schema(description = "物资类型缩略图")
+    private String materialsTypePicture;
+
+}

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

@@ -1,13 +1,14 @@
 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.framework.mybatis.core.query.LambdaQueryWrapperX;
+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.dal.dataobject.materialscheckrecord.MaterialsCheckRecordDO;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.*;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 物资检查记录 Mapper
@@ -33,4 +34,6 @@ public interface MaterialsCheckRecordMapper extends BaseMapperX<MaterialsCheckRe
                 .orderByDesc(MaterialsCheckRecordDO::getId));
     }
 
-}
+    Page<MaterialsCheckRecordRespVO> getMaterialsCheckRecordPage(Page<MaterialsCheckRecordDO> page, @Param(value = "vo") MaterialsCheckRecordPageReqVO vo);
+
+}

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

@@ -10,14 +10,20 @@ import cn.iocoder.yudao.module.iscs.controller.admin.isolationpoint.vo.Isolation
 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.dataobject.lotostation.LotoStationDO;
+import cn.iocoder.yudao.module.iscs.dal.dataobject.mappoint.MapPointDO;
 import cn.iocoder.yudao.module.iscs.dal.dto.hardwareApi.UpdateSwitchStatusDTO;
 import cn.iocoder.yudao.module.iscs.dal.mysql.isolationpoint.IsolationPointMapper;
+import cn.iocoder.yudao.module.iscs.service.lotostation.LotoStationService;
+import cn.iocoder.yudao.module.iscs.service.mappoint.MapPointService;
+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.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
 import java.util.List;
@@ -37,11 +43,46 @@ public class IsolationPointServiceImpl extends ServiceImpl<IsolationPointMapper,
 
     @Resource
     private IsolationPointMapper isolationPointMapper;
-    @Autowired
+    @Resource
     private RedisCacheUtil redisCacheUtil;
+    @Lazy
+    @Resource
+    private LotoStationService lotoStationService;
+    @Lazy
+    @Resource
+    private MapPointService mapPointService;
 
+
+    @Transactional
     @Override
     public Long createIsolationPoint(IsolationPointSaveReqVO createReqVO) {
+        // 断言校验
+        Assert.isTrue(StringUtils.isNotBlank(createReqVO.getPointName()), "隔离点名称不可为空!");
+        List<IsolationPointDO> list = list(Wrappers.<IsolationPointDO>lambdaQuery()
+                .eq(IsolationPointDO::getPointName, createReqVO.getPointName()));
+        Assert.isTrue(list.isEmpty(), "该隔离点名称已被使用!");
+        List<IsolationPointDO> list2 = list(Wrappers.<IsolationPointDO>lambdaQuery()
+                .eq(IsolationPointDO::getRfidId, createReqVO.getRfidId()));
+        Assert.isTrue(list2.isEmpty(), "该NFC已被使用!");
+        List<IsolationPointDO> list3 = list(Wrappers.<IsolationPointDO>lambdaQuery()
+                .eq(IsolationPointDO::getPointCode, createReqVO.getPointCode()));
+        Assert.isTrue(list3.isEmpty(), "该编号已被使用!");
+        List<IsolationPointDO> list4 = list(Wrappers.<IsolationPointDO>lambdaQuery()
+                .eq(IsolationPointDO::getPointSerialNumber, createReqVO.getPointSerialNumber()));
+        Assert.isTrue(list4.isEmpty(), "该序列号已被使用!");
+        IsolationPointDO isolationPointDO = BeanUtils.toBean(createReqVO, IsolationPointDO.class);
+        save(isolationPointDO);
+        // 如果绑定的loto站已经绑定了mapId,则需要往is_map_point插入数据
+        if (createReqVO.getLotoId() != null) {
+            LotoStationDO lotoStation = lotoStationService.getById(createReqVO.getLotoId());
+            if (lotoStation.getMapId() != null) {
+                MapPointDO point = new MapPointDO();
+                point.setMapId(lotoStation.getMapId());
+                point.setMapType("2");
+                point.setEntityId(createReqVO.getId());
+                mapPointService.save(point);
+            }
+        }
         // 插入
         IsolationPointDO isolationPoint = BeanUtils.toBean(createReqVO, IsolationPointDO.class);
         isolationPointMapper.insert(isolationPoint);
@@ -54,6 +95,21 @@ public class IsolationPointServiceImpl extends ServiceImpl<IsolationPointMapper,
     public void updateIsolationPoint(IsolationPointSaveReqVO updateReqVO) {
         // 校验存在
         validateIsolationPointExists(updateReqVO.getId());
+        // 断言校验
+        Assert.notNull(updateReqVO.getId(), "隔离点ID不可为空!");
+        Assert.isTrue(StringUtils.isNotBlank(updateReqVO.getPointName()), "隔离点名称不可为空!");
+        List<IsolationPointDO> list = list(Wrappers.<IsolationPointDO>lambdaQuery()
+                .eq(IsolationPointDO::getPointName, updateReqVO.getPointName())
+                .ne(IsolationPointDO::getId, updateReqVO.getId()));
+        Assert.isTrue(list.isEmpty(), "该隔离点名称已被使用!");
+        List<IsolationPointDO> list2 = list(Wrappers.<IsolationPointDO>lambdaQuery()
+                .eq(IsolationPointDO::getRfidId, updateReqVO.getRfidId())
+                .ne(IsolationPointDO::getId, updateReqVO.getId()));
+        Assert.isTrue(list2.isEmpty(), "该NFC已被使用!");
+        List<IsolationPointDO> list4 = list(Wrappers.<IsolationPointDO>lambdaQuery()
+                .eq(IsolationPointDO::getPointSerialNumber, updateReqVO.getPointSerialNumber())
+                .ne(IsolationPointDO::getId, updateReqVO.getId()));
+        Assert.isTrue(list4.isEmpty(), "该序列号已被使用!");
         // 更新
         IsolationPointDO updateObj = BeanUtils.toBean(updateReqVO, IsolationPointDO.class);
         isolationPointMapper.updateById(updateObj);

+ 2 - 1
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordService.java

@@ -3,6 +3,7 @@ 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.MaterialsCheckRecordRespVO;
 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;
@@ -60,6 +61,6 @@ public interface MaterialsCheckRecordService extends IService<MaterialsCheckReco
      * @param pageReqVO 分页查询
      * @return 物资检查记录分页
      */
-    PageResult<MaterialsCheckRecordDO> getMaterialsCheckRecordPage(MaterialsCheckRecordPageReqVO pageReqVO);
+    PageResult<MaterialsCheckRecordRespVO> getMaterialsCheckRecordPage(MaterialsCheckRecordPageReqVO pageReqVO);
 
 }

+ 9 - 2
yudao-module-iscs/src/main/java/cn/iocoder/yudao/module/iscs/service/materialscheckrecord/MaterialsCheckRecordServiceImpl.java

@@ -6,6 +6,7 @@ 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.MaterialsCheckRecordRespVO;
 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;
@@ -16,6 +17,7 @@ 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.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import jakarta.annotation.Resource;
 import org.apache.commons.lang3.StringUtils;
@@ -135,8 +137,13 @@ public class MaterialsCheckRecordServiceImpl extends ServiceImpl<MaterialsCheckR
     }
 
     @Override
-    public PageResult<MaterialsCheckRecordDO> getMaterialsCheckRecordPage(MaterialsCheckRecordPageReqVO pageReqVO) {
-        return materialsCheckRecordMapper.selectPage(pageReqVO);
+    public PageResult<MaterialsCheckRecordRespVO> getMaterialsCheckRecordPage(MaterialsCheckRecordPageReqVO pageReqVO) {
+        Page<MaterialsCheckRecordDO> page = new Page<MaterialsCheckRecordDO>().setCurrent(pageReqVO.getPageNo()).setSize(pageReqVO.getPageSize());
+        Page<MaterialsCheckRecordRespVO> pageResult = materialsCheckRecordMapper.getMaterialsCheckRecordPage(page, pageReqVO);
+        PageResult<MaterialsCheckRecordRespVO> respVOPageResult = new PageResult<>();
+        respVOPageResult.setList(pageResult.getRecords());
+        respVOPageResult.setTotal(pageResult.getTotal());
+        return respVOPageResult;
     }
 
 }

+ 4 - 3
yudao-module-iscs/src/main/resources/mapper/ExceptionMapper.xml

@@ -19,7 +19,7 @@
             ddd.label AS exception_level_name,
             u.nickname AS raiser_name
         FROM
-            isc_exception e
+            sys_exception e
                 LEFT JOIN system_dict_data d ON e.exception_category = d.value AND d.dict_type = 'classification_of_exceptions'
                 LEFT JOIN isc_loto_station l ON l.id = e.source_id
                 LEFT JOIN isc_materials_cabinet m ON m.cabinet_id = e.source_id
@@ -39,8 +39,8 @@
         ddd.label AS exception_level_name,
         u.nickname AS raiser_name
         FROM
-        isc_exception e
-        LEFT JOIN sys_dict_data d ON e.exception_category = d.value AND d.dict_type =
+        sys_exception e
+        LEFT JOIN system_dict_data d ON e.exception_category = d.value AND d.dict_type =
         'classification_of_exceptions'
         LEFT JOIN isc_loto_station l ON l.id = e.source_id
         LEFT JOIN isc_materials_cabinet m ON m.cabinet_id = e.source_id
@@ -48,6 +48,7 @@
         LEFT JOIN system_dict_data ddd ON e.exception_level = ddd.value AND ddd.dict_type = 'severity_level'
         LEFT JOIN system_users u ON u.id = e.raiser
         <where>
+            e.deleted = 0
             <if test="vo.exceptionCategory != null and vo.exceptionCategory.trim != ''">
                 and e.exception_category = #{vo.exceptionCategory}
             </if>

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

@@ -18,7 +18,7 @@
         c2.cabinet_name AS restitution_to_name,
         u.nickname AS restitution_user_name
         FROM
-        isc_exception_misplace e
+        sys_exception_misplace e
         LEFT JOIN isc_materials m ON e.materials_id = m.id
         LEFT JOIN isc_materials_cabinet c1 ON c1.id = e.loan_from_id
         LEFT JOIN isc_materials_cabinet c2 ON c2.id = e.restitution_to_id

+ 57 - 1
yudao-module-iscs/src/main/resources/mapper/MaterialsCheckRecordMapper.xml

@@ -9,4 +9,60 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+    <select id="getMaterialsCheckRecordPage"
+            resultType="cn.iocoder.yudao.module.iscs.controller.admin.materialscheckrecord.vo.MaterialsCheckRecordRespVO">
+        SELECT
+        r.*,
+        m.materials_name,
+        t.materials_type_name,
+        t.materials_type_icon,
+        t.materials_type_picture,
+        m.materials_rfid,
+        mc.cabinet_name,
+        p.plan_name,
+        u.nick_name as check_user_name
+        FROM
+        isc_materials_check_record r
+        LEFT JOIN isc_materials_check_plan p ON p.id = r.plan_id
+        LEFT JOIN isc_materials m ON m.id = r.materials_id
+        LEFT JOIN isc_materials_cabinet mc ON mc.id = r.cabinet_id
+        LEFT JOIN isc_materials_type t ON t.id = m.materials_type_id
+        LEFT JOIN system_user u ON u.id = r.check_user_id
+        <where>
+            <if test="vo.planId != null">
+                and r.plan_id = #{vo.planId}
+            </if>
+            <if test="vo.cabinetId != null">
+                and m.materials_cabinet_id = #{vo.cabinetId}
+            </if>
+            <if test="vo.planName != null and vo.planName.trim != ''">
+                and p.plan_name like concat('%',#{vo.planName},'%')
+            </if>
+            <if test="vo.materialsName != null and vo.materialsName.trim != ''">
+                and m.materials_name like concat('%',#{vo.materialsName},'%')
+            </if>
+            <if test="vo.materialsTypeId != null">
+                and m.materials_type_id = #{vo.materialsTypeId}
+            </if>
+            <if test="vo.materialsRfid != null and vo.materialsRfid.trim != ''">
+                and m.materials_rfid like concat('%',#{vo.materialsRfid},'%')
+            </if>
+            <if test="vo.startTime != null and vo.startTime.trim != ''">
+                and r.check_date &gt;= #{vo.startTime}
+            </if>
+            <if test="vo.endTime != null and vo.endTime.trim != ''">
+                and r.check_date &lt;= #{vo.endTime}
+            </if>
+            <if test="vo.status != null and vo.status.trim != ''">
+                and r.status = #{vo.status}
+            </if>
+            <if test="vo.reason != null and vo.reason.trim != ''">
+                and r.reason = #{vo.reason}
+            </if>
+        </where>
+        order by r.record_id desc
+
+
+
+    </select>
+</mapper>