修改采集保存路径
parent
be9b598674
commit
4433370d56
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -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 {
|
||||||
|
|
||||||
|
List<CostListVo>getCostList(int offset);
|
||||||
|
|
||||||
|
int getConut();
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
@ -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<ArchiveDetailDto> 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<CostListVo> 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<ArchiveDetailDto> 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<ArchiveDetailVo> 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<ArchiveDetailVo> listPath) {
|
||||||
|
for (ArchiveDetailVo list : listPath) {
|
||||||
|
archiveDetailDao.delSubAssort(list.getId());
|
||||||
|
File file = new File(list.getPdfPath());
|
||||||
|
try {
|
||||||
|
file.delete(); // 删除照片
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
@ -1,29 +1,36 @@
|
|||||||
server.port=3391
|
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
|
#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.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
|
spring.datasource.hikari.db1.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||||
#sqlserver
|
##sqlserver
|
||||||
spring.datasource.hikari.db2.jdbc-url=jdbc:sqlserver://10.36.116.100:1433;DatabaseName=pacsdb
|
spring.datasource.hikari.db2.jdbc-url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=yd_record
|
||||||
spring.datasource.hikari.db2.username=AP
|
spring.datasource.hikari.db2.username=sa
|
||||||
spring.datasource.hikari.db2.password=AP
|
spring.datasource.hikari.db2.password=admin123
|
||||||
spring.datasource.hikari.db2.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
|
spring.datasource.hikari.db2.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||||
#pg
|
#pg
|
||||||
spring.datasource.hikari.db3.jdbc-url=jdbc:postgresql://localhost:5432/School
|
spring.datasource.hikari.db3.jdbc-url=jdbc:postgresql://localhost:5432/yd
|
||||||
spring.datasource.hikari.db3.username=sassssddss
|
spring.datasource.hikari.db3.username=postgres
|
||||||
spring.datasource.hikari.db3.password=AP
|
spring.datasource.hikari.db3.password=admin123
|
||||||
spring.datasource.hikari.db3.driver-class-name=org.hsqldb.jdbcDriver
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
|
||||||
|
<mapper namespace="com.shibofu.spring.db3.dao.CostListDao">
|
||||||
|
|
||||||
|
<select id="getConut" resultType="java.lang.Integer">
|
||||||
|
select count(*)
|
||||||
|
from public.bajsdpdf
|
||||||
|
where fnewdate between CURRENT_DATE - INTERVAL '6 days' AND CURRENT_DATE
|
||||||
|
</select>
|
||||||
|
<select id="getCostList" resultType="com.shibofu.spring.vo.CostListVo">
|
||||||
|
SELECT fpatid, ftimes, fpdf, fjzh, ffirstdate, fnewdate, filepath
|
||||||
|
FROM public.bajsdpdf
|
||||||
|
where fnewdate between CURRENT_DATE - INTERVAL '6 days' AND CURRENT_DATE
|
||||||
|
order by fnewdate DESC
|
||||||
|
LIMIT 50 OFFSET #{offset}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue