@@ -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);
QEAgLTEsMTIgKzEsMTIgQEAKCiAgcHVibGljIExpc3Q8U2VhcmNoSGl0QmVhbj4gZ2V0U2VhcmNoQ29udGVudChJbnRlZ2VyIGlmdFNpZCwgU3RyaW5nIHN0clR4dCwgU3RyaW5nIHVzZXJUeXBlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKCiAgICAgIExpc3Q8U2VhcmNoSGl0QmVhbj4gb3V0ID0gbmV3IEFycmF5TGlzdDw+KCk7CgogCgogICAgICBXc0dldEZ1bGxUZXh0U2VhcmNoUmVzcG9uc2VXc0dldEZ1bGxUZXh0U2VhcmNoUmVzdWx0IHJlc3VsdCA9IG51bGw7CgogICAgICBXc0dldEF0dGFjaFNlYXJjaFJlc3BvbnNlV3NHZXRBdHRhY2hTZWFyY2hSZXN1bHQgYXR0YWNoUmVzdWx0ID0gbnVsbDsKCiAKCiAgICAgIHN3aXRjaCAoaWZ0U2lkKSB7CgotICAgICAgICBjYXNlIDA6CgorICAgICAgICBjYXNlIDA6CgogICAgICAgICAgICAgcmVzdWx0ID0gc2VydmljZS53c0dldEZ1bGxUZXh0U2VhcmNoKHN0clZhbGlkQ29kZSwgMSwgY2hhbm5lbE1hcC5nZXQodXNlclR5cGUpLCAxMDAsIHN0clR4dCwgMCwgImZxX2hpdCIpOwoKICAgICAgICAgICAgIExPR0dFUi5pbmZvKHZhaWxkTG9nKCIjIyMgbWV0aG9kOmdldFNlYXJjaENvbnRlbnQsIHdlYnNlcnZpY2U6d3NHZXRGdWxsVGV4dFNlYXJjaCIpKTsKCiAgICAgICAgICAgICBMT0dHRVIuaW5mbyh2YWlsZExvZygiIyMjIHJlcToiICsgIndzR2V0RnVsbFRleHRTZWFyY2goIiArIHN0clZhbGlkQ29kZSArICIsIDEsICIKCiAgICAgICAgICAgICAgICAgICAgICsgY2hhbm5lbE1hcC5nZXQodXNlclR5cGUpICsgIiwgMTAwLCAiICsgc3RyVHh0ICsgIiwgMCwgZnFfaGl0KSIpKTsKCiAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGNhc2UgMToKCkBAIC0yMiw3ICsyMiw3IEBACgogICAgICAgICAgICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyByZXE6IiArICJ3c0dldEF0dGFjaFNlYXJjaCgiICsgc3RyVmFsaWRDb2RlICsgIiwgMSwgIgoKICAgICAgICAgICAgICAgICAgICAgKyBjaGFubmVsTWFwLmdldCh1c2VyVHlwZSkgKyAiLCAxMDAsICIgKyBzdHJUeHQgKyAiLCAwKSIpKTsKCiAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgIGRlZmF1bHQ6CgogICAgICAgICAgICAgcmV0dXJuIG91dDsKCiAgICAgIH0KCkBAIC0zMCwyMiArMzAsMjQgQEAKCiAgICAgIFNldDxTdHJpbmc+IHNlZW4gPSBuZXcgSGFzaFNldDw+KCk7CgogCgogICAgICAvLyAtLS0gY29udGVudCByZXN1bHRzOiBpdGVyYXRlIGluIFJFVkVSU0Ugb3JkZXIgKHRvIG1pbWljIHlvdXIgcHJldmlvdXMgVUkgb3JkZXJpbmcpIC0tLQoKICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7CgogICAgICAgICAgTWVzc2FnZUVsZW1lbnRbXSBhbnlBcnIgPSByZXN1bHQuZ2V0X2FueSgpOwoKLSAgICAgICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyBkYXRhOiIgKyAoYW55QXJyICE9IG51bGwgJiYgYW55QXJyLmxlbmd0aCA+IDAgPyBhbnlBcnJbMF0gOiAibnVsbCIpKSk7CgotCgotICAgICAgICBFbGVtZW50IGRpZmZncmFtID0gcGlja0RpZmZncmFtKGFueUFycik7CgotICAgICAgICBpZiAoZGlmZmdyYW0gIT0gbnVsbCkgewoKLSAgICAgICAgICAgIEVsZW1lbnQgZGF0YVJvb3QgPSBmaXJzdENoaWxkRWxlbWVudEJ5TG9jYWxOYW1lKGRpZmZncmFtLCAiSVFLQiIpOwoKKyAgICAgICAgTE9HR0VSLmluZm8odmFpbGRMb2coIiMjIyBkYXRhOiIgKyAoYW55QXJyICE9IG51bGwgJiYgYW55QXJyLmxlbmd0aCA+IDEgPyBhbnlBcnJbMV0gOiAibnVsbCIpKSk7CgorCgorICAgICAgICAvLyBpbmRleCAxIGhvbGRzIGRpZmZncmFtOyBkbyBub3QgZ3Vlc3MgdmlhIHBpY2tEaWZmZ3JhbQoKKyAgICAgICAgaWYgKGFueUFyciAhPSBudWxsICYmIGFueUFyci5sZW5ndGggPiAxKSB7CgorICAgICAgICAgICAgRWxlbWVudCBkaWZmZ3JhbSA9IGFueUFyclsxXTsKCisgICAgICAgICAgICBFbGVtZW50IGRhdGFSb290ID0gZmlyc3RDaGlsZEVsZW1lbnRCeUxvY2FsTmFtZShkaWZmZ3JhbSwgIklRS0IiKTsKCiAgICAgICAgICAgICBpZiAoZGF0YVJvb3QgPT0gbnVsbCkgZGF0YVJvb3QgPSBkaWZmZ3JhbTsKCiAKCiAgICAgICAgICAgICBOb2RlTGlzdCByb3dzID0gZGF0YVJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkZ1bGxUZXh0U2VhcmNoIik7CgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IHJvd3MuZ2V0TGVuZ3RoKCkgLSAxOyBpID49IDA7IGktLSkgeyAvLyByZXZlcnNlCgogICAgICAgICAgICAgICAgIEVsZW1lbnQgcm93ID0gKEVsZW1lbnQpIHJvd3MuaXRlbShpKTsKCiAKCiAgICAgICAgICAgICAgICAgU3RyaW5nIGlmcVNpZCAgID0gZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9zaWQiKTsKCiAgICAgICAgICAgICAgICAgaWYgKGlmcVNpZC5pc0JsYW5rKCkgfHwgc2Vlbi5jb250YWlucyhpZnFTaWQpKSBjb250aW51ZTsKCiAKCiAgICAgICAgICAgICAgICAgU2VhcmNoSGl0QmVhbiBoaXQgPSBuZXcgU2VhcmNoSGl0QmVhbi5CdWlsZGVyKCkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuZnFTaWQoaWZxU2lkKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdFNpZChnZXRDaGlsZFRleHQocm93LCAiaWZ0X3NpZCIpKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdE5hbWUoZ2V0Q2hpbGRUZXh0KHJvdywgInNmdF9uYW1lIikpCgogICAgICAgICAgICAgICAgICAgICAgICAgLmZxTmFtZShnZXRDaGlsZFRleHQocm93LCAic2ZxX25hbWUiKSkKCi0gICAgICAgICAgICAgICAgICAgICAgICAuZnFIaXQocGFyc2VJbnRPck51bGwoZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9oaXRzIikpKQoKKyAgICAgICAgICAgICAgICAgICAgICAgIC5mcUhpdChwYXJzZUludE9yTnVsbChnZXRDaGlsZFRleHQocm93LCAiaWZxX2hpdCIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuaW5pdFRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZGluaXRfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAubW9kaVRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZG1vZGlfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKTsKCiAKCiAgICAgICAgICAgICAgICAgc2Vlbi5hZGQoaWZxU2lkKTsKCkBAIC01NiwxNyArNTgsMTkgQEAKCiAKCiAgICAgIC8vIC0tLSBhdHRhY2htZW50IHJlc3VsdHMgKGlmIHJlcXVpcmVkKTogbm9ybWFsIG9yZGVyIGFwcGVuZCAtLS0KCiAgICAgIGlmIChhdHRhY2hSZXN1bHQgIT0gbnVsbCkgewoKLSAgICAgICAgTWVzc2FnZUVsZW1lbnRbXSBhbnlBcnIgPSBhdHRhY2hSZXN1bHQuZ2V0X2FueSgpOwoKLSAgICAgICAgRWxlbWVudCBkaWZmZ3JhbSA9IHBpY2tEaWZmZ3JhbShhbnlBcnIpOwoKLSAgICAgICAgaWYgKGRpZmZncmFtICE9IG51bGwpIHsKCi0gICAgICAgICAgICBFbGVtZW50IGRhdGFSb290ID0gZmlyc3RDaGlsZEVsZW1lbnRCeUxvY2FsTmFtZShkaWZmZ3JhbSwgIklRS0IiKTsKCisgICAgICAgIE1lc3NhZ2VFbGVtZW50W10gYXR0YWNoQXJyID0gYXR0YWNoUmVzdWx0LmdldF9hbnkoKTsKCisgICAgICAgIExPR0dFUi5pbmZvKHZhaWxkTG9nKCIjIyMgYXR0YWNoRGF0YToiICsgKGF0dGFjaEFyciAhPSBudWxsICYmIGF0dGFjaEFyci5sZW5ndGggPiAxID8gYXR0YWNoQXJyWzFdIDogIm51bGwiKSkpOwoKKyAgICAgICAgaWYgKGF0dGFjaEFyciAhPSBudWxsICYmIGF0dGFjaEFyci5sZW5ndGggPiAxKSB7CgorICAgICAgICAgICAgRWxlbWVudCBkaWZmZ3JhbSA9IGF0dGFjaEFyclsxXTsKCisgICAgICAgICAgICBFbGVtZW50IGRhdGFSb290ID0gZmlyc3RDaGlsZEVsZW1lbnRCeUxvY2FsTmFtZShkaWZmZ3JhbSwgIklRS0IiKTsKCiAgICAgICAgICAgICBpZiAoZGF0YVJvb3QgPT0gbnVsbCkgZGF0YVJvb3QgPSBkaWZmZ3JhbTsKCiAKCiAgICAgICAgICAgICBOb2RlTGlzdCByb3dzID0gZGF0YVJvb3QuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkZ1bGxUZXh0U2VhcmNoIik7CgogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzLmdldExlbmd0aCgpOyBpKyspIHsKCiAgICAgICAgICAgICAgICAgRWxlbWVudCByb3cgPSAoRWxlbWVudCkgcm93cy5pdGVtKGkpOwoKIAoKICAgICAgICAgICAgICAgICBTdHJpbmcgaWZxU2lkID0gZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9zaWQiKTsKCiAgICAgICAgICAgICAgICAgaWYgKGlmcVNpZC5pc0JsYW5rKCkgfHwgc2Vlbi5jb250YWlucyhpZnFTaWQpKSBjb250aW51ZTsKCiAKCiAgICAgICAgICAgICAgICAgU2VhcmNoSGl0QmVhbiBoaXQgPSBuZXcgU2VhcmNoSGl0QmVhbi5CdWlsZGVyKCkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuZnFTaWQoaWZxU2lkKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdFNpZChnZXRDaGlsZFRleHQocm93LCAiaWZ0X3NpZCIpKQoKICAgICAgICAgICAgICAgICAgICAgICAgIC5mdE5hbWUoZ2V0Q2hpbGRUZXh0KHJvdywgInNmdF9uYW1lIikpCgogICAgICAgICAgICAgICAgICAgICAgICAgLmZxTmFtZShnZXRDaGlsZFRleHQocm93LCAic2ZxX25hbWUiKSkKCi0gICAgICAgICAgICAgICAgICAgICAgICAuZnFIaXQocGFyc2VJbnRPck51bGwoZ2V0Q2hpbGRUZXh0KHJvdywgImlmcV9oaXRzIikpKQoKKyAgICAgICAgICAgICAgICAgICAgICAgIC5mcUhpdChwYXJzZUludE9yTnVsbChnZXRDaGlsZFRleHQocm93LCAiaWZxX2hpdCIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuaW5pdFRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZGluaXRfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAubW9kaVRpbWUocGFyc2VEYXRlVGltZVNhZmVseShnZXRDaGlsZFRleHQocm93LCAiZG1vZGlfdGltZSIpKSkKCiAgICAgICAgICAgICAgICAgICAgICAgICAuYnVpbGQoKTsKCiAKCiAgICAgICAgICAgICAgICAgc2Vlbi5hZGQoaWZxU2lkKTsK