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' 카테고리의 다른 글

Nexacro Components 제어 Function  (0) 2020.06.18
Nexacro Div 정렬 Function  (0) 2020.06.18

+ Recent posts