ETC_접속유저_부서번호 — 164종 → 165종
이름은 "부서번호"지만 값은 로그인 사용자 부서의 전화번호다 (bzDataInterface.vb:17287-17313 — M_DepMst.DepTelNum, SYSDATE 기준 M_UidMst 조인). 우리 로그인 조회가 이미 같은 시점·같은 조인으로 부서 행을 붙이고 있어 컬럼 하나(NVL(d.DepTelNum,' '))만 얹었다 — 왕복이 늘지 않는다. HisUser.DepPhone → UserField.DepPhone. - dotnet test 338/338 · --edit-smoke 실패 0 - --db-patient ①~㉞ 전건 통과 - --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 불변 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
7f147a3012
commit
a33229b5e1
@@ -76,6 +76,8 @@ public static class TagPreviewCatalog
|
|||||||
["ETC_로그인_직종"] = UserField.Job,
|
["ETC_로그인_직종"] = UserField.Job,
|
||||||
["ETC_로그인_근무부서"] = UserField.Department,
|
["ETC_로그인_근무부서"] = UserField.Department,
|
||||||
["ETC_로그인_근무부서_사용자명"] = UserField.DepartmentAndName,
|
["ETC_로그인_근무부서_사용자명"] = UserField.DepartmentAndName,
|
||||||
|
// 이름은 "부서번호"지만 값은 부서 <b>전화번호</b>다(bzDataInterface.vb:17287-17313 — DepTelNum)
|
||||||
|
["ETC_접속유저_부서번호"] = UserField.DepPhone,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -204,9 +206,14 @@ public static class TagPreviewCatalog
|
|||||||
public static string FromUser(string tag, string id, string name, string mobile, string office)
|
public static string FromUser(string tag, string id, string name, string mobile, string office)
|
||||||
=> FromUser(tag, id, name, mobile, office, string.Empty, string.Empty, string.Empty, string.Empty);
|
=> FromUser(tag, id, name, mobile, office, string.Empty, string.Empty, string.Empty, string.Empty);
|
||||||
|
|
||||||
/// <summary>로그인 사용자 정보에서 — 면허·전문의·직종·부서까지 받는 본판</summary>
|
/// <summary>9-인자판 — 부서 전화번호가 없던 시절의 호출부를 위해 위임</summary>
|
||||||
public static string FromUser(string tag, string id, string name, string mobile, string office,
|
public static string FromUser(string tag, string id, string name, string mobile, string office,
|
||||||
string license, string specialist, string job, string depName)
|
string license, string specialist, string job, string depName)
|
||||||
|
=> FromUser(tag, id, name, mobile, office, license, specialist, job, depName, string.Empty);
|
||||||
|
|
||||||
|
/// <summary>로그인 사용자 정보에서 — 면허·전문의·직종·부서·부서전화까지 받는 본판</summary>
|
||||||
|
public static string FromUser(string tag, string id, string name, string mobile, string office,
|
||||||
|
string license, string specialist, string job, string depName, string depPhone)
|
||||||
{
|
{
|
||||||
if (!UserTags.TryGetValue(tag, out var field))
|
if (!UserTags.TryGetValue(tag, out var field))
|
||||||
{
|
{
|
||||||
@@ -228,12 +235,13 @@ public static class TagPreviewCatalog
|
|||||||
// 레거시(:17101)는 NVL(DepOfcNam,DepKorNam)||'-'||UidNam — 개원일 미상 결정으로 한글명 고정.
|
// 레거시(:17101)는 NVL(DepOfcNam,DepKorNam)||'-'||UidNam — 개원일 미상 결정으로 한글명 고정.
|
||||||
// 레거시는 UidNam 으로 걸러 동명이인에서 남의 부서가 나올 수 있는데 여기는 세션 사용자 행이라 결정적이다.
|
// 레거시는 UidNam 으로 걸러 동명이인에서 남의 부서가 나올 수 있는데 여기는 세션 사용자 행이라 결정적이다.
|
||||||
UserField.DepartmentAndName => depName.Length > 0 || name.Length > 0 ? $"{depName}-{name}" : string.Empty,
|
UserField.DepartmentAndName => depName.Length > 0 || name.Length > 0 ? $"{depName}-{name}" : string.Empty,
|
||||||
|
UserField.DepPhone => depPhone,
|
||||||
_ => string.Empty,
|
_ => string.Empty,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum ClockFormat { Date, DateTime, DateTimeMask, DateEnglish, Year, YearSuffixed, Month, Day, Hour, Minute, Time }
|
private enum ClockFormat { Date, DateTime, DateTimeMask, DateEnglish, Year, YearSuffixed, Month, Day, Hour, Minute, Time }
|
||||||
|
|
||||||
private enum UserField { Name, Id, IdAndName, MobilePhone, OfficePhone, License, Specialist, Job, Department, DepartmentAndName }
|
private enum UserField { Name, Id, IdAndName, MobilePhone, OfficePhone, License, Specialist, Job, Department, DepartmentAndName, DepPhone }
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ public sealed record HisUser(
|
|||||||
/// <summary>전문의번호(UidSpcLic) — ETC_로그인_전문의번호</summary>
|
/// <summary>전문의번호(UidSpcLic) — ETC_로그인_전문의번호</summary>
|
||||||
string SpecialistNumber = "",
|
string SpecialistNumber = "",
|
||||||
/// <summary>직종명(M_DtsMst JOBCOD 의 DtsCodNam) — ETC_로그인_직종</summary>
|
/// <summary>직종명(M_DtsMst JOBCOD 의 DtsCodNam) — ETC_로그인_직종</summary>
|
||||||
string JobName = "")
|
string JobName = "",
|
||||||
|
/// <summary>부서 전화번호(M_DepMst.DepTelNum) — ETC_접속유저_부서번호(이름과 달리 전화번호다)</summary>
|
||||||
|
string DepPhone = "")
|
||||||
{
|
{
|
||||||
/// <summary>미인증 세션(인자 없이 단독 실행) — DB 쓰기가 차단된다</summary>
|
/// <summary>미인증 세션(인자 없이 단독 실행) — DB 쓰기가 차단된다</summary>
|
||||||
public static readonly HisUser Unknown = new(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty);
|
public static readonly HisUser Unknown = new(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty, string.Empty);
|
||||||
@@ -78,7 +80,8 @@ public sealed class UserContextStore
|
|||||||
" NVL(u.UidDepCod,' '), NVL(d.DepKorNam,' '), " +
|
" NVL(u.UidDepCod,' '), NVL(d.DepKorNam,' '), " +
|
||||||
" NVL(u.UidHspCod,' '), NVL(h.HspInsNam,' '), " +
|
" NVL(u.UidHspCod,' '), NVL(h.HspInsNam,' '), " +
|
||||||
" NVL(u.UidDtrYon,' '), NVL(d.DepOfcNam,' '), " +
|
" NVL(u.UidDtrYon,' '), NVL(d.DepOfcNam,' '), " +
|
||||||
" NVL(u.UidLicNum,' '), NVL(u.UidSpcLic,' '), NVL(j.DtsCodNam,' ') " +
|
" NVL(u.UidLicNum,' '), NVL(u.UidSpcLic,' '), NVL(j.DtsCodNam,' '), " +
|
||||||
|
" NVL(d.DepTelNum,' ') " +
|
||||||
"FROM M_UidMst u " +
|
"FROM M_UidMst u " +
|
||||||
"LEFT JOIN M_DepMst d ON d.DepCod = u.UidDepCod " +
|
"LEFT JOIN M_DepMst d ON d.DepCod = u.UidDepCod " +
|
||||||
" AND TO_CHAR(SYSDATE,'YYYYMMDD') BETWEEN d.DepStrDte AND d.DepEndDte " +
|
" AND TO_CHAR(SYSDATE,'YYYYMMDD') BETWEEN d.DepStrDte AND d.DepEndDte " +
|
||||||
@@ -101,7 +104,8 @@ public sealed class UserContextStore
|
|||||||
reader.GetString(2).Trim(), reader.GetString(3).Trim(),
|
reader.GetString(2).Trim(), reader.GetString(3).Trim(),
|
||||||
reader.GetString(4).Trim(), reader.GetString(5).Trim(),
|
reader.GetString(4).Trim(), reader.GetString(5).Trim(),
|
||||||
reader.GetString(6).Trim(), reader.GetString(7).Trim(),
|
reader.GetString(6).Trim(), reader.GetString(7).Trim(),
|
||||||
reader.GetString(8).Trim(), reader.GetString(9).Trim(), reader.GetString(10).Trim());
|
reader.GetString(8).Trim(), reader.GetString(9).Trim(), reader.GetString(10).Trim(),
|
||||||
|
reader.GetString(11).Trim());
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,7 +60,8 @@ public sealed class SessionTagResolver : ITagValueResolver
|
|||||||
: TagPreviewCatalog.FromUser(tag, ready.UidCod, ready.UidNam,
|
: TagPreviewCatalog.FromUser(tag, ready.UidCod, ready.UidNam,
|
||||||
ready.MobilePhone, ready.OfficePhone,
|
ready.MobilePhone, ready.OfficePhone,
|
||||||
UserSession.Current.LicenseNumber, UserSession.Current.SpecialistNumber,
|
UserSession.Current.LicenseNumber, UserSession.Current.SpecialistNumber,
|
||||||
UserSession.Current.JobName, UserSession.Current.DepNam);
|
UserSession.Current.JobName, UserSession.Current.DepNam,
|
||||||
|
UserSession.Current.DepPhone);
|
||||||
return value.Length > 0
|
return value.Length > 0
|
||||||
? new TagValue(true, value)
|
? new TagValue(true, value)
|
||||||
: new TagValue(false, ready.HasClock ? "이 계정에는 값이 비어 있습니다" : "값을 읽지 못했습니다");
|
: new TagValue(false, ready.HasClock ? "이 계정에는 값이 비어 있습니다" : "값을 읽지 못했습니다");
|
||||||
|
|||||||
Reference in New Issue
Block a user