rv501
// 상단의사 선생님 정보받는 곳 CSDR_LICNS_NO
UserInfo = SecurityWrapper.Instance.SecurityService.GetUserInfo(this);
if (!dr["csdrLicnsNo"].ToStringDefault().Equals(null) && !dr["csdrLicnsNo"].ToStringDefault().Equals(""))
{
GetDoctorInFormationFromDoctorLicnsNo cs = new GetDoctorInFormationFromDoctorLicnsNo(dr["csdrLicnsNo"].ToStringDefault());
if (cs != null)
{
String doclicnsNo = cs.GetLicnsNo(); // 의사면허번호
String doctorId = cs.GetDoctorId(); // 의사아이디
String doctorNm = cs.GetDoctorNm(); // 의사명
dr["csdrLicnsNo"] = doctorNm;
}
}
else
{
dr["csdrLicnsNo"] = "";
}
공통(GZCDCTSCD)
/// <summary>
/// 의사면허번호를 이용한 의사정보 가져오기
/// 2023.01.02 박민준
/// </summary>
public class GetDoctorInFormationFromDoctorLicnsNo
{
ICommunicationService CommService = CommSv.GetCommService();
string doctorLicns = ""; // 의사면허번호
string doctorNm = ""; // 의사명
string doctorId = ""; // 의사아이디
PreData dtData;
PreData param = null;
public GetDoctorInFormationFromDoctorLicnsNo(string quafiLicnsNo)
{
PreData prDt = new PreData();
prDt["quafiLicnsNo"] = quafiLicnsNo;
AmcData requestData = new AmcData
{
preDatas = new PreDatas { { "IPD", prDt } }
};
AmcData rsAD = CommService.CallService("SHMGZ6310R", requestData, true);
//ZZ.Comm.CallService(CommService, "SHMGZ6300R", requestData);
if (rsAD.IsSuccess)
{
if (rsAD.preDatas["OPD"] != null)
{
doctorLicns = rsAD.preDatas["OPD"]["quafiLicnsNo"].ToStringDefault();
doctorNm = rsAD.preDatas["OPD"]["doctorNm"].ToStringDefault();
doctorId = rsAD.preDatas["OPD"]["empno"].ToStringDefault();
}
}
}
public String GetLicnsNo()
{
return doctorLicns;
}
public String GetDoctorNm()
{
return doctorNm;
}
public String GetDoctorId()
{
return doctorId;
}
}
공통은 추가 혹은 수정후 빌드하고 다시 amis종료후 빌드확인후 확인되면 커밋후 젠킨스 빌드
DTO
package kr.amc.amis.hm.gz.cd.entity;
import kr.amc.amil.message.dto.AbstractDTO;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class HeDoctorInfoDTO extends AbstractDTO {
/**
* 의사면허번호
*/
private String quafiLicnsNo;
/**
* 의사명
*/
private String doctorNm;
/**
* 의사아이디
*/
private String empno;
}
Controller
/**
* 의사면허번호를 이용한 의사정보
*/
@RequestMapping("SHMGZ6310R")
@ResponseBody
public AMCData retrieveDoctorInFormationFromDoctorLicnsNo(@RequestBody AMCData amcData, @PreDataParam(preDataKey = "IPD", elementKey = "quafiLicnsNo") String param) throws Exception {
HeDoctorInfoDTO resultDTO = heSynthCdManageProcService.retrieveDoctorInFormationFromDoctorLicnsNo(param);
AMCData resData = AMCDataFactory.createForResponse();
resData.putPreData("OPD", resultDTO);
return resData;
}
내가 자주 보던 형식은
@PreDataParam("IPD") HeSynthUfsentCdDTO param
형식이었고
좀더 복잡하다면
@RecordSetParam("IRS") List<SynthDtlCdDTO> list, @PreDataParam("IPD") HeSynthUfsentCdDTO param
이런 형식이었다.
근데
@PreDataParam(preDataKey = "IPD", elementKey = "quafiLicnsNo") String param
이런 형태의 값은 생소해서 저 elementKey = "quafiLicnsNo" 부분에서 원래 내가 참조한 소스인 elementKey = "empNo"라고 되어있어서 계속 null 부적합한 열입니다가 떠서 엄청 해맸다.
잘보면 quafiLicnsNo 는 클라이언트 공통에서 보내는 prDt["quafiLicnsNo"]이거이다.
Service
/**
* 의사면허번호를 이용한 의사정보
* @param param
* @return
*/
@Transactional(rollbackFor = Exception.class)
public HeDoctorInfoDTO retrieveDoctorInFormationFromDoctorLicnsNo(String param){
HeDoctorInfoDTO result = heSynthUfsentCdMapper.retrieveDoctorInFormationFromDoctorLicnsNo(param);
MessageUtil.success("HM.success.retrieve");
return result;
}
mapper.java
/**
* 의사면허번호를 이용한 의사정보 2023.01.02 박민준
* @param param
* @return
*/
HeDoctorInfoDTO retrieveDoctorInFormationFromDoctorLicnsNo(String param);
mapper.xml
<!-- 의사면허번호를 이용한 의사정보 2023.01.02 박민준-->
<select id="retrieveDoctorInFormationFromDoctorLicnsNo" parameterType="String" resultType="kr.amc.amis.hm.gz.cd.entity.HeDoctorInfoDTO">
<![CDATA[
SELECT /* SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HeSynthUfsentCdMapper.retrieveDoctorInFormationFromDoctorLicnsNo */
QUAFI_LICNS_NO -- 의사면허번호
, EMPNO -- 의사아이디
, KOR_NM AS doctorNm -- 의사명
FROM V_HRPOREMLC, V_ZZANMUSER
WHERE QUAFI_LICNS_NO = #{quafiLicnsNo}
AND EMPNO = USR_ID
AND EMPNO LIKE 'D%'
]]>
</select>
참고
사용자 계정을 한글로 만드는 쿼리
<?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.gr.rv.store.mapper.HeSatinChkReciptMapper">
<select id="retrieveSatinChkReciptList" parameterType="java.util.HashMap" resultType="kr.amc.amis.hm.gr.rv.entity.HeSatinChkReciptDTO">
<![CDATA[
SELECT /* SQLID=kr.amc.amis.hm.gz.cd.store.mapper.HePkgCdMapper.retrieveHePkgCdManageInfoList */
WIFO.PAT_NM AS PAT_NM
,WIFO.AGE_YEARS
,WIFO.SEX_DIV_NM
,WIFO.PAT_BIRTHDT
,OTPT.PATNO
,OTPT.VIST_SN
,OTPT.HE_DT
,PCHK.HE_FORM_DIV_CD
,PCHK.CUNSL_DT
,PCHK.CSDR_LICNS_NO
,PCHK.JUDG_DT
,PCHK.JUDG_DR_LCNS_NO
,PCHK.RSLT_PRNT_DT
,PCHK.RSLT_PRNT_EMPNO
,(SELECT KOR_NM FROM V_ZZANMUSER WHERE USR_ID = RSLT_PRNT_EMPNO) AS KOR_NM
FROM GMCRMPCHK PCHK
, GRRVMOTPT OTPT
, V_WPPIMINFO WIFO
WHERE PCHK.PATNO = OTPT.PATNO
AND PCHK.VIST_SN = OTPT.VIST_SN
AND PCHK.HE_DT = OTPT.HE_DT
AND PCHK.PATNO = WIFO.PATNO
]]>
<choose>
<when test ="patno != null and patno != '' and valdYn != null and valdYn != ''">
<![CDATA[
AND PCHK.PATNO = #{patno}
AND PCHK.HE_FORM_DIV_CD = #{heFormDivCd}
AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))
]]>
</when>
<otherwise>
<if test ="patno != null and patno != ''">
<![CDATA[
AND PCHK.PATNO = #{patno}
AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))
]]>
</if>
<if test ="heFormDivCd != null and heFormDivCd != ''">
<![CDATA[
AND PCHK.HE_FORM_DIV_CD = #{heFormDivCd}
AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))
]]>
</if>
AND (PCHK.HE_DT BETWEEN TO_DATE(#{stdt},'YYYYMMDD') AND TO_DATE(#{ltdt},'YYYYMMDD'))
</otherwise>
</choose>
</select>
</mapper>