|
|
|
@ -192,8 +192,8 @@ public function SyncItemClass()
|
|
|
|
//同步检查项目(全量) + 返回当前科室相关统计
|
|
|
|
//同步检查项目(全量) + 返回当前科室相关统计
|
|
|
|
public function SyncCheckItem($userid)
|
|
|
|
public function SyncCheckItem($userid)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// 1. 同步前快照:当前科室所有符合条件的项目 code
|
|
|
|
// 1. 同步前快照:当前科室所有符合条件的项目 code + 关键字段摘要
|
|
|
|
$beforeCodes = $this->getDeptItemCodes($userid);
|
|
|
|
$beforeSnapshot = $this->getDeptItemSnapshot($userid);
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 调用 HIS 同步项目(全量)
|
|
|
|
// 2. 调用 HIS 同步项目(全量)
|
|
|
|
request()->merge(['termClassId' => 155]);
|
|
|
|
request()->merge(['termClassId' => 155]);
|
|
|
|
@ -201,21 +201,35 @@ public function SyncCheckItem($userid)
|
|
|
|
$hisController->UpdateCheckItem();
|
|
|
|
$hisController->UpdateCheckItem();
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 同步后快照
|
|
|
|
// 3. 同步后快照
|
|
|
|
$afterCodes = $this->getDeptItemCodes($userid);
|
|
|
|
$afterSnapshot = $this->getDeptItemSnapshot($userid);
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 对比统计
|
|
|
|
// 4. 对比统计
|
|
|
|
|
|
|
|
$beforeCodes = array_keys($beforeSnapshot);
|
|
|
|
|
|
|
|
$afterCodes = array_keys($afterSnapshot);
|
|
|
|
$beforeSet = array_flip($beforeCodes);
|
|
|
|
$beforeSet = array_flip($beforeCodes);
|
|
|
|
$afterSet = array_flip($afterCodes);
|
|
|
|
$afterSet = array_flip($afterCodes);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$addedCodes = array_diff_key($afterSet, $beforeSet);
|
|
|
|
|
|
|
|
$removedCodes = array_diff_key($beforeSet, $afterSet);
|
|
|
|
|
|
|
|
$commonCodes = array_intersect_key($beforeSet, $afterSet);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 字段级对比:只有真正变化的才算更新
|
|
|
|
|
|
|
|
$updatedCount = 0;
|
|
|
|
|
|
|
|
foreach ($commonCodes as $code => $v) {
|
|
|
|
|
|
|
|
if ($beforeSnapshot[$code] !== $afterSnapshot[$code]) {
|
|
|
|
|
|
|
|
$updatedCount++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return \Yz::Return(true, '同步完成', [
|
|
|
|
return \Yz::Return(true, '同步完成', [
|
|
|
|
'added' => count(array_diff_key($afterSet, $beforeSet)),
|
|
|
|
'added' => count($addedCodes),
|
|
|
|
'removed' => count(array_diff_key($beforeSet, $afterSet)),
|
|
|
|
'removed' => count($removedCodes),
|
|
|
|
'updated' => count(array_intersect_key($beforeSet, $afterSet)),
|
|
|
|
'updated' => $updatedCount,
|
|
|
|
]);
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//获取当前科室所有符合条件的项目 code 列表
|
|
|
|
//获取当前科室所有符合条件的项目快照(code => 字段摘要)
|
|
|
|
private function getDeptItemCodes($userid)
|
|
|
|
private function getDeptItemSnapshot($userid)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$user = DB::table('users')->where('id', $userid)->first();
|
|
|
|
$user = DB::table('users')->where('id', $userid)->first();
|
|
|
|
if (!$user || !$user->department_id) return [];
|
|
|
|
if (!$user || !$user->department_id) return [];
|
|
|
|
@ -231,7 +245,7 @@ private function getDeptItemCodes($userid)
|
|
|
|
|
|
|
|
|
|
|
|
if (empty($deptNumbers)) return [];
|
|
|
|
if (empty($deptNumbers)) return [];
|
|
|
|
|
|
|
|
|
|
|
|
return DB::table('s_check_item')
|
|
|
|
$items = DB::table('s_check_item')
|
|
|
|
->where('is_del', 0)
|
|
|
|
->where('is_del', 0)
|
|
|
|
->whereNotNull('sheetType')->where('sheetType', '!=', '')
|
|
|
|
->whereNotNull('sheetType')->where('sheetType', '!=', '')
|
|
|
|
->where(function($q) use ($deptNumbers) {
|
|
|
|
->where(function($q) use ($deptNumbers) {
|
|
|
|
@ -239,7 +253,19 @@ private function getDeptItemCodes($userid)
|
|
|
|
$q->orWhere('hisExecDepts', 'like', '%"' . $num . '"%');
|
|
|
|
$q->orWhere('hisExecDepts', 'like', '%"' . $num . '"%');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
->pluck('item_code')
|
|
|
|
->select('item_code', 'item_name', 'hisExecDepts', 'check_notice', 'sheetType', 'item_class_id')
|
|
|
|
->toArray();
|
|
|
|
->get();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$snapshot = [];
|
|
|
|
|
|
|
|
foreach ($items as $item) {
|
|
|
|
|
|
|
|
$snapshot[$item->item_code] = md5(json_encode([
|
|
|
|
|
|
|
|
'item_name' => $item->item_name,
|
|
|
|
|
|
|
|
'hisExecDepts' => $item->hisExecDepts,
|
|
|
|
|
|
|
|
'check_notice' => $item->check_notice,
|
|
|
|
|
|
|
|
'sheetType' => $item->sheetType,
|
|
|
|
|
|
|
|
'item_class_id'=> $item->item_class_id,
|
|
|
|
|
|
|
|
]));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return $snapshot;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|