You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
22 KiB
XML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Sln.Wcs.UI.Views.HomePageView">
<ScrollViewer Margin="20,14,20,14">
<StackPanel Spacing="14">
<!-- Intro Card -->
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="10">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="WCS 通用平台框架" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<TextBlock Text="基于 .NET 8.0 + Avalonia UI 构建的跨平台仓库控制系统 (Warehouse Control System),支持多种硬件设备协议,提供统一的调度、监控和管理能力。采用 Apollo 配置中心实时下发配置Serilog 结构化日志按模块分类存储SqlSugar ORM 多库访问。"
FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}" TextWrapping="Wrap" LineHeight="20" />
<WrapPanel Margin="0,4,0,0">
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text=".NET 8.0" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="Avalonia UI" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="MVVM" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="SqlSugar ORM" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="Serilog" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="Apollo 配置中心" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
<Border Background="{DynamicResource PrimaryBgBrush}" CornerRadius="4" Padding="10,5" Margin="0,0,8,8" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<TextBlock Text="FusionCache" FontSize="11" Foreground="{DynamicResource AccentTextBrush}" /></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- Module Card -->
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="核心模块" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<WrapPanel>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="主控台程序负责系统启动、配置加载、DI 容器编排" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.UI" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="跨平台桌面客户端,基于 Avalonia + MVVM提供设备监控界面" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Business" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="业务逻辑层,任务创建、库位筛选、物料入库/出库策略" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Repository" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="数据访问层,基于 SqlSugar ORM多数据库连接管理" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Strategy" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="策略层,物料/库位分配算法,支持多种策略可配置切换" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Cache" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="缓存层FusionCache + SQLite 分布式缓存,支持熔断" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Serilog" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="日志模块,按 Info/Plc/Agv/Rfid/Alarm/Error 分类存储" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
<Border Width="240" Padding="14,12" Margin="0,0,14,14" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<TextBlock Text="Sln.Wcs.Common / Model" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
<TextBlock Text="公共工具层与领域模型,提供基础类型、实体定义与配置" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" /></StackPanel></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- 海康 AGV 模块 -->
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="海康 AGV 调度模块" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<TextBlock Text="封装海康机器人 RCS-2000 接口,采用三层架构实现 AGV 任务下发、路径规划、状态查询与设备通知。"
FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}" TextWrapping="Wrap" />
<WrapPanel>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="{DynamicResource PrimaryBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotSdk" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="底层 HTTP 客户端,封装海康 RCS API 原始接口调用GbTaskSubmit / GenSchedulingTask / QueryStatus / CarrierBind 等)" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotAdapter" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="适配层,将 SDK 原始 DTO 转换为业务语义模型,含 TaskType 映射、状态枚举转换、异常处理与重试" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#00838F" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HikRoBotDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="调度中枢,管理多 AGV 的任务队列、防死锁、路径冲突检测、优先级调度与设备状态同步" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- 提升机模块 -->
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="12">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="提升机调度模块" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<TextBlock Text="封装提升机 (Hoist) 控制协议,实现出入库升降控制、托盘到位检测、报警设置与状态实时监控。"
FontSize="12" Foreground="{DynamicResource SecondaryTextBrush}" TextWrapping="Wrap" />
<WrapPanel>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="{DynamicResource PrimaryBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistSdk" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="底层通信客户端,封装提升机原生协议(升降/取货/放货/状态查询),处理网络连接与超时" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistAdapter" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="适配层,将原始协议 DTO 转换为业务领域模型,含楼层映射、托盘状态枚举、报警码解析" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
<Border Width="280" Padding="14,12" Margin="0,0,12,12" Background="{DynamicResource CardBgBrush}" CornerRadius="6" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="4">
<StackPanel Orientation="Horizontal" Spacing="6">
<Border Background="#00838F" CornerRadius="2" Width="4" Height="14" />
<TextBlock Text="HoistDispatcher" FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" /></StackPanel>
<TextBlock Text="调度中枢,管理多台提升机的任务队列、楼层协同、托盘到位逻辑、报警联动与状态同步" FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="16" /></StackPanel></Border>
</WrapPanel>
</StackPanel>
</Border>
<!-- 调用关系 -->
<Border CornerRadius="8" Padding="22" Background="{DynamicResource CardBgBrush}" BorderBrush="{DynamicResource AccentBgBrush}" BorderThickness="1">
<StackPanel Spacing="14">
<StackPanel Orientation="Horizontal" Spacing="10">
<Rectangle Width="3" Height="20" Fill="#4FC3F7" RadiusX="2" RadiusY="2" />
<TextBlock Text="调用关系" FontSize="17" FontWeight="SemiBold" Foreground="{DynamicResource PrimaryTextBrush}" />
</StackPanel>
<Border Background="{DynamicResource CardBgBrush}" CornerRadius="6" Padding="16,12" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1">
<StackPanel Spacing="8">
<TextBlock Text="Strategy → Dispatcher → Adapter → SDK → 设备"
FontSize="13" FontWeight="SemiBold" Foreground="{DynamicResource AccentTextBrush}" HorizontalAlignment="Center" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Spacing="0">
<Border Background="#6A1B9A" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Strategy" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="物料/库位分配" FontSize="9" Foreground="#CE93D8" HorizontalAlignment="Center" /></StackPanel></Border>
<TextBlock Text="→" FontSize="18" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#00838F" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Dispatcher" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="队列调度/防死锁" FontSize="9" Foreground="#B2DFDB" HorizontalAlignment="Center" /></StackPanel></Border>
<TextBlock Text="→" FontSize="18" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" Margin="8,0" />
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="Adapter" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="DTO转换/重试" FontSize="9" Foreground="#B3D4FC" HorizontalAlignment="Center" /></StackPanel></Border>
<TextBlock Text="→" FontSize="18" Foreground="{DynamicResource AccentTextBrush}" VerticalAlignment="Center" Margin="8,0" />
<Border Background="#0D47A1" CornerRadius="4" Padding="14,10" Width="140">
<StackPanel HorizontalAlignment="Center" Spacing="2">
<TextBlock Text="SDK" FontSize="12" FontWeight="SemiBold" Foreground="White" HorizontalAlignment="Center" />
<TextBlock Text="协议通信" FontSize="9" Foreground="#90CAF9" HorizontalAlignment="Center" /></StackPanel></Border>
</StackPanel>
</StackPanel>
</Border>
<WrapPanel HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#6A1B9A" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Strategy 策略层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#00838F" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Dispatcher 调度层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="{DynamicResource InfoBtnBrush}" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="Adapter 适配层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,16,8">
<Border Background="#0D47A1" CornerRadius="2" Width="12" Height="12" Margin="0,0,6,0" />
<TextBlock Text="SDK 通信层" FontSize="11" Foreground="{DynamicResource SecondaryTextBrush}" /></StackPanel>
</WrapPanel>
<TextBlock Text="Strategy 策略层根据物料属性与库位状态计算最优分配方案,将任务指令交由 Dispatcher 进行队列调度与冲突检测Dispatcher 通过 Adapter 将业务指令转换为设备协议格式,最终由 SDK 与硬件设备AGV RCS-2000 / 提升机 PLC通信执行。海康 AGV 与提升机均遵循此四层调用链仅底层通信协议不同HTTP vs TCP。"
FontSize="11" Foreground="{DynamicResource MutedTextBrush}" TextWrapping="Wrap" LineHeight="18" />
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>
</UserControl>