rv112
csharp
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using AMIS3.HM.ZZ;
using AMIS3.UIFramework;
using AMIS3.UIFramework.DataModel;
using AMIS3.UIFramework.FxExtension;
using AMIS3.UIFramework.UI;
using AMIS3.UIFramework.UI.Controls;
using DevExpress.XtraEditors.Repository;
namespace AMIS3.HM.GR.RV112
{
public partial class VHMGRRV112S : ScreenBase, ISmartToolbar
{
public List<ActionButtonItem> ActionButtonItems { get; set; }
public VHMGRRV112S()
{
InitializeComponent();
}
private void VHMGRRV112S_Load(object sender, EventArgs e)
{
dcHeDt.FromDateTime = DateTime.Today;
dcHeDt.ToDateTime = DateTime.Today;
ZZ.Grid.GridView_SetCustomDrawRowIndicator(gvList);
InitComboBox();
}
// / 2022.11.24 / 박민준 / ComboBox Content 추가
public void InitComboBox()
{
DataTable dt = new DataTable();
dt.Columns.Add("Text");
dt.Columns.Add("Value");
dt.Rows.Add("*.전체", "All");
dt.Rows.Add("GHS.일반검진","GHS");
dt.Rows.Add("GHE.종합검진","GHE");
cbMediDprt.SetDataSource(dt, "Text", "Value", AComboFirstValueType.Select);
}
// // / 2022.11.24 / 박민준 / ComboBox 아이템 변경 이벤트 추가
private void cbMediDprt_SelectedIndexChanged(object sender, EventArgs e)
{
AComboBox cb = sender as AComboBox;
cbMediDprt.Text = cb.SelectedItem.ToString();
cbMediDprt.EditValue = cb.EditValue.ToString();
// ComboBox cb = sender as ComboBox;
// cbMediDprt.Text = cb.SelectedItem.ToString();
}
/// <summary>
/// 단축키 조회 Ctrl+R
/// </summary>
protected override void RefreshMethod()
{
this.RetrieveList();
base.RefreshMethod();
}
/// <summary>
/// / 2022.11.24 / 박민준 / 검강검진일자에다가 수검자명 병원등록번호 진료과(combo box) 추가
/// </summary>
/// <returns></returns>
bool RetrieveList()
{
// 동기적 통신 Predata
PreData apd = new PreData();
// 건강검진일자
apd["frDt"] = dcHeDt.FromDateTime.ToString("yyyyMMdd");
apd["toDt"] = dcHeDt.ToDateTime.ToString("yyyyMMdd");
// 2022.11.24 / 박민준 / 수검자명 추가
apd["patNm"] = tedPatNm.EditValue.ToStringDefault();
// 2022.11.24 / 박민준 / 병원등록번호 추가
apd["hosNm"] = tedlblHosNum.EditValue.ToStringDefault();
// 2022.11.24 / 박민준 / 진료과 추가
apd["mediDprt"] = cbMediDprt.EditValue.ToStringDefault();
AmcData rqAD = new AmcData { preDatas = new PreDatas { { "IP_Param", apd } } };
AmcData rsAD = Comm.CallService(CommService, "SHMGR1006R", rqAD, this.Name, "건진예약명단조회");
if (rsAD.IsFail)
{
MessageBox.Show(rsAD.header.message, "확인");
return false;
}
DataTable dt = rsAD.recordSets["OR_List"].ToDataTable();
gcList.DataSource = dt;
return true;
}
// F/W 에서 환자가 변경될때 선택된 Row 의 환자가 아니면 선택을 지워줌.
public override void OnChangePatientInfo(string patientNo, long visitSn, PatientVO patInfo)
{
int selh = -1;
for (int i = 0; i < gvList.RowCount; i++) {
if (gvList.GetRowCellValue(i, "selected").ToString() == "Y") {
selh = i; break;
}
}
if (selh < 0) return;
string patno = gvList.GetRowCellValue(selh, "patno").ToString();
long vistSn = gvList.GetRowCellValue(selh, "vistSn").ToLong();
if ( patno != patientNo || vistSn != visitSn)
{
gvList.SetRowCellValue(selh, "selected", "N");
gvList.UpdateCurrentRow();
}
base.OnChangePatientInfo(patientNo, visitSn, patInfo);
}
/// <summary>
///
/// / 2022.11.02 / 이창민 / 액션버튼 추가
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnRetrieve_Click(object sender, EventArgs e)
{
this.RetrieveList();
}
private void gvList_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.GridView gv = sender as DevExpress.XtraGrid.Views.Grid.GridView;
if (!gv.IsValidRowHandle(e.RowHandle)) return;
if (e.Clicks < 2)
{
return;
}
for (int i = 0; i < gv.RowCount; i++) {
gv.SetRowCellValue(i, "selected", (i == e.RowHandle) ? "Y" : "N");
}
gv.UpdateCurrentRow();
string patno = gv.GetRowCellValue(e.RowHandle, "patno").ToString();
var param = new Dictionary<string, object>();
param.Add("patno", patno);
this.SendObjectDicToScreenWithoutOpen("VHMGRRV101S", "RetrievePatno", param);
if (gv.GetRowCellValue(e.RowHandle, "heStatCd").ToString() == "2" )
{
Dictionary<string, object> param1 = new Dictionary<string, object>();
param1.Add("patno", patno);
param1.Add("vistSn", gv.GetRowCellValue(e.RowHandle, "vistSn").ToStringDefault());
param1.Add("heDt", gv.GetRowCellValue(e.RowHandle, "heDt").ToStringDefault());
//this.OpenScreenWithMessage("VHMGSRC202S", "HMGRRV112", param1.ToJson());
this.SendMessageToScreen("VHMGSRC202S", "HMGRRV112", param1.ToJson());
}
}
private void gvList_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.GridView gv = sender as DevExpress.XtraGrid.Views.Grid.GridView;
if (!gv.IsValidRowHandle(e.RowHandle)) return;
string selected = gv.GetRowCellValue(e.RowHandle, "selected").ToString();
if (selected == "Y") { e.Appearance.BackColor = System.Drawing.ColorTranslator.FromHtml("#BDE7E6"); }
else if (e.RowHandle % 2 == 0) {
e.Appearance.BackColor = Color.FromArgb(250, 250, 250);
}
}
private void gvList_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.GridView gv = sender as DevExpress.XtraGrid.Views.Grid.GridView;
if (!gv.IsValidRowHandle(e.RowHandle)) return;
if (e.Column.FieldName == "patNm")
{
string vipColor = gv.GetRowCellValue(e.RowHandle, "vipColor")?.ToString();
if (!String.IsNullOrEmpty(vipColor)) {
e.Appearance.BackColor = Color.FromName(vipColor);
}
}
}
private void dcHeDt_ChangeSelectedDate(object sender, int calendarIndex, bool useFromDate, DateTime fromDate, bool useToDate, DateTime toDate)
{
this.RetrieveList();
}
private void btnExcel_Click(object sender, EventArgs e)
{
if (gcList.DataSource == null || ((DataTable)gcList.DataSource).Rows.Count == 0)
{
AMessageBox.ShowInstant("조회된 자료가 없습니다.");
return;
}
var dialog = new SaveFileDialog
{
AddExtension = true,
Filter = "Excel files (*.xlsx)|*.xlsx",
FileName = dcHeDt.FromDateTime.ToString("yyyy-MM-dd") + "~" + dcHeDt.ToDateTime.ToString("yyyy-MM-dd") + " 건강검진 예약명단",
DefaultExt = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
};
if (dialog.ShowDialog() != DialogResult.OK) return;
//if (!DownloadReason.Save(dialog.FileName))
//{
// return;
//}
DevExpress.XtraPrinting.XlsxExportOptionsEx xeo = new DevExpress.XtraPrinting.XlsxExportOptionsEx();
xeo.FitToPrintedPageWidth = true;
gvList.ExportToXlsx(dialog.FileName, xeo);
AMIS3.UIFramework.Security.DrmService.Instance.DoPackaging(dialog.FileName);
AMessageBox.Show("확인", dialog.FileName + "을 열어보시겠습니까?", (result) =>
{
if (result.ResultStatus == DialogResult.Yes)
{
System.Diagnostics.Process.Start(dialog.FileName);
}
}, AMessageType.OK, MessageBoxButtons.YesNo);
}
}
}
Mybatis(xml mapping) - 동적쿼리문 매핑한것 잘보기
<!-- 건강검진예약명단조회 -->
<!-- 2020.02.27 홍성갑 주소,연락처 추가 -->
<select id="retrieveHeResvList" parameterType="kr.amc.amis.hm.gr.zz.entity.HeArgDTO" resultType="kr.amc.amis.hm.gr.rv.entity.HeHMGRRV112sDTO">
<![CDATA[
WITH RK AS (
SELECT RR.PATNO
, RR.VIST_SN
, RR.HE_DT
, NVL(GH.FRST_ENTR_EMPNO, RR.FRST_ENTR_EMPNO) AS FRST_ENTR_EMPNO
, NVL(GH.FRST_ENTR_DTM, RR.FRST_ENTR_DTM) AS FRST_ENTR_DTM
FROM GRRVMOTPT RR
, GRRVHOTPT GH
WHERE RR.HE_DT BETWEEN #{frDt} AND #{toDt} --건강검진일자
AND RR.HE_STAT_CD IN ('1','2')
AND RR.HE_PKG_CLSF_CD != 'CLIC'
AND GH.PATNO(+) = RR.PATNO
AND GH.VIST_SN(+) = RR.VIST_SN
AND GH.CHNG_SN(+) = 1
)
, GS AS (
SELECT RK.PATNO
, RK.VIST_SN
, RK.HE_DT
, NVL(SUM(GS.HE_TOT_AMT),SUM(SR.GUID_AMT)) HE_TOT_AMT
FROM RK
, GSRCMRESV SR
, GSRCMRECP GS
WHERE SR.PATNO(+) = RK.PATNO
AND SR.VIST_SN(+) = RK.VIST_SN
AND SR.HE_DT(+) = RK.HE_DT
AND GS.PATNO(+) = RK.PATNO
AND GS.VIST_SN(+) = RK.VIST_SN
AND GS.HE_DT(+) = RK.HE_DT
GROUP BY RK.PATNO
, RK.VIST_SN
, RK.HE_DT
)
SELECT /* SQLID=kr.amc.amis.hm.gr.rv.store.mapper.HmGrRvHeResvDaoMapper.retrieveHeResvList */
GR.PATNO --환자번호
, GR.VIST_SN --내원일련번호
, WP.PAT_NM --환자성명
, WP.SEX_CD --성별
, WP.SEX_DIV_NM ||'/'|| WP.AGE_YEARS SEX_AGE --성별/나이
, DECODE(WP.FORE_YN,'Y','Y','') FORE_YN --외국인여부
, TO_CHAR(TO_DATE(GR.HE_DT ), 'yyyy-mm-dd') AS HE_DT --건강검진일자
, GR.MDDP_CD -- 진료과(추가 2022.11.24)
, GR.HE_PKG_CLSF_CD --건강검진패키지분류코드
, GR.HE_PKG_CD --건강검진패키지코드
, PK.KOR_NM AS HE_PKG_NM --한글성명
, SUBSTR(GR.HE_TM,1,2)||':'||SUBSTR(GR.HE_TM,3,2) AS HE_TM --건강검진시각
, GR.RVIST_CNT --재진횟수
, GR.HE_STAT_CD --상태
, GR.RCIV_YN --수납여부
, GS.HE_TOT_AMT
, DECODE(GR.RCIV_YN,'Y','수납', FN_GZ_CDNM('HeStatCd',GR.HE_STAT_CD)) AS HE_STAT_NM
, DECODE(GR.HE_CUSTM_SET_ADD_YN,'Y','Y','') HE_CUSTM_SET_ADD_YN --건강검진맞춤세트추가여부
, GR.MLTL_OUT_CD --다국어출력코드
, FN_GZ_CDNM('IndlSctyCd', GR.INDL_SCTY_CD) AS INDL_SCTY_NM --개인단체코드
, GR.HE_ACTCUST_CD --건강검진거래처코드
, CP.ACTCUST_NM AS HE_ACTCUST_NM --건강검진거래처명
, GR.VIP_COLOR --VIP색상
, FN_ZZ_GET_USER_NM(RK.FRST_ENTR_EMPNO) FRST_ENTR_EMPNM --최초입력자
, TO_CHAR(RK.FRST_ENTR_DTM, 'yyyy/mm/dd hh24:mi:ss') FRST_ENTR_DT --최초입력일시
, 'N' SELECTED
, WP.ZIPCD_ADDR || ' ' || WP.DTL_ADDR AS ADDR
, ( SELECT TELNO || ' ' || TELNO_DESC
FROM ( SELECT DENSE_RANK() OVER ( ORDER BY PHON.TELNO_PRIORITY, PHON.FRST_ENTR_DTM) AS RN
, TRIM(PHON.RGN_TELNO)||DECODE(TRIM(PHON.RGN_TELNO), NULL, '', '-')||
TRIM(PHON.MID_PLC_TELNO)||DECODE(TRIM(PHON.MID_PLC_TELNO), NULL, '', '-')||
TRIM(PHON.LAST_PLC_TELNO) AS TELNO
, PHON.TELNO_DESC
FROM V_WPPIDPHON PHON
WHERE PHON.PATNO = GR.PATNO
) A
WHERE RN = 1
) AS RPRN_TELNO
, ( SELECT TELNO || ' ' || TELNO_DESC
FROM ( SELECT DENSE_RANK() OVER ( ORDER BY PHON.TELNO_PRIORITY, PHON.FRST_ENTR_DTM) AS RN
, TRIM(PHON.RGN_TELNO)||DECODE(TRIM(PHON.RGN_TELNO), NULL, '', '-')||
TRIM(PHON.MID_PLC_TELNO)||DECODE(TRIM(PHON.MID_PLC_TELNO), NULL, '', '-')||
TRIM(PHON.LAST_PLC_TELNO) AS TELNO
, PHON.TELNO_DESC
FROM V_WPPIDPHON PHON
WHERE PHON.PATNO = GR.PATNO
) A
WHERE RN = 2
) AS MBPH_NO
FROM RK
, V_GRRVMOTPT GR --뷰_건강검진예약기본
, V_WPPIMINFO WP --뷰_환자기본
, V_GZCDCPKCD PK --뷰_건강검진패키지코드
, GS
, GZCDMCPIF CP
WHERE GR.PATNO = RK.PATNO
AND GR.VIST_SN = RK.VIST_SN
AND GR.HE_DT = RK.HE_DT
AND WP.PATNO = GR.PATNO --환자번호
AND PK.HE_PKG_CD = GR.HE_PKG_CD --건강검진패키지코드
AND GS.PATNO(+) = GR.PATNO
AND GS.VIST_SN(+) = GR.VIST_SN
AND GS.HE_DT(+) = GR.HE_DT
AND CP.HE_ACTCUST_CD(+) = GR.HE_ACTCUST_CD
]]>
<choose>
<when test = "patNm != null and patNm !='' "> -- 수검자명만 입력한 경우
<![CDATA[
AND WP.PAT_NM =#{patNm} -- 수검자 명 입력받기 추가 2022.11.24
]]>
</when>
<when test = "hosNm != null and hosNm != ''"> -- 병원등록번호만 입력한 경우
<![CDATA[
AND GR.PATNO =#{hosNm} -- 병원등록 번호 입력받기 추가 2022.11.24
]]>
</when>
<when test = "mediDprt != null or mediDprt != ''"> -- 진료과만 입력한 경우
<if test = "mediDprt == 'All'"> -- 잔료과 경로 추가 2022.11.24
<![CDATA[
]]>
</if>
<if test = "mediDprt == 'GHE'">
<![CDATA[
AND GR.MDDP_CD ='GHE'
]]>
</if>
<if test = "mediDprt == 'GHS'">
<![CDATA[
AND GR.MDDP_CD ='GHS'
]]>
</if>
</when>
<when test = "patNm == null and patNm == '' and hosNm == null and hosNm == '' and mediDprt == '' and mediDprt == null"> -- 날짜만 입력한 경우
<![CDATA[
]]>
</when>
<otherwise> -- 조회기간, 수검자명, 병원등록번호, 진료과 모두 입력받은 경우
<![CDATA[
AND WP.PAT_NM =#{patNm}
AND GR.PATNO =#{hosNm}
]]>
<if test = "mediDprt == 'All'"> -- 잔료과 경로 추가 2022.11.24
<![CDATA[
]]>
</if>
<if test = "mediDprt == 'GHE'">
<![CDATA[
AND GR.MDDP_CD ='GHE'
]]>
</if>
<if test = "mediDprt == 'GHS'">
<![CDATA[
AND GR.MDDP_CD ='GHS'
]]>
</if>
</otherwise>
</choose>
</select>