返回列表 上一筆 下一筆

📄 資料內容

@@ -1,12 +1,12 @@

  public List<SearchHitBean> getSearchContent(Integer iftSid, String strTxt, String userType) throws RemoteException {

      List<SearchHitBean> out = new ArrayList<>();



      WsGetFullTextSearchResponseWsGetFullTextSearchResult result = null;

      WsGetAttachSearchResponseWsGetAttachSearchResult attachResult = null;



      switch (iftSid) {

-        case 0:

+        case 0:

             result = service.wsGetFullTextSearch(strValidCode, 1, channelMap.get(userType), 100, strTxt, 0, "fq_hit");

             LOGGER.info(vaildLog("### method:getSearchContent, webservice:wsGetFullTextSearch"));

             LOGGER.info(vaildLog("### req:" + "wsGetFullTextSearch(" + strValidCode + ", 1, "

                     + channelMap.get(userType) + ", 100, " + strTxt + ", 0, fq_hit)"));

             break;

         case 1:

@@ -22,7 +22,7 @@

             LOGGER.info(vaildLog("### req:" + "wsGetAttachSearch(" + strValidCode + ", 1, "

                     + channelMap.get(userType) + ", 100, " + strTxt + ", 0)"));

             break;

         default:

             return out;

      }

@@ -30,22 +30,24 @@

      Set<String> seen = new HashSet<>();



      // --- content results: iterate in REVERSE order (to mimic your previous UI ordering) ---

      if (result != null) {

          MessageElement[] anyArr = result.get_any();

-        LOGGER.info(vaildLog("### data:" + (anyArr != null && anyArr.length > 0 ? anyArr[0] : "null")));

-

-        Element diffgram = pickDiffgram(anyArr);

-        if (diffgram != null) {

-            Element dataRoot = firstChildElementByLocalName(diffgram, "IQKB");

+        LOGGER.info(vaildLog("### data:" + (anyArr != null && anyArr.length > 1 ? anyArr[1] : "null")));

+

+        // index 1 holds diffgram; do not guess via pickDiffgram

+        if (anyArr != null && anyArr.length > 1) {

+            Element diffgram = anyArr[1];

+            Element dataRoot = firstChildElementByLocalName(diffgram, "IQKB");

             if (dataRoot == null) dataRoot = diffgram;



             NodeList rows = dataRoot.getElementsByTagName("FullTextSearch");

             for (int i = rows.getLength() - 1; i >= 0; i--) { // reverse

                 Element row = (Element) rows.item(i);



                 String ifqSid   = getChildText(row, "ifq_sid");

                 if (ifqSid.isBlank() || seen.contains(ifqSid)) continue;



                 SearchHitBean hit = new SearchHitBean.Builder()

                         .fqSid(ifqSid)

                         .ftSid(getChildText(row, "ift_sid"))

                         .ftName(getChildText(row, "sft_name"))

                         .fqName(getChildText(row, "sfq_name"))

-                        .fqHit(parseIntOrNull(getChildText(row, "ifq_hits")))

+                        .fqHit(parseIntOrNull(getChildText(row, "ifq_hit")))

                         .initTime(parseDateTimeSafely(getChildText(row, "dinit_time")))

                         .modiTime(parseDateTimeSafely(getChildText(row, "dmodi_time")))

                         .build();



                 seen.add(ifqSid);

@@ -56,17 +58,19 @@



      // --- attachment results (if required): normal order append ---

      if (attachResult != null) {

-        MessageElement[] anyArr = attachResult.get_any();

-        Element diffgram = pickDiffgram(anyArr);

-        if (diffgram != null) {

-            Element dataRoot = firstChildElementByLocalName(diffgram, "IQKB");

+        MessageElement[] attachArr = attachResult.get_any();

+        LOGGER.info(vaildLog("### attachData:" + (attachArr != null && attachArr.length > 1 ? attachArr[1] : "null")));

+        if (attachArr != null && attachArr.length > 1) {

+            Element diffgram = attachArr[1];

+            Element dataRoot = firstChildElementByLocalName(diffgram, "IQKB");

             if (dataRoot == null) dataRoot = diffgram;



             NodeList rows = dataRoot.getElementsByTagName("FullTextSearch");

             for (int i = 0; i < rows.getLength(); i++) {

                 Element row = (Element) rows.item(i);



                 String ifqSid = getChildText(row, "ifq_sid");

                 if (ifqSid.isBlank() || seen.contains(ifqSid)) continue;



                 SearchHitBean hit = new SearchHitBean.Builder()

                         .fqSid(ifqSid)

                         .ftSid(getChildText(row, "ift_sid"))

                         .ftName(getChildText(row, "sft_name"))

                         .fqName(getChildText(row, "sfq_name"))

-                        .fqHit(parseIntOrNull(getChildText(row, "ifq_hits")))

+                        .fqHit(parseIntOrNull(getChildText(row, "ifq_hit")))

                         .initTime(parseDateTimeSafely(getChildText(row, "dinit_time")))

                         .modiTime(parseDateTimeSafely(getChildText(row, "dmodi_time")))

                         .build();



                 seen.add(ifqSid);

🔐 Base64 編碼內容

QEAgLTEsMTIgKzEsMTIgQEAKCiAgcHVibGljIExpc3Q8U2VhcmNoSGl0QmVhbj4gZ2V0U2VhcmNoQ29udGVudChJbnRlZ2VyIGlmdFNpZCwgU3RyaW5nIHN0clR4dCwgU3RyaW5nIHVzZXJUeXBlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKCiAgICAgIExpc3Q8U2VhcmNoSGl0QmVhbj4gb3V0ID0gbmV3IEFycmF5TGlzdDw+KCk7CgogCgogICAgICBXc0dldEZ1bGxUZXh0U2VhcmNoUmVzcG9uc2VXc0dldEZ1bGxUZXh0U2VhcmNoUmVzdWx0IHJlc3VsdCA9IG51bGw7CgogICAgICBXc0dldEF0dGFjaFNlYXJjaFJlc3BvbnNlV3NHZXRBdHRhY2hTZWFyY2hSZXN1bHQgYXR0YWNoUmVzdWx0ID0gbnVsbDsKCiAKCiAgICAgIHN3aXRjaCAoaWZ0U2lkKSB7CgotICAgICAgICBjYXNlIDA6CgorICAgICAgICBjYXNlIDA6CgogICAgICAgICAgICAgcmVzdWx0ID0gc2VydmljZS53c0dldEZ1bGxUZXh0U2VhcmNoKHN0clZhbGlkQ29kZSwgMSwgY2hhbm5lbE1hcC5nZXQodXNlclR5cGUpLCAxMDAsIHN0clR4dCwgMCwgImZxX2hpdCIpOwoKICAgICAgICAgICAgIExPR0dFUi5pbmZvKHZhaWxkTG9nKCIjIyMgbWV0aG9kOmdldFNlYXJjaENvbnRlbnQsIHdlYnNlcnZpY2U6d3NHZXRGdWxsVGV4dFNlYXJjaCIpKTsKCiAgICAgICAgICAgICBMT0dHRVIuaW5mbyh2YWlsZExvZygiIyMjIHJlcToiICsgIndzR2V0RnVsbFRleHRTZWFyY2goIiArIHN0clZhbGlkQ29kZSArICIsIDEsICIKCiAgICAgICAgICAgICAgICAgICAgICsgY2hhbm5lbE1hcC5nZXQodXNlclR5cGUpICsgIiwgMTAwLCAiICsgc3RyVHh0ICsgIiwgMCwgZnFfaGl0KSIpKTsKCiAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGNhc2UgMToKCkBAIC0yMiw3ICsyMiw3IEBACgogICAgICAgICAgICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyByZXE6IiArICJ3c0dldEF0dGFjaFNlYXJjaCgiICsgc3RyVmFsaWRDb2RlICsgIiwgMSwgIgoKICAgICAgICAgICAgICAgICAgICAgKyBjaGFubmVsTWFwLmdldCh1c2VyVHlwZSkgKyAiLCAxMDAsICIgKyBzdHJUeHQgKyAiLCAwKSIpKTsKCiAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGRlZmF1bHQ6CgogICAgICAgICAgICAgcmV0dXJuIG91dDsKCiAgICAgIH0KCkBAIC0zMCwyMiArMzAsMjQgQEAKCiAgICAgIFNldDxTdHJpbmc+IHNlZW4gPSBuZXcgSGFzaFNldDw+KCk7CgogCgogICAgICAvLyAtLS0gY29udGVudCByZXN1bHRzOiBpdGVyYXRlIGluIFJFVkVSU0Ugb3JkZXIgKHRvIG1pbWljIHlvdXIgcHJldmlvdXMgVUkgb3JkZXJpbmcpIC0tLQoKICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7CgogICAgICAgICAgTWVzc2FnZUVsZW1lbnRbXSBhbnlBcnIgPSByZXN1bHQuZ2V0X2FueSgpOwoKLSAgICAgICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyBkYXRhOiIgKyAoYW55QXJyICE9IG51bGwgJiYgYW55QXJyLmxlbmd0aCA+IDAgPyBhbnlBcnJbMF0gOiAibnVsbCIpKSk7CgotCgotICAgICAgICBFbGVtZW50IGRpZmZncmFtID0gcGlja0RpZmZncmFtKGFueUFycik7CgotICAgICAgICBpZiAoZGlmZmdyYW0gIT0gbnVsbCkgewoKLSAgICAgICAgICAgIEVsZW1lbnQgZGF0YVJvb3QgPSBmaXJzdENoaWxkRWxlbWVudEJ5TG9jYWxOYW1lKGRpZmZncmFtLCAiSVFLQiIpOwoKKyAgICAgICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyBkYXRhOiIgKyAoYW55QXJyICE9IG51bGwgJiYgYW55QXJyLmxlbmd0aCA+IDEgPyBhbnlBcnJbMV0gOiAibnVsbCIpKSk7CgorCgorICAgICAgICAvLyBpbmRleCAxIGhvbGRzIGRpZmZncmFtOyBkbyBub3QgZ3Vlc3MgdmlhIHBpY2tEaWZmZ3JhbQoKKyAgICAgICAgaWYgKGFueUFyciAhPSBudWxsICYmIGFueUFyci5sZW5ndGggPiAxKSB7CgorICAgICAgICAgICAgRWxlbWVudCBkaWZmZ3JhbSA9IGFueUFyclsxXTsKCisgICAgICAgICAgICBFbGVtZW50IGRhdGFSb290ID0gZmlyc3RDaGlsZEVsZW1lbnRCeUxvY2FsTmFtZShkaWZmZ3JhbSwgIklRS0IiKTsKCiAgICAgICAgICAgICBpZiAoZGF0YVJvb3QgPT0gbnVsbCkgZGF0YVJvb3QgPSBkaWZmZ3JhbTsKCiAKCiAgICAgICAgICAgICBOb2RlTGlzdCByb3dzID0gZGF0YVJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkZ1bGxUZXh0U2VhcmNoIik7CgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IHJvd3MuZ2V0TGVuZ3RoKCkgLSAxOyBpID49IDA7IGktLSkgeyAvLyByZXZlcnNlCgogICAgICAgICAgICAgICAgIEVsZW1lbnQgcm93ID0gKEVsZW1lbnQpIHJvd3MuaXRlbShpKTsKCiAKCiAgICAgICAgICAgICAgICAgU3RyaW5nIGlmcVNpZCAgID0gZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9zaWQiKTsKCiAgICAgICAgICAgICAgICAgaWYgKGlmcVNpZC5pc0JsYW5rKCkgfHwgc2Vlbi5jb250YWlucyhpZnFTaWQpKSBjb250aW51ZTsKCiAKCiAgICAgICAgICAgICAgICAgU2VhcmNoSGl0QmVhbiBoaXQgPSBuZXcgU2VhcmNoSGl0QmVhbi5CdWlsZGVyKCkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuZnFTaWQoaWZxU2lkKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdFNpZChnZXRDaGlsZFRleHQocm93LCAiaWZ0X3NpZCIpKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdE5hbWUoZ2V0Q2hpbGRUZXh0KHJvdywgInNmdF9uYW1lIikpCgogICAgICAgICAgICAgICAgICAgICAgICAgLmZxTmFtZShnZXRDaGlsZFRleHQocm93LCAic2ZxX25hbWUiKSkKCi0gICAgICAgICAgICAgICAgICAgICAgICAuZnFIaXQocGFyc2VJbnRPck51bGwoZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9oaXRzIikpKQoKKyAgICAgICAgICAgICAgICAgICAgICAgIC5mcUhpdChwYXJzZUludE9yTnVsbChnZXRDaGlsZFRleHQocm93LCAiaWZxX2hpdCIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuaW5pdFRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZGluaXRfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAubW9kaVRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZG1vZGlfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKTsKCiAKCiAgICAgICAgICAgICAgICAgc2Vlbi5hZGQoaWZxU2lkKTsKCkBAIC01NiwxNyArNTgsMTkgQEAKCiAKCiAgICAgIC8vIC0tLSBhdHRhY2htZW50IHJlc3VsdHMgKGlmIHJlcXVpcmVkKTogbm9ybWFsIG9yZGVyIGFwcGVuZCAtLS0KCiAgICAgIGlmIChhdHRhY2hSZXN1bHQgIT0gbnVsbCkgewoKLSAgICAgICAgTWVzc2FnZUVsZW1lbnRbXSBhbnlBcnIgPSBhdHRhY2hSZXN1bHQuZ2V0X2FueSgpOwoKLSAgICAgICAgRWxlbWVudCBkaWZmZ3JhbSA9IHBpY2tEaWZmZ3JhbShhbnlBcnIpOwoKLSAgICAgICAgaWYgKGRpZmZncmFtICE9IG51bGwpIHsKCi0gICAgICAgICAgICBFbGVtZW50IGRhdGFSb290ID0gZmlyc3RDaGlsZEVsZW1lbnRCeUxvY2FsTmFtZShkaWZmZ3JhbSwgIklRS0IiKTsKCisgICAgICAgIE1lc3NhZ2VFbGVtZW50W10gYXR0YWNoQXJyID0gYXR0YWNoUmVzdWx0LmdldF9hbnkoKTsKCisgICAgICAgIExPR0dFUi5pbmZvKHZhaWxkTG9nKCIjIyMgYXR0YWNoRGF0YToiICsgKGF0dGFjaEFyciAhPSBudWxsICYmIGF0dGFjaEFyci5sZW5ndGggPiAxID8gYXR0YWNoQXJyWzFdIDogIm51bGwiKSkpOwoKKyAgICAgICAgaWYgKGF0dGFjaEFyciAhPSBudWxsICYmIGF0dGFjaEFyci5sZW5ndGggPiAxKSB7CgorICAgICAgICAgICAgRWxlbWVudCBkaWZmZ3JhbSA9IGF0dGFjaEFyclsxXTsKCisgICAgICAgICAgICBFbGVtZW50IGRhdGFSb290ID0gZmlyc3RDaGlsZEVsZW1lbnRCeUxvY2FsTmFtZShkaWZmZ3JhbSwgIklRS0IiKTsKCiAgICAgICAgICAgICBpZiAoZGF0YVJvb3QgPT0gbnVsbCkgZGF0YVJvb3QgPSBkaWZmZ3JhbTsKCiAKCiAgICAgICAgICAgICBOb2RlTGlzdCByb3dzID0gZGF0YVJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkZ1bGxUZXh0U2VhcmNoIik7CgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzLmdldExlbmd0aCgpOyBpKyspIHsKCiAgICAgICAgICAgICAgICAgRWxlbWVudCByb3cgPSAoRWxlbWVudCkgcm93cy5pdGVtKGkpOwoKIAoKICAgICAgICAgICAgICAgICBTdHJpbmcgaWZxU2lkID0gZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9zaWQiKTsKCiAgICAgICAgICAgICAgICAgaWYgKGlmcVNpZC5pc0JsYW5rKCkgfHwgc2Vlbi5jb250YWlucyhpZnFTaWQpKSBjb250aW51ZTsKCiAKCiAgICAgICAgICAgICAgICAgU2VhcmNoSGl0QmVhbiBoaXQgPSBuZXcgU2VhcmNoSGl0QmVhbi5CdWlsZGVyKCkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuZnFTaWQoaWZxU2lkKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdFNpZChnZXRDaGlsZFRleHQocm93LCAiaWZ0X3NpZCIpKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdE5hbWUoZ2V0Q2hpbGRUZXh0KHJvdywgInNmdF9uYW1lIikpCgogICAgICAgICAgICAgICAgICAgICAgICAgLmZxTmFtZShnZXRDaGlsZFRleHQocm93LCAic2ZxX25hbWUiKSkKCi0gICAgICAgICAgICAgICAgICAgICAgICAuZnFIaXQocGFyc2VJbnRPck51bGwoZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9oaXRzIikpKQoKKyAgICAgICAgICAgICAgICAgICAgICAgIC5mcUhpdChwYXJzZUludE9yTnVsbChnZXRDaGlsZFRleHQocm93LCAiaWZxX2hpdCIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuaW5pdFRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZGluaXRfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAubW9kaVRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZG1vZGlfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKTsKCiAKCiAgICAgICAgICAgICAgICAgc2Vlbi5hZGQoaWZxU2lkKTsK
返回列表 上一筆 下一筆