市一 图片处理 数据处理

main
zhanglb 2 years ago
parent f8cc793899
commit 4cadba5a18

@ -29,6 +29,14 @@
<!-- </dependency>-->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.27</version>
</dependency>
<dependency>
<groupId>com.twelvemonkeys.imageio</groupId>
<artifactId>imageio-tiff</artifactId>
@ -36,9 +44,9 @@
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc6</artifactId>
<version>6.4.0</version>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>

@ -6,7 +6,9 @@ import com.docus.demo.dto.SyncFileDto;
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.utils.ImageUtils;
import com.docus.demo.utils.PDFFileUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@ -23,6 +25,8 @@ public class SyncBasicDataController {
private ISyncBasicDataService syncBasicDataService;
@Autowired
private ISyncBasicFileService syncBasicFileService;
@Autowired
private IWebService webService;
@ApiOperation("省厅-同步基础数据")
@PostMapping("/syncBasicData")
@ -30,6 +34,12 @@ public class SyncBasicDataController {
return syncBasicDataService.syncBasicData(syncBasicDataDto);
}
@ApiOperation("同步检验图片数据")
@PostMapping("/syncInspection")
public CommonResult<?> syncInspection(@RequestBody SyncBasicDataDto syncBasicDataDto){
return webService.syncInspection(syncBasicDataDto);
}
@ApiOperation("联众-同步基础数据")
@PostMapping("/syncLzBasicData")
public CommonResult<?> syncLzBasicData(@RequestBody SyncBasicDataDto syncBasicDataDto){

@ -2,6 +2,8 @@ package com.docus.demo.dto;
import lombok.Data;
import java.util.List;
@Data
public class SyncBasicDataDto {
@ -9,5 +11,7 @@ public class SyncBasicDataDto {
private String endDate;
private List<String> inpatientNoList;
private int limit;
}

@ -0,0 +1,33 @@
package com.docus.demo.entity;
import lombok.Data;
import java.util.List;
@Data
public class PatientListResult {
private String ResultCode;
private String ResultContent;
private Result Result;
@Data
public class Result{
private List<ReportInfo> PidReportMain;
@Data
public class ReportInfo{
private String RepId;
private String PidComName;
private String PidInNo ;
private String PidAddmissTimes;
}
}
}

@ -0,0 +1,29 @@
package com.docus.demo.entity;
import lombok.Data;
@Data
public class PatientReportResult {
private String ResultCode;
private String ResultContent;
private Result Result;
@Data
public class Result{
private Patient Patient;
@Data
public class Patient{
private String RepId;
private String PatientReport;
}
}
}

@ -141,4 +141,9 @@ public class Tbasic {
@ApiModelProperty(value = "档案文件存储类型1pdf默认2图片")
private Integer archiveFileStorageType;
@ApiModelProperty(value = "扫描上传状态,0:未扫描、1:待质检、2:已退回、3:系统通过、4:人工通过5:已返工")
private Integer scanUploadState;
private Date birthday;
}

@ -0,0 +1,13 @@
package com.docus.demo.entity;
import lombok.Data;
import java.util.Date;
@Data
public class TbasicSub {
private String patientId;
private Date birthday;
}

@ -33,9 +33,11 @@ public class Tpatientvisit implements Serializable {
private String fname;
@ApiModelProperty(value = "性别")
@TableField("FSEX")
private String fsex;
@ApiModelProperty(value = "性别")
private String fsexbh;
@ApiModelProperty(value = "身份证号")
@TableField("FIDCARD")
private String fidcard;
@ -94,5 +96,8 @@ public class Tpatientvisit implements Serializable {
@ApiModelProperty(value = "是否死亡")
@TableField("fbody")
private Integer fbody;
private String fbody;
@ApiModelProperty(value = "出生日期")
private Date Fbirthday;
}

@ -0,0 +1,10 @@
package com.docus.demo.facade;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.CommonResult;
public interface IWebService {
CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto);
}

@ -4,6 +4,7 @@ package com.docus.demo.mapper.mysql;
import com.docus.demo.dto.BasicSelectDto;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.Tbasic;
import com.docus.demo.entity.TbasicSub;
import com.docus.demo.vo.BasicVo;
import org.apache.ibatis.annotations.Param;
@ -21,4 +22,10 @@ public interface BasicMapper {
void insertOrUpdateByid(List<Tbasic> tbasicList);
List<Tbasic> getOldBasicList(@Param("list") List<String> fprnList, @Param("dto") SyncBasicDataDto syncBasicDataDto);
void updateScanStatus(@Param("pid")String pid);
void insertOrUpdateTbasicSub(@Param("list") List<TbasicSub> tbasicSubList);
}

@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.entity.Tbasic;
import com.docus.demo.entity.TbasicSub;
import com.docus.demo.entity.sqlserver.CardInfo;
import com.docus.demo.entity.sqlserver1.Tdiagnose;
import com.docus.demo.entity.sqlserver1.Toperation;
@ -19,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
@ -37,21 +39,28 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
private TcardMapper tcardMapper;
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
private final ExecutorService executor = Executors.newFixedThreadPool(7);
// private final ExecutorService executor = Executors.newFixedThreadPool(7);
@Override
public CommonResult<?> syncBasicData(SyncBasicDataDto syncBasicDataDto) {
//页码
int current;
LocalDate startDate = LocalDate.parse(syncBasicDataDto.getStartDate());
LocalDate endDate = LocalDate.parse(syncBasicDataDto.getEndDate());
//每页1000条数据
int limit = syncBasicDataDto.getLimit();
List<Tpatientvisit> tpatientvisitList;
for (current = 1; ; current++) {
for (int current = 1; ; current++) {
syncBasicDataDto.setStartDate(startDate+" 00:00:00");
syncBasicDataDto.setEndDate(startDate.plusDays(1)+" 23:59:59");
log.info(syncBasicDataDto.getStartDate()+" --- " +syncBasicDataDto.getEndDate());
//根据出院时间查询省厅数据
tpatientvisitList = paintVisitMapper.getTpatientVisitList((current - 1) * limit, current*limit, syncBasicDataDto);
if (null == tpatientvisitList || tpatientvisitList.size() == 0) {
break;
}
tpatientvisitList = paintVisitMapper.getTpatientVisitList(0, 0, syncBasicDataDto);
log.info("开始同步"+tpatientvisitList.size());
// tpatientvisitList = paintVisitMapper.getTpatientVisitList((current - 1) * limit, current*limit, syncBasicDataDto);
List<String> fprnList = tpatientvisitList.stream().map(Tpatientvisit::getFprn).collect(Collectors.toList());
//诊断数据
List<Tdiagnose> tdiagnoses = paintVisitMapper.getTdiagnose(fprnList);
@ -59,12 +68,31 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
//数据map转换
List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList, syncBasicDataDto);
List<Tbasic> tbasicList = this.getTbasicList(oldBasicList, tpatientvisitList, tdiagnoses, toperations);
List<TbasicSub> tbasicSubList = this.getTbasicSubList(tbasicList);
//数据入库
basicMapper.insertOrUpdateByid(tbasicList);
basicMapper.insertOrUpdateTbasicSub(tbasicSubList);
log.info("数据库入库"+tbasicList.size() +"子表"+tbasicSubList.size());
if (startDate.compareTo(endDate)>0) {
break;
}
startDate = startDate.plusDays(10);
}
return CommonResult.success("同步成功");
}
private List<TbasicSub> getTbasicSubList(List<Tbasic> tbasicList) {
return tbasicList.stream().map(m->{
TbasicSub tbasicSub = new TbasicSub();
tbasicSub.setBirthday(m.getBirthday());
tbasicSub.setPatientId(m.getPatientId());
return tbasicSub;
}).collect(Collectors.toList());
}
private List<Tbasic> getTbasicList(List<Tbasic> oldBasicList, List<Tpatientvisit> tpatientvisitList, List<Tdiagnose> tdiagnoses, List<Toperation> toperations) {
@ -79,6 +107,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
.findFirst()
.orElse(null);
String fprn = m.getFprn();
Integer ftimes = m.getFtimes();
@ -107,8 +136,16 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
tbasic.setAdmissTimes(m.getFtimes());
tbasic.setInpatientNo(m.getFprn());
tbasic.setName(m.getFname());
tbasic.setSex(m.getFsex());
tbasic.setAge(0);
tbasic.setSex(m.getFsexbh());
tbasic.setSexName(m.getFsex());
if (m.getFage().contains("Y")){
tbasic.setAge(Integer.valueOf(m.getFage().split("Y")[1]));
}else if (m.getFage().contains("M")){
tbasic.setAgeMonth(Integer.valueOf(m.getFage().split("M")[1]));
}else if (m.getFage().contains("D")){
tbasic.setAgeDay(Integer.valueOf(m.getFage().split("D")[1]));
}
tbasic.setIdCard(m.getFidcard());
tbasic.setTelphone("");
tbasic.setAdmissDate(m.getFrydate());
@ -120,6 +157,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
tbasic.setAdmissDays(m.getFdays());
tbasic.setAttending(m.getFzzdoctbh());
tbasic.setAttendingName(m.getFzzdoct());
tbasic.setBirthday(m.getFbirthday());
if (tdiagnose != null) {
tbasic.setMainDiagCode(tdiagnose.getFicdm());
tbasic.setMainDiagName(tdiagnose.getFjbname());
@ -128,10 +166,12 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
tbasic.setMainOperateCode(toperation.getFopcode());
tbasic.setMainOperateName(toperation.getFop());
}
tbasic.setIsDead(m.getFbody());
// tbasic.setIsDead(m.getFbody());
tbasic.setCreateTime(new Date());
tbasic.setSexName(m.getFsex());
tbasic.setArchiveFileStorageType(2);
tbasic.setScanUploadState(0);
tbasic.setIsArchive(1);
return tbasic;
}).collect(Collectors.toList());
@ -141,7 +181,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
@Override
public CommonResult<?> syncLzBasicData(SyncBasicDataDto syncBasicDataDto) {
executor.execute(()->{
// executor.execute(()->{
//页码
int current;
//每页1000条数据
@ -172,7 +212,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
}
}
log.info(syncBasicDataDto.getStartDate() + " " + syncBasicDataDto.getEndDate() + "结束同步" );
});
// });
return CommonResult.success("同步成功");

@ -43,7 +43,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private final ExecutorService executor = Executors.newFixedThreadPool(7);
private final ExecutorService executor = Executors.newFixedThreadPool(5);
@Override
@ -63,8 +63,8 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
if (null == basicVoList || basicVoList.size() == 0) {
break;
}
List<ScanAssort> updateOrInsertList = new ArrayList<>(5000);
for (BasicVo basicVo : basicVoList) {
List<ScanAssort> updateOrInsertList = new ArrayList<>(1000);
log.info("开始同步"+basicVo.getInpatientNo());
List<ScanAssort> scanAssortList = this.doSyncFile(basicVo);
//2.5数据入库
@ -74,15 +74,19 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
List<ScanAssort> addScanAssortList = this.handleUpdateOrInsert(oldScanAssort,scanAssortList);
updateOrInsertList.addAll(addScanAssortList);
} else {
log.info(basicVo.getPatientId() + " canFindImage ");
log.info(basicVo.getInpatientNo() + " canFindImage ");
}
log.info("结束同步"+basicVo.getInpatientNo());
if (ObjectUtil.isNotEmpty(updateOrInsertList)){
scanAssortMapper.insertOrUpdateBatch(updateOrInsertList);
basicMapper.updateScanStatus(basicVo.getPatientId());
}
log.info("结束同步"+basicVo.getInpatientNo() +" size " +updateOrInsertList.size());
}
scanAssortMapper.insertOrUpdateBatch(updateOrInsertList);
}
}catch (Exception e){
log.info(e.getMessage());
}
},executor);
return CommonResult.success("同步成功");
@ -120,11 +124,8 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
inpatientNo.insert(0, "0");
}
String rootDir = "Z:\\"
+ cyYear + File.separator
+ cyYear + cyMonth + File.separator
+ cyYear + cyMonth + cyDay + File.separator
+ inpatientNo + cyYear + cyMonth + cyDay + File.separator;
String rootDir = getRootDir(basicVo,cyYear,cyMonth,cyDay);
String outDir = "F:\\lianzhong" + File.separator
+ cyYear + File.separator
+ cyMonth + File.separator
@ -149,7 +150,6 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
log.info(basicVo.getInpatientNo()+"文件未找到"+inPutFile);
}
boolean savePicFlag ;
boolean rotateFlag ;
// 2.2jp2转化jpg 图片通过文件流写到挂在的盘符
savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile, tpicture.getRotateDegree());
if (!savePicFlag){
@ -172,7 +172,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
scanAssort.setFilePages(1);
if (savePicFlag){
scanAssort.setCreater("auto2");
scanAssort.setCreater("auto1");
}else {
scanAssort.setCreater("auto4");
}

@ -0,0 +1,135 @@
package com.docus.demo.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.XmlUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.webservice.SoapClient;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.*;
import com.docus.demo.facade.IWebService;
import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.mysql.ScanAssortMapper;
import com.docus.demo.utils.PDFFileUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Slf4j
@Service
public class WebServiceImpl implements IWebService {
@Autowired
private BasicMapper basicMapper;
@Autowired
private ScanAssortMapper scanAssortMapper;
@Override
public CommonResult<?> syncInspection(SyncBasicDataDto syncBasicDataDto) {
//查询基础数据
List<Tbasic> tbasicList =basicMapper.getOldBasicList(null,syncBasicDataDto);
for (Tbasic tbasic : tbasicList){
String pNo = tbasic.getInpatientNo();
String times = tbasic.getAdmissTimes().toString();
String StartDate = tbasic.getAdmissDate().toString();
String EndDate = tbasic.getDisDate().toString();
String patientId = tbasic.getPatientId();
//获取所有的报告列表
PatientListResult patientListResult= getCommonResult(pNo, times, StartDate, EndDate);
if (!patientListResult.getResultCode().equals("0")){
log.info(pNo+" "+times+"调用失败");
}
String root = "D:\\Users\\admin\\Desktop";
List<ScanAssort> scanAssortList = new ArrayList<>();
patientListResult.getResult().getPidReportMain().forEach(item->{
//时间段内如果查询到住院次数相同的数据 则数据入库
if (item.getPidAddmissTimes().equals(times)&&item.getPidInNo().equals(pNo)){
PatientReportResult patientReportResult = this.getReportResult(item.getRepId());
String base64Result = patientReportResult.getResult().getPatient().getPatientReport();
List<ScanAssort> addScanList = PDFFileUtils.base64StringToPDF(base64Result,root,item.getPidComName());
addScanList.forEach(scanAssort->{
scanAssort.setPatientId(patientId);
scanAssort.setAssortId("");
});
}
});
//数据写入到3.0
scanAssortMapper.insertOrUpdateBatch(scanAssortList);
}
return CommonResult.success("同步检验数据成功");
}
private PatientReportResult getReportResult(String repID) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("RepID", repID);
paramMap.put("CustomReportSuffix", "");
String paramStr = "<![CDATA["+XmlUtil.mapToXmlStr(paramMap,"Request")+"]]>";
//拼接外层入参
Map<String,Object> params = new HashMap<>();
params.put("MethodName", "GetPatientReport");
params.put("XMLData",paramStr);
Map<String, Object> result = this.request(params);
//转对象List stream获取报告id
return BeanUtil.fillBeanWithMap(result, new PatientReportResult(), false);
}
private PatientListResult getCommonResult(String pNo, String times, String StartDate, String EndDate) {
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("PidInNo", pNo);
paramMap.put("PidAddmissTimes", times);
paramMap.put("StartDate", StartDate);
paramMap.put("EndDate", EndDate);
String paramStr = "<![CDATA["+XmlUtil.mapToXmlStr(paramMap,"Request")+"]]>";
//拼接外层入参
Map<String,Object> params = new HashMap<>();
params.put("MethodName", "GetPatientList");
params.put("XMLData",paramStr);
Map<String, Object> result = this.request(params);
//转对象List stream获取报告id
return BeanUtil.fillBeanWithMap(result, new PatientListResult(), false);
}
private Map<String, Object> request(Map<String,Object> params){
String result = "";
try{
String url = "http://192.168.8.157:8095/DCLService.asmx";
SoapClient client = SoapClient.create(url);
client.header("SOAPAction","http://dcl.org/DCLInterface");
// 设置要请求的方法此接口方法前缀为web传入对应的命名空间
client.setMethod("dcl:DCLInterface", "http://dcl.org/");
client.setParams(params,true);
// log.info("[请求ID:{}]测试方法字符串接口:{},入参:{}",requestId,url,client.getMsgStr(true));
// 发送请求参数true表示返回一个格式化后的XML内容
// 返回内容为XML字符串可以配合XmlUtil解析这个响应
result = client.send(false);
log.info(result);
// log.info("[请求ID:{}]测试方法字符串出参:{}",requestId,result);
if(result.contains("<DCLInterfaceResult>")){
result = result.substring(result.indexOf("<DCLInterfaceResult>")+20,result.indexOf("</DCLInterfaceResult>"));
}else{
result = result.substring(result.indexOf("Result>")+7,result.indexOf("}</")+1);
}
return XmlUtil.xmlToMap(result);
}catch (Exception ex){
log.error("测试方法字符串出现异常,入参:{},出参:{},{}",params,result,ex);
throw ex;
}
}
}

