130 lines
2.9 KiB
Bash
130 lines
2.9 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# 发货记录 SN 查询脚本
|
|||
|
|
|
|||
|
|
REDIS_HOST="${REDIS_HOST:-180.163.74.83}"
|
|||
|
|
REDIS_PORT="${REDIS_PORT:-6379}"
|
|||
|
|
REDIS_PASSWORD="${REDIS_PASSWORD}"
|
|||
|
|
REDIS_DB="${REDIS_DB:-0}"
|
|||
|
|
|
|||
|
|
# 颜色定义
|
|||
|
|
GREEN='\033[0;32m'
|
|||
|
|
RED='\033[0;31m'
|
|||
|
|
YELLOW='\033[1;33m'
|
|||
|
|
NC='\033[0m' # No Color
|
|||
|
|
|
|||
|
|
# 构建 redis-cli 命令
|
|||
|
|
REDIS_CMD="redis-cli -h $REDIS_HOST -p $REDIS_PORT"
|
|||
|
|
if [ -n "$REDIS_PASSWORD" ]; then
|
|||
|
|
REDIS_CMD="$REDIS_CMD -a $REDIS_PASSWORD"
|
|||
|
|
fi
|
|||
|
|
REDIS_CMD="$REDIS_CMD -n $REDIS_DB"
|
|||
|
|
|
|||
|
|
# 显示帮助
|
|||
|
|
show_help() {
|
|||
|
|
echo "发货记录 SN 查询工具"
|
|||
|
|
echo ""
|
|||
|
|
echo "用法:"
|
|||
|
|
echo " $0 <命令> [参数]"
|
|||
|
|
echo ""
|
|||
|
|
echo "命令:"
|
|||
|
|
echo " query <SN> 查询单个 SN 的出货信息"
|
|||
|
|
echo " count 查看总记录数"
|
|||
|
|
echo " list [数量] 列出最近的 SN(默认 20 条)"
|
|||
|
|
echo " search <模式> 搜索匹配的 SN(如: SN00*)"
|
|||
|
|
echo " exists <SN> 检查 SN 是否存在"
|
|||
|
|
echo ""
|
|||
|
|
echo "示例:"
|
|||
|
|
echo " $0 query SN0001"
|
|||
|
|
echo " $0 count"
|
|||
|
|
echo " $0 list 50"
|
|||
|
|
echo " $0 search 'SN00*'"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 查询单个 SN
|
|||
|
|
query_sn() {
|
|||
|
|
local sn=$1
|
|||
|
|
if [ -z "$sn" ]; then
|
|||
|
|
echo -e "${RED}错误: 请提供 SN 号${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "${YELLOW}查询 SN: $sn${NC}"
|
|||
|
|
result=$($REDIS_CMD HGET shipment_sn_mapping "$sn")
|
|||
|
|
|
|||
|
|
if [ -z "$result" ]; then
|
|||
|
|
echo -e "${RED}未找到该 SN 的出货记录${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${GREEN}找到记录:${NC}"
|
|||
|
|
echo "$result" | python3 -m json.tool 2>/dev/null || echo "$result"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 统计总数
|
|||
|
|
count_records() {
|
|||
|
|
echo -e "${YELLOW}统计记录总数...${NC}"
|
|||
|
|
count=$($REDIS_CMD HLEN shipment_sn_mapping)
|
|||
|
|
echo -e "${GREEN}总记录数: $count${NC}"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 列出 SN
|
|||
|
|
list_sns() {
|
|||
|
|
local limit=${1:-20}
|
|||
|
|
echo -e "${YELLOW}列出前 $limit 条记录...${NC}"
|
|||
|
|
$REDIS_CMD HSCAN shipment_sn_mapping 0 COUNT "$limit" | tail -n +2
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 搜索 SN
|
|||
|
|
search_sns() {
|
|||
|
|
local pattern=$1
|
|||
|
|
if [ -z "$pattern" ]; then
|
|||
|
|
echo -e "${RED}错误: 请提供搜索模式${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "${YELLOW}搜索模式: $pattern${NC}"
|
|||
|
|
$REDIS_CMD HSCAN shipment_sn_mapping 0 MATCH "$pattern" COUNT 100
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 检查存在
|
|||
|
|
check_exists() {
|
|||
|
|
local sn=$1
|
|||
|
|
if [ -z "$sn" ]; then
|
|||
|
|
echo -e "${RED}错误: 请提供 SN 号${NC}"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
exists=$($REDIS_CMD HEXISTS shipment_sn_mapping "$sn")
|
|||
|
|
if [ "$exists" = "1" ]; then
|
|||
|
|
echo -e "${GREEN}SN $sn 存在${NC}"
|
|||
|
|
else
|
|||
|
|
echo -e "${RED}SN $sn 不存在${NC}"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 主逻辑
|
|||
|
|
case "${1:-help}" in
|
|||
|
|
query)
|
|||
|
|
query_sn "$2"
|
|||
|
|
;;
|
|||
|
|
count)
|
|||
|
|
count_records
|
|||
|
|
;;
|
|||
|
|
list)
|
|||
|
|
list_sns "$2"
|
|||
|
|
;;
|
|||
|
|
search)
|
|||
|
|
search_sns "$2"
|
|||
|
|
;;
|
|||
|
|
exists)
|
|||
|
|
check_exists "$2"
|
|||
|
|
;;
|
|||
|
|
help|--help|-h)
|
|||
|
|
show_help
|
|||
|
|
;;
|
|||
|
|
*)
|
|||
|
|
echo -e "${RED}未知命令: $1${NC}"
|
|||
|
|
show_help
|
|||
|
|
exit 1
|
|||
|
|
;;
|
|||
|
|
esac
|