|
|
|
|
@ -960,27 +960,47 @@ public function YuYue($planid, $appointment_type, $mainlistids, $do_type,$is_eme
|
|
|
|
|
if ($itemRules->isNotEmpty()) {
|
|
|
|
|
$planWeekName = $planInfo->weekname;
|
|
|
|
|
$planBeginTime = $planInfo->begin_time;
|
|
|
|
|
$rulePass = false;
|
|
|
|
|
$planResourcesId = $planInfo->resources_id;
|
|
|
|
|
|
|
|
|
|
// 筛选出适用于当前排班资源的规则
|
|
|
|
|
$applicableRules = [];
|
|
|
|
|
foreach ($itemRules as $rule) {
|
|
|
|
|
$rv = json_decode($rule->rule_value, true);
|
|
|
|
|
$days = $rv['days'] ?? [];
|
|
|
|
|
$startTime = $rv['start_time'] ?? null;
|
|
|
|
|
$endTime = $rv['end_time'] ?? null;
|
|
|
|
|
$resourcesId = $rv['resources_id'] ?? null;
|
|
|
|
|
if (empty($resourcesId)) {
|
|
|
|
|
// resources_id 为空,规则跳过
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if ($resourcesId != $planResourcesId) {
|
|
|
|
|
// 指定了其他排班资源,跳过
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$applicableRules[] = $rv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 无适用规则 → 不受限 → 通过
|
|
|
|
|
if (!empty($applicableRules)) {
|
|
|
|
|
$rulePass = false;
|
|
|
|
|
foreach ($applicableRules as $rv) {
|
|
|
|
|
$days = $rv['days'] ?? [];
|
|
|
|
|
$startTime = $rv['start_time'] ?? null;
|
|
|
|
|
$endTime = $rv['end_time'] ?? null;
|
|
|
|
|
|
|
|
|
|
if (!in_array($planWeekName, $days)) continue;
|
|
|
|
|
if (!in_array($planWeekName, $days)) continue;
|
|
|
|
|
|
|
|
|
|
if ($startTime && $endTime && $planBeginTime) {
|
|
|
|
|
if ($planBeginTime >= $startTime && $planBeginTime < $endTime) {
|
|
|
|
|
if ($startTime && $endTime && $planBeginTime) {
|
|
|
|
|
if ($planBeginTime >= $startTime && $planBeginTime < $endTime) {
|
|
|
|
|
$rulePass = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$rulePass = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$rulePass = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!$rulePass) {
|
|
|
|
|
return \Yz::echoError1($item->item_name . ' 当前时段不在可预约时间范围内');
|
|
|
|
|
if (!$rulePass) {
|
|
|
|
|
return \Yz::echoError1($item->item_name . ' 当前时段不在可预约时间范围内');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -1706,10 +1726,32 @@ private function checkPlanAgainstRules($plan, $allItemRules)
|
|
|
|
|
{
|
|
|
|
|
$planWeekName = $plan->weekname;
|
|
|
|
|
$planBeginTime = $plan->begin_time;
|
|
|
|
|
$planResourcesId = $plan->resources_id;
|
|
|
|
|
|
|
|
|
|
foreach ($allItemRules as $itemId => $rules) {
|
|
|
|
|
$itemPass = false;
|
|
|
|
|
// 筛选出适用于当前号源排班资源的规则
|
|
|
|
|
$applicableRules = [];
|
|
|
|
|
foreach ($rules as $rule) {
|
|
|
|
|
$resourcesId = $rule['resources_id'] ?? null;
|
|
|
|
|
if (empty($resourcesId)) {
|
|
|
|
|
// resources_id 为空,规则跳过,不生效
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if ($resourcesId != $planResourcesId) {
|
|
|
|
|
// 指定了其他排班资源,跳过
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
$applicableRules[] = $rule;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 无适用规则 → 该排班资源不受限 → 直接通过
|
|
|
|
|
if (empty($applicableRules)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 有适用规则 → 按原逻辑匹配
|
|
|
|
|
$itemPass = false;
|
|
|
|
|
foreach ($applicableRules as $rule) {
|
|
|
|
|
$days = $rule['days'] ?? [];
|
|
|
|
|
$startTime = $rule['start_time'] ?? null;
|
|
|
|
|
$endTime = $rule['end_time'] ?? null;
|
|
|
|
|
|