workplanner/work-planner 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

workplanner/work-planner

Composer 安装命令:

composer require workplanner/work-planner

包简介

Construction work planning engine with CPM scheduling, Gantt charts, and host-integratable HTTP controllers

README 文档

README

Latest Version on Packagist License: MIT

Construction work planning engine with critical-path scheduling, Gantt chart generation, and host-integratable HTTP controllers.

Features

  • Schedule generation — template-driven activity durations, dependencies, and working-day calendars
  • Critical Path Method (CPM) — early/late dates, slack, and critical path day counts
  • Gantt engine — timeline columns, bar positioning, milestone support
  • Template validation — duration percent totals, dependency integrity, work-type matching
  • HTTP controllers — projects, templates, calendar, dashboard, reports, exports, settings, users (via host closures)
  • UI kit — reusable PHP view components, CSS, and JavaScript (Gantt, calendar, dashboard)
  • Publishable assets — config, migrations, seeds, views, menu, and permission manifests
  • Framework adapters — contracts for request, response, session, authorization, CSRF, views, and database
  • Laravel support — auto-discovery, config merge, and workplanner:publish Artisan command

Requirements

  • PHP 8.3 or higher
  • Composer 2.x

Optional (host integrations):

  • dompdf/dompdf ^3.0 — PDF exports
  • phpoffice/phpspreadsheet ^5.8 — Excel exports
  • illuminate/support ^11|^12 — Laravel auto-discovery

Installation

Any PHP application

composer require workplanner/work-planner

Laravel

composer require workplanner/work-planner
php artisan vendor:publish --tag=workplanner-config
php artisan vendor:publish --tag=workplanner-migrations
php artisan workplanner:publish

Register host bridge adapters in your application bootstrap (see Host integration).

Configuration

Default configuration ships in config/workplanner.php:

return [
    'name' => 'Work Planner',
    'pagination' => ['per_page' => 10],
    'calendar' => ['default_duration_days' => 180],
    'theme' => ['default' => 'system'],
];

Access merged config in PHP:

use WorkPlanner\WorkPlannerServiceProvider;

$perPage = WorkPlannerServiceProvider::config('pagination')['per_page'] ?? 10;

Laravel reads the same values from config('workplanner') after publishing.

Publishing assets

Publish tags:

Tag Contents
workplanner-config config/workplanner.php
workplanner-menu config/workplanner-menu.php
workplanner-permissions config/workplanner-permissions.php
workplanner-views View components under resources/views/vendor/workplanner
workplanner-assets CSS/JS under public/vendor/workplanner
workplanner-migrations Database migrations
workplanner-seeds Database seeders

Standalone PHP host:

php vendor/bin/workplanner-install          # list tags and publish all
php vendor/bin/workplanner-install --tag=workplanner-config

Or programmatically:

use WorkPlanner\PackageInstaller;
use WorkPlanner\WorkPlannerServiceProvider;

$installer = new PackageInstaller('/path/to/host');
$installer->publish(WorkPlannerServiceProvider::TAG_CONFIG);
$installer->publishAll();

Usage examples

Generate a schedule (core engine)

use WorkPlanner\Calendar\WorkingCalendar;
use WorkPlanner\DTO\ProjectInputDTO;
use WorkPlanner\Template\TemplateActivity;
use WorkPlanner\Template\TemplateCollection;
use WorkPlanner\Template\TemplateDependency;
use WorkPlanner\WorkPlanner;

$template = new TemplateCollection(workTypeId: 1, versionId: 1);
$template->addActivity(new TemplateActivity(1, 'Mobilization', 40.0, '#3498db', false, 5, 1));
$template->addActivity(new TemplateActivity(2, 'Handover', 60.0, '#9b59b6', true, 1, 2));
$template->addDependency(new TemplateDependency(1, 2));

$input = new ProjectInputDTO(
    workTypeId: 1,
    template: $template,
    startDate: new DateTimeImmutable('2026-07-01'),
    calendar: new WorkingCalendar([1, 2, 3, 4, 5]),
    durationDays: 30,
);

$result = (new WorkPlanner())->generate($input);

echo $result->criticalPathDays;
foreach ($result->activities as $activity) {
    echo $activity->name, ' ', $activity->startDate->format('Y-m-d'), PHP_EOL;
}

Host integration

Package controllers depend on host closures — thin wrappers in your application wire repositories and services:

use WorkPlanner\Http\Controllers\ProjectController;
use WorkPlanner\WorkPlannerServiceProvider;

WorkPlannerServiceProvider::registerHostBridge(static function ($registry): void {
    $registry->request($hostRequestAdapter);
    $registry->response($hostResponseAdapter);
    $registry->session($hostSessionAdapter);
    $registry->authorization($hostAuthorizationAdapter);
    $registry->views($hostViewFactory);
});

WorkPlannerServiceProvider::boot();

See the reference host wrappers in the Work Planner application repository under app/Controllers/.

Screenshots

Dashboard Gantt chart
Dashboard placeholder Gantt placeholder
Project calendar Template builder
Calendar placeholder Template placeholder

Screenshot files are not bundled in the Composer package. Add your own captures under docs/screenshots/ in the application repository.

Troubleshooting

ProjectInputDTO deprecation warnings (PHP 8.3+)

Use named arguments and place calendar before optional endDate / durationDays. See UPGRADE.md.

Service not registered: WorkPlanner\Contracts\...

Call WorkPlannerServiceProvider::registerHostBridge() before boot() and register all required contract adapters.

Published assets missing

Ensure workplanner-assets tag was published and web server serves public/vendor/workplanner/.

Laravel provider not discovered

Confirm illuminate/support is installed and run php artisan package:discover.

Migrations fail on fresh install

Run migrations in order from database/migrations/vendor/workplanner (or published path). Seed permissions using published seeders before creating users.

Testing

composer test
# or
php tests/WorkPlannerGenerateTest.php

License

MIT — see LICENSE.

Changelog

See CHANGELOG.md.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固