2022.12.27(rs209)

SaGo_MunGcci·2022년 12월 27일
0

C#

목록 보기
22/27

/*=====================================================================================
프로젝트명 : AMIS3.0
프로그램ID : VHMGXRS209S
업  무  명 : 보건증건강진단결과서[건강검진-공단]
최초작성일 : 2022.12.16
개  발  자 : 박민준
참고사항   : 
변경이력   : 
====================================================================================*/

using AMIS3.HM.ZZ;
using AMIS3.UIFramework;
using AMIS3.UIFramework.DataModel;
using AMIS3.UIFramework.FxExtension;
using AMIS3.UIFramework.UI;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using AMIS3.UIFramework.Security;
using System.Threading.Tasks;
using System.Drawing;
using AMIS3.HM.ZZ.ZZLIB003.Mvc.Utils;
using AMIS3.HM.ZZ.ZZLIB003.Controls;

namespace AMIS3.HM.GX.RS209
{
    public partial class VHMGXRS209S : ScreenBase, ISmartToolbar
    {
        public List<ActionButtonItem> ActionButtonItems { get; set; } = new List<ActionButtonItem>();

        // 2022.12.24 / 박민준 / pannel을 이용한 SetSvDataTable, GetData 하기위한 전역변수 추가
        DataTable svDt = null;
        private String strFormCd = "SH20220101";       // 서식코드
        private String strFormVerCd = "SH2022010101";  // 서식버전 코드
        String patNo = "";                             // 병원등록번호             
        String heDt = "";                              // 일자 
        long vistSn = 0;                               // 방문횟수
        int chkCnt = 0;                                // 전체선택시 전역변수
        String judgDt = "";                            // 판정일자  
        String doctorId = "";                          // 의사아이디
        String doctorNm = "";                          // 의사명
        String doclicnsNo = "";                        // 의사면허번호
        private String strJudgDivCd = "H";             // 상담판정구분 : D(운전면허적성검사)        
        UserT UserInfo = null;

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

        private void SetEvent()
        {
            this.Load += new EventHandler(eFormLoad);

        }


        private void SetControl()
        {
            ActionBtnSetting();
        }

        private void eFormLoad(object sender, EventArgs e)
        {
            // 의사 선생님 정보 받는 곳
            UserInfo = SecurityWrapper.Instance.SecurityService.GetUserInfo(this);
            // 2022.12.23 / 박민준 / 이상룡 의사선생님(D070201)
            GetDoctorLicnsNo cs = new GetDoctorLicnsNo("D070201");
            if (cs != null)
            {
                doclicnsNo = cs.GetLicnsNo();       // 의사면허번호
                doctorId = cs.GetDoctorId();        // 의사아이디
                doctorNm = cs.GetDoctorNm();        // 의사명

                lbldocNm.Text = doctorNm.ToStringDefault();
                lbldoclicnsNo.Text = doclicnsNo.ToStringDefault();
            }

            tepatno.ReadOnly = true;
            tepatnm.ReadOnly = true;
            tergno.ReadOnly = true;
            techkdt.ReadOnly = true;

            Today();
        }

        // 2022.12.26 / 박민준 / 액션버튼 생성
        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.26 / 박민준 / 저장버튼 이벤트
        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);
                pn1.GetData(ref svDt, "itemItemCd", "itemResultVal");

                amcDataParam.recordSets.Add("IRS", svDt.ToRecordSet(true));
                amcDataParam.preDatas.Add("IPD", sParam);      //  상태값변경

                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.26 / 박민준 / 날짜 출력 함수 생성
        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;

