LQZ001.xjs 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[/*function list
  3. fCOMLIS_QCJudgLH : 정도관리 L/H 결과 판정
  4. fCOMLIS_QCJudgWGMR : WGMR룰 적용 판정
  5. fCOMLIS_CvtRslt : 입력결과 보이는결과로 바꾸기 (결과유형 판별 및 반올림 옵션 적용)
  6. fCOMLIS_RstRound : 올림, 반올림, 내림 처리(LLZ001과 중복)
  7. fLisQCBarcodePrint_NewOCX : QC 접수 바코드 출력
  8. */
  9. /**
  10. * @ 정도관리 L/H 판정
  11. * @ 승현씨 추가
  12. * @ 2008.06.19
  13. *
  14. *===================================================================================
  15. * pOrgRslt : 판정할 결과값
  16. * pJudgKind : 판정유형 0:미사용, 1:L/H
  17. * pRefKind : 참고치유형 0:없음, 1:문자, 2:숫자
  18. * pRefFlag : 참고치구분 0:사용안함, 1:하한만사용, 2:상한만사용, 3:모두사용
  19. * pRefL : 참고치 하한값
  20. * pRefLS : 참고치 상한값
  21. * pRefH : 참고치하한부등호 0:<, 1:<=
  22. * pRefHS : 참고치상한부등호 0:>, 1>=
  23. *===================================================================================
  24. *
  25. */
  26. //L/H판정
  27. function fCOMLIS_QCJudgLH(pOrgRslt, pJudgKind, pRefKind, pRefFlag, pRefL, pRefLS, pRefH, pRefHS){
  28. var vJudgmark = "";
  29. var isLow = true;
  30. var isHigh = true;
  31. if(pJudgKind =="1"){ //판정유형이 L/H이고
  32. if(pRefKind == "2"){ //참고치유형이 숫자일때
  33. if (!String(pOrgRslt).isNumber() && !String(pOrgRslt).isFloat()) { //입력한 결과값이 숫자인지 체크 아니면 ""return
  34. return vJudgmark;
  35. }
  36. if (!String(pRefL).isNumber() && !String(pRefL).isFloat()) { //Low값이 숫자인지 체크
  37. isLow = false;
  38. }
  39. if (!String(pRefH).isNumber() && !String(pRefH).isFloat()) { //High값이 숫자인지 체크
  40. isHigh = false;
  41. }
  42. if(pRefFlag == "3"){ //3이면 상한 하한 모두체크
  43. if (isLow) { //하한값 체크
  44. if (pRefLS == "0") { //참고치부등호 0:<, 1:<=
  45. if (parseFloat(pOrgRslt) < parseFloat(pRefL)) // 결과 <= 참고치 = L
  46. vJudgmark = "L";
  47. } else if (pRefLS == "1") {
  48. if (parseFloat(pOrgRslt) <= parseFloat(pRefL)) // 결과 < 참고치 = L
  49. vJudgmark = "L";
  50. }
  51. }
  52. if (isHigh) { //상한값 체크
  53. if (pRefHS == "0") {
  54. if (parseFloat(pOrgRslt) > parseFloat(pRefH)) // 결과 >= 참고치 = H
  55. vJudgmark = "H";
  56. } else if (pRefHS == "1") {
  57. if (parseFloat(pOrgRslt) >= parseFloat(pRefH)) // 결과 > 참고치 = H
  58. vJudgmark = "H";
  59. }
  60. }
  61. }else if (pRefFlag == "1"){ //1이면 하한만 체크
  62. if (isLow) { //하한값 체크
  63. if (pRefLS == "0") {
  64. if (parseFloat(pOrgRslt) < parseFloat(pRefL))
  65. vJudgmark = "L";
  66. } else if (pRefLS == "1") {
  67. if (parseFloat(pOrgRslt) <= parseFloat(pRefL))
  68. vJudgmark = "L";
  69. }
  70. }
  71. }else if (pRefFlag == "2"){ //2이면 상한만 체크
  72. if (isHigh) { //상한값 체크
  73. if (pRefHS == "0") {
  74. if (parseFloat(pOrgRslt) > parseFloat(pRefH))
  75. vJudgmark = "H";
  76. } else if (pRefHS == "1") {
  77. if (parseFloat(pOrgRslt) >= parseFloat(pRefH))
  78. vJudgmark = "H";
  79. }
  80. }
  81. }
  82. }//end if(vRefKind == "2")
  83. }//end if(vJudgKind =="1")
  84. return vJudgmark;
  85. }//end function
  86. /**
  87. * @ 입력결과 보이는결과로 바꾸기 (결과유형 판별 및 반올림 옵션 적용)
  88. * @ 승현씨 추가
  89. * @ 2008.06.20
  90. * @ From LLZ001.js
  91. *
  92. *===================================================================================
  93. * pInptrslt : 판정할 입력 결과값
  94. * pRsltkind : 결과유형 0:문자+숫자, 1:숫자
  95. * pLen : 소수점이하 자릿수
  96. * pType : 반올림옵션 0:사용안함, 1:반올림, 2:올림, 3:내림
  97. *===================================================================================
  98. *
  99. */
  100. function fCOMLIS_CvtRslt(pInptrslt, pRsltkind, pLen, pType ) {
  101. var vReptrslt = pInptrslt;
  102. if (vReptrslt != null) {
  103. // 결과유형 체크
  104. if (pRsltkind == "1") { //숫자만 가능
  105. if( !String(vReptrslt).isNumber() && !String(vReptrslt).isFloat()) {
  106. sysf_messageBox("숫자결과만 입력이 가능합니다." , "I","");
  107. return "err";
  108. }
  109. } else {
  110. //문자+숫자혼합
  111. }
  112. //숫자결과 크기제한
  113. if (String(vReptrslt).isNumber() || String(vReptrslt).isFloat()) {
  114. if( String(pLen).isNumber()){
  115. //실수자리수 크기제한
  116. if (eval(pLen) > -1) {
  117. vReptrslt = fCOMLIS_RstRound(vReptrslt, pLen, pType); //반올림 옵션 적용
  118. }
  119. }
  120. }
  121. }
  122. return vReptrslt;
  123. }
  124. /**
  125. * @ 올림, 반올림, 내림 처리
  126. * @ 승현씨 추가
  127. * @ 2008.06.20
  128. * @ From LLZ001.js (동일)
  129. *
  130. *===================================================================================
  131. * pRst : 판정할 입력 결과값
  132. * pLen : 소수점이하 자릿수
  133. * pType : 반올림옵션 0:사용안함, 1:반올림, 2:올림, 3:내림
  134. *===================================================================================
  135. */
  136. function fCOMLIS_RstRound(pRst, pLen, pType){
  137. var vNumber = eval(pRst);
  138. if (pLen == "") return vNumber;
  139. if (pType == "") return vNumber;
  140. if (pLen != "0") {
  141. if (pType == "2") {
  142. // 올림
  143. if (eval(pLen) > 0) {
  144. vNumber = Math.ceil(parseFloat(vNumber) * Math.pow(10, pLen)) / Math.pow(10, pLen);
  145. } else {
  146. return "";
  147. }
  148. } else if (pType == "1") {
  149. // 반올림
  150. if (eval(pLen) > 0) {
  151. vNumber = Math.round(parseFloat(vNumber) * Math.pow(10, pLen)) / Math.pow(10, pLen);
  152. } else {
  153. return "";
  154. }
  155. } else if (pType == "3") {
  156. // 내림
  157. if (eval(pLen) > 0) {
  158. } else {
  159. return "";
  160. }
  161. } else {
  162. return vNumber; //반올림 옵션사용 안할경우에는 결과그대로 리턴..
  163. }
  164. ///* 20080710 결과 입력시 음수값 안들어가서 막았음..//setReplaceWord("-", "")//수정 후 다시 푼다20080731
  165. // 소수자리보다 작은경우 0으로 채운다..
  166. var vTmpArray = eval(vNumber).toString().split("."); //eval(vNumber).toString().setReplaceWord("-", "").split(".");
  167. if(vTmpArray.length == 2 ) {
  168. vNumber = vTmpArray[0].toString() + "." + (vTmpArray[1].toString() + "0000000000").substring(0, eval(pLen));
  169. } else {
  170. vNumber = vTmpArray[0].toString() + "." + "0000000000".substring(0, eval(pLen));
  171. }//*/
  172. } else if (pLen == "0") {
  173. if (pType == "1") {
  174. // 올림
  175. vNumber = Math.ceil(parseFloat(vNumber));
  176. } else if (pType == "2") {
  177. // 반올림
  178. vNumber = Math.round(parseFloat(vNumber));
  179. } else if (pType == "3") {
  180. // 내림
  181. }
  182. // 소수자리가 0인경우 정수부분만 취한다.
  183. vNumber = vNumber.toString().getTruncate()
  184. }
  185. return vNumber;
  186. }
  187. /**
  188. * @ 정도관리 WGMR판정
  189. * @ 승현씨 추가
  190. * @ 2008.06.20
  191. *
  192. *===================================================================================
  193. * pOrgRslt : 판정할 결과값(입력결과값)
  194. * pWgmr : WGMR상태 ex) YYNNNN
  195. * pAvg : 평균
  196. * pSdVal : 표준편차
  197. * pBfRslt : 이전결과
  198. * pBfRslt2~10 : 이전결과 최근2~10 R4S, 4(1S), 10X 판정때 필요
  199. *===================================================================================
  200. *
  201. //판정시 결과 허용치 변경 포함(<=) 에서 허용(<)로 승현 수정 20090929
  202. */
  203. function fCOMLIS_QCJudgWGMR(pOrgRslt, pWgmrScop, pAvg, pSdVal, pWgmrValue, pWrFlagValue, pBfOrgRslt, pTclsBfOrgRslt){
  204. var vWGMRMark = "";
  205. var vWGMRMarkTcls = "";
  206. var vOrgRslt = parseFloat(pOrgRslt);
  207. var vAvg = parseFloat(pAvg);
  208. var vSdVal = parseFloat(pSdVal);
  209. var vWgmrValue = new Array();
  210. var vWrFlagValue = new Array();
  211. var vBfRslt = new Array();
  212. var vTclsBfRslt = new Array();
  213. var vWGMRMark01 = "";
  214. var vWGMRMark02 = "";
  215. var vWGMRMark03 = "";
  216. var vWGMRMark04 = "";
  217. var vWGMRMark05 = "";
  218. var vWGMRMark06 = "";
  219. var vWGMRMark07 = "";
  220. var vWGMRMarkTcls01 = "";
  221. var vWGMRMarkTcls02 = "";
  222. var vWGMRMarkTcls03 = "";
  223. var vWGMRMarkTcls04 = "";
  224. var vWGMRMarkTcls05 = "";
  225. var vWGMRMarkTcls06 = "";
  226. var vWGMRMarkTcls07 = "";
  227. vWgmrValue = pWgmrValue.split("▦");
  228. vWrFlagValue = pWrFlagValue.split("▦");
  229. vBfRslt = pBfOrgRslt.split("▦");
  230. vTclsBfRslt = pTclsBfOrgRslt.split("▦");
  231. //trace("vWgmrValue ==> " + vWgmrValue);
  232. /*for(var i=1; i <= vWgmrValue.length; i++){
  233. var vWgmr+""+String(i).getLeftPad(2, 0) = vWgmrValue[i-1];
  234. }
  235. for(var i=1; i <= vWrFlagValue.length; i++){
  236. var vWrFlag+""+String(i).getLeftPad(2, 0) = vWrFlagValue[i-1];
  237. }
  238. for(var i=1; i <= vWrFlagValue.length; i++){
  239. var vBfRslt+""+String(i).getLeftPad(2, 0) = parseFloat(vBfOrgRslt[i-1]);
  240. }*/
  241. var vWgmr01 = vWgmrValue[0];
  242. var vWrFlag01 = vWrFlagValue[0];
  243. if(!utlf_isNull(vWgmr01)){ //1(?S) 판정유형이 Y이면 ##하나의 판정값이 평균값에 대하여 +- ?SD 범위를 벗어난경우
  244. if((vOrgRslt > vAvg + vSdVal*vWgmr01) || (vOrgRslt < vAvg - vSdVal*vWgmr01)){ //결과 >= 평균 + 편차*? || 결과 <= 평균 - 편차*? 이면
  245. vWGMRMark += "1("+vWgmr01+"S)"+vWrFlag01+", ";
  246. vWGMRMark01 = vWrFlag01;
  247. //항목별 셋팅
  248. vWGMRMarkTcls += "1("+vWgmr01+"S)"+vWrFlag01+", ";
  249. vWGMRMarkTcls01 = vWrFlag01;
  250. }
  251. }
  252. //trace(vWGMRMark);
  253. var vWgmr02 = vWgmrValue[1];
  254. var vWrFlag02 = vWrFlagValue[1];
  255. if(!utlf_isNull(vWgmr02)){ //1(?S) 판정유형이 Y이면 ##하나의 판정값이 평균값에 대하여 +- ?SD 범위를 벗어난경우
  256. if((vOrgRslt > vAvg + vSdVal*vWgmr02) || (vOrgRslt < vAvg - vSdVal*vWgmr02)){ //결과 >= 평균 + 편차*? || 결과 <= 평균 - 편차*? 이면
  257. vWGMRMark += "1("+vWgmr02+"S)"+vWrFlag02+", ";
  258. vWGMRMark02 = vWrFlag02;
  259. //항목별 추가
  260. vWGMRMarkTcls += "1("+vWgmr02+"S)"+vWrFlag02+", ";
  261. vWGMRMarkTcls02 = vWrFlag02;
  262. }
  263. }
  264. //trace(vWGMRMark);
  265. var vWgmr03 = vWgmrValue[2];
  266. var vWrFlag03 = vWrFlagValue[2];
  267. if(!utlf_isNull(vWgmr03)){ //2(?S) 판정유형이 Y이면 ##연속된 2개의 값이 평균값에 대하여 같은방향으로 +- ?SD 범위를 벗어난 경우
  268. if(vBfRslt[0] != "" && String(vBfRslt[0]).isFloat()){
  269. if(((vOrgRslt > vAvg + vSdVal* vWgmr03) && (vBfRslt[0] > vAvg + vSdVal* vWgmr03)) || //결과 >= 평균 + 편차*? && 이전결과 >= 평균 - 편차*? 이거나
  270. ((vOrgRslt < vAvg - vSdVal* vWgmr03) && (vBfRslt[0] < vAvg - vSdVal* vWgmr03))){ //결과 <= 평균 + 편차*? && 이전결과 <= 평균 - 편차*? 이면
  271. vWGMRMark += "2("+vWgmr03+"S)"+vWrFlag03+", "; //현재 결과와 이전결과 모두가 같은방향으로 ?SD 범위를 벗어나면 2(?S)
  272. vWGMRMark03 = vWrFlag03;
  273. }
  274. }
  275. //항목별 추가
  276. if(vTclsBfRslt[0] != "" && String(vTclsBfRslt[0]).isFloat()){
  277. if(((vOrgRslt > vAvg + vSdVal* vWgmr03) && (vTclsBfRslt[0] > vAvg + vSdVal* vWgmr03)) || //결과 >= 평균 + 편차*? && 이전결과 >= 평균 - 편차*? 이거나
  278. ((vOrgRslt < vAvg - vSdVal* vWgmr03) && (vTclsBfRslt[0] < vAvg - vSdVal* vWgmr03))){ //결과 <= 평균 + 편차*? && 이전결과 <= 평균 - 편차*? 이면
  279. vWGMRMarkTcls += "2("+vWgmr03+"S)"+vWrFlag03+", "; //현재 결과와 이전결과 모두가 같은방향으로 ?SD 범위를 벗어나면 2(?S)
  280. vWGMRMarkTcls03 = vWrFlag03;
  281. }
  282. }
  283. }
  284. //trace(vWGMRMark);
  285. var vWgmr04 = vWgmrValue[3];
  286. var vWrFlag04 = vWrFlagValue[3];
  287. var vAbs = 0;
  288. var value = 0;
  289. if(!utlf_isNull(vWgmr04)){ //R(4S) 판정유형이 Y이면 ##연속된 2개의 값이 다른 방향으로 (하나는 #평균+2SD를 벗어나고 다른것은 평균 -2SD를 벗어난경우#)
  290. /*if(vBfRslt[0] != "" && String(vBfRslt[0]).isFloat()){
  291. if(((vOrgRslt > vAvg + vSdVal*2) && (vBfRslt[0] < vAvg - vSdVal*2)) || //결과 >= 평균 + 편차*2 && 이전결과 <= 평균 - 편차*2 이거나
  292. ((vOrgRslt < vAvg - vSdVal*2) && (vBfRslt[0] > vAvg + vSdVal*2))){ //결과 >= 평균 + 편차*2 && 이전결과 <= 평균 - 편차*2 이면
  293. vWGMRMark += "R(4S), "; //현재 결과와 이전결과가 다른방향으로 2SD 범위를 벗어나면 R(4S)
  294. vWGMRMark04 = "R(4S)";
  295. }
  296. }*/
  297. if(vBfRslt[0] != "" && String(vBfRslt[0]).isFloat()){
  298. if(Math.abs(vOrgRslt) > vAvg){
  299. vAbs = Math.abs(vOrgRslt - vBfRslt[0]);
  300. value = (vAbs / vSdVal);
  301. }
  302. if(value > vWgmr04){
  303. vWGMRMark += "R("+vWgmr04+"S)"+vWrFlag04+", ";
  304. vWGMRMark04 = vWrFlag04;
  305. }
  306. vAbs = 0;
  307. value = 0;
  308. if(Math.abs(vOrgRslt) > vAvg){
  309. vAbs = Math.abs(vOrgRslt - vTclsBfRslt[0]);
  310. value = (vAbs / vSdVal);
  311. }
  312. if(value > vWgmr04){
  313. vWGMRMarkTcls += "R("+vWgmr04+"S)"+vWrFlag04+", ";
  314. vWGMRMarkTcls04 = vWrFlag04;
  315. }
  316. }
  317. }
  318. //trace("value => " + value);
  319. //trace(vWGMRMark);
  320. var vWgmr05 = vWgmrValue[4];
  321. var vWrFlag05 = vWrFlagValue[4];
  322. if(!utlf_isNull(vWgmr05)){ //?(1S) 판정유형이 Y이면 ##연속된 ?개의 값이 (#같은 방면으로#)+- 1SD범위를 벗어난 경우 (이전결과 ?-1개 비교)
  323. var cnt1 = 0;
  324. var cnt2 = 0;
  325. var cnt3 = 0;
  326. var cnt4 = 0;
  327. var cnt5 = 0;
  328. var cnt6 = 0;
  329. //vWgmr05-2 번째 이전결과가 있고, 그전 결과들이 숫자일때
  330. if((vBfRslt[vWgmr05-2] != "" && vWgmr05>1) || (vOrgRslt != "" && vWgmr05==1)){
  331. if((vOrgRslt > vAvg + vSdVal) && String(vOrgRslt).isFloat()){
  332. cnt2++;
  333. }
  334. if((vOrgRslt < vAvg - vSdVal) && String(vOrgRslt).isFloat()){
  335. cnt3++;
  336. }
  337. for(var i=(vWgmr05-2); i >= 0; i--){
  338. if((vBfRslt[i] > vAvg + vSdVal)){
  339. cnt2++;
  340. }
  341. if((vBfRslt[i] < vAvg - vSdVal)){
  342. cnt3++;
  343. }
  344. }
  345. if((cnt2 == vWgmr05) || (cnt3 == vWgmr05)){
  346. vWGMRMark += vWgmr05+"(1S)"+vWrFlag05+", ";
  347. vWGMRMark05 = vWrFlag05;
  348. }
  349. }
  350. if((vTclsBfRslt[vWgmr05-2] != "" && vWgmr05>1) || (vOrgRslt != "" && vWgmr05==1)){
  351. if((vOrgRslt > vAvg + vSdVal) && String(vOrgRslt).isFloat()){
  352. cnt4++;
  353. }
  354. if((vOrgRslt < vAvg - vSdVal) && String(vOrgRslt).isFloat()){
  355. cnt5++;
  356. }
  357. for(var i=(vWgmr05-2); i >= 0; i--){
  358. if((vTclsBfRslt[i] > vAvg + vSdVal)){
  359. cnt4++;
  360. }
  361. if((vBfRslt[i] < vAvg - vSdVal)){
  362. cnt5++;
  363. }
  364. }
  365. if((cnt4 == vWgmr05) || (cnt5 == vWgmr05)){
  366. vWGMRMarkTcls += vWgmr05+"(1S)"+vWrFlag05+", ";
  367. vWGMRMarkTcls05 = vWrFlag05;
  368. }
  369. }
  370. }
  371. //trace(vWGMRMark);
  372. var vWgmr06 = vWgmrValue[5];
  373. var vWrFlag06 = vWrFlagValue[5];
  374. if(!utlf_isNull(vWgmr06)){ //?X 판정유형이 Y이면 ##연속된 ?개의 값이 평균의 어느 한쪽에 치우칠때 (이전결과 ?개 비교)
  375. var cnt1 = 0;
  376. var cnt2 = 0;
  377. var cnt3 = 0;
  378. var cnt4 = 0;
  379. var cnt5 = 0;
  380. //vWgmr06 번째 이전결과가 있고, 그전 결과들이 숫자일때
  381. if(vBfRslt[vWgmr06-2] != "" && vWgmr06>1){
  382. if((vOrgRslt > vAvg)){
  383. cnt2++;
  384. }
  385. if((vOrgRslt < vAvg)){
  386. cnt3++;
  387. }
  388. for(var i=(vWgmr06-2); i >= 0; i--){
  389. if(String(vBfRslt[i]).isFloat()){
  390. if(vBfRslt[i] > vAvg){
  391. cnt2++;
  392. }
  393. if(vBfRslt[i] < vAvg){
  394. cnt3++;
  395. }
  396. }
  397. }
  398. if((cnt2 == vWgmr06) || (cnt3 == vWgmr06)){
  399. vWGMRMark += vWgmr06+"X"+vWrFlag06+", ";
  400. vWGMRMark06 = vWrFlag06;
  401. }
  402. }
  403. if(vTclsBfRslt[vWgmr06-2] != "" && vWgmr06>1){
  404. if((vOrgRslt > vAvg)){
  405. cnt4++;
  406. }
  407. if((vOrgRslt < vAvg)){
  408. cnt5++;
  409. }
  410. for(var i=(vWgmr06-2); i >= 0; i--){
  411. if(String(vTclsBfRslt[i]).isFloat()){
  412. if(vTclsBfRslt[i] > vAvg){
  413. cnt4++;
  414. }
  415. if(vTclsBfRslt[i] < vAvg){
  416. cnt5++;
  417. }
  418. }
  419. }
  420. if((cnt4 == vWgmr06) || (cnt5 == vWgmr06)){
  421. vWGMRMarkTcls += vWgmr06+"X"+vWrFlag06+", ";
  422. vWGMRMarkTcls06 = vWrFlag06;
  423. }
  424. }
  425. }
  426. //trace(vWGMRMark);
  427. var vWgmr07 = vWgmrValue[6];
  428. var vWrFlag07 = vWrFlagValue[6];
  429. if(!utlf_isNull(vWgmr07)){ //?T 판정유형이 Y이면 ##값이 ?번 연속으로 높아지거나 낮아지거나
  430. var cnt1 = 0;
  431. var cnt2 = 0;
  432. var cnt3 = 0;
  433. var cnt4 = 0;
  434. var cnt5 = 0;
  435. //vWgmr07 번째 이전결과가 있고, 그전 결과들이 숫자일때
  436. if(vBfRslt[vWgmr07-2] != "" && vWgmr07>1){
  437. for(var i=(vWgmr07-2); i >= 0; i--){
  438. if( i > 0 ){
  439. if(String(vBfRslt[i]).isFloat()&& String(vBfRslt[i-1]).isFloat()){
  440. if(vBfRslt[i] > vBfRslt[i-1]){
  441. cnt2++;
  442. }
  443. if(vBfRslt[i] < vBfRslt[i-1]){
  444. cnt3++;
  445. }
  446. }
  447. }else if( i == 0){
  448. if(String(vBfRslt[i]).isFloat()){
  449. if(vBfRslt[i] > vOrgRslt){
  450. cnt2++;
  451. }
  452. if(vBfRslt[i] < vOrgRslt){
  453. cnt3++;
  454. }
  455. }
  456. }
  457. }
  458. if( (cnt2 == vWgmr07) || (cnt3 == vWgmr07) ){
  459. vWGMRMark += vWgmr07+"T"+vWrFlag07+", ";
  460. vWGMRMark07 = vWrFlag07;
  461. }
  462. }
  463. if(vTclsBfRslt[vWgmr07-2] != "" && vWgmr07>1){
  464. for(var i=(vWgmr07-2); i >= 0; i--){
  465. if( i > 0 ){
  466. if(String(vTclsBfRslt[i]).isFloat()&& String(vTclsBfRslt[i-1]).isFloat()){
  467. if(vTclsBfRslt[i] > vTclsBfRslt[i-1]){
  468. cnt4++;
  469. }
  470. if(vTclsBfRslt[i] < vTclsBfRslt[i-1]){
  471. cnt5++;
  472. }
  473. }
  474. }else if( i == 0){
  475. if(String(vTclsBfRslt[i]).isFloat()){
  476. if(vBfRslt[i] > vOrgRslt){
  477. cnt4++;
  478. }
  479. if(vBfRslt[i] < vOrgRslt){
  480. cnt5++;
  481. }
  482. }
  483. }
  484. }
  485. if( (cnt4 == vWgmr07) || (cnt5 == vWgmr07) ){
  486. vWGMRMarkTcls += vWgmr07+"T"+vWrFlag07+", ";
  487. vWGMRMarkTcls07 = vWrFlag07;
  488. }
  489. }
  490. }
  491. //trace(vWGMRMark);
  492. if(vWGMRMark.length != "0" || vWGMRMarkTcls.length != "0"){
  493. if(vWGMRMark.length == "0"){
  494. vWGMRMark = "▦▩▩▩▩▩▩";
  495. } else {
  496. vWGMRMark = vWGMRMark.substring(0, vWGMRMark.length-2); //끝자리 두자리 ", "
  497. vWGMRMark += "▦" + vWGMRMark01 + "▩" + vWGMRMark02 + "▩" + vWGMRMark03 + "▩" + vWGMRMark04 + "▩" + vWGMRMark05 + "▩" + vWGMRMark06 + "▩" + vWGMRMark07;
  498. }
  499. if(vWGMRMarkTcls.length == "0"){
  500. vWGMRMark += "▦▦▩▩▩▩▩▩";
  501. } else {
  502. vWGMRMark += "▦" + vWGMRMarkTcls.substring(0, vWGMRMarkTcls.length-2); //끝자리 두자리 ", "
  503. vWGMRMark += "▦" + vWGMRMarkTcls01 + "▩" + vWGMRMarkTcls02 + "▩" + vWGMRMarkTcls03 + "▩" + vWGMRMarkTcls04 + "▩" + vWGMRMarkTcls05 + "▩" + vWGMRMarkTcls06 + "▩" + vWGMRMarkTcls07;
  504. }
  505. trace(vWGMRMark);
  506. return vWGMRMark;
  507. }else return vWGMRMark;
  508. }
  509. //판정시 결과 허용치 변경 포함(<=) 에서 허용(<)로 변경요청 8274차경호 _ 승현 수정 20090929
  510. function fCOMLIS_QCJudgWGMR_backup(pOrgRslt, pWgmr, pAvg, pSdVal, pBfRslt, pBfRslt2, pBfRslt3, pBfRslt4, pBfRslt5, pBfRslt6, pBfRslt7, pBfRslt8, pBfRslt9){
  511. var vWGMRMark = "";
  512. var vOrgRslt = parseFloat(pOrgRslt);
  513. var vAvg = parseFloat(pAvg);
  514. var vSdVal = parseFloat(pSdVal);
  515. var vBfRslt = parseFloat(pBfRslt);
  516. var vBfRslt2 = parseFloat(pBfRslt2);
  517. var vBfRslt3 = parseFloat(pBfRslt3);
  518. var vBfRslt4 = parseFloat(pBfRslt4);
  519. var vBfRslt5 = parseFloat(pBfRslt5);
  520. var vBfRslt6 = parseFloat(pBfRslt6);
  521. var vBfRslt7 = parseFloat(pBfRslt7);
  522. var vBfRslt8 = parseFloat(pBfRslt8);
  523. var vBfRslt9 = parseFloat(pBfRslt9);
  524. if(pWgmr.substring(0, 1) == "Y"){ //1(2S) 판정유형이 Y이면 ##하나의 판정값이 평균값에 대하여 +- 2SD 범위를 벗어난경우
  525. if((vOrgRslt > vAvg + vSdVal*2) || (vOrgRslt < vAvg - vSdVal*2)){ //결과 >= 평균 + 편차*2 || 결과 <= 평균 - 편차*2 이면
  526. vWGMRMark += "1(2S), ";
  527. }
  528. }
  529. if(pWgmr.substring(1, 1) == "Y"){ //1(3S) 판정유형이 Y이면 ##하나의 판정값이 평균값에 대하여 +- 3SD 범위를 벗어난경우
  530. if((vOrgRslt > vAvg + vSdVal*3) || (vOrgRslt < vAvg - vSdVal*3)){ //결과 >= 평균 + 편차*3 || 결과 <= 평균 - 편차*2 이면
  531. vWGMRMark += "1(3S), ";
  532. }
  533. }
  534. if(pWgmr.substring(2, 1) == "Y"){ //2(2S) 판정유형이 Y이면 ##연속된 2개의 값이 평균값에 대하여 같은방향으로 +- 2SD 범위를 벗어난 경우
  535. if(pBfRslt != "" && String(pBfRslt).isFloat()){
  536. if(((vOrgRslt > vAvg + vSdVal*2) && (vBfRslt > vAvg + vSdVal*2)) || //결과 >= 평균 + 편차*2 && 이전결과 >= 평균 - 편차*2 이거나
  537. ((vOrgRslt < vAvg - vSdVal*2) && (vBfRslt < vAvg - vSdVal*2))){ //결과 <= 평균 + 편차*2 && 이전결과 <= 평균 - 편차*2 이면
  538. vWGMRMark += "2(2S), "; //현재 결과와 이전결과 모두가 같은방향으로 2SD 범위를 벗어나면 2(2S)
  539. }
  540. }
  541. }//end if(pWgmr.substring(3, 1) == "Y"){
  542. if(pWgmr.substring(3, 1) == "Y"){ //R(4S) 판정유형이 Y이면 ##연속된 2개의 값이 다른 방향으로 (하나는 #평균+2SD를 벗어나고 다른것은 평균 -2SD를 벗어난경우#)
  543. if(pBfRslt != "" && String(pBfRslt).isFloat()){
  544. if(((vOrgRslt > vAvg + vSdVal*2) && (vBfRslt < vAvg - vSdVal*2)) || //결과 >= 평균 + 편차*2 && 이전결과 <= 평균 - 편차*2 이거나
  545. ((vOrgRslt < vAvg - vSdVal*2) && (vBfRslt > vAvg + vSdVal*2))){ //결과 >= 평균 + 편차*2 && 이전결과 <= 평균 - 편차*2 이면
  546. vWGMRMark += "R(4S), "; //현재 결과와 이전결과가 다른방향으로 2SD 범위를 벗어나면 R(4S)
  547. }
  548. }
  549. }//end if(pWgmr.substring(4, 1) == "Y"){
  550. if(pWgmr.substring(4, 1) == "Y"){ //4(1S) 판정유형이 Y이면 ##연속된 4개의 값이 (#같은 방면으로#)+- 1SD범위를 벗어난 경우 (이전결과 4개 비교)
  551. if(pBfRslt3 != "" && String(pBfRslt).isFloat() && String(pBfRslt2).isFloat() && String(pBfRslt3).isFloat()){ //세번째 이전 결과가 있다면... 현재값과 이전결과3개 총 4개값을 비교해서 판정해야하기때문에..
  552. if(((vOrgRslt > vAvg + vSdVal) && (vBfRslt > vAvg + vSdVal) && (vBfRslt2 > vAvg + vSdVal) && (vBfRslt3 > vAvg + vSdVal))||
  553. ((vOrgRslt < vAvg - vSdVal) && (vBfRslt < vAvg - vSdVal) && (vBfRslt2 < vAvg - vSdVal) && (vBfRslt3 < vAvg - vSdVal))){
  554. vWGMRMark += "4(1S), "; //이전결과와 현재 결과를 포함한 4개의 결과가 1SD 범위를 벗어나면 4(1S)
  555. }
  556. }
  557. }//end if(pWgmr.substring(5, 1) == "Y"){
  558. if(pWgmr.substring(5, 1) == "Y"){ //10X 판정유형이 Y이면 ##연속된 10개의 값이 평균의 어느 한쪽에 치우칠때 (이전결과 10개 비교)
  559. if(pBfRslt9 != "" && String(pBfRslt).isFloat() && String(pBfRslt2).isFloat() && String(pBfRslt3).isFloat() && String(pBfRslt4).isFloat() && String(pBfRslt5).isFloat() && String(pBfRslt6).isFloat() && String(pBfRslt7).isFloat() && String(pBfRslt8).isFloat() && String(pBfRslt9).isFloat()){ //9번째 이전결과가 존재한다면 판정 가능 (현재값 + 이전결과9개 = 총 10개)
  560. if(((vOrgRslt > vAvg) && (vBfRslt > vAvg) && (vBfRslt2 > vAvg) && (vBfRslt3 > vAvg) && (vBfRslt4 > vAvg) && (vBfRslt5 > vAvg) &&
  561. (vBfRslt6 > vAvg) && (vBfRslt7 > vAvg) && (vBfRslt8 > vAvg) && (vBfRslt9 > vAvg)) ||
  562. ((vOrgRslt < vAvg) && (vBfRslt < vAvg) && (vBfRslt2 < vAvg) && (vBfRslt3 < vAvg) && (vBfRslt4 < vAvg) && (vBfRslt5 < vAvg) &&
  563. (vBfRslt6 < vAvg) && (vBfRslt7 < vAvg) && (vBfRslt8 < vAvg) && (vBfRslt9 < vAvg))){
  564. vWGMRMark += "10X, ";
  565. }
  566. }
  567. }//end if(pWgmr.substring(6, 1) == "Y"){
  568. if(vWGMRMark.length != "0"){
  569. return vWGMRMark.substring(0, vWGMRMark.length-2); //끝자리 두자리
  570. }else return vWGMRMark;
  571. }
  572. function fLisQCBarcodePrint_NewOCX(pRef)
  573. {
  574. var cntHR = pRef.rowcount;
  575. var barcdRef = "/root/main/barcdprntsetup/prntsetupinfo/setupinfo";
  576. var sPrntKind = ds_data_setupinfo.getColumn(0, "prntkind");
  577. var sSndMsg = "";
  578. var portOpenTF = ""; //오픈 성공 여부
  579. var iXPos = 0;
  580. var iYPos = 0;
  581. if(cntHR > 0 && sPrntKind != 0)
  582. {
  583. var sCommKind = ds_data_setupinfo.getColumn(0, "commkind");
  584. var sLeftBank = ds_data_blank.getColumn(0, "left");
  585. var sTopBank = ds_data_blank.getColumn(0, "top");
  586. if(sCommKind == "01")
  587. {
  588. var sSetUpVal = ds_data_comm01.getColumn(0, "setupval");
  589. }
  590. else if(sCommKind == "02")
  591. {
  592. var sComm = ds_data_comm02.getColumn(0, "comm");
  593. var sDataBit = ds_data_comm02.getColumn(0, "databit");
  594. var sStopBit = ds_data_comm02.getColumn(0, "stopbit");
  595. var sBaudRate = ds_data_comm02.getColumn(0, "baudrate");
  596. var sParity = ds_data_comm02.getColumn(0, "parity");
  597. CommAX.CommPort = sComm;
  598. CommAX.Settings = sBaudRate + "," + sParity + "," + sDataBit + "," + sStopBit;
  599. portOpenTF = CommAX.PortOpen("true");
  600. }
  601. else if(sCommKind == "03")
  602. {
  603. var sSetUpVal = ds_data_comm03.getColumn(0, "setupval");
  604. }
  605. var sBfBcno = null;
  606. if((portOpenTF == "TRUE" && sCommKind == "02") || (sCommKind == "01") || (sCommKind == "03"))
  607. {
  608. for(var i = 0 ; i < cntHR; i++)
  609. {
  610. var sSndMsg = "";
  611. var sBcno = pRef.getColumn(i, "bcno");
  612. var sMatrnm = pRef.getColumn(i, "matrnm");
  613. var sLevlnm = pRef.getColumn(i, "levlnm");
  614. var sAcptdt = pRef.getColumn(i, "acptdt");
  615. var sEqmtcd = pRef.getColumn(i, "eqmtcd");
  616. var sLotNo = pRef.getColumn(i, "lotno");
  617. var sTestroom = pRef.getColumn(i, "testroom");
  618. if (utlf_isNull(sLeftBank) || sLeftBank == "-") sLeftBank = 0;
  619. if (utlf_isNull(sTopBank) || sTopBank == "-") sTopBank = 0;
  620. if(sPrntKind == "1" || sPrntKind == "5")
  621. {
  622. sSndMsg += lzzfBP_StartFormat(0, 0); // 시작위치 셋팅
  623. iXPos = Number(sLeftBank) + 95;
  624. iYPos = Number(sTopBank) + 25;
  625. sSndMsg += lzzfBP_ChangeFont("C", 15, 15); // 폰트 설정
  626. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, "*" + sBcno + "*"); //바코드번호
  627. iXPos = Number(sLeftBank) + 80;
  628. iYPos = Number(sTopBank) + 45;
  629. sSndMsg += lzzfBP_ChangeFont("F", 10, 10);
  630. sSndMsg += lzzfBP_BarCode_Code39(iXPos, iYPos, "N", 100, sBcno); // 바코드
  631. iXPos = Number(sLeftBank) + 30;
  632. iYPos = Number(sTopBank) + 160;
  633. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정 //영문출력
  634. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sMatrnm + "(" + sLotNo + ")"); //물질명(LotNo)
  635. iXPos = Number(sLeftBank) + 30;
  636. iYPos = Number(sTopBank) + 195;
  637. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정
  638. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sLevlnm); //레벨명
  639. iXPos = Number(sLeftBank) + 30;
  640. iYPos = Number(sTopBank) + 230;
  641. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정
  642. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sEqmtcd); //장비명
  643. iXPos = Number(sLeftBank) + 240;
  644. iYPos = Number(sTopBank) + 195;
  645. sSndMsg += CommAX.PrtImgOut(iXPos, iYPos, sTestroom, 1, 1); //검사실명
  646. sSndMsg += CommAX.HanImageData();
  647. iXPos = Number(sLeftBank) + 240;
  648. iYPos = Number(sTopBank) + 230;
  649. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정
  650. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sAcptdt.substr(0, 16)); //라벨발행일시
  651. sSndMsg += lzzfBP_EndFormat(1); // 접수바코드출력수
  652. if (i == 1)
  653. { //첫번째 항목 출력
  654. if(sCommKind == "01")
  655. {
  656. CommAX.SendMessageToLPT(sSndMsg);
  657. }
  658. else if(sCommKind == "02")
  659. {
  660. CommAX.SendMessage(sSndMsg);
  661. }
  662. sBfBcno = sBcno;//
  663. }
  664. else if(sBfBcno != sBcno)
  665. {
  666. if(sCommKind == "01")
  667. {
  668. CommAX.SendMessageToLPT(sSndMsg);
  669. }
  670. else if(sCommKind == "02")
  671. {
  672. CommAX.SendMessage(sSndMsg);
  673. }
  674. sBfBcno = sBcno;
  675. }
  676. }
  677. else if(sPrntKind == "2" || sPrntKind == "6" || sPrntKind == "7")
  678. {
  679. sSndMsg = ""+String.fromCharCode(27)+"A"+String.fromCharCode(27)+"A"+"103500500";
  680. iXPos = Number(sLeftBank) + 150;
  681. iYPos = Number(sTopBank) + 25;
  682. sSndMsg += ""+String.fromCharCode(27)+"V"+iYPos+String.fromCharCode(27)+"H"+iXPos+String.fromCharCode(27)+"S*"+sBcno+"*";
  683. iXPos = Number(sLeftBank) + 80;
  684. iYPos = Number(sTopBank) + 45;
  685. sSndMsg += ""+String.fromCharCode(27)+"V"+iYPos+String.fromCharCode(27)+"H"+iXPos+String.fromCharCode(27)+"BG02100"+sBcno;
  686. iXPos = Number(sLeftBank) + 30;
  687. iYPos = Number(sTopBank) + 160;
  688. sSndMsg += ""+String.fromCharCode(27)+"V"+iYPos+String.fromCharCode(27)+"H"+iXPos+String.fromCharCode(27)+"S"+sMatrnm+ "(" + sLotNo + ")";
  689. iXPos = Number(sLeftBank) + 30;
  690. iYPos = Number(sTopBank) + 195;
  691. sSndMsg += ""+String.fromCharCode(27)+"V"+iYPos+String.fromCharCode(27)+"H"+iXPos+String.fromCharCode(27)+"S"+sLevlnm;
  692. iXPos = Number(sLeftBank) + 30;
  693. iYPos = Number(sTopBank) + 230;
  694. sSndMsg += ""+String.fromCharCode(27)+"V"+iYPos+String.fromCharCode(27)+"H"+iXPos+String.fromCharCode(27)+"S"+sEqmtcd;
  695. iXPos = Number(sLeftBank) + 240;
  696. iYPos = Number(sTopBank) + 195;
  697. sSndMsg += CommAX.PrtImgOut(iYPos, iXPos, sTestroom);
  698. iXPos = Number(sLeftBank) + 240;
  699. iYPos = Number(sTopBank) + 230;
  700. sSndMsg += ""+String.fromCharCode(27)+"V"+iYPos+String.fromCharCode(27)+"H"+iXPos+String.fromCharCode(27)+"S"+sAcptdt.substr(0, 16);
  701. if (i == 0)
  702. {
  703. sSndMsg += ""+String.fromCharCode(27)+"Q"+"1"+String.fromCharCode(27)+"Z";
  704. CommAX.SendMsg(sSndMsg);
  705. }
  706. else
  707. {
  708. sSndMsg += ""+String.fromCharCode(27)+"Q"+"1"+String.fromCharCode(27)+"Z";
  709. CommAX.SendMsg(sSndMsg);
  710. sBfBcno = sBcno;
  711. }
  712. }
  713. else if(sPrntKind == "8" )
  714. {
  715. var sB472size = "";
  716. var sB472sizegbn = ds_data_blank.getColumn(0, "b472size");
  717. if(sB472sizegbn == "2")
  718. {
  719. sB472size = "0340,0620,0340"; // 기존라벨
  720. }
  721. else
  722. {
  723. sB472size = "0350,0550,0330"; // nUsize
  724. }
  725. sSndMsg += "{D" + sB472size + "|}"; // 라벨사이즈
  726. sSndMsg += "{C|}"; // 버퍼클리어
  727. sSndMsg += "{AX;-000,-000,+00|}"; // 피트량
  728. iXPos = Number(sLeftBank) + 150;
  729. iYPos = Number(sTopBank) + 35;
  730. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, "* " + sBcno + " *"); //바코드번호
  731. iXPos = Number(sLeftBank)+80;
  732. iYPos = Number(sTopBank)+45;
  733. sSndMsg += lzzfBP_BarCode_Code39_B472(iXPos, iYPos, 5, 4, "*" + sBcno + "*",110); // 바코드
  734. iXPos = Number(sLeftBank)+40;
  735. iYPos = Number(sTopBank)+185;
  736. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, sMatrnm + "(" + sLotNo + ")"); //물질명(LotNo)
  737. iXPos = Number(sLeftBank)+40;
  738. iYPos = Number(sTopBank)+195;
  739. sSndMsg += lzzfBP_HanDisp24(sLevlnm, iXPos, iYPos); // 레벨명
  740. iXPos = Number(sLeftBank)+40;
  741. iYPos = Number(sTopBank)+255;
  742. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, sEqmtcd); //장비명
  743. iXPos = Number(sLeftBank) + 330;
  744. iYPos = Number(sTopBank)+195;
  745. sSndMsg += lzzfBP_HanDisp24(sTestroom, iXPos, iYPos); // 검사실명
  746. iXPos = Number(sLeftBank)+240;
  747. iYPos = Number(sTopBank)+290;
  748. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, sAcptdt.substr(0, 16)); //라벨발행일시
  749. sSndMsg += lzzfBP_EndFormat_B472(1);
  750. if (i == 0)
  751. {
  752. if(sCommKind == "01")
  753. {
  754. CommAX.SendMessageToLPT(sSndMsg);
  755. }
  756. else if(sCommKind == "02")
  757. {
  758. CommAX.SendMessage(sSndMsg);
  759. }
  760. sBfBcno = sBcno;//
  761. }
  762. else if(sBfBcno != sBcno)
  763. {
  764. if(sCommKind == "01")
  765. {
  766. CommAX.SendMessageToLPT(sSndMsg);
  767. }
  768. else if(sCommKind == "02")
  769. {
  770. CommAX.SendMessage(sSndMsg);
  771. }
  772. sBfBcno = sBcno;
  773. }
  774. }
  775. }
  776. CommAX.PortOpen("false");
  777. }
  778. else
  779. {
  780. sysf_messageBox("아래 사항을 확인후 재출력해주십시오."
  781. + " \n 1.프린트설정 화면에서 통신유형을 com 으로 선택한 경우 port 번호 확인"
  782. + " \n 2.케이블 확인"
  783. + " \n 3.먼저 출력중인 바코드 확인(모두 출력된 후 재출력하십시오.)", "I", "");
  784. return;
  785. }
  786. }
  787. }
  788. function fLisQCBarcodePrint_NewOCX2(pRef)
  789. {
  790. var cntHR = pRef.rowcount;
  791. var barcdRef = "/root/main/barcdprntsetup/prntsetupinfo/setupinfo";
  792. var sPrntKind = ds_data_setupinfo.getColumn(0, "prntkind");
  793. var sSndMsg = "";
  794. var portOpenTF = ""; //오픈 성공 여부
  795. var iXPos = 0;
  796. var iYPos = 0;
  797. alert("12121212");
  798. if(cntHR > 0 && sPrntKind != 0)
  799. {
  800. var sCommKind = ds_data_setupinfo.getColumn(0, "commkind");
  801. var sLeftBank = ds_data_blank.getColumn(0, "left");
  802. var sTopBank = ds_data_blank.getColumn(0, "top");
  803. if(sCommKind == "01")
  804. {
  805. var sSetUpVal = ds_data_comm01.getColumn(0, "setupval");
  806. }
  807. else if(sCommKind == "02")
  808. {
  809. var sComm = ds_data_comm02.getColumn(0, "comm");
  810. var sDataBit = ds_data_comm02.getColumn(0, "databit");
  811. var sStopBit = ds_data_comm02.getColumn(0, "stopbit");
  812. var sBaudRate = ds_data_comm02.getColumn(0, "baudrate");
  813. var sParity = ds_data_comm02.getColumn(0, "parity");
  814. CommAX.CommPort = sComm;
  815. CommAX.Settings = sBaudRate + "," + sParity + "," + sDataBit + "," + sStopBit;
  816. portOpenTF = CommAX.PortOpen("true");
  817. }
  818. else if(sCommKind == "03")
  819. {
  820. var sSetUpVal = ds_data_comm03.getColumn(0, "setupval");
  821. }
  822. var sBfBcno = null;
  823. if((portOpenTF == "TRUE" && sCommKind == "02") || (sCommKind == "01") || (sCommKind == "03"))
  824. {
  825. for(var i = 0 ; i < cntHR; i++)
  826. {
  827. var sSndMsg = "";
  828. var sBcno = pRef.getColumn(i, "bcno");
  829. var sMatrnm = pRef.getColumn(i, "matrnm");
  830. var sLevlnm = pRef.getColumn(i, "levlnm");
  831. var sAcptdt = pRef.getColumn(i, "acptdt");
  832. var sEqmtcd = pRef.getColumn(i, "eqmtcd");
  833. var sLotNo = pRef.getColumn(i, "lotno");
  834. var sTestroom = pRef.getColumn(i, "testroom");
  835. if (utlf_isNull(sLeftBank) || sLeftBank == "-") sLeftBank = 0;
  836. if (utlf_isNull(sTopBank) || sTopBank == "-") sTopBank = 0;
  837. if(sPrntKind == "9")
  838. {
  839. sSndMsg = "^XA^SEE:UHANGUL.DAT^FS^CWQ,E:kfont3.FNT^FS";
  840. sSndMsg += lzzfBP_StartFormat(0, 0); // 시작위치 셋팅
  841. iXPos = Number(sLeftBank) + 140;
  842. iYPos = Number(sTopBank) + 25;
  843. sSndMsg += lzzfBP_ChangeFont("F", 20, 20); // 폰트 설정
  844. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, "*" + sBcno + "*"); //바코드번호
  845. iXPos = Number(sLeftBank) + 80;
  846. iYPos = Number(sTopBank) + 50;
  847. sSndMsg += lzzfBP_ChangeFont("F", 10, 10);
  848. sSndMsg += lzzfBP_BarCode_Code39_300dpi(iXPos, iYPos, "N", 120, "*" + sBcno + "*");
  849. //iXPos = Number(sLeftBank) + 30;
  850. //iYPos = Number(sTopBank) + 185;
  851. //sSndMsg += lzzfBP_ChangeFont("F", 10, 10); // 폰트 설정 //영문출력 이재오 막다 2018.10.29일
  852. //sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sMatrnm + "(" + sLotNo + ")"); //물질명(LotNo)
  853. iWidth = 0;
  854. aStr = "";
  855. aFlag = new Array();
  856. iXPos = Number(sLeftBank) + 30;
  857. sMatrnm = sMatrnm + "(" + sLotNo + ")";
  858. if(!utlf_isNull(sMatrnm)) {
  859. for (var j = 0; j < sMatrnm.length; j++) {
  860. oneChar = sMatrnm.charAt(j);
  861. test_rtn = "";
  862. test_he = "";
  863. test_rtn = lpzfGetHanGul3(oneChar);
  864. test_he = test_rtn.substring(0,1);
  865. if(!utlf_isNull(test_he))
  866. {
  867. //----------------------
  868. if (test_he == "E") {
  869. iYPos = Number(sTopBank) + 185;
  870. sSndMsg += "^CFC10,10^FO"+(Number(iXPos)+Number(iWidth))+","+ iYPos +"^FD" + oneChar + "^FS"; // 검사코드리스트명(영문)
  871. iWidth = iWidth + (Number(oneChar.length) * 12);
  872. } else {
  873. iYPos = Number(sTopBank) + 185;
  874. sSndMsg += "^CI14^FO"+(Number(iXPos)+Number(iWidth))+","+ iYPos +"^AQN,30,30^FH^FD" + oneChar + "^FS^CI1"; // 검사코드리스트(한글)
  875. iWidth = iWidth + (Number(oneChar.length) * 30);
  876. }
  877. }
  878. }
  879. }else{
  880. iXPos = Number(sLeftBank) + 30;
  881. iYPos = Number(sTopBank) + 185;
  882. sSndMsg += lzzfBP_ChangeFont("C", 20, 20); // 폰트 설정
  883. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sMatrnm);
  884. };
  885. iXPos = Number(sLeftBank) + 30;
  886. iYPos = Number(sTopBank) + 220;
  887. sSndMsg += lzzfBP_ChangeFont("F", 10, 10); // 폰트 설정
  888. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sLevlnm); //레벨명
  889. iXPos = Number(sLeftBank) + 30;
  890. iYPos = Number(sTopBank) + 255;
  891. sSndMsg += lzzfBP_ChangeFont("F", 10, 10); // 폰트 설정
  892. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sEqmtcd); //장비명
  893. iXPos = Number(sLeftBank) + 330;
  894. iYPos = Number(sTopBank) + 220;
  895. sSndMsg += "^CI14^FO" + iXPos + ","+ iYPos + "^AQN,30,30^FH^FD"+ sTestroom +"^FS^CI1";
  896. iXPos = Number(sLeftBank) + 330;
  897. iYPos = Number(sTopBank) + 255;
  898. sSndMsg += lzzfBP_ChangeFont("F", 10, 10); // 폰트 설정
  899. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sAcptdt.substr(0, 16)); //라벨발행일시
  900. sSndMsg += lzzfBP_EndFormat(1); // 접수바코드출력수
  901. if (i == 1){ //첫번째 항목 출력
  902. //CommAX.SendMessage(sSndMsg);
  903. CommAX.SendMsg(sSndMsg);
  904. CommAX.SendMessage(sSndMsg);
  905. sBfBcno = sBcno;//
  906. }else if(sBfBcno != sBcno){ //두번째부터는 바코드번호 비교하여 다르면 출력
  907. //CommAX.SendMessage(sSndMsg);
  908. CommAX.SendMsg(sSndMsg);
  909. sBfBcno = sBcno;//
  910. }
  911. }
  912. else if(sPrntKind == "11")
  913. {
  914. sSndMsg = "^XA^SEE:UHANGUL.DAT^FS^CWQ,E:kfont3.FNT^FS";
  915. sSndMsg += lzzfBP_StartFormat(0, 0); // 시작위치 셋팅
  916. iXPos = Number(sLeftBank) + 95;
  917. iYPos = Number(sTopBank) + 25;
  918. sSndMsg += lzzfBP_ChangeFont("C", 15, 15); // 폰트 설정
  919. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, "*" + sBcno + "*"); //바코드번호
  920. iXPos = Number(sLeftBank) + 80;
  921. iYPos = Number(sTopBank) + 45;
  922. sSndMsg += lzzfBP_ChangeFont("F", 10, 10);
  923. sSndMsg += lzzfBP_BarCode_Code39(iXPos, iYPos, "N", 100, sBcno); // 바코드
  924. //이재오 2018.1030일 물질명 한글 인식토록 수정.
  925. // iXPos = Number(sLeftBank) + 30;
  926. // iYPos = Number(sTopBank) + 160;
  927. // sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정 //영문출력
  928. // sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sMatrnm + "(" + sLotNo + ")"); //물질명(LotNo)
  929. iWidth = 0;
  930. aStr = "";
  931. aFlag = new Array();
  932. iXPos = Number(sLeftBank) + 30;
  933. sMatrnm = sMatrnm + "(" + sLotNo + ")";
  934. if(!utlf_isNull(sMatrnm)) {
  935. for (var j = 0; j < sMatrnm.length; j++) {
  936. oneChar = sMatrnm.charAt(j);
  937. test_rtn = "";
  938. test_he = "";
  939. test_rtn = lpzfGetHanGul3(oneChar);
  940. test_he = test_rtn.substring(0,1);
  941. if(!utlf_isNull(test_he))
  942. {
  943. //----------------------
  944. if (test_he == "E") {
  945. iYPos = Number(sTopBank) + 160;
  946. sSndMsg += "^CFC10,10^FO"+(Number(iXPos)+Number(iWidth))+","+ iYPos +"^FD" + oneChar + "^FS"; // 검사코드리스트명(영문)
  947. iWidth = iWidth + (Number(oneChar.length) * 12);
  948. } else {
  949. iYPos = Number(sTopBank) + 160;
  950. sSndMsg += "^CI14^FO"+(Number(iXPos)+Number(iWidth))+","+ iYPos +"^AQN,30,30^FH^FD" + oneChar + "^FS^CI1"; // 검사코드리스트(한글)
  951. iWidth = iWidth + (Number(oneChar.length) * 30);
  952. }
  953. }
  954. }
  955. }else{
  956. iXPos = Number(sLeftBank) + 30;
  957. iYPos = Number(sTopBank) + 160;
  958. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정
  959. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sMatrnm);
  960. };
  961. iXPos = Number(sLeftBank) + 30;
  962. iYPos = Number(sTopBank) + 195;
  963. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정
  964. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sLevlnm); //레벨명
  965. iXPos = Number(sLeftBank) + 30;
  966. iYPos = Number(sTopBank) + 230;
  967. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정
  968. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sEqmtcd); //장비명
  969. iXPos = Number(sLeftBank) + 240;
  970. iYPos = Number(sTopBank) + 195;
  971. sSndMsg += "^CI14^FO" + iXPos + ","+ iYPos + "^AQN,30,30^FH^FD"+ sTestroom +"^FS^CI1";
  972. sSndMsg += CommAX.PrtImgOut(iXPos, iYPos, sTestroom, 1, 1); //검사실명
  973. sSndMsg += CommAX.HanImageData();
  974. iXPos = Number(sLeftBank) + 240;
  975. iYPos = Number(sTopBank) + 230;
  976. sSndMsg += lzzfBP_ChangeFont("C", 10, 10); // 폰트 설정
  977. sSndMsg += lzzfBP_FieldDataA(iXPos, iYPos, sAcptdt.substr(0, 16)); //라벨발행일시
  978. sSndMsg += lzzfBP_EndFormat(1); // 접수바코드출력수
  979. if (i == 1)
  980. { //첫번째 항목 출력
  981. //CommAX.SendMessage(sSndMsg);
  982. CommAX.SendMsg(sSndMsg);
  983. sBfBcno = sBcno;//
  984. }
  985. else if(sBfBcno != sBcno)
  986. {
  987. //CommAX.SendMessage(sSndMsg);
  988. CommAX.SendMsg(sSndMsg);
  989. sBfBcno = sBcno;
  990. }
  991. }
  992. else if(sPrntKind == "8" )
  993. {
  994. var sB472size = "";
  995. var sB472sizegbn = ds_data_blank.getColumn(0, "b472size");
  996. if(sB472sizegbn == "2")
  997. {
  998. sB472size = "0340,0620,0340"; // 기존라벨
  999. }
  1000. else
  1001. {
  1002. sB472size = "0350,0550,0330"; // nUsize
  1003. }
  1004. sSndMsg += "{D" + sB472size + "|}"; // 라벨사이즈
  1005. sSndMsg += "{C|}"; // 버퍼클리어
  1006. sSndMsg += "{AX;-000,-000,+00|}"; // 피트량
  1007. iXPos = Number(sLeftBank) + 150;
  1008. iYPos = Number(sTopBank) + 35;
  1009. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, "* " + sBcno + " *"); //바코드번호
  1010. iXPos = Number(sLeftBank)+80;
  1011. iYPos = Number(sTopBank)+45;
  1012. sSndMsg += lzzfBP_BarCode_Code39_B472(iXPos, iYPos, 5, 4, "*" + sBcno + "*",110); // 바코드
  1013. iXPos = Number(sLeftBank)+40;
  1014. iYPos = Number(sTopBank)+185;
  1015. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, sMatrnm + "(" + sLotNo + ")"); //물질명(LotNo)
  1016. iXPos = Number(sLeftBank)+40;
  1017. iYPos = Number(sTopBank)+195;
  1018. sSndMsg += lzzfBP_HanDisp24(sLevlnm, iXPos, iYPos); // 레벨명
  1019. iXPos = Number(sLeftBank)+40;
  1020. iYPos = Number(sTopBank)+255;
  1021. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, sEqmtcd); //장비명
  1022. iXPos = Number(sLeftBank) + 330;
  1023. iYPos = Number(sTopBank)+195;
  1024. sSndMsg += lzzfBP_HanDisp24(sTestroom, iXPos, iYPos); // 검사실명
  1025. iXPos = Number(sLeftBank)+240;
  1026. iYPos = Number(sTopBank)+290;
  1027. sSndMsg += lzzfBP_FieldDataG_B472(iXPos, iYPos, sAcptdt.substr(0, 16)); //라벨발행일시
  1028. sSndMsg += lzzfBP_EndFormat_B472(1);
  1029. if (i == 0)
  1030. {
  1031. if(sCommKind == "01")
  1032. {
  1033. CommAX.SendMessageToLPT(sSndMsg);
  1034. }
  1035. else if(sCommKind == "02")
  1036. {
  1037. CommAX.SendMessage(sSndMsg);
  1038. }
  1039. sBfBcno = sBcno;//
  1040. }
  1041. else if(sBfBcno != sBcno)
  1042. {
  1043. if(sCommKind == "01")
  1044. {
  1045. CommAX.SendMessageToLPT(sSndMsg);
  1046. }
  1047. else if(sCommKind == "02")
  1048. {
  1049. CommAX.SendMessage(sSndMsg);
  1050. }
  1051. sBfBcno = sBcno;
  1052. }
  1053. }
  1054. }
  1055. CommAX.PortOpen("false");
  1056. }
  1057. else
  1058. {
  1059. sysf_messageBox("아래 사항을 확인후 재출력해주십시오."
  1060. + " \n 1.프린트설정 화면에서 통신유형을 com 으로 선택한 경우 port 번호 확인"
  1061. + " \n 2.케이블 확인"
  1062. + " \n 3.먼저 출력중인 바코드 확인(모두 출력된 후 재출력하십시오.)", "I", "");
  1063. return;
  1064. }
  1065. }
  1066. }
  1067. ]]></Script>