서버단은 rs209와 동일
/*=====================================================================================
프로젝트명 : AMIS3.0
프로그램ID : VHMGXRS210S
업 무 명 : 운전면허적성검사[건강검진-공단]
최초작성일 : 2022.12.16
개 발 자 : 박민준
참고사항 :
변경이력 :
====================================================================================*/
using AMIS3.HM.ZZ;
using AMIS3.HM.ZZ.ZZLIB003.Controls;
using AMIS3.HM.ZZ.ZZLIB003.Mvc.Utils;
using AMIS3.UIFramework;
using AMIS3.UIFramework.DataModel;
using AMIS3.UIFramework.FxExtension;
using AMIS3.UIFramework.UI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Threading.Tasks;
using DevExpress.XtraGrid.Views.Grid;
using AMIS3.UIFramework.Security;
namespace AMIS3.HM.GX.RS210
{
public partial class VHMGXRS210S : ScreenBase, ISmartToolbar
{
public List<ActionButtonItem> ActionButtonItems { get; set; } = new List<ActionButtonItem>();
// 2022.12.23 / 박민준 / pannel을 이용한 SetSvDataTable, GetData 하기위한 전역변수 추가
DataTable svDt = null;
private String strFormCd = "SD20220101"; // 서식코드
private String strFormVerCd = "SD2022010101"; // 서식버전 코드
String patNo = ""; // 병원등록번호
String heDt = ""; // 일자
long vistSn = 0; // 방문횟수
int chkCnt = 0; // 전체선택시 전역변수
String judgDt = ""; // 판정일자
String doctorId = ""; // 의사아이디
String doctorNm = ""; // 의사명
String doclicnsNo = ""; // 의사면허번호
private String strJudgDivCd = "D"; // 상담판정구분 : D(운전면허적성검사)
UserT UserInfo = null;
public VHMGXRS210S()
{
InitializeComponent();
SetEvent();
SetControl();
}
private void SetEvent()
{
this.Load += new EventHandler(eFormLoad);
grvAllv.ShowingEditor += grvAllv_ShowingEditor;
}
private void SetControl()
{
ActionBtnSetting();
}
private void eFormLoad(object sender, EventArgs e)
{
// 의사 선생님 정보 받는 부분
UserInfo = SecurityWrapper.Instance.SecurityService.GetUserInfo(this);
// 2022.12.23 / 박민준 / D050162 정화성(D050162) 선생님이 운전면허적성검사하신다고 가정함
GetDoctorLicnsNo cs = new GetDoctorLicnsNo("D050162");
if (cs != null)
{
doclicnsNo = cs.GetLicnsNo(); // 의사면허번호
doctorId = cs.GetDoctorId(); // 의사아이디
doctorNm = cs.GetDoctorNm(); // 의사명
lbldocnm.Text = doctorNm.ToStringDefault();
}
tepatno.ReadOnly = true;
tename.ReadOnly = true;
tebirthdt.ReadOnly = true;
teaddr.ReadOnly = true;
tetelno.ReadOnly = true;
Today();
}
// 2022.12.23 / 박민준 / 날짜 출력 함수 생성
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;
lblyear1.Text = yearDt;
lblmonth1.Text = monthDt;
lblday1.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.23 / 박민준 / 액션버튼 생성
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.23 / 박민준 / 액션버튼 저장이벤트
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);
pn2.GetData(ref svDt, "itemItemCd", "itemResultVal");
amcDataParam.recordSets.Add("IRS", svDt.ToRecordSet(true));
amcDataParam.preDatas.Add("IPD", sParam); // 상태값변경
// SHMGC3500T //SHMGX5002I
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.21 / 박민준 / 삼색식별 체크박스 클릭시
private void chkedclrblind_CheckedChanged(object sender, EventArgs e)
{
if (chkedclrblind.Checked == true)
{
teclrblind.Enabled = true;
}
else
{
teclrblind.Enabled = false;
}
}
// 2022.12.21 / 박민준 / 청력 체크박스 클릭시
private void chkedhearing_CheckedChanged(object sender, EventArgs e)
{
if (chkedhearing.Checked == true)
{
tehearingR.Enabled = true;
tehearingL.Enabled = true;
}
else
{
tehearingR.Enabled = false;
tehearingL.Enabled = false;
}
}
// 2022.12.23 / 박민준 / 조회버튼
private async void retrieveBtn_Click(object sender, EventArgs e)
{
await SvCallLoadExamineeList();
}
// 2022.12.23 / 박민준 / 조회 이벤트 실행 함수
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.23 / 박민준 / 그리드뷰 컬럼및 셀 제어
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().Replace("-", "");
vistSn = grvAllv.GetFocusedDataRow()["vistSn"].ToStringDefault("0").ToLong(); ;
tename.Text = grvAllv.GetFocusedDataRow()["patNm"].ToString();
tebirthdt.Text = grvAllv.GetFocusedDataRow()["patBirthdt"].ToString();
teaddr.Text = grvAllv.GetFocusedDataRow()["addr"].ToString();
tetelno.Text = grvAllv.GetFocusedDataRow()["telno"].ToString();
tehedt.Text = grvAllv.GetFocusedDataRow()["heDt"].ToString();
tedoclincs.Text = doclicnsNo.ToStringDefault();
this.grvAllv.Appearance.FocusedRow.BackColor = Color.AliceBlue;
this.grvAllv.Appearance.FocusedCell.BackColor = Color.AliceBlue;
tepatno.Text = patNo;
ExamineeData();
#endregion
}
// 2022.12.26 / 박민준 / 그리드뷰 클릭시 수검자정보 검사서에 출력
private void grdAllg_Click(object sender, EventArgs e)
{
#region ...
patNo = grvAllv.GetFocusedDataRow()["patno"].ToString();
heDt = grvAllv.GetFocusedDataRow()["heDt"].ToString().Replace("-", "");
vistSn = grvAllv.GetFocusedDataRow()["vistSn"].ToStringDefault("0").ToLong(); ;
tename.Text = grvAllv.GetFocusedDataRow()["patNm"].ToString();
tebirthdt.Text = grvAllv.GetFocusedDataRow()["patBirthdt"].ToString();
teaddr.Text = grvAllv.GetFocusedDataRow()["addr"].ToString();
tetelno.Text = grvAllv.GetFocusedDataRow()["telno"].ToString();
tehedt.Text = grvAllv.GetFocusedDataRow()["heDt"].ToString();
tedoclincs.Text = doclicnsNo.ToStringDefault();
this.grvAllv.Appearance.FocusedRow.BackColor = Color.AliceBlue;
this.grvAllv.Appearance.FocusedCell.BackColor = Color.AliceBlue;
tepatno.Text = patNo;
ExamineeData();
#endregion
}
// 2022.12.21 / 박민준 / 아이템별 데이터 저장 및 삼색식별 및 청력데이터 임시로 추가
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;
teetcdocrslt.Text = noStr;
}
else
{
teetcdocrslt.Text = someData[0];
}
if (patNo.Equals("13357391"))
{
chkedclrblind.Checked = true;
teclrblind.Text = "적합";
chkedhearing.Checked = false;
tehearingR.Text = "";
tehearingL.Text = "";
}
if (patNo.Equals("15268961"))
{
chkedclrblind.Checked = false;
teclrblind.Text = "";
chkedhearing.Checked = true;
tehearingR.Text = "비정상";
tehearingL.Text = "정상";
}
if (patNo.Equals("19053433"))
{
chkedclrblind.Checked = true;
teclrblind.Text = "적합";
chkedhearing.Checked = true;
tehearingR.Text = "정상";
tehearingL.Text = "정상";
}
#endregion
}
// 2022.12.21 / 박민준 / 수검자 리스트 전체 선택
private void chkall_CheckedChanged(object sender, EventArgs e)
{
#region ...
chkCnt++;
if (chkCnt % 2 != 0)
{
grvAllv.SelectAll();
}
else
{
grvAllv.ClearSelection();
}
#endregion
}
// 2022.12.21 / 박민준 / 프린트 버튼 클릭
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.12 / 박민준 / 리포트 출력하기(삼색식별 및 청력 임시데이터 추가)
/// <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("addr", dr["addr"].ToStringDefault());
bindData.Add("telno", dr["telno"].ToStringDefault());
bindData.Add("patBirthdt", dr["patBirthdt"].ToStringDefault());
bindData.Add("year", lblyear1.Text.ToStringDefault());
bindData.Add("month", lblmonth1.Text.ToStringDefault());
bindData.Add("day", lblday1.Text.ToStringDefault());
// 2022.12.26 / 박민준 / 체크박스 리포트 바인딩 추가 및 삼색식별, 청력검사 임시데이터 추가
if (dr["patno"].ToStringDefault().Equals("13357391"))
{
chkedclrblind.Checked = true;
teclrblind.Text = "적합";
bindData.Add("chkedclrblind", "true");
bindData.Add("teclrblind", teclrblind.Text);
chkedhearing.Checked = false;
tehearingR.Text = "";
tehearingL.Text = "";
bindData.Add("chkedhearing", "false");
bindData.Add("tehearingR", tehearingR.Text);
bindData.Add("tehearingL", tehearingL.Text);
}
if (dr["patno"].ToStringDefault().Equals("15268961"))
{
chkedclrblind.Checked = false;
teclrblind.Text = "";
bindData.Add("chkedclrblind", "false");
bindData.Add("teclrblind", teclrblind.Text);
chkedhearing.Checked = true;
tehearingR.Text = "비정상";
tehearingL.Text = "정상";
bindData.Add("chkedhearing", "true");
bindData.Add("tehearingR", tehearingR.Text);
bindData.Add("tehearingL", tehearingL.Text);
}
if (dr["patno"].ToStringDefault().Equals("19053433"))
{
chkedclrblind.Checked = true;
teclrblind.Text = "적합";
bindData.Add("chkedclrblind", "true");
bindData.Add("teclrblind", teclrblind.Text);
chkedhearing.Checked = true;
tehearingR.Text = "정상";
tehearingL.Text = "정상";
bindData.Add("chkedhearing", "true");
bindData.Add("tehearingR", tehearingR.Text);
bindData.Add("tehearingL", tehearingL.Text);
}
bindData.Add("today", DateTime.Today.ToString("yyyy") + "년 " + DateTime.Today.ToString("MM") + "월 " + DateTime.Today.ToString("dd") + "일");
bindData.Add("docNm", lbldocnm.Text);
InitReport("VHMGXRS210R01.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
}
// 검사항목 예외처리
private Boolean validate()
{
#region ...
bool result = true;
if (teetcdocrslt.Text.ToString().Equals("") || teetcdocrslt.Text.ToString().Equals(null))
{
AMessageBox.Show("경고", "기타 의사소견을 입력해주세요.");
return result = false;
}
return result;
#endregion
}
}
}