Compare commits

...

4 Commits

Author SHA1 Message Date
zhanglb 5e661ccee7 儿童医院代码更新 2 years ago
zhanglb 1a6479b298 路径问题 2 years ago
zhanglb e5acd54dd3 删除class文件 2 years ago
zhanglb 0d03db237e 儿童医院 2 years ago

1
.gitignore vendored

@ -0,0 +1 @@
/target/

@ -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 = DbSqlserver2Config.PACKAGE, sqlSessionFactoryRef = "sqlserver2SqlSessionFactory")
public class DbSqlserver2Config {
// 这里一定要指定精准 否则后果不堪设想
static final String PACKAGE = "com.docus.demo.mapper.sqlserver2";
static final String MAPPER_LOCATION = "classpath:mapper/sqlserver2/*.xml";
@Bean(name = "sqlserver2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.sqlserver2")
public DataSource secondDataSource(){
return new DruidDataSource();
}
/*注入事务*/
@Bean(name = "sqlserver2TransactionManager")
public DataSourceTransactionManager secondTransactionManager() {
return new DataSourceTransactionManager(secondDataSource());
}
@Bean(name = "sqlserver2SqlSessionFactory")
public SqlSessionFactory secondSqlSessionFactory(@Qualifier("sqlserver2DataSource") DataSource secondDataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(secondDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(DbSqlserver2Config.MAPPER_LOCATION));
return sessionFactory.getObject();
}
}

