2022.12.27 TIL(rs210)

SaGo_MunGcci·2022년 12월 27일
0

C#

목록 보기
23/27

서버단은 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
        }

       
    }
}


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

0개의 댓글