diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
deleted file mode 100644
index 7f91a56..0000000
--- a/.mvn/wrapper/MavenWrapperDownloader.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- https://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
-*/
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.URL;
-import java.nio.channels.Channels;
-import java.nio.channels.ReadableByteChannel;
-import java.util.Properties;
-
-public class MavenWrapperDownloader {
-
- /**
- * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
- */
- private static final String DEFAULT_DOWNLOAD_URL =
- "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar";
-
- /**
- * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
- * use instead of the default one.
- */
- private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
- ".mvn/wrapper/maven-wrapper.properties";
-
- /**
- * Path where the maven-wrapper.jar will be saved to.
- */
- private static final String MAVEN_WRAPPER_JAR_PATH =
- ".mvn/wrapper/maven-wrapper.jar";
-
- /**
- * Name of the property which should be used to override the default download url for the wrapper.
- */
- private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
-
- public static void main(String args[]) {
- System.out.println("- Downloader started");
- File baseDirectory = new File(args[0]);
- System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
-
- // If the maven-wrapper.properties exists, read it and check if it contains a custom
- // wrapperUrl parameter.
- File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
- String url = DEFAULT_DOWNLOAD_URL;
- if (mavenWrapperPropertyFile.exists()) {
- FileInputStream mavenWrapperPropertyFileInputStream = null;
- try {
- mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
- Properties mavenWrapperProperties = new Properties();
- mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
- url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
- } catch (IOException e) {
- System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
- } finally {
- try {
- if (mavenWrapperPropertyFileInputStream != null) {
- mavenWrapperPropertyFileInputStream.close();
- }
- } catch (IOException e) {
- // Ignore ...
- }
- }
- }
- System.out.println("- Downloading from: : " + url);
-
- File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
- if (!outputFile.getParentFile().exists()) {
- if (!outputFile.getParentFile().mkdirs()) {
- System.out.println(
- "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
- }
- }
- System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
- try {
- downloadFileFromURL(url, outputFile);
- System.out.println("Done");
- System.exit(0);
- } catch (Throwable e) {
- System.out.println("- Error downloading");
- e.printStackTrace();
- System.exit(1);
- }
- }
-
- private static void downloadFileFromURL(String urlString, File destination) throws Exception {
- URL website = new URL(urlString);
- ReadableByteChannel rbc;
- rbc = Channels.newChannel(website.openStream());
- FileOutputStream fos = new FileOutputStream(destination);
- fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
- fos.close();
- rbc.close();
- }
-
-}
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 01e6799..0000000
Binary files a/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
deleted file mode 100644
index cd0d451..0000000
--- a/.mvn/wrapper/maven-wrapper.properties
+++ /dev/null
@@ -1 +0,0 @@
-distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip
diff --git a/pom.xml b/pom.xml
index a2ea625..67cc42f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,6 +17,7 @@
1.8
+ true
diff --git a/src/main/java/com/ann/demo/controller/JAXDynamicClientFactory.java b/src/main/java/com/ann/demo/controller/JAXDynamicClientFactory.java
new file mode 100644
index 0000000..9240df0
--- /dev/null
+++ b/src/main/java/com/ann/demo/controller/JAXDynamicClientFactory.java
@@ -0,0 +1,53 @@
+package com.ann.demo.controller;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.CXFBusFactory;
+import org.apache.cxf.endpoint.EndpointImplFactory;
+import org.apache.cxf.endpoint.dynamic.DynamicClientFactory;
+import org.apache.cxf.jaxws.support.JaxWsEndpointImplFactory;
+
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2019/9/11 16:15
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2019/9/11 16:15
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+public class JAXDynamicClientFactory extends DynamicClientFactory {
+ protected JAXDynamicClientFactory(Bus bus) {
+ super(bus);
+ }
+
+ @Override
+ protected EndpointImplFactory getEndpointImplFactory() {
+ return JaxWsEndpointImplFactory.getSingleton();
+ }
+
+ @Override
+ protected boolean allowWrapperOps() {
+ return true;
+ }
+
+
+ public static JAXDynamicClientFactory newInstance() {
+ Bus bus = CXFBusFactory.getThreadDefaultBus();
+ return new JAXDynamicClientFactory(bus);
+ }
+ @Override
+ public boolean compileJavaSrc(String classPath, List srcList, String dest) {
+ org.apache.cxf.common.util.Compiler javaCompiler
+ = new org.apache.cxf.common.util.Compiler();
+ javaCompiler.setEncoding("UTF-8");
+ javaCompiler.setClassPath(classPath);
+ javaCompiler.setOutputDir(dest);
+ javaCompiler.setTarget("1.8");
+ return javaCompiler.compileFiles(srcList);
+ }
+}
diff --git a/src/main/java/com/ann/demo/controller/TestController.java b/src/main/java/com/ann/demo/controller/TestController.java
index 1d4973a..2baebf6 100644
--- a/src/main/java/com/ann/demo/controller/TestController.java
+++ b/src/main/java/com/ann/demo/controller/TestController.java
@@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
import java.time.LocalDateTime;
import java.util.List;
@@ -67,12 +68,25 @@ public class TestController {
public String cc() {
LocalDateTime beginTime = LocalDateTime.now();
logger.error("开始时间:"+beginTime);
- List scanningFiles = scanningFileRepository.findScanningFiles();
+ List scanningFiles = scanningFileRepository.findScanningFiles(1);
analysisService.handleScanningFile(scanningFiles);
LocalDateTime endTime = LocalDateTime.now();
logger.error("结束时间:"+endTime);
return "成功";
}
+ @RequestMapping("/runData")
+ @ResponseBody
+ public String runData() {
+ LocalDateTime beginTime = LocalDateTime.now();
+ logger.error("开始时间:"+beginTime);
+ List scanningFiles = scanningFileRepository.findScanningFileList();
+ logger.error("查询出待处理记录数:"+scanningFiles.size()+"个");
+ analysisService.handleScanningFile(scanningFiles);
+ LocalDateTime endTime = LocalDateTime.now();
+ logger.error("结束时间:"+endTime);
+ return "完成共计:"+scanningFiles.size()+"同步";
+ }
+
}
diff --git a/src/main/java/com/ann/demo/entity/filing/ArchiveDetail.java b/src/main/java/com/ann/demo/entity/filing/ArchiveDetail.java
index 91ab28b..80a721b 100644
--- a/src/main/java/com/ann/demo/entity/filing/ArchiveDetail.java
+++ b/src/main/java/com/ann/demo/entity/filing/ArchiveDetail.java
@@ -38,7 +38,7 @@ public class ArchiveDetail {
@Column(name = "subassort")
private String subAssort;
-
+ @Column(name = "Title")
private String title;
private String flag = "0";
@@ -67,4 +67,14 @@ public class ArchiveDetail {
this.pdfPath = pdfPath;
this.number = number;
}
+ public ArchiveDetail(String masterID, Date upLoadDateTime, String assortID, String source, String applyId, String pdfPath,Integer number,String title) {
+ this.masterID = masterID;
+ this.upLoadDateTime = upLoadDateTime;
+ this.assortID = assortID;
+ this.source = source;
+ this.applyId = applyId;
+ this.pdfPath = pdfPath;
+ this.number = number;
+ this.title = title;
+ }
}
diff --git a/src/main/java/com/ann/demo/job/DataRunner.java b/src/main/java/com/ann/demo/job/DataRunner.java
new file mode 100644
index 0000000..7fa6219
--- /dev/null
+++ b/src/main/java/com/ann/demo/job/DataRunner.java
@@ -0,0 +1,212 @@
+package com.ann.demo.job;
+
+import com.ann.demo.primaryEntity.ScanningFile;
+import com.ann.demo.primaryRepository.ScanningFileRepository;
+import com.ann.demo.service.AnalysisService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ProjectName:
+ * @Description:
+ * @Param 传输参数
+ * @Return
+ * @Author: 曾文和
+ * @CreateDate: 2021/12/22 0:07
+ * @UpdateUser: 曾文和
+ * @UpdateDate: 2021/12/22 0:07
+ * @UpdateRemark: 更新说明
+ * @Version: 1.0
+ */
+@Component
+public class DataRunner implements ApplicationRunner {
+ static final Logger logger = LoggerFactory.getLogger(DataRunner.class);
+ private static int flag = 0;
+ private static int count = 0;
+ @Autowired
+ private ScanningFileRepository scanningFileRepository;
+
+ @Autowired
+ private AnalysisService analysisService;
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ if(flag == 0) {
+ List scanningFiles = scanningFileRepository.findScanningFileList();
+ count = scanningFiles.size();
+ logger.error("查询出待处理记录数:"+scanningFiles.size()+"个");
+ analysisService.handleScanningFile(scanningFiles);
+ flag = 1;
+ }
+ if(count != 0) {
+ Thread t1 = new Thread1();
+ Thread t2 = new Thread2();
+ Thread t3 = new Thread3();
+ Thread t4 = new Thread4();
+ Thread t5 = new Thread5();
+ Thread t6 = new Thread6();
+ Thread t7 = new Thread7();
+ Thread t8 = new Thread8();
+ Thread t9 = new Thread9();
+ t1.start();
+ t2.start();
+ t3.start();
+ t4.start();
+ t5.start();
+ t6.start();
+ t7.start();
+ t8.start();
+ t9.start();
+ }
+ }
+
+ class Thread1 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ class Thread2 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ class Thread3 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ class Thread4 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread5 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread6 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread7 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ class Thread8 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ class Thread9 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ class Thread10 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/ann/demo/job/ScheduledJob.java b/src/main/java/com/ann/demo/job/ScheduledJob.java
index 1a405ef..38237cd 100644
--- a/src/main/java/com/ann/demo/job/ScheduledJob.java
+++ b/src/main/java/com/ann/demo/job/ScheduledJob.java
@@ -34,7 +34,8 @@ import java.util.concurrent.ScheduledFuture;
public class ScheduledJob implements Job {
static final Logger logger = LoggerFactory.getLogger(ScheduledJob.class);
-
+ private static int flag = 0;
+ private static int count = 0;
@Autowired
private ScanningFileRepository scanningFileRepository;
@@ -50,11 +51,285 @@ public class ScheduledJob implements Job {
@Value("${over}")
private int over;
+ @Override
+ public void execute(JobExecutionContext context) {
+ QuartzUtils.pauseScheduleJob(scheduler, "group1", "job1");
+ try {
+ if(flag == 0) {
+ List scanningFiles = scanningFileRepository.findScanningFileList();
+ count = scanningFiles.size();
+ logger.error("查询出待处理记录数:"+scanningFiles.size()+"个");
+ analysisService.handleScanningFile(scanningFiles);
+ flag = 1;
+ }
+ if(count != 0) {
+ Thread t1 = new Thread1();
+ Thread t2 = new Thread2();
+ Thread t3 = new Thread3();
+ Thread t4 = new Thread4();
+ Thread t5 = new Thread5();
+ Thread t6 = new Thread6();
+ Thread t7 = new Thread7();
+ Thread t8 = new Thread8();
+ Thread t9 = new Thread9();
+ Thread t10 = new Thread10();
+ t1.start();
+ t2.start();
+ t3.start();
+ t4.start();
+ t5.start();
+ /* t6.start();
+ t7.start();
+ t8.start();
+ t9.start();
+ t10.start();*/
+ /* Thread t11 = new Thread10();
+ t11.start();
+ Thread t12 = new Thread10();
+ t12.start();
+ Thread t13 = new Thread10();
+ t13.start();
+ Thread t14 = new Thread10();
+ t14.start();
+ Thread t15 = new Thread10();
+ t15.start();*/
+ }
+ } catch (Exception e) {
+ // 如果报错-- 捕捉异常 继续执行
+ logger.error("执行定时任务出错:{}" ,e.getMessage());
+ }
+ QuartzUtils.resumeScheduleJob(scheduler, "group1", "job1");
+ }
+ class Thread1 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread2 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread3 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread4 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread5 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread6 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread7 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread8 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread9 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread10 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread11 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread12 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread13 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread14 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+ class Thread15 extends Thread {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ count--;
+ analysisService.startThread(count);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+ }
+/*
@Override
public void execute(JobExecutionContext context) {
QuartzUtils.pauseScheduleJob(scheduler, "group1", "job1");
List scanningFiles =new ArrayList();
- LocalDateTime beginTime = LocalDateTime.now();
try {
if(start==0){
scanningFiles = scanningFileRepository.findScanningFiles(over);
@@ -67,10 +342,8 @@ public class ScheduledJob implements Job {
logger.error("执行定时任务出错:{}" ,e.getMessage());
}
QuartzUtils.resumeScheduleJob(scheduler, "group1", "job1");
- LocalDateTime endTime = LocalDateTime.now();
- logger.error("总耗时:"+ Duration.between(beginTime,endTime).toMillis()/1000);
- logger.error("结束时间:{}" ,LocalDateTime.now());
}
+*/
}
diff --git a/src/main/java/com/ann/demo/job/SchedulerAllJob.java b/src/main/java/com/ann/demo/job/SchedulerAllJob.java
index b794b1f..d6cc7fd 100644
--- a/src/main/java/com/ann/demo/job/SchedulerAllJob.java
+++ b/src/main/java/com/ann/demo/job/SchedulerAllJob.java
@@ -61,11 +61,11 @@ public class SchedulerAllJob {
*/
JobDetail jobDetail = JobBuilder.newJob(ScheduledJob.class).withIdentity("job1", "group1").build();
// 凌晨1点-凌晨7点 每隔1分钟执行一次
-// CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 */1 * * * ?");
- CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0 0,1,2,3,4,5,6,7,19,20,21,22,23 * * ? ");
+ CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/30 * * * * ?");
+// CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0 0,1,2,3,4,5,6,7,19,20,21,22,23 * * ? ");
// CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/1 * 16,17,18,19 * * ? ");
- CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job1", "group1").withSchedule(scheduleBuilder).build();
- scheduler.scheduleJob(jobDetail, cronTrigger);
+ /* CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job1", "group1").withSchedule(scheduleBuilder).build();
+ scheduler.scheduleJob(jobDetail, cronTrigger);*/
}
}
diff --git a/src/main/java/com/ann/demo/job/obsolete/QuartzConfig.java b/src/main/java/com/ann/demo/job/obsolete/QuartzConfig.java
index fe249ab..603c42f 100644
--- a/src/main/java/com/ann/demo/job/obsolete/QuartzConfig.java
+++ b/src/main/java/com/ann/demo/job/obsolete/QuartzConfig.java
@@ -19,7 +19,6 @@ public class QuartzConfig implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
- scheduleJobs.scheduleJobs();
- System.out.println(">>>>>>>>>>>>>>>定时任务开始执行<<<<<<<<<<<<<");
+ //scheduleJobs.scheduleJobs();
}
}
diff --git a/src/main/java/com/ann/demo/primaryEntity/ScanningFile.java b/src/main/java/com/ann/demo/primaryEntity/ScanningFile.java
index ad82f34..fddd8e8 100644
--- a/src/main/java/com/ann/demo/primaryEntity/ScanningFile.java
+++ b/src/main/java/com/ann/demo/primaryEntity/ScanningFile.java
@@ -4,6 +4,7 @@ import lombok.Data;
import javax.persistence.*;
import java.util.Date;
+import java.util.List;
@Data
@@ -13,7 +14,7 @@ public class ScanningFile {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "id")
- private String id;
+ private Long id;
//住院号
@Column(name = "FBIHID")
@@ -99,5 +100,9 @@ public class ScanningFile {
@Column(name = "FLDM")
private String assortId;
-
+ //真实文件名
+ @Column(name = "FLMC")
+ private String realFileName;
+ @Transient
+ private List byteList;
}
diff --git a/src/main/java/com/ann/demo/primaryRepository/ScanningFileRepository.java b/src/main/java/com/ann/demo/primaryRepository/ScanningFileRepository.java
index fcc1762..4b19894 100644
--- a/src/main/java/com/ann/demo/primaryRepository/ScanningFileRepository.java
+++ b/src/main/java/com/ann/demo/primaryRepository/ScanningFileRepository.java
@@ -1,13 +1,12 @@
package com.ann.demo.primaryRepository;
import com.ann.demo.primaryEntity.ScanningFile;
-import org.apache.xml.res.XMLErrorResources_tr;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
-import java.awt.print.Pageable;
import java.util.List;
@Repository
@@ -22,4 +21,13 @@ public interface ScanningFileRepository extends JpaRepository findScanningFiles(int over);
@Query(nativeQuery= true,value = "select top(?1) * from scanning_file where STATUS = 0 and id not in (select top(?2) id from scanning_file where STATUS = 0 order by id desc) order by id desc")
public List findScanningFilesMore(int length,int start);
+ @Query(nativeQuery= true,value = "select * from scanning_file inner join (select MAX(id) id,FBIHID,FBINCU from scanning_file where STATUS = 0 group by FBIHID,FBINCU) scanning_file1 on scanning_file.id = scanning_file1.id")
+ public List findScanningFileList();
+ @Query(nativeQuery= true,value = "select * from scanning_file where FBIHID = (?1) and FBINCU = (?2) AND STATUS = 0")
+ public List findScanningFileDetailList(String inpNo,String visitId);
+ @Transactional
+ @Modifying(clearAutomatically = true)
+ @Query(nativeQuery = true,value="update scanning_file set FREMARK = (?1),STATUS = (?2) where id in (?3)")
+ public void updateBatch(String remark,String status,List ids);
+
}
diff --git a/src/main/java/com/ann/demo/service/AnalysisService.java b/src/main/java/com/ann/demo/service/AnalysisService.java
index 294453b..3e26bec 100644
--- a/src/main/java/com/ann/demo/service/AnalysisService.java
+++ b/src/main/java/com/ann/demo/service/AnalysisService.java
@@ -8,22 +8,25 @@ import com.ann.demo.entity.interfaceEntity.CommonTable1;
import com.ann.demo.entity.normalEntity.OutPara;
import com.ann.demo.primaryRepository.ScanningFileRepository;
import com.ann.demo.primaryEntity.ScanningFile;
+import com.ann.demo.repository.ArchiveDetailRepository;
import com.ann.demo.repository.CommonTable1Repository;
import com.ann.demo.repository.CommonTableRepository;
import com.ann.demo.utils.*;
+import com.itextpdf.text.DocumentException;
+import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import java.io.ByteArrayOutputStream;
import java.io.File;
-import java.text.ParsePosition;
-import java.text.SimpleDateFormat;
-import java.time.Duration;
+import java.io.IOException;
+import java.io.PrintStream;
import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
+import java.util.concurrent.LinkedBlockingQueue;
/**
@@ -37,7 +40,7 @@ public class AnalysisService {
final Logger logger = LoggerFactory.getLogger(AnalysisService.class);
-
+ public static volatile LinkedBlockingQueue queue = new LinkedBlockingQueue<>();// 消息队列
@Autowired
private ScanningFileRepository scanningFileRepository;
@@ -53,6 +56,17 @@ public class AnalysisService {
@Autowired
private ArchiveMasterService archiveMasterService;
+ @Autowired
+ private ArchiveDetailRepository archiveDetailRepository;
+ public void handleScanningFile(List scanningFileList) {
+ if(!CollectionUtils.isEmpty(scanningFileList)) {
+ //处理ScanningFile\
+ for (int i = 0;i < scanningFileList.size();i++) {
+ queue.add(scanningFileList.get(i));
+ }
+ }
+ }
+/*
public void handleScanningFile(List scanningFileList) {
LocalDateTime beginTime = LocalDateTime.now();
logger.error("开始时间:"+beginTime);
@@ -83,7 +97,236 @@ public class AnalysisService {
logger.error("结束时间:"+endTime);
}
+*/
+ public void startThread(int i){
+ try {
+ ScanningFile scanningFile = queue.take();
+ handlePdfFile(scanningFile,i);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ private String savaHomePageData(ScanningFile scanningFile){
+ String masterId = null;
+ // 判断病案首页数据是否存在
+ try {
+ masterId = scanningFile.getApplyId() != null ? scanningFile.getApplyId() : UUID.randomUUID().toString();;
+ CommonTable commonTable = commonTableRepository.findByInpNoAndVisitId(scanningFile.getInpNo(), scanningFile.getVisitId());
+ if(null != commonTable) {
+ logger.error("commomtable.patientId=" + commonTable.getPatientId());
+ }
+ if(commonTable == null){
+ commonTable = new CommonTable(masterId,scanningFile.getPatientId(),scanningFile.getAge(),scanningFile.getSex(),scanningFile.getVisitId(),scanningFile.getName(),
+ scanningFile.getAdmissDate(),scanningFile.getDisDate(),scanningFile.getDisDept(),scanningFile.getAttending(),scanningFile.getInpNo(),"扫描系统");
+ // //保存公共表
+ commonTableRepository.save(commonTable);
+ //保存公共表1
+ commonTable1Repository.save( new CommonTable1(commonTable.getMasterId(),scanningFile.getBirthday(),scanningFile.getIdCard(),scanningFile.getAdmissDept(),scanningFile.getAdmissDoctor()));
+ }else{
+ masterId = commonTable.getMasterId();
+ }
+ } catch (Exception e) {
+ logger.error("保存首页数据出错了,FBIHID="+scanningFile.getInpNo() + "&FBINCU="+scanningFile.getVisitId());
+ e.printStackTrace();
+ throw new RuntimeException("保存首页数据出错了,FBIHID="+scanningFile.getInpNo() + "&FBINCU="+scanningFile.getVisitId());
+ }
+ logger.error("masterId="+masterId);
+ return masterId;
+ }
+
+
+ private void handlePdfFile(ScanningFile scanningFile,int i){
+ //保存首页数据
+ long start = System.currentTimeMillis();
+ long start1 = System.currentTimeMillis();
+ String masterId = savaHomePageData(scanningFile);
+ long end = System.currentTimeMillis();
+ logger.error("保存首页数据:FBIHID=" + scanningFile.getInpNo() + "&FBINCU="+scanningFile.getVisitId()+"所用时间:"+(end-start)/1000.00+"s");
+ //根据住院号和住院次数查询文件集合
+ //保存图片并更新scanningFile表数据
+ savePdfDetail(scanningFile,masterId);
+ long end1 = System.currentTimeMillis();
+ logger.error("完成同步:FBIHID=" + scanningFile.getInpNo() + "&FBINCU="+scanningFile.getVisitId()+"所用时间:"+(end1-start1)/1000.00+"s");
+ logger.error("剩余待处理记录数:" + i);
+ }
+
+ public static void main(String[] args) throws Exception{
+ for(int i = 0;i<100000;i++) {
+ long start = System.currentTimeMillis();
+ Object[] objects = WebServiceUtils.connect("123");
+ long end = System.currentTimeMillis();
+ System.out.println("("+(100000-i)+")调用webService接口所用时间:" + (end - start) / 1000.00 + "s");
+ }
+ }
+
+ private void savePdfDetail(ScanningFile scanningFile,String masterId) {
+ if(StringUtils.isNotBlank(masterId)) {
+ //根据住院号、住院次数查询文件明细
+ List scanningFiles = scanningFileRepository.findScanningFileDetailList(scanningFile.getInpNo(), scanningFile.getVisitId());
+ //处理ScanningFile
+ String remark = "";
+ //定义分组的文件明细map
+ Map fileMap = new HashMap<>();
+ //定义文件明细id集合
+ List ids = new ArrayList<>();
+ for (ScanningFile obj : scanningFiles) {
+ ids.add(obj.getId());
+ if (StringUtils.isBlank(remark)) {
+ //获取文件名称
+ String realFileName = obj.getRealFileName();
+ List byteList = new ArrayList<>();
+ try {
+ long start = System.currentTimeMillis();
+ Object[] objects = WebServiceUtils.connect(obj.getPath() + "\\" + obj.getFileName());
+ logger.error("objects:" + objects[0] + "&obj:" + obj.getId());
+ long end = System.currentTimeMillis();
+ logger.error("调用webService接口返回图片流:FBIHID=" + scanningFile.getInpNo() + "&FBINCU=" + scanningFile.getVisitId() + "所用时间:" + (end - start) / 1000.00 + "s");
+ if (fileMap.containsKey(realFileName)) {
+ //获取缓存scanningFile对象
+ obj = fileMap.get(realFileName);
+ //获取缓存字节流
+ byteList = obj.getByteList();
+ }
+ byteList.add((byte[]) objects[0]);
+ obj.setByteList(byteList);
+ fileMap.put(realFileName, obj);
+ } catch (Exception e) {
+ remark = e.getMessage();
+ e.printStackTrace();
+ logger.error("调用webService出错了:FBIHID=" + scanningFile.getInpNo() + "&FBINCU=" + scanningFile.getVisitId());
+ throw new RuntimeException("调用webService出错了:FBIHID=" + scanningFile.getInpNo() + "&FBINCU=" + scanningFile.getVisitId());
+ }
+ }
+ }
+ logger.error("fileMap:" + fileMap.toString());
+ //定义批量添加detail集合
+ List insertBatchList = new ArrayList<>();
+ if (!CollectionUtils.isEmpty(fileMap)) {
+ try {
+ long start = System.currentTimeMillis();
+ try {
+ for (Map.Entry map : fileMap.entrySet()) {
+ //获取真实文件名
+ String fileName = map.getKey();
+ //获取缓存对象
+ ScanningFile obj = map.getValue();
+ String number = getNumber(obj.getNumber());
+ String applyId = masterId + "~" + (number != null ? number : "");
+ File pdfFile = FileUtils.createFile("pdfs", obj.getInpNo(), obj.getVisitId(), applyId);
+ FileUtils.generatePdfFile(obj.getByteList(), pdfFile.getAbsolutePath());
+ //合成pdf
+ String pdfPath = pdfFile.getAbsolutePath();
+ //获取assortId
+ String assortId = getAssortId(obj.getAssortId());
+ ArchiveDetail archiveDetail = new ArchiveDetail(masterId, new Date(), assortId, "扫描系统", applyId, pdfPath, Integer.valueOf(number), fileName);
+ insertBatchList.add(archiveDetail);
+ }
+ long end = System.currentTimeMillis();
+ logger.error("图片合成pdf:FBIHID=" + scanningFile.getInpNo() + "&FBINCU=" + scanningFile.getVisitId() + "所用时间:" + (end - start) / 1000.00 + "s");
+ if (!CollectionUtils.isEmpty(insertBatchList)) {
+ //批量添加进detail表
+ archiveDetailRepository.saveAll(insertBatchList);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error("合成pdf出错了:" + exception);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.error("合成pdf或插入detail表出错了:FBIHID=" + scanningFile.getInpNo() + "&FBINCU=" + scanningFile.getVisitId());
+ throw new RuntimeException("合成pdf或插入detail表出错了:FBIHID=" + scanningFile.getInpNo() + "&FBINCU=" + scanningFile.getVisitId());
+ }
+ }
+ if (!CollectionUtils.isEmpty(ids)) {
+ //批量更新scanningFile表
+ String status = "1";
+ if (StringUtils.isNotBlank(remark)) {
+ status = "2";
+ } else {
+ remark = LocalDateTime.now().toString();
+ }
+ //更新scanningFile表
+ scanningFileRepository.updateBatch(remark, status, ids);
+ }
+ }
+ }
+ /**
+ * 获取applyId
+ * @param number
+ * @return
+ */
+ private String getNumber(String number){
+ // Integer number = 1;
+ //37006704-10-47-1.CDP 截成 10-47-1.CDP
+ number = number.substring(number.indexOf("-")+1,number.length());
+ //10-47-1.CDP 截成 47-1.CDP
+ number = number.substring(number.indexOf("-")+1,number.length());
+ //47-1.CDP 截成47
+ number = number.substring(0,number.indexOf("-"));
+ return number;
+ }
+
+ /**
+ * 获取assortId
+ * @param thirdAssortId 第三方分段标识
+ * @return
+ */
+ private String getAssortId(String thirdAssortId) {
+ String assortId = "1";
+ switch (thirdAssortId){
+ case "1": // 病案首页
+ assortId = "3";
+ break;
+ case "2": //出院(或死亡)记录(小结)
+ assortId = "113";
+ break;
+ case "3": //入院记录
+ assortId = "9";
+ break;
+ case "4": //病程记录
+ assortId = "11";
+ break;
+ case "5": //死亡病例讨论
+ assortId = "14";
+ break;
+ case "6": //特殊病情及治疗记录
+ assortId = "20";
+ break;
+ case "7": //会诊记录单
+ assortId = "15";
+ break;
+ case "8": //病重(病危)护理记录
+ assortId = "121";
+ break;
+ case "9": //知情同意书
+ assortId = "20";
+ break;
+ case "10": //辅助检查报告单
+ assortId = "110";
+ break;
+ case "11": //医嘱单
+ assortId = "25";
+ break;
+ case "12": //体温单
+ assortId = "5";
+ break;
+ case "13": //护理记录
+ assortId = "2";
+ break;
+ case "14": //死亡患者门诊病历
+ assortId = "18";
+ break;
+ case "15": //其他资料
+ assortId = "18";
+ break;
+ }
+ return assortId;
+ }
+/*
public String handlePdfFile(ScanningFile scanningFile) throws Exception{
//处理ScanningFile
// 判断病案首页数据是否存在
@@ -118,7 +361,8 @@ public class AnalysisService {
// String s = WebServiceUtil.urlConnectionUtil("http://10.6.0.224/cdms/cdmsservice.asmx?wsdl", scanningFile.getPath() + "\\" + scanningFile.getFileName());
- /*if(!"".equals(s)){
+ */
+/*if(!"".equals(s)){
int w=9;
}
//s转Object[]
@@ -126,7 +370,8 @@ public class AnalysisService {
Object[] objects = new Object[strArr.length];
for(int i=0;i fileBytes, String pdfFileName) throws IOException, DocumentException {
+ try {
+ float percent=100;
+ float w,h;
+ Document doc = new Document(PageSize.A4,0,0,0,0);
+ PdfWriter.getInstance(doc, new FileOutputStream(pdfFileName));
+ doc.open();
+ doc.newPage();
+ for(byte[] fileByte : fileBytes) {
+ Image img = Image.getInstance(fileByte);
+ logger.error("img:"+img.toString());
+ w = img.getWidth();
+ h = img.getHeight();
+ if ((w > A4_WEIGHT) && (h < A4_HEIGHT)) {
+ percent = (A4_WEIGHT * 100) / w;
+ } else if ((w < A4_WEIGHT) && (h > A4_HEIGHT)) {
+ percent = (A4_HEIGHT * 100) / h;
+ } else if ((w > A4_WEIGHT) && (h > A4_HEIGHT)) {
+ percent = (A4_WEIGHT * 100) / w;
+ h = (h * percent) / 100;
+ if (h > A4_HEIGHT) {
+ percent = (A4_HEIGHT * 100) / h;
+ }
+ }
+ img.setAlignment(Image.ALIGN_CENTER);
+ if(percent != 100){
+ img.scaleAbsolute(A4_WEIGHT, A4_HEIGHT);
+ }else{
+ img.scalePercent(percent);
+ }
+ doc.add(img);
+ }
+ doc.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ e.printStackTrace();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error(pdfFileName+"合成pdf出错了:"+exception);
+ }
+ }
+ /**
+ * 等比压缩,获取压缩百分比
+ *
+ * @param height 图片的高度
+ * @param weight 图片的宽度
+ * @return 压缩百分比
+ */
+ private static int getPercent(float height, float weight) {
+ float percent = 0.0F;
+ if (height > weight) {
+ percent = PageSize.A4.getHeight() / height * 100;
+ } else {
+ percent = PageSize.A4.getWidth() / weight * 100;
+ }
+ return Math.round(percent);
+ }
- public static File createFile(String fileType, String inpNo, String visitId, String path) throws IOException {
+ public static void getFile(List list,File file) {
+ BufferedOutputStream bos = null;
+ FileOutputStream fos = null;
+ try {
+ fos = new FileOutputStream(file);
+ bos = new BufferedOutputStream(fos);
+ for(byte[] obj : list){
+ bos.write(obj);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (bos != null) {
+ try {
+ bos.flush();
+ bos.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ if (fos != null) {
+ try {
+ fos.flush();
+ fos.close();
+ } catch (IOException e1) {
+ e1.printStackTrace();
+ }
+ }
+ }
+ }
+
+ public static File createFile(String fileType, String inpNo, String visitId, String path) throws IOException {
File localFile = null;
try {
//生成图片地址
diff --git a/src/main/java/com/ann/demo/utils/WebServiceUtils.java b/src/main/java/com/ann/demo/utils/WebServiceUtils.java
index 778bee0..5ac0bf7 100644
--- a/src/main/java/com/ann/demo/utils/WebServiceUtils.java
+++ b/src/main/java/com/ann/demo/utils/WebServiceUtils.java
@@ -1,15 +1,7 @@
package com.ann.demo.utils;
-import com.alibaba.fastjson.JSONArray;
-import com.ann.demo.controller.InterfaceForm;
-import com.ann.demo.entity.constant.InterfaceName;
+import com.ann.demo.controller.JAXDynamicClientFactory;
import org.apache.cxf.endpoint.Client;
-import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
-
-import javax.imageio.stream.FileImageOutputStream;
-import java.io.*;
-import java.util.Objects;
-import java.util.Optional;
/**
* @Author: LeiJiaXin
@@ -17,9 +9,23 @@ import java.util.Optional;
*/
public class WebServiceUtils {
- Object[] objects = null;
-
+ private static Client client = null;
public static Object[] connect(String path) throws Exception {
+ String wsdlUrl = "http://10.6.0.224/cdms/cdmsservice.asmx?wsdl";
+ String wsdlMethod = "GetImageStream";
+ /*String wsdlUrl = "http://localhost:8099/services/api?wsdl";
+ String wsdlMethod = "emrService";*/
+ if(client == null) {
+ JAXDynamicClientFactory dcf = JAXDynamicClientFactory.newInstance();
+ client = dcf.createClient(wsdlUrl);
+ }
+ try {
+ // invoke("方法名",参数1,参数2,参数3....);
+ return client.invoke(wsdlMethod, path);
+ } catch (Exception e) {
+ return null;
+ }
+/*
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("http://10.6.0.224/cdms/cdmsservice.asmx?wsdl");
Object[] objects = new Object[0];
@@ -29,6 +35,17 @@ public class WebServiceUtils {
} catch (Exception e) {
return null;
}
+*/
}
+ public static void main(String[] args) {
+ String path = "D:/test";
+ try {
+ Object[] objects = connect(path);
+ String s = objects[0].toString();
+ System.out.println(s);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index d31c549..4b2c1e1 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,3 +1,15 @@
+#spring:
+# datasource:
+# primary:
+# jdbc-url: jdbc:sqlserver://localhost:1433;DatabaseName=sanningfile
+# username: sa
+# password: docus702
+# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+# secondary:
+# jdbc-url: jdbc:sqlserver://localhost:1433;DatabaseName=zj_record_new
+# username: sa
+# password: docus702
+# driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
spring:
datasource:
primary: