ERP/query_shipment_sn.sh

130 lines
2.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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