login -> 환자 -> 신환 or 등록된 환자 구분
login
main
private View login() {
System.out.println("로그인 페이지");
//의사 아이디
String id = ScanUtil.nextLine("id입력");
//의사 pass
String pass = ScanUtil.nextLine("pass입력");
//id,pass 값 넣을 List 타입 생성
List<Object> param =new ArrayList();
param.add(id); //id 값 param넣음
param.add(pass);//pass 값 param 넣음
//freeService class에서 login메소드에 param값(id,pass) 넣음
//boolean login에서 true, false 구분
boolean login = freeservice.login(param);
if(!login) {//로그인 실패 경우/ 값이 null 나옴
System.out.println("로그인실패했습니다.");
return View.LOGIN; //다시 LOGIN 메소드로 감
}else {//로그인 성공시
//freeVo 타입으로 sessionStorage넣음
freeVo Dr_name = (freeVo)sessionStorage.get("Dr");
System.out.println(Dr_name.getEmp_name()+"님 환영합니다.");
}
return View.MAIN;
}
sessionStorage.get 사용하기 위해서
첫번째 변수명 짓기
1-1. freeVo 사용하기
(Map 타입 이용하면 정확하게 컬럼명 사용하기 때문에 편하게
freeVo 사용)
Map타입,List 타입은 Object 기본이라서 앞에 (freeVo) 같은 타입 선언해야함
1-2. key 이용하기
freeService에서 선언한 key("Dr")로 사용함
1-3 map변수명.get("key");
freeVo Dr_name = (freeVo)sessionStorage.get("Dr");
두번째(*freeVo(Vo) 타입 사용한경우)
freeVo에서 getter setter 사용했기 때문에 getEmp_name() 사용해서 출력함
기본 : 변수명.get~
Dr_name.getEmp_name()
freeService
public boolean login(List<Object> param) {
freeVo map = freedao.login(param); // freedao class에 login메소드 값을 map으로 넣음
if(map ==null) { //map이 null이면
return false ; // 반환값은 false
}else { // 로그인 일치하면 true 랑 map 타입이용해서 로그인한 직원 컬럼 저장하기
MainController.sessionStorage.put("Dr",map);
return true ;
}
}
}
freeDao 에서 반환된 값은 freeVo타입으로 map 변수에 넣음
freeDao 값이 안나오면 null 출력
freeDao 값이 나오면 해당되는 값들이
MainController class 있는 sessionStorage map 타입 이용해서 넣음
-> 추후 직원번호 사용해서 자동으로 값을 넣기 위해서 사용
freeDao
public freeVo login(List<Object> param) {
//? -> 파라미터 순서대로 들어감(id -> pass)
String sql = "SELECT *\r\n" +
" FROM EMPLOYEE\r\n" +
" WHERE EMP_ID = ?\r\n" +
" AND EMP_PW=?";
//freeVo class 이용해서,sql ,param 반환
//selectOne(); -> 한줄 가져올때 사용
return jdbc.selectOne(sql, param,freeVo.class);
}
만약 id : DA1 입력 pass : 1234 입력 한다면
param 은 DA1 -> 1234 순서대로 들어감
String sql = "SELECT * FROM EMPLOYEE
WHERE EMP_ID = DA1
AND EMP_PW = 1234 ";
SQLDeveloper에서 작동해서 출력값이 sql 값이 됨
~.selectOne() -> row 한개 가져오는경우 Map 타입 이나 Vo 타입 사용
~.selectList() -> row 여러줄 가져오는 경우 List<Map<String, Object>>타입 사
patient
- 동명이인 나오게 함
- 차트번호를 입력해서 sess
MainController
private View patient() {
//환자 이름 등록해서 출력 확인
String patientSearch = ScanUtil.nextLine("환자이름 입력하기");
List<Object> param = new ArrayList(); //환자 이름 담기 위해서 List 타입 생성
param.add(patientSearch); //입력한 이름값을 param에 담음
//patientService class에 patientNOSearch 메소드에 파라미터값(patientSearch) 보냄
List<Map<String, Object>> list = (List<Map<String, Object>>)patientservice.patientNOSearch(param);
//반환값은 list에 넣음
System.out.println(list);//출력확인용
if(list == null) {
//환자 정보가 없으면(null)이면 환자등록메소드로 이동
System.out.println("등록된 정보가 없습니다. 환자등록으로 이동합니다.");
return View.PATIENT_INSERT;
}else {
//환자 정보가 있으면 patient_old 로 이동
String pt_no = ScanUtil.nextLine("차트번호 입력하시오");
//환자 차트 입력해서 sessionStorage에 담음
sessionStorage.put("pt_no",pt_no);
return View.PATIENT_OLD;
}
}
patientService
public List<Map<String, Object>> patientNOSearch(List<Object> param) {
return patientdao.patientNOSearch(param);
}
patientDao
public List<Map<String, Object>> patientNOSearch(List<Object> param) {
String sql = "SELECT PT_NO,PT_NAME,PT_GEN,PT_ADDRESS,to_char(PT_RRN1) PT_RRN1,to_char(PT_RRN2) PT_RRN2,PT_TELNO,PT_STR,PT_DISEASE\r\n" +
" FROM PATIENT\r\n" +
" WHERE PT_NAME LIKE '%'||?||'%' ";
return jdbc.selectList(sql,param);
}
특정(?) 문자 포함 문자 찾기
LIKE '%'|| ? || '%'
patient_old
private View patient_old() {
//patient에서 sessionStorage 넣은 값을 출력
String ptNo = (String) sessionStorage.get("pt_no");
System.out.println(ptNo+"차트번호입니다.");//확인용
//해당 환자 정보 출력
//patientService class에서 ptoList메소드 ptNo값 넣음
Map<String, Object>ptlist = patientservice.ptoList(ptNo);
printpatient_old(ptlist);
}
==================================================================
Print class
public void printpatient_old( Map<String, Object>ptlist) {
String no =(String)ptlist.get("PT_NO");
String name =(String)ptlist.get("PT_NAME");
String gen =(String)ptlist.get("PT_GEN");
BigDecimal rrn1 =(BigDecimal)ptlist.get("PT_RRN1");
BigDecimal rrn2 =(BigDecimal)ptlist.get("PT_RRN2");
String str =(String)ptlist.get("PT_STR");
String dis =(String)ptlist.get("PT_DISEASE");
System.out.println(no +"\t"+name +"\t"+gen +"\t"+ rrn1 +"\t"+rrn2 +"\t"+ str+"\t"+dis);
}
patientService
public Map<String, Object> ptoList(String ptNo) {
return patientdao.ptoList(ptNo);
}
patientDao
public Map<String, Object> ptoList(String ptNo) {
String sql = "SELECT PT_NO, PT_NAME, PT_GEN,PT_RRN1,PT_RRN2,PT_STR,PT_DISEASE \r\n" +
" FROM PATIENT\r\n" +
" WHERE PT_NO = '" +ptNo + "'";
return jdbc.selectOne(sql);
}
treatmentInsert
private View treatmentInsert() {
System.out.println("진료등록");
//의사 번호 자동화하기 위해서 로그인에서 넣은 값을 가져와서 출력
freeVo dr =(freeVo)sessionStorage.get("Dr");
//진료등록 tr_no,tr_date 자동등록하게 하기
String remark = ScanUtil.nextLine("진료내용 등록");
String emp_no =(String)dr.getEmp_no();
String pt_no = (String)sessionStorage.get("pt_no");
List<Object> param = new ArrayList();
param.add(remark);//진료내역
param.add(pt_no);//환자번호
//날짜는 오늘 날짜로 함
param.add(emp_no);//의사번호
patientservice.treatmentInsert(param);
//등록된 내용 출력
System.out.println("진료등록 되었습니다.");
//pt_no 조건문으로 넣기위해서 파라미터 넣음
Map<String, Object>list = patientservice.TIL(pt_no);
String no =(String)list.get("PT_NO");
String name =(String)list.get("PT_NAME");
String mark =(String)list.get("TR_REMARK");
String date =(String)list.get("TR_DATE");
System.out.println(no +"\t"+name +"\t"+mark+"\t"+date);
patientService
public Map<String, Object> TIL(String pt_no) {
return patientdao.TIL(pt_no);
}
patientDao
public Map<String, Object> TIL(String pt_no) {//등록된 환자 내용출력
//pt_no(환자번호)를 이용해서 진료등록한 가장 높은값(방금 등록한 값)을 조회함
String sql ="SELECT T.PT_NO,T1.PT_NAME, T.TR_REMARK,TO_CHAR(TR_DATE,'YYYY-MM-DD') TR_DATE\r\n" +
" FROM TREATMENT T, PATIENT T1\r\n" +
" WHERE T. PT_NO=T1. PT_NO \r\n" +
" AND ROWNUM =1 \r\n" +
" AND T.PT_NO ='"+ pt_no +"'\r\n" +
"ORDER BY T.TR_NO DESC";
return jdbc.selectOne(sql);
}