You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

269 lines
11 KiB

5 months ago
5 months ago
5 months ago
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="com.gaotao.modules.dashboard.dao.DashboardDao">
  4. <!-- 查询分切区助力臂数据 -->
  5. <select id="querySlittingAssistArmData" resultType="map">
  6. SELECT
  7. storage_location AS storageLocation,
  8. pallet_code AS palletCode,
  9. picking_location AS pickingLocation,
  10. material_name AS materialName,
  11. quantity,
  12. status
  13. FROM view_board_slitting_assist_arm
  14. ORDER BY picking_location ASC
  15. </select>
  16. <!-- 查询分切区入库数据 -->
  17. <select id="querySlittingInboundData" resultType="map">
  18. SELECT
  19. storage_location AS storageLocation,
  20. pallet_code AS palletCode,
  21. task_type AS taskType,
  22. status
  23. FROM view_board_slitting_inbound
  24. ORDER BY storage_location ASC
  25. </select>
  26. <!-- ==================== 智能立体仓库看板查询 ==================== -->
  27. <!-- 查询立体仓库任务统计数据 -->
  28. <select id="queryWarehouseTaskStats" resultType="map">
  29. -- 说明:根据实际数据库表结构调整SQL
  30. -- 这里提供示例结构,需要根据实际的任务表(如wms_task、agv_task等)调整
  31. SELECT
  32. -- 累计任务总数(从任务历史表统计)
  33. (SELECT COUNT(*) FROM wms_task WHERE is_deleted = '0') AS totalTasks,
  34. -- 月度作业总数(当月任务数)
  35. (SELECT COUNT(*) FROM wms_task
  36. WHERE is_deleted = '0'
  37. AND MONTH(created_date) = MONTH(GETDATE())
  38. AND YEAR(created_date) = YEAR(GETDATE())) AS monthlyTasks,
  39. -- 出库作业数(当月)
  40. (SELECT COUNT(*) FROM wms_task
  41. WHERE is_deleted = '0'
  42. AND task_type = 'OUTBOUND'
  43. AND MONTH(created_date) = MONTH(GETDATE())
  44. AND YEAR(created_date) = YEAR(GETDATE())) AS outboundTasks,
  45. -- 入库作业数(当月)
  46. (SELECT COUNT(*) FROM wms_task
  47. WHERE is_deleted = '0'
  48. AND task_type = 'INBOUND'
  49. AND MONTH(created_date) = MONTH(GETDATE())
  50. AND YEAR(created_date) = YEAR(GETDATE())) AS inboundTasks,
  51. -- 出库占比(百分比)
  52. CASE
  53. WHEN (SELECT COUNT(*) FROM wms_task
  54. WHERE is_deleted = '0'
  55. AND MONTH(created_date) = MONTH(GETDATE())
  56. AND YEAR(created_date) = YEAR(GETDATE())) > 0
  57. THEN CAST(
  58. (SELECT COUNT(*) FROM wms_task
  59. WHERE is_deleted = '0'
  60. AND task_type = 'OUTBOUND'
  61. AND MONTH(created_date) = MONTH(GETDATE())
  62. AND YEAR(created_date) = YEAR(GETDATE())) * 100.0 /
  63. (SELECT COUNT(*) FROM wms_task
  64. WHERE is_deleted = '0'
  65. AND MONTH(created_date) = MONTH(GETDATE())
  66. AND YEAR(created_date) = YEAR(GETDATE()))
  67. AS INT)
  68. ELSE 0
  69. END AS outboundPercent,
  70. -- 入库占比(百分比)
  71. CASE
  72. WHEN (SELECT COUNT(*) FROM wms_task
  73. WHERE is_deleted = '0'
  74. AND MONTH(created_date) = MONTH(GETDATE())
  75. AND YEAR(created_date) = YEAR(GETDATE())) > 0
  76. THEN CAST(
  77. (SELECT COUNT(*) FROM wms_task
  78. WHERE is_deleted = '0'
  79. AND task_type = 'INBOUND'
  80. AND MONTH(created_date) = MONTH(GETDATE())
  81. AND YEAR(created_date) = YEAR(GETDATE())) * 100.0 /
  82. (SELECT COUNT(*) FROM wms_task
  83. WHERE is_deleted = '0'
  84. AND MONTH(created_date) = MONTH(GETDATE())
  85. AND YEAR(created_date) = YEAR(GETDATE()))
  86. AS INT)
  87. ELSE 0
  88. END AS inboundPercent
  89. </select>
  90. <!-- 查询立体仓库库位利用率数据 -->
  91. <select id="queryWarehouseStorageUtilization" resultType="map">
  92. -- 说明:根据实际库位表(如location、storage_location等)调整SQL
  93. SELECT
  94. -- 总库位数
  95. (SELECT COUNT(*) FROM location WHERE is_deleted = '0' AND warehouse = 'WAREHOUSE_3D') AS totalSlots,
  96. -- 已使用库位数(有库存的库位)
  97. (SELECT COUNT(DISTINCT location_code) FROM inventory_stock
  98. WHERE is_deleted = '0' AND in_stock_flag = 'Y') AS usedSlots,
  99. -- 利用率(百分比,保留1位小数)
  100. CASE
  101. WHEN (SELECT COUNT(*) FROM location WHERE is_deleted = '0' AND warehouse = 'WAREHOUSE_3D') > 0
  102. THEN CAST(
  103. (SELECT COUNT(DISTINCT location_code) FROM inventory_stock
  104. WHERE is_deleted = '0' AND in_stock_flag = 'Y') * 100.0 /
  105. (SELECT COUNT(*) FROM location WHERE is_deleted = '0' AND warehouse = 'WAREHOUSE_3D')
  106. AS DECIMAL(5,1))
  107. ELSE 0
  108. END AS utilizationRate,
  109. -- 钢制托盘数量(根据pallet_type字段统计)
  110. (SELECT COUNT(*) FROM pallet
  111. WHERE is_deleted = '0' AND pallet_type = 'STEEL') AS steelPallet,
  112. -- 护边托盘数量
  113. (SELECT COUNT(*) FROM pallet
  114. WHERE is_deleted = '0' AND pallet_type = 'GUARD') AS guardPallet,
  115. -- 平托盘数量
  116. (SELECT COUNT(*) FROM pallet
  117. WHERE is_deleted = '0' AND pallet_type = 'FLAT') AS flatPallet
  118. </select>
  119. <!-- 查询立体仓库机器人状态数据 -->
  120. <select id="queryWarehouseRobotStatus" resultType="map">
  121. -- 说明:根据实际设备表(如equipment、robot_device等)调整SQL
  122. SELECT
  123. id,
  124. device_name AS name,
  125. device_status AS status,
  126. CASE device_status
  127. WHEN 'WORKING' THEN '工作中'
  128. WHEN 'IDLE' THEN '空闲'
  129. WHEN 'CHARGING' THEN '充电中'
  130. WHEN 'ERROR' THEN '故障'
  131. ELSE '未知'
  132. END AS statusText,
  133. efficiency,
  134. current_tasks AS tasks
  135. FROM equipment_device
  136. WHERE is_deleted = '0'
  137. AND device_type = 'ROBOT'
  138. AND warehouse = 'WAREHOUSE_3D'
  139. ORDER BY id ASC
  140. </select>
  141. <!-- 查询立体仓库AGV状态数据(已废弃) -->
  142. <!--
  143. 注意:AGV状态数据不从数据库查询,而是从TUSK系统实时获取
  144. queryWarehouseAgvStatus 方法已在 DashboardPushTask.getAgvStatusFromTusk() 中实现
  145. 通过调用 TuskClientService.getOnlineRobots() 获取实时AGV状态
  146. 此查询保留空实现仅为避免MyBatis映射错误,实际不应被调用
  147. -->
  148. <select id="queryWarehouseAgvStatus" resultType="map">
  149. SELECT
  150. NULL AS id,
  151. NULL AS name,
  152. NULL AS status,
  153. NULL AS statusText,
  154. NULL AS battery,
  155. NULL AS tasks
  156. WHERE 1=0
  157. </select>
  158. <!-- 查询立体仓库领料申请单统计 -->
  159. <select id="queryWarehouseMaterialRequestStats" resultType="map">
  160. -- 说明:根据实际领料申请单表(如material_request、picking_order等)调整SQL
  161. SELECT
  162. -- 总数
  163. (SELECT COUNT(*) FROM material_request
  164. WHERE is_deleted = '0'
  165. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS total,
  166. -- 已完成数
  167. (SELECT COUNT(*) FROM material_request
  168. WHERE is_deleted = '0'
  169. AND status = 'COMPLETED'
  170. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS completed,
  171. -- 处理中数
  172. (SELECT COUNT(*) FROM material_request
  173. WHERE is_deleted = '0'
  174. AND status = 'PROCESSING'
  175. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS processing,
  176. -- 待处理数
  177. (SELECT COUNT(*) FROM material_request
  178. WHERE is_deleted = '0'
  179. AND status = 'PENDING'
  180. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS pending,
  181. -- 完成率(百分比)
  182. CASE
  183. WHEN (SELECT COUNT(*) FROM material_request
  184. WHERE is_deleted = '0'
  185. AND DATE(created_date) = CAST(GETDATE() AS DATE)) > 0
  186. THEN CAST(
  187. (SELECT COUNT(*) FROM material_request
  188. WHERE is_deleted = '0'
  189. AND status = 'COMPLETED'
  190. AND DATE(created_date) = CAST(GETDATE() AS DATE)) * 100.0 /
  191. (SELECT COUNT(*) FROM material_request
  192. WHERE is_deleted = '0'
  193. AND DATE(created_date) = CAST(GETDATE() AS DATE))
  194. AS INT)
  195. ELSE 0
  196. END AS completionRate
  197. </select>
  198. <!-- 查询立体仓库发货统计 -->
  199. <select id="queryWarehouseShipmentStats" resultType="map">
  200. -- 说明:根据实际发货单表(如shipment_order、delivery_order等)调整SQL
  201. SELECT
  202. -- 总数
  203. (SELECT COUNT(*) FROM shipment_order
  204. WHERE is_deleted = '0'
  205. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS total,
  206. -- 已完成数
  207. (SELECT COUNT(*) FROM shipment_order
  208. WHERE is_deleted = '0'
  209. AND status = 'COMPLETED'
  210. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS completed,
  211. -- 处理中数
  212. (SELECT COUNT(*) FROM shipment_order
  213. WHERE is_deleted = '0'
  214. AND status = 'PROCESSING'
  215. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS processing,
  216. -- 待处理数
  217. (SELECT COUNT(*) FROM shipment_order
  218. WHERE is_deleted = '0'
  219. AND status = 'PENDING'
  220. AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS pending,
  221. -- 完成率(百分比)
  222. CASE
  223. WHEN (SELECT COUNT(*) FROM shipment_order
  224. WHERE is_deleted = '0'
  225. AND DATE(created_date) = CAST(GETDATE() AS DATE)) > 0
  226. THEN CAST(
  227. (SELECT COUNT(*) FROM shipment_order
  228. WHERE is_deleted = '0'
  229. AND status = 'COMPLETED'
  230. AND DATE(created_date) = CAST(GETDATE() AS DATE)) * 100.0 /
  231. (SELECT COUNT(*) FROM shipment_order
  232. WHERE is_deleted = '0'
  233. AND DATE(created_date) = CAST(GETDATE() AS DATE))
  234. AS INT)
  235. ELSE 0
  236. END AS completionRate
  237. </select>
  238. </mapper>