            // dualCalander에 출력하는 코드
            DateTime today = DateTime.Today;
            DateTime first_day = today.AddDays(1 - today.Day); // 매달 1일
            dchedt.FromDateTime = first_day;
            dchedt.ToDateTime = today; 
            #endregion
        }

        // 2022.12.26 / 박민준 / 조회 이벤트 실행 함수
        private async void retrieveBtn_Click(object sender, EventArgs e)
        {
            await SvCallLoadExamineeList();
        }

        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.26 / 박민준 / 그리드뷰 컬럼및 셀 제어
        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();
            vistSn = grvAllv.GetFocusedDataRow()["vistSn"].ToStringDefault("0").ToLong();
            tepatnm.Text = grvAllv.GetFocusedDataRow()["patNm"].ToString();
            tergno.Text = grvAllv.GetFocusedDataRow()["rgno"].ToString();

            String chkdt = grvAllv.GetFocusedDataRow()["heDt"].ToString().Replace("-", "");
            techkdt.Text = DateTime.ParseExact(chkdt, "yyyyMMdd", null).ToString("yyyy년 MM월 dd일");

            tedoclicnsNo.Text = doclicnsNo.ToStringDefault();


            this.grvAllv.Appearance.FocusedRow.BackColor = Color.AliceBlue;
            this.grvAllv.Appearance.FocusedCell.BackColor = Color.AliceBlue;

            tepatno.Text = patNo;
            lblpatno.Text = patNo;

            ExamineeData(); 
            #endregion
        }

        // 2022.12.21 / 박민준 / 그리드뷰 클릭시 수검자정보 검사서에 출력
        private void grdAllg_Click(object sender, EventArgs e)
        {
            #region ...
            patNo = grvAllv.GetFocusedDataRow()["patno"].ToString();
            heDt = grvAllv.GetFocusedDataRow()["heDt"].ToString();
            vistSn = grvAllv.GetFocusedDataRow()["vistSn"].ToStringDefault("0").ToLong();
            tepatnm.Text = grvAllv.GetFocusedDataRow()["patNm"].ToString();
            tergno.Text = grvAllv.GetFocusedDataRow()["rgno"].ToString();

            String chkdt = grvAllv.GetFocusedDataRow()["heDt"].ToString().Replace("-", "");
            techkdt.Text = DateTime.ParseExact(chkdt, "yyyyMMdd", null).ToString("yyyy년 MM월 dd일");

            tedoclicnsNo.Text = doclicnsNo.ToStringDefault();


            this.grvAllv.Appearance.FocusedRow.BackColor = Color.AliceBlue;
            this.grvAllv.Appearance.FocusedCell.BackColor = Color.AliceBlue;

            tepatno.Text = patNo;
            lblpatno.Text = patNo;

            ExamineeData();
            #endregion
        }


        // 2022.12.26 / 박민준 / 아이템별 데이터 저장
        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;

                teissue.Text = noStr;
                teshop.Text = noStr;
                tersltjang.Text = noStr;
                terslttuber.Text = noStr;
                tersltskin.Text = noStr;
                techkrslt.Text = noStr;
            }
            else
            {
                tersltjang.Text = someData[0];
                terslttuber.Text = someData[1];
                tersltskin.Text = someData[2];
                techkrslt.Text = someData[3];
                teissue.Text = someData[6];
                teshop.Text = someData[7];
            } 
            #endregion
        }
        // 2022.12.26 / 박민준 / 수검자 리스트 전체 선택
        private void chkAll_CheckedChanged(object sender, EventArgs e)
        {
            #region ...
            chkCnt++;

            if (chkCnt % 2 != 0)
            {
                grvAllv.SelectAll();
            }
            else
            {
                grvAllv.ClearSelection();
            } 
            #endregion
        }

        // 2022.12.26 / 박민준 / 리포트 출력하기 버튼이벤트 
        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.26 / 박민준 / 리포트 출력하기  
        /// <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("patno", dr["patno"].ToStringDefault());
                bindData.Add("rgno", dr["rgno"].ToStringDefault());
                bindData.Add("docNm", doctorNm.ToStringDefault());
                bindData.Add("year", lblyear.Text.ToStringDefault());
                bindData.Add("month", lblmonth.Text.ToStringDefault());
                bindData.Add("day", lblday.Text.ToStringDefault());

                InitReport("VHMGXRS209R01.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
        }


        // 2022.12.26 / 박민준 / 서식아이템 예외처리
        private Boolean validate()
        {
            #region ...
            bool result = true;

            if (teissue.Text.ToString().Equals("") || teissue.Text.ToString().Equals(null))
            {
                AMessageBox.Show("경고", "발급번호를 입력해주세요.");

                return result = false;
            }


            if (teshop.Text.ToString().Equals("") || teshop.Text.ToString().Equals(null))
            {
                AMessageBox.Show("경고", "업소명을 입력해주세요.");

                return result = false;
            }


            if (tersltjang.Text.ToString().Equals("") || tersltjang.Text.ToString().Equals(null))
            {
                AMessageBox.Show("경고", "장티푸스 검사 결과를 입력해주세요.");

                return result = false;
            }


            if (terslttuber.Text.ToString().Equals("") || terslttuber.Text.ToString().Equals(null))
            {
                AMessageBox.Show("경고", "결핵 검사 결과를 입력해주세요.");

                return result = false;
            }


            if (tersltskin.Text.ToString().Equals("") || tersltskin.Text.ToString().Equals(null))
            {
                AMessageBox.Show("경고", "전염성 피부질환 검사 결과를 입력해주세요.");

                return result = false;
            }


            if (techkrslt.Text.ToString().Equals("") || techkrslt.Text.ToString().Equals(null))
            {
                AMessageBox.Show("경고", "진찰소견을 입력해주세요.");

                return result = false;
            }

            return result; 
            #endregion
        }

       
    }
}


서버단 수검자 조회
controller


/**
	 * 수진자목록조회(공무원채용신체검사/항공신체검사)
	 * @param amcData
	 * @param param
	 * @return
	 * @throws Exception
	 */
    @RequestMapping("SHMGX5000R")
    @ResponseBody
    public AMCData retrieveSugumList(@RequestBody AMCData amcData, @PreDataParam("IPD") HePOfficerHeathCheckDTO param) throws Exception {
        // 수진자 목록 조회
    	List<HePOfficerHeathCheckDTO> resultList = hePOfficerHeathCheckManageProcService.retrieveSugumList(param);
        AMCData resData = AMCDataFactory.createForResponse();
        resData.putRecordSet("ORS", resultList);

        return resData;
    }

service



/**
     * 수검자조회(공무원채용신체검사/항공신체검사)
     * @param param
     * @return
     */
	@Transactional(rollbackFor = Exception.class)
    public List<HePOfficerHeathCheckDTO> retrieveSugumList(HePOfficerHeathCheckDTO param){

        List<HePOfficerHeathCheckDTO> resultList =  hePOfficerHeathCheckMapper.retrieveSugumList(param);
        MessageUtil.success("HM.success.retrieve");

        return resultList;
    }

mapper.java


@Mapper
public interface HePOfficerHeathCheckMapper {
	
	/**
	 * 수검자조회
	 * @param param
	 * @return
	 */
     List<HePOfficerHeathCheckDTO> retrieveSugumList(HePOfficerHeathCheckDTO param);
     
     }

mapper.xml

