2022.11.25 TIL(2)

SaGo_MunGcci·2022년 11월 25일
0

C#

목록 보기
5/27

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>

profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글