MRE001.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. /*
  2. * 1. 동일여부를 체크하고, 저장노드가 있으면 변경 된 정보를 저장노드에 저장한다.
  3. * 2. Array 에 값이 존재하는지 확인
  4. */
  5. /** 1.
  6. * @---------------------------------------------------
  7. * @creat : 20100000
  8. * @author : 최원돈
  9. * @desc : 동일여부를 체크하고,
  10. * @ : 저장노드가 있으면 변경 된 정보를 저장노드에 저장한다.
  11. * @---------------------------------------------------
  12. */
  13. function chkMsetIdenNode(pa_pkid, ps_desNode, ps_srcNode, ps_delNode, ps_saveNode, pb_skipuseyn, ps_insertseqcol, pa_skipcol, ps_modstatus, ps_addstatus)
  14. {
  15. var lx_node2 = instance1.selectSingleNode(ps_srcNode);
  16. var lx_nodeList2 = lx_node2.childNodes;
  17. var lb_rtncheck = true;
  18. var li_insertseq = 0;
  19. var lb_saveyn = (ps_saveNode == "") ? false : true;
  20. if (lb_saveyn)
  21. {
  22. model.removeNodeset(ps_saveNode);
  23. model.makeNode(ps_saveNode);
  24. var lx_modinfo = instance1.selectSingleNode(ps_saveNode);
  25. }
  26. for(var i=0; i<lx_nodeList2.length; i++)
  27. {
  28. var lx_node2c = lx_nodeList2.item(i);
  29. var lx_nodeList2c = lx_node2c.childNodes;
  30. var ls_pkcond = "";
  31. var lb_skipyn = false;
  32. if (lx_node2c.selectSingleNode("status").NodeValue == "")
  33. {
  34. continue;
  35. }
  36. // skip 대상을 제외
  37. if ( pb_skipuseyn
  38. && lx_node2c.selectSingleNode("skipyn").NodeValue == "Y"
  39. && lx_node2c.selectSingleNode("inptflag").NodeValue != "F4")
  40. {
  41. lb_skipyn = true;
  42. }
  43. if (!lb_skipyn) // 비교 및 저장 대상일 경우
  44. {
  45. if (lx_node2c.selectSingleNode("status").NodeValue != "i") // 추가 일 경우는 skip
  46. {
  47. // 비교하기 위해서 PK 를 추출
  48. lx_nodeList2c.reset();
  49. while(lx_nodechild2 = lx_nodeList2c.nextNode())
  50. {
  51. if (isMArray(pa_pkid, lx_nodechild2.nodeName))
  52. {
  53. if (lx_nodechild2.NodeValue == "") // PK 에 NULL 이 있다면 추가
  54. {
  55. ls_pkcond = "";
  56. break;
  57. }
  58. if (ls_pkcond != "")
  59. {
  60. ls_pkcond += " and ";
  61. }
  62. ls_pkcond += lx_nodechild2.nodeName + "='" + lx_nodechild2.NodeValue + "'";
  63. }
  64. }
  65. }
  66. if (ls_pkcond == "") // PK가 존재하지 않을 경우 [추가일 경우]
  67. {
  68. lb_rtncheck = false;
  69. if (lb_saveyn)
  70. {
  71. if (ps_insertseqcol != "") // Batch를 위해서 MAX seq를 넣어준다.
  72. {
  73. lx_nodeList2c.reset();
  74. while(lx_nodechild2 = lx_nodeList2c.nextNode())
  75. {
  76. // 변경된 정보가 있으면 저장
  77. if (lx_nodechild2.nodeName == ps_insertseqcol)
  78. {
  79. lx_nodechild2.NodeValue = ++li_insertseq;
  80. }
  81. }
  82. }
  83. lx_modinfo.appendChild(lx_node2c);
  84. // status 값을 저장
  85. if (ps_addstatus != "")
  86. {
  87. lx_modinfo.lastChild.selectSingleNode("status").NodeValue = ps_addstatus;
  88. }
  89. else if (ps_modstatus != "")
  90. {
  91. lx_modinfo.lastChild.selectSingleNode("status").NodeValue = ps_modstatus;
  92. }
  93. }
  94. else
  95. {
  96. return lb_rtncheck;
  97. }
  98. }
  99. else // 동일 PK가 존재하면
  100. {
  101. ls_cond = ps_desNode + "[" + ls_pkcond + "]";
  102. var lx_node = instance1.selectSingleNode(ls_cond);
  103. var lx_nodeList = lx_node.childNodes;
  104. lx_nodeList2c.reset();
  105. while(lx_nodechild2 = lx_nodeList2c.nextNode())
  106. {
  107. var lx_nodechild = lx_nodeList.nextNode()
  108. // 변경된 정보가 있으면 저장
  109. if ( lx_nodechild2.nodeName != "status" // status는 무조건 skip
  110. && !isMArray(pa_skipcol, lx_nodechild2.nodeName)
  111. && lx_nodechild2.nodeName == lx_nodechild.nodeName
  112. && lx_nodechild2.NodeValue != lx_nodechild.NodeValue)
  113. {
  114. lb_rtncheck = false;
  115. if (lb_saveyn)
  116. {
  117. lx_modinfo.appendChild(lx_node2c);
  118. // status 값을 저장
  119. if (ps_modstatus != "")
  120. {
  121. lx_modinfo.lastChild.selectSingleNode("status").NodeValue = ps_modstatus;
  122. }
  123. }
  124. else
  125. {
  126. return lb_rtncheck;
  127. }
  128. break;
  129. }
  130. }
  131. }
  132. }
  133. }
  134. //삭제된 노드가 있을 경우 삭제노드 별도 체크 추가
  135. if(ps_delNode != "")
  136. {
  137. if (instance1.selectSingleNode(ps_delNode).childNodes.length > 0)
  138. {
  139. return false;
  140. }
  141. }
  142. return lb_rtncheck;
  143. }
  144. /** 2.
  145. * @---------------------------------------------------
  146. * @creat : 20100000
  147. * @author : 최원돈
  148. * @desc : Array 에 값이 존재하는지 확인
  149. * @---------------------------------------------------
  150. */
  151. function isMArray(pa_src, ps_find)
  152. {
  153. if (pa_src == null) // skip column이 없다면
  154. {
  155. return false;
  156. }
  157. for (i=0; i<pa_src.length; i++)
  158. {
  159. if (pa_src[i] == ps_find)
  160. {
  161. return true;
  162. }
  163. }
  164. return false
  165. }