2023.03.21(HeGuidePrint)

SaGo_MunGcci·2023년 3월 21일
0

업무 프로젝트

목록 보기
21/29

using AMIS3.UIFramework;
using AMIS3.UIFramework.Communication;
using AMIS3.UIFramework.DataModel;
using AMIS3.UIFramework.FxExtension;
using AMIS3.UIFramework.UI;
using AMIS3.UIFramework.UI.Controls;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Columns;
using Microsoft.Practices.ServiceLocation;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AMIS3.HM.GS.RCLIB001.VOClass;

namespace AMIS3.HM.GS.RCLIB002
{
    public class HeGuidePrint
    {
        public HeGuidePrint()
        {

        }

        /// <summary>
        /// 2023.03.16 / 박민준 / 건강검진 안내문 출력
        /// </summary>
        public void PrintNotice(HeRciv heRciv)
        {
            DataTable DtExamItems = new DataTable();
            DataTable DtExamItems1 = new DataTable();
            DataTable DtExamItems2 = new DataTable();
            DataTable DtExamItems3 = new DataTable();
            DataTable DtExamItems4 = new DataTable();

            string patno = heRciv.heResv.patno;
            long vistSn = heRciv.heResv.vistSn;
            string heDt = heRciv.heResv.heDt;
            string mddpCd = heRciv.heResv.mddpCd;

            Dictionary<string, string> bindData = null;

            bindData = new Dictionary<string, string>();

            PreData searchParam = new PreData
            {
                ["patno"] = patno.ToStringDefault(),
                ["vistSn"] = vistSn.ToStringDefault(),
                ["heDt"] = heDt.ToStringDefault().Replace("-", ""),
                ["mddpCd"] = mddpCd.ToStringDefault()
            };

            DataTable dtItemReport = retrieveItemForReport(searchParam);

            if (dtItemReport.Rows.Count == 0)
            {
                //AMessageBox.ShowInstant("해당 수검자의 검사항목이 존재하지 않습니다.", false, 2);
                return;
            }

            String rMddpCd = dtItemReport.Rows[0]["mddpCd"].ToStringDefault();
            if (rMddpCd.Equals("GHS"))
            {
                rMddpCd = "일반건진";
            }
            String dtHeDt = dtItemReport.Rows[0]["heDt"].ToStringDefault();
            String rHeDt = dtHeDt.Insert(4, ".").Insert(7, ".");
            String rPatno = dtItemReport.Rows[0]["patno"].ToStringDefault();
            String rPatNm = dtItemReport.Rows[0]["patNm"].ToStringDefault();
            String rEngNm = dtItemReport.Rows[0]["engNm"].ToStringDefault();
            String dtRgno = dtItemReport.Rows[0]["rgno"].ToStringDefault();
            String rRgno = dtRgno.Insert(2, ".").Insert(5, ".");
            String rSex = dtItemReport.Rows[0]["sex"].ToStringDefault();
            String rAge = dtItemReport.Rows[0]["age"].ToStringDefault();

            // 검사항목 20개씩 끊어서 사용            
            DtExamItems.Columns.Add("examItems");
            DtExamItems1.Columns.Add("examItems1");
            DtExamItems2.Columns.Add("examItems2");
            DtExamItems3.Columns.Add("examItems3");
            DtExamItems4.Columns.Add("examItems4");

            // 20개씩 테이블에 저장
            for (int i = 0; i < dtItemReport.Rows.Count; i++)
            {
                if (i < 20)
                {
                    DtExamItems.Rows.Add(dtItemReport.Rows[i]["ordrDtlNm"].ToStringDefault());
                }
                if (i >= 20 && i < 40)
                {
                    DtExamItems1.Rows.Add(dtItemReport.Rows[i]["ordrDtlNm"].ToStringDefault());
                }
                if (i >= 40 && i < 60)
                {
                    DtExamItems2.Rows.Add(dtItemReport.Rows[i]["ordrDtlNm"].ToStringDefault());
                }
                if (i >= 60 && i < 80)
                {
                    DtExamItems3.Rows.Add(dtItemReport.Rows[i]["ordrDtlNm"].ToStringDefault());
                }
                if (i >= 80 && i < 100)
                {
                    DtExamItems4.Rows.Add(dtItemReport.Rows[i]["ordrDtlNm"].ToStringDefault());
                }

            }

            // 고객성명, 영문이름, 생년월일
            bindData.Add("mddpCd", rMddpCd.ToStringDefault());
            bindData.Add("heDt", rHeDt.ToStringDefault());
            bindData.Add("patno", rPatno.ToStringDefault());
            bindData.Add("patNm", rPatNm.ToStringDefault());
            bindData.Add("engNm", rEngNm.ToStringDefault());
            bindData.Add("rgno", rRgno.ToStringDefault());
            bindData.Add("sex", rSex.ToStringDefault());
            bindData.Add("age", rAge.ToStringDefault());
            
            // 검사항목명
            InitReport("VHMGSRC202R01.reb", bindData, DtExamItems);            

            if (DtExamItems1.Rows.Count > 0 || DtExamItems2.Rows.Count > 0)
            {
                InitReport1("VHMGSRC202R02.reb", bindData, DtExamItems1, DtExamItems2);
            }

            if (DtExamItems3.Rows.Count > 0 || DtExamItems4.Rows.Count > 0)
            {
                InitReport2("VHMGSRC202R03.reb", bindData, DtExamItems3, DtExamItems4);
            }

            InitReportEnd("VHMGSRC202R04.reb", bindData);

        }

