고쳐야할것, 실수 끄적여놓은 것들

|
6/23 

1. if 간소화 ( || || || ) ; -> 코드가 훨씬 간결해짐. a or b or c a가 true면 뒤쪽은 확인안함.

2. actionMap, bindUI는 함수로 간결하게 작성하고, 비즈니스 로직은 함수화 하도록 한다.

3. array 지속적 스캔 -> map을 활용 할 것.

4. 하나하나 하면서 커밋하는 습관을 가질 것.

마리아DB root/tiger

******************** 부서, 구성원 관리 정의 ********************

2-1. 사원이 처음 입사하고 등록시 history 테이블에 무조건 추가하게 된다.
->  부서장급을 추가하면 조직도에 뜨게된다.
- 단, 해당 추가된 사원이 부서장일 경우, DEPT 테이블 에서도 부서장으로 등록이 되어 있어야함.
- 추가된 사원이 팀원 급일 경우, --> DEPT 테이블과는 무관함.
 
2-2. 부서관리에서 부서를 생성 후 부서장 등록시, 
-> 해당 부서장 emp_no의 history_enddate 가 없는 이력을 찾아서 history_enddate를 sysdate로 넣어주고(update), 새로운 부서의 이력을 insert 해준다.
-> 이미 부서장(사원)의 history는 만들어진 상태이므로 이력이 있을수 밖에 없다.
-> update의 경우 : 1) 부서장 변경 -> history 종료 insert 필요
2) 종료일자 변경(부서 폐쇄) ->  history 종료 insert 필요 
그 외에는 dept 테이블만 update 처리
3) 상위부서변경 -> 상위부서코드만 변경
******************** SQL ********************

-- 시스템 포맷터 확인
SELECT * FROM nls_session_parameters WHERE parameter = 'NLS_DATE_FORMAT';
  
-- 세션 값 수정
alter session set nls_date_language='KOREAN';

-- 조인 예시
SELECT a.emp_cd
     , DECODE(a.position, '임원', a.emp_cd, b.emp_cd) up_emp_cd
  FROM t_emp_info a
 INNER JOIN
       (SELECT o.seq_dept
             , REGEXP_SUBSTR(
               RTRIM(SYS_CONNECT_BY_PATH(e.emp_cd, ' '))
               , '[^ ]+$') emp_cd
          FROM t_organ_tree o
          LEFT OUTER JOIN
               (SELECT seq_dept
                     , MIN(emp_cd) emp_cd -- 부서 대표 임원 1명만
                  FROM t_emp_info
                 WHERE position = '임원'
                 GROUP BY seq_dept
                ) e
            ON o.seq_dept = e.seq_dept
         START WITH o.up_seq_dept IS NULL
         CONNECT BY PRIOR o.seq_dept = o.up_seq_dept
        ) b
    ON a.seq_dept = b.seq_dept
 ORDER BY emp_cd
;

-- 소속부서 이력 가져오는 쿼리
select d.dept_name || '(' ||  history_startdate ||'~'|| history_enddate || ')'
from history h, dept d
where h.dept_no = d.dept_no
and h.emp_no = 20009
order by history_no

-- t로 묶어서 쿼리 조회하는 예시
select d.dept_name
from dept d, (select h.dept_no
                from dept d, history h
                where d.dept_no = h.dept_no) t
where d.dept_no = t.dept_no

-- 시간 차 구하는 쿼리
SELECT 
  (  
    to_date('2013-08-01 21:01', 'yyyy-mm-dd hh24:mi')
    - to_date('2013-08-01 09:00', 'yyyy-mm-dd hh24:mi')
  ) * 24 -- 시간단위로변환
  AS min_diff
FROM DUAL

-- interval 커럼에 차이 나오는 작동되는 쿼리
SELECT systimestamp - tm AS interval
     , EXTRACT(DAY    FROM systimestamp - tm) *24*60*60
     + EXTRACT(HOUR   FROM systimestamp - tm) *60*60
     + EXTRACT(MINUTE FROM systimestamp - tm) *60
     + EXTRACT(SECOND FROM systimestamp - tm) AS second
FROM (SELECT TO_TIMESTAMP('20/02/28 09:40:33.751000000', 'yy/mm/dd hh24:mi:ss.ff') tm FROM dual)

-- 최종 이력 데이터에서 마지막 값 가져오는거 작동함
SELECT MAX(ATT_DATE) KEEP (DENSE_RANK LAST ORDER BY ATT_DATE)
FROM ATT
GROUP BY EMP_NO
******************** Review ********************

1. 조직도
- 직급의 크기 크게  > 완료★
- 전체적인 글씨크기 크게 -> 가독성  > 완료★
- 시트테마 적용(장차장님) > 완료★
-> 폰트패밀리로 변경(Arial,Tahoma,sans-serif)

2. 범례
- 기타 항목 추가하고, 전체인원 카운트도 포함시켜서  -> 완료★

4. att 데이터
-> 다른사람들도 세팅해놓아라.... -> 완료★
->  att db 데이터 장차장님께 전달(insert) -> 완료★ -> data.go.kr  에서 정보 확인(중소기업업체)

5. 조직도 팝업
-> 선 맞추기  -> 완료★

6. att(근태관리)
-> 사원선택 팝업 크기 조절 -> 완료★
-> 리셋버튼 없애기 -> 완료★ 
-> 조회 - 엑셀 - 추가 - 저장 버튼 순으로 바꾸기( 구성원관리, 부서관리도 해당) > 완료★

7. emp
-> 부서팝업 높이 체크 -> 완료★

8. dept
-> 부서명 좌측정렬 -> 완료★
-> 부서팝업 높이 체크 -> 완료★
-> 보조자 값 -> combo로(좌측 우측값으로 보여지게), 재직여부도 변경처리 완료 -> 완료★

'etc' 카테고리의 다른 글

끄적3  (0) 2020.10.28
끄적2  (0) 2020.10.15
경로 표기법  (0) 2020.04.17
트러블 슈팅이란?  (0) 2020.04.07
코딩을 잘하는 사람들의 특징  (0) 2020.01.21
And