<!-- 수검자조회 -->
    <select  id ="retrieveSugumList" parameterType="kr.amc.amis.hm.gx.rs.entity.HePOfficerHeathCheckDTO" resultType="kr.amc.amis.hm.gx.rs.entity.HePOfficerHeathCheckDTO">
        <![CDATA[
           SELECT  /*SQLID = kr.amc.amis.hm.gx.rs.store.mapper.HePOfficerHeathCheckMapper.retrieveSugumList*/
                    GM.HE_DT                                                                                  -- 검진일자                                                      
                  , GM.PATNO                                                                                  -- 병원등록번호
                  , WI.PAT_NM                                                                                 -- 환자명
                  , GM.VIST_SN                                                                                -- 방문차수
                  , MAX(WI.RGNO)                                                          AS RGNO             -- 주민번호
                  , MAX(WI.SEX_CD || '/' || FN_WP_GET_PAT_AGE(WI.PAT_BIRTHDT, GM.HE_DT))  AS SEXAGE
                  , MAX(TO_CHAR(TO_DATE(WI.PAT_BIRTHDT, 'YYYY-MM-DD'), 'YYYY-MM-DD'))     AS PAT_BIRTHDT
                  , MAX(GC.JUDG_DT)                                                       AS JUDG_DT           -- 판정일자
                  , MAX(GC.RSLT_PRNT_DT)                                                  AS RSLT_PRNT_DT      -- 결과지출력일자
                  , MAX(GV.HE_BASIS_PKG_CD)                                               AS HE_BASIS_PKG_CD   -- 기초패키지코드   
                  , MAX(WI.RPRN_TELNO)                                                    AS TELNO             -- 전화번호
                  , MAX(WI.ZIPCD_ADDR||' '||WI.DTL_ADDR)                                  AS ADDR              -- 주소
            FROM    GRRVMOTPT GM                                   -- 건강검진예약기본
                  , GRRVRMTCH GV                                   -- 건강검진맞춤세트내역
                  , V_WPPIMINFO WI                                 -- 환자기본
                  , GMCRMPCHK GC                                   -- 수검자검진종류별검진진행상태관리
             WHERE  GM.PATNO     = GV.PATNO(+)
               AND  GM.HE_DT     = GV.HE_DT(+)
               AND  GM.VIST_SN   = GV.VIST_SN(+)
               AND  GM.PATNO     = GC.PATNO(+)
               AND  GM.HE_DT     = GC.HE_DT(+)
               AND  GM.VIST_SN   = GC.VIST_SN(+)
               AND  GV.HE_BASIS_PKG_CD LIKE #{heBasisPkgCd,  jdbcType=VARCHAR}||'%'                -- 공무원 채용신체검사패키지                 
               AND  GM.MDDP_CD   = 'GHS'                                                           -- 일반건진 (GHS)
               AND  GM.HE_STAT_CD NOT IN ('7','9')                                                -- 부도, 취소제외
               AND  GM.PATNO     = WI.PATNO     
               AND  GM.HE_DT BETWEEN #{startDt} AND #{endDt}
               AND  GC.HE_FORM_DIV_CD(+)          =  #{heFormDivCd,    jdbcType=VARCHAR}  
         ]]>
         <if test ="gubun != null and 'PJY'.equals(gubun)">
               AND   GC.HE_JGMT_YN = 'Y'                              -- 판정완료  
         </if>    
         <if test = "gubun != null and 'PJN'.equals(gubun)">
               AND  GC.HE_JGMT_YN IS NULL                             -- 미판정
         </if>      
         <if test = "gubun != null and 'PRY'.equals(gubun)">
               AND  GC.HE_INFORM_YN = 'Y'                             -- 출력완료 
         </if> 
         <if test = "gubun != null and 'PRN'.equals(gubun)">
               AND  GC.HE_INFORM_YN IS NULL                           -- 미출력
         </if>                  
      <![CDATA[          
            GROUP BY
                    GM.HE_DT
                  , GM.PATNO
                  , GM.VIST_SN
                  , WI.PAT_NM
        ]]>        
    </select>

서버단 crud
controller


/**
     * 아이템데이터 저장 및 수정
     * @param amcData
     * @param param
     * @return
     * @throws Exception
     */
    @RequestMapping("SHMGX5002I")
    @ResponseBody
    public AMCData registerItemData(@RequestBody AMCData amcData, @RecordSetParam("IRS") List<HePOfficerHeathCheckDTO> paramList, @PreDataParam("IPD") HePOfficerHeathCheckDTO param) throws Exception {
        hePOfficerHeathCheckManageProcService.registerItemData(paramList, param);       // 아에팀저장        
        AMCData resData = AMCDataFactory.createForResponse();
        return resData;
    }     

service


