2022.12.15 TIL(cd405 최종완성)

SaGo_MunGcci·2022년 12월 15일
0

C#

목록 보기
14/27

cd405


/*=====================================================================================
프로젝트명 : AMIS3.0
프로그램ID : VHMGZCD405S
업  무  명 : 공단검진 문진 서식아이템 관리[공단검진]
최초작성일 : 2022.12.13
개  발  자 : 박민준
참고사항   : 
변경이력   : 
====================================================================================*/
using AMIS3.UIFramework;
using AMIS3.UIFramework.DataModel;
using AMIS3.UIFramework.FxExtension;
using AMIS3.UIFramework.UI;
using AMIS3.UIFramework.UI.Controls;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Windows.Forms;


namespace AMIS3.HM.GZ.CD405
{
    public partial class VHMGZCD405S : ScreenBase, ISmartToolbar
    {
        String radioVal = String.Empty;
        List<String> detailCode = new List<string>(); // 세부코드
        List<String> detailCodeNm = new List<string>(); // 세부코드명
        List<String> mjverlist = new List<string>(); // 문진버전코드 Value만 넣은 리스트
        List<String> mjQuestionlist = new List<string>(); // 문진질문유형코드 value만 넣은 리스트

        public List<ActionButtonItem> ActionButtonItems { get; set; } = new List<ActionButtonItem>();

        public VHMGZCD405S()
        {
            InitializeComponent();
            SetEvent();
            SetControl();
        }

        private void SetEvent()
        {
            this.Load += new EventHandler(eFormLoad);
            grvAllg.ShowingEditor += GrvAllg_ShowingEditor;
            grvAllg.ValidatingEditor += GridView_ValidatingEditor;
        }

        private void eFormLoad(object sender, EventArgs e)
        {
            ActionBtnSetting();
        }

        async void SetControl()
        {
            //2022.12.14 / 박민준 / cd101에서 데이터 받아와서 콤보박스에 넣어주는 기능 추가
            #region CD101에서 데이터 받아와서 콤보박스에 넣어주는 기능
            AmcData mjCateParam = new AmcData();
            mjCateParam.preDatas = new PreDatas();
            PreData mjCatesParam = new PreData();

            mjCatesParam["synthCd"] = "Hstktypcd";
            mjCateParam.preDatas.Add("IPD", mjCatesParam);      //  상태값변경
            var mjCateParamData = await CommService.CallServiceAsync("SHMGZ6020R", mjCateParam);

            DataTable mjCateDt = new DataTable();
            mjCateDt = mjCateParamData.recordSets["ORS_SynthDtlCd"].ToDataTable();

            foreach (DataRow dr in mjCateDt.Rows)
            {
                string rowDtlCd = string.Empty;
                rowDtlCd = dr["dtlCd"].ToStringDefault();
                detailCode.Add(rowDtlCd);

                String rowKorNm = String.Empty;
                rowKorNm = dr["korNm"].ToStringDefault();
                detailCodeNm.Add(rowKorNm);

            }

            DataTable dt = new DataTable();
            dt.Columns.Add("Text");
            dt.Columns.Add("Value");

            for (int i = 0; i < detailCodeNm.Count; i++)
            {
                dt.Rows.Add(detailCodeNm[i], detailCode[i]);
            }

            cbseosik.SetDataSource(dt, "Text", "Value", AComboFirstValueType.All);
            #endregion


            //2022.12.14 / 박민준 / 문진유형코드, 문진버전코드, 문진질문유형코드 Lookup설정 추가
            #region 문진유형코드, 문진버전코드, 문진질문유형코드 Lookup 설정
            // 문진유형코드 lookup설정
            DataTable paperWeightCate = mjCateDt;

            // 업무구분
            repositoryItemLookUpEdit2.SetDataSource(paperWeightCate, new LookUpBindingInfo()
            {
                DisplayField = "dtlCd", // 해당 컨텐츠 클릭시 보여주는 항목
                ValueField = "dtlCd", // 해당 컨텐츠 클릭시 실제 입력되는 값
                VisibleColumns = new List<LookUpColumn> {
                            new LookUpColumn("dtlCd", "코드"),
                            new LookUpColumn("korNm", "코드명"),
                        }
            });
            repositoryItemLookUpEdit2.DropDownRows = paperWeightCate.Rows.Count;
            repositoryItemLookUpEdit2.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            repositoryItemLookUpEdit2.AllowFocused = true;

            // 문진버전코드 가져오기
            AmcData mjVerParam = new AmcData();
            mjVerParam.preDatas = new PreDatas();
            PreData mjVersParam = new PreData();
            mjVersParam["synthCd"] = "HstkVrsncd";

            mjVerParam.preDatas.Add("IPD", mjVersParam);      //  상태값변경
            var responseData1 = await CommService.CallServiceAsync("SHMGZ6020R", mjVerParam);
            DataTable mjVerDt = new DataTable();
            mjVerDt = responseData1.recordSets["ORS_SynthDtlCd"].ToDataTable();

            foreach (DataRow dr in mjVerDt.Rows)
            {
                string rowDtlCd = string.Empty;
                rowDtlCd = dr["dtlCd"].ToStringDefault();
                mjverlist.Add(rowDtlCd);

            }

            // 문진버전코드 lookup설정
            DataTable mjVersion = mjVerDt;

            repositoryItemLookUpEdit1.SetDataSource(mjVersion, new LookUpBindingInfo()
            {
                DisplayField = "dtlCd", // 해당 컨텐츠 클릭시 보여주는 항목
                ValueField = "dtlCd", // 해당 컨텐츠 클릭시 실제 입력되는 값
                VisibleColumns = new List<LookUpColumn> {
                            new LookUpColumn("dtlCd", "코드"),
                            new LookUpColumn("korNm", "코드명"),
                        }
            });
            repositoryItemLookUpEdit1.DropDownRows = mjVersion.Rows.Count;
            repositoryItemLookUpEdit1.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            repositoryItemLookUpEdit1.AllowFocused = true;

            // 문진질문유형코드 가져오기
            AmcData mjQuestionParam = new AmcData();
            mjQuestionParam.preDatas = new PreDatas();
            PreData mjQuestionsParam = new PreData();
            mjQuestionsParam["synthCd"] = "HstkInqTypCd";

            mjQuestionParam.preDatas.Add("IPD", mjQuestionsParam);      //  상태값변경
            var responseData2 = await CommService.CallServiceAsync("SHMGZ6020R", mjQuestionParam);
            DataTable mjQuestionDt = new DataTable();
            mjQuestionDt = responseData2.recordSets["ORS_SynthDtlCd"].ToDataTable();

            foreach (DataRow dr in mjQuestionDt.Rows)
            {
                string rowDtlCd = string.Empty;
                rowDtlCd = dr["dtlCd"].ToStringDefault();
                mjQuestionlist.Add(rowDtlCd);

            }

            DataTable mjQuestion = mjQuestionDt;

            repositoryItemLookUpEdit3.SetDataSource(mjQuestion, new LookUpBindingInfo()
            {
                DisplayField = "dtlCd", // 해당 컨텐츠 클릭시 보여주는 항목
                ValueField = "dtlCd", // 해당 컨텐츠 클릭시 실제 입력되는 값
                VisibleColumns = new List<LookUpColumn> {
                            new LookUpColumn("dtlCd", "코드"),
                            new LookUpColumn("korNm", "코드명"),
                        }
            });
            repositoryItemLookUpEdit3.DropDownRows = mjQuestion.Rows.Count;
            repositoryItemLookUpEdit3.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;
            repositoryItemLookUpEdit3.AllowFocused = true;
            #endregion

        }

        //2022.12.14 / 박민준 / 서식구분 콤보박스 컨텐츠 선택하는 이벤트
        private void cbseosik_SelectedIndexChanged(object sender, EventArgs e)
        {
            AComboBox cb = sender as AComboBox;
            cbseosik.Text = cb.SelectedItem.ToString();            
            cbseosik.EditValue = cb.EditValue.ToString();
            LookupLcode();
        }

        //2022.12.14 / 박민준 / 유효여부를 선택하는 이벤트
        private void aRadioGroup1_SelectedIndexChanged(object sender, EventArgs e)
        {
            ARadioGroup rg = sender as ARadioGroup;
            radioVal = rg.EditValue.ToStringDefault();
            LookupLcode();

        }

        //2022.12.14 / 박민준 / 추가한 행만 입력할 수있게 하는 이벤트 설정
        private void GrvAllg_ShowingEditor(object sender, CancelEventArgs e)
        {
            #region ...
            var view = sender as GridView;
            string fieldName = view.FocusedColumn.FieldName;

            // 추가된 행은 입력가능
            if (view.GetFocusedDataRow().RowState == DataRowState.Added)
            {
                e.Cancel = false;
            }

            else if (view.GetFocusedDataRow().RowState == DataRowState.Detached)
            {
                e.Cancel = false;
            }

            else //추가된행이 아닐때 기존행.
            {
                // 문진버전코드, 문진유형코드, 문진 질문코드는 수정불가.
                if (fieldName == "hstkVrsnCd")
                {
                    e.Cancel = true;
                }

                else if (fieldName == "hstkTypCd")
                {
                    e.Cancel = true;
                }

                else if (fieldName == "hstkInqryCd")
                {
                    e.Cancel = true;
                }
            } 
            #endregion
        }

        //2022.12.14 / 박민준 / 추가된 행의 각 컬럼의 데이터 형식을 제어하는 이벤트 추가
        private void GridView_ValidatingEditor(object sender, BaseContainerValidateEditorEventArgs e)
        {
            GridView gridView = sender as GridView;

            #region 해당셀을 잘못 입력했을 경우 예외처리(대상최소나이)
            if (gridView.FocusedColumn.FieldName == "trgetMinAge")
            {
                double minAge = 0;

                if (!double.TryParse(e.Value as string, out minAge))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "숫자만 입력해 주시기 바랍니다.");
                }
                else if (minAge <= 0)
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "나이는 1 이상이어야 합니다.");

                }
            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(대상최대나이)
            if (gridView.FocusedColumn.FieldName == "trgetMaxAge")
            {
                double maxAge = 0;

                if (!double.TryParse(e.Value as string, out maxAge))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "숫자만 입력해 주시기 바랍니다.");
                }
                else if (maxAge >= 1000)
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "최대나이는 999 이하여야 합니다.");
                }
            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(문진표문항번호내용)
            if (gridView.FocusedColumn.FieldName == "hstkChrtQuestNoCnte")
            {
                double someDouble = 0;

                if (!double.TryParse(e.Value as string, out someDouble))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "숫자만 입력해 주시기 바랍니다.");
                }

            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(문진질문레벨값)
            if (gridView.FocusedColumn.FieldName == "hstkInqryLvlVal")
            {
                double someDouble = 0;

                if (!double.TryParse(e.Value as string, out someDouble))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "숫자만 입력해 주시기 바랍니다.");
                }

            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(정렬순서)
            if (gridView.FocusedColumn.FieldName == "sortSeq")
            {
                double someDouble = 0;

                if (!double.TryParse(e.Value as string, out someDouble))
                {

                    e.Value = "";
                    AMessageBox.Show("경고", "숫자만 입력해 주시기 바랍니다.");

                }

            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(출력순서일련번호)
            if (gridView.FocusedColumn.FieldName == "outSeqSn")
            {
                double someDouble = 0;

                if (!double.TryParse(e.Value as string, out someDouble))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "숫자만 입력해 주시기 바랍니다.");
                }

            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(문진버전코드)
            if (gridView.FocusedColumn.FieldName == "hstkVrsnCd")
            {
                String[] strArr = new string[mjverlist.Count];

                for (int i = 0; i < mjverlist.Count; i++)
                {
                    strArr[i] = mjverlist[i];
                }

                if (strArr.Contains(e.Value))
                {

                }
                else
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "해당항목의 일치하는 값만 입력해주세요");
                }

            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(문진유형코드)
            if (gridView.FocusedColumn.FieldName == "hstkTypCd")
            {
                String[] strArr = new string[detailCode.Count];

                for (int i = 0; i < detailCode.Count; i++)
                {
                    strArr[i] = detailCode[i];
                }

                if (strArr.Contains(e.Value))
                {

                }
                else
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "해당항목의 일치하는 값만 입력해주세요");
                }
            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(문진질문코드일 경우)
            if (gridView.FocusedColumn.FieldName == "hstkInqryCd")
            {
                PreData data = new PreData();
                //data["hstkTypCd"] = "000";
                data["hstkTypCd"] = cbseosik.EditValue.ToStringDefault();
                data["valdYn"] = radioVal;

                AmcData requestData = new AmcData
                {
                    header = new HeaderData { debug = 0 },
                    preDatas = new PreDatas { { "IPD", data } },
                };

                AmcData responseData = CommService.CallService("SHMGZ7030R", requestData);   //AmcData를 생성후 전달
                DataTable inqueryDt = new DataTable();
                inqueryDt = responseData.recordSets["ORS_ITEM"].ToDataTable();

                List<String> inqueryList = new List<string>();

                foreach (DataRow dr in inqueryDt.Rows)
                {
                    string rowDtlCd = string.Empty;
                    rowDtlCd = dr["hstkInqryCd"].ToStringDefault();
                    inqueryList.Add(rowDtlCd);

                }

                if (inqueryList.Contains(e.Value))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "동일한 문진질문코드가 있습니다.");
                }

            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(문진질문유형코드)
            if (gridView.FocusedColumn.FieldName == "hstkInqryTypCd")
            {
                String[] strArr = new string[mjQuestionlist.Count];

                for (int i = 0; i < mjQuestionlist.Count; i++)
                {
                    strArr[i] = mjQuestionlist[i];
                }

                if (strArr.Contains(e.Value))
                {

                }
                else
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "해당항목의 일치하는 값만 입력해주세요");
                }
            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(유효여부)
            if (gridView.FocusedColumn.FieldName == "valdYn")
            {

                if (!e.Value.ToString().Equals("Y") && !e.Value.ToString().Equals("N"))
                {
                    AMessageBox.ShowInstant(e.Value.ToString());

                    e.Value = "";
                    AMessageBox.Show("경고", "Y 혹은 N을 입력해 주세요");
                }
            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(유효여부)
            if (gridView.FocusedColumn.FieldName == "useSexCd")
            {

                if (!e.Value.Equals("B") && !e.Value.Equals("M") && !e.Value.Equals("F"))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "M 혹은 F 또는 B를 입력해 주세요");
                }
            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(복수응답여부)
            if (gridView.FocusedColumn.FieldName == "plurlRspnYn")
            {
                if (!e.Value.Equals("Y") && !e.Value.Equals("N"))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "Y 혹은 N을 입력해 주세요");
                }
            }
            #endregion

            #region 해당 셀을 잘못 입력했을 경우 예외 처리(실제문진여부)
            if (gridView.FocusedColumn.FieldName == "actulHstkYn")
            {
                if (!e.Value.Equals("Y") && !e.Value.Equals("N"))
                {
                    e.Value = "";
                    AMessageBox.Show("경고", "Y 혹은 N을 입력해 주세요");
                }
            }
            #endregion
        }
        //2022.12.14 / 박민준 / 액션버튼 기능 추가
        private void ActionBtnSetting()
        {
            ActionButtonItems = new List<ActionButtonItem>();

            ActionButtonItems.Add(new ActionButtonItem
            {
                Text = "행추가",
                Idx = 0,
                IsImportant = false,
                Permissions = "W",
                ClickAction = AddRowGridAll,
                Name = "actRowAdd"
            });

            ActionButtonItems.Add(new ActionButtonItem
            {
                Text = "행삭제",
                Idx = 1,
                IsImportant = false,
                Permissions = "W",
                ClickAction = DeleteRowGridAll,
                Name = "actRowDelete"
            });

            ActionButtonItems.Add(new ActionButtonItem
            {
                Text = "저장",
                Idx = 2,
                IsImportant = true,
                Permissions = "W",
                ClickAction = OnSaveAction,
                Name = "actSave"
            });

            actionBtn1.Items = ActionButtonItems;
            actionBtn1.FallDownMenuWidth = 80;

        }

        private void OnSaveAction()
        {
            SaveAllGv();
        }

        private void retrieveBtn_Click(object sender, EventArgs e)
        {
            LookupLcode();
        }

        //2022.12.14 / 박민준 / grv 오른쪽 클릭 이벤트 추가
        private void grdAllg_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right) // 마우스 우클릭시
            {
                //스마트위젯 메뉴생성
                ASmartWidget smartWidget = new ASmartWidget(this);

                smartWidget.AddItem(ASmartWidget.ItemKind.Work, "추가", null, "W", AddRowGridAll);
                smartWidget.AddItem(ASmartWidget.ItemKind.Work, "삭제", null, "W", DeleteRowGridAll);
                smartWidget.AddItem(ASmartWidget.ItemKind.Work, "저장", null, "W", SaveAllGv);
                smartWidget.AddItemBar(ASmartWidget.ItemKind.Work);
                smartWidget.Show();

            }
        }

        private void LookupLcode()
        {
            PreData data = new PreData();
            data["hstkTypCd"] = cbseosik.EditValue.ToStringDefault();
            data["valdYn"] = radioVal;

            AmcData requestData = new AmcData
            {
                header = new HeaderData { debug = 0 },
                preDatas = new PreDatas { { "IPD", data } },
            };

            AmcData responseData = CommService.CallService("SHMGZ7030R", requestData);   //AmcData를 생성후 전달
            grdAllg.DataSource = responseData.recordSets["ORS_ITEM"].ToDataTable();
        }


        // 2022.12.13 / 박민준 / 전체코드 열 추가 기능
        private void AddRowGridAll()
        {
            DataTable dt = (grdAllg.DataSource as DataTable);

            #region 행추가 코드
            if (dt == null || dt.Rows.Count == 0)
            {
                dt = new DataTable();
                dt.Columns.Add("hstkVrsnCd");    // 문진버전코드
                dt.Columns.Add("hstkTypCd");     // 문진유형코드
                dt.Columns.Add("hstkInqryCd");   // 문진질문코드
                dt.Columns.Add("hstkInqryCdCnte"); // 문진질문코드내용
                dt.Columns.Add("valdYn");          // 유효여부
                dt.Columns.Add("useSexCd");        // 사용성별코드
                dt.Columns.Add("trgetMinAge");     // 대상최소나이
                dt.Columns.Add("trgetMaxAge");     // 대상최대나이
                dt.Columns.Add("hstkInqryTypCd"); // 문진질문유형코드
                dt.Columns.Add("plurlRspnYn");    // 복수응답여부
                dt.Columns.Add("rmrk");           // 특기사항  
                dt.Columns.Add("hstkChrtQuestNoCnte"); // 문진표문항번호내용
                dt.Columns.Add("hstkQuestMarkCnte"); // 문진문항효시내용
                dt.Columns.Add("hstkInqryLvlVal"); // 문진질문레벨값
                dt.Columns.Add("actulHstkYn"); // 실제문진여부
                dt.Columns.Add("sortSeq"); // 정렬순서
                dt.Columns.Add("smryHstkInqryCdNm"); // 요약문진질문코드명
                dt.Columns.Add("outSeqSn"); // 출력순서일련번호

                DataRow dr = dt.NewRow();
                dr["hstkVrsnCd"] = "";
                dr["hstkTypCd"] = "";
                dr["hstkInqryCd"] = "";
                dr["hstkInqryCdCnte"] = "";
                dr["valdYn"] = "";
                dr["useSexCd"] = "";
                dr["trgetMinAge"] = "";
                dr["trgetMaxAge"] = "";
                dr["hstkInqryTypCd"] = "";
                dr["plurlRspnYn"] = "";
                dr["rmrk"] = "";
                dr["hstkChrtQuestNoCnte"] = "";
                dr["hstkQuestMarkCnte"] = "";
                dr["hstkInqryLvlVal"] = "";
                dr["actulHstkYn"] = "";
                dr["sortSeq"] = "";
                dr["smryHstkInqryCdNm"] = "";
                dr["outSeqSn"] = "";

                //첫번째 행에 새로운 행추가
                dt.Rows.InsertAt(dr, 0);
                grdAllg.DataSource = dt;
                grdAllg.Focus();
            }
            else
            {
                DataRow dr = dt.NewRow();
                dr["hstkVrsnCd"] = "";
                dr["hstkTypCd"] = "";
                dr["hstkInqryCd"] = "";
                dr["hstkInqryCdCnte"] = "";
                dr["valdYn"] = "";
                dr["useSexCd"] = "";
                dr["trgetMinAge"] = "";
                dr["trgetMaxAge"] = "";
                dr["hstkInqryTypCd"] = "";
                dr["plurlRspnYn"] = "";
                dr["rmrk"] = "";
                dr["hstkChrtQuestNoCnte"] = "";
                dr["hstkQuestMarkCnte"] = "";
                dr["hstkInqryLvlVal"] = "";
                dr["actulHstkYn"] = "";
                dr["sortSeq"] = "";
                dr["smryHstkInqryCdNm"] = "";
                dr["outSeqSn"] = "";

                dt.Rows.InsertAt(dr, grvAllg.FocusedRowHandle + 1);
                grdAllg.DataSource = dt;
                grdAllg.Focus();
            } 
            #endregion
        }

        // 2022.12.01 / 박민준 / 전체코드 열 삭제 기능
        private void DeleteRowGridAll()
        {
            var rows = grvAllg.GetSelectedRows();
            foreach (int row in rows)
            {
                grvAllg.DeleteRow(row);
            }
        }

        // 2022.12.06 / 박민준 / 변경된 데이터 저장
        private void SaveAllGv()
        {
            int rowhandle = this.grvAllg.FocusedRowHandle;
            AmcData amcDataParam = new AmcData();
            amcDataParam.preDatas = new PreDatas();
            amcDataParam.recordSets = new RecordSets();

            var searchParam = new PreData();

            // 판정결과 Grid
            RecordSet rs = GetChangeRecordSetDataAllgrd(grdAllg);

            // 강제로 준 키값
            searchParam["hstkTypCd"] = cbseosik.EditValue.ToStringDefault();
            searchParam["valdYn"] = radioVal;          

            if (rs == null)
            {
                return;
            }

            AMessageBox.Show(this, "저장", "해당 항목을 저장하시겠습니까?", async (result) =>
            {
                amcDataParam.preDatas.Add("IPD", searchParam);
                amcDataParam.recordSets.Add("IRS", rs);

                if (result.ResultStatus == DialogResult.Yes)
                {
                    AMessageBox.Show("저장확인", "저장을 완료 하였습니다.", AMessageType.Information);
                    var responseData = await CommService.CallServiceAsync("SHMGZ7030T", amcDataParam, this, LoadingType.BlockSave);

                    // 성공인 경우
                    DataTable resultdata = responseData.recordSets["ORS_SynthDtlCd"].ToDataTable(false);
                    resultdata.AcceptChanges();
                    grdAllg.DataSource = resultdata;
                }
                else
                {
                    AMessageBox.Show("저장취소", "저장을 취소 하였습니다.", AMessageType.Information);
                }

            }, AMessageType.OK, MessageBoxButtons.YesNo);

        }

        private RecordSet GetChangeRecordSetDataAllgrd(AGridControl agrid)
        {
            RecordSet rs = null;
            DataTable origintbl = (agrid.DataSource as DataTable);

            //변경된 데이터
            DataTable changeTable = (agrid.DataSource as DataTable).GetChanges();

            if (changeTable == null)
            {
                return null;
            }

            rs = changeTable.ToRecordSet(true);

            return rs;

        }
    }
}


