154 lines
4.4 KiB
Bash
154 lines
4.4 KiB
Bash
#!/bin/bash
|
|
# ============================================================
|
|
# 清理没有关联机场的大疆无人机
|
|
# ============================================================
|
|
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "清理没有关联机场的大疆无人机"
|
|
echo "=========================================="
|
|
|
|
# 数据库配置
|
|
DB_CONTAINER="ruoyi-mysql"
|
|
DB_USER="root"
|
|
DB_PASSWORD="password"
|
|
DB_NAME="ry-cloud"
|
|
|
|
echo ""
|
|
echo "第一步:查询所有大疆无人机(用于确认)"
|
|
echo "=========================================="
|
|
docker exec ${DB_CONTAINER} mysql -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} -e "
|
|
SELECT
|
|
a.aircraft_id,
|
|
a.aircraft_name,
|
|
d.device_manufacturer,
|
|
d.device_sn
|
|
FROM device_aircraft a
|
|
LEFT JOIN device_device d ON a.device_id = d.device_id
|
|
WHERE d.device_manufacturer = 'dajiang'
|
|
ORDER BY a.aircraft_id;
|
|
"
|
|
|
|
echo ""
|
|
echo "第二步:查询没有关联机场的大疆无人机"
|
|
echo "=========================================="
|
|
docker exec ${DB_CONTAINER} mysql -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} -e "
|
|
SELECT
|
|
a.aircraft_id,
|
|
a.aircraft_name,
|
|
d.device_manufacturer,
|
|
d.device_sn,
|
|
d.iot_device_id
|
|
FROM device_aircraft a
|
|
INNER JOIN device_device d ON a.device_id = d.device_id
|
|
LEFT JOIN device_dock_aircraft da ON a.aircraft_id = da.aircraft_id
|
|
WHERE d.device_manufacturer = 'dajiang'
|
|
AND da.id IS NULL
|
|
ORDER BY a.aircraft_id;
|
|
"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "即将删除以上无人机记录"
|
|
echo "请确认是否继续?(y/n)"
|
|
read -r confirm
|
|
|
|
if [[ ! $confirm =~ ^[Yy]$ ]]; then
|
|
echo "操作已取消"
|
|
exit 0
|
|
fi
|
|
|
|
echo ""
|
|
echo "第三步:删除无人机挂载关联表中的记录"
|
|
echo "=========================================="
|
|
docker exec ${DB_CONTAINER} mysql -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} -e "
|
|
DELETE FROM device_aircraft_payload
|
|
WHERE aircraft_id IN (
|
|
SELECT a.aircraft_id
|
|
FROM device_aircraft a
|
|
INNER JOIN device_device d ON a.device_id = d.device_id
|
|
LEFT JOIN device_dock_aircraft da ON a.aircraft_id = da.aircraft_id
|
|
WHERE d.device_manufacturer = 'dajiang'
|
|
AND da.id IS NULL
|
|
);
|
|
"
|
|
|
|
echo "无人机挂载关联记录删除完成"
|
|
|
|
echo ""
|
|
echo "第四步:删除机场无人机关联表中的记录"
|
|
echo "=========================================="
|
|
docker exec ${DB_CONTAINER} mysql -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} -e "
|
|
DELETE FROM device_dock_aircraft
|
|
WHERE aircraft_id IN (
|
|
SELECT a.aircraft_id
|
|
FROM device_aircraft a
|
|
INNER JOIN device_device d ON a.device_id = d.device_id
|
|
LEFT JOIN device_dock_aircraft da ON a.aircraft_id = da.aircraft_id
|
|
WHERE d.device_manufacturer = 'dajiang'
|
|
AND da.id IS NULL
|
|
);
|
|
"
|
|
|
|
echo "机场无人机关联记录删除完成"
|
|
|
|
echo ""
|
|
echo "第五步:删除无人机表中的记录"
|
|
echo "=========================================="
|
|
docker exec ${DB_CONTAINER} mysql -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} -e "
|
|
DELETE FROM device_aircraft
|
|
WHERE aircraft_id IN (
|
|
SELECT temp.aircraft_id
|
|
FROM (
|
|
SELECT a.aircraft_id
|
|
FROM device_aircraft a
|
|
INNER JOIN device_device d ON a.device_id = d.device_id
|
|
LEFT JOIN device_dock_aircraft da ON a.aircraft_id = da.aircraft_id
|
|
WHERE d.device_manufacturer = 'dajiang'
|
|
AND da.id IS NULL
|
|
) AS temp
|
|
);
|
|
"
|
|
|
|
echo "无人机记录删除完成"
|
|
|
|
echo ""
|
|
echo "第六步:验证删除结果"
|
|
echo "=========================================="
|
|
docker exec ${DB_CONTAINER} mysql -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} -e "
|
|
SELECT
|
|
a.aircraft_id,
|
|
a.aircraft_name,
|
|
d.device_manufacturer,
|
|
d.device_sn
|
|
FROM device_aircraft a
|
|
INNER JOIN device_device d ON a.device_id = d.device_id
|
|
WHERE d.device_manufacturer = 'dajiang'
|
|
ORDER BY a.aircraft_id;
|
|
"
|
|
|
|
echo ""
|
|
echo "统计验证:"
|
|
echo "=========================================="
|
|
docker exec ${DB_CONTAINER} mysql -u${DB_USER} -p${DB_PASSWORD} ${DB_NAME} -e "
|
|
SELECT
|
|
'大疆无人机总数' AS statistic_name,
|
|
COUNT(*) AS count
|
|
FROM device_aircraft a
|
|
INNER JOIN device_device d ON a.device_id = d.device_id
|
|
WHERE d.device_manufacturer = 'dajiang'
|
|
UNION ALL
|
|
SELECT
|
|
'大疆机场总数' AS statistic_name,
|
|
COUNT(*) AS count
|
|
FROM device_dock dock
|
|
INNER JOIN device_device d ON dock.device_id = d.device_id
|
|
WHERE d.device_manufacturer = 'dajiang';
|
|
"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "清理完成"
|
|
echo "=========================================="
|