@ -37,11 +37,6 @@ public class ImageUtils {
return true;
}
// public static void main(String[] args) {
// ImageUtils imageUtils = new ImageUtils();
// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\QSL0015.jp2","C:\\Users\\Administrator\\Desktop\\QSL0015.jpg");
// }
private boolean parseCommandLine(String[] args, DemoData demoData) {
try {
@ -234,11 +229,8 @@ public class ImageUtils {
}
// public static void main(String[] args) {
//// ImageUtils imageUtils = new ImageUtils();
//// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\HNSET0001.tif","C:\\Users\\Administrator\\Desktop\\HNSET0001.jpg",90);
//
//
//
// }
public static void main(String[] args) {
ImageUtils imageUtils = new ImageUtils();
imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\QSL0001.tif","C:\\Users\\Administrator\\Desktop\\QSL0001.jpg",90);
}
}

@ -0,0 +1,67 @@
package com.docus.demo.utils;
import com.docus.demo.entity.ScanAssort;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import sun.misc.BASE64Decoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class PDFFileUtils {
/**
* pdf
* @param base64Content
* @param rootPath
* @param fileTitle
*/
public static List<ScanAssort> base64StringToPDF(String base64Content, String rootPath, String fileTitle) {
BASE64Decoder decoder = new BASE64Decoder();
List<ScanAssort> addScanList = new ArrayList<>();
try {
//1.base64编码内容转换为字节数组
byte[] bytes = decoder.decodeBuffer(base64Content);
//2.生成jpg图片
PDDocument document = PDDocument.load(new ByteArrayInputStream(bytes));
PDFRenderer renderer = new PDFRenderer(document);
// Iterate over each page and save it as an image
for (int pageIndex = 0; pageIndex < document.getNumberOfPages(); pageIndex++) {
// Render the page as an image
BufferedImage image = renderer.renderImageWithDPI(pageIndex, 300); // Set DPI value as needed
// Save the image to a file
String outputFilePath = rootPath +File.separator+ fileTitle +pageIndex+ ".jpg"; // Output file path
ImageIO.write(image, "jpg", new File(outputFilePath));
//todo 拼装数据
ScanAssort scanAssort = new ScanAssort();
scanAssort.setFileTitle(fileTitle +pageIndex);
scanAssort.setImagePath(rootPath);
scanAssort.setFileSource(1);
scanAssort.setFileStorageType(1);
scanAssort.setFilePages(1);
scanAssort.setCreater("检验");
scanAssort.setCreateTime(new Date());
scanAssort.setSort(pageIndex);
addScanList.add(scanAssort);
}
// Close the PDF document
document.close();
} catch (Exception e) {
e.printStackTrace();
}
return addScanList;
}
}

@ -70,25 +70,25 @@ spring:
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
#省厅数据库
sqlserver1:
driver-class-name: net.sourceforge.jtds.jdbc.Driver
username: rhin
password: rhin
url: jdbc:jtds:sqlserver://192.168.8.250:1433;DatabaseName=bagl_java
# 初始化配置
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

@ -4,14 +4,14 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.demo.mapper.mysql.BasicMapper">
<insert id="insertOrUpdateByid">
insert into docus_medicalrecord.t_basic
(patient_id,admiss_times,inpatient_no,admiss_id,
name,sex,age,id_card,
admiss_date,admiss_dept,admiss_dept_name,dis_date,
dis_dept,dis_dept_name,main_diag_code,main_diag_name,
main_operate_code,main_operate_name,create_time,is_archive,
file_source,b_column5,b_column8,archive_file_storage_type
file_source,b_column5,b_column8,archive_file_storage_type,
scan_upload_state
)
values
<foreach collection="list" item="item" separator=",">
@ -20,10 +20,33 @@
#{item.admissDate},#{item.admissDept},#{item.admissDeptName},#{item.disDate},
#{item.disDept},#{item.disDeptName},#{item.mainDiagCode},#{item.mainDiagName},
#{item.mainOperateCode},#{item.mainOperateName},#{item.createTime},#{item.isArchive},
#{item.fileSource},#{item.bColumn5},#{item.bColumn8},#{item.archiveFileStorageType}
#{item.fileSource},#{item.bColumn5},#{item.bColumn8},#{item.archiveFileStorageType},
#{item.scanUploadState}
)
</foreach>
ON DUPLICATE KEY UPDATE id_card = VALUES(id_card)
,admiss_dept = VALUES(admiss_dept)
,admiss_dept_name = VALUES(admiss_dept_name)
,dis_dept = VALUES(dis_dept)
,dis_dept_name = VALUES(dis_dept_name)
,is_archive = VALUES(is_archive);
</insert>
<insert id="insertOrUpdateTbasicSub">
insert into docus_medicalrecord.t_basic_sub
(patient_id,birthday)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.patientId},#{item.birthday})
</foreach>
ON DUPLICATE KEY UPDATE birthday = VALUES(birthday);
</insert>
<update id="updateScanStatus">
update docus_medicalrecord.t_basic set scan_source = 1
WHERE patient_id = #{pid}
</update>
<select id="getBasicVoList" resultType="com.docus.demo.vo.BasicVo">
@ -36,7 +59,14 @@
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>
@ -51,16 +81,23 @@
</select>
<select id="getOldBasicList" resultType="com.docus.demo.entity.Tbasic">
SELECT
patient_id,
admiss_times,
inpatient_no,
admiss_date,
name,
dis_date
FROM
docus_medicalrecord.t_basic
where inpatient_no in
<foreach collection="list" item="inpatientNo" separator="," open="(" close=")">
#{inpatientNo}
</foreach>
where
1=1
<if test="list !=null and list.size() != 0 ">
AND inpatient_no in
<foreach collection="list" item="inpatientNo" separator="," open="(" close=")">
#{inpatientNo}
</foreach>
</if>
<if test="dto.startDate !=null and dto.startDate != ''">
AND dis_date &gt;=#{dto.startDate}
</if>
@ -69,4 +106,5 @@
</if>
</select>
</mapper>

@ -23,7 +23,7 @@
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);
ON DUPLICATE KEY UPDATE file_pages = VALUES(file_pages), update_time = NOW() ,sort = VALUES(sort) ,creater = VALUES(creater) ;
</insert>
<select id="getListByPid" resultType="com.docus.demo.entity.ScanAssort">

@ -6,9 +6,8 @@
<select id="getTpatientVisitList" resultType="com.docus.demo.entity.sqlserver1.Tpatientvisit">
SELECT *
from (
SELECT row_number() over(order by fid ) as num , Tpatientvisit.* FROM Tpatientvisit
SELECT * FROM Tpatientvisit
<where>
<if test="dto.inpatientNoList !=null and dto.inpatientNoList.size() != 0 ">
@ -27,9 +26,7 @@
</if>
</where>
)as t2
where t2.num &gt;= #{pageStart}
and t2.num &lt;= #{pageEnd}
</select>
<select id="getToperation" resultType="com.docus.demo.entity.sqlserver1.Toperation">

Loading…
Cancel
Save