controller


package kr.amc.amis.hm.gz.cd.rest;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import kr.amc.amil.amcmessage.AMCData;
import kr.amc.amil.amcmessage.AMCDataFactory;
import kr.amc.amil.amcmessage.annotation.PreDataParam;
import kr.amc.amil.amcmessage.annotation.RecordSetParam;
import kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO;
import kr.amc.amis.hm.gz.cd.service.HeSatinItemMangeService;

@Controller
public class HeSatinItemMangeController {
	
	@Autowired
	HeSatinItemMangeService heSatinItemMangeService;
	

	@RequestMapping("SHMGZ7030R")
	@ResponseBody
	public AMCData retrieveSatinItemManageList(@RequestBody AMCData amcData, @PreDataParam("IPD") HeSatinItemMangeDTO param)
			throws Exception {

		List<HeSatinItemMangeDTO> resultList = heSatinItemMangeService.retrieveSatinItemManageList(param);
		AMCData resData = AMCDataFactory.createForResponse();
		resData.putRecordSet("ORS_ITEM", resultList);
		return resData;
	}
	
	 @RequestMapping("SHMGZ7030T")
	  @ResponseBody
	  public AMCData saveSatinItemManageList(@RequestBody AMCData amcData, @RecordSetParam("IRS") List<HeSatinItemMangeDTO> satinItemList, @PreDataParam("IPD") HeSatinItemMangeDTO satinItemBasic) throws Exception {
	      // TODO
	      List<HeSatinItemMangeDTO> resultList = heSatinItemMangeService.saveSatinItemManageList(satinItemList, satinItemBasic);
	      AMCData resData = AMCDataFactory.createForResponse();
	      resData.putRecordSet("ORS_SynthDtlCd", resultList);
	      return resData;
	  }

}

