commit a83fc1c0963a9e992e156adc7bfad38286842932
Author: wyb <1977763549@qq.com>
Date: Mon Jul 15 08:42:12 2024 +0800
init:初始化文件数据采集,顺德人医手麻采集开发
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6a8a1e4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+docus-services/docus-services-system1/
+
+### IntelliJ IDEA ###
+*.log
+.idea
+*.iws
+*.iml
+*.ipr
+mvnw*
+*.cmd
+*.mvn
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+logs*
\ No newline at end of file
diff --git a/assembly.xml b/assembly.xml
new file mode 100644
index 0000000..b6fb827
--- /dev/null
+++ b/assembly.xml
@@ -0,0 +1,73 @@
+
+
+ exe
+
+ dir
+
+ false
+
+
+
+
+ /lib
+ ${basedir}/target/lib
+
+
+
+ /config
+ ${basedir}/target/resources
+ 0755
+
+ *.xml
+ *.yml
+ *.properties
+
+
+
+
+ /dataConfig
+ ${basedir}/target/dataConfig
+ 0755
+
+ *.json
+
+
+
+
+ /
+ ${basedir}/target/resources/bin
+ 0755
+
+ *.bat
+
+
+
+
+ /
+ ${basedir}/target/resources/bin
+ 0755
+
+ *.xml
+
+
+
+
+ /
+ ${basedir}
+ 0755
+
+ *.exe
+
+
+
+
+ ${basedir}/target
+ /
+ 0755
+
+ ${project.build.finalName}.jar
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..f368e85
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,369 @@
+
+
+
+ com.docus
+ docus-bom
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ docus-collect-file-data
+
+
+
+ com.docus
+ docus-knife4j-starter
+
+
+
+ com.belerweb
+ pinyin4j
+ 2.5.1
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+ checker-qual
+ org.checkerframework
+
+
+ error_prone_annotations
+ com.google.errorprone
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.0
+
+
+ com.baomidou
+ dynamic-datasource-spring-boot-starter
+ 3.4.0
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ HdrHistogram
+ org.hdrhistogram
+
+
+ jsr305
+ com.google.code.findbugs
+
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.28
+
+
+ org.projectlombok
+ lombok
+ 1.18.16
+ compile
+
+
+ org.projectlombok
+ lombok
+ 1.18.16
+ compile
+
+
+ org.bgee.log4jdbc-log4j2
+ log4jdbc-log4j2-jdbc4.1
+
+
+ com.alibaba
+ druid
+ 1.2.4
+ compile
+
+
+ com.baomidou
+ mybatis-plus-generator
+ 3.4.1
+ compile
+
+
+ org.apache.velocity
+ velocity-engine-core
+ 2.0
+
+
+ com.xuxueli
+ xxl-job-core
+
+
+ com.docus
+ docus-base-starter
+
+
+ knife4j-spring-boot-autoconfigure
+ com.github.xiaoymin
+
+
+
+
+
+ com.docus
+ docus-tool-starter
+
+
+
+ com.docus
+ docus-shiro-starter
+
+
+
+ com.docus
+ docus-base-starter
+
+
+ springfox-core
+ io.springfox
+
+
+ springfox-schema
+ io.springfox
+
+
+ springfox-spi
+ io.springfox
+
+
+ knife4j-spring-boot-autoconfigure
+ com.github.xiaoymin
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-hystrix
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ junit
+ junit
+ test
+
+
+
+
+ com.microsoft.sqlserver
+ sqljdbc4
+ 4.0
+
+
+
+
+ com.oracle
+ ojdbc6
+ 11.2.0.4.0
+
+
+
+
+
+ org.apache.cxf
+ cxf-spring-boot-starter-jaxws
+ 3.3.4
+
+
+
+ org.dom4j
+ dom4j
+ 2.1.1
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.4.4
+
+ ZIP
+
+
+ non-exists
+ non-exists
+
+
+
+
+
+
+ repackage
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-dependencies
+ package
+
+ copy-dependencies
+
+
+
+ target/lib
+ false
+ false
+ runtime
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.2.0
+
+
+ copy-resources
+ package
+
+ copy-resources
+
+
+
+
+ src/main/resources
+
+ **/*.*
+
+
+
+ ${project.build.directory}/resources
+
+
+
+ copy-bin
+ package
+
+ copy-resources
+
+
+
+
+ src/main/resources
+ true
+
+ bin/*.xml
+ *.yml
+ bin/*.bat
+
+
+
+ ${project.build.directory}/resources
+
+
+
+ copy-data-config
+ package
+
+ copy-resources
+
+
+
+
+ ../../dataConfig
+ true
+
+
+ ${project.build.directory}/dataConfig
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.2.0
+
+
+ **/*.yml
+
+
+
+
+
+ maven-assembly-plugin
+
+
+
+ ${project.artifactId}
+ false
+
+ assembly.xml
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+
+
+
+ dev
+
+ prod
+
+
+ true
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/AppRunBootstrap.java b/src/main/java/com/docus/server/AppRunBootstrap.java
new file mode 100644
index 0000000..432cef6
--- /dev/null
+++ b/src/main/java/com/docus/server/AppRunBootstrap.java
@@ -0,0 +1,34 @@
+package com.docus.server;
+
+
+import lombok.extern.slf4j.Slf4j;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+import java.util.Properties;
+
+
+/**
+ * @author wyb
+ */
+@Slf4j
+@SpringBootApplication(scanBasePackages ={"com.docus"})
+@MapperScan("com.docus.server.**.mapper")
+@EnableFeignClients(basePackages = {"com.docus"})
+public class AppRunBootstrap {
+ public static void main(String[] args) {
+ Properties props = System.getProperties();
+ props.setProperty("org.apache.cxf.stax.allowInsecureParser", "1");
+ props.setProperty("UseSunHttpHandler", "true");
+ System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
+
+ SpringApplication.run(AppRunBootstrap.class, args);
+ }
+
+ static void testMysql(){
+
+
+ }
+}
diff --git a/src/main/java/com/docus/server/archive/dto/PatientInfoDto.java b/src/main/java/com/docus/server/archive/dto/PatientInfoDto.java
new file mode 100644
index 0000000..8550f45
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/dto/PatientInfoDto.java
@@ -0,0 +1,20 @@
+package com.docus.server.archive.dto;
+
+import lombok.Data;
+
+/**
+ * 患者信息
+ * @author YongBin Wen
+ * @date 2024/7/12 14:52
+ */
+@Data
+public class PatientInfoDto {
+ /**
+ * (住院号)
+ */
+ private String inpatientNo;
+ /**
+ * (住院次数)
+ */
+ private Integer admissTimes;
+}
diff --git a/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java b/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java
new file mode 100644
index 0000000..8105422
--- /dev/null
+++ b/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java
@@ -0,0 +1,12 @@
+package com.docus.server.archive.mapper;
+
+
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface TBasicMapper {
+
+
+
+
+}
diff --git a/src/main/java/com/docus/server/config/DocusServerUrlConfig.java b/src/main/java/com/docus/server/config/DocusServerUrlConfig.java
new file mode 100644
index 0000000..f6ee45e
--- /dev/null
+++ b/src/main/java/com/docus/server/config/DocusServerUrlConfig.java
@@ -0,0 +1,22 @@
+package com.docus.server.config;
+
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/3/29 14:00
+ */
+@Component
+@Data
+public class DocusServerUrlConfig {
+ @Value("${docus.url.viewcollect-server}")
+ private String viewCollectServerUrl;
+
+ @Value("${docus.url.downploadlatform-server}")
+ private String downloadPlatformServerUrl;
+
+ @Value("${docus.url.taskdistribute-server}")
+ private String taskDistributeServerUrl;
+}
diff --git a/src/main/java/com/docus/server/config/XxlJobConfig.java b/src/main/java/com/docus/server/config/XxlJobConfig.java
new file mode 100644
index 0000000..18f3257
--- /dev/null
+++ b/src/main/java/com/docus/server/config/XxlJobConfig.java
@@ -0,0 +1,87 @@
+package com.docus.server.config;
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2021/5/7 16:23
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2021/5/7 16:23
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+
+
+
+@Configuration
+public class XxlJobConfig {
+ private Logger logger = LoggerFactory.getLogger(XxlJobConfig.class);
+
+ @Value("${xxl.job.admin.addresses}")
+ private String adminAddresses;
+
+ @Value("${xxl.job.accessToken}")
+ private String accessToken;
+
+ @Value("${xxl.job.executor.appname}")
+ private String appname;
+
+ @Value("${xxl.job.executor.address}")
+ private String address;
+
+ @Value("${xxl.job.executor.ip}")
+ private String ip;
+
+ @Value("${xxl.job.executor.port}")
+ private int port;
+
+ @Value("${xxl.job.executor.logpath}")
+ private String logPath;
+
+ @Value("${xxl.job.executor.logretentiondays}")
+ private int logRetentionDays;
+
+
+ @Bean
+ public XxlJobSpringExecutor xxlJobExecutor() {
+ logger.info(">>>>>>>>>>> xxl-job config init.");
+ XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+ xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+ xxlJobSpringExecutor.setAppname(appname);
+ xxlJobSpringExecutor.setAddress(address);
+ xxlJobSpringExecutor.setIp(ip);
+ xxlJobSpringExecutor.setPort(port);
+ xxlJobSpringExecutor.setAccessToken(accessToken);
+ xxlJobSpringExecutor.setLogPath(logPath);
+ xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+ return xxlJobSpringExecutor;
+ }
+
+ /**
+ * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
+ *
+ * 1、引入依赖:
+ *
+ * org.springframework.cloud
+ * spring-cloud-commons
+ * ${version}
+ *
+ *
+ * 2、配置文件,或者容器启动变量
+ * spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
+ *
+ * 3、获取IP
+ * String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
+ *//*
+
+*/
+}
diff --git a/src/main/java/com/docus/server/rpc/DownPlatformService.java b/src/main/java/com/docus/server/rpc/DownPlatformService.java
new file mode 100644
index 0000000..4c53ccf
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/DownPlatformService.java
@@ -0,0 +1,23 @@
+package com.docus.server.rpc;
+
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.server.rpc.dto.ReportDownDto;
+
+
+/**
+ * 下载平台服务接口
+ *
+ * @author jiashi
+ */
+
+public interface DownPlatformService {
+
+
+ /**
+ * 下载服务文件上报
+ *
+ * @param reportDownDto 下载服务上报参数
+ * @return 结果
+ */
+ CommonResult report(ReportDownDto reportDownDto);
+}
diff --git a/src/main/java/com/docus/server/rpc/TaskDistributeService.java b/src/main/java/com/docus/server/rpc/TaskDistributeService.java
new file mode 100644
index 0000000..774920a
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/TaskDistributeService.java
@@ -0,0 +1,24 @@
+package com.docus.server.rpc;
+
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.server.rpc.dto.ReportDownTwoDto;
+
+/**
+ * 无视图任务服务
+ *
+ * @author wyb
+ */
+
+public interface TaskDistributeService {
+
+
+ /**
+ * 无视图-根据采集器类型获取任务信息
+ *
+ * @param collectorId 采集器类型
+ * @return 任务信息
+ */
+ CommonResult getNoViewTaskByCollectorId(String collectorId);
+
+ CommonResult cancel(Long taskId);
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/PatientInfoDTO.java b/src/main/java/com/docus/server/rpc/dto/PatientInfoDTO.java
new file mode 100644
index 0000000..abadec9
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/PatientInfoDTO.java
@@ -0,0 +1,37 @@
+package com.docus.server.rpc.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 患者基础信息
+ *
+ * @author WYBDEV
+ */
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+@ApiModel(value = "患者信息")
+public class PatientInfoDTO {
+ @ApiModelProperty(value = "病案主键")
+ private String patientId;
+ @ApiModelProperty(value = "住院号")
+ private String inpatientNo;
+ @ApiModelProperty(value = "住院次数")
+ private Integer admissTimes;
+ @ApiModelProperty(value = "入院日期 yyyy-MM-dd HH:mm:ss")
+ private String admissDate;
+ @ApiModelProperty(value = "入院科室名称")
+ private String admissDeptName;
+ @ApiModelProperty(value = "出院日期 yyyy-MM-dd HH:mm:ss")
+ private String disDate;
+ @ApiModelProperty(value = "出院科室名称")
+ private String disDeptName;
+ @ApiModelProperty(value = "记账号")
+ private String jzh;
+ @ApiModelProperty(value = "姓名")
+ private String name;
+ @ApiModelProperty(value = "住院id")
+ private String admissId;
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportDownDto.java b/src/main/java/com/docus/server/rpc/dto/ReportDownDto.java
new file mode 100644
index 0000000..c06a089
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportDownDto.java
@@ -0,0 +1,30 @@
+package com.docus.server.rpc.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ReportDownDto {
+ @ApiModelProperty(value = "采集器id")
+ private String collectorid;
+
+ @ApiModelProperty(value = "采集器ip")
+ private String ip;
+
+ @ApiModelProperty(value = "分类id")
+ private String assortid;
+
+ @ApiModelProperty(value = "患者信息")
+ private ReportDownPatientDto patient;
+
+ @ApiModelProperty(value = "文件信息")
+ private List scanfiles;
+
+ @ApiModelProperty(value = "扫描用户代码")
+ private String scanusercode;
+ @ApiModelProperty(value = "扫描用户名称")
+ private String scanusername;
+}
\ No newline at end of file
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportDownPatientDto.java b/src/main/java/com/docus/server/rpc/dto/ReportDownPatientDto.java
new file mode 100644
index 0000000..23fb86d
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportDownPatientDto.java
@@ -0,0 +1,19 @@
+package com.docus.server.rpc.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ReportDownPatientDto {
+ @ApiModelProperty(value = "记帐号")
+ private String jzh;
+ @ApiModelProperty(value = "住院次数,记帐号重复则加这个参数,无则Null")
+ private Integer admisstimes;
+ @ApiModelProperty(value = "病案主键,如有传则使用,无则使用jzh")
+ private String patientid;
+ @ApiModelProperty(value = "病案号")
+ private String inpatientno;
+
+ @ApiModelProperty(value = "物理存储位置,有则传")
+ private String storagelocation;
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportDownScanFileDto.java b/src/main/java/com/docus/server/rpc/dto/ReportDownScanFileDto.java
new file mode 100644
index 0000000..ef6127c
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportDownScanFileDto.java
@@ -0,0 +1,32 @@
+package com.docus.server.rpc.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ReportDownScanFileDto {
+ @ApiModelProperty(value = "任务id(如无效任务id,则不更新任务表数据)")
+ private Long taskid;
+ @ApiModelProperty(value = "文件标题")
+ private String filetitle;
+ @ApiModelProperty(value = "采集类型(文件来源 1:采集器;2:扫描生产软件)")
+ private int filesource;
+ @ApiModelProperty(value = "下载类型(1:服务器本地;2:ftp服务器;3:共享文件夹)")
+ private int filestoragetype;
+ @ApiModelProperty(value = "文件类型(1:url,2:base64,3:url base64,4:共享文件,5:本地文件base64)")
+ private int filetype=1;
+ @ApiModelProperty(value = "下载地址")
+ private String downurl;
+ // @ApiModelProperty(value = "档案信息")
+// private String recordid;
+ @ApiModelProperty(value = "采集流水号")
+ private String serialnum;
+
+ @ApiModelProperty(value = "排序日期")
+ private String sortdate;
+
+ @ApiModelProperty(value = "是否作废 : 0:否 不作废,1:是 作废")
+ private int cancel=0;
+
+
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportDownTwoDto.java b/src/main/java/com/docus/server/rpc/dto/ReportDownTwoDto.java
new file mode 100644
index 0000000..25a2d9f
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportDownTwoDto.java
@@ -0,0 +1,29 @@
+package com.docus.server.rpc.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ReportDownTwoDto {
+ @ApiModelProperty(value = "档案编号")
+ private String patientId;
+ @ApiModelProperty(value = "记账号")
+ private String jzh;
+ @ApiModelProperty(value = "档案类型")
+ private String recordType;
+ @ApiModelProperty(value = "档案时间")
+ private String createTime;
+ @ApiModelProperty(value = "患者信息")
+ private ReportPatientTwoDto patient =new ReportPatientTwoDto();
+ @ApiModelProperty(value = "住院信息")
+ private List hospitals = new ArrayList<>();
+ @ApiModelProperty(value = "任务信息")
+ private List tasks = new ArrayList<>();
+ @ApiModelProperty(value = "母亲基础信息")
+ private PatientInfoDTO parent;
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportDto.java b/src/main/java/com/docus/server/rpc/dto/ReportDto.java
new file mode 100644
index 0000000..ca1408a
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportDto.java
@@ -0,0 +1,97 @@
+package com.docus.server.rpc.dto;
+
+
+import lombok.Data;
+
+/**
+ * 报告推送信息
+ */
+@Data
+public class ReportDto {
+ /**
+ * 住院号
+ */
+ private String inpatientNo;
+ /**
+ * 记账号/住院流水号
+ */
+ private String jzh;
+ /**
+ * 住院次数
+ */
+ private Integer admisstimes;
+ /**
+ * 采集来源系统
+ */
+ private String sysFlag;
+ /**
+ * 下载地址
+ */
+ private String downUrl;
+ /**
+ * 文件名
+ */
+ private String fileTitle;
+ /**
+ * 采集流水号/文件唯一id
+ */
+ private String serialnum;
+
+ /**
+ * 文件分类id
+ */
+ private String assortId;
+
+ /**
+ * 采集类型(文件来源 1:采集器;2:扫描生产软件)
+ */
+ private String fileSource;
+
+ /**
+ * 文件保存位置类型 1:服务器本地;2:ftp服务器;3:共享文件夹
+ */
+ private String filestoragetype;
+
+ /**
+ * 下载对应任务id ,接收处理
+ */
+ private Long taskId;
+
+ /**
+ * 业务病案主键
+ */
+ private String patientId;
+
+ /**
+ * 下载路径类型 1:url,2:base64,3:url base64,4:共享文件,5:本地文件base64
+ */
+ private Integer downtype = 1;
+
+ /**
+ * 患者本次就诊唯一键:患者id【12位】+就诊次
+ * 数
+ */
+ private String visitSn;
+
+ /**
+ * 患者id
+ */
+ private String patientSn;
+
+
+ /**
+ * 检查报告单号,用于顺德人医推送 报告信息和报告地址的关联
+ */
+ private String reportSn;
+
+ /**
+ * 如果多次上传是否合并文件标题
+ */
+ private boolean mergeFileTitle;
+
+
+
+ public ReportDto() {
+ }
+
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportHospitalTwoDto.java b/src/main/java/com/docus/server/rpc/dto/ReportHospitalTwoDto.java
new file mode 100644
index 0000000..428cb17
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportHospitalTwoDto.java
@@ -0,0 +1,27 @@
+package com.docus.server.rpc.dto;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *
+ */
+@Data
+public class ReportHospitalTwoDto {
+
+ @ApiModelProperty(value = "患者id")
+ private String patientId;
+ @ApiModelProperty(value = "住院次数")
+ private Integer admissTimes;
+ @ApiModelProperty(value = "住院日期")
+ private String admissDate;
+ @ApiModelProperty(value = "出院日期")
+ private String disDate;
+ @ApiModelProperty(value = "出院科室名称")
+ private String disDeptName;
+ @ApiModelProperty(value = "出院科室名称")
+ private String admissDeptName;
+ @ApiModelProperty(value = "卡号")
+ private String admissId;
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportPatientTwoDto.java b/src/main/java/com/docus/server/rpc/dto/ReportPatientTwoDto.java
new file mode 100644
index 0000000..3a87906
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportPatientTwoDto.java
@@ -0,0 +1,18 @@
+package com.docus.server.rpc.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 上报打印 患者信息
+ */
+@Data
+public class ReportPatientTwoDto {
+
+ @ApiModelProperty(value = "住院号/就诊号")
+ private String inpatientNo;
+ @ApiModelProperty(value = "患者姓名")
+ private String name;
+ @ApiModelProperty(value = "id号")
+ private String patientId;
+}
diff --git a/src/main/java/com/docus/server/rpc/dto/ReportTaskTwoDto.java b/src/main/java/com/docus/server/rpc/dto/ReportTaskTwoDto.java
new file mode 100644
index 0000000..6a36cab
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/dto/ReportTaskTwoDto.java
@@ -0,0 +1,19 @@
+package com.docus.server.rpc.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+/**
+ *
+ */
+@Data
+public class ReportTaskTwoDto {
+ @ApiModelProperty(value = "采集器标识")
+ private String collectorId;
+ @ApiModelProperty(value = "任务id")
+ private Long taskId;
+ @ApiModelProperty(value = "患者id")
+ private String patientId;
+
+}
diff --git a/src/main/java/com/docus/server/rpc/impl/DownPlatformServiceImpl.java b/src/main/java/com/docus/server/rpc/impl/DownPlatformServiceImpl.java
new file mode 100644
index 0000000..1082271
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/impl/DownPlatformServiceImpl.java
@@ -0,0 +1,51 @@
+package com.docus.server.rpc.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.config.DocusServerUrlConfig;
+import com.docus.server.rpc.DownPlatformService;
+import com.docus.server.rpc.dto.ReportDownDto;
+import com.docus.server.rpc.dto.ReportDownScanFileDto;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * 下载平台服务接口
+ *
+ * @author jiashi
+ */
+@Component
+@Slf4j
+public class DownPlatformServiceImpl implements DownPlatformService {
+
+ @Resource
+ private DocusServerUrlConfig serverUrlConfig;
+
+ @Override
+ public CommonResult report(ReportDownDto reportDownDto) {
+ String downUrl = serverUrlConfig.getDownloadPlatformServerUrl() + "api/downplatform/report";
+ String requestId = Func.randomUUID();
+ String requestParam = Func.toJson(reportDownDto);
+ ReportDownScanFileDto report = reportDownDto.getScanfiles().get(0);
+ log.info("[{}]调用下载服务,地址:{} ,参数:taskid={}", requestId, downUrl, report.getTaskid());
+ String respBody = post(downUrl, requestParam);
+ log.info("[{}]调用下载服务成功,响应参数:{}", requestId, respBody);
+ return Func.readJson(respBody, CommonResult.class);
+ }
+
+ public String post(String url, String body) {
+ 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();
+
+ }
+}
diff --git a/src/main/java/com/docus/server/rpc/impl/TaskDistributeServiceImpl.java b/src/main/java/com/docus/server/rpc/impl/TaskDistributeServiceImpl.java
new file mode 100644
index 0000000..c105ddb
--- /dev/null
+++ b/src/main/java/com/docus/server/rpc/impl/TaskDistributeServiceImpl.java
@@ -0,0 +1,48 @@
+package com.docus.server.rpc.impl;
+
+import cn.hutool.http.HttpUtil;
+import com.docus.core.util.Func;
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.server.config.DocusServerUrlConfig;
+import com.docus.server.rpc.TaskDistributeService;
+import com.docus.server.rpc.dto.ReportDownTwoDto;
+import com.fasterxml.jackson.core.type.TypeReference;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 无视图任务服务
+ *
+ * @author wyb
+ */
+@Component
+@Slf4j
+public class TaskDistributeServiceImpl implements TaskDistributeService {
+ @Resource
+ private DocusServerUrlConfig serverUrlConfig;
+
+ @Override
+ public CommonResult getNoViewTaskByCollectorId(String collectorId) {
+ String getTaskUrl = serverUrlConfig.getTaskDistributeServerUrl() + "api/noviewtask/GetTask?collectid=" + collectorId;
+ String result = HttpUtil.get(getTaskUrl);
+ return Func.readJson(result, new TypeReference>() {
+ });
+ }
+
+
+ @Override
+ public CommonResult cancel(Long taskId) {
+ String taskCancelUrl = serverUrlConfig.getTaskDistributeServerUrl() + "api/collector/task/cancel";
+ Map param = new HashMap<>(1);
+ param.put("taskId", taskId);
+ log.info("任务作废 地址{},参数:{}", taskCancelUrl, param);
+ String resp = HttpUtil.post(taskCancelUrl, Func.toJson(param));
+ log.info("任务作废结果:{}", resp);
+ return Func.readJson(resp, new TypeReference>() {
+ });
+ }
+}
diff --git a/src/main/java/com/docus/server/sdry/collector/CollectResult.java b/src/main/java/com/docus/server/sdry/collector/CollectResult.java
new file mode 100644
index 0000000..23499ce
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/collector/CollectResult.java
@@ -0,0 +1,9 @@
+package com.docus.server.sdry.collector;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/7/12 14:26
+ */
+public class CollectResult {
+
+}
diff --git a/src/main/java/com/docus/server/sdry/collector/Collector.java b/src/main/java/com/docus/server/sdry/collector/Collector.java
new file mode 100644
index 0000000..bbc5499
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/collector/Collector.java
@@ -0,0 +1,17 @@
+package com.docus.server.sdry.collector;
+
+import java.util.List;
+
+/**
+ * 采集器
+ * @author YongBin Wen
+ * @date 2024/7/12 14:23
+ */
+public interface Collector {
+ /**
+ * 采集
+ * @return 返回采集结果
+ */
+ List collect();
+
+}
diff --git a/src/main/java/com/docus/server/sdry/collector/ShouMaCollectResult.java b/src/main/java/com/docus/server/sdry/collector/ShouMaCollectResult.java
new file mode 100644
index 0000000..d3d4c1c
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/collector/ShouMaCollectResult.java
@@ -0,0 +1,38 @@
+package com.docus.server.sdry.collector;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/7/12 14:26
+ */
+@Data
+public class ShouMaCollectResult extends CollectResult {
+ /**
+ * (文件唯一值)
+ */
+ private String fileNo;
+ /**
+ * (住院号)
+ */
+ private String inpatientNo;
+ /**
+ * (住院次数)
+ */
+ private Integer admissTimes;
+ /**
+ * (报告名称)
+ */
+ private String fileTitle;
+ /**
+ * (报告地址http)
+ */
+ private String filePath;
+ /**
+ * (报告最后修改时间)
+ */
+ private Date updateTime;
+
+}
diff --git a/src/main/java/com/docus/server/sdry/collector/ShouMaCollector.java b/src/main/java/com/docus/server/sdry/collector/ShouMaCollector.java
new file mode 100644
index 0000000..ca428d5
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/collector/ShouMaCollector.java
@@ -0,0 +1,53 @@
+package com.docus.server.sdry.collector;
+
+import cn.hutool.core.util.StrUtil;
+import com.docus.core.util.Func;
+import com.docus.infrastructure.core.exception.BaseException;
+import com.docus.server.archive.dto.PatientInfoDto;
+import com.docus.server.sdry.converter.ShouMaConverter;
+import com.docus.server.sdry.entity.ShouMaView;
+import com.docus.server.sdry.mapper.ShouMaViewMapper;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/7/12 14:26
+ */
+public class ShouMaCollector implements Collector {
+ /**
+ * 访问数据库视图mapper
+ */
+ private final ShouMaViewMapper shouMaViewMapper;
+
+ /**
+ * 患者基础信息
+ */
+ private final PatientInfoDto patientInfoDto;
+
+ /**
+ * 访问数据库附加的额外条件
+ */
+ private final String extraCondition;
+
+
+ public ShouMaCollector(ShouMaViewMapper shouMaViewMapper, PatientInfoDto patientInfoDto, String extraCondition) {
+ if (StrUtil.isBlank(patientInfoDto.getInpatientNo())) {
+ throw new BaseException("患者基础信息病案号不能为空!");
+ }
+ if (Func.isEmpty(patientInfoDto.getAdmissTimes())) {
+ throw new BaseException("患者基础信息住院次数不能为空!");
+ }
+ this.shouMaViewMapper = shouMaViewMapper;
+ this.patientInfoDto = patientInfoDto;
+ this.extraCondition = extraCondition;
+ }
+
+
+ @Override
+ public List collect() {
+ List patientShouMaViewDataList = shouMaViewMapper.getPatientShouMaView(patientInfoDto, extraCondition);
+ return patientShouMaViewDataList.stream().map(ShouMaConverter::convertResult).collect(Collectors.toList());
+ }
+}
diff --git a/src/main/java/com/docus/server/sdry/converter/ShouMaConverter.java b/src/main/java/com/docus/server/sdry/converter/ShouMaConverter.java
new file mode 100644
index 0000000..095f5fc
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/converter/ShouMaConverter.java
@@ -0,0 +1,24 @@
+package com.docus.server.sdry.converter;
+
+import com.docus.server.sdry.collector.ShouMaCollectResult;
+import com.docus.server.sdry.entity.ShouMaView;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/7/12 15:00
+ */
+public class ShouMaConverter {
+ public static ShouMaCollectResult convertResult(ShouMaView shouMaView) {
+ if (shouMaView == null) {
+ return null;
+ }
+ ShouMaCollectResult result = new ShouMaCollectResult();
+ result.setFileNo(shouMaView.getFID());
+ result.setInpatientNo(shouMaView.getFBIHID());
+ result.setAdmissTimes(shouMaView.getFBINCU());
+ result.setFileTitle(shouMaView.getPDESC());
+ result.setFilePath(shouMaView.getPDFPATH());
+ result.setUpdateTime(shouMaView.getFUPDATE());
+ return result;
+ }
+}
diff --git a/src/main/java/com/docus/server/sdry/entity/ShouMaView.java b/src/main/java/com/docus/server/sdry/entity/ShouMaView.java
new file mode 100644
index 0000000..b62f57b
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/entity/ShouMaView.java
@@ -0,0 +1,40 @@
+package com.docus.server.sdry.entity;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/7/12 14:38
+ */
+@Data
+@ApiModel("顺德人医提供的手麻视图数据")
+public class ShouMaView {
+ /**
+ * (文件唯一值)
+ */
+ private String FID;
+ /**
+ * (住院号)
+ */
+ private String FBIHID;
+ /**
+ * (住院次数)
+ */
+ private Integer FBINCU;
+ /**
+ * (报告名称)
+ */
+ private String PDESC;
+ /**
+ * (报告地址http)
+ */
+ private String PDFPATH;
+ /**
+ * (报告最后修改时间)
+ */
+ private Date FUPDATE;
+
+}
diff --git a/src/main/java/com/docus/server/sdry/job/CollectJob.java b/src/main/java/com/docus/server/sdry/job/CollectJob.java
new file mode 100644
index 0000000..3a0a05d
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/job/CollectJob.java
@@ -0,0 +1,98 @@
+package com.docus.server.sdry.job;
+
+import com.alibaba.fastjson.JSONObject;
+import com.docus.core.util.Func;
+import com.docus.infrastructure.web.api.CommonResult;
+import com.docus.infrastructure.web.api.ResultCode;
+import com.docus.server.archive.dto.PatientInfoDto;
+import com.docus.server.archive.mapper.TBasicMapper;
+import com.docus.server.rpc.DownPlatformService;
+import com.docus.server.rpc.TaskDistributeService;
+import com.docus.server.rpc.dto.*;
+import com.docus.server.sdry.collector.ShouMaCollectResult;
+import com.docus.server.sdry.collector.ShouMaCollector;
+import com.docus.server.sdry.mapper.ShouMaViewMapper;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/7/12 15:22
+ */
+@Component
+@Slf4j
+public class CollectJob {
+ @Autowired
+ private DownPlatformService downPlatformService;
+ @Autowired
+ private TaskDistributeService taskDistributeService;
+ @Autowired
+ private TBasicMapper tBasicMapper;
+ @Autowired
+ private ShouMaViewMapper shouMaViewMapper;
+
+ @XxlJob("Sdry-ShouMa-Collect")
+ public void shouMaCollect() {
+ log.info(">>>>>>>>>>>>>>>>>>>>>> 顺德人医手麻视图采集任务开始!");
+ // 1.获取任务和患者信息 2.查询视图信息 3.上报下载
+ String jobParam = XxlJobHelper.getJobParam();
+ JSONObject jobParamJsonObject = JSONObject.parseObject(jobParam);
+ String assortId = jobParamJsonObject.getString("assortId");
+ String collectorId = jobParamJsonObject.getString("collectorId");
+ String extraCondition = jobParamJsonObject.getString("extraCondition");
+ if (Func.isBlank(assortId) || Func.isBlank(collectorId)) {
+ log.warn(">>>>>>>>>>>>>>>>>>>>>> 顺德人医手麻视图采集,未配置手麻采集器和采集文件分段");
+ return;
+ }
+ CommonResult commonResult = taskDistributeService.getNoViewTaskByCollectorId(collectorId);
+ if (ResultCode.SUCCESS.getCode().equals(commonResult.getCode())
+ && commonResult.getData() != null) {
+ ReportDownTwoDto downTwoDto = commonResult.getData();
+ ReportTaskTwoDto task = downTwoDto.getTasks().get(0);
+ log.info("获取了任务:{}", Func.toJson(task));
+
+ ReportHospitalTwoDto hospitalTwoDto = downTwoDto.getHospitals().get(0);
+ ReportPatientTwoDto reportPatientTwoDto = downTwoDto.getPatient();
+ PatientInfoDto patientInfoDto = new PatientInfoDto();
+ patientInfoDto.setInpatientNo(reportPatientTwoDto.getInpatientNo());
+ patientInfoDto.setAdmissTimes(hospitalTwoDto.getAdmissTimes());
+ ShouMaCollector shouMaCollector = new ShouMaCollector(shouMaViewMapper, patientInfoDto, extraCondition);
+ List shouMaCollectResultList = shouMaCollector.collect();
+ int size = shouMaCollectResultList.size();
+ log.info("住院号:{},住院次数:{} 采集手麻数据:{} 条!", patientInfoDto.getInpatientNo(), patientInfoDto.getAdmissTimes(), size);
+ if (size <= 0) {
+ return;
+ }
+ ReportDownPatientDto patient = new ReportDownPatientDto();
+ patient.setPatientid(downTwoDto.getPatientId());
+
+ ReportDownDto reportDownDto = new ReportDownDto();
+ reportDownDto.setAssortid(assortId);
+ reportDownDto.setCollectorid(collectorId);
+ reportDownDto.setIp("");
+ reportDownDto.setPatient(patient);
+
+ for (ShouMaCollectResult result : shouMaCollectResultList) {
+ ReportDownScanFileDto reportDownScanFileDto = new ReportDownScanFileDto();
+ reportDownScanFileDto.setDownurl(result.getFilePath());
+ reportDownScanFileDto.setFiletitle(result.getFileTitle());
+ reportDownScanFileDto.setSerialnum(result.getFileNo());
+ reportDownScanFileDto.setFilesource(1);
+ reportDownScanFileDto.setFiletype(1);
+ reportDownScanFileDto.setFilestoragetype(1);
+ reportDownScanFileDto.setTaskid(task.getTaskId());
+ List scanFiles = Collections.singletonList(reportDownScanFileDto);
+ reportDownDto.setScanfiles(scanFiles);
+ downPlatformService.report(reportDownDto);
+ }
+ }
+ log.info(">>>>>>>>>>>>>>>>>>>>>> 顺德人医手麻视图采集任务结束!");
+ }
+
+}
diff --git a/src/main/java/com/docus/server/sdry/mapper/ShouMaViewMapper.java b/src/main/java/com/docus/server/sdry/mapper/ShouMaViewMapper.java
new file mode 100644
index 0000000..e965695
--- /dev/null
+++ b/src/main/java/com/docus/server/sdry/mapper/ShouMaViewMapper.java
@@ -0,0 +1,26 @@
+package com.docus.server.sdry.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.docus.server.archive.dto.PatientInfoDto;
+import com.docus.server.sdry.entity.ShouMaView;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author YongBin Wen
+ * @date 2024/7/12 14:37
+ */
+@DS("shouMa")
+@Mapper
+public interface ShouMaViewMapper {
+ /**
+ * 根据患者信息获取手麻视图的数据
+ *
+ * @param patientInfoDto 患者信息
+ * @param extraCondition 额外的sql条件
+ * @return 手麻视图数据
+ */
+ List getPatientShouMaView(@Param("patient") PatientInfoDto patientInfoDto, @Param("ext") String extraCondition);
+}
diff --git a/src/main/resources/bin/install.bat b/src/main/resources/bin/install.bat
new file mode 100644
index 0000000..7a651bc
--- /dev/null
+++ b/src/main/resources/bin/install.bat
@@ -0,0 +1,33 @@
+@echo off
+
+for /f "delims=" %%t in ('winsw.exe status') do set str=%%t
+echo %str%
+
+
+
+if %str%==Started (
+echo "restart....."
+winsw stop
+PING 127.0.0.1 -n 10 -w 30000 >NUL
+winsw start
+)
+
+
+
+if %str%==Stopped (
+echo "start....."
+winsw start
+)
+
+
+if %str%==NonExistent (
+echo "deploy and start....."
+winsw install
+winsw start
+echo c
+)
+
+
+
+
+
diff --git a/src/main/resources/bin/start.bat b/src/main/resources/bin/start.bat
new file mode 100644
index 0000000..58c25cb
--- /dev/null
+++ b/src/main/resources/bin/start.bat
@@ -0,0 +1,21 @@
+set java_opts=-Xms512m -Xmx512m
+set key="java_opts"
+
+
+rem 文件不存在,就跳过
+if not exist java-ops.ini goto end
+
+for /f "tokens=1,2 delims==" %%i in (java-ops.ini) do (
+ if "%%i"==%key% set java_opts=%%j)
+echo java_opts is : %java_opts%
+
+:end
+
+rem 启动java
+
+java %java_opts% -Dfile.encoding=utf-8 -jar -Dspring.profiles.active=@profile.name@ -Dloader.path=config,lib @project.build.finalName@.jar
+
+
+
+
+
diff --git a/src/main/resources/bin/stop.bat b/src/main/resources/bin/stop.bat
new file mode 100644
index 0000000..98468a0
--- /dev/null
+++ b/src/main/resources/bin/stop.bat
@@ -0,0 +1,13 @@
+@echo off
+
+for /f "delims=" %%t in ('winsw.exe status') do set str=%%t
+echo %str%
+
+
+
+if %str%==Started (
+winsw stop
+@echo wait program stop .....
+PING 127.0.0.1 -n 30 -w 10000 >NUL
+)
+
diff --git a/src/main/resources/bin/update.bat b/src/main/resources/bin/update.bat
new file mode 100644
index 0000000..0d025de
--- /dev/null
+++ b/src/main/resources/bin/update.bat
@@ -0,0 +1,19 @@
+@echo off
+
+set deployDir=%1\docus-collect-file-data
+if %deployDir%=="" set deployDir=d:\webroot\docus-collect-file-data
+
+set curr_file=%cd%
+cd /d %deployDir%
+call stop.bat
+cd %curr_file%
+sc query docus-backup-sys |Find "RUNNING" && ping 127.0.0.1 -n 10 >nul
+rd/s/q %deployDir%\lib
+rd/s/q %deployDir%\dataConfig
+rd/s/q %deployDir%\config
+del /s/q %deployDir%\*.jar
+xcopy /Y/E/I * %deployDir%
+
+cd /d %deployDir%
+call install.bat
+
diff --git a/src/main/resources/bin/winsw.xml b/src/main/resources/bin/winsw.xml
new file mode 100644
index 0000000..931a6bf
--- /dev/null
+++ b/src/main/resources/bin/winsw.xml
@@ -0,0 +1,8 @@
+
+ docus-collect-file-data
+ 生产-嘉时-文件数据采集服务
+ 生产-嘉时-文件数据采集服务
+ Automatic
+ %BASE%\start.bat
+
+
\ No newline at end of file
diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..b06aa7f
--- /dev/null
+++ b/src/main/resources/bootstrap.yml
@@ -0,0 +1,111 @@
+server:
+ port: 9010
+
+spring:
+ application:
+ name: @artifactId@
+ profiles:
+ active: prod
+ datasource:
+ dynamic:
+ primary: master #设置默认的数据源,默认值为master
+ strict: false #是否用严格模式,如果启用在味匹配到指定数据源时抛出异常
+ datasource:
+ master:
+ url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_medicalrecord?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+ username: docus
+ password: docus702
+ driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
+ type: com.alibaba.druid.pool.DruidDataSource
+ # 初始化配置
+ initial-size: 3
+ # 最小连接数
+ min-idle: 3
+ # 最大连接数
+ max-active: 15
+ # 获取连接超 时时间
+ max-wait: 5000
+ # 连接有效性检测时间
+ time-between-eviction-runs-millis: 90000
+ # 最大空闲时间
+ min-evictable-idle-time-millis: 1800000
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ validation-query: select 1
+ shouMa:
+ url: jdbc:log4jdbc:mysql://192.168.8.108:3306/lancet-aims?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
+ username: wzh
+ password: wzh
+ driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
+ type: com.alibaba.druid.pool.DruidDataSource
+ # 初始化配置
+ initial-size: 3
+ # 最小连接数
+ min-idle: 3
+ # 最大连接数
+ max-active: 10
+ # 获取连接超 时时间
+ max-wait: 5000
+ # 连接有效性检测时间
+ time-between-eviction-runs-millis: 90000
+ # 最大空闲时间
+ min-evictable-idle-time-millis: 1800000
+ test-while-idle: true
+ test-on-borrow: false
+ test-on-return: false
+ validation-query: select 1 from dual
+ redis:
+ host: redis.docus.cn
+ password: JSdocus@702
+ cloud:
+ nacos:
+ discovery:
+ server-addr: nacos.docus.cn
+ namespace: 34acdf7a-9fc6-4bbd-8aea-9a47c8007ad5
+ config:
+ server-addr: ${spring.cloud.nacos.discovery.server-addr}
+ namespace: 34acdf7a-9fc6-4bbd-8aea-9a47c8007ad5
+ file-extension: yml
+ shared-configs:
+ - comm.${spring.cloud.nacos.config.file-extension}
+
+
+
+docus:
+ sync-service-prefix: ZqDyRy
+ default-user-pwd: fd29cd53ec12616e5f36b77d4afffbff
+ url:
+ # 采集任务补偿地址
+ viewcollect-server: http://localhost:9295/
+ # 报告上报地址
+ downploadlatform-server: http://localhost:9291/
+ # 获取无视图模式采集任务地址
+ taskdistribute-server: http://localhost:9296/
+
+
+ dbtype: mysql
+
+mybatis-plus:
+ configuration:
+ map-underscore-to-camel-case: true
+ call-setters-on-nulls: true
+ log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ global-config:
+ db-config:
+ field-strategy: NOT_EMPTY
+ db-type: MYSQL
+xxl:
+ job:
+ accessToken:
+ admin:
+ addresses: http://job.docus.cn:8180/xxl-job-admin
+ executor:
+ appname: docus-collect-file-data
+ address:
+ ip:
+ port: 19000
+ logretentiondays: 30
+ logpath: D:/xxl-job/docus-collect-file-data
+
+
diff --git a/src/main/resources/log4jdbc.log4j2.properties b/src/main/resources/log4jdbc.log4j2.properties
new file mode 100644
index 0000000..5cb6f99
--- /dev/null
+++ b/src/main/resources/log4jdbc.log4j2.properties
@@ -0,0 +1,2 @@
+# If you use SLF4J. First, you need to tell log4jdbc-log4j2 that you want to use the SLF4J logger
+log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
\ No newline at end of file
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
new file mode 100644
index 0000000..cb9e887
--- /dev/null
+++ b/src/main/resources/logback.xml
@@ -0,0 +1,77 @@
+
+
+ docus-collect-file-data
+
+
+
+
+ [%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%contextName] [%thread] [%X{traceId}] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+ [%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%C] [%t] [%X{traceId}] [%L] [%-5p] %m%n
+ utf-8
+
+
+
+
+ ${log.path}%d.%i.log
+
+ 500MB
+
+ 30
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/ShouMaViewMapper.xml b/src/main/resources/mapper/ShouMaViewMapper.xml
new file mode 100644
index 0000000..81e4c2e
--- /dev/null
+++ b/src/main/resources/mapper/ShouMaViewMapper.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml
new file mode 100644
index 0000000..8b84532
--- /dev/null
+++ b/src/main/resources/mapper/TBasicMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/winsw.exe b/winsw.exe
new file mode 100644
index 0000000..ba27e3f
Binary files /dev/null and b/winsw.exe differ
diff --git a/开发日志.md b/开发日志.md
new file mode 100644
index 0000000..4b1ee63
--- /dev/null
+++ b/开发日志.md
@@ -0,0 +1,2 @@
+##2024-7-12 16:07:51 顺德人医开发手麻采集器视图采集
+#### 调度采用XXL-JOB,Sdry-ShouMa-Collect,配置参数有采集器类型(collectorId),文件分段(assortId)和额外的sql条件and开头(extraCondition)`{"assortId":"RC0ZZ3WI3FTMLNM7BWNXGN6D1KWNR6W1","collectorId":"5","extraCondition":" AND PDESC!='麻醉小结' AND PDESC!='手术器械清点单' AND PDESC!='麻醉知情同意书' AND PDESC!='手术安全核查单' AND PDESC!='复苏后交接记录' "}`
\ No newline at end of file