From bace7fcf7fe604f84b9a45861b8a52f2889e809e Mon Sep 17 00:00:00 2001 From: leijx <1477272687@qq.com> Date: Mon, 13 Jul 2020 11:52:11 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E9=95=BF=E6=9C=9F?= =?UTF-8?q?=E5=8C=BB=E5=98=B1=E3=80=81=E4=B8=B4=E6=97=B6=E5=8C=BB=E5=98=B1?= =?UTF-8?q?=E3=80=81=E5=85=B6=E4=BB=96=E6=8A=A5=E5=91=8A=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=202=E3=80=81=E6=96=B0=E5=A2=9E=E9=95=BF=E6=9C=9F=E5=8C=BB?= =?UTF-8?q?=E5=98=B1=E3=80=81=E4=B8=B4=E6=97=B6=E5=8C=BB=E5=98=B1=E3=80=81?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E6=8A=A5=E5=91=8A=E4=B8=8B=E8=BD=BD=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=203=E3=80=81=E6=96=B0=E5=A2=9E=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=8C=BB=E5=98=B1=EF=BC=8C=E5=88=A0=E9=99=A4?= =?UTF-8?q?FTP=E5=8C=BB=E5=98=B1=E5=B9=B6=E5=B0=86=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E7=9A=84FTP=E6=96=87=E4=BB=B6=E5=86=99=E5=85=A5=E6=97=A5?= =?UTF-8?q?=E5=BF=97=204=E3=80=81=E5=B0=86=E6=89=80=E6=9C=89=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=86=99=E5=85=A5Z=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ann/entity/constant/AliasName.java | 13 +- .../interfaceEntity/InterfaceHisCache.java | 47 ++++++ src/main/java/com/ann/job/ScheduledJob4.java | 46 ++++++ .../java/com/ann/job/SchedulerAllJob.java | 25 +++- .../InterfaceHisCacheRepository.java | 19 +++ .../ann/service/InterfaceHisCacheService.java | 17 +++ .../impl/InterfaceHisCacheServiceImpl.java | 34 +++++ .../com/ann/service/impl/QueueService.java | 139 +++++++++++++++--- .../java/com/ann/utils/DownloadUtils.java | 19 ++- src/main/java/com/ann/utils/FTPUtil.java | 51 ++++++- src/main/java/com/ann/utils/FileUtils.java | 6 +- src/main/java/com/ann/utils/JSchUtils.java | 2 +- src/main/resources/application.yml | 38 +++-- 13 files changed, 392 insertions(+), 64 deletions(-) create mode 100644 src/main/java/com/ann/entity/interfaceEntity/InterfaceHisCache.java create mode 100644 src/main/java/com/ann/job/ScheduledJob4.java create mode 100644 src/main/java/com/ann/repository/InterfaceHisCacheRepository.java create mode 100644 src/main/java/com/ann/service/InterfaceHisCacheService.java create mode 100644 src/main/java/com/ann/service/impl/InterfaceHisCacheServiceImpl.java diff --git a/src/main/java/com/ann/entity/constant/AliasName.java b/src/main/java/com/ann/entity/constant/AliasName.java index f1b2d61..5367a77 100644 --- a/src/main/java/com/ann/entity/constant/AliasName.java +++ b/src/main/java/com/ann/entity/constant/AliasName.java @@ -41,9 +41,6 @@ public class AliasName { // ICU报告 public static final String ICU_REPORT = "121"; - // 其他类型 目前来说 是手麻系统的其他三个 - public static final String OTHER = "110"; - // 检查申请单 public static final String PARAMETER_EXAMAPPLY = "119"; @@ -74,5 +71,15 @@ public class AliasName { // 扫描文件 public static final String SCANNING_FILE = "30"; + // 20200701 长期医嘱 + public static final String PRN = "122"; + + // 20200701 临时医嘱 + public static final String SOS = "123"; + + // 20200703 新增其他报告 + public static final String OTHER_REPORT = "110"; + + } diff --git a/src/main/java/com/ann/entity/interfaceEntity/InterfaceHisCache.java b/src/main/java/com/ann/entity/interfaceEntity/InterfaceHisCache.java new file mode 100644 index 0000000..973ad45 --- /dev/null +++ b/src/main/java/com/ann/entity/interfaceEntity/InterfaceHisCache.java @@ -0,0 +1,47 @@ +package com.ann.entity.interfaceEntity; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.util.Date; + +/** + * @Description 医嘱 + * @Date 2020/7/1 9:00 + * @Created by ljx + */ + +@Table +@Entity +@Data +public class InterfaceHisCache { + + @Id + private String id; + + private String inpNo; + + private String visitId; + + // 医嘱类型 0代表临时医嘱 1代表长期医嘱 + private String type; + + private String pdfPath; + + private String remark; + + // 0代表未处理 1代表已处理 2代表处理异常 + private String state; + + //2020-7-6 新增修改时间 + private Date updateTime ; + + + public void setValue(String state, String remark, Date updateTime) { + this.state = state; + this.remark = remark; + this.updateTime = updateTime; + } +} diff --git a/src/main/java/com/ann/job/ScheduledJob4.java b/src/main/java/com/ann/job/ScheduledJob4.java new file mode 100644 index 0000000..f583d72 --- /dev/null +++ b/src/main/java/com/ann/job/ScheduledJob4.java @@ -0,0 +1,46 @@ +package com.ann.job; + +import com.ann.service.ArchiveMasterService; +import com.ann.service.impl.GenerateService; +import com.ann.service.impl.QueueService; +import com.ann.utils.QuartzUtils; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.quartz.Scheduler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * 取从属表报错的消息 次数小于6 + * + * @Author: LeiJiaXin + * @Date: 2019/8/16 10:12 + */ +public class ScheduledJob4 implements Job { + + static final Logger logger = LoggerFactory.getLogger(ScheduledJob4.class); + + @Autowired + Scheduler scheduler; + + @Autowired + ArchiveMasterService archiveMasterService; + + @Autowired + QueueService queueService; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + try { + //System.out.println("动态的定时任务4执行时间:" + LocalTime.now()); + QuartzUtils.pauseScheduleJob(scheduler, "group1", "job4"); + queueService.doSomethingByHIS(); + } catch (Exception e) { + // 如果报错-- 捕捉异常 继续执行 + logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e,e.getStackTrace()[0]); + } + QuartzUtils.resumeScheduleJob(scheduler, "group1", "job4"); + } +} diff --git a/src/main/java/com/ann/job/SchedulerAllJob.java b/src/main/java/com/ann/job/SchedulerAllJob.java index a302dff..1d8ed00 100644 --- a/src/main/java/com/ann/job/SchedulerAllJob.java +++ b/src/main/java/com/ann/job/SchedulerAllJob.java @@ -25,12 +25,10 @@ public class SchedulerAllJob { */ public void scheduleJobs() throws SchedulerException { Scheduler scheduler = schedulerFactoryBean.getScheduler(); - /** - * - */ - scheduleJob1(scheduler); - scheduleJob2(scheduler); - scheduleJob3(scheduler); +// scheduleJob1(scheduler); +// scheduleJob2(scheduler); +// scheduleJob3(scheduler); + scheduleJob4(scheduler); } /** @@ -82,4 +80,19 @@ public class SchedulerAllJob { 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/15 * * * * ?"); + // 每1分钟执行一次 + CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("job4", "group1").withSchedule(scheduleBuilder).build(); + scheduler.scheduleJob(jobDetail, cronTrigger); + } } diff --git a/src/main/java/com/ann/repository/InterfaceHisCacheRepository.java b/src/main/java/com/ann/repository/InterfaceHisCacheRepository.java new file mode 100644 index 0000000..3ca9941 --- /dev/null +++ b/src/main/java/com/ann/repository/InterfaceHisCacheRepository.java @@ -0,0 +1,19 @@ +package com.ann.repository; + +import com.ann.entity.interfaceEntity.InterfaceHisCache; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +public interface InterfaceHisCacheRepository extends JpaRepository { + + public List findAllByStateAndPdfPathIsNotNull(String state); + +// @Transactional +// @Modifying +// @Query(value = "update InterfaceHisCache o set o.state = ?1 where o.id = ?2 and o.state = 0 and o.type = ?3 ") +// public Integer updateStateById(Integer state, String id, Integer type); +} diff --git a/src/main/java/com/ann/service/InterfaceHisCacheService.java b/src/main/java/com/ann/service/InterfaceHisCacheService.java new file mode 100644 index 0000000..de11d63 --- /dev/null +++ b/src/main/java/com/ann/service/InterfaceHisCacheService.java @@ -0,0 +1,17 @@ +package com.ann.service; + + +import com.ann.entity.interfaceEntity.InterfaceHisCache; + +import java.util.List; + +public interface InterfaceHisCacheService { + + //查询所有未处理的状态 + public List findInterfaceHisCacheByState(); + + //修改状态 + public boolean updateState(Integer state, String id, Integer type); + + void save(InterfaceHisCache interfaceHisCache); +} diff --git a/src/main/java/com/ann/service/impl/InterfaceHisCacheServiceImpl.java b/src/main/java/com/ann/service/impl/InterfaceHisCacheServiceImpl.java new file mode 100644 index 0000000..1cd52b5 --- /dev/null +++ b/src/main/java/com/ann/service/impl/InterfaceHisCacheServiceImpl.java @@ -0,0 +1,34 @@ +package com.ann.service.impl; + +import com.ann.entity.interfaceEntity.InterfaceHisCache; +import com.ann.repository.InterfaceHisCacheRepository; +import com.ann.service.InterfaceHisCacheService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class InterfaceHisCacheServiceImpl implements InterfaceHisCacheService { + + @Autowired + private InterfaceHisCacheRepository interfaceHisCacheRepository; + + + @Override + public List findInterfaceHisCacheByState() { + return interfaceHisCacheRepository.findAllByStateAndPdfPathIsNotNull("0"); + } + + @Override + public boolean updateState(Integer state,String id,Integer type ) { +// if(interfaceHisCacheRepository.updateStateById(state,id,type) > 0) +// return true; + return false; + } + + @Override + public void save(InterfaceHisCache interfaceHisCache) { + interfaceHisCacheRepository.save(interfaceHisCache); + } +} diff --git a/src/main/java/com/ann/service/impl/QueueService.java b/src/main/java/com/ann/service/impl/QueueService.java index 539a9aa..3e69b9c 100644 --- a/src/main/java/com/ann/service/impl/QueueService.java +++ b/src/main/java/com/ann/service/impl/QueueService.java @@ -7,13 +7,13 @@ import com.ann.entity.filing.ArchiveDetail; import com.ann.entity.filing.MessageSubordinate; import com.ann.entity.filing.dto.MessageDto; import com.ann.entity.interfaceEntity.ArchiveMaster; +import com.ann.entity.interfaceEntity.InterfaceHisCache; import com.ann.entity.interfaceEntity.MessageLog; import com.ann.entity.interfaceEntity.ScanningFile; -import com.ann.service.ArchiveDetailService; -import com.ann.service.ArchiveMasterService; -import com.ann.service.MessageService; -import com.ann.service.MessageSubordinateService; +import com.ann.service.*; import com.ann.utils.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -29,6 +29,11 @@ import java.util.Objects; @Service public class QueueService { + private static final Logger logger = LoggerFactory.getLogger(QueueService.class); + + @Autowired + InterfaceHisCacheService interfaceHisCacheService; + @Autowired MessageSubordinateService messageSubordinateService; @Autowired @@ -58,9 +63,7 @@ public class QueueService { ArchiveMaster archiveMaster = archiveMasterService.findByInpNoAndVisitIdAndIsValid(messageDto.getInpNo(), messageDto.getVisitId()); if (archiveMaster != null) { if(!Objects.equals(messageDto.getType(),AliasName.PATHOLOGY_REPORT)){ - if(archiveMaster.getArchiveState().equals("初审") || archiveMaster.getArchiveState().equals("已归档") - || archiveMaster.getArchiveState().equals("复审退回") - || archiveMaster.getArchiveState().equals("病案召回") ){ + if(archiveMaster.getArchiveState().equals("初审") || archiveMaster.getArchiveState().equals("已归档")){ messageSubordinate.setStatus(3); messageSubordinateService.save(messageSubordinate); continue; @@ -68,19 +71,24 @@ public class QueueService { } String address = messageDto.getReportAddress(); + Date date = new Date(); if (address != null && (!address.equals(""))) { // 如果是老数据 if(Objects.equals(messageDto.getIsOld(),"0")){ - archiveDetail = new ArchiveDetail(archiveMaster.getId(), new Date(), messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(),messageDto.getDetailType(),1); + 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(), new Date(), messageDto.getType(), messageDto.getSource(), messageDto.getApplyId(), + 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 emrPath = ""; @@ -97,7 +105,7 @@ public class QueueService { }else{ a = address.substring(0, address.lastIndexOf("_")); } - emrPath = messageDto.getType() + "~" + (a.substring(a.lastIndexOf("_") + 1, a.length())) + "~"; + emrPath = messageDto.getType() + "~" + (a.substring(a.lastIndexOf("_") + 1, a.length())) + "~"; } else if(messageDto.getSource().equals(InterfaceName.DOCTOR_DATA)){ //护士 护理单独做处理 @@ -109,6 +117,7 @@ public class QueueService { }else{ // 20200518 给重症系统的文件排序 if(messageDto.getType().equals(AliasName.ICU_REPORT)){ + //重症如果是pdf emrPath = messageDto.getDetailType() + "~" + messageDto.getCaptionDateTime() + "~"; } } @@ -122,10 +131,26 @@ public class QueueService { } } else { if (Objects.equals(messageDto.getType(), AliasName.ICU_REPORT)) { - // 多个图片那么转成pdf - File imageFile = FileUtils.createDir("images", messageDto.getInpNo(), messageDto.getVisitId()); - String imageFiles = DownloadUtils.downloadImageFiles(address, imageFile.getParent()); - pdfPath = PdfUtils.imageDirToPdf(imageFiles, pdfFile); + File file = pdfFile; + if(address.indexOf(".png") != -1){ + file = FileUtils.createDir("images", messageDto.getInpNo(), messageDto.getVisitId()); + } + String fileNames = DownloadUtils.downloadImageFiles(address, file.getParent()); + if(fileNames != null){ + if(address.indexOf(".png") != -1) { + // 多个图片那么转成pdf + pdfPath = PdfUtils.imageDirToPdf(fileNames, pdfFile); + } else{ + if(fileNames.indexOf(";") != -1){ + fileNames = fileNames.substring(0,fileNames.length()-1); + file.delete(); + } + + if(new File(fileNames).renameTo(file)){ + pdfPath = file.getAbsolutePath(); + } + } + } } else { // 一张图片转成pdf File imageFile = FileUtils.createFile("images", messageDto.getInpNo(), messageDto.getVisitId(), archiveDetail.getId(), emrPath); @@ -144,7 +169,7 @@ public class QueueService { //更新messageLog的最后执行时间 Date xmlCreateTime = messageLog.getXmlCreateTime(); long beginTime = xmlCreateTime.getTime(); - long endTime = new Date().getTime(); + long endTime = date.getTime(); messageLog.setXmlExecutionTime(endTime - beginTime); messageService.save(messageLog); @@ -166,7 +191,7 @@ public class QueueService { //更新messageLog的最后执行时间 Date xmlCreateTime = messageLog.getXmlCreateTime(); long beginTime = xmlCreateTime.getTime(); - long endTime = new Date().getTime(); + long endTime = date.getTime(); messageLog.setXmlExecutionTime(endTime - beginTime); messageService.save(messageLog); @@ -216,7 +241,6 @@ public class QueueService { } } - public String handlePdfFile(MessageDto messageDto,String masterId) throws Exception { try { ScanningFile scanningFile = JSON.parseObject(messageDto.getObject().toString(), ScanningFile.class); @@ -251,11 +275,88 @@ public class QueueService { archiveDetail = new ArchiveDetail(masterId, new Date(), messageDto.getType(), messageDto.getSource(), messageDto.getApplyId() + "~" + (scanningFile.getNumber() != null ? scanningFile.getNumber() : ""), pdfPath); archiveDetailService.save(archiveDetail); } - } catch (Exception e) { return e + ""; } - return null; } + + public void doSomethingByHIS() { + try { + //循环开始处理 所有未处理的 + List interfaceHisCaches = interfaceHisCacheService.findInterfaceHisCacheByState(); + for (InterfaceHisCache interfaceHisCache: interfaceHisCaches) { + String type = null,remark = null,title = null,pdfPath = null,state = "2"; + ArchiveDetail archiveDetail = null; + try{ + ArchiveMaster archiveMaster = archiveMasterService.findByInpNoAndVisitIdAndIsValid(interfaceHisCache.getInpNo(), interfaceHisCache.getVisitId()); + if(archiveMaster != null){ + if(interfaceHisCache.getType() != null){ + //给type 属性赋值 + if(Objects.equals(interfaceHisCache.getType(),"0")){ + type = AliasName.SOS; + title = "临时医嘱"; + }else if(Objects.equals(interfaceHisCache.getType(),"1")){ + type = AliasName.PRN; + title = "长期医嘱"; + } + + // 查询库中是否存在 如果存在就更新 + archiveDetail = archiveDetailService.isExit(archiveMaster.getId(), interfaceHisCache.getType(), "HIS系统", ""); + Date date = new Date(); + if (archiveDetail == null) { + archiveDetail = new ArchiveDetail(archiveMaster.getId(), date, type, "HIS系统", "", + title ,1); + archiveDetailService.save(archiveDetail); + }else{ + //更新时间 + archiveDetail.setUpLoadDateTime(date); + } + + //开始下载 + File pdfFile = FileUtils.createFile("pdfs", interfaceHisCache.getInpNo(), interfaceHisCache.getVisitId(), archiveDetail.getId(), ""); + if (pdfFile != null) { + if (interfaceHisCache.getPdfPath().endsWith(".pdf") || interfaceHisCache.getPdfPath().endsWith(".PDF")) { + pdfPath = DownloadUtils.downLoadPdfFile(pdfFile, interfaceHisCache.getPdfPath(), type); + if (pdfPath != null) { + // 转成格式 + archiveDetail.setPdfPath(pdfPath); + archiveDetailService.save(archiveDetail); + //删除FTP文件 + if(FTPUtil.deleteFile(interfaceHisCache.getPdfPath())){ + // 成功 + state = "1"; + } + }else { + remark = "下载失败"; + } + } + }else{ + remark = "文件创建失败"; + } + }else{ + remark = "类型为空"; + } + }else{ + remark = "没有入院信息"; + } + }catch (Exception e){ + remark = e.getMessage(); + } + + if(remark != null){ + // 报错删掉患者报告详情信息 + if (archiveDetail != null) { + archiveDetailService.delete(archiveDetail.getId()); + } + } + //赋值 + interfaceHisCache.setValue(state,remark,new Date()); + interfaceHisCacheService.save(interfaceHisCache); + } + }catch (Exception e){ + logger.error("出错咯!错误信息为{},以及错误行数为:{}" ,e,e.getStackTrace()[0]); + } + + } } diff --git a/src/main/java/com/ann/utils/DownloadUtils.java b/src/main/java/com/ann/utils/DownloadUtils.java index fff61cd..9326d55 100644 --- a/src/main/java/com/ann/utils/DownloadUtils.java +++ b/src/main/java/com/ann/utils/DownloadUtils.java @@ -179,8 +179,7 @@ public class DownloadUtils { public static String downLoadPdfFile(File pdfFile, String address, String type) throws Exception { if (address.indexOf("http") != -1) { - // http://10.6.0.144/PDF/b74abb84-3524-442e-b0af-0d3966c9b979.pdf - // 放射 + // 放射 http://10.6.0.144/PDF/b74abb84-3524-442e-b0af-0d3966c9b979.pdf if (DownloadUtils.downLoadByUrl(address, pdfFile.getName(), pdfFile.getParent())) { return pdfFile.getAbsolutePath(); } @@ -219,7 +218,19 @@ public class DownloadUtils { // 输血 ftp://10.6.1.128/tmis/10_000526962900_9_LCFXD191021010_临床发血单.PDF userName = "common"; password = "common"; - } else { + } else if (Objects.equals(type, AliasName.ICU_REPORT)) { + // icu ftp://10.6.0.241/fallSheets/徐晓峰-988874-2020-02-25 - 2020-03-21.pdf; + userName = "zingicu"; + password = "zingicu123"; + } else if(Objects.equals(type, AliasName.PRN) || Objects.equals(type, AliasName.SOS)) { + // 长期医嘱/临时医嘱 ftp://10.6.1.16:21/1147_1_long.pdf + userName = "his"; + password = "his_docus"; + }else if(Objects.equals(type, AliasName.OTHER_REPORT)) { + //其他报告 根据IP区分报告类型 考虑IP单独做配置 + userName = ""; + password = ""; + }else { // 电子病历 // ftp://10.6.0.155/2020-01-25/000593857900_1_000593857900_0_4_EMR06.02.04_3_5_0.pdf // ftp://10.6.0.155/000538888400_2_吴惠/病历文书/12440000455858169P-000538888400-2-2-0-29.pdf @@ -231,7 +242,6 @@ public class DownloadUtils { return pdfFile.getAbsolutePath(); } } - return null; } @@ -263,6 +273,7 @@ public class DownloadUtils { return imagesPath; } + public static void main(String[] args) throws IOException { //10.6.0.217/images/201909_Z/ReportBB818E8E-E93A-46E8-A8B1-F789677BC0D8.1.jpg //10.6.0.74/Images/201909_U/Report617970_1.jpg diff --git a/src/main/java/com/ann/utils/FTPUtil.java b/src/main/java/com/ann/utils/FTPUtil.java index 0b124db..9d189fc 100644 --- a/src/main/java/com/ann/utils/FTPUtil.java +++ b/src/main/java/com/ann/utils/FTPUtil.java @@ -97,14 +97,15 @@ public class FTPUtil { boolean result = false; try { is = ftp.retrieveFileStream(path); - - byte[] bytes = new byte[1024]; - int i; - fos = new FileOutputStream(file); - while ((i = is.read(bytes)) != -1) { - fos.write(bytes, 0, i); + if(is != null){ + byte[] bytes = new byte[1024]; + int i; + fos = new FileOutputStream(file); + while ((i = is.read(bytes)) != -1) { + fos.write(bytes, 0, i); + } + closeFTPConnect(ftp); } - closeFTPConnect(ftp); if(file.length() == 0){ FileUtils.deleteImageFile(file); }else{ @@ -129,6 +130,42 @@ public class FTPUtil { return result; } + public static boolean deleteFile(String address) throws Exception { + boolean flag = false; + FTPClient ftpClient = null; + try { + String url = ""; + String path = ""; + Integer port = 21; + // 处理 “/” + if (address.indexOf("/") == -1) { + address = address.replace("\\", "/"); + } + address = address.substring(address.indexOf("/") + 2, address.length()); + path = address.substring(address.indexOf("/"), address.length()); + url = address.substring(0, address.indexOf("/")); + + ftpClient = connectFtpServer(url, port, "his", "his_docus"); + // 切换FTP目录 + ftpClient.changeWorkingDirectory("/"); + int dele = ftpClient.dele(path); + System.out.println(dele); + logger.error("删除FTP文件为:{}",address); + flag = true; + } catch (Exception e) { + throw e; + } finally { + if (ftpClient != null && ftpClient.isConnected()) { + try { + ftpClient.disconnect();// 断开连接,如果想连续删除就得把finally块注掉 + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return flag; + } + public static void main(String[] args) throws Exception { /* String address = "ftp://10.6.0.241/02019-08-29.png;ftp://10.6.0.241/12019-08-29.png"; diff --git a/src/main/java/com/ann/utils/FileUtils.java b/src/main/java/com/ann/utils/FileUtils.java index 5145076..dc4dbb9 100644 --- a/src/main/java/com/ann/utils/FileUtils.java +++ b/src/main/java/com/ann/utils/FileUtils.java @@ -35,7 +35,7 @@ public class FileUtils { LocalDate date = LocalDate.now(); String fileDirName = null; if (Objects.equals(fileType, "images")) { - fileDirName = "D:/images/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; + fileDirName = "Z:/images/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; } else if (Objects.equals(fileType, "pdfs")) { fileDirName = pdfPath + "/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; } @@ -81,7 +81,7 @@ public class FileUtils { LocalDate date = LocalDate.now(); String fileDirName = null; if (Objects.equals(fileType, "images")) { - fileDirName = "D:/images/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; + fileDirName = "Z:/images/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; } else if (Objects.equals(fileType, "pdfs")) { fileDirName = pdfPath + "/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; } @@ -116,7 +116,7 @@ public class FileUtils { LocalDate date = LocalDate.now(); String fileDirName = null; if (Objects.equals(fileType, "images")) { - fileDirName = "D:/images/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; + fileDirName = "Z:/images/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; } else if (Objects.equals(fileType, "pdfs")) { fileDirName = pdfPath + "/" + date.getYear() + "/" + date.getMonthValue() + "/" + inpNo + "_" + visitId; } diff --git a/src/main/java/com/ann/utils/JSchUtils.java b/src/main/java/com/ann/utils/JSchUtils.java index 8c3a2fe..0a3b74a 100644 --- a/src/main/java/com/ann/utils/JSchUtils.java +++ b/src/main/java/com/ann/utils/JSchUtils.java @@ -161,7 +161,7 @@ public class JSchUtils { // 1.连接到指定的服务器 connect("zingicu", "zingicu123", "10.6.0.241", 22); // 2.下载文件 - download("02019-08-29.png", "D:\\pdfs"); + download("fallSheets/徐晓峰-988874-2020-02-25 - 2020-03-21.pdf", "D:\\pdfs"); // 4.关闭连接 close(); } catch (Exception e) { diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index f918722..cc5fbc6 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,26 +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 + # 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 jpa: - database: mysql + database: sql_server 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 - # jpa: - # database: sql_server - # show-sql: false - # hibernate: - # dialect: org.hibernate.dialect.SQLServer2008Dialect + dialect: org.hibernate.dialect.SQLServer2008Dialect thymeleaf: prefix: classpath:/templates/ @@ -52,9 +51,6 @@ file: transferRecordPath: D:\\1\transferRecord.properties admissionRecordPath: D:\\1\admissionRecord.properties pdfPath: D:/project_js -logging: - path: D:/logs/ - file: AcquisitionServer.log signContent: 0