新增功能

This commit is contained in:
Your Name
2026-03-04 15:32:30 +08:00
parent a07e844c47
commit ab77f5488d
2266 changed files with 177942 additions and 3444 deletions
+107
View File
@@ -0,0 +1,107 @@
<?php
/**
* 测试时间段生成逻辑
* 模拟只有上午排班的情况
*/
// 模拟数据库查询结果:只有上午的排班
$rosters = [
[
'id' => 1,
'doctor_id' => 1,
'date' => '2026-03-06',
'period' => 'morning', // 只有上午
'status' => 1,
'quota' => 20
]
];
echo "模拟排班数据:\n";
print_r($rosters);
echo "\n";
// 模拟生成时间段的逻辑
$slots = [];
foreach ($rosters as $roster) {
if ($roster['status'] != 1) {
echo "跳过非出诊排班: roster_id={$roster['id']}\n";
continue;
}
$periodValue = $roster['period'];
echo "处理排班: roster_id={$roster['id']}, period={$periodValue}\n";
$startHour = null;
$endHour = null;
if ($periodValue == 1 || $periodValue === 'morning' || $periodValue === '上午') {
$startHour = 9;
$endHour = 12;
echo " -> 识别为上午时段 (9:00-12:00)\n";
} elseif ($periodValue == 2 || $periodValue === 'afternoon' || $periodValue === '下午') {
$startHour = 14;
$endHour = 18;
echo " -> 识别为下午时段 (14:00-18:00)\n";
} else {
echo " -> 未知的时段值,跳过\n";
continue;
}
if ($startHour === null || $endHour === null) {
echo " -> 错误:时段参数未设置\n";
continue;
}
// 生成15分钟间隔的时间段
for ($hour = $startHour; $hour < $endHour; $hour++) {
for ($minute = 0; $minute < 60; $minute += 15) {
$time = sprintf('%02d:%02d', $hour, $minute);
$slots[] = [
'time' => $time,
'available' => true,
'quota' => 1,
'period' => $periodValue
];
}
}
}
echo "\n生成的时间段总数: " . count($slots) . "\n";
// 统计上午和下午的时间段
$morningCount = 0;
$afternoonCount = 0;
foreach ($slots as $slot) {
if ($slot['time'] < '12:00') {
$morningCount++;
} elseif ($slot['time'] >= '14:00') {
$afternoonCount++;
}
}
echo "上午时间段数量: {$morningCount}\n";
echo "下午时间段数量: {$afternoonCount}\n";
echo "\n前5个时间段:\n";
foreach (array_slice($slots, 0, 5) as $slot) {
echo " {$slot['time']} - period: {$slot['period']}\n";
}
echo "\n后5个时间段:\n";
foreach (array_slice($slots, -5) as $slot) {
echo " {$slot['time']} - period: {$slot['period']}\n";
}
echo "\n预期结果:\n";
echo " - 总数应该是 12 (9:00-11:45, 每15分钟一个)\n";
echo " - 上午时间段: 12\n";
echo " - 下午时间段: 0\n";
echo " - 最后一个时间段应该是 11:45\n";
if (count($slots) == 12 && $morningCount == 12 && $afternoonCount == 0) {
echo "\n✓ 测试通过!逻辑正确。\n";
} else {
echo "\n✗ 测试失败!逻辑有问题。\n";
}