Service


package kr.amc.amis.hm.gz.cd.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import kr.amc.amil.context.MessageUtil;
import kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO;
import kr.amc.amis.hm.gz.cd.store.mapper.HeSatinItemManageMapper;

@Service
public class HeSatinItemMangeService {

	@Autowired
	HeSatinItemManageMapper heSatinItemManageMapper;

	/**
	 * 공단검진 아이템 관리 조회
	 * 
	 * @param param
	 * @return
	 */
	@Transactional(rollbackFor = Exception.class)
	public List<HeSatinItemMangeDTO> retrieveSatinItemManageList(HeSatinItemMangeDTO param) {

		List<HeSatinItemMangeDTO> resultList = heSatinItemManageMapper.retrieveSatinItemManageList(param);
		MessageUtil.success("HM.success.retrieve");
		return resultList;
	}

	/**
	 * 공단검진 아이템 관리 저장
	 * 
	 * @param param
	 * @return
	 */

	@Transactional(rollbackFor = Exception.class)
	public List<HeSatinItemMangeDTO> saveSatinItemManageList(List<HeSatinItemMangeDTO> satinItemList,
			HeSatinItemMangeDTO satinItemBasic) {

		for (HeSatinItemMangeDTO heSatinItemMangeDTO : satinItemList) {

			/* IF 처리구분 = 'I' THEN */
			if ("I".equals(heSatinItemMangeDTO.getNiud())) {

				// List<HechkrsltregisterDTO> existList =
				// hechkrsltregisterMapper.retrievechkrsltregisterList(hechkrsltBasic);
				// hechkrsltregisterDTO.setRsltVal(hechkrsltBasic.getRsltVal());

				List<HeSatinItemMangeDTO> lHeSatinItemMangeDTO = heSatinItemManageMapper
						.retrieveSatinItemManageList(heSatinItemMangeDTO);

				if (lHeSatinItemMangeDTO.size() < 1) {

					heSatinItemManageMapper.registerSatinItemManageList(heSatinItemMangeDTO);
				}

				else {
					heSatinItemManageMapper.updateSatinItemManageList(heSatinItemMangeDTO);
				}

				heSatinItemManageMapper.registerSatinItemManageList(heSatinItemMangeDTO);

			}
			/* IF 처리구분 = 'U' THEN */
			else if ("U".equals(heSatinItemMangeDTO.getNiud())) {

				heSatinItemManageMapper.updateSatinItemManageList(heSatinItemMangeDTO);

			}
			/* IF 처리구분 = 'D' THEN */
			else if ("D".equals(heSatinItemMangeDTO.getNiud())) {

				heSatinItemManageMapper.deleteSatinItemManageList(heSatinItemMangeDTO);
			}
		}

		List<HeSatinItemMangeDTO> resultList = heSatinItemManageMapper.retrieveSatinItemManageList(satinItemBasic);

		MessageUtil.success("HM.success.save");

		return resultList;

	}

}