        private DataTable retrieveItemForReport(PreData searchParam)
        {
            var amcDataParam = new AmcData
            {
                preDatas = new PreDatas { { "IPD", searchParam } }
            };
            // SHMGR3100R --> SHMGX4008R(SHMGX4007R 참고)
            CommunicationService CommService = new CommunicationService();
            var responseData = CommService.CallService("SHMGX4008R", amcDataParam);
            DataTable dtOrg = responseData.recordSets["ORS"].ToDataTable(true);

            return dtOrg;
        }


        /// <summary>
        /// 2022.03.16 / 박민준 / 요청한 데이터를 rexpert3.0 최종 바인딩 추가
        /// </summary>
        /// <param name="reportNm"></param>
        /// <param name="bindData"></param>
        /// <returns></returns>
        private bool InitReport(String reportNm, Dictionary<string, string> bindData, DataTable DtExamItems)
        {
            #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.BindingDataTableList.Add(DtExamItems); // 검사항목 바인딩
            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, 1250, 900);
            //printY = reportV.PrintReport(0, null, 1, -1, 1);
            //reportV.PrintReport(0, null, 1, -1, 1);

            // 'examItems' 열(column)이 이미 존재하는지 확인.
            if (DtExamItems.Columns.Contains("examItems"))
            {
                // 'examItems' 열(column)을 제거.
                DtExamItems.Columns.Remove("examItems");
            }

            DtExamItems.Clear(); // 테이블 초기화
            return printY;
            #endregion
        }

        private bool InitReport1(String reportNm, Dictionary<string, string> bindData, DataTable DtExamItems1, DataTable DtExamItems2)
        {
            #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.BindingDataTableList.Add(DtExamItems1); // 검사항목 바인딩            
            reportV.BindingDataTableList.Add(DtExamItems2); // 검사항목 바인딩            
            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, 1250, 900);
            //printY = reportV.PrintReport(0, null, 1, -1, 1);
            //reportV.PrintReport(0, null, 1, -1, 1);

            // 'examItems' 열(column)이 이미 존재하는지 확인.
            if (DtExamItems1.Columns.Contains("examItems1"))
            {
                // 'examItems' 열(column)을 제거.
                DtExamItems1.Columns.Remove("examItems1");
            }

            DtExamItems1.Clear(); // 테이블 초기화


            if (DtExamItems2.Columns.Contains("examItems2"))
            {
                // 'examItems' 열(column)을 제거.
                DtExamItems2.Columns.Remove("examItems2");
            }

            DtExamItems2.Clear(); // 테이블 초기화     


            return printY;
            #endregion
        }


        private bool InitReport2(String reportNm, Dictionary<string, string> bindData, DataTable DtExamItems3, DataTable DtExamItems4)
        {
            #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.BindingDataTableList.Add(DtExamItems3); // 검사항목 바인딩
            reportV.BindingDataTableList.Add(DtExamItems4); // 검사항목 바인딩

            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, 1250, 900);
            //printY = reportV.PrintReport(0, null, 1, -1, 1);
            //reportV.PrintReport(0, null, 1, -1, 1);

            // 'examItems' 열(column)이 이미 존재하는지 확인.
            if (DtExamItems3.Columns.Contains("examItems3"))
            {
                // 'examItems' 열(column)을 제거.
                DtExamItems3.Columns.Remove("examItems3");
            }

            DtExamItems3.Clear(); // 테이블 초기화

            // 'examItems' 열(column)이 이미 존재하는지 확인.
            if (DtExamItems4.Columns.Contains("examItems4"))
            {
                // 'examItems' 열(column)을 제거.
                DtExamItems4.Columns.Remove("examItems4");
            }

            DtExamItems4.Clear(); // 테이블 초기화 

            return printY;
            #endregion
        }


        private bool InitReport3(String reportNm, Dictionary<string, string> bindData, DataTable DtExamItems3)
        {
            #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.BindingDataTableList.Add(DtExamItems3); // 검사항목 바인딩

            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, 1250, 900);
            //printY = reportV.PrintReport(0, null, 1, -1, 1);
            //reportV.PrintReport(0, null, 1, -1, 1);

            // 'examItems' 열(column)이 이미 존재하는지 확인.
            if (DtExamItems3.Columns.Contains("examItems3"))
            {
                // 'examItems' 열(column)을 제거.
                DtExamItems3.Columns.Remove("examItems3");
            }

            DtExamItems3.Clear(); // 테이블 초기화           

            return printY;
            #endregion
        }



        private bool InitReportEnd(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, 1250, 900);
            return printY;

            #endregion
        }
    }
}


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

0개의 댓글