/*=====================================================================================
프로젝트명 : AMIS3.0
프로그램ID : VHMGXRS209S
업 무 명 : 보건증건강진단결과서[건강검진-공단]
최초작성일 : 2022.12.16
개 발 자 : 박민준
참고사항 :
변경이력 :
====================================================================================*/
using AMIS3.HM.ZZ;
using AMIS3.UIFramework;
using AMIS3.UIFramework.DataModel;
using AMIS3.UIFramework.FxExtension;
using AMIS3.UIFramework.UI;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using AMIS3.UIFramework.Security;
using System.Threading.Tasks;
using System.Drawing;
using AMIS3.HM.ZZ.ZZLIB003.Mvc.Utils;
using AMIS3.HM.ZZ.ZZLIB003.Controls;
namespace AMIS3.HM.GX.RS209
{
public partial class VHMGXRS209S : ScreenBase, ISmartToolbar
{
public List<ActionButtonItem> ActionButtonItems { get; set; } = new List<ActionButtonItem>();
// 2022.12.24 / 박민준 / pannel을 이용한 SetSvDataTable, GetData 하기위한 전역변수 추가
DataTable svDt = null;
private String strFormCd = "SH20220101"; // 서식코드
private String strFormVerCd = "SH2022010101"; // 서식버전 코드
String patNo = ""; // 병원등록번호
String heDt = ""; // 일자
long vistSn = 0; // 방문횟수
int chkCnt = 0; // 전체선택시 전역변수
String judgDt = ""; // 판정일자
String doctorId = ""; // 의사아이디
String doctorNm = ""; // 의사명
String doclicnsNo = ""; // 의사면허번호
private String strJudgDivCd = "H"; // 상담판정구분 : D(운전면허적성검사)
UserT UserInfo = null;
public VHMGXRS209S()
{
InitializeComponent();
SetEvent();
SetControl();
}
private void SetEvent()
{
this.Load += new EventHandler(eFormLoad);
}
private void SetControl()
{
ActionBtnSetting();
}
private void eFormLoad(object sender, EventArgs e)
{
// 의사 선생님 정보 받는 곳
UserInfo = SecurityWrapper.Instance.SecurityService.GetUserInfo(this);
// 2022.12.23 / 박민준 / 이상룡 의사선생님(D070201)
GetDoctorLicnsNo cs = new GetDoctorLicnsNo("D070201");
if (cs != null)
{
doclicnsNo = cs.GetLicnsNo(); // 의사면허번호
doctorId = cs.GetDoctorId(); // 의사아이디
doctorNm = cs.GetDoctorNm(); // 의사명
lbldocNm.Text = doctorNm.ToStringDefault();
lbldoclicnsNo.Text = doclicnsNo.ToStringDefault();
}
tepatno.ReadOnly = true;
tepatnm.ReadOnly = true;
tergno.ReadOnly = true;
techkdt.ReadOnly = true;
Today();
}
// 2022.12.26 / 박민준 / 액션버튼 생성
private void ActionBtnSetting()
{
ActionButtonItems = new List<ActionButtonItem>();
ActionButtonItems.Add(new ActionButtonItem
{
Text = "저장",
Idx = 0,
IsImportant = true,
Permissions = "W",
ClickAction = OnSaveAction,
Name = "actSave"
});
actionBtn1.Items = ActionButtonItems;
actionBtn1.FallDownMenuWidth = 80;
}
// 2022.12.26 / 박민준 / 저장버튼 이벤트
private async void OnSaveAction()
{
#region ...
if (validate())
{
svDt = new DataTable();
AmcData amcDataParam = new AmcData();
amcDataParam.recordSets = new RecordSets();
amcDataParam.preDatas = new PreDatas();
PreData sParam = new PreData();
sParam["patno"] = patNo;
sParam["vistSn", ADataType.L] = vistSn;
sParam["heDt"] = heDt;
sParam["heFormDivCd"] = strJudgDivCd;
sParam["cunslDt"] = judgDt;
sParam["csdrLicnsNo"] = this.doclicnsNo;
sParam["judgDt"] = judgDt;
sParam["judgDrLcnsNo"] = this.doclicnsNo;
svDt.SetSvDataTable("상담", strJudgDivCd, strFormCd, strFormVerCd, patNo, heDt, vistSn, false);
pn1.GetData(ref svDt, "itemItemCd", "itemResultVal");
amcDataParam.recordSets.Add("IRS", svDt.ToRecordSet(true));
amcDataParam.preDatas.Add("IPD", sParam); // 상태값변경
var responseData = await CommService.CallServiceAsync("SHMGX5002I", amcDataParam);
AMessageBox.ShowInstant(this, responseData.header.message);
//성공인 경우, 재조회
if (string.Equals(responseData.header.resultCode, "S"))
{
AMessageBox.Show("저장완료", "정상적으로 저장되었습니다.", AMessageType.OK);
}
else
{
AMessageBox.Show("저장에러", responseData.header.message, AMessageType.Error);
}
}
#endregion
}
// 2022.12.26 / 박민준 / 날짜 출력 함수 생성
private void Today()
{
#region ...
// lbl에 출력하는 코드
String yearDt = DateTime.Now.ToString("yyyy");
String monthDt = DateTime.Now.ToString("MMM");
String dayDt = DateTime.Now.ToString("dd");
lblyear.Text = yearDt;
lblmonth.Text = monthDt;
lblday.Text = dayDt;
// dualCalander에 출력하는 코드
DateTime today = DateTime.Today;
DateTime first_day = today.AddDays(1 - today.Day); // 매달 1일
dchedt.FromDateTime = first_day;
dchedt.ToDateTime = today;
#endregion
}
// 2022.12.26 / 박민준 / 조회 이벤트 실행 함수
private async void retrieveBtn_Click(object sender, EventArgs e)
{
await SvCallLoadExamineeList();
}
private async Task SvCallLoadExamineeList()
{
#region ...
var searchParam = new PreData();
searchParam["startDt"] = dchedt.FromDateTime.ToString("yyyyMMdd");
searchParam["endDt"] = dchedt.ToDateTime.ToString("yyyyMMdd");
searchParam["gubun"] = "A"; // 구분 전체 Value : A
searchParam["heFormDivCd"] = strJudgDivCd;
searchParam["heBasisPkgCd"] = "geO";
var amcDataParam = new AmcData
{
preDatas = new PreDatas { { "IPD", searchParam } }
};
var responseData = await CommService.CallServiceAsync("SHMGX5000R", amcDataParam, this, LoadingType.BlockSearch);
if (responseData.IsFail)
{
AMessageBox.Show("조회오류!!", responseData.header.message, AMessageType.Error);
return;
}
DataTable examineeDt = responseData.recordSets["ORS"].ToDataTable(false);
if (examineeDt == null || examineeDt.Rows.Count == 0)
{
AMessageBox.Show("확인", "조회결과가 없습니다.");
return;
}
grdAllg.DataSource = examineeDt;
#endregion
}
// 2022.12.26 / 박민준 / 그리드뷰 컬럼및 셀 제어
private void grvAllv_ShowingEditor(object sender, CancelEventArgs e)
{
#region ...
var view = sender as GridView;
string fieldName = view.FocusedColumn.FieldName;
if (fieldName == "patNm")
{
e.Cancel = true;
}
else if (fieldName == "sexage")
{
e.Cancel = true;
}
else if (fieldName == "patno")
{
e.Cancel = true;
}
else if (fieldName == "heDt")
{
e.Cancel = true;
}
else if (fieldName == "vistSn")
{
e.Cancel = true;
}
else if (fieldName == "rgno")
{
e.Cancel = true;
}
#endregion
}
// 2022.12.21 / 박민준 / 그리드뷰 더블클릭시 수검자정보 검사서에 출력
private void grdAllg_DoubleClick(object sender, EventArgs e)
{
#region ...
patNo = grvAllv.GetFocusedDataRow()["patno"].ToString();
heDt = grvAllv.GetFocusedDataRow()["heDt"].ToString();
vistSn = grvAllv.GetFocusedDataRow()["vistSn"].ToStringDefault("0").ToLong();
tepatnm.Text = grvAllv.GetFocusedDataRow()["patNm"].ToString();
tergno.Text = grvAllv.GetFocusedDataRow()["rgno"].ToString();
String chkdt = grvAllv.GetFocusedDataRow()["heDt"].ToString().Replace("-", "");
techkdt.Text = DateTime.ParseExact(chkdt, "yyyyMMdd", null).ToString("yyyy년 MM월 dd일");
tedoclicnsNo.Text = doclicnsNo.ToStringDefault();
this.grvAllv.Appearance.FocusedRow.BackColor = Color.AliceBlue;
this.grvAllv.Appearance.FocusedCell.BackColor = Color.AliceBlue;
tepatno.Text = patNo;
lblpatno.Text = patNo;
ExamineeData();
#endregion
}
// 2022.12.21 / 박민준 / 그리드뷰 클릭시 수검자정보 검사서에 출력
private void grdAllg_Click(object sender, EventArgs e)
{
#region ...
patNo = grvAllv.GetFocusedDataRow()["patno"].ToString();
heDt = grvAllv.GetFocusedDataRow()["heDt"].ToString();
vistSn = grvAllv.GetFocusedDataRow()["vistSn"].ToStringDefault("0").ToLong();
tepatnm.Text = grvAllv.GetFocusedDataRow()["patNm"].ToString();
tergno.Text = grvAllv.GetFocusedDataRow()["rgno"].ToString();
String chkdt = grvAllv.GetFocusedDataRow()["heDt"].ToString().Replace("-", "");
techkdt.Text = DateTime.ParseExact(chkdt, "yyyyMMdd", null).ToString("yyyy년 MM월 dd일");
tedoclicnsNo.Text = doclicnsNo.ToStringDefault();
this.grvAllv.Appearance.FocusedRow.BackColor = Color.AliceBlue;
this.grvAllv.Appearance.FocusedCell.BackColor = Color.AliceBlue;
tepatno.Text = patNo;
lblpatno.Text = patNo;
ExamineeData();
#endregion
}
// 2022.12.26 / 박민준 / 아이템별 데이터 저장
private async void ExamineeData()
{
#region ...
AmcData amcDataParam = new AmcData();
amcDataParam.preDatas = new PreDatas();
PreData sParam = new PreData();
sParam["patno"] = patNo;
sParam["vistSn", ADataType.L] = vistSn;
sParam["heDt"] = heDt;
sParam["heFormDivCd"] = strJudgDivCd;
sParam["formCd"] = strFormCd;
sParam["formVerCd"] = strFormVerCd;
amcDataParam.preDatas.Add("IPD", sParam); // 상태값변경
var responseData = await CommService.CallServiceAsync("SHMGX5013R", amcDataParam);
DataTable dtTest = new DataTable();
dtTest = responseData.recordSets["ORS"].ToDataTable();
List<String> someData = new List<string>();
// 받아온 데이터 테이블을 분해하는 방법 1
foreach (DataRow dr in dtTest.Rows)
{
string row = string.Empty;
row = dr["answer"].ToStringDefault();
someData.Add(row);
}
if (someData.Count <= 0)
{
AMessageBox.ShowInstant("검사항목이 없습니다.");
String noStr = String.Empty;
teissue.Text = noStr;
teshop.Text = noStr;
tersltjang.Text = noStr;
terslttuber.Text = noStr;
tersltskin.Text = noStr;
techkrslt.Text = noStr;
}
else
{
tersltjang.Text = someData[0];
terslttuber.Text = someData[1];
tersltskin.Text = someData[2];
techkrslt.Text = someData[3];
teissue.Text = someData[6];
teshop.Text = someData[7];
}
#endregion
}
// 2022.12.26 / 박민준 / 수검자 리스트 전체 선택
private void chkAll_CheckedChanged(object sender, EventArgs e)
{
#region ...
chkCnt++;
if (chkCnt % 2 != 0)
{
grvAllv.SelectAll();
}
else
{
grvAllv.ClearSelection();
}
#endregion
}
// 2022.12.26 / 박민준 / 리포트 출력하기 버튼이벤트
private void printBtn_Click(object sender, EventArgs e)
{
#region ...
if (grvAllv.SelectedRowsCount == 0)
{
AMessageBox.Show("", "수진자를 선택하세요");
return;
}
try
{
DrmService.Instance.WaterMarkDisable(); //워터마크 해제
}
finally
{
DrmService.Instance.WaterMarkEnable(); //워터마크 적용
}
//프린트호출
ReportPrint();
// 프린트버튼 클릭시 체크 해제
grvAllv.ClearSelection();
// 프린트버튼 클릭시 전체버튼에 체크되어 있으면 체크해제
if (chkall.Checked == true)
{
chkall.Checked = false;
}
#endregion
}
// 2022.12.26 / 박민준 / 리포트 출력하기
/// <summary>
/// 리포트할때 필요한 값을 dictionary로 분해 하여 최종적으로 InitReport에 전달
/// </summary>
private void ReportPrint()
{
#region ...
Dictionary<string, string> bindData = null;
bool printY = false;
// 해당 선택된 셀의 값을 가져옴
for (int i = 0; i < grvAllv.SelectedRowsCount; i++)
{
DataRow dr = grvAllv.GetDataRow(grvAllv.GetSelectedRows()[i]);
PreData pd = new PreData();
pd["patno"] = dr["patno"].ToStringDefault();
pd["heDt"] = dr["heDt"].ToStringDefault().Replace("-", "");
pd["vistSn", ADataType.L] = dr["vistSn"].ToStringDefault();
pd["formCd"] = strFormCd;
pd["formVerCd"] = strFormVerCd;
pd["heFormDivCd"] = strJudgDivCd;
//retrieveItemForReport()메서드 실행
DataTable dtReport = retrieveItemForReport(pd);
//데이터바인딩
bindData = new Dictionary<string, string>();
foreach (DataRow dtr in dtReport.Rows)
{
bindData.Add(dtr["itemCd"].ToStringDefault(), dtr["answer"].ToStringDefault());
}
bindData.Add("patNm", dr["patNm"].ToStringDefault());
bindData.Add("patno", dr["patno"].ToStringDefault());
bindData.Add("rgno", dr["rgno"].ToStringDefault());
bindData.Add("docNm", doctorNm.ToStringDefault());
bindData.Add("year", lblyear.Text.ToStringDefault());
bindData.Add("month", lblmonth.Text.ToStringDefault());
bindData.Add("day", lblday.Text.ToStringDefault());
InitReport("VHMGXRS209R01.reb", bindData);
}
#endregion
}
private DataTable retrieveItemForReport(PreData pd)
{
#region ...
DataTable returnItem = new DataTable();
AmcData amcDataParam = new AmcData
{
preDatas = new PreDatas
{
{ "IPD", pd }
}
};
AmcData resultList = CommService.CallService("SHMGX5013R", amcDataParam);
// 4.응답전문 => DT 변환
if (resultList.IsSuccess)
{
returnItem = resultList.recordSets["ORS"].ToDataTable();
}
return returnItem;
#endregion
}
/// <summary>
/// 2022.12.12 / 박민준 / 요청한 데이터를 rexpert3.0 최종 바인딩 추가
/// </summary>
/// <param name="reportNm"></param>
/// <param name="bindData"></param>
/// <returns></returns>
private bool InitReport(String reportNm, Dictionary<string, string> bindData)
{
#region ...
UIFramework.UI.Controls.DocViewer.AReportViewer reportV = new UIFramework.UI.Controls.DocViewer.AReportViewer();
CommonMethod.GetResourceFile(this, "Report." + reportNm, "rpt" + reportNm);
bool printY = false;
reportV.BindingDataTableList.Clear();
reportV.BindFieldDic.Clear();
reportV.BindFieldDic = bindData; //1.전달값
reportV.TabHeaderVisible = false; //false
reportV.ToolbarVisible = true;
reportV.StatusbarVisible = false; //false
reportV.OpenReport(@"c:\amis3\temp\" + "rpt" + reportNm);
reportV.PrintPreview("preview", System.Windows.Forms.FormWindowState.Normal, 900, 1250);
//printY = reportV.PrintReport(0, null, 1, -1, 1);
return printY;
#endregion
}
// 2022.12.26 / 박민준 / 서식아이템 예외처리
private Boolean validate()
{
#region ...
bool result = true;
if (teissue.Text.ToString().Equals("") || teissue.Text.ToString().Equals(null))
{
AMessageBox.Show("경고", "발급번호를 입력해주세요.");
return result = false;
}
if (teshop.Text.ToString().Equals("") || teshop.Text.ToString().Equals(null))
{
AMessageBox.Show("경고", "업소명을 입력해주세요.");
return result = false;
}
if (tersltjang.Text.ToString().Equals("") || tersltjang.Text.ToString().Equals(null))
{
AMessageBox.Show("경고", "장티푸스 검사 결과를 입력해주세요.");
return result = false;
}
if (terslttuber.Text.ToString().Equals("") || terslttuber.Text.ToString().Equals(null))
{
AMessageBox.Show("경고", "결핵 검사 결과를 입력해주세요.");
return result = false;
}
if (tersltskin.Text.ToString().Equals("") || tersltskin.Text.ToString().Equals(null))
{
AMessageBox.Show("경고", "전염성 피부질환 검사 결과를 입력해주세요.");
return result = false;
}
if (techkrslt.Text.ToString().Equals("") || techkrslt.Text.ToString().Equals(null))
{
AMessageBox.Show("경고", "진찰소견을 입력해주세요.");
return result = false;
}
return result;
#endregion
}
}
}
서버단 수검자 조회
controller
/**
* 수진자목록조회(공무원채용신체검사/항공신체검사)
* @param amcData
* @param param
* @return
* @throws Exception
*/
@RequestMapping("SHMGX5000R")
@ResponseBody
public AMCData retrieveSugumList(@RequestBody AMCData amcData, @PreDataParam("IPD") HePOfficerHeathCheckDTO param) throws Exception {
// 수진자 목록 조회
List<HePOfficerHeathCheckDTO> resultList = hePOfficerHeathCheckManageProcService.retrieveSugumList(param);
AMCData resData = AMCDataFactory.createForResponse();
resData.putRecordSet("ORS", resultList);
return resData;
}
service
/**
* 수검자조회(공무원채용신체검사/항공신체검사)
* @param param
* @return
*/
@Transactional(rollbackFor = Exception.class)
public List<HePOfficerHeathCheckDTO> retrieveSugumList(HePOfficerHeathCheckDTO param){
List<HePOfficerHeathCheckDTO> resultList = hePOfficerHeathCheckMapper.retrieveSugumList(param);
MessageUtil.success("HM.success.retrieve");
return resultList;
}
mapper.java
@Mapper
public interface HePOfficerHeathCheckMapper {
/**
* 수검자조회
* @param param
* @return
*/
List<HePOfficerHeathCheckDTO> retrieveSugumList(HePOfficerHeathCheckDTO param);
}
mapper.xml
<!-- 수검자조회 -->
<select id ="retrieveSugumList" parameterType="kr.amc.amis.hm.gx.rs.entity.HePOfficerHeathCheckDTO" resultType="kr.amc.amis.hm.gx.rs.entity.HePOfficerHeathCheckDTO">
<![CDATA[
SELECT /*SQLID = kr.amc.amis.hm.gx.rs.store.mapper.HePOfficerHeathCheckMapper.retrieveSugumList*/
GM.HE_DT -- 검진일자
, GM.PATNO -- 병원등록번호
, WI.PAT_NM -- 환자명
, GM.VIST_SN -- 방문차수
, MAX(WI.RGNO) AS RGNO -- 주민번호
, MAX(WI.SEX_CD || '/' || FN_WP_GET_PAT_AGE(WI.PAT_BIRTHDT, GM.HE_DT)) AS SEXAGE
, MAX(TO_CHAR(TO_DATE(WI.PAT_BIRTHDT, 'YYYY-MM-DD'), 'YYYY-MM-DD')) AS PAT_BIRTHDT
, MAX(GC.JUDG_DT) AS JUDG_DT -- 판정일자
, MAX(GC.RSLT_PRNT_DT) AS RSLT_PRNT_DT -- 결과지출력일자
, MAX(GV.HE_BASIS_PKG_CD) AS HE_BASIS_PKG_CD -- 기초패키지코드
, MAX(WI.RPRN_TELNO) AS TELNO -- 전화번호
, MAX(WI.ZIPCD_ADDR||' '||WI.DTL_ADDR) AS ADDR -- 주소
FROM GRRVMOTPT GM -- 건강검진예약기본
, GRRVRMTCH GV -- 건강검진맞춤세트내역
, V_WPPIMINFO WI -- 환자기본
, GMCRMPCHK GC -- 수검자검진종류별검진진행상태관리
WHERE GM.PATNO = GV.PATNO(+)
AND GM.HE_DT = GV.HE_DT(+)
AND GM.VIST_SN = GV.VIST_SN(+)
AND GM.PATNO = GC.PATNO(+)
AND GM.HE_DT = GC.HE_DT(+)
AND GM.VIST_SN = GC.VIST_SN(+)
AND GV.HE_BASIS_PKG_CD LIKE #{heBasisPkgCd, jdbcType=VARCHAR}||'%' -- 공무원 채용신체검사패키지
AND GM.MDDP_CD = 'GHS' -- 일반건진 (GHS)
AND GM.HE_STAT_CD NOT IN ('7','9') -- 부도, 취소제외
AND GM.PATNO = WI.PATNO
AND GM.HE_DT BETWEEN #{startDt} AND #{endDt}
AND GC.HE_FORM_DIV_CD(+) = #{heFormDivCd, jdbcType=VARCHAR}
]]>
<if test ="gubun != null and 'PJY'.equals(gubun)">
AND GC.HE_JGMT_YN = 'Y' -- 판정완료
</if>
<if test = "gubun != null and 'PJN'.equals(gubun)">
AND GC.HE_JGMT_YN IS NULL -- 미판정
</if>
<if test = "gubun != null and 'PRY'.equals(gubun)">
AND GC.HE_INFORM_YN = 'Y' -- 출력완료
</if>
<if test = "gubun != null and 'PRN'.equals(gubun)">
AND GC.HE_INFORM_YN IS NULL -- 미출력
</if>
<![CDATA[
GROUP BY
GM.HE_DT
, GM.PATNO
, GM.VIST_SN
, WI.PAT_NM
]]>
</select>
서버단 crud
controller
/**
* 아이템데이터 저장 및 수정
* @param amcData
* @param param
* @return
* @throws Exception
*/
@RequestMapping("SHMGX5002I")
@ResponseBody
public AMCData registerItemData(@RequestBody AMCData amcData, @RecordSetParam("IRS") List<HePOfficerHeathCheckDTO> paramList, @PreDataParam("IPD") HePOfficerHeathCheckDTO param) throws Exception {
hePOfficerHeathCheckManageProcService.registerItemData(paramList, param); // 아에팀저장
AMCData resData = AMCDataFactory.createForResponse();
return resData;
}
service
/**
* 아이템데이터 저장 및 수정
* @param param
* @return
*/
@Transactional(rollbackFor = Exception.class)
public int registerItemData(List<HePOfficerHeathCheckDTO> paramList, HePOfficerHeathCheckDTO param){
int result =0;
if(paramList.size()>0) {
for (HePOfficerHeathCheckDTO vo : paramList) {
vo.setFinlUpidEmpno(ContextUtil.getUserId());
vo.setFrstEntrEmpno(ContextUtil.getUserId());
result =+ hePOfficerHeathCheckMapper.registerItemData(vo); //아이템저장
}
}
hePOfficerHeathCheckMapper.registerGumJinState(param); //상태저장
if (result > 0) {
MessageUtil.success("HM.success.save");
} else {
MessageUtil.fail("HM.info.save_none");
}
return result;
}
mapper.java
@Mapper
public interface HePOfficerHeathCheckMapper {
/**
* 수검자조회
* @param param
* @return
*/
List<HePOfficerHeathCheckDTO> retrieveSugumList(HePOfficerHeathCheckDTO param);
/**
* 수검자검진진행상태등록
* @param param
* @return
*/
int registerGumJinState(HePOfficerHeathCheckDTO param);
/**
* 아이템데이터 저장 및 수정
* @param param
* @return
*/
int registerItemData(HePOfficerHeathCheckDTO param);
/**
* 아이템조회
* @param param
* @return
*/
List<HePOfficerHeathCheckDTO>retrieveItemAnswerList(HePOfficerHeathCheckDTO param);
}
mapper.xml
<!-- ITEM 변경데이터 저장 -->
<insert id="registerItemData" parameterType="kr.amc.amis.hm.gx.rs.entity.HePOfficerHeathCheckDTO" >
<![CDATA[
MERGE /* SQLID=kr.amc.amis.hm.gx.rs.store.mapper.HePOfficerHeathCheckMapper.registerCunslData */
INTO GCCSMGCSL
USING DUAL
ON (
PATNO = #{patno, jdbcType=VARCHAR}
AND VIST_SN = #{vistSn, jdbcType=VARCHAR}
AND HE_DT = #{heDt, jdbcType=VARCHAR}
AND HE_FORM_DIV_CD = #{heFormDivCd} -- 공무원 채용신체검사(O)
AND FORM_CD = #{formCd, jdbcType=VARCHAR}
AND FORM_VER_CD = #{formVerCd, jdbcType=VARCHAR}
AND ITEM_ITEM_CD = #{itemItemCd, jdbcType=VARCHAR}
)
WHEN MATCHED THEN
UPDATE
SET
ITEM_RESULT_VAL = #{itemResultVal, jdbcType=VARCHAR}
, FINL_UPID_EMPNO = #{finlUpidEmpno, jdbcType=VARCHAR}
, FINL_UPDT_DTM = SYSDATE
WHEN NOT MATCHED THEN
INSERT
(
PATNO
, VIST_SN
, HE_DT
, HE_FORM_DIV_CD
, FORM_CD
, FORM_VER_CD
, ITEM_ITEM_CD
, ITEM_RESULT_VAL
, FRST_ENTR_EMPNO
, FRST_ENTR_DTM
, FINL_UPID_EMPNO
, FINL_UPDT_DTM
)
VALUES
(
#{patno , jdbcType=VARCHAR}
, #{vistSn}
, #{heDt, jdbcType=VARCHAR}
, #{heFormDivCd, jdbcType=VARCHAR} -- 공무원 채용신체검사
, #{formCd, jdbcType=VARCHAR}
, #{formVerCd, jdbcType=VARCHAR}
, #{itemItemCd, jdbcType=VARCHAR}
, #{itemResultVal, jdbcType=VARCHAR}
, #{frstEntrEmpno, jdbcType=VARCHAR}
, SYSDATE
, #{finlUpidEmpno, jdbcType=VARCHAR}
, SYSDATE
)
]]>
</insert>