Mapper.java


package kr.amc.amis.hm.gz.cd.store.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO;


@Mapper
public interface HeSatinItemManageMapper {
	
	/**
	 * 공단문진 아이템 관리 매핑
	 * @param param
	 * @return
	 */
	List<HeSatinItemMangeDTO> retrieveSatinItemManageList(HeSatinItemMangeDTO param);
	
	int registerSatinItemManageList(HeSatinItemMangeDTO param);

	int updateSatinItemManageList(HeSatinItemMangeDTO param);

	int deleteSatinItemManageList(HeSatinItemMangeDTO param);

}

Mapper.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.amc.amis.hm.gz.cd.store.mapper.HeSatinItemManageMapper">
<!-- 공단항목관리 쿼리문. 
 2022.12.13 박민준
 -->
 
 <select id ="retrieveSatinItemManageList" parameterType="kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO"  resultType="kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO">
     <![CDATA[
            SELECT  /*SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HeSatinItemManageMapper.retrieveSatinItemManageList*/
                    
                     
                     HSTK_VRSN_CD               -- 문진버전코드   
                   , HSTK_TYP_CD                -- 문진유형코드 
                   , HSTK_INQRY_CD              -- 문진질문코드
                   , HSTK_INQRY_CD_CNTE         -- 문진질문코드내용 
                   , VALD_YN                    -- 유효여부
                   , USE_SEX_CD                 -- 사용성별코드   
                   , TRGET_MIN_AGE              -- 대상최소나이
                   , TRGET_MAX_AGE              -- 대상최대나이
                   , HSTK_INQRY_TYP_CD          -- 문진질문유형코드    
                   , PLURL_RSPN_YN              -- 복수응답여부
                   , RMRK                       -- 특기사항
                   , HSTK_CHRT_QUEST_NO_CNTE    -- 문진표문항번호내용        
                   , HSTK_QUEST_MARK_CNTE       -- 문진문항효시내용   
                   , HSTK_INQRY_LVL_VAL         -- 문진질문레벨값
                   , ACTUL_HSTK_YN              -- 실제문진여부
                   , SORT_SEQ                   -- 정렬순서
                   , SMRY_HSTK_INQRY_CD_NM      -- 요약문진질문코드명
                   , OUT_SEQ_SN                 -- 출력순서일련번호
                           
             FROM    GRMJMMEPQ                                         -- 공단검진 문항표 아이템관리 테이블
             
           ]]>
         <choose>           
                
                <when test ="hstkTypCd != null and hstkTypCd != '' and valdYn != null and valdYn != ''">
                <![CDATA[
                
                WHERE    HSTK_TYP_CD       =      #{hstkTypCd}
                AND VALD_YN           =      #{valdYn}  
                
                ]]> 
                </when>
               
            <otherwise>
                  <if test="hstkTypCd != null and hstkTypCd != ''">
                <![CDATA[
                
                WHERE    HSTK_TYP_CD       =      #{hstkTypCd}                     
                
                ]]>                 
                </if>
                
                <if test ="valdYn != null and valdYn != ''">
                <![CDATA[
                
                WHERE VALD_YN           =      #{valdYn}  
                
                ]]> 
                </if>
                  
            </otherwise>
        </choose>
