tourze / train-category-bundle
培训分类
Installs: 81
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.1
- ext-simplexml: *
- doctrine/collections: ^2.3
- doctrine/data-fixtures: ^2.0
- doctrine/dbal: ^4.0
- doctrine/doctrine-bundle: ^2.13
- doctrine/doctrine-fixtures-bundle: ^4.0
- doctrine/orm: ^3.0
- doctrine/persistence: ^3.1 || ^4
- easycorp/easyadmin-bundle: ^4
- knplabs/knp-menu: ^3.7
- symfony/config: ^6.4
- symfony/console: ^6.4
- symfony/dependency-injection: ^6.4
- symfony/doctrine-bridge: ^6.4
- symfony/framework-bundle: ^6.4
- symfony/http-kernel: ^6.4
- symfony/serializer: ^6.4
- symfony/yaml: ^6.4 || ^7.1
- tourze/arrayable: 0.0.*
- tourze/bundle-dependency: 0.0.*
- tourze/doctrine-indexed-bundle: 0.0.*
- tourze/doctrine-snowflake-bundle: 0.1.*
- tourze/doctrine-timestamp-bundle: 0.0.*
- tourze/doctrine-user-bundle: 0.0.*
- tourze/easy-admin-menu-bundle: 0.1.*
- tourze/json-rpc-core: ^0.0.6
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-06-01 06:09:23 UTC
README
培训分类管理包,用于管理安全生产培训资源的分类体系。
功能特性
- 🏗️ 树形分类结构:支持无限层级的分类管理
- 📋 AQ8011-2023标准:符合国家安全生产培训标准
- ⚙️ 培训要求配置:学时、证书、考试、年龄等要求管理
- 🔍 高级搜索:多条件搜索、智能推荐、相关分类
- 📊 统计分析:分类统计、使用分析、健康度报告
- 📤 导入导出:Excel/CSV格式的数据导入导出
- 🔗 模块集成:与其他培训模块的无缝集成
- 🎯 EasyAdmin集成:完整的后台管理界面
安装
composer require tourze/train-category-bundle
配置
1. 注册Bundle
// config/bundles.php return [ // ... Tourze\TrainCategoryBundle\TrainCategoryBundle::class => ['all' => true], ];
2. 数据库迁移
php bin/console doctrine:migrations:diff php bin/console doctrine:migrations:migrate
3. 加载数据填充
# 加载标准分类数据 php bin/console doctrine:fixtures:load --group=production # 加载开发测试数据(包含测试数据) php bin/console doctrine:fixtures:load --group=dev # 仅加载基础分类数据 php bin/console doctrine:fixtures:load --append --fixtures=src/DataFixtures/CategoryFixtures.php # 仅加载培训要求数据 php bin/console doctrine:fixtures:load --append --fixtures=src/DataFixtures/CategoryRequirementFixtures.php
数据填充说明
本包提供了完整的数据填充类,用于快速初始化分类数据:
CategoryFixtures
基础分类数据填充,包含:
- 培训类别:特种作业、主要负责人、安全管理人员、其他从业人员
- 行业分类:矿山、危化品、石油天然气、金属冶炼、建筑施工、道路运输等
- 特种作业类别:电工、焊接、高处作业、制冷空调、煤矿安全、危化品安全等
CategoryRequirementFixtures
培训要求数据填充,为主要分类创建符合AQ8011-2023标准的培训要求:
- 学时要求(初训、复训、理论、实操)
- 证书有效期配置
- 考试要求(理论、实操)
- 年龄限制和前置条件
CategoryDetailedFixtures
详细分类数据填充,为特种作业创建三级分类:
- 电工作业:低压电工、高压电工、防爆电气等
- 焊接作业:熔化焊接、压力焊、钎焊等
- 高处作业:登高架设、高处安装维护拆除等
- 其他特种作业的详细分类
CategoryTestDataFixtures
测试数据填充(仅开发环境),包含:
- 边界情况测试数据
- 性能测试数据(100个子分类、10层深度嵌套)
- 功能验证数据
- 异常情况模拟数据
数据填充分组
# 生产环境数据(推荐) php bin/console doctrine:fixtures:load --group=production # 开发环境数据(包含测试数据) php bin/console doctrine:fixtures:load --group=dev # 自定义加载 php bin/console doctrine:fixtures:load --append \ --fixtures=src/DataFixtures/CategoryFixtures.php \ --fixtures=src/DataFixtures/CategoryRequirementFixtures.php
使用示例
基础分类操作
use Tourze\TrainCategoryBundle\Service\CategoryService; // 获取服务 $categoryService = $this->container->get(CategoryService::class); // 创建分类 $category = $categoryService->createCategory('新分类', $parentCategory); // 获取树形结构 $tree = $categoryService->getCategoryTree(); // 获取子分类 $children = $categoryService->getChildren($parentCategory);
高级搜索
use Tourze\TrainCategoryBundle\Service\CategorySearchService; $searchService = $this->container->get(CategorySearchService::class); // 高级搜索 $results = $searchService->advancedSearch([ 'title' => '电工', 'level' => 2, 'hasRequirements' => true, 'minAge' => 18, 'maxAge' => 60, ]); // 智能推荐 $recommendations = $searchService->getRecommendations([ 'age' => 25, 'industry' => '建筑施工', 'experience' => '初级', ]);
统计分析
use Tourze\TrainCategoryBundle\Service\CategoryStatisticsService; $statisticsService = $this->container->get(CategoryStatisticsService::class); // 获取概览统计 $overview = $statisticsService->getOverviewStatistics(); // 获取健康度报告 $healthReport = $statisticsService->getHealthReport(); // 导出统计报表 $csvData = $statisticsService->exportStatistics('csv');
导入导出
use Tourze\TrainCategoryBundle\Service\CategoryImportExportService; $importExportService = $this->container->get(CategoryImportExportService::class); // 导出分类数据 $excelData = $importExportService->exportCategories('excel'); // 导入分类数据 $result = $importExportService->importCategories($filePath, 'excel');
实体说明
Category 实体
id
: 主键title
: 分类标题parent
: 父分类(自关联)children
: 子分类集合sortNumber
: 排序号createdAt
: 创建时间updatedAt
: 更新时间
CategoryRequirement 实体
id
: 主键category
: 关联分类initialTrainingHours
: 初训学时refreshTrainingHours
: 复训学时theoryHours
: 理论学时practiceHours
: 实操学时certificateValidityPeriod
: 证书有效期(月)requiresPracticalExam
: 是否需要实操考试requiresOnSiteTraining
: 是否需要现场培训minimumAge/maximumAge
: 年龄要求prerequisites
: 前置条件(JSON数组)educationRequirements
: 学历要求(JSON数组)healthRequirements
: 健康要求(JSON数组)experienceRequirements
: 经验要求(JSON数组)remarks
: 备注
命令行工具
导入标准分类
# 导入AQ8011-2023标准分类 php bin/console train-category:import-standard # 强制覆盖现有数据 php bin/console train-category:import-standard --force
EasyAdmin集成
本包提供了完整的EasyAdmin管理界面和菜单集成:
管理界面
- 分类管理:
/admin/category
- 培训要求管理:
/admin/category-requirement
菜单集成
本包自动集成到EasyAdmin菜单系统中,在后台管理界面会显示"培训分类管理"菜单,包含:
- 分类管理:管理培训分类的树形结构
- 培训要求:配置各分类的培训要求
菜单通过 AdminMenu
服务自动注册,无需手动配置。
管理界面功能
- 树形结构显示
- 拖拽排序
- 批量操作
- 高级筛选
- 数据导入导出
API接口
JSON-RPC接口
// 获取工种培训分类 $procedure = new GetJobTrainingCategory(); $result = $procedure->call(['jobType' => 'electrician']);
开发指南
扩展分类验证
use Tourze\TrainCategoryBundle\Service\CategoryValidationService; class CustomValidationService extends CategoryValidationService { public function validateCustomRule(Category $category): array { $errors = []; // 自定义验证逻辑 return $errors; } }
自定义搜索条件
use Tourze\TrainCategoryBundle\Service\CategorySearchService; class CustomSearchService extends CategorySearchService { public function searchByCustomCriteria(array $criteria): array { // 自定义搜索逻辑 return $this->categoryRepository->findBy($criteria); } }
测试
# 运行单元测试 vendor/bin/phpunit # 运行特定测试 vendor/bin/phpunit tests/Unit/Service/CategoryServiceTest.php # 生成覆盖率报告 vendor/bin/phpunit --coverage-html coverage/
许可证
MIT License
贡献
欢迎提交Issue和Pull Request来改进这个包。
更新日志
v1.0.0
- 初始版本发布
- 基础分类管理功能
- AQ8011-2023标准支持
- EasyAdmin集成
v1.1.0
- 添加高级搜索功能
- 添加统计分析功能
- 添加导入导出功能
- 添加模块集成功能
- 完善数据填充类