0105開発ログ
今日やったこと
traveler_id
、approver_id
、receiver_id
出張VOを削除して修正する->出張者名など、svn
昨日から、各職員はsvnを通じてそれぞれ地元のプロジェクトを合併しました.最初はsvnが何なのか分からなかったので検索してみるとGitのようなジオメトリ管理ツールの一つでした.
svnの起動
このクリップの下部にあるsvn repositoryタブ-new-repository location-url、ユーザー名、pw入力->svnタブ右クリック->checkout urlをインポートするプロジェクト->ローカルtomcatサーバも新しく作成->インポートするプロジェクト新しいtomcatサーバを使用してドライバ検証
このクリップでsvnを操作する
右クリック項目(または単一ファイル)->Team->svnアクション
eclipssvnコメント
htmlテーブル行の動的変更(js)
昨日、ユーザー検索画面のレイアウトを変更しました.ユーザーリスト、出張関係者リストの2つの表があります.今日では,ユーザリスト名をクリックして関係者に追加し,関係者名をクリックして関係者テーブルから削除する機能が実現した.
出張関係者のディレクトリ照会は、出張関係者のVOリストを画面に転送して出力していた.ただし、既存のVOListのオブジェクトを画面上でクリックすると、VO自体が消去されないため、別の記憶方式が必要となる.そこで、コントローラは出張関係者リストをjsonとして作成してjspに渡し、jspはjsonをJavaScript配列にグループ化して格納し、データを操作するように変更します.
JavaScriptにデータを保存
const btId = `${BT_ID}`;
const userType = ${USER_TYPE};
const jsonRole = ${jsonRole}; // 전체 role 정보 json
var selectedRoles = []; // userType에 맞는 role만 저장
const allRoles = []; // userType 다른 나머지 role. 추후 selectedRoles와 합쳐서 리턴
window.onload = function() {
if(jsonRole!="" || jsonRole!=null) {
jsonRole.forEach(function(role, key) {
let userData = {
"BT_ID":role.bt_ID,
"BT_ROLE_ID": role.bt_ROLE_ID ,
"USER_ID": role.user_ID,
"USER_TYPE":role.user_TYPE,
"USER_NAME": role.user_NAME,
"USER_DEPT_NAME": role.user_DEPT_NAME,
"USER_POS_NAME": role.user_POS_NAME
};
if(role.user_TYPE == userType){
selectedRoles.push(userData);
setRole(userData);
} else {
allRoles.push(userData);
}
})
}
}
filter:オブジェクト配列から特定の条件に合致する値を抽出した配列のみが返されます。
filter,findIndex,配列マージなどのjavascript機能に関する参考文書ではjavascript es 6(ex.矢印関数)を用いることが多い.しかし、現在使用されている電子政府バージョン(3.8)ではjs矢印関数が機能しないため、既存の方法で記述されている.
フィルタリファレンス
// 선택한 사용자 삭제 위해 선택하지 않은 사용자 배열을 원래 배열에 저장
selectedRoles = selectedRoles.filter(function(role) {
return role.USER_ID != userData.USER_ID
});
// 특정 id 가진 객체가 배열에 존제하는지 여부 T/F
var hasUser = selectedRoles.filter(function(role) {
return role.USER_ID == userData.USER_ID
}).length > 0;
findIndex:オブジェクト配列インデックスの検索
if(col=="NUM") { // 객체 배열에서 특정 값의 인덱스 찾아 출력
td.innerHTML = 1 + selectedRoles.findIndex(function(role) {
return role.USER_ID == userData.USER_ID;
});
}
concat()オブジェクト配列のマージ
コメントの整列
var str = JSON.stringify(allRoles.concat(selectedRoles));
DBテーブルとjava VOの変更
出張関係者テーブルを使用しない場合、出張者、承認者、受信者の情報を格納するために、出張テーブルに
traveler_id
、approver_id
、receiver_id
列を作成し、実際に文字列名値を使用します.現在,出張関係者表の人物情報が分離され,出張表も修正される必要がある.まずsqlまずxml、java VOを変更し、最後にDBの列を削除します.複数の名前を1つのstringにインポート
まず、出張リスト画面に出張者の名前情報が必要で、そこから出張情報-出張関係者-従業員表に接続し、従業員表の従業員名を取得します.1回の出張で複数の出張者ができ、複数の名前を組み合わせてインポートしようとしたが、適切なsql関数が見つかった.
SELECT GROUP_CONCAT(EMP.EMP_Name SEPARATOR ', ')
FROM BUSINESSTRIP_ROLES AS BTR
JOIN EMPLOYEE AS EMP ON EMP.EMP_NO = BTR.USER_ID
WHERE BTR.BT_ID = BT.BT_ID;
GROUP_CONCAT(컬럼명 SEPARATOR '구분자')
を使用して、列の値を区切り文字を含む文字列にインポートします.WHEREとHAVING
上記サブクエリを用いて得られた結果
TRAVELER_NAME
に対して出張者名検索機能を作成しようとしたが,whereではTRAVELER_NAME
を条件としてクエリはカラム名を認識できなかった.前回のビデオの授業ではHAVINGを使うのを覚えていたので、やりやすいです.<select id="selectBtList" parameterType="searchVO" resultType="egovMap">
SELECT ...
BT_ID,
LOCATION,
AUTHOR_ID,
TRIP_START_DATE,
TRIP_END_DATE,
CONCAT(DATEDIFF(TRIP_END_DATE, TRIP_START_DATE)+1, "일") AS TRIP_PERIOD,
(SELECT GROUP_CONCAT(EMP.EMP_Name SEPARATOR ', ')
FROM BUSINESSTRIP_ROLES AS BTR
JOIN EMPLOYEE AS EMP ON EMP.EMP_NO = BTR.USER_ID
WHERE BTR.BT_ID = BT.BT_ID
AND BTR.USER_TYPE = 0) AS TRAVELER_NAME
FROM BUSINESSTRIP AS BT
WHERE 1=1
<if test="searchKeyword != null and searchKeyword != ''">
<choose>
<when test="searchCondition == 1">
AND #{searchKeyword} BETWEEN TRIP_START_DATE AND TRIP_END_DATE
</when>
<when test="searchCondition == 0">
HAVING TRAVELER_NAME LIKE CONCAT('%', #{searchKeyword} ,'%')
</when>
</choose>
</if>
ORDER BY CREATED_AT DESC
LIMIT #{recordCountPerPage} OFFSET #{firstIndex}
</select>
Reference
この問題について(0105開発ログ), 我々は、より多くの情報をここで見つけました https://velog.io/@lee_yesol421/0105-개발일지テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol