Browse Source

任务数据

master
han\hanst 3 months ago
parent
commit
500d0d4f4b
  1. 3
      src/main/java/com/gaotao/modules/dashboard/task/DashboardPushTask.java
  2. 233
      src/main/resources/mapper/dashboard/DashboardDao.xml

3
src/main/java/com/gaotao/modules/dashboard/task/DashboardPushTask.java

@ -376,8 +376,7 @@ public class DashboardPushTask {
log.debug("开始从数据库获取智能立体仓库看板数据");
// 查询任务统计数据
//Map<String, Object> taskStats = dashboardDao.queryWarehouseTaskStats();
Map<String, Object> taskStats = new HashMap<>();
Map<String, Object> taskStats = dashboardDao.queryWarehouseTaskStats();
log.debug("任务统计数据: {}", taskStats);
// 查询库位利用率数据

233
src/main/resources/mapper/dashboard/DashboardDao.xml

@ -31,70 +31,73 @@
<!-- 查询立体仓库任务统计数据 -->
<select id="queryWarehouseTaskStats" resultType="map">
-- 说明:根据实际数据库表结构调整SQL
-- 这里提供示例结构,需要根据实际的任务表(如wms_task、agv_task等)调整
-- 说明:从 wms_order_task 表统计任务数据
-- 只统计已完成的任务(status='已完成')
-- source_type 包含"入库"两个字的是入库任务,其他都是出库任务
SELECT
-- 累计任务总数(从任务历史表统计)
(SELECT COUNT(*) FROM wms_task WHERE is_deleted = '0') AS totalTasks,
-- 月度作业总数(当月任务数)
(SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE())) AS monthlyTasks,
-- 出库作业数(当月)
(SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND task_type = 'OUTBOUND'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE())) AS outboundTasks,
-- 入库作业数(当月)
(SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND task_type = 'INBOUND'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE())) AS inboundTasks,
-- 累计任务总数(历史所有已完成任务)
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
) AS totalTasks,
-- 月度作业总数(当月已完成任务数)
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE())) AS monthlyTasks,
-- 出库作业数(当月已完成,source_type不包含"入库")
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE (source_type NOT LIKE '%入库%' OR source_type IS NULL)
AND MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE())) AS outboundTasks,
-- 入库作业数(当月已完成,source_type包含"入库")
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE source_type LIKE '%入库%'
AND MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE())) AS inboundTasks,
-- 出库占比(百分比)
CASE
WHEN (SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE())) > 0
CASE
WHEN (SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE())) > 0
THEN CAST(
(SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND task_type = 'OUTBOUND'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE())) * 100.0 /
(SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE()))
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE (source_type NOT LIKE '%入库%' OR source_type IS NULL)
AND MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE())) * 100.0 /
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE()))
AS INT)
ELSE 0
ELSE 0
END AS outboundPercent,
-- 入库占比(百分比)
CASE
WHEN (SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE())) > 0
CASE
WHEN (SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE())) > 0
THEN CAST(
(SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND task_type = 'INBOUND'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE())) * 100.0 /
(SELECT COUNT(*) FROM wms_task
WHERE is_deleted = '0'
AND MONTH(created_date) = MONTH(GETDATE())
AND YEAR(created_date) = YEAR(GETDATE()))
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE source_type LIKE '%入库%'
AND MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE())) * 100.0 /
(SELECT COUNT(DISTINCT task_no)
FROM wms_order_task
WHERE MONTH(created_time) = MONTH(GETDATE())
AND YEAR(created_time) = YEAR(GETDATE()))
AS INT)
ELSE 0
ELSE 0
END AS inboundPercent
</select>
@ -104,32 +107,32 @@
SELECT
-- 总库位数
(SELECT COUNT(*) FROM location WHERE is_deleted = '0' AND warehouse = 'WAREHOUSE_3D') AS totalSlots,
-- 已使用库位数(有库存的库位)
(SELECT COUNT(DISTINCT location_code) FROM inventory_stock
(SELECT COUNT(DISTINCT location_code) FROM inventory_stock
WHERE is_deleted = '0' AND in_stock_flag = 'Y') AS usedSlots,
-- 利用率(百分比,保留1位小数)
CASE
CASE
WHEN (SELECT COUNT(*) FROM location WHERE is_deleted = '0' AND warehouse = 'WAREHOUSE_3D') > 0
THEN CAST(
(SELECT COUNT(DISTINCT location_code) FROM inventory_stock
WHERE is_deleted = '0' AND in_stock_flag = 'Y') * 100.0 /
(SELECT COUNT(DISTINCT location_code) FROM inventory_stock
WHERE is_deleted = '0' AND in_stock_flag = 'Y') * 100.0 /
(SELECT COUNT(*) FROM location WHERE is_deleted = '0' AND warehouse = 'WAREHOUSE_3D')
AS DECIMAL(5,1))
ELSE 0
ELSE 0
END AS utilizationRate,
-- 钢制托盘数量(根据pallet_type字段统计)
(SELECT COUNT(*) FROM pallet
(SELECT COUNT(*) FROM pallet
WHERE is_deleted = '0' AND pallet_type = 'STEEL') AS steelPallet,
-- 护边托盘数量
(SELECT COUNT(*) FROM pallet
(SELECT COUNT(*) FROM pallet
WHERE is_deleted = '0' AND pallet_type = 'GUARD') AS guardPallet,
-- 平托盘数量
(SELECT COUNT(*) FROM pallet
(SELECT COUNT(*) FROM pallet
WHERE is_deleted = '0' AND pallet_type = 'FLAT') AS flatPallet
</select>
@ -150,22 +153,22 @@
efficiency,
current_tasks AS tasks
FROM equipment_device
WHERE is_deleted = '0'
WHERE is_deleted = '0'
AND device_type = 'ROBOT'
AND warehouse = 'WAREHOUSE_3D'
ORDER BY id ASC
</select>
<!-- 查询立体仓库AGV状态数据(已废弃) -->
<!--
<!--
注意:AGV状态数据不从数据库查询,而是从TUSK系统实时获取
queryWarehouseAgvStatus 方法已在 DashboardPushTask.getAgvStatusFromTusk() 中实现
通过调用 TuskClientService.getOnlineRobots() 获取实时AGV状态
此查询保留空实现仅为避免MyBatis映射错误,实际不应被调用
-->
<select id="queryWarehouseAgvStatus" resultType="map">
SELECT
SELECT
NULL AS id,
NULL AS name,
NULL AS status,
@ -180,43 +183,43 @@
-- 说明:根据实际领料申请单表(如material_request、picking_order等)调整SQL
SELECT
-- 总数
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS total,
-- 已完成数
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND status = 'COMPLETED'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS completed,
-- 处理中数
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND status = 'PROCESSING'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS processing,
-- 待处理数
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND status = 'PENDING'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS pending,
-- 完成率(百分比)
CASE
WHEN (SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
CASE
WHEN (SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) > 0
THEN CAST(
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND status = 'COMPLETED'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) * 100.0 /
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) * 100.0 /
(SELECT COUNT(*) FROM material_request
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE))
AS INT)
ELSE 0
ELSE 0
END AS completionRate
</select>
@ -225,43 +228,43 @@
-- 说明:根据实际发货单表(如shipment_order、delivery_order等)调整SQL
SELECT
-- 总数
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS total,
-- 已完成数
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND status = 'COMPLETED'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS completed,
-- 处理中数
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND status = 'PROCESSING'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS processing,
-- 待处理数
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND status = 'PENDING'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) AS pending,
-- 完成率(百分比)
CASE
WHEN (SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
CASE
WHEN (SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) > 0
THEN CAST(
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND status = 'COMPLETED'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) * 100.0 /
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE)) * 100.0 /
(SELECT COUNT(*) FROM shipment_order
WHERE is_deleted = '0'
AND DATE(created_date) = CAST(GETDATE() AS DATE))
AS INT)
ELSE 0
ELSE 0
END AS completionRate
</select>

Loading…
Cancel
Save