| 
					
				 | 
			
			
				@@ -1,5 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package thyyxxk.webserver.service.examinations; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.apache.commons.text.StringEscapeUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.dom4j.Document; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -8,6 +10,7 @@ import org.dom4j.DocumentHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.dom4j.Element; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.web.client.RestTemplate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.config.exception.BizException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.examinations.adicon.AdiconInquiry; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.examinations.adicon.BarcodeType; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15,6 +18,7 @@ import thyyxxk.webserver.entity.examinations.adicon.ListTableItem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.entity.examinations.adicon.ReportDetail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.service.externalhttp.AdiconHttpSrvc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import thyyxxk.webserver.utils.FilterUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import thyyxxk.webserver.utils.StringUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.xml.bind.JAXBContext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import javax.xml.bind.Unmarshaller; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -44,6 +48,7 @@ public class AdiconService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public List<ListTableItem> getReportList(AdiconInquiry inquiry) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> barcodesList = getPatientBarcodeList(inquiry); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String key = URLEncoder.encode(inquiry.getKey(), StandardCharsets.UTF_8.name()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String xmlString = adiconHttpSrvc.getReportList(key, inquiry.getBegin(), inquiry.getEnd()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<ListTableItem> result = new ArrayList<>(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -56,9 +61,13 @@ public class AdiconService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ListTableItem listTable = (ListTableItem) unmarshaller.unmarshal(reader); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (inquiry.getReportType().equals("全部") || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 inquiry.getReportType().equals(listTable.getReportType())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                result.add(listTable); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (barcodesList.isEmpty() || barcodesList.contains(listTable.getCustomerBarcode())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    result.add(listTable); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (result.isEmpty() && !barcodesList.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new BizException("没有找到此患者已发布的外送报告。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -105,6 +114,29 @@ public class AdiconService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return root.getText(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private List<String> getPatientBarcodeList(AdiconInquiry inquiry) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> barcodesList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtil.notBlank(inquiry.getPatNo())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String url = "http://172.16.32.167:9206/thyy/api/public/lis/bar_code"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONObject obj = new RestTemplate().postForObject(url, inquiry, JSONObject.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (null == obj) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("没有找到此患者已发布的外送报告。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (obj.getIntValue("code") != 1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException(obj.getString("message")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            JSONArray data = obj.getJSONArray("data"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (data.isEmpty()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("没有找到此患者已发布的外送报告。"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int i = 0; i < data.size(); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                JSONObject item = data.getJSONObject(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                barcodesList.add(item.getString("barCode")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return barcodesList; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private Element getRootElement(String xmlString) throws DocumentException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String xmlWithoutDeclaration = removeXmlDeclaration(xmlString); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String standardXml = StringEscapeUtils.unescapeXml(xmlWithoutDeclaration); 
			 |