From 4433370d56de0b0ab95464aba9728d328227cb5a Mon Sep 17 00:00:00 2001
From: linjj <850658129@qq.com>
Date: Fri, 14 Jun 2024 15:13:27 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=87=87=E9=9B=86=E4=BF=9D?=
=?UTF-8?q?=E5=AD=98=E8=B7=AF=E5=BE=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 15 ++
.../spring/config/DataSource3Config.java | 48 ++++++
.../spring/controller/MoneyController.java | 9 ++
.../spring/db1/dao/ArchiveMasterDao.java | 2 +
.../shibofu/spring/db3/dao/CostListDao.java | 21 +++
.../spring/db3/service/CostListService.java | 13 ++
.../db3/serviceImpl/CostListServiceImpl.java | 141 ++++++++++++++++++
.../com/shibofu/spring/quartz/PacsQuartz.java | 5 +
.../java/com/shibofu/spring/text/test.java | 12 +-
.../com/shibofu/spring/vo/CostListVo.java | 29 ++++
src/main/resources/application.properties | 47 +++---
.../mapper/db1/ArchiveMasterMapper.xml | 3 +
src/main/resources/mapper/db3/CostListDao.xml | 19 +++
13 files changed, 337 insertions(+), 27 deletions(-)
create mode 100644 src/main/java/com/shibofu/spring/config/DataSource3Config.java
create mode 100644 src/main/java/com/shibofu/spring/db3/dao/CostListDao.java
create mode 100644 src/main/java/com/shibofu/spring/db3/service/CostListService.java
create mode 100644 src/main/java/com/shibofu/spring/db3/serviceImpl/CostListServiceImpl.java
create mode 100644 src/main/java/com/shibofu/spring/vo/CostListVo.java
create mode 100644 src/main/resources/mapper/db3/CostListDao.xml
diff --git a/pom.xml b/pom.xml
index 599aa85..b711b8f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,6 +93,21 @@
org.springframework.boot
spring-boot-test
+
+
+
+
+ org.postgresql
+ postgresql
+ 42.7.3
+
+
+
+ commons-io
+ commons-io
+ 2.6
+
+
diff --git a/src/main/java/com/shibofu/spring/config/DataSource3Config.java b/src/main/java/com/shibofu/spring/config/DataSource3Config.java
new file mode 100644
index 0000000..9478d41
--- /dev/null
+++ b/src/main/java/com/shibofu/spring/config/DataSource3Config.java
@@ -0,0 +1,48 @@
+package com.shibofu.spring.config;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
+
+import javax.sql.DataSource;
+
+/**
+ * @author potter.fu
+ * @date 2018-12-07 15:30
+ */
+@Configuration
+@MapperScan(basePackages = "com.shibofu.spring.db3.dao", sqlSessionTemplateRef = "db3SqlSessionTemplate")
+public class DataSource3Config {
+
+ @Bean(name = "db3DataSource")
+ @ConfigurationProperties(prefix = "spring.datasource.hikari.db3")
+ public DataSource testDataSource() {
+ return DataSourceBuilder.create().build();
+ }
+
+ @Bean(name = "db3SqlSessionFactory")
+ public SqlSessionFactory testSqlSessionFactory(@Qualifier("db3DataSource") DataSource dataSource) throws Exception {
+ SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+ bean.setDataSource(dataSource);
+ bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/db3/*.xml"));
+ return bean.getObject();
+ }
+
+ @Bean(name = "db3TransactionManager")
+ public DataSourceTransactionManager testTransactionManager(@Qualifier("db3DataSource") DataSource dataSource) {
+ return new DataSourceTransactionManager(dataSource);
+ }
+
+ @Bean(name = "db3SqlSessionTemplate")
+ public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("db3SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
+ return new SqlSessionTemplate(sqlSessionFactory);
+ }
+}
diff --git a/src/main/java/com/shibofu/spring/controller/MoneyController.java b/src/main/java/com/shibofu/spring/controller/MoneyController.java
index 01c5627..14b0d29 100644
--- a/src/main/java/com/shibofu/spring/controller/MoneyController.java
+++ b/src/main/java/com/shibofu/spring/controller/MoneyController.java
@@ -2,6 +2,7 @@ package com.shibofu.spring.controller;
import com.shibofu.spring.db1.service.PacsPollingService;
import com.shibofu.spring.db2.service.MoneyService;
+import com.shibofu.spring.db3.service.CostListService;
import com.shibofu.spring.util.Msg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -19,6 +20,8 @@ import java.util.Map;
public class MoneyController {
@Autowired
private PacsPollingService pacsPollingService;
+ @Autowired
+ private CostListService costListService;
@GetMapping("/makeUpByPacsAndTime")
public String makeUpByNeed() {
@@ -30,4 +33,10 @@ public class MoneyController {
public Msg makeUpPacsByMasterId(String masterId) {
return pacsPollingService.makeUpPacsByMasterId(masterId);
}
+
+ @GetMapping("/costList")
+ public String getCostList(){
+ costListService.collectionCostList();
+ return "采集完成";
+ }
}
diff --git a/src/main/java/com/shibofu/spring/db1/dao/ArchiveMasterDao.java b/src/main/java/com/shibofu/spring/db1/dao/ArchiveMasterDao.java
index 27a3032..cf564d3 100644
--- a/src/main/java/com/shibofu/spring/db1/dao/ArchiveMasterDao.java
+++ b/src/main/java/com/shibofu/spring/db1/dao/ArchiveMasterDao.java
@@ -29,4 +29,6 @@ public interface ArchiveMasterDao {
int updatePacsCompenSate(String masterId);
String selectPacsPush();
+ String getIdbyJzh(String jzh);
+
}
diff --git a/src/main/java/com/shibofu/spring/db3/dao/CostListDao.java b/src/main/java/com/shibofu/spring/db3/dao/CostListDao.java
new file mode 100644
index 0000000..59d35c8
--- /dev/null
+++ b/src/main/java/com/shibofu/spring/db3/dao/CostListDao.java
@@ -0,0 +1,21 @@
+package com.shibofu.spring.db3.dao;
+
+import com.shibofu.spring.vo.CostListVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * @InterfaceName CostListServiceMapper
+ * @Description
+ * @Author linjj
+ * @Date 2024/5/22 10:30
+ * @Version 1.0
+ */
+@Mapper
+public interface CostListDao {
+
+ ListgetCostList(int offset);
+
+ int getConut();
+}
diff --git a/src/main/java/com/shibofu/spring/db3/service/CostListService.java b/src/main/java/com/shibofu/spring/db3/service/CostListService.java
new file mode 100644
index 0000000..103c4b4
--- /dev/null
+++ b/src/main/java/com/shibofu/spring/db3/service/CostListService.java
@@ -0,0 +1,13 @@
+package com.shibofu.spring.db3.service;
+
+/**
+ * @InterfaceName CostListService
+ * @Description 费用清单接口
+ * @Author linjj
+ * @Date 2024/5/22 10:18
+ * @Version 1.0
+ */
+public interface CostListService {
+
+ void collectionCostList();
+}
diff --git a/src/main/java/com/shibofu/spring/db3/serviceImpl/CostListServiceImpl.java b/src/main/java/com/shibofu/spring/db3/serviceImpl/CostListServiceImpl.java
new file mode 100644
index 0000000..e7287d9
--- /dev/null
+++ b/src/main/java/com/shibofu/spring/db3/serviceImpl/CostListServiceImpl.java
@@ -0,0 +1,141 @@
+package com.shibofu.spring.db3.serviceImpl;
+
+import com.shibofu.spring.db1.dao.ArchiveDetailDao;
+import com.shibofu.spring.db1.dao.ArchiveMasterDao;
+import com.shibofu.spring.db3.dao.CostListDao;
+import com.shibofu.spring.db3.service.CostListService;
+import com.shibofu.spring.dto.ArchiveDetailDto;
+import com.shibofu.spring.vo.ArchiveDetailVo;
+import com.shibofu.spring.vo.CostListVo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FileUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ClassName CostListServiceImpl
+ * @Description 费用清单
+ * @Author linjj
+ * @Date 2024/5/22 10:19
+ * @Version 1.0
+ */
+@Service
+@Slf4j
+public class CostListServiceImpl implements CostListService {
+
+ @Autowired
+ private CostListDao costListDao;
+ @Autowired
+ private ArchiveMasterDao archiveMasterDao;
+ @Autowired
+ private ArchiveDetailDao archiveDetailDao;
+ @Value("${savePath}")
+ private String savePath;
+
+
+ /**
+ * @description: 采集费用清单
+ * @author linjj
+ * @date: 2024/5/22 10:21
+ */
+ @Override
+ public void collectionCostList() {
+ //插入文件表数据集合
+ List ArchiveDetailList = new ArrayList<>();
+ //查询一共有多条记录
+ int conut = costListDao.getConut();
+ //每次查询50条记录
+ int pollingNum = (int) Math.floor((double) conut / (double) 50);
+ for (int i = 0; i <= pollingNum; i++) {
+ //每次查询50条记录
+ int offset = i * 50;
+ //查询需要采集清单病历
+ List costList = costListDao.getCostList(offset);
+ if (!CollectionUtils.isEmpty(costList)) {
+ log.info("费用清单本次采集" + costList.size() + "份!!!");
+ for (CostListVo list : costList) {
+ if (StringUtils.isEmpty(list.getFpdf())) {
+ log.info(list.getFjzh() + "路径为空!!");
+ continue;
+ }
+ try {
+ download(list, ArchiveDetailList);
+ } catch (IOException e) {
+ log.info(e.getMessage());
+ }
+ }
+ archiveDetailDao.addArchiveDetail(ArchiveDetailList);
+ log.info("完成采集" + ArchiveDetailList.size() + "份!!!");
+ ArchiveDetailList.clear();
+ }
+ }
+ log.info("本次采集没有费用清单记录");
+ }
+
+ private void download(CostListVo costListVo, List ArchiveDetailList) throws IOException {
+ ArchiveDetailDto archiveDetailDto = new ArchiveDetailDto();
+ //使用yyyyMMddHHmmssSSS格式作为文件名
+ Date date = new Date();
+ SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+ String newDate = format.format(date);
+ //根据jzh查询患者主键id
+ String masterId = archiveMasterDao.getIdbyJzh(costListVo.getFjzh());
+ //判断文件是否存在存在删除后新增不存在新增
+ List subAssort = archiveDetailDao.getSubAssort(masterId);
+ if (subAssort.size() > 0) {
+ deleteFliepath(subAssort);
+ }
+ //组织保存目录
+ String filePathdir = savePath + File.separatorChar + costListVo.getFpatid() + File.separatorChar + costListVo.getFtimes();
+ File file = new File(filePathdir);
+ //判断文件夹是否存在不存在创建文件夹
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ //文件保存路径
+ String filePath = filePathdir + File.separatorChar + newDate + ".pdf";
+ //下载文件
+ try (FileOutputStream fileOutputStream = new FileOutputStream(filePath)) {
+ // 将二进制数据写入文件
+ fileOutputStream.write(costListVo.getFpdf());
+ fileOutputStream.flush();
+ } catch (IOException e) {
+ log.info(masterId + "异常处理" + e.getMessage());
+ }
+ //保存文件表
+ archiveDetailDto.setMasterId(masterId);
+ archiveDetailDto.setUploadDateTime(new Date());
+ archiveDetailDto.setAssortId("DE599D770E8347CCB5122BC357D96F47");
+ archiveDetailDto.setSource("pacs");
+ archiveDetailDto.setFlag("0");
+ archiveDetailDto.setTitle("费用结算清单");
+ archiveDetailDto.setPdfPath(filePath);
+ archiveDetailDto.setSubAssort(masterId);
+ ArchiveDetailList.add(archiveDetailDto);
+ }
+
+
+ private void deleteFliepath(List listPath) {
+ for (ArchiveDetailVo list : listPath) {
+ archiveDetailDao.delSubAssort(list.getId());
+ File file = new File(list.getPdfPath());
+ try {
+ file.delete(); // 删除照片
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/com/shibofu/spring/quartz/PacsQuartz.java b/src/main/java/com/shibofu/spring/quartz/PacsQuartz.java
index 08272c3..16f7764 100644
--- a/src/main/java/com/shibofu/spring/quartz/PacsQuartz.java
+++ b/src/main/java/com/shibofu/spring/quartz/PacsQuartz.java
@@ -3,6 +3,7 @@ package com.shibofu.spring.quartz;
import com.shibofu.spring.db1.service.PacsPollingService;
+import com.shibofu.spring.db3.service.CostListService;
import org.quartz.JobExecutionContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
@@ -17,11 +18,15 @@ public class PacsQuartz extends QuartzJobBean {
@Resource
private PacsPollingService pacsPollingService;
+ @Resource
+ private CostListService costListService;
@Override
protected void executeInternal(JobExecutionContext jobExecutionContext) {
//每天轮询查询昨天数据进来采集
pacsPollingService.PacsEveryDayPolling();
+ //费用清单采集
+ costListService.collectionCostList();
//每天轮询查询一周内数据进来采集
pacsPollingService.PacsEveryWeekPolling();
}
diff --git a/src/main/java/com/shibofu/spring/text/test.java b/src/main/java/com/shibofu/spring/text/test.java
index e82fb22..46a1779 100644
--- a/src/main/java/com/shibofu/spring/text/test.java
+++ b/src/main/java/com/shibofu/spring/text/test.java
@@ -38,13 +38,11 @@ public class test {
@Test
public void testDemo() {
- String filePathdir = savePath + File.separatorChar + "1231" + File.separatorChar + "111";
- File file = new File(filePathdir);
- //判断文件夹是否存在不存在创建文件夹
- log.info("创建文件的路径:" + file.getAbsolutePath());
- if (!file.exists()) {
- log.info("尝试创建文件:" + file.getAbsolutePath());
- file.mkdirs();
+ File temporaryFile = new File("D:\\jiashi\\scanning\\35131\\1412");
+ try {
+ temporaryFile.delete(); // 删除临时照片
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
diff --git a/src/main/java/com/shibofu/spring/vo/CostListVo.java b/src/main/java/com/shibofu/spring/vo/CostListVo.java
new file mode 100644
index 0000000..3ad1265
--- /dev/null
+++ b/src/main/java/com/shibofu/spring/vo/CostListVo.java
@@ -0,0 +1,29 @@
+package com.shibofu.spring.vo;
+
+import lombok.Data;
+
+/**
+ * @ClassName CostListVo
+ * @Description 采集病历清单实体
+ * @Author linjj
+ * @Date 2024/5/22 10:32
+ * @Version 1.0
+ */
+@Data
+public class CostListVo {
+
+ //住院号
+ private String fpatid;
+ //住院次数
+ private String ftimes;
+ //二进制文件
+ private byte[] fpdf;
+ //记帐号
+ private String fjzh;
+ //出院时间
+ private String ffirstdate;
+ //最后更新时间
+ private String fnewdate;
+ //文件地址
+ private String filepath;
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index ae301f6..fc50310 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,29 +1,36 @@
server.port=3391
-#spring.datasource.hikari.db1.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=yd_record
-#spring.datasource.hikari.db1.username=sa
-#spring.datasource.hikari.db1.password=admin123
-#spring.datasource.hikari.db1.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
-#spring.datasource.hikari.db2.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=yd_record
-#spring.datasource.hikari.db2.username=sa
-#spring.datasource.hikari.db2.password=admin123
-#spring.datasource.hikari.db2.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
-
-
#sqlserver
-spring.datasource.hikari.db1.jdbc-url=jdbc:sqlserver://10.36.116.108:1433;DatabaseName=emr_record
+spring.datasource.hikari.db1.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=yd_record
spring.datasource.hikari.db1.username=sa
-spring.datasource.hikari.db1.password=xjgs+docus911
+spring.datasource.hikari.db1.password=admin123
spring.datasource.hikari.db1.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
-#sqlserver
-spring.datasource.hikari.db2.jdbc-url=jdbc:sqlserver://10.36.116.100:1433;DatabaseName=pacsdb
-spring.datasource.hikari.db2.username=AP
-spring.datasource.hikari.db2.password=AP
+##sqlserver
+spring.datasource.hikari.db2.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=yd_record
+spring.datasource.hikari.db2.username=sa
+spring.datasource.hikari.db2.password=admin123
spring.datasource.hikari.db2.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
#pg
-spring.datasource.hikari.db3.jdbc-url=jdbc:postgresql://localhost:5432/School
-spring.datasource.hikari.db3.username=sassssddss
-spring.datasource.hikari.db3.password=AP
-spring.datasource.hikari.db3.driver-class-name=org.hsqldb.jdbcDriver
+spring.datasource.hikari.db3.jdbc-url=jdbc:postgresql://localhost:5432/yd
+spring.datasource.hikari.db3.username=postgres
+spring.datasource.hikari.db3.password=admin123
+spring.datasource.hikari.db3.driver-class-name=org.postgresql.Driver
+
+
+#sqlserver
+#spring.datasource.hikari.db1.jdbc-url=jdbc:sqlserver://10.36.116.108:1433;DatabaseName=emr_record
+#spring.datasource.hikari.db1.username=sa
+#spring.datasource.hikari.db1.password=xjgs+docus911
+#spring.datasource.hikari.db1.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
+##sqlserver
+#spring.datasource.hikari.db2.jdbc-url=jdbc:sqlserver://10.36.116.100:1433;DatabaseName=pacsdb
+#spring.datasource.hikari.db2.username=AP
+#spring.datasource.hikari.db2.password=AP
+#spring.datasource.hikari.db2.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
+##pg
+#spring.datasource.hikari.db3.jdbc-url=jdbc:postgresql://192.168.55.230:5432/postgres
+#spring.datasource.hikari.db3.username=postgres
+#spring.datasource.hikari.db3.password=pl4grWwt
+#spring.datasource.hikari.db3.driver-class-name=org.postgresql.Driver
diff --git a/src/main/resources/mapper/db1/ArchiveMasterMapper.xml b/src/main/resources/mapper/db1/ArchiveMasterMapper.xml
index 857ce86..11ef3cf 100644
--- a/src/main/resources/mapper/db1/ArchiveMasterMapper.xml
+++ b/src/main/resources/mapper/db1/ArchiveMasterMapper.xml
@@ -62,6 +62,9 @@
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/db3/CostListDao.xml b/src/main/resources/mapper/db3/CostListDao.xml
new file mode 100644
index 0000000..3670ad7
--- /dev/null
+++ b/src/main/resources/mapper/db3/CostListDao.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
\ No newline at end of file