2 changed files with 146 additions and 0 deletions
@ -0,0 +1,100 @@ |
|||
<?php |
|||
|
|||
namespace app\job\transfer\schedule; |
|||
|
|||
use app\model\course_schedule\CourseSchedule; |
|||
use core\base\BaseJob; |
|||
|
|||
class CourseScheduleJob extends BaseJob |
|||
{ |
|||
/** |
|||
* 处理自动排课数据,按月份检查并插入不存在的课程 |
|||
* @param int $month 月份(1-12) |
|||
* @param int $year 年份 |
|||
* @return array 处理结果 |
|||
*/ |
|||
public function processAutoSchedule($month, $year) |
|||
{ |
|||
// 获取所有auto_schedule=1的课程 |
|||
$autoSchedules = CourseSchedule::where('auto_schedule', 1)->where('course_date', date('Y-m-d'))->select(); |
|||
|
|||
$results = []; |
|||
foreach ($autoSchedules as $schedule) { |
|||
// 构造课程日期(基于给定的月份和年份) |
|||
$courseDate = $this->getCourseDate($schedule->course_date, $month, $year); |
|||
|
|||
// 检查该月份是否有相同的课程安排 |
|||
$exists = $this->checkCourseExists($schedule, $courseDate); |
|||
|
|||
if (!$exists) { |
|||
// 如果不存在,则插入新的课程安排 |
|||
$newSchedule = $this->createNewSchedule($schedule, $courseDate); |
|||
$results[] = [ |
|||
'status' => 'inserted', |
|||
'schedule' => $newSchedule |
|||
]; |
|||
} else { |
|||
$results[] = [ |
|||
'status' => 'exists', |
|||
'schedule' => $schedule |
|||
]; |
|||
} |
|||
} |
|||
|
|||
return $results; |
|||
} |
|||
|
|||
/** |
|||
* 根据原始课程日期和目标月份、年份计算新的课程日期 |
|||
* @param string $originalDate 原始课程日期(格式:Y-m-d) |
|||
* @param int $targetMonth 目标月份 |
|||
* @param int $targetYear 目标年份 |
|||
* @return string 新的课程日期 |
|||
*/ |
|||
protected function getCourseDate($originalDate, $targetMonth, $targetYear) |
|||
{ |
|||
$date = \DateTime::createFromFormat('Y-m-d', $originalDate); |
|||
$date->setDate($targetYear, $targetMonth, $date->format('d')); |
|||
return $date->format('Y-m-d'); |
|||
} |
|||
|
|||
/** |
|||
* 检查指定月份是否有相同的课程安排 |
|||
* @param CourseSchedule $schedule 原始课程安排 |
|||
* @param string $courseDate 课程日期 |
|||
* @return bool 是否存在 |
|||
*/ |
|||
protected function checkCourseExists(CourseSchedule $schedule, $courseDate) |
|||
{ |
|||
$exists = CourseSchedule::where(function ($query) use ($schedule, $courseDate) { |
|||
$query->where('campus_id', $schedule->campus_id) |
|||
->where('venue_id', $schedule->venue_id) |
|||
->where('course_date', $courseDate) |
|||
->where('time_slot', $schedule->time_slot) |
|||
->where('course_id', $schedule->course_id); |
|||
})->count(); |
|||
|
|||
return $exists > 0; |
|||
} |
|||
|
|||
/** |
|||
* 创建新的课程安排 |
|||
* @param CourseSchedule $schedule 原始课程安排 |
|||
* @param string $courseDate 课程日期 |
|||
* @return CourseSchedule 新创建的课程安排 |
|||
*/ |
|||
protected function createNewSchedule(CourseSchedule $schedule, $courseDate) |
|||
{ |
|||
$newSchedule = new CourseSchedule(); |
|||
$newSchedule->campus_id = $schedule->campus_id; |
|||
$newSchedule->venue_id = $schedule->venue_id; |
|||
$newSchedule->course_date = $courseDate; |
|||
$newSchedule->time_slot = $schedule->time_slot; |
|||
$newSchedule->course_id = $schedule->course_id; |
|||
$newSchedule->auto_schedule = 1; |
|||
// 复制其他需要的字段... |
|||
$newSchedule->save(); |
|||
|
|||
return $newSchedule; |
|||
} |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
<?php |
|||
|
|||
namespace app\job\transfer\schedule; |
|||
|
|||
use core\base\BaseJob; |
|||
use think\facade\Log; |
|||
|
|||
/** |
|||
* 自动分配资源 |
|||
*/ |
|||
class ResourceAutoAllocation extends BaseJob |
|||
{ |
|||
public function doJob() |
|||
{ |
|||
Log::write('自动分配资源'); |
|||
} |
|||
|
|||
/** |
|||
* 获取销售人员 |
|||
*/ |
|||
public function getSalesman() |
|||
{ |
|||
Log::write('获取销售人员'); |
|||
} |
|||
|
|||
/** |
|||
* 获取资源 |
|||
*/ |
|||
public function getResource() |
|||
{ |
|||
Log::write('获取资源'); |
|||
course_schedule |
|||
::where('status', 1)->select(); |
|||
} |
|||
|
|||
/** |
|||
* 按照现在销售人员的资源拥有情况分配资源 |
|||
*/ |
|||
public function allocateResource() |
|||
{ |
|||
Log::write('按照现在销售人员的资源拥有情况分配资源'); |
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
Loading…
Reference in new issue