From 71f9683f5b78ac0fc4a66ff74708f6679e772914 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Mon, 5 Jun 2023 16:05:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=BA=E5=BE=B7=E4=BA=BA=E5=8C=BB=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data-config/js-table-type.json | 3 + data-config/sdry-pacs-server.json | 13 ++ .../report/api/DownPlatformService.java | 22 ++ .../report/api/ShunDePeopleService.java | 26 +++ .../report/api/TaskDistributeService.java | 21 ++ .../report/{ => api}/dto/ReportDownDto.java | 2 +- .../{ => api}/dto/ReportDownPatientDto.java | 2 +- .../{ => api}/dto/ReportDownScanFileDto.java | 2 +- .../dto/ReportDownTwoDto.java | 2 +- .../report/{ => api}/dto/ReportDto.java | 2 +- .../dto/ReportHospitalTwoDto.java | 2 +- .../dto/ReportPatientTwoDto.java | 2 +- .../dto/ReportTaskTwoDto.java | 2 +- .../report/api/dto/SdPacsServerConfig.java | 120 ++++++++++ .../api/impl/DownPlatformServiceImpl.java | 69 ++++++ .../api/impl/ShunDePeopleServiceImpl.java | 208 ++++++++++++++++++ .../impl/TaskDistributeServiceImpl.java} | 17 +- .../controller/ReportDownController.java | 142 ++++++------ .../server/report/entity/AfReportRecord.java | 4 +- .../event/TaskConsumptionReportDownEvent.java | 2 +- .../docus/server/report/job/ReportJob.java | 112 +--------- .../report/listener/ReportDownListener.java | 56 +---- .../server/report/service/ReportService.java | 2 +- .../service/impl/ReportServiceImpl.java | 2 +- .../webservice/impl/SdryReportServerImpl.java | 2 +- 25 files changed, 599 insertions(+), 238 deletions(-) create mode 100644 data-config/sdry-pacs-server.json create mode 100644 src/main/java/com/docus/server/report/api/DownPlatformService.java create mode 100644 src/main/java/com/docus/server/report/api/ShunDePeopleService.java create mode 100644 src/main/java/com/docus/server/report/api/TaskDistributeService.java rename src/main/java/com/docus/server/report/{ => api}/dto/ReportDownDto.java (94%) rename src/main/java/com/docus/server/report/{ => api}/dto/ReportDownPatientDto.java (96%) rename src/main/java/com/docus/server/report/{ => api}/dto/ReportDownScanFileDto.java (97%) rename src/main/java/com/docus/server/report/{noviwtask => api}/dto/ReportDownTwoDto.java (95%) rename src/main/java/com/docus/server/report/{ => api}/dto/ReportDto.java (96%) rename src/main/java/com/docus/server/report/{noviwtask => api}/dto/ReportHospitalTwoDto.java (92%) rename src/main/java/com/docus/server/report/{noviwtask => api}/dto/ReportPatientTwoDto.java (88%) rename src/main/java/com/docus/server/report/{noviwtask => api}/dto/ReportTaskTwoDto.java (87%) create mode 100644 src/main/java/com/docus/server/report/api/dto/SdPacsServerConfig.java create mode 100644 src/main/java/com/docus/server/report/api/impl/DownPlatformServiceImpl.java create mode 100644 src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java rename src/main/java/com/docus/server/report/{noviwtask/NoViewTaskService.java => api/impl/TaskDistributeServiceImpl.java} (68%) diff --git a/data-config/js-table-type.json b/data-config/js-table-type.json index 58c9f99..34b4908 100644 --- a/data-config/js-table-type.json +++ b/data-config/js-table-type.json @@ -2,5 +2,8 @@ "icu": "重症文件分段id", "sa": "手麻文件分段id", "examination": "检验报告文件分段id", + "BL-001": "病理文件分段id", + "CS-001": "超声文件分段id", + "petct": "petct文件分段id", "other": "其他文件分段id" } \ No newline at end of file diff --git a/data-config/sdry-pacs-server.json b/data-config/sdry-pacs-server.json new file mode 100644 index 0000000..1578027 --- /dev/null +++ b/data-config/sdry-pacs-server.json @@ -0,0 +1,13 @@ +{ + "url":"http:/192.168.5.55:8090/PacsService.wsdl", + "interval": 1000, + "namespaceUri":"com.docus", + "operationName":"Service", + "functionName":"ReportServerDll.GetPdfReport", + "functionType":"", + "caller":"外面的配置", + "licenseInfo":{ + "caller":"里面的调用", + "license":"令牌**************" + } +} \ No newline at end of file diff --git a/src/main/java/com/docus/server/report/api/DownPlatformService.java b/src/main/java/com/docus/server/report/api/DownPlatformService.java new file mode 100644 index 0000000..9fccf2b --- /dev/null +++ b/src/main/java/com/docus/server/report/api/DownPlatformService.java @@ -0,0 +1,22 @@ +package com.docus.server.report.api; + +import com.docus.infrastructure.web.api.CommonResult; +import com.docus.server.report.api.dto.ReportDownDto; + +/** + * 下载平台服务接口 + * + * @author jiashi + */ + +public interface DownPlatformService { + + + /** + * 下载服务文件上报 + * + * @param reportDownDto 下载服务上报参数 + * @return 结果 + */ + CommonResult report(ReportDownDto reportDownDto); +} diff --git a/src/main/java/com/docus/server/report/api/ShunDePeopleService.java b/src/main/java/com/docus/server/report/api/ShunDePeopleService.java new file mode 100644 index 0000000..14fc74e --- /dev/null +++ b/src/main/java/com/docus/server/report/api/ShunDePeopleService.java @@ -0,0 +1,26 @@ +package com.docus.server.report.api; + +import java.util.List; + +/** + * 顺德人医调用 + * + * @author wyb + */ +public interface ShunDePeopleService { + /** + * 根据顺德人医第三方索引查询报告交叉索引 + * + * @param sdRyIndex 顺德人医第三方索引 + * @return 报告交叉索引 + */ + List getSdRyReportPatientIds(String sdRyIndex); + + /** + * 根据检查流水或和报告序列号,指定要获取的报告,PACS将生成PDF格式的报告,并将PDF文件的BASE64编码串返回。 + * @param examNo 检查流水号 + * @param reportNo 报告序号 + * @return pdfBase64 + */ + String getBase64PdfFromPacs(String examNo,String reportNo); +} diff --git a/src/main/java/com/docus/server/report/api/TaskDistributeService.java b/src/main/java/com/docus/server/report/api/TaskDistributeService.java new file mode 100644 index 0000000..9739641 --- /dev/null +++ b/src/main/java/com/docus/server/report/api/TaskDistributeService.java @@ -0,0 +1,21 @@ +package com.docus.server.report.api; + +import com.docus.server.report.api.dto.ReportDownTwoDto; + +/** + * 无视图任务服务 + * + * @author wyb + */ + +public interface TaskDistributeService { + + + /** + * 无视图-根据采集器类型获取任务信息 + * + * @param collectorId 采集器类型 + * @return 任务信息 + */ + ReportDownTwoDto getNoviewTaskByCollectorId(String collectorId); +} diff --git a/src/main/java/com/docus/server/report/dto/ReportDownDto.java b/src/main/java/com/docus/server/report/api/dto/ReportDownDto.java similarity index 94% rename from src/main/java/com/docus/server/report/dto/ReportDownDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportDownDto.java index d61edaa..af8025d 100644 --- a/src/main/java/com/docus/server/report/dto/ReportDownDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportDownDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.dto; +package com.docus.server.report.api.dto; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/docus/server/report/dto/ReportDownPatientDto.java b/src/main/java/com/docus/server/report/api/dto/ReportDownPatientDto.java similarity index 96% rename from src/main/java/com/docus/server/report/dto/ReportDownPatientDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportDownPatientDto.java index 774f429..cbc9f65 100644 --- a/src/main/java/com/docus/server/report/dto/ReportDownPatientDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportDownPatientDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.dto; +package com.docus.server.report.api.dto; import com.docus.server.report.entity.AfReportRecord; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/docus/server/report/dto/ReportDownScanFileDto.java b/src/main/java/com/docus/server/report/api/dto/ReportDownScanFileDto.java similarity index 97% rename from src/main/java/com/docus/server/report/dto/ReportDownScanFileDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportDownScanFileDto.java index 468c881..1fefb72 100644 --- a/src/main/java/com/docus/server/report/dto/ReportDownScanFileDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportDownScanFileDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.dto; +package com.docus.server.report.api.dto; import com.docus.server.report.entity.AfReportRecord; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportDownTwoDto.java b/src/main/java/com/docus/server/report/api/dto/ReportDownTwoDto.java similarity index 95% rename from src/main/java/com/docus/server/report/noviwtask/dto/ReportDownTwoDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportDownTwoDto.java index 97bf2cd..37682b0 100644 --- a/src/main/java/com/docus/server/report/noviwtask/dto/ReportDownTwoDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportDownTwoDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.noviwtask.dto; +package com.docus.server.report.api.dto; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/docus/server/report/dto/ReportDto.java b/src/main/java/com/docus/server/report/api/dto/ReportDto.java similarity index 96% rename from src/main/java/com/docus/server/report/dto/ReportDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportDto.java index 2b74c3e..e9c188e 100644 --- a/src/main/java/com/docus/server/report/dto/ReportDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.dto; +package com.docus.server.report.api.dto; import lombok.Data; diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportHospitalTwoDto.java b/src/main/java/com/docus/server/report/api/dto/ReportHospitalTwoDto.java similarity index 92% rename from src/main/java/com/docus/server/report/noviwtask/dto/ReportHospitalTwoDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportHospitalTwoDto.java index 62254ae..1781f66 100644 --- a/src/main/java/com/docus/server/report/noviwtask/dto/ReportHospitalTwoDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportHospitalTwoDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.noviwtask.dto; +package com.docus.server.report.api.dto; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportPatientTwoDto.java b/src/main/java/com/docus/server/report/api/dto/ReportPatientTwoDto.java similarity index 88% rename from src/main/java/com/docus/server/report/noviwtask/dto/ReportPatientTwoDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportPatientTwoDto.java index faa5e7c..23aa157 100644 --- a/src/main/java/com/docus/server/report/noviwtask/dto/ReportPatientTwoDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportPatientTwoDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.noviwtask.dto; +package com.docus.server.report.api.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportTaskTwoDto.java b/src/main/java/com/docus/server/report/api/dto/ReportTaskTwoDto.java similarity index 87% rename from src/main/java/com/docus/server/report/noviwtask/dto/ReportTaskTwoDto.java rename to src/main/java/com/docus/server/report/api/dto/ReportTaskTwoDto.java index e558d55..ef3d1e1 100644 --- a/src/main/java/com/docus/server/report/noviwtask/dto/ReportTaskTwoDto.java +++ b/src/main/java/com/docus/server/report/api/dto/ReportTaskTwoDto.java @@ -1,4 +1,4 @@ -package com.docus.server.report.noviwtask.dto; +package com.docus.server.report.api.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/docus/server/report/api/dto/SdPacsServerConfig.java b/src/main/java/com/docus/server/report/api/dto/SdPacsServerConfig.java new file mode 100644 index 0000000..0596605 --- /dev/null +++ b/src/main/java/com/docus/server/report/api/dto/SdPacsServerConfig.java @@ -0,0 +1,120 @@ +package com.docus.server.report.api.dto; + +public class SdPacsServerConfig { + private String url; + private String namespaceUri; + private String operationName; + private String functionName; + private String functionType; + private String caller; + private LicenseInfo licenseInfo; + private int interval; + + @Override + public String toString() { + return "SdPacsServerConfig{" + + "url='" + url + '\'' + + ", namespaceUri='" + namespaceUri + '\'' + + ", operationName='" + operationName + '\'' + + ", functionName='" + functionName + '\'' + + ", functionType='" + functionType + '\'' + + ", caller='" + caller + '\'' + + ", licenseInfo=" + licenseInfo + + ", interval=" + interval + + '}'; + } + + public int getInterval() { + return interval; + } + + public void setInterval(int interval) { + this.interval = interval; + } + + public String getOperationName() { + return operationName; + } + + public void setOperationName(String operationName) { + this.operationName = operationName; + } + + public String getNamespaceUri() { + return namespaceUri; + } + + public void setNamespaceUri(String namespaceUri) { + this.namespaceUri = namespaceUri; + } + + public String getUrl() { + return url; + } + + + public void setUrl(String url) { + this.url = url; + } + + public String getFunctionName() { + return functionName; + } + + public void setFunctionName(String functionName) { + this.functionName = functionName; + } + + public String getFunctionType() { + return functionType; + } + + public void setFunctionType(String functionType) { + this.functionType = functionType; + } + + public String getCaller() { + return caller; + } + + public void setCaller(String caller) { + this.caller = caller; + } + + public LicenseInfo getLicenseInfo() { + return licenseInfo; + } + + public void setLicenseInfo(LicenseInfo licenseInfo) { + this.licenseInfo = licenseInfo; + } + + public static class LicenseInfo { + private String caller; + private String license; + + public String getCaller() { + return caller; + } + + public void setCaller(String caller) { + this.caller = caller; + } + + public String getLicense() { + return license; + } + + public void setLicense(String license) { + this.license = license; + } + + @Override + public String toString() { + return "LicenseInfo{" + + "caller='" + caller + '\'' + + ", license='" + license + '\'' + + '}'; + } + } +} diff --git a/src/main/java/com/docus/server/report/api/impl/DownPlatformServiceImpl.java b/src/main/java/com/docus/server/report/api/impl/DownPlatformServiceImpl.java new file mode 100644 index 0000000..36f4428 --- /dev/null +++ b/src/main/java/com/docus/server/report/api/impl/DownPlatformServiceImpl.java @@ -0,0 +1,69 @@ +package com.docus.server.report.api.impl; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.docus.core.util.Func; +import com.docus.infrastructure.web.api.CommonResult; +import com.docus.server.report.api.DownPlatformService; +import com.docus.server.report.api.dto.ReportDownDto; +import com.docus.server.report.config.ApplicationBusinessConfig; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * 下载平台服务接口 + * + * @author jiashi + */ +@Component +@Slf4j +public class DownPlatformServiceImpl implements DownPlatformService { + @Resource + private ApplicationBusinessConfig applicationBusinessConfig; + + @Override + public CommonResult report(ReportDownDto reportDownDto) { + String downUrl = applicationBusinessConfig.getDownUrl(); + if (Func.isBlank(downUrl)) { + log.warn("文件上报地址未配置!"); + return null; + } + String requestId = Func.randomUUID(); + String requestParam = Func.toJson(reportDownDto); + try { + log.info("[{}]调用下载服务,地址:{} ,参数:{}", requestId, downUrl, requestParam); + String respBody = post(downUrl, requestParam); + log.info("[{}]调用下载服务成功,响应参数:{}", requestId, respBody); + return Func.readJson(respBody, CommonResult.class); + } catch (Exception ex) { + log.error("[" + requestId + "]调用下载服务失败" + ex.getMessage(), ex); + return CommonResult.failed(ex.getMessage()); + } + + } + + /** + * 文件上报加锁 + */ + private final static Lock REPORT_LOCK = new ReentrantLock(); + + public String post(String url, String body) { + REPORT_LOCK.lock(); + try { + HttpRequest post = HttpUtil.createPost(url); + post.setConnectionTimeout(5 * 1000); + post.setReadTimeout(60 * 1000); + post.header("Content-Type", "application/json; charset=utf-8"); + post.body(body); + HttpResponse response = post.execute(); + return response.body(); + }finally { + REPORT_LOCK.unlock(); + } + } +} diff --git a/src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java b/src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java new file mode 100644 index 0000000..21f7c1e --- /dev/null +++ b/src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java @@ -0,0 +1,208 @@ +package com.docus.server.report.api.impl; + +import com.docus.core.util.DateUtil; +import com.docus.core.util.Func; +import com.docus.server.report.api.ShunDePeopleService; +import com.docus.server.report.api.dto.SdPacsServerConfig; +import com.docus.server.report.client.JaxWsDynamicClient; +import com.docus.server.report.config.SdRyReportQueryConfig; +import com.docus.server.report.util.IdUtil; +import com.docus.server.report.util.TableJsonRead; +import com.docus.server.report.util.XmlUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +/** + * 顺德人医调用 + * + * @author wyb + */ +@Component +@Slf4j +public class ShunDePeopleServiceImpl implements ShunDePeopleService { + private static final Lock INDEX_LOCK = new ReentrantLock(); + private static final Lock PACS_PDF_LOCK = new ReentrantLock(); + @Resource + private SdRyReportQueryConfig sdRyReportQueryConfig; + + public static void main(String[] args) { + ShunDePeopleServiceImpl shunDePeopleService = new ShunDePeopleServiceImpl(); + String base64PdfFromPacs = shunDePeopleService.getBase64PdfFromPacs("121", "1"); + System.out.println(base64PdfFromPacs); + } + + @Override + public List getSdRyReportPatientIds(String sdRyIndex) { + List indexes = new ArrayList<>(); + try { + String zyParam = organizationQuerySdRyReportIndexParam(sdRyIndex, 3); + String mzParam = organizationQuerySdRyReportIndexParam(sdRyIndex, 1); + String[] zyParams = {"HIP1179", zyParam}; + String[] mzParams = {"HIP1179", mzParam}; + List zyIndex = getIndex(zyParams); + indexes.addAll(zyIndex); + List mzIndex = getIndex(mzParams); + indexes.addAll(mzIndex); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + } + return indexes; + } + + @Override + public String getBase64PdfFromPacs(String examNo, String reportNo) { + TableJsonRead jsonRead = new TableJsonRead(); + SdPacsServerConfig config = jsonRead.Read("data-config", "sdry-pacs-server.json", SdPacsServerConfig.class); + String url = config.getUrl(); + String namespaceUri = config.getNamespaceUri(); + String operationName = config.getOperationName(); + String functionType = config.getFunctionType(); + String functionName = config.getFunctionName(); + String caller = config.getCaller(); + int interval = config.getInterval(); + String inputString = getPdfReportBase64InputString(examNo, reportNo, config); + // 参数1(FunctionName):此参数用于区分不同的场景,具体看每个场景说明 + // 参数2(InputString):请求消息串,看具体场景说明 + // 参数3(FunctionType):传空,暂未启用 + // 参数4(Caller):服务调用者名称,由PACS提供,验证令牌时 + String[] param = {functionName, inputString, functionType, caller}; + PACS_PDF_LOCK.lock(); + try { + String result = JaxWsDynamicClient.send(url, namespaceUri, operationName, param); + if (interval > 0) { + TimeUnit.MILLISECONDS.sleep(interval); + } + return result; + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return null; + } finally { + PACS_PDF_LOCK.unlock(); + } + } + + private String getPdfReportBase64InputString(String examNo, String reportNo, SdPacsServerConfig config) { + return "\n" + + "\n" + + "\n" + + "\n" + + "\t\n" + + "\t\t\n" + + "\t\t" + config.getLicenseInfo().getCaller() + "\n" + + "\t\t\n" + + "\t\t" + config.getLicenseInfo().getLicense() + "\n" + + "\t\n" + + "\t\n" + + "\t" + examNo + "\n" + + "\t\n" + + "\t" + reportNo + "\n" + + ""; + } + + + private List getIndex(String[] params) { + INDEX_LOCK.lock(); + try { + String namespaceUri = sdRyReportQueryConfig.getQueryReportIndexWsdlNamespaceUri(); + String wsdlAddr = sdRyReportQueryConfig.getQueryReportIndexWsdlAddr(); + String operationName = sdRyReportQueryConfig.getQueryReportIndexWsdlOperationName(); + String result = JaxWsDynamicClient.send(wsdlAddr, namespaceUri, operationName, params); + log.info("查询顺德人医患者交叉索引数据,返回值:{}", result); + if (result == null) { + return new ArrayList<>(); + } + TimeUnit.MILLISECONDS.sleep(sdRyReportQueryConfig.getQueryReportIndexInterval()); + return parseQuerySdRyReportIndex(result); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return new ArrayList<>(); + } finally { + INDEX_LOCK.unlock(); + } + } + + private List parseQuerySdRyReportIndex(String result) { + try { + XmlUtil xmlUtil = XmlUtil.of(result); + NodeList nodeList = xmlUtil.getNodeList("/PRPA_HIP1179/controlActProcess/subject/empiIndex/patientIds/patientId"); + int nodeListLength = nodeList.getLength(); + ArrayList patientIds = new ArrayList<>(); + if (nodeListLength > 0) { + for (int i = 0; i < nodeListLength; i++) { + Node node = nodeList.item(i); + String patientId = node.getTextContent(); + if (Func.isNotBlank(patientId)) { + patientIds.add(patientId); + } + } + } + return patientIds; + } catch (Exception ex) { + log.error("顺德人医解析患者交叉索引失败。", ex); + return new ArrayList<>(); + } + } + + /** + * 组织顺德人医查询交叉索引的请求参数 + * + * @param sDryIndex 顺德人医关联索引 + * @param type 1:门诊 3:住院 + * @return 顺德人医查询交叉索引的请求参数 + */ + private String organizationQuerySdRyReportIndexParam(String sDryIndex, int type) { + sDryIndex = sDryIndex.toLowerCase() + .replace("m", "") + .replace("z", ""); + String receiver = "Orion-001"; + String sender = "PaperlessManagementMRIS-001"; + String now = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + + return "\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\t\n" + + "\t\t\t\n" + + "\t\t\t\n" + + "\t\t\t\n" + + "\t\t\t\n" + + "\t\t\t\n" + + "\t\t\n" + + "\t\n" + + "\n"; + } +} diff --git a/src/main/java/com/docus/server/report/noviwtask/NoViewTaskService.java b/src/main/java/com/docus/server/report/api/impl/TaskDistributeServiceImpl.java similarity index 68% rename from src/main/java/com/docus/server/report/noviwtask/NoViewTaskService.java rename to src/main/java/com/docus/server/report/api/impl/TaskDistributeServiceImpl.java index 430e340..f64a1a2 100644 --- a/src/main/java/com/docus/server/report/noviwtask/NoViewTaskService.java +++ b/src/main/java/com/docus/server/report/api/impl/TaskDistributeServiceImpl.java @@ -1,11 +1,12 @@ -package com.docus.server.report.noviwtask; +package com.docus.server.report.api.impl; import cn.hutool.http.HttpUtil; import com.docus.core.util.Func; import com.docus.infrastructure.web.api.CommonResult; import com.docus.infrastructure.web.api.ResultCode; +import com.docus.server.report.api.TaskDistributeService; +import com.docus.server.report.api.dto.ReportDownTwoDto; import com.docus.server.report.config.ApplicationBusinessConfig; -import com.docus.server.report.noviwtask.dto.ReportDownTwoDto; import com.fasterxml.jackson.core.type.TypeReference; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -14,16 +15,20 @@ import javax.annotation.Resource; /** * 无视图任务服务 + * * @author wyb */ @Component @Slf4j -public class NoViewTaskService { +public class TaskDistributeServiceImpl implements TaskDistributeService { @Resource private ApplicationBusinessConfig applicationBusinessConfig; - public ReportDownTwoDto getTaskByCollectorId(String collectorId){ + + + @Override + public ReportDownTwoDto getNoviewTaskByCollectorId(String collectorId) { String getTaskUrl = applicationBusinessConfig.getGetTaskUrl(); - if(Func.isBlank(getTaskUrl)){ + if (Func.isBlank(getTaskUrl)) { log.warn("获取任务信息地址未配置!"); return null; } @@ -31,7 +36,7 @@ public class NoViewTaskService { String result = HttpUtil.get(getTaskUrl); CommonResult reportDownTwoDtoCommonResult = Func.readJson(result, new TypeReference>() { }); - if(reportDownTwoDtoCommonResult==null || reportDownTwoDtoCommonResult.getCode().equals(ResultCode.FAILED.getCode()) || reportDownTwoDtoCommonResult.getData()==null){ + if (reportDownTwoDtoCommonResult == null || reportDownTwoDtoCommonResult.getCode().equals(ResultCode.FAILED.getCode()) || reportDownTwoDtoCommonResult.getData() == null) { log.warn("未查询到任务数据!"); return null; } diff --git a/src/main/java/com/docus/server/report/controller/ReportDownController.java b/src/main/java/com/docus/server/report/controller/ReportDownController.java index 99205dd..7bf4d34 100644 --- a/src/main/java/com/docus/server/report/controller/ReportDownController.java +++ b/src/main/java/com/docus/server/report/controller/ReportDownController.java @@ -6,7 +6,7 @@ import com.docus.infrastructure.web.api.CommonResult; import com.docus.server.collection.entity.TBasic; import com.docus.server.collection.mapper.TBasicMapper; import com.docus.server.report.job.ReportJob; -import com.docus.server.report.noviwtask.NoViewTaskService; +import com.docus.server.report.api.TaskDistributeService; import com.docus.server.report.service.ReportService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -32,37 +32,37 @@ public class ReportDownController { private TBasicMapper tBasicMapper; @Resource ReportJob reportJob; -@Resource -private NoViewTaskService noViewTaskService; + @Resource + private TaskDistributeService taskDistributeService; @ApiOperation(value = "获取任务测试") @PostMapping("/getTaskTest") - public CommonResult getTaskTest(@RequestParam("collectorId") String collectorId){ - return CommonResult.success(noViewTaskService.getTaskByCollectorId(collectorId)); + public CommonResult getTaskTest(@RequestParam("collectorId") String collectorId) { + return CommonResult.success(taskDistributeService.getNoviewTaskByCollectorId(collectorId)); } @ApiOperation(value = " lis 检验 采集 job 测试") @GetMapping("/sdRyLisCollectJob") - public CommonResult sdRyLisCollectJob(){ + public CommonResult sdRyLisCollectJob() { reportJob.sdRyLisCollectJob(); return CommonResult.success("成功"); } @ApiOperation(value = " inspect 检查 采集 job 测试") @GetMapping("/sdRyInspectCollectJob") - public CommonResult sdRyInspectCollectJob(){ + public CommonResult sdRyInspectCollectJob() { reportJob.sdRyInspectCollectJob(); return CommonResult.success("成功"); } @ApiOperation(value = " inspectReport 根据病案主键补偿") @PostMapping("/inspectReportMakeup") - public CommonResult inspectReportMakeup(@RequestBody List patientIds){ - if(Func.isEmpty(patientIds)){ + public CommonResult inspectReportMakeup(@RequestBody List patientIds) { + if (Func.isEmpty(patientIds)) { return CommonResult.failed("病案主键不能为空!"); } - List tBasics =tBasicMapper.selectBasicListByPatientIds(patientIds); - if(Func.isEmpty(tBasics)){ + List tBasics = tBasicMapper.selectBasicListByPatientIds(patientIds); + if (Func.isEmpty(tBasics)) { return CommonResult.failed("未查询到病案基础数据!"); } reportJob.queryInspectReport(tBasics); @@ -71,12 +71,12 @@ private NoViewTaskService noViewTaskService; @ApiOperation(value = "lisReport 根据病案主键补偿") @PostMapping("/lisReportMakeup") - public CommonResult lisReportMakeup(@RequestBody List patientIds){ - if(Func.isEmpty(patientIds)){ + public CommonResult lisReportMakeup(@RequestBody List patientIds) { + if (Func.isEmpty(patientIds)) { return CommonResult.failed("病案主键不能为空!"); } - List tBasics =tBasicMapper.selectBasicListByPatientIds(patientIds); - if(Func.isEmpty(tBasics)){ + List tBasics = tBasicMapper.selectBasicListByPatientIds(patientIds); + if (Func.isEmpty(tBasics)) { return CommonResult.failed("未查询到病案基础数据!"); } reportJob.queryLisReport(tBasics); @@ -86,7 +86,7 @@ private NoViewTaskService noViewTaskService; @ApiOperation(value = "根据任务id补偿报告下载(接收推送的报告)") @PostMapping("/makeupReportByTaskIds") - public CommonResult makeupReportByTaskIds(@RequestBody List taskIds){ + public CommonResult makeupReportByTaskIds(@RequestBody List taskIds) { if (Func.isEmpty(taskIds)) { return CommonResult.failed("补偿任务id不能为空!"); } @@ -100,36 +100,35 @@ private NoViewTaskService noViewTaskService; } - - @ApiOperation(value = "report lis job 测试",hidden = true) + @ApiOperation(value = "report lis job 测试", hidden = true) @PostMapping("/lisreportJobTest") - public CommonResult LisreportJobTest(){ + public CommonResult LisreportJobTest() { reportJob.sdRyLisReportQueryJob(); return CommonResult.success("成功"); } - @ApiOperation(value = "report inspect job 测试",hidden = true) + @ApiOperation(value = "report inspect job 测试", hidden = true) @PostMapping("/inspectReportJobTest") - public CommonResult inspectReportJobTest(){ + public CommonResult inspectReportJobTest() { reportJob.sdRyInspectReportQueryJob(); return CommonResult.success("成功"); } - @ApiOperation(value = "inspect检查报告测试地址",hidden = true) + @ApiOperation(value = "inspect检查报告测试地址", hidden = true) @PostMapping("/inspectTest/query") public JSONObject inspectTest(@RequestParam("uuid") String uuid, @RequestParam("action") String action, @RequestParam("accessKey") String accessKey, @RequestParam("creationTime") String creationTime, - @RequestBody Map map){ - System.out.println("请求的参数为 uuid:"+uuid); - System.out.println("请求的参数为 action:"+action); - System.out.println("请求的参数为 accessKey:"+accessKey); - System.out.println("请求的参数为 creationTime:"+creationTime); - System.out.println("请求的参数为 body:"+map); - - String result="{\n" + + @RequestBody Map map) { + System.out.println("请求的参数为 uuid:" + uuid); + System.out.println("请求的参数为 action:" + action); + System.out.println("请求的参数为 accessKey:" + accessKey); + System.out.println("请求的参数为 creationTime:" + creationTime); + System.out.println("请求的参数为 body:" + map); + + String result = "{\n" + "\"compcode\": \"INSPECT_REPORTQuery\",\n" + "\"compname\": \"检查报告查询服务\",\n" + "\"count\": 2,\n" + @@ -281,25 +280,25 @@ private NoViewTaskService noViewTaskService; "\"ResultCode\": \"0\"\n" + "}"; - return Func.readJson(result,JSONObject.class); + return Func.readJson(result, JSONObject.class); } - @ApiOperation(value = "inspect检查报告测试地址 ",hidden = true) + @ApiOperation(value = "inspect检查报告测试地址 ", hidden = true) @PostMapping("/inspectTestNoResult/query") public JSONObject inspectTestNoResult(@RequestParam("uuid") String uuid, - @RequestParam("action") String action, - @RequestParam("accessKey") String accessKey, - @RequestParam("creationTime") String creationTime, - @RequestBody Map map){ - System.out.println("请求的参数为 uuid:"+uuid); - System.out.println("请求的参数为 action:"+action); - System.out.println("请求的参数为 accessKey:"+accessKey); - System.out.println("请求的参数为 creationTime:"+creationTime); - System.out.println("请求的参数为 body:"+map); - - String result="{\n" + + @RequestParam("action") String action, + @RequestParam("accessKey") String accessKey, + @RequestParam("creationTime") String creationTime, + @RequestBody Map map) { + System.out.println("请求的参数为 uuid:" + uuid); + System.out.println("请求的参数为 action:" + action); + System.out.println("请求的参数为 accessKey:" + accessKey); + System.out.println("请求的参数为 creationTime:" + creationTime); + System.out.println("请求的参数为 body:" + map); + + String result = "{\n" + "\"compcode\": \"INSPECT_REPORTQuery\",\n" + "\"compname\": \"检查报告查询服务\",\n" + "\"count\": 0,\n" + @@ -308,26 +307,25 @@ private NoViewTaskService noViewTaskService; "\"ResultCode\": \"0\"\n" + "}"; - return Func.readJson(result,JSONObject.class); + return Func.readJson(result, JSONObject.class); } - - @ApiOperation(value = "lis检验报告测试地址" ,hidden = true) + @ApiOperation(value = "lis检验报告测试地址", hidden = true) @PostMapping("/lisTest/query") public JSONObject lisTest(@RequestParam("uuid") String uuid, - @RequestParam("action") String action, - @RequestParam("accessKey") String accessKey, - @RequestParam("creationTime") String creationTime, - @RequestBody Map map){ - System.out.println("请求的参数为 uuid:"+uuid); - System.out.println("请求的参数为 action:"+action); - System.out.println("请求的参数为 accessKey:"+accessKey); - System.out.println("请求的参数为 creationTime:"+creationTime); - System.out.println("请求的参数为 body:"+map); - - String result="{\n" + + @RequestParam("action") String action, + @RequestParam("accessKey") String accessKey, + @RequestParam("creationTime") String creationTime, + @RequestBody Map map) { + System.out.println("请求的参数为 uuid:" + uuid); + System.out.println("请求的参数为 action:" + action); + System.out.println("请求的参数为 accessKey:" + accessKey); + System.out.println("请求的参数为 creationTime:" + creationTime); + System.out.println("请求的参数为 body:" + map); + + String result = "{\n" + "\"compcode\": \"LIS_REPORTQuery\",\n" + "\"compname\": \"检验报告查询服务\",\n" + "\"count\": 4,\n" + @@ -437,27 +435,25 @@ private NoViewTaskService noViewTaskService; "\"ResultCode\": \"0\"\n" + "}"; - return Func.readJson(result,JSONObject.class); + return Func.readJson(result, JSONObject.class); } - - - @ApiOperation(value = "lis检验报告测试地址",hidden = true) + @ApiOperation(value = "lis检验报告测试地址", hidden = true) @PostMapping("/lisTestNoResult/query") public JSONObject lisTestNoResult(@RequestParam("uuid") String uuid, - @RequestParam("action") String action, - @RequestParam("accessKey") String accessKey, - @RequestParam("creationTime") String creationTime, - @RequestBody Map map){ - System.out.println("请求的参数为 uuid:"+uuid); - System.out.println("请求的参数为 action:"+action); - System.out.println("请求的参数为 accessKey:"+accessKey); - System.out.println("请求的参数为 creationTime:"+creationTime); - System.out.println("请求的参数为 body:"+map); - - String result="{\n" + + @RequestParam("action") String action, + @RequestParam("accessKey") String accessKey, + @RequestParam("creationTime") String creationTime, + @RequestBody Map map) { + System.out.println("请求的参数为 uuid:" + uuid); + System.out.println("请求的参数为 action:" + action); + System.out.println("请求的参数为 accessKey:" + accessKey); + System.out.println("请求的参数为 creationTime:" + creationTime); + System.out.println("请求的参数为 body:" + map); + + String result = "{\n" + "\"compcode\": \"ObtainInpatientInformation\",\n" + "\"compname\": \"获取患者住院信息(移动护理定制)\",\n" + "\"count\": 0,\n" + @@ -466,7 +462,7 @@ private NoViewTaskService noViewTaskService; "\"ResultCode\": \"0\"\n" + "}"; - return Func.readJson(result,JSONObject.class); + return Func.readJson(result, JSONObject.class); } diff --git a/src/main/java/com/docus/server/report/entity/AfReportRecord.java b/src/main/java/com/docus/server/report/entity/AfReportRecord.java index 676fac1..3a82a6f 100644 --- a/src/main/java/com/docus/server/report/entity/AfReportRecord.java +++ b/src/main/java/com/docus/server/report/entity/AfReportRecord.java @@ -1,8 +1,6 @@ package com.docus.server.report.entity; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.docus.server.report.dto.ReportDto; +import com.docus.server.report.api.dto.ReportDto; import lombok.Data; import java.io.Serializable; diff --git a/src/main/java/com/docus/server/report/event/TaskConsumptionReportDownEvent.java b/src/main/java/com/docus/server/report/event/TaskConsumptionReportDownEvent.java index 33deb7a..55e49fa 100644 --- a/src/main/java/com/docus/server/report/event/TaskConsumptionReportDownEvent.java +++ b/src/main/java/com/docus/server/report/event/TaskConsumptionReportDownEvent.java @@ -1,6 +1,6 @@ package com.docus.server.report.event; -import com.docus.server.report.dto.ReportDto; +import com.docus.server.report.api.dto.ReportDto; import lombok.Getter; import org.springframework.context.ApplicationEvent; diff --git a/src/main/java/com/docus/server/report/job/ReportJob.java b/src/main/java/com/docus/server/report/job/ReportJob.java index 681f5de..bd8779f 100644 --- a/src/main/java/com/docus/server/report/job/ReportJob.java +++ b/src/main/java/com/docus/server/report/job/ReportJob.java @@ -10,23 +10,20 @@ import com.docus.infrastructure.core.exception.BaseException; import com.docus.infrastructure.redis.service.IdService; import com.docus.server.collection.entity.TBasic; import com.docus.server.collection.mapper.TBasicMapper; -import com.docus.server.report.client.JaxWsDynamicClient; +import com.docus.server.report.api.ShunDePeopleService; +import com.docus.server.report.api.TaskDistributeService; +import com.docus.server.report.api.dto.ReportDownTwoDto; +import com.docus.server.report.api.dto.ReportDto; import com.docus.server.report.config.SdRyReportQueryConfig; -import com.docus.server.report.dto.ReportDto; import com.docus.server.report.entity.AfJobTime; import com.docus.server.report.entity.AfReportRecord; import com.docus.server.report.mapper.AfJobTimeMapper; import com.docus.server.report.mapper.AfReportRecordMapper; -import com.docus.server.report.noviwtask.NoViewTaskService; -import com.docus.server.report.noviwtask.dto.ReportDownTwoDto; import com.docus.server.report.service.ReportService; import com.docus.server.report.util.IdUtil; -import com.docus.server.report.util.XmlUtil; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; import javax.annotation.Resource; import java.time.Instant; @@ -60,12 +57,14 @@ public class ReportJob { @Resource private SdRyReportQueryConfig sdRyReportQueryConfig; @Resource - private NoViewTaskService noViewTaskService; + private TaskDistributeService taskDistributeService; + @Resource + private ShunDePeopleService shunDePeopleService; @XxlJob("SdRyLisCollectJob") public void sdRyLisCollectJob() { String reportQueryLisCollectorId = sdRyReportQueryConfig.getReportQueryLisCollectorId(); - ReportDownTwoDto reportDownTwoDto = noViewTaskService.getTaskByCollectorId(reportQueryLisCollectorId); + ReportDownTwoDto reportDownTwoDto = taskDistributeService.getNoviewTaskByCollectorId(reportQueryLisCollectorId); if (reportDownTwoDto == null) { return; } @@ -90,7 +89,7 @@ public class ReportJob { @XxlJob("SdRyInspectCollectJob") public void sdRyInspectCollectJob() { String reportQueryInspectCollectorId = sdRyReportQueryConfig.getReportQueryInspectCollectorId(); - ReportDownTwoDto reportDownTwoDto = noViewTaskService.getTaskByCollectorId(reportQueryInspectCollectorId); + ReportDownTwoDto reportDownTwoDto = taskDistributeService.getNoviewTaskByCollectorId(reportQueryInspectCollectorId); if (reportDownTwoDto == null) { return; } @@ -568,7 +567,7 @@ public class ReportJob { return Func.toJson(map); } - private static Lock indexQueryLock = new ReentrantLock(); + /** * 根据归档病案主键查询报告交叉索引 @@ -577,107 +576,20 @@ public class ReportJob { * @return 报告交叉索引 */ private List getSdRyReportPatientIds(String patientId) { - indexQueryLock.lock(); try { String sDryIndex = tBasicMapper.getSdRyIndexByPatientId(patientId); if (Func.isBlank(sDryIndex)) { - log.warn("patientId:{} 未关联到第三方索引", patientId); + log.warn("归档系统 patientId:{} 未关联到第三方索引", patientId); return new ArrayList<>(); } - String param = organizationQuerySdRyReportIndexParam(sDryIndex); - String[] params = {"HIP1179", param}; - String namespaceUri = sdRyReportQueryConfig.getQueryReportIndexWsdlNamespaceUri(); - String wsdlAddr = sdRyReportQueryConfig.getQueryReportIndexWsdlAddr(); - String operationName = sdRyReportQueryConfig.getQueryReportIndexWsdlOperationName(); - String result = JaxWsDynamicClient.send(wsdlAddr, namespaceUri, operationName, params); - log.info("查询顺德人医患者交叉索引数据,返回值:{}", result); - if (result == null) { - return new ArrayList<>(); - } - TimeUnit.MILLISECONDS.sleep(sdRyReportQueryConfig.getQueryReportIndexInterval()); - return parseQuerySdRyReportIndex(result); + return shunDePeopleService.getSdRyReportPatientIds(sDryIndex); } catch (Exception ex) { log.error(ex.getMessage(), ex); return new ArrayList<>(); - } finally { - indexQueryLock.unlock(); } } - /** - * 组织顺德人医查询交叉索引的请求参数 - * - * @param sDryIndex 顺德人医关联索引 - * @return 顺德人医查询交叉索引的请求参数 - */ - private String organizationQuerySdRyReportIndexParam(String sDryIndex) { - sDryIndex = sDryIndex.toLowerCase() - .replace("m", "") - .replace("z", ""); - String receiver = "Orion-001"; - String sender = "PaperlessManagementMRIS-001"; - String now = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); - - return "\n" + - "\t\n" + - "\t\n" + - "\t\n" + - "\t\n" + - "\t\n" + - "\t\n" + - "\t\n" + - "\t\t\n" + - "\t\t\n" + - "\t\t\t\n" + - "\t\t\t\t\n" + - "\t\t\t\n" + - "\t\t\n" + - "\t\n" + - "\t\n" + - "\t\t\n" + - "\t\t\n" + - "\t\t\t\n" + - "\t\t\t\t\n" + - "\t\t\t\n" + - "\t\t\n" + - "\t\n" + - "\t\n" + - "\t\t\n" + - "\t\t\t\n" + - "\t\t\n" + - "\t\t\n" + - "\t\t\t\n" + - "\t\t\t\n" + - "\t\t\t\n" + - "\t\t\t\n" + - "\t\t\t\n" + - "\t\t\n" + - "\t\n" + - "\n"; - } - - private static List parseQuerySdRyReportIndex(String result) { - try { - XmlUtil xmlUtil = XmlUtil.of(result); - NodeList nodeList = xmlUtil.getNodeList("/PRPA_HIP1179/controlActProcess/subject/empiIndex/patientIds/patientId"); - int nodeListLength = nodeList.getLength(); - ArrayList patientIds = new ArrayList<>(); - if (nodeListLength > 0) { - for (int i = 0; i < nodeListLength; i++) { - Node node = nodeList.item(i); - String patientId = node.getTextContent(); - if (Func.isNotBlank(patientId)) { - patientIds.add(patientId); - } - } - } - return patientIds; - } catch (Exception ex) { - log.error("顺德人医解析患者交叉索引失败。", ex); - return new ArrayList<>(); - } - } private void refreshTime(AfJobTime afJobTime) { diff --git a/src/main/java/com/docus/server/report/listener/ReportDownListener.java b/src/main/java/com/docus/server/report/listener/ReportDownListener.java index 7a2ab4d..b7d5364 100644 --- a/src/main/java/com/docus/server/report/listener/ReportDownListener.java +++ b/src/main/java/com/docus/server/report/listener/ReportDownListener.java @@ -4,14 +4,13 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; -import com.docus.core.util.Func; import com.docus.infrastructure.web.api.CommonResult; import com.docus.infrastructure.web.api.ResultCode; -import com.docus.server.report.config.ApplicationBusinessConfig; -import com.docus.server.report.dto.ReportDownDto; -import com.docus.server.report.dto.ReportDownPatientDto; -import com.docus.server.report.dto.ReportDownScanFileDto; -import com.docus.server.report.dto.ReportDto; +import com.docus.server.report.api.DownPlatformService; +import com.docus.server.report.api.dto.ReportDownDto; +import com.docus.server.report.api.dto.ReportDownPatientDto; +import com.docus.server.report.api.dto.ReportDownScanFileDto; +import com.docus.server.report.api.dto.ReportDto; import com.docus.server.report.entity.AfReportRecord; import com.docus.server.report.event.TaskConsumptionReportDownEvent; import com.docus.server.report.event.ThreePartyPushReportDownEvent; @@ -29,8 +28,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; /** * 上报下载监听 @@ -41,7 +38,7 @@ import java.util.concurrent.locks.ReentrantLock; @Slf4j public class ReportDownListener { @Resource - private ApplicationBusinessConfig applicationBusinessConfig; + private DownPlatformService downPlatformService; @Resource private AfReportRecordMapper afReportRecordMapper; @@ -70,19 +67,10 @@ public class ReportDownListener { reportDownDto.setScanfiles(reportDownScanFileDtos); // 下面是调用下载服务 - - String requestParam = Func.toJson(reportDownDto); - try { - log.info("调用下载服务,地址:{} ,参数:{}",applicationBusinessConfig.getDownUrl(),requestParam); - String respBody = post(applicationBusinessConfig.getDownUrl(),requestParam); - log.info("调用下载服务成功,响应参数:{}", respBody); - CommonResult commonResult = Func.readJson(respBody, CommonResult.class); - if (ResultCode.SUCCESS.getCode().equals(commonResult.getCode())) { - // 下载返回了成功更新状态 - afReportRecordMapper.updateStateByTaskId(threePartyPushReportDownEvent.getTaskId()); - } - } catch (Exception e) { - log.error("调用下载服务失败", e); + CommonResult result = downPlatformService.report(reportDownDto); + if (ResultCode.SUCCESS.getCode().equals(result.getCode())) { + // 下载返回了成功更新状态 + afReportRecordMapper.updateStateByTaskId(threePartyPushReportDownEvent.getTaskId()); } } @@ -110,30 +98,10 @@ public class ReportDownListener { reportDownDto.setScanfiles(reportDownScanFileDtos); // 下面是调用下载服务 - String requestParam = Func.toJson(reportDownDto); - try { - log.info("调用下载服务,地址:{} ,参数:{}",applicationBusinessConfig.getDownUrl(),requestParam); - String respBody = post(applicationBusinessConfig.getDownUrl(),requestParam); - log.info("调用下载服务成功,响应参数:{}", respBody); - } catch (Exception e) { - log.error("调用下载服务失败", e); - } + downPlatformService.report(reportDownDto); } - private final static Lock HTTP_POST_LOCK=new ReentrantLock(); - public String post(String url,String body){ - HTTP_POST_LOCK.lock(); - try { - HttpRequest post = HttpUtil.createPost(url); - post.timeout(5 * 1000); - post.header("Content-Type", "application/json; charset=utf-8"); - post.body(body); - HttpResponse response = post.execute(); - return response.body(); - }finally { - HTTP_POST_LOCK.unlock(); - } - } + public static void main(String[] args) throws IOException { BASE64Encoder encoder = new BASE64Encoder(); diff --git a/src/main/java/com/docus/server/report/service/ReportService.java b/src/main/java/com/docus/server/report/service/ReportService.java index 2cc64e7..aae0928 100644 --- a/src/main/java/com/docus/server/report/service/ReportService.java +++ b/src/main/java/com/docus/server/report/service/ReportService.java @@ -1,6 +1,6 @@ package com.docus.server.report.service; -import com.docus.server.report.dto.ReportDto; +import com.docus.server.report.api.dto.ReportDto; import java.util.List; diff --git a/src/main/java/com/docus/server/report/service/impl/ReportServiceImpl.java b/src/main/java/com/docus/server/report/service/impl/ReportServiceImpl.java index 871dc8d..5e4a31a 100644 --- a/src/main/java/com/docus/server/report/service/impl/ReportServiceImpl.java +++ b/src/main/java/com/docus/server/report/service/impl/ReportServiceImpl.java @@ -3,7 +3,7 @@ package com.docus.server.report.service.impl; import com.docus.core.util.Func; import com.docus.infrastructure.redis.service.IdService; import com.docus.server.collection.mapper.TBasicMapper; -import com.docus.server.report.dto.ReportDto; +import com.docus.server.report.api.dto.ReportDto; import com.docus.server.report.entity.AfCollectTask; import com.docus.server.report.entity.AfReportRecord; import com.docus.server.report.event.TaskConsumptionReportDownEvent; diff --git a/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java b/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java index f5b3097..f3e0ca2 100644 --- a/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java +++ b/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.docus.core.util.DateUtil; import com.docus.core.util.Func; import com.docus.infrastructure.core.exception.BaseException; -import com.docus.server.report.dto.ReportDto; +import com.docus.server.report.api.dto.ReportDto; import com.docus.server.report.service.ReportService; import com.docus.server.report.util.IdUtil; import com.docus.server.report.util.JSXMLResult;