|
|
|
|
@ -254,25 +254,95 @@ public function BatchUpdateNotice($item_ids, $field, $value)
|
|
|
|
|
return \Yz::Return(true, '批量更新成功,共更新' . $updated . '条');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function GetRules($item_id)
|
|
|
|
|
public function GetRules($item_id, $userid)
|
|
|
|
|
{
|
|
|
|
|
$user = DB::table('users')->where('id', $userid)->first();
|
|
|
|
|
|
|
|
|
|
$rules = DB::table('s_check_item_rule')
|
|
|
|
|
->where(['target_type' => 'ITEM', 'target_id' => $item_id, 'deleted' => 0, 'status' => 1])
|
|
|
|
|
->get();
|
|
|
|
|
|
|
|
|
|
if ($user && $user->department_id) {
|
|
|
|
|
// 有科室归属:获取用户科室下的所有排班资源 ID
|
|
|
|
|
$deptResourceIds = DB::table('s_department_resources')
|
|
|
|
|
->where('department_id', $user->department_id)
|
|
|
|
|
->where('is_del', 0)
|
|
|
|
|
->pluck('id')
|
|
|
|
|
->toArray();
|
|
|
|
|
|
|
|
|
|
$filtered = [];
|
|
|
|
|
foreach ($rules as $rule) {
|
|
|
|
|
$rule->rule_value = json_decode($rule->rule_value, true);
|
|
|
|
|
$resourcesId = $rule->rule_value['resources_id'] ?? null;
|
|
|
|
|
|
|
|
|
|
// 全局规则:resources_id 为空/0 → 保留
|
|
|
|
|
if (empty($resourcesId)) {
|
|
|
|
|
$filtered[] = $rule;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 排班资源属于当前用户科室 → 保留
|
|
|
|
|
if (in_array($resourcesId, $deptResourceIds)) {
|
|
|
|
|
$filtered[] = $rule;
|
|
|
|
|
}
|
|
|
|
|
// 其他科室的规则 → 过滤掉
|
|
|
|
|
}
|
|
|
|
|
return \Yz::Return(true, '查询成功', $filtered);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// admin 或无科室:返回全部规则
|
|
|
|
|
foreach ($rules as $rule) {
|
|
|
|
|
$rule->rule_value = json_decode($rule->rule_value, true);
|
|
|
|
|
}
|
|
|
|
|
return \Yz::Return(true, '查询成功', $rules);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function SaveRules($item_id, $rules)
|
|
|
|
|
public function SaveRules($item_id, $rules, $userid)
|
|
|
|
|
{
|
|
|
|
|
$user = DB::table('users')->where('id', $userid)->first();
|
|
|
|
|
|
|
|
|
|
$now = date('Y-m-d H:i:s');
|
|
|
|
|
|
|
|
|
|
DB::beginTransaction();
|
|
|
|
|
try {
|
|
|
|
|
DB::table('s_check_item_rule')
|
|
|
|
|
->where(['target_type' => 'ITEM', 'target_id' => $item_id])
|
|
|
|
|
->delete();
|
|
|
|
|
if ($user && $user->department_id) {
|
|
|
|
|
// 科室用户:获取当前科室的排班资源 ID 列表
|
|
|
|
|
$deptResourceIds = DB::table('s_department_resources')
|
|
|
|
|
->where('department_id', $user->department_id)
|
|
|
|
|
->where('is_del', 0)
|
|
|
|
|
->pluck('id')
|
|
|
|
|
->toArray();
|
|
|
|
|
|
|
|
|
|
// 软删除:只删除全局规则 + 当前科室的规则,不碰其他科室
|
|
|
|
|
DB::table('s_check_item_rule')
|
|
|
|
|
->where(['target_type' => 'ITEM', 'target_id' => $item_id])
|
|
|
|
|
->where('deleted', 0)
|
|
|
|
|
->where(function($q) use ($deptResourceIds) {
|
|
|
|
|
$q->whereRaw('JSON_UNQUOTE(JSON_EXTRACT(rule_value, \'$.resources_id\')) IS NULL')
|
|
|
|
|
->orWhereRaw('JSON_UNQUOTE(JSON_EXTRACT(rule_value, \'$.resources_id\')) = \'\'')
|
|
|
|
|
->orWhereRaw('JSON_UNQUOTE(JSON_EXTRACT(rule_value, \'$.resources_id\')) = \'0\'');
|
|
|
|
|
foreach ($deptResourceIds as $id) {
|
|
|
|
|
$q->orWhereRaw('JSON_UNQUOTE(JSON_EXTRACT(rule_value, \'$.resources_id\')) = ?', [(string)$id]);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
->update(['deleted' => 1, 'updated_at' => $now]);
|
|
|
|
|
|
|
|
|
|
// 过滤传入的规则:忽略其他科室的
|
|
|
|
|
if (!empty($rules)) {
|
|
|
|
|
$rules = array_values(array_filter($rules, function($rule) use ($deptResourceIds) {
|
|
|
|
|
$resourcesId = $rule['rule_value']['resources_id'] ?? null;
|
|
|
|
|
return empty($resourcesId) || in_array($resourcesId, $deptResourceIds);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// admin:软删除该项目的全部规则
|
|
|
|
|
DB::table('s_check_item_rule')
|
|
|
|
|
->where(['target_type' => 'ITEM', 'target_id' => $item_id])
|
|
|
|
|
->where('deleted', 0)
|
|
|
|
|
->update(['deleted' => 1, 'updated_at' => $now]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 插入新规则
|
|
|
|
|
if (!empty($rules)) {
|
|
|
|
|
$insertData = [];
|
|
|
|
|
foreach ($rules as $rule) {
|
|
|
|
|
@ -287,8 +357,8 @@ public function SaveRules($item_id, $rules)
|
|
|
|
|
'rule_value' => $rule_value,
|
|
|
|
|
'status' => 1,
|
|
|
|
|
'deleted' => 0,
|
|
|
|
|
'created_at' => date('Y-m-d H:i:s'),
|
|
|
|
|
'updated_at' => date('Y-m-d H:i:s'),
|
|
|
|
|
'created_at' => $now,
|
|
|
|
|
'updated_at' => $now,
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
DB::table('s_check_item_rule')->insert($insertData);
|
|
|
|
|
@ -303,9 +373,11 @@ public function SaveRules($item_id, $rules)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取检查项目关联的排班资源列表
|
|
|
|
|
public function GetItemRelatedResources($item_id)
|
|
|
|
|
public function GetItemRelatedResources($item_id, $userid)
|
|
|
|
|
{
|
|
|
|
|
$resources = DB::table('s_check_item_device')
|
|
|
|
|
$user = DB::table('users')->where('id', $userid)->first();
|
|
|
|
|
|
|
|
|
|
$query = DB::table('s_check_item_device')
|
|
|
|
|
->join('s_devices', 's_check_item_device.device_id', '=', 's_devices.id')
|
|
|
|
|
->join('s_department_resources_device', 's_devices.id', '=', 's_department_resources_device.device_id')
|
|
|
|
|
->join('s_department_resources', 's_department_resources_device.rsourece_id', '=', 's_department_resources.id')
|
|
|
|
|
@ -317,9 +389,13 @@ public function GetItemRelatedResources($item_id)
|
|
|
|
|
)
|
|
|
|
|
->where('s_check_item_device.item_id', $item_id)
|
|
|
|
|
->where('s_department_resources.is_del', 0)
|
|
|
|
|
->where('s_department_resources.department_resources_status', 1)
|
|
|
|
|
->distinct()
|
|
|
|
|
->get();
|
|
|
|
|
->where('s_department_resources.department_resources_status', 1);
|
|
|
|
|
|
|
|
|
|
if ($user && $user->department_id) {
|
|
|
|
|
$query->where('s_department_resources.department_id', $user->department_id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$resources = $query->distinct()->get();
|
|
|
|
|
|
|
|
|
|
return \Yz::Return(true, '查询成功', $resources);
|
|
|
|
|
}
|
|
|
|
|
|