this.fnDatasetEsbCall = function (dsData, dsEsbCall)
{
dsEsbCall.copyData(dsData);
dsEsbCall.clearData();
for(var i = 0; i<dsData.rowcount;++i)
{
if(true) {
if(dsData.getColumn(i, "BF_ROWTYPE") == "BF")//"BF" 기존 DB에 존재하던 값을 의미
{
if(dsData.getRowType(i) == 4)//값이 변경된 경우. U(업데이트) 처리
{
dsEsbCall.addRow();
dsEsbCall.copyRow(dsEsbCall.rowcount-1, dsData, i);
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "U");
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "BF_ROWTYPE", dsData.getColumn(i, "BF_ROWTYPE"));
}
else//기존 값
{
dsEsbCall.addRow();
dsEsbCall.copyRow(dsEsbCall.rowcount-1, dsData, i);
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "N");
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "BF_ROWTYPE", dsData.getColumn(i, "BF_ROWTYPE"));
}
}
else//신규 입력값
{
dsEsbCall.addRow();
dsEsbCall.copyRow(dsEsbCall.rowcount-1, dsData, i);
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "I");
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "BF_ROWTYPE", dsData.getColumn(i, "BF_ROWTYPE"));
}
}
}
var delArr = dsData.getDeletedRowset();
//삭제된 행 확인 후, EsbCall에 추가.
for(var i = 0; i<dsData.getDeletedRowset().length;++i)
{
var delRow = delArr[i];
if(delRow.includes("BF"))
{
dsEsbCall.addRow();
for(var j = 0; j<dsData.colcount;++j)
{
dsEsbCall.setColumn(dsEsbCall.rowcount-1, j, delRow[j]);
}
dsEsbCall.setColumn(dsEsbCall.rowcount-1, "NOW_ROWTYPE", "D");
}
}
if(this.dsObjList==dsData) {
var colArray = new Array("SPOP_1_VAL","SPOP_2_VAL","SPOP_3_VAL","SPOP_4_VAL","SPOP_5_VAL");
for(var i = 0; i<dsEsbCall.rowcount; ++i) {
var tFront = "BUILD_SN == '"+dsEsbCall.getColumn(i, "BUILD_SN")+"' && PURPS_SN == '"+dsEsbCall.getColumn(i, "PURPS_SN")+"'";
//dsClauseList dataset의 복수의 값을 dsObjList에 넣기위한 조치
var txt = new Array(tFront + " && SPOP_CD == 'T191'", "BGITDTARIFCAT1"
, tFront + " && SPOP_CD =='T117'", "VGITDTARIFCAT3,GITDTARIFCAT5,GITDTARIFCAT4,GITDTARIFCAT6"
, tFront + " && (SPOP_CD == 'T750' || SPOP_CD =='T722')", "GITDTARIF7,GITDTARIF6,BGITDTARIFCAT6"
, tFront + " && (SPOP_CD == 'T855' || SPOP_CD =='T856')", "GITDTARIFCAT3"
, tFront + " && SPOP_CD == 'T559'", "ELAGDDCTAMT"
, tFront + " && SPOP_CD == 'T490'", "GITDTARIFCAT16,GITDTARIFCAT17,GITDTARIFCAT18,GITDTARIFCAT19,GITDTARIFCAT15"
, tFront + " && SPOP_CD == 'T406'", "RGITDTARIFCAT1"
, tFront + " && SPOP_CD == 'T594'", "GITDTARIFCAT10"
, tFront + " && SPOP_CD == 'T655'", "GITDTARIFCAT26,GITDTARIFCAT27,GITDTARIFCAT28,GITDTARIFCAT29"
);
for(var j = 0; j<txt.length;j+=2) {
var t = this.dsClauseList.findRowExpr(txt[j]);
if(t != -1) {
var insertArr = txt[j+1].split(",");
for(k = 0;k<insertArr.length;++k) {
dsEsbCall.setColumn(i, insertArr[k], this.dsClauseList.getColumn(t2, colArray[k]));
}
}
}
}
}
}
Nexacro에서는 getRowType(n)을 통해 특정 row의 CRUD 상태를 알 수 있다.
그런데 어쩌다보니 이런걸 만들어야 할 필요가 생겼다. 기존 dataset에 deletedRowset을 추가하는 것도 방법이었지만 원본 dataset을 보존해야 할 필요가 있었기에 간략하게 만들었다. 실제 업무와 관련된 부분을 다 지웠더니 좀 너무 이상하게 보일 수 있다. BF가 없어도 되는데 왜 있어야 하느니..
특정 dataset에서 타 dataset의 column에 값을 넣어야 하는데 column명이 서로 다르고 임의로 맞춰넣어야 하기에
Array로 조건을 묶어서 수정하기 쉽게 진행을 해보았다. 변경이 필요할 경우 한줄씩 바꾸면 되기 때문에 효율적이라 생각했다.
'Web' 카테고리의 다른 글
Autowired와 Resource 차이 (0) | 2024.12.18 |
---|---|
Nexacro Components 제어 Function (0) | 2020.06.18 |
Nexacro Div 정렬 Function (0) | 2020.06.18 |