SafetyIssueSqlProvider.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.supervision.safety.mapper;
  2. import java.util.Map;
  3. public class SafetyIssueSqlProvider {
  4. public String searchSql(Map<String, Object> p) {
  5. StringBuilder sb = new StringBuilder();
  6. sb.append("SELECT id, description, risk_level, status, found_at, rectified_at, ")
  7. .append("deleted, create_time, update_time FROM safety_issue WHERE deleted=0 ");
  8. if (p.get("keyword") != null) sb.append("AND description LIKE CONCAT('%', #{keyword}, '%') ");
  9. if (p.get("level") != null) sb.append("AND risk_level = #{level} ");
  10. if (p.get("status") != null) sb.append("AND status = #{status} ");
  11. if (p.get("from") != null) sb.append("AND found_at >= #{from} ");
  12. if (p.get("to") != null) sb.append("AND found_at < #{to} ");
  13. sb.append("ORDER BY found_at DESC ");
  14. sb.append("LIMIT #{limit} OFFSET #{offset}");
  15. return sb.toString();
  16. }
  17. public String countSql(Map<String, Object> p) {
  18. StringBuilder sb = new StringBuilder();
  19. sb.append("SELECT COUNT(*) FROM safety_issue WHERE deleted=0 ");
  20. if (p.get("keyword") != null) sb.append("AND description LIKE CONCAT('%', #{keyword}, '%') ");
  21. if (p.get("level") != null) sb.append("AND risk_level = #{level} ");
  22. if (p.get("status") != null) sb.append("AND status = #{status} ");
  23. if (p.get("from") != null) sb.append("AND found_at >= #{from} ");
  24. if (p.get("to") != null) sb.append("AND found_at < #{to} ");
  25. return sb.toString();
  26. }
  27. public String countPendingByLevelSql() {
  28. return "SELECT risk_level AS lvl, COUNT(*) AS cnt " +
  29. "FROM safety_issue WHERE deleted=0 AND status='PENDING' GROUP BY risk_level";
  30. }
  31. public String trendByDaySql(Map<String, Object> p) {
  32. return "SELECT DATE_FORMAT(found_at, '%Y-%m-%d') AS d, COUNT(*) AS c " +
  33. "FROM safety_issue WHERE deleted=0 AND found_at >= #{from} AND found_at < #{to} " +
  34. "GROUP BY d ORDER BY d";
  35. }
  36. public String top5HighSql() {
  37. return "SELECT id, description, risk_level, status, found_at, rectified_at, " +
  38. "deleted, create_time, update_time " +
  39. "FROM safety_issue WHERE deleted=0 AND risk_level='HIGH' AND status='PENDING' " +
  40. "ORDER BY found_at DESC LIMIT 5";
  41. }
  42. }