</select>    
        
 <insert id="registerSatinItemManageList" parameterType="kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO">
     <![CDATA[
           INSERT /* SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HeSatinItemManageMapper.registerSatinItemManageList */
             INTO GRMJMMEPQ 
                (
                     HSTK_VRSN_CD               -- 문진버전코드   
                   , HSTK_TYP_CD                -- 문진유형코드 
                   , HSTK_INQRY_CD              -- 문진질문코드
                   , HSTK_INQRY_CD_CNTE         -- 문진질문코드내용 
                   , VALD_YN                    -- 유효여부
                   , USE_SEX_CD                 -- 사용성별코드   
                   , TRGET_MIN_AGE              -- 대상최소나이
                   , TRGET_MAX_AGE              -- 대상최대나이
                   , HSTK_INQRY_TYP_CD          -- 문진질문유형코드    
                   , PLURL_RSPN_YN              -- 복수응답여부
                   , RMRK                       -- 특기사항
                   , HSTK_CHRT_QUEST_NO_CNTE    -- 문진표문항번호내용        
                   , HSTK_QUEST_MARK_CNTE       -- 문진문항효시내용   
                   , HSTK_INQRY_LVL_VAL         -- 문진질문레벨값
                   , ACTUL_HSTK_YN              -- 실제문진여부
                   , SORT_SEQ                   -- 정렬순서
                   , SMRY_HSTK_INQRY_CD_NM      -- 요약문진질문코드명
                   , OUT_SEQ_SN                 -- 출력순서일련번호
                   , FRST_ENTR_EMPNO
                   , FRST_ENTR_DTM
                   , FINL_UPID_EMPNO
                   , FINL_UPDT_DTM
                  
                )
           VALUES
                (
                    #{hstkVrsnCd}
                  , #{hstkTypCd}
                  , #{hstkInqryCd} 
                  , #{hstkInqryCdCnte} 
                  , #{valdYn} 
                  , #{useSexCd} 
                  , #{trgetMinAge} 
                  , #{trgetMaxAge} 
                  , #{hstkInqryTypCd} 
                  , #{plurlRspnYn} 
                  , #{rmrk} 
                  , #{hstkChrtQuestNoCnte} 
                  , #{hstkQuestMarkCnte} 
                  , #{hstkInqryLvlVal} 
                  , #{actulHstkYn} 
                  , #{sortSeq} 
                  , #{smryHstkInqryCdNm} 
                  , #{outSeqSn}  
                  , #{frstEntrEmpno}
                  , SYSDATE                  
                  , #{finlUpidEmpno}
                  , SYSDATE                 
                  
                )
        ]]>
    </insert>
    
    
    <update id="updateSatinItemManageList" parameterType="kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO">
     <![CDATA[
           UPDATE GRMJMMEPQ  /* SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HeSatinItemManageMapper.updateSatinItemManageList */
             SET                                
                
                 HSTK_INQRY_CD_CNTE =#{hstkInqryCdCnte}
               , VALD_YN =#{valdYn}
               , USE_SEX_CD =#{useSexCd}
               , TRGET_MIN_AGE =#{trgetMinAge}
               , TRGET_MAX_AGE =#{trgetMaxAge}
               , HSTK_INQRY_TYP_CD =#{hstkInqryTypCd}
               , PLURL_RSPN_YN =#{plurlRspnYn}
               , RMRK =#{rmrk}
               , HSTK_CHRT_QUEST_NO_CNTE =#{hstkChrtQuestNoCnte}
               , HSTK_QUEST_MARK_CNTE =#{hstkQuestMarkCnte}
               , HSTK_INQRY_LVL_VAL =#{hstkInqryLvlVal}
               , ACTUL_HSTK_YN  =#{actulHstkYn}
               , SORT_SEQ =#{sortSeq}
               , SMRY_HSTK_INQRY_CD_NM =#{smryHstkInqryCdNm}
               , OUT_SEQ_SN =#{outSeqSn}
               
               WHERE HSTK_VRSN_CD  = #{hstkVrsnCd}
               AND HSTK_TYP_CD = #{hstkTypCd}
               AND HSTK_INQRY_CD  = #{hstkInqryCd} 
               
    
        ]]>
    </update> 
    
     
    
 <delete id="deleteSatinItemManageList" parameterType="kr.amc.amis.hm.gz.cd.entity.HeSatinItemMangeDTO">
     <![CDATA[

           DELETE FROM GRMJMMEPQ  /* SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HeSatinItemManageMapper.deleteSatinItemManageList */        
                
           WHERE HSTK_VRSN_CD  = #{hstkVrsnCd}
           AND HSTK_TYP_CD = #{hstkTypCd}
           AND HSTK_INQRY_CD  = #{hstkInqryCd} 
           
    
        ]]>
 </delete>   
    
 </mapper>
 
profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글