| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package com.supervision.safety.mapper;
- import com.supervision.safety.domain.*;
- import org.apache.ibatis.annotations.*;
- import org.apache.ibatis.type.EnumTypeHandler;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- @Mapper
- public interface SafetyIssueMapper {
- // === 基础 ===
- @Select("SELECT id, description, risk_level, status, found_at, rectified_at, deleted, create_time, update_time " +
- "FROM safety_issue WHERE id=#{id} AND deleted=0")
- @Results(id="IssueMap", value = {
- @Result(column="risk_level", property="riskLevel", javaType=RiskLevel.class,
- typeHandler=EnumTypeHandler.class),
- @Result(column="status", property="status", javaType=IssueStatus.class,
- typeHandler=EnumTypeHandler.class)
- })
- SafetyIssue findById(@Param("id") Long id);
- @Insert("INSERT INTO safety_issue(description, risk_level, status, found_at, rectified_at, deleted, create_time, update_time) " +
- "VALUES(#{description}, #{riskLevel,typeHandler=org.apache.ibatis.type.EnumTypeHandler}, " +
- "#{status,typeHandler=org.apache.ibatis.type.EnumTypeHandler}, #{foundAt}, #{rectifiedAt}, 0, NOW(), NOW())")
- @Options(useGeneratedKeys = true, keyProperty = "id")
- int insert(SafetyIssue issue);
- @Update("UPDATE safety_issue SET status=#{status,typeHandler=org.apache.ibatis.type.EnumTypeHandler}, " +
- "rectified_at=#{rectifiedAt}, update_time=NOW() WHERE id=#{id} AND deleted=0")
- int updateStatus(@Param("id") Long id,
- @Param("status") IssueStatus status,
- @Param("rectifiedAt") Date rectifiedAt);
- @Update("UPDATE safety_issue SET deleted=1, update_time=NOW() WHERE id=#{id} AND deleted=0")
- int logicalDelete(@Param("id") Long id);
- // === 查询/分页 ===
- @SelectProvider(type=SafetyIssueSqlProvider.class, method="searchSql")
- @ResultMap("IssueMap")
- List<SafetyIssue> search(@Param("keyword") String keyword,
- @Param("level") RiskLevel level,
- @Param("status") IssueStatus status,
- @Param("from") Date from,
- @Param("to") Date to,
- @Param("limit") int limit,
- @Param("offset") int offset);
- @SelectProvider(type=SafetyIssueSqlProvider.class, method="countSql")
- long count(@Param("keyword") String keyword,
- @Param("level") RiskLevel level,
- @Param("status") IssueStatus status,
- @Param("from") Date from,
- @Param("to") Date to);
- // === 统计 ===
- @SelectProvider(type=SafetyIssueSqlProvider.class, method="countPendingByLevelSql")
- List<Map<String, Object>> countPendingByLevel();
- @SelectProvider(type=SafetyIssueSqlProvider.class, method="trendByDaySql")
- List<Map<String, Object>> trendByDay(@Param("from") Date from,
- @Param("to") Date to);
- @SelectProvider(type=SafetyIssueSqlProvider.class, method="top5HighSql")
- @ResultMap("IssueMap")
- List<SafetyIssue> top5High();
- }
|