SafetyIssueMapper.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package com.supervision.safety.mapper;
  2. import com.supervision.safety.domain.*;
  3. import org.apache.ibatis.annotations.*;
  4. import org.apache.ibatis.type.EnumTypeHandler;
  5. import java.util.Date;
  6. import java.util.List;
  7. import java.util.Map;
  8. @Mapper
  9. public interface SafetyIssueMapper {
  10. // === 基础 ===
  11. @Select("SELECT id, description, risk_level, status, found_at, rectified_at, deleted, create_time, update_time " +
  12. "FROM safety_issue WHERE id=#{id} AND deleted=0")
  13. @Results(id="IssueMap", value = {
  14. @Result(column="risk_level", property="riskLevel", javaType=RiskLevel.class,
  15. typeHandler=EnumTypeHandler.class),
  16. @Result(column="status", property="status", javaType=IssueStatus.class,
  17. typeHandler=EnumTypeHandler.class)
  18. })
  19. SafetyIssue findById(@Param("id") Long id);
  20. @Insert("INSERT INTO safety_issue(description, risk_level, status, found_at, rectified_at, deleted, create_time, update_time) " +
  21. "VALUES(#{description}, #{riskLevel,typeHandler=org.apache.ibatis.type.EnumTypeHandler}, " +
  22. "#{status,typeHandler=org.apache.ibatis.type.EnumTypeHandler}, #{foundAt}, #{rectifiedAt}, 0, NOW(), NOW())")
  23. @Options(useGeneratedKeys = true, keyProperty = "id")
  24. int insert(SafetyIssue issue);
  25. @Update("UPDATE safety_issue SET status=#{status,typeHandler=org.apache.ibatis.type.EnumTypeHandler}, " +
  26. "rectified_at=#{rectifiedAt}, update_time=NOW() WHERE id=#{id} AND deleted=0")
  27. int updateStatus(@Param("id") Long id,
  28. @Param("status") IssueStatus status,
  29. @Param("rectifiedAt") Date rectifiedAt);
  30. @Update("UPDATE safety_issue SET deleted=1, update_time=NOW() WHERE id=#{id} AND deleted=0")
  31. int logicalDelete(@Param("id") Long id);
  32. // === 查询/分页 ===
  33. @SelectProvider(type=SafetyIssueSqlProvider.class, method="searchSql")
  34. @ResultMap("IssueMap")
  35. List<SafetyIssue> search(@Param("keyword") String keyword,
  36. @Param("level") RiskLevel level,
  37. @Param("status") IssueStatus status,
  38. @Param("from") Date from,
  39. @Param("to") Date to,
  40. @Param("limit") int limit,
  41. @Param("offset") int offset);
  42. @SelectProvider(type=SafetyIssueSqlProvider.class, method="countSql")
  43. long count(@Param("keyword") String keyword,
  44. @Param("level") RiskLevel level,
  45. @Param("status") IssueStatus status,
  46. @Param("from") Date from,
  47. @Param("to") Date to);
  48. // === 统计 ===
  49. @SelectProvider(type=SafetyIssueSqlProvider.class, method="countPendingByLevelSql")
  50. List<Map<String, Object>> countPendingByLevel();
  51. @SelectProvider(type=SafetyIssueSqlProvider.class, method="trendByDaySql")
  52. List<Map<String, Object>> trendByDay(@Param("from") Date from,
  53. @Param("to") Date to);
  54. @SelectProvider(type=SafetyIssueSqlProvider.class, method="top5HighSql")
  55. @ResultMap("IssueMap")
  56. List<SafetyIssue> top5High();
  57. }