@ -30,13 +30,15 @@ public class SyncBasicDataController {
return syncBasicDataService.syncBasicData(syncBasicDataDto);
}
@ApiOperation("同步基础数据")
@PostMapping("/syncBasicFile")
public CommonResult<?> syncBasicFile(@RequestBody SyncFileDto syncFileDto){
return syncBasicFileService.syncBasicFile(syncFileDto);
@ApiOperation("同步儿童医院101份数据")
@PostMapping("/syncChildren")
public CommonResult<?> syncChildren(){
return syncBasicFileService.syncChildren();
}
@ApiOperation("test")
@GetMapping("/test")
public CommonResult<?> test(){

@ -0,0 +1,24 @@
package com.docus.demo.entity.sqlserver2;
import lombok.Data;
import java.util.Date;
@Data
public class BasicInfo {
private String id;
private String patientId;
private String patPath;
private String hostReason;
private String inpatientNo;
private Date disDate;
private int admissTimes;
}

@ -0,0 +1,19 @@
package com.docus.demo.entity.sqlserver2;
import lombok.Data;
import java.util.Date;
@Data
public class Tscan {
private String patientId;
private String assortId;
private String scanPage;
private int upState;
private Date upDate;
}

@ -6,10 +6,6 @@ import com.docus.demo.entity.CommonResult;
public interface ISyncBasicFileService {
/**
*
* @param syncFileDto
* @return
*/
CommonResult<?> syncBasicFile(SyncFileDto syncFileDto);
CommonResult<?> syncChildren();
}

@ -2,12 +2,14 @@ package com.docus.demo.mapper.sqlserver;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.demo.entity.TPicture;
import com.docus.demo.entity.sqlserver2.BasicInfo;
import com.docus.demo.entity.sqlserver2.Tscan;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@DS("mapper/sqlserver")
public interface PictureMapper {
@ -18,5 +20,11 @@ public interface PictureMapper {
*/
List<TPicture> getPictureInfoByCid(@Param("cuid") String cuid);
/**
* 101
* @return
*/
List<BasicInfo> getBasicInfoList();
}

@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
@DS("mapper/sqlserver1")
public interface PaintVisitMapper {
List<Tpatientvisit> getTpatientVisitList(@Param("dto") SyncBasicDataDto syncBasicDataDto);

@ -1,11 +1,18 @@
package com.docus.demo.mapper.sqlserver2;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.demo.entity.sqlserver2.BasicInfo;
import com.docus.demo.entity.sqlserver2.Tscan;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@DS("mapper/sqlserver2")
public interface TscanMapper {
List<Tscan> getOldScanListByPid(@Param("id") String patientId);
void insertScanList(@Param("list") List<Tscan> insertList);
}

@ -1,19 +1,16 @@
package com.docus.demo.service;
import cn.hutool.core.util.ObjectUtil;
import com.docus.demo.dto.BasicSelectDto;
import com.docus.demo.dto.SyncFileDto;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.entity.ScanAssort;
import com.docus.demo.entity.TPicture;
import com.docus.demo.entity.ZdAssort;
import com.docus.demo.entity.sqlserver2.BasicInfo;
import com.docus.demo.entity.sqlserver2.Tscan;
import com.docus.demo.facade.ISyncBasicFileService;
import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.mysql.ScanAssortMapper;
import com.docus.demo.mapper.sqlserver.PictureMapper;
import com.docus.demo.mapper.sqlserver2.TscanMapper;
import com.docus.demo.utils.ImageUtils;
import com.docus.demo.utils.SnowflakeIdWorker;
import com.docus.demo.vo.BasicVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -22,12 +19,8 @@ import org.springframework.stereotype.Service;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@Slf4j
@ -40,112 +33,82 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
private PictureMapper pictureMapper;
@Autowired
private ScanAssortMapper scanAssortMapper;
@Autowired
private TscanMapper tscanMapper;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private final ExecutorService executor = Executors.newFixedThreadPool(7);
@Override
public CommonResult<?> syncBasicFile(SyncFileDto syncFileDto) {
CompletableFuture.runAsync(() -> {
// System.out.println("开始执行多线程同步" +syncFileDto.getStartDate() +" " +syncFileDto.getEndDate());
//页码
int current;
//每页1000条数据
int limit = syncFileDto.getLimit();
//1.先去tbaisc查数据 查询出带cid的数据
// System.out.println("查询基础信息组装");
BasicSelectDto basicSelectDto = this.getBaiscSelectDto(syncFileDto);
List<BasicVo> basicVoList;
// System.out.println("查询基础信息组装结束");
for (current = 1; ; current++) {
// System.out.println("查询基础");
basicVoList = basicMapper.getBasicVoList((current-1)*limit, limit, basicSelectDto);
if (null == basicVoList || basicVoList.size() == 0) {
break;
}
// System.out.println("查询基础结束" +basicVoList.size());
List<ScanAssort> updateOrInsertList = new ArrayList<>(5000);
System.out.println("开始同步" +basicVoList.size());
for (BasicVo basicVo : basicVoList) {
System.out.println("当前病案 " +basicVo.getInpatientNo());
List<ScanAssort> scanAssortList = this.doSyncFile(basicVo);
//2.5数据入库
if (scanAssortList.size() != 0) {
List<ScanAssort> oldScanAssort = scanAssortMapper.getListByPid(basicVo.getPatientId());
//根据pid 查询数据库 根据路径和名称做匹配 如果数据存在需要做幂等 不存在需要做数据更新
List<ScanAssort> addScanAssortList = this.handleUpdateOrInsert(oldScanAssort,scanAssortList);
updateOrInsertList.addAll(addScanAssortList);
System.out.println("syncSuccess : " + scanAssortList.size());
// log.info("syncSuccess : " + scanAssortList.size());
} else {
log.info(basicVo.getPatientId() + " canFindImage ");
}
public CommonResult<?> syncChildren() {
//1.查询出101份的病案Pid 病案号 住院次数
List<BasicInfo> basicInfos = pictureMapper.getBasicInfoList();
//2.代入到联众数据库 查询图片信息
//3.根据id查询出文件信息
for (BasicInfo basicInfo: basicInfos) {
List<Tscan> oldScanList = tscanMapper.getOldScanListByPid(basicInfo.getPatientId());
//4.文件数据同步-> 路径 病案号 +病案id主键
List<Tscan> syncScanList = this.doSyncFile(basicInfo);
List<Tscan> insertList = this.getInsertList(oldScanList,syncScanList);
if (ObjectUtil.isNotEmpty(insertList)){
//判断数据量 如果文件数据大于五百条 需要做拆分分批次插入
int batchSize = 100;
// 拆分列表
for (int i = 0; i < insertList.size(); i += batchSize) {
int endIndex = Math.min(i + batchSize, insertList.size());
List<Tscan> sublist = insertList.subList(i, endIndex);
//5.数据入库tsacn
tscanMapper.insertScanList(sublist);
}
System.out.println("开始插入数据" +updateOrInsertList.size() );
scanAssortMapper.insertOrUpdateBatch(updateOrInsertList);
System.out.println("插入数据结束" );
}
},executor);
// System.out.println("执行了一个任务" +syncFileDto.getStartDate() +" " +syncFileDto.getEndDate());
}
return CommonResult.success("同步成功");
}
private List<ScanAssort> handleUpdateOrInsert(List<ScanAssort> oldScanAssort, List<ScanAssort> scanAssortList) {
//如果没有旧数据 做全量插入
if (ObjectUtil.isEmpty(oldScanAssort)){
return scanAssortList;
}
List<ScanAssort> updateOrInsertList = scanAssortList.stream().map(m->{
//根据路径和文件名称去旧数据做判断 如果存在则需要做更新
ScanAssort scanAssort = oldScanAssort.stream()
.filter(f->ObjectUtil.equal(m.getImagePath(),f.getImagePath())&&ObjectUtil.equal(m.getScanPage(),f.getScanPage()))
.findAny()
private List<Tscan> getInsertList(List<Tscan> oldScanList, List<Tscan> syncScanList) {
return syncScanList.stream().filter(f->{
Tscan oldScan =oldScanList.stream()
.filter(old->ObjectUtil.equal(old.getPatientId(),f.getPatientId())&&ObjectUtil.equal(old.getScanPage(),f.getScanPage()))
.findFirst()
.orElse(null);
if (scanAssort!=null){
m.setId(scanAssort.getId());
}
return m;
return oldScan==null;
}).collect(Collectors.toList());
//做新增或者插入
return updateOrInsertList;
}
private List<ScanAssort> doSyncFile(BasicVo basicVo) {
String[] disDate = dateFormat.format(basicVo.getDisDate()).split("-");
private List<Tscan> doSyncFile(BasicInfo basicInfo) {
List<Tscan> tscanList = new ArrayList<>(1000);
String[] disDate = dateFormat.format(basicInfo.getDisDate()).split("-");
String cyYear = disDate[0];
String cyMonth = disDate[1];
String cyDay = disDate[2];
StringBuilder inpatientNo = new StringBuilder(basicVo.getInpatientNo());
for (int s =inpatientNo.length() ;s<8;s++){
inpatientNo.insert(0, "0");
}
String patPath = basicInfo.getPatPath();
String inpatientNo = basicInfo.getInpatientNo().trim();
String patientId = basicInfo.getPatientId();
String pid = basicInfo.getId();
String rootDir = "Z:\\"
+ cyYear + File.separator
+ cyYear + cyMonth + File.separator
+ cyYear + cyMonth + cyDay + File.separator
+ inpatientNo + cyYear + cyMonth + cyDay + File.separator;
String outDir = "F:\\lianzhong" + File.separator
+ cyYear + File.separator
+ cyMonth + File.separator
+ cyDay + File.separator
+ basicVo.getInpatientNo();
String rootDir = "E:\\ServerE01"+File.separator
+cyYear+File.separator
+cyYear+cyMonth+ File.separator
+cyYear+cyMonth+cyDay+ File.separator
+patPath+File.separator;
String outDir = "E:\\docus"+File.separator+inpatientNo+File.separator+patientId ;
File file = new File(rootDir);
if (!file.exists()){
rootDir= basicInfo.getHostReason();
}
String cuid = basicVo.getBColumn5();
List<ScanAssort> scanAssortList = new ArrayList<>(100);
// 2.根据cid查询联众表t_picture 走索引大概零点几秒
List<TPicture> tPictureList = pictureMapper.getPictureInfoByCid(cuid);
List<TPicture> tPictureList = pictureMapper.getPictureInfoByCid(pid);
// 2.1根据病案信息拼接地址
int sort = 0;
for (TPicture tpicture : tPictureList) {
String picName = tpicture.getPicName().split(".jpg")[0];
@ -167,50 +130,32 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
rotateFlag = true;
}
// 2.4组合文件信息
ScanAssort scanAssort = new ScanAssort();
scanAssort.setId(SnowflakeIdWorker.idWorker.nextId());
scanAssort.setPatientId(basicVo.getPatientId());
scanAssort.setAssortId(tpicture.getPicKind());
scanAssort.setFileTitle(picName);
scanAssort.setImagePath(outDir);
scanAssort.setCreateTime(new Date());
scanAssort.setScanPage(picName + ".jpg");
scanAssort.setSort(sort);
scanAssort.setFileSource(2);
scanAssort.setFileStorageType(1);
scanAssort.setFilePages(1);
Tscan tscan = new Tscan();
tscan.setPatientId(patientId);
tscan.setAssortId(tpicture.getPicKind());
tscan.setScanPage(picName+".jpg");
tscan.setUpDate(new Date());
if (savePicFlag&&rotateFlag){
scanAssort.setCreater("auto2");
tscan.setUpState(200);
}else if (savePicFlag){
scanAssort.setCreater("auto3");
tscan.setUpState(102);
//需要记录创建人为auto3表示同步失败的文件
}else {
scanAssort.setCreater("auto4");
tscan.setUpState(404);
}
tscanList.add(tscan);
if (!savePicFlag){
break;
}
scanAssortList.add(scanAssort);
sort+=1;
}
return scanAssortList;
return tscanList;
}
private BasicSelectDto getBaiscSelectDto(SyncFileDto syncFileDto) {
List<String> inpatientNoList = Arrays.asList(syncFileDto.getInpatientNo().split(","));
BasicSelectDto basicSelectDto = new BasicSelectDto();
basicSelectDto.setStartDate(syncFileDto.getStartDate());
basicSelectDto.setEndDate(syncFileDto.getEndDate());
basicSelectDto.setInpatientNoList(inpatientNoList);
return basicSelectDto;
}
}

@ -22,7 +22,7 @@ spring:
name: @artifactId@
datasource:
dynamic:
primary: mysql #设置默认的数据源默认值为mysql
primary: sqlserver2 #设置默认的数据源默认值为mysql
strict: false #是否弃用严格模式,如果启用在味匹配到指定数据源时抛出异常
datasource:
#公司病案的文件服务数据库
@ -51,9 +51,9 @@ spring:
#联众数据库
sqlserver:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: 17931
url: jdbc:sqlserver://192.168.8.74:1433;DatabaseName=u_medrecord
username: JSuser
password: 123456
url: jdbc:sqlserver://172.18.0.227:1433;DatabaseName=u_medrecord
# 初始化配置
initial-size: 3
# 最小连接数
@ -71,24 +71,46 @@ spring:
test-on-return: false
validation-query: select 1
#省厅数据库
sqlserver1:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: 17931
url: jdbc:sqlserver://192.168.8.74:1433;DatabaseName=u_medrecord
# 初始化配置
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
sqlserver1:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: JSuser
password: 123456
url: jdbc:sqlserver://172.18.0.227:1433;DatabaseName=u_medrecord
# 初始化配置
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
#联众数据库
sqlserver2:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: JSuser
password: 123456
url: jdbc:sqlserver://172.18.0.227:1433;DatabaseName=etyyrecord
# 初始化配置
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

@ -11,7 +11,26 @@
RotateDegree
FROM
T_picture
where cuid = #{cuid}
where FileId = #{cuid}
</select>
<select id="getBasicInfoList" resultType="com.docus.demo.entity.sqlserver2.BasicInfo">
SELECT
tp.patient_id as patientId,
tp.admiss_times as admissTimes,
tp.inpatient_no as inpatientNo,
tp.dis_date as disDate,
tci.pat_path as patPath,
tci.id as id,
tpt.hostReason
FROM t_card_info tci
INNER JOIN 未采集101份 tp
ON tci.patno = tp.inpatient_no
AND tci.patnum = tp.admiss_times
INNER JOIN T_picture_transfer tpt on tpt.FileId = tci.id
</select>
</mapper>

@ -3,6 +3,28 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.demo.mapper.sqlserver2.TscanMapper">
<insert id="insertScanList">
insert into t_scan_assort
(patient_id,assort_id,scan_page,source,is_del,up_date,up_state)
values
<foreach collection="list" item="item" separator=",">
(#{item.patientId},#{item.assortId},#{item.scanPage},1,0,#{item.upDate},#{item.upState})
</foreach>
</insert>
<select id="getOldScanListByPid" resultType="com.docus.demo.entity.sqlserver2.Tscan">
SELECT
patient_id as patientId,
assort_id as assortId,
scan_page as scanPage,
up_state as upState
FROM
t_scan_assort
WHERE patient_id = #{id}
</select>
</mapper>

@ -1,94 +0,0 @@
#version:1.3
server:
port: 9511
# http
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
call-setters-on-nulls: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
field-strategy: NOT_EMPTY
db-type: MYSQL
spring:
resources:
static-locations: classpath:/,file:./lib/
profiles:
active: dev
application:
name: jp2demo
datasource:
dynamic:
primary: mysql #设置默认的数据源默认值为mysql
strict: false #是否弃用严格模式,如果启用在味匹配到指定数据源时抛出异常
datasource:
#公司病案的文件服务数据库
mysql:
url: jdbc:log4jdbc:mysql://db.docus.cn:3306/docus_archivefile?autoReconnect=true&allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: docus
password: docus702
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
type: com.alibaba.druid.pool.DruidDataSource
# 初始化配置
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
#联众数据库
sqlserver:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: 17931
url: jdbc:sqlserver://192.168.8.74:1433;DatabaseName=u_medrecord
# 初始化配置
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
#省厅数据库
sqlserver1:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: sa
password: 17931
url: jdbc:sqlserver://192.168.8.74:1433;DatabaseName=u_medrecord
# 初始化配置
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

@ -1,2 +0,0 @@
# If you use SLF4J. First, you need to tell log4jdbc-log4j2 that you want to use the SLF4J logger
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

@ -1,9 +0,0 @@
<?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.mysql.ArchiveFileMapper">
</mapper>

@ -1,42 +0,0 @@
<?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.mysql.BasicMapper">
<select id="getBasicVoList" resultType="com.docus.demo.vo.BasicVo">
SELECT
patient_id as patient_id,
admiss_times AS admissTimes,
inpatient_no AS inpatientNo,
dis_date AS disDate,
b_column5 as bColumn5
FROM docus_medicalrecord.t_basic
<where>
b_column5 is not null
AND b_column8 = 1
<!-- <if test="dto.inpatientNoList !=null and dto.inpatientNoList.size() != 0 ">-->
<!-- AND inpatient_no in-->
<!-- <foreach collection="dto.inpatientNoList" item="inpatientNo" separator="," open="(" close=")">-->
<!-- #{inpatientNo}-->
<!-- </foreach>-->
<!-- </if>-->
<if test="dto.startDate !=null and dto.startDate != ''">
AND dis_date &gt;=#{dto.startDate}
</if>
<if test="dto.startDate !=null and dto.startDate != ''">
AND dis_date &lt;= #{dto.endDate}
</if>
</where>
limit #{pageStart} ,#{pageEnd}
</select>
</mapper>

@ -1,46 +0,0 @@
<?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.mysql.ScanAssortMapper">
<insert id="insertBatch">
insert into docus_archivefile.t_scan_assort
(id,patient_id,assort_id,file_title,image_path,scan_page,file_source,file_storage_type,file_pages,creater,create_time,sort)
values
<foreach collection="list" item="item" separator=",">
(#{item.id},#{item.patientId},#{item.assortId},#{item.fileTitle},#{item.imagePath},#{item.scanPage},#{item.fileSource},#{item.fileStorageType},#{item.filePages},#{item.creater},#{item.createTime},#{item.sort})
</foreach>
</insert>
<insert id="insertOrUpdateBatch">
insert into docus_archivefile.t_scan_assort
(id,patient_id,assort_id,file_title,image_path,scan_page,file_source,file_storage_type,file_pages,creater,create_time,sort)
values
<foreach collection="list" item="item" index="index"
separator=",">
(#{item.id},#{item.patientId},#{item.assortId},#{item.fileTitle},#{item.imagePath},#{item.scanPage},#{item.fileSource},#{item.fileStorageType},#{item.filePages},#{item.creater},#{item.createTime},#{item.sort})
</foreach>
ON DUPLICATE KEY UPDATE file_pages = VALUES(file_pages), update_time = NOW(),sort = VALUES(sort);
</insert>
<select id="getListByPid" resultType="com.docus.demo.entity.ScanAssort">
SELECT id,
patient_id,
assort_id,
file_title,
image_path,
scan_page,
file_source,
file_storage_type,
file_pages,
creater,
create_time,
sort
FROM docus_archivefile.t_scan_assort
WHERE patient_id = #{pid}
</select>
</mapper>

@ -1,17 +0,0 @@
<?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.sqlserver.PictureMapper">
<select id="getPictureInfoByCid" resultType="com.docus.demo.entity.TPicture">
SELECT
PicName,
PicKind,
RotateDegree
FROM
T_picture
where cuid = #{cuid}
</select>
</mapper>

@ -1,32 +0,0 @@
<?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.sqlserver1.PaintVisitMapper">
<select id="getTpatientVisitList" resultType="com.docus.demo.entity.sqlserver1.Tpatientvisit">
SELECT * FROM Tpatientvisit
<where>
<if test="dto.inpatientNoList !=null and dto.inpatientNoList.size() != 0 ">
AND fprn in
<foreach collection="dto.inpatientNoList" item="inpatientNo" separator="," open="(" close=")">
#{inpatientNo}
</foreach>
</if>
<if test="dto.startDate !=null and dto.startDate != ''">
AND fcydate &gt;=#{dto.startDate}
</if>
<if test="dto.startDate !=null and dto.startDate != ''">
AND fcydate &lt;= #{dto.endDate}
</if>
</where>
</select>
</mapper>

@ -1,9 +0,0 @@
<?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.sqlserver1.TdiagnoseMapper">
</mapper>

@ -1,9 +0,0 @@
<?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.sqlserver1.TopreationMapper">
</mapper>

@ -1,8 +0,0 @@
<?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.sqlserver2.TscanMapper">
</mapper>
Loading…
Cancel
Save