feat:广州市一添加检验视图校验数量

lianzhong-receive
wyb 2 days ago
parent 80ad2fd563
commit 635cb9d7a4

@ -0,0 +1,45 @@
package com.docus.demo.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
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;
@Configuration
@MapperScan(basePackages = DbSqlserverLisConfig.PACKAGE, sqlSessionFactoryRef = "sqlserverlisSqlSessionFactory")
public class DbSqlserverLisConfig {
// 这里一定要指定精准 否则后果不堪设想
static final String PACKAGE = "com.docus.demo.mapper.sqlserverlis";
static final String MAPPER_LOCATION = "classpath:mapper/sqlserverlis/*.xml";
@Bean(name = "sqlserverlisDataSource")
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.sqlserverlis")
public DataSource secondDataSource(){
return new DruidDataSource();
}
/*注入事务*/
@Bean(name = "sqlserverlisTransactionManager")
public DataSourceTransactionManager secondTransactionManager() {
return new DataSourceTransactionManager(secondDataSource());
}
@Bean(name = "sqlserverlisSqlSessionFactory")
public SqlSessionFactory secondSqlSessionFactory(@Qualifier("sqlserverlisDataSource") DataSource secondDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(secondDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(DbSqlserverLisConfig.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}

@ -10,6 +10,7 @@ import com.docus.demo.entity.CommonResult;
import com.docus.demo.facade.ISyncBasicDataService;
import com.docus.demo.facade.ISyncBasicFileService;
import com.docus.demo.facade.IWebService;
import com.docus.demo.mapper.sqlserverlis.LisReportMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@ -25,6 +26,7 @@ import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
@ -44,6 +46,9 @@ public class GuangZhouFirstHospController {
@Autowired
private IWebService webService;
@Autowired
private LisReportMapper lisReportMapper;
@ApiOperation("省厅-同步基础数据")
@PostMapping("/syncBasicData")
public CommonResult<?> syncBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto) {
@ -191,6 +196,13 @@ public class GuangZhouFirstHospController {
return CommonResult.success("导出已完成!");
}
@ApiOperation("检验报告验证查询测试")
@GetMapping("/lisVerifyQuery")
public CommonResult<?> lisVerifyQuery(@RequestParam("inpatientNo") String inpatientNo,@RequestParam("admissTimes") String admissTimes) {
List<Map<String, Object>> data = lisReportMapper.query(inpatientNo, admissTimes);
return CommonResult.success(data);
}
private void validateAndSet(SyncLabReportDto syncLabReportDto) {
List<SyncLabReportDto.SyncLabReportBasicDto> basicDtoList = syncLabReportDto.getBasicDtoList();

@ -12,6 +12,16 @@ public interface IWebService {
void syncLabReport(SyncLabReportDto syncLabReportDto);
/**
* ,LIS
*
* @param tbasic
* @param startDate yyyy-MM-dd HH:mm:ss
* @param endDate yyyy-MM-dd HH:mm:ss
*/
void syncVerifyInspection(Tbasic tbasic, String startDate, String endDate);
/**
* ,syncInspection(Tbasic tbasic, String startDate, String endDate,true)
*

@ -60,7 +60,7 @@ public class GzFirstLabReportSyncJob {
if (CollUtil.isNotEmpty(tbasicList)) {
for (Tbasic tbasic : tbasicList) {
LAB_SYNC_EXECUTOR.execute(() -> iWebService.syncInspection(tbasic, startDateTime, endDateTime));
LAB_SYNC_EXECUTOR.execute(() -> iWebService.syncVerifyInspection(tbasic, startDateTime, endDateTime));
}
}

@ -14,7 +14,7 @@ public interface ScanAssortMapper {
List<ScanAssort> getListByPid(@Param("pid") String pid);
List<ScanAssort> getListByAssortId(@Param("assortId") String assortId,@Param("pid") String pid);
List<ScanAssort> getJyListByAssortId(@Param("assortId") String assortId, @Param("pid") String pid);
int insertBatch(@Param("list") List<ScanAssort> scanAssortList);

@ -0,0 +1,16 @@
package com.docus.demo.mapper.sqlserverlis;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
*
* @author YongBin Wen
* @date 2025/12/12 8:48
*/
public interface LisReportMapper {
List<Map<String,Object>> query(@Param("inpatientNo") String inpatientNo, @Param("admissTimes") String admissTimes);
}

@ -214,7 +214,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
new File(dir).mkdirs();
}
String fileName= DateUtil.formatDateTime(new Date())+ UUID.randomUUID()+ ".xlsx";
String fileName= DateUtil.format(new Date(),"yyyyMMddHHmmss")+ UUID.randomUUID()+ ".xlsx";
String filePath=dir+File.separator+fileName;
File file = new File(filePath);
ExcelWriter excelWriter = EasyExcel.write(file, ExportDto.class).build();

@ -14,9 +14,11 @@ import com.docus.demo.entity.Tbasic;
import com.docus.demo.facade.IWebService;
import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.mysql.ScanAssortMapper;
import com.docus.demo.mapper.sqlserverlis.LisReportMapper;
import com.docus.demo.utils.PDFFileUtils;
import com.docus.demo.utils.SnowflakeIdWorker;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -41,6 +43,8 @@ public class WebServiceImpl implements IWebService {
private BasicMapper basicMapper;
@Resource
private ScanAssortMapper scanAssortMapper;
@Autowired
private LisReportMapper lisReportMapper;
private SnowflakeIdWorker snowflakeIdWorker = new SnowflakeIdWorker(0, 0);
@ -102,6 +106,20 @@ public class WebServiceImpl implements IWebService {
}
}
@Override
public void syncVerifyInspection(Tbasic tbasic, String startDate, String endDate) {
List<Map<String, Object>> reportList = lisReportMapper.query(tbasic.getInpatientNo(), tbasic.getAdmissTimes().toString());
int reportSize = reportList.size();
log.info("广州市一,病案号 {} 住院次数 {} exec sp_BingAnCheckReport2 查询到数据 {} 条!", tbasic.getInpatientNo(), tbasic.getAdmissTimes().toString(),reportSize);
if(reportSize == 0){
return;
}
List<ScanAssort> jyList = scanAssortMapper.getJyListByAssortId("A5A7AA6796D1715A2F1E35699C706C84", tbasic.getPatientId());
if(jyList.size() < reportSize){
syncInspection(tbasic,startDate,endDate,false);
}
}
@Override
public void syncInspection(Tbasic tbasic, String startDate, String endDate) {
@ -130,7 +148,7 @@ public class WebServiceImpl implements IWebService {
String patientId = tbasic.getPatientId();
log.info("同步检验报告,病案号:{},住院次数:{}", inpatientNo, times);
List<ScanAssort> oldScanAssortList = scanAssortMapper.getListByAssortId("A5A7AA6796D1715A2F1E35699C706C84", patientId);
List<ScanAssort> oldScanAssortList = scanAssortMapper.getJyListByAssortId("A5A7AA6796D1715A2F1E35699C706C84", patientId);
int size = oldScanAssortList.size();
if (skip && size > 0) {
log.info("同步检验报告跳过同步,病案号:{},住院次数:{} 已经存在 {} 份检验报告", inpatientNo, times, size);

@ -96,7 +96,28 @@ spring:
test-on-borrow: false
test-on-return: false
validation-query: select 1
#LIS检验数据库
sqlserverlis:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: jiashi
password: }T:CyW?Q
url: jdbc:sqlserver://192.168.8.128:1433;DatabaseName=clab_gzsy_report
# 初始化配置
initial-size: 3
# 最小连接数
min-idle: 3
# 最大连接数
max-active: 15
# 获取连接超时时间
max-wait: 5000
# 连接有效性检测时间
time-between-eviction-runs-millis: 90000
# 最大空闲时间
min-evictable-idle-time-millis: 1800000
test-while-idle: true
test-on-borrow: false
test-on-return: false
validation-query: select 1
#文件保存路径
savePath: F:\jiashi\lianzhong

@ -87,7 +87,7 @@
FROM docus_archivefile.t_scan_assort
WHERE patient_id = #{pid}
</select>
<select id="getListByAssortId" resultType="com.docus.demo.entity.ScanAssort">
<select id="getJyListByAssortId" resultType="com.docus.demo.entity.ScanAssort">
SELECT id,
patient_id,
assort_id,

@ -0,0 +1,11 @@
<?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.docus.demo.mapper.sqlserverlis.LisReportMapper">
<select id="query" resultType="java.util.Map">
exec sp_BingAnCheckReport2 #{inpatientNo},#{admissTimes}
</select>
</mapper>
Loading…
Cancel
Save