MachineDataMapper.xml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <mapper namespace="com.malk.tonglibo.Mapper.MachineDataMapper">
  5. <!-- 查询每个 paramId 最新一条数据 -->
  6. <select id="selectLatestRuntimeByParamId" resultType="com.malk.tonglibo.entity.MachineData">
  7. SELECT
  8. paramId,
  9. machineNo,
  10. machineFlag,
  11. jqyxsh,
  12. zcn,
  13. timeStr,
  14. updateTime
  15. FROM (
  16. SELECT
  17. paramId,
  18. machineNo,
  19. machineFlag,
  20. zcn,
  21. timeStr,
  22. jqyxsh,
  23. time AS updateTime,
  24. ROW_NUMBER() OVER (PARTITION BY machineNo ORDER BY time DESC) AS rn
  25. FROM T_TLB_MACHINEDATA
  26. ) t
  27. WHERE rn = 1
  28. ORDER BY updateTime DESC
  29. </select>
  30. <!-- 支持条件过滤的版本 -->
  31. <select id="selectLatestRuntimeByParamIdWithFilter" resultType="com.malk.tonglibo.entity.MachineData">
  32. SELECT
  33. t1.paramId,
  34. t1.machineNo,
  35. t1.jqyxsh,
  36. t1.time AS updateTime
  37. FROM
  38. T_TLB_MACHINEDATA t1
  39. WHERE
  40. t1.time = (
  41. SELECT MAX(t2.time)
  42. FROM T_TLB_MACHINEDATA t2
  43. WHERE t2.paramId = t1.paramId
  44. )
  45. <!-- 动态条件 -->
  46. <if test="paramId != null and paramId != ''">
  47. AND t1.paramId = #{paramId}
  48. </if>
  49. <if test="machineNo != null and machineNo != ''">
  50. AND t1.machineNo = #{machineNo}
  51. </if>
  52. ORDER BY t1.time DESC
  53. </select>
  54. <select id="selectDailyZcnAtEight" resultType="com.malk.tonglibo.entity.MachineData">
  55. SELECT
  56. date,
  57. machineNo,
  58. machineFlag,
  59. zcn,
  60. timeStr
  61. FROM (
  62. SELECT
  63. DATE(time) AS date,
  64. machineNo AS machineNo,
  65. machineFlag,
  66. zcn,
  67. timeStr,
  68. ROW_NUMBER() OVER (PARTITION BY DATE(time), machineNo ORDER BY time ASC) AS rn
  69. FROM T_TLB_MACHINEDATA
  70. WHERE HOUR(time) = 8
  71. AND zcn IS NOT NULL
  72. AND TRIM(zcn) != ''
  73. ) t
  74. WHERE rn = 1
  75. ORDER BY date, machineNo
  76. </select>
  77. <select id="selectDailyShiftOutput" resultType="map">
  78. <!-- SELECT-->
  79. <!-- CASE-->
  80. <!-- WHEN HOUR(time) < 8 THEN DATE_SUB(DATE(time), INTERVAL 1 DAY)-->
  81. <!-- ELSE DATE(time)-->
  82. <!-- END AS date,-->
  83. <!-- CASE-->
  84. <!-- WHEN HOUR(time) >= 8 AND HOUR(time) < 16 THEN '早班'-->
  85. <!-- WHEN HOUR(time) >= 16 THEN '中班'-->
  86. <!-- ELSE '晚班'-->
  87. <!-- END AS shift,-->
  88. <!-- SUM(CAST(zcn AS DECIMAL(10,2))) AS output-->
  89. <!-- FROM T_TLB_MACHINEDATA-->
  90. <!-- WHERE zcn REGEXP '^[0-9]+(\\.[0-9]+)?$'-->
  91. <!-- AND time >= #{startDate}-->
  92. <!-- AND time &lt; #{endDate}-->
  93. <!-- GROUP BY-->
  94. <!-- CASE WHEN HOUR(time) < 8 THEN DATE_SUB(DATE(time), INTERVAL 1 DAY) ELSE DATE(time) END,-->
  95. <!-- CASE-->
  96. <!-- WHEN HOUR(time) >= 8 AND HOUR(time) < 16 THEN '早班'-->
  97. <!-- WHEN HOUR(time) >= 16 THEN '中班'-->
  98. <!-- ELSE '晚班'-->
  99. <!-- END-->
  100. <!-- ORDER BY date, FIELD(shift, '早班', '中班', '晚班')-->
  101. </select>
  102. </mapper>