/**
	 * 아이템데이터 저장 및 수정
	 * @param param
	 * @return
	 */
	
	@Transactional(rollbackFor = Exception.class)
    public int registerItemData(List<HePOfficerHeathCheckDTO> paramList, HePOfficerHeathCheckDTO param){

		int result =0;
		if(paramList.size()>0) {
			for (HePOfficerHeathCheckDTO vo : paramList) {

				vo.setFinlUpidEmpno(ContextUtil.getUserId());
				vo.setFrstEntrEmpno(ContextUtil.getUserId());
				result =+  hePOfficerHeathCheckMapper.registerItemData(vo);    //아이템저장
			}
		}		
        
        hePOfficerHeathCheckMapper.registerGumJinState(param);   //상태저장
        
		if (result > 0) {
			MessageUtil.success("HM.success.save");
		} else {
			MessageUtil.fail("HM.info.save_none");
		}
        return result;
    }
	

mapper.java


@Mapper
public interface HePOfficerHeathCheckMapper {
	
	/**
	 * 수검자조회
	 * @param param
	 * @return
	 */
     List<HePOfficerHeathCheckDTO> retrieveSugumList(HePOfficerHeathCheckDTO param);
     
     /**
      * 수검자검진진행상태등록
      * @param param
      * @return
      */
     int registerGumJinState(HePOfficerHeathCheckDTO param);
     
     /**
      * 아이템데이터 저장 및 수정
      * @param param
      * @return
      */
     int registerItemData(HePOfficerHeathCheckDTO param);
     
     
      /**
      * 아이템조회
      * @param param
      * @return
      */
     List<HePOfficerHeathCheckDTO>retrieveItemAnswerList(HePOfficerHeathCheckDTO param);


}

mapper.xml

<!-- ITEM 변경데이터 저장  -->
    <insert id="registerItemData" parameterType="kr.amc.amis.hm.gx.rs.entity.HePOfficerHeathCheckDTO" >
        <![CDATA[
            MERGE     /* SQLID=kr.amc.amis.hm.gx.rs.store.mapper.HePOfficerHeathCheckMapper.registerCunslData */
            INTO GCCSMGCSL 
            USING DUAL
            ON ( 
                      PATNO             = #{patno, jdbcType=VARCHAR}
                  AND VIST_SN           = #{vistSn, jdbcType=VARCHAR}
                  AND HE_DT             = #{heDt, jdbcType=VARCHAR}
                  AND HE_FORM_DIV_CD    = #{heFormDivCd}                                -- 공무원 채용신체검사(O)
                  AND FORM_CD           = #{formCd,     jdbcType=VARCHAR}
                  AND FORM_VER_CD       = #{formVerCd,  jdbcType=VARCHAR}
                  AND ITEM_ITEM_CD      = #{itemItemCd, jdbcType=VARCHAR}
                 )
            WHEN MATCHED THEN
                 UPDATE 
                 SET 
                            ITEM_RESULT_VAL     = #{itemResultVal,  jdbcType=VARCHAR}
                          , FINL_UPID_EMPNO     = #{finlUpidEmpno,  jdbcType=VARCHAR}
                          , FINL_UPDT_DTM       = SYSDATE
            WHEN NOT MATCHED THEN
                 INSERT 
                 (
                        PATNO
                      , VIST_SN
                      , HE_DT
                      , HE_FORM_DIV_CD
                      , FORM_CD
                      , FORM_VER_CD
                      , ITEM_ITEM_CD
                      , ITEM_RESULT_VAL 
                      , FRST_ENTR_EMPNO
                      , FRST_ENTR_DTM
                      , FINL_UPID_EMPNO
                      , FINL_UPDT_DTM
                 )                 
                 VALUES 
                 (
                        #{patno ,         jdbcType=VARCHAR}
                      , #{vistSn} 
                      , #{heDt,           jdbcType=VARCHAR}
                      , #{heFormDivCd,    jdbcType=VARCHAR}                                          -- 공무원 채용신체검사
                      , #{formCd,         jdbcType=VARCHAR}
                      , #{formVerCd,      jdbcType=VARCHAR}
                      , #{itemItemCd,     jdbcType=VARCHAR}
                      , #{itemResultVal,  jdbcType=VARCHAR}
                      , #{frstEntrEmpno,  jdbcType=VARCHAR}
                      , SYSDATE
                      , #{finlUpidEmpno,  jdbcType=VARCHAR}
                      , SYSDATE
                 )
               ]]>
    </insert>  

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

0개의 댓글