단체 테스트
코딩 일부 수정
단체테스트를 위해 테스트 데이터 만들기를 했다. 브런치가 3개인데 일단 테스트 데이터는 전부 만들었고, 사양이 변경된 부분의 코드 수정 후에 배치 실행하여 단체테스트를 진행하였다.
특별히 이상한 점은 없어 3곳다 코밋완료!
이번 코드 수정하면서 생각을 오래한 부분이 있다.
수정 내용은 a테이블의 컬럼1값을 갖고, b테이블의 조인한 레코드의 값을 -하는 부분이다.
말로 하기는 어렵기 때문에 그림으로!
위와같은 그림에서 a테이블에 값이 음수인 경우는 무조건으로 최근날짜 기준의 값에 음수를 넣은 후 나머지 날짜 레코드에는 0을 집어넣는다.
양수인 경우 cc의 290을 예로 들어보자
cc의 290을 갖고 최근날짜인 202306의 90을 빼준뒤 (290-90)
다음 5월의 40
4월의 60 ・・・ 마지막 값까지 올라간다.
이를 위해서는 반복문을 거치게 되는데, a테이블의 값과 b테이블의 값을 하나의 sql로 가져오기 때문에 반복문 안에서 처리를 진행하면 매번 a테이블의 값이 리셋된다.
따라서 sql의 결과값을 리스트에 저장 후에 리스트 수만큼의 반복문을 하나 만들고 안에서 등록할 테이블의 4개의 항목의 파라미터를 갖는 리스트를 하나 만들어준다.a와b테이블의 키가 같은값을 가져오는 하나의 sql을 추가한다.
같은 키를 갖는 레코드는(b테이블 조인한 레코드) 갯수와 같고, 管理数量,決済数量값을 가져온다.
가져온 결과값들의 값을 리스트에 저장하고 리스트만큼의 반복문을 만든다.beforePrimaryKey라는 변수의 empty값을 넣어준다
만약 프라이머리키가 같지 않은경우에 aa와,bb값에 리스트의 aa와bb값을 대입해준다.
처음은 beforePrimaryKey가 empty이기 때문에 만드시 다르기 때문에 값할당
후에 다른 메서드를 만들어 2개의 파라미터를 넘겨준다. a테이블 값, b테이블 값
배열을 만들어 [0]값에는 등록할테이블의 값을 [1]값에는 두수의 차를 저장하여 기존 변수에 넣어준다.
이렇게 반복하면 기존 sql로 만든 리스트에 값을 set하면 되기 때문에 매핑할때도 매우 편하다.
말로 하니까 너무 어렵다
dataLst를 먼저 세팅
다음 처리를 위해 dataList를 메소드에 파라미터로 넘긴다
메소드 안에서 리스트 생성
같은 키값을 가져오는 sql을 만든뒤에 리스트 수만큼 안에서 다시 반복
반복문안에 원하는 계산식을 위한 메소드 추가
리턴한 배열의 값을 세팅
후에 만들어진 리스트와 처음에 넘겨준 dataList의 값은 반드시 같기때문에 같은 반복문안에 사용할 수 있다. 이제 가져온 리스트값을 기존 dataList의 원하는 파라미터에 매핑해주면 완성.
현우쿤 나너무바빴삼