ERP/query_shipment_sn.sh

130 lines
2.9 KiB
Bash
Raw Permalink Normal View History

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