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>