From a6ff0a67232b3ca4e078ba1da82d9c9474510f05 Mon Sep 17 00:00:00 2001 From: leijx <1477272687@qq.com> Date: Tue, 5 Jan 2021 09:01:52 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81archive=5Fdetail=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E5=8D=95=E5=8F=B7=EF=BC=8C=E5=B9=B6=E5=8F=AA?= =?UTF-8?q?=E5=AF=B9=E4=B8=8B=E8=BD=BD=E6=A3=80=E9=AA=8C=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E7=94=A8=E6=8A=A5=E5=91=8A=E5=8D=95=E5=8F=B7=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9B=B4=E6=96=B0=E5=A4=84=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E8=BF=98=E6=98=AF=E4=BE=9D=E6=8D=AE=E7=94=B5?= =?UTF-8?q?=E5=AD=90=E7=94=B3=E8=AF=B7=E5=8D=95=E5=8F=B7=202=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=B9=E4=B8=8B=E8=BD=BD=E7=97=85=E6=A1=88?= =?UTF-8?q?=E9=A6=96=E9=A1=B5PDF=EF=BC=8C=E4=B8=8D=E5=81=9A=E4=BB=BB?= =?UTF-8?q?=E4=BD=95=E7=8A=B6=E6=80=81=E9=99=90=E5=88=B6=203=E3=80=81?= =?UTF-8?q?=E5=9B=A0=E6=9A=82=E6=97=B6=E7=94=B5=E5=AD=90=E7=97=85=E5=8E=86?= =?UTF-8?q?=E4=B8=8D=E6=8F=90=E4=BE=9B=E9=A1=B5=E7=A0=81=EF=BC=8C=E9=92=88?= =?UTF-8?q?=E5=AF=B9=E6=96=B0=E7=94=9F=E5=84=BF=E4=BC=9A=E6=9C=89=5F?= =?UTF-8?q?=EF=BC=8C=E7=94=B5=E5=AD=90=E7=97=85=E5=8E=86=E4=B9=9F=E5=8F=AA?= =?UTF-8?q?=E9=87=87=E5=8F=96=E8=80=81=E6=96=B9=E5=BC=8F=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=BC=A0=E9=80=81=EF=BC=8C=E4=B9=9F=E5=B0=B1=E6=98=AFapply=5Fi?= =?UTF-8?q?d=E7=AD=89=E4=BA=8E=E4=BD=8F=E9=99=A2=E5=8F=B7=5F=E4=BD=8F?= =?UTF-8?q?=E9=99=A2=E6=AC=A1=E6=95=B0=5FNurse=5F=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E6=97=B6=E9=97=B4=EF=BC=8C=E9=A1=B5=E7=A0=81=E6=98=AF=E6=88=AA?= =?UTF-8?q?=E5=8F=96ftp=E5=9C=B0=E5=9D=80=204=E3=80=81=E7=97=85=E7=90=86?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E4=BB=8E=E5=8E=9F=E6=9C=89=E5=85=B1=E4=BA=AB?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E6=94=B9=E6=88=90ftp=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ann/entity/constant/AliasName.java | 2 +- .../com/ann/entity/filing/ArchiveDetail.java | 15 ++++++ src/main/java/com/ann/job/ScheduledJob.java | 4 +- .../java/com/ann/job/SchedulerAllJob.java | 22 ++++---- .../com/ann/service/impl/QueueService.java | 52 ++++++++++++------- .../java/com/ann/utils/DownloadUtils.java | 14 ++++- src/main/resources/application.yml | 38 +++++++------- 7 files changed, 95 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/ann/entity/constant/AliasName.java b/src/main/java/com/ann/entity/constant/AliasName.java index 1ffd51d..886b026 100644 --- a/src/main/java/com/ann/entity/constant/AliasName.java +++ b/src/main/java/com/ann/entity/constant/AliasName.java @@ -54,7 +54,7 @@ public class AliasName { // public static final String NURSING_RECORD_SHEET = "2"; // 病案首页 -// public static final String MEDICAL_RECORD_HOMEPAGE = "3"; + public static final String MEDICAL_RECORD_HOMEPAGE = "3"; // 评估护理单 // public static final String ASSESSMENT_NURSING_LIST = "4"; diff --git a/src/main/java/com/ann/entity/filing/ArchiveDetail.java b/src/main/java/com/ann/entity/filing/ArchiveDetail.java index 1a9253d..6dc53c5 100644 --- a/src/main/java/com/ann/entity/filing/ArchiveDetail.java +++ b/src/main/java/com/ann/entity/filing/ArchiveDetail.java @@ -51,6 +51,9 @@ public class ArchiveDetail { */ private String applyId; + // 2020-12-28 新增报告单号 + private String checkReportId; + public ArchiveDetail() { } @@ -62,6 +65,18 @@ public class ArchiveDetail { this.applyId = applyId; } + // lis系统下载 + public ArchiveDetail(String masterID, Date upLoadDateTime, String assortID, String source, String applyId,String checkReportId, String title) { + this.masterID = masterID; + this.upLoadDateTime = upLoadDateTime; + this.assortID = assortID; + this.source = source; + this.checkReportId = checkReportId; + this.title = title; + this.applyId = applyId; + } + + // 普通下载 public ArchiveDetail(String masterID, Date upLoadDateTime, String assortID, String source, String applyId, String title,Integer i) { this.masterID = masterID; diff --git a/src/main/java/com/ann/job/ScheduledJob.java b/src/main/java/com/ann/job/ScheduledJob.java index 5015a13..2fbcb45 100644 --- a/src/main/java/com/ann/job/ScheduledJob.java +++ b/src/main/java/com/ann/job/ScheduledJob.java @@ -38,14 +38,14 @@ public class ScheduledJob implements Job { public void execute(JobExecutionContext context) { try { //System.out.println("动态的定时任务1执行时间:" + LocalTime.now()); - QuartzUtils.pauseScheduleJob(scheduler, "group1", "job1"); + QuartzUtils.pauseScheduleJob(scheduler, "group1", "job5"); List all = messageSubordinateService.findAllByStatus(0); queueService.doSomething(all); } catch (Exception e) { // 如果报错-- 捕捉异常 继续执行 logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e,e.getStackTrace()[0]); } - QuartzUtils.resumeScheduleJob(scheduler, "group1", "job1"); + QuartzUtils.resumeScheduleJob(scheduler, "group1", "job5"); } } diff --git a/src/main/java/com/ann/job/SchedulerAllJob.java b/src/main/java/com/ann/job/SchedulerAllJob.java index aae38a6..ae64082 100644 --- a/src/main/java/com/ann/job/SchedulerAllJob.java +++ b/src/main/java/com/ann/job/SchedulerAllJob.java @@ -36,7 +36,7 @@ public class SchedulerAllJob { * 此处的任务可以配置可以放到properties或者是放到数据库中 * 如果此时需要做到动态的定时任务,请参考:http://blog.csdn.net/liuchuanhong1/article/details/60873295 * 博客中的ScheduleRefreshDatabase类 - * + * 处理未处理消息 * @param scheduler * @throws SchedulerException */ @@ -45,16 +45,16 @@ public class SchedulerAllJob { * 此处可以先通过任务名查询数据库,如果数据库中存在该任务,则按照ScheduleRefreshDatabase类中的方法,更新任务的配置以及触发器 * 如果此时数据库中没有查询到该任务,则按照下面的步骤新建一个任务,并配置初始化的参数,并将配置存到数据库中 */ - JobDetail jobDetail = JobBuilder.newJob(ScheduledJob.class).withIdentity("job1", "group1").build(); - // 每5s执行一次 + JobDetail jobDetail = JobBuilder.newJob(ScheduledJob.class).withIdentity("job5", "group1").build(); + // 每15s执行一次 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/15 * * * * ?"); - CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job1", "group1").withSchedule(scheduleBuilder).build(); + CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job5", "group1").withSchedule(scheduleBuilder).build(); scheduler.scheduleJob(jobDetail, cronTrigger); } /** * 配置Job2 - * + * 处理错误消息 * @param scheduler * @throws SchedulerException */ @@ -68,29 +68,29 @@ public class SchedulerAllJob { /** * 配置Job3 - * + * 签收取消签收接口 * @param scheduler * @throws SchedulerException */ private void scheduleJob3(Scheduler scheduler) throws SchedulerException { JobDetail jobDetail = JobBuilder.newJob(ScheduledJob3.class).withIdentity("job3", "group1").build(); - // 0 1-2 * * * ? - CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/15 * * * * ?"); - // 每1分钟执行一次 + // 0 1-2 * * * ? 0 0/5 * * * ? + CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 0/2 * * * ? "); + // 每30秒执行一次 CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job3", "group1").withSchedule(scheduleBuilder).build(); scheduler.scheduleJob(jobDetail, cronTrigger); } /** * 配置Job4 - * + * 处理医嘱 * @param scheduler * @throws SchedulerException */ private void scheduleJob4(Scheduler scheduler) throws SchedulerException { JobDetail jobDetail = JobBuilder.newJob(ScheduledJob4.class).withIdentity("job4", "group1").build(); // 0 1-2 * * * ? - CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0 */1 * * * ?"); + CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("* 0/10 * * * ?"); // 每1分钟执行一次 CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job4", "group1").withSchedule(scheduleBuilder).build(); scheduler.scheduleJob(jobDetail, cronTrigger); diff --git a/src/main/java/com/ann/service/impl/QueueService.java b/src/main/java/com/ann/service/impl/QueueService.java index aa60116..bb9ff4d 100644 --- a/src/main/java/com/ann/service/impl/QueueService.java +++ b/src/main/java/com/ann/service/impl/QueueService.java @@ -64,7 +64,7 @@ public class QueueService { ArchiveMaster archiveMaster = archiveMasterService.findByInpNoAndVisitIdAndIsValid(messageDto.getInpNo(), messageDto.getVisitId()); Date date = new Date(); if (archiveMaster != null) { - if (!Objects.equals(messageDto.getType(), AliasName.PATHOLOGY_REPORT)) { + if (!Objects.equals(messageDto.getType(), AliasName.PATHOLOGY_REPORT) || !Objects.equals(messageDto.getType(), AliasName.MEDICAL_RECORD_HOMEPAGE)) { if (archiveMaster.getArchiveState().equals("初审") || archiveMaster.getArchiveState().equals("已归档")) { messageSubordinate.setStatus(3); messageSubordinateService.save(messageSubordinate); @@ -79,17 +79,30 @@ public class QueueService { archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(), messageDto.getDetailType(), 1); archiveDetailService.save(archiveDetail); } else { - // 查询库中是否存在 如果存在就更新 - archiveDetail = archiveDetailService.isExit(archiveMaster.getId(), messageDto.getType(), messageDto.getSource(), messageDto.getApplyId()); - if (archiveDetail == null) { - archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(), - messageDto.getDetailType(), 1); - archiveDetailService.save(archiveDetail); - } else { - //更新时间 - archiveDetail.setUpLoadDateTime(date); + //如果是检验报告 单独处理 + if(Objects.equals(messageDto.getType(),AliasName.INSPECTION_REPORT)){ + // 查询库中是否存在 如果存在就更新 + archiveDetail = archiveDetailService.isExit(archiveMaster.getId(), messageDto.getType(), messageDto.getSource(), messageDto.getCheckReportId()); + if (archiveDetail == null) { + archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(),messageDto.getApplyId(), messageDto.getCheckReportId(), + messageDto.getDetailType()); + archiveDetailService.save(archiveDetail); + } else { + //更新时间 + archiveDetail.setUpLoadDateTime(date); + } + }else{ + // 查询库中是否存在 如果存在就更新 + archiveDetail = archiveDetailService.isExit(archiveMaster.getId(), messageDto.getType(), messageDto.getSource(), messageDto.getApplyId()); + if (archiveDetail == null) { + archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(), + messageDto.getDetailType(), 1); + archiveDetailService.save(archiveDetail); + } else { + //更新时间 + archiveDetail.setUpLoadDateTime(date); + } } - } String pdfPath = null; String tempPath = ""; @@ -102,13 +115,16 @@ public class QueueService { } String tempPageNum = ""; - if (messageDto.getApplyId().lastIndexOf("_") != -1) { - //apply_id 000562390700_1_000562390700_0_1_JHR06.00.02_34_2.pdf - tempPageNum = messageDto.getApplyId().substring(0, messageDto.getApplyId().indexOf(".pdf")); - }else{ - // address ftp://10.6.0.155/2020-08-04/000562390700_1_000562390700_0_1_JHR06.00.02_34_2_0.pdf - tempPageNum = address.substring(0, address.lastIndexOf("_")); - } +// if (messageDto.getApplyId().lastIndexOf("_") != -1 ) { + //apply_id 000562390700_1_000562390700_0_1_JHR06.00.02_34_2.pdf +// if(archiveMaster.getInpNo().lastIndexOf("_") != -1){ + +// } +// tempPageNum = messageDto.getApplyId().substring(0, messageDto.getApplyId().indexOf(".pdf")); +// }else{ + // address ftp://10.6.0.155/2020-08-04/000562390700_1_000562390700_0_1_JHR06.00.02_34_2_0.pdf + tempPageNum = address.substring(0, address.lastIndexOf("_")); +// } tempPageNum = tempPageNum.substring(tempPageNum.lastIndexOf("_") + 1, tempPageNum.length() ); if(isInteger(tempPageNum)){ pageNum = Integer.valueOf(tempPageNum); diff --git a/src/main/java/com/ann/utils/DownloadUtils.java b/src/main/java/com/ann/utils/DownloadUtils.java index 28808ba..8b4030c 100644 --- a/src/main/java/com/ann/utils/DownloadUtils.java +++ b/src/main/java/com/ann/utils/DownloadUtils.java @@ -165,6 +165,19 @@ public class DownloadUtils { FTPClient ftpClient = FTPUtil.connectFtpServer(url, port, split[0], split[1]); return FTPUtil.downloadFtp(path, ftpClient, imageFile); } + + if (Objects.equals(type, AliasName.PATHOLOGY_REPORT)) { + // ftp://10.6.0.74:33/202012_U/Report668771_1.jpg + address = address.substring(address.indexOf("/") + 2, address.length()); + String url = address.substring(0, address.indexOf(":")); + Integer port = 0; + if (address.indexOf(":") != -1 && address.indexOf("/") != -1) { + port = Integer.parseInt(address.substring(address.indexOf(":") + 1, address.indexOf("/"))); + } + String path = address.substring(address.indexOf("/"), address.length()); + FTPClient ftpClient = FTPUtil.connectFtpServer(url, port, "", ""); + return FTPUtil.downloadFtp(path, ftpClient, imageFile); + } } else { // 共享文件 // //10.6.0.74/Images/201907_U/Report609639_1.jpg @@ -172,7 +185,6 @@ public class DownloadUtils { return DownloadUtils.cmdFile(address, imageFile); //return true } - return false; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1613273..5949f10 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,25 +1,25 @@ spring: datasource: - # url: jdbc:mysql://localhost:3306/test - # # url: jdbc:mysql://10.6.1.127:3306/test - # username: root - # password: 123456 - # driver-class-name: com.mysql.jdbc.Driver - # jpa: - # database: mysql - # show-sql: false - # hibernate: - # ddl-auto: update - url: jdbc:sqlserver://10.6.1.127:1433;DatabaseName=DB_PrivilegeManagement_GYFY - # url: jdbc:sqlserver://120.27.212.36:1433;DatabaseName=emr_record - username: sa - password: docus@702 - driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + url: jdbc:mysql://localhost:3306/test + # url: jdbc:mysql://10.6.1.127:3306/test + username: root + password: 123456 + driver-class-name: com.mysql.jdbc.Driver jpa: - database: sql_server + database: mysql show-sql: false hibernate: - dialect: org.hibernate.dialect.SQLServer2008Dialect + ddl-auto: update + # url: jdbc:sqlserver://10.6.1.127:1433;DatabaseName=DB_PrivilegeManagement_GYFY + # # url: jdbc:sqlserver://120.27.212.36:1433;DatabaseName=emr_record + # username: sa + # password: docus@702 + # driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver + # jpa: + # database: sql_server + # show-sql: false + # hibernate: + # dialect: org.hibernate.dialect.SQLServer2008Dialect thymeleaf: prefix: classpath:/templates/ @@ -50,8 +50,8 @@ file: dischargeRecordPath: D:\\1\dischargeRecord.properties transferRecordPath: D:\\1\transferRecord.properties admissionRecordPath: D:\\1\admissionRecord.properties - pdfPath: Z:/project_js - imagePath: Z:/images + pdfPath: D:/project_js + imagePath: D:/images signContent: 0