市一 图片处理 数据处理

main
zhanglb 2 years ago
parent aec807a51d
commit f8cc793899

@ -43,25 +43,6 @@ public class SyncBasicDataController {
} }
@ApiOperation("test")
@GetMapping("/test")
public CommonResult<?> test(){
ImageUtils.getInstance().savePic("C:\\Users\\Administrator\\Desktop\\QSL0015.jp2","C:\\Users\\Administrator\\Desktop\\QSL0015.jpg");
return CommonResult.success("测试成功");
}
@ApiOperation("rotateFile")
@GetMapping("/rotateFile")
public CommonResult<?> rotateFile(){
ImageUtils.getInstance().rotateFile("C:\\Users\\Administrator\\Desktop\\QSL0015.jpg","C:\\Users\\Administrator\\Desktop\\QSL0015.jpg",90);
return CommonResult.success("测试成功");
}
@ApiOperation("tifToJpg")
@GetMapping("/tifToJpg")
public CommonResult<?> tifToJpg(){
ImageUtils.getInstance().tifToJpg("C:\\Users\\Administrator\\Desktop\\1.tif","C:\\Users\\Administrator\\Desktop\\1.jpg");
return CommonResult.success("测试成功");
}
} }

@ -1,7 +1,6 @@
package com.docus.demo.mapper.mysql; package com.docus.demo.mapper.mysql;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.demo.dto.BasicSelectDto; import com.docus.demo.dto.BasicSelectDto;
import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.Tbasic; import com.docus.demo.entity.Tbasic;
@ -21,5 +20,5 @@ public interface BasicMapper {
void insertOrUpdateByid(List<Tbasic> tbasicList); void insertOrUpdateByid(List<Tbasic> tbasicList);
List<Tbasic> getOldBasicList(List<String> fprnList, SyncBasicDataDto syncBasicDataDto); List<Tbasic> getOldBasicList(@Param("list") List<String> fprnList, @Param("dto") SyncBasicDataDto syncBasicDataDto);
} }

@ -14,13 +14,18 @@ import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.sqlserver.TcardMapper; import com.docus.demo.mapper.sqlserver.TcardMapper;
import com.docus.demo.mapper.sqlserver1.PaintVisitMapper; import com.docus.demo.mapper.sqlserver1.PaintVisitMapper;
import com.docus.demo.utils.SnowflakeIdWorker; import com.docus.demo.utils.SnowflakeIdWorker;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j
@Service @Service
public class SyncBasicDataImpl implements ISyncBasicDataService { public class SyncBasicDataImpl implements ISyncBasicDataService {
@Autowired @Autowired
@ -31,6 +36,8 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
@Autowired @Autowired
private TcardMapper tcardMapper; private TcardMapper tcardMapper;
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
private final ExecutorService executor = Executors.newFixedThreadPool(7);
@Override @Override
public CommonResult<?> syncBasicData(SyncBasicDataDto syncBasicDataDto) { public CommonResult<?> syncBasicData(SyncBasicDataDto syncBasicDataDto) {
@ -41,7 +48,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
List<Tpatientvisit> tpatientvisitList; List<Tpatientvisit> tpatientvisitList;
for (current = 1; ; current++) { for (current = 1; ; current++) {
//根据出院时间查询省厅数据 //根据出院时间查询省厅数据
tpatientvisitList = paintVisitMapper.getTpatientVisitList((current-1)*limit, limit,syncBasicDataDto); tpatientvisitList = paintVisitMapper.getTpatientVisitList((current - 1) * limit, current*limit, syncBasicDataDto);
if (null == tpatientvisitList || tpatientvisitList.size() == 0) { if (null == tpatientvisitList || tpatientvisitList.size() == 0) {
break; break;
} }
@ -50,8 +57,8 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
List<Tdiagnose> tdiagnoses = paintVisitMapper.getTdiagnose(fprnList); List<Tdiagnose> tdiagnoses = paintVisitMapper.getTdiagnose(fprnList);
List<Toperation> toperations = paintVisitMapper.getToperation(fprnList); List<Toperation> toperations = paintVisitMapper.getToperation(fprnList);
//数据map转换 //数据map转换
List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList,syncBasicDataDto); List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList, syncBasicDataDto);
List<Tbasic> tbasicList = this.getTbasicList(oldBasicList,tpatientvisitList,tdiagnoses,toperations); List<Tbasic> tbasicList = this.getTbasicList(oldBasicList, tpatientvisitList, tdiagnoses, toperations);
//数据入库 //数据入库
basicMapper.insertOrUpdateByid(tbasicList); basicMapper.insertOrUpdateByid(tbasicList);
} }
@ -59,122 +66,139 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
} }
private List<Tbasic> getTbasicList(List<Tbasic> oldBasicList,List<Tpatientvisit> tpatientvisitList, List<Tdiagnose> tdiagnoses, List<Toperation> toperations) { private List<Tbasic> getTbasicList(List<Tbasic> oldBasicList, List<Tpatientvisit> tpatientvisitList, List<Tdiagnose> tdiagnoses, List<Toperation> toperations) {
return tpatientvisitList.stream() // 根据病案号 住院次数 名称 做去重判断
.filter(f->{
return tpatientvisitList.stream().map(m -> {
Tbasic oldBasic = oldBasicList.stream() Tbasic oldBasic = oldBasicList.stream()
.filter(old->ObjectUtil.equal(f.getFprn(),old.getInpatientNo()) .filter(old -> ObjectUtil.equal(m.getFprn(), old.getInpatientNo())
&&ObjectUtil.equal(f.getFtimes(),old.getAdmissTimes()) && ObjectUtil.equal(m.getFtimes(), old.getAdmissTimes())
&& ObjectUtil.equal(m.getFname(), old.getName())
) )
.findFirst() .findFirst()
.orElse(null); .orElse(null);
return oldBasic ==null;
})
.map(m->{
String fprn = m.getFprn();
Integer ftimes = m.getFtimes();
Tdiagnose tdiagnose = tdiagnoses.stream()
.filter(f-> ObjectUtil.equal(f.getFprn(),fprn)
&&ObjectUtil.equal(f.getFtimes(),ftimes)
&&ObjectUtil.equal(f.getFzdlx(),"1")
)
.findFirst()
.orElse(null);
Toperation toperation = toperations.stream() String fprn = m.getFprn();
.filter(f-> ObjectUtil.equal(f.getFprn(),fprn) Integer ftimes = m.getFtimes();
&&ObjectUtil.equal(f.getFtimes(),ftimes)
&&ObjectUtil.equal(f.getFpx(),1L)
)
.findFirst()
.orElse(null);
Tbasic tbasic = new Tbasic(); Tdiagnose tdiagnose = tdiagnoses.stream()
tbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId())); .filter(f -> ObjectUtil.equal(f.getFprn(), fprn)
tbasic.setAdmissTimes(m.getFtimes()); && ObjectUtil.equal(f.getFtimes(), ftimes)
tbasic.setInpatientNo(m.getFprn()); && ObjectUtil.equal(f.getFzdlx(), "1")
tbasic.setName(m.getFname()); )
tbasic.setSex(m.getFsex()); .findFirst()
tbasic.setAge(0); .orElse(null);
tbasic.setIdCard(m.getFidcard());
tbasic.setTelphone("");
tbasic.setAdmissDate(m.getFrydate());
tbasic.setAdmissDept(m.getFrytykh());
tbasic.setAdmissDeptName(m.getFrydept());
tbasic.setDisDate(m.getFcydate());
tbasic.setDisDept(m.getFcytykh());
tbasic.setDisDeptName(m.getFcydept());
tbasic.setAdmissDays(m.getFdays());
tbasic.setAttending(m.getFzzdoctbh());
tbasic.setAttendingName(m.getFzzdoct());
if (tdiagnose!=null){
tbasic.setMainDiagCode(tdiagnose.getFicdm());
tbasic.setMainDiagName(tdiagnose.getFjbname());
}
if(toperation!=null){
tbasic.setMainOperateCode(toperation.getFopcode());
tbasic.setMainOperateName(toperation.getFop());
}
tbasic.setIsDead(m.getFbody());
tbasic.setCreateTime(new Date());
tbasic.setSexName(m.getFsex());
tbasic.setArchiveFileStorageType(2);
return tbasic; Toperation toperation = toperations.stream()
}).collect(Collectors.toList()); .filter(f -> ObjectUtil.equal(f.getFprn(), fprn)
&& ObjectUtil.equal(f.getFtimes(), ftimes)
&& ObjectUtil.equal(f.getFpx(), 1L)
)
.findFirst()
.orElse(null);
Tbasic tbasic = new Tbasic();
if (oldBasic!=null){
tbasic.setPatientId(oldBasic.getPatientId());
}else {
tbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId()));
}
tbasic.setAdmissTimes(m.getFtimes());
tbasic.setInpatientNo(m.getFprn());
tbasic.setName(m.getFname());
tbasic.setSex(m.getFsex());
tbasic.setAge(0);
tbasic.setIdCard(m.getFidcard());
tbasic.setTelphone("");
tbasic.setAdmissDate(m.getFrydate());
tbasic.setAdmissDept(m.getFrytykh());
tbasic.setAdmissDeptName(m.getFrydept());
tbasic.setDisDate(m.getFcydate());
tbasic.setDisDept(m.getFcytykh());
tbasic.setDisDeptName(m.getFcydept());
tbasic.setAdmissDays(m.getFdays());
tbasic.setAttending(m.getFzzdoctbh());
tbasic.setAttendingName(m.getFzzdoct());
if (tdiagnose != null) {
tbasic.setMainDiagCode(tdiagnose.getFicdm());
tbasic.setMainDiagName(tdiagnose.getFjbname());
}
if (toperation != null) {
tbasic.setMainOperateCode(toperation.getFopcode());
tbasic.setMainOperateName(toperation.getFop());
}
tbasic.setIsDead(m.getFbody());
tbasic.setCreateTime(new Date());
tbasic.setSexName(m.getFsex());
tbasic.setArchiveFileStorageType(2);
return tbasic;
}).collect(Collectors.toList());
} }
@Override @Override
public CommonResult<?> syncLzBasicData(SyncBasicDataDto syncBasicDataDto) { public CommonResult<?> syncLzBasicData(SyncBasicDataDto syncBasicDataDto) {
//页码
int current; executor.execute(()->{
//每页1000条数据 //页码
int limit = syncBasicDataDto.getLimit(); int current;
List<CardInfo> cardInfoList; //每页1000条数据
for (current = 1; ; current++) { int limit = syncBasicDataDto.getLimit();
cardInfoList = tcardMapper.getCardInfo((current-1)*limit, limit,syncBasicDataDto); List<CardInfo> cardInfoList;
if (null == cardInfoList || cardInfoList.size() == 0) { for (current = 1; ; current++) {
break; cardInfoList = tcardMapper.getCardInfo((current - 1) * limit, current * limit, syncBasicDataDto);
} if (null == cardInfoList || cardInfoList.size() == 0) {
List<String> fprnList = cardInfoList.stream().map(CardInfo::getPatNo).collect(Collectors.toList()); break;
//数据map转换 }
List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList,syncBasicDataDto); log.info(syncBasicDataDto.getStartDate() + " " + syncBasicDataDto.getEndDate() + "开始同步" + cardInfoList.size());
List<Tbasic> tbasicList = this.getInsertTbasic(oldBasicList,cardInfoList); List<String> fprnList = cardInfoList.stream().map(CardInfo::getPatNo).collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(tbasicList)){ //数据map转换
//判断数据量 如果文件数据大于五百条 需要做拆分分批次插入 List<Tbasic> oldBasicList = basicMapper.getOldBasicList(fprnList, syncBasicDataDto);
int batchSize = 1000; log.info("获取到旧数据"+oldBasicList.size());
// 拆分列表 List<Tbasic> tbasicList = this.getInsertTbasic(oldBasicList, cardInfoList);
for (int i = 0; i < tbasicList.size(); i += batchSize) { if (ObjectUtil.isNotEmpty(tbasicList)) {
int endIndex = Math.min(i + batchSize, tbasicList.size()); //判断数据量 如果文件数据大于五百条 需要做拆分分批次插入
List<Tbasic> sublist = tbasicList.subList(i, endIndex); int batchSize = 1000;
//数据入库 // 拆分列表
basicMapper.insertOrUpdateByid(sublist); for (int i = 0; i < tbasicList.size(); i += batchSize) {
int endIndex = Math.min(i + batchSize, tbasicList.size());
List<Tbasic> sublist = tbasicList.subList(i, endIndex);
//数据入库
basicMapper.insertOrUpdateByid(sublist);
log.info("数据入库"+sublist.size());
}
} }
} }
} log.info(syncBasicDataDto.getStartDate() + " " + syncBasicDataDto.getEndDate() + "结束同步" );
});
return CommonResult.success("同步成功"); return CommonResult.success("同步成功");
} }
private List<Tbasic> getInsertTbasic(List<Tbasic> oldBasicList, List<CardInfo> cardInfoList) { private List<Tbasic> getInsertTbasic(List<Tbasic> oldBasicList, List<CardInfo> cardInfoList) {
return cardInfoList.stream().filter(f->{
List<CardInfo> cardInfos = cardInfoList.stream().filter(f -> {
//根据病案号 名称 住院次数 出院时间 去重
String pno = f.getPatNo(); String pno = f.getPatNo();
String name = f.getPatName(); String name = f.getPatName();
Integer pNum = f.getPatNum(); Integer pNum = f.getPatNum();
Date date = f.getOutDate();
Tbasic tbasic = oldBasicList.stream().filter(o-> Tbasic tbasic = oldBasicList.stream().filter(o ->
ObjectUtil.equal(o.getInpatientNo(),pno) ObjectUtil.equal(pno, o.getInpatientNo())
&&ObjectUtil.equal(name,o.getName()) && ObjectUtil.equal(name, o.getName())
&&ObjectUtil.equal(pNum,o.getAdmissTimes()) && ObjectUtil.equal(pNum, o.getAdmissTimes())
&&ObjectUtil.equal(date,o.getDisDate())) )
.findAny() .findAny()
.orElse(null); .orElse(null);
return tbasic==null;
}).map(m->{ return tbasic == null;
//根据病案号 名称 住院次数 出院时间 去重 }).collect(Collectors.toList());
List<Tbasic> tbasicList = cardInfos.stream().map(m -> {
Tbasic tbasic = new Tbasic(); Tbasic tbasic = new Tbasic();
tbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId())); tbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId()));
tbasic.setAdmissTimes(m.getPatNum()); tbasic.setAdmissTimes(m.getPatNum());
@ -194,8 +218,16 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
tbasic.setMainDiagCode(m.getIcdeCode11()); tbasic.setMainDiagCode(m.getIcdeCode11());
tbasic.setMainOperateName(m.getOperName1()); tbasic.setMainOperateName(m.getOperName1());
tbasic.setMainOperateCode(m.getOperIcpm1()); tbasic.setMainOperateCode(m.getOperIcpm1());
tbasic.setBColumn5(m.getCuid());
tbasic.setBColumn8(1);
tbasic.setIsArchive(1);
tbasic.setArchiveFileStorageType(2);
tbasic.setCreateTime(new Date());
tbasic.setFileSource(2);
return tbasic; return tbasic;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return tbasicList;
} }
} }

@ -50,40 +50,41 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
public CommonResult<?> syncBasicFile(SyncFileDto syncFileDto) { public CommonResult<?> syncBasicFile(SyncFileDto syncFileDto) {
CompletableFuture.runAsync(() -> { CompletableFuture.runAsync(() -> {
//页码 try {
int current; //页码
//每页1000条数据 int current;
int limit = syncFileDto.getLimit(); //每页1000条数据
//1.先去tbaisc查数据 查询出带cid的数据 int limit = syncFileDto.getLimit();
BasicSelectDto basicSelectDto = this.getBaiscSelectDto(syncFileDto); //1.先去tbaisc查数据 查询出带cid的数据
List<BasicVo> basicVoList; BasicSelectDto basicSelectDto = this.getBaiscSelectDto(syncFileDto);
for (current = 1; ; current++) { List<BasicVo> basicVoList;
basicVoList = basicMapper.getBasicVoList((current-1)*limit, limit, basicSelectDto); for (current = 1; ; current++) {
if (null == basicVoList || basicVoList.size() == 0) { basicVoList = basicMapper.getBasicVoList((current-1)*limit, limit, basicSelectDto);
break; if (null == basicVoList || basicVoList.size() == 0) {
} break;
// List<ScanAssort> updateOrInsertList = new ArrayList<>(5000); }
for (BasicVo basicVo : basicVoList) { List<ScanAssort> updateOrInsertList = new ArrayList<>(5000);
log.info("开始同步"+basicVo.getInpatientNo()); for (BasicVo basicVo : basicVoList) {
List<ScanAssort> scanAssortList = this.doSyncFile(basicVo); log.info("开始同步"+basicVo.getInpatientNo());
//2.5数据入库 List<ScanAssort> scanAssortList = this.doSyncFile(basicVo);
// if (scanAssortList.size() != 0) { //2.5数据入库
// List<ScanAssort> oldScanAssort = scanAssortMapper.getListByPid(basicVo.getPatientId()); if (scanAssortList.size() != 0) {
// //根据pid 查询数据库 根据路径和名称做匹配 如果数据存在需要做幂等 不存在需要做数据更新 List<ScanAssort> oldScanAssort = scanAssortMapper.getListByPid(basicVo.getPatientId());
// List<ScanAssort> addScanAssortList = this.handleUpdateOrInsert(oldScanAssort,scanAssortList); //根据pid 查询数据库 根据路径和名称做匹配 如果数据存在需要做幂等 不存在需要做数据更新
// updateOrInsertList.addAll(addScanAssortList); List<ScanAssort> addScanAssortList = this.handleUpdateOrInsert(oldScanAssort,scanAssortList);
// } else { updateOrInsertList.addAll(addScanAssortList);
// log.info(basicVo.getPatientId() + " canFindImage "); } else {
// } log.info(basicVo.getPatientId() + " canFindImage ");
}
log.info("结束同步"+basicVo.getInpatientNo()); log.info("结束同步"+basicVo.getInpatientNo());
}
scanAssortMapper.insertOrUpdateBatch(updateOrInsertList);
} }
// scanAssortMapper.insertOrUpdateBatch(updateOrInsertList); }catch (Exception e){
log.info(e.getMessage());
} }
},executor); },executor);
// System.out.println("执行了一个任务" +syncFileDto.getStartDate() +" " +syncFileDto.getEndDate());
return CommonResult.success("同步成功"); return CommonResult.success("同步成功");
} }
@ -147,22 +148,15 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
if (!file.exists()){ if (!file.exists()){
log.info(basicVo.getInpatientNo()+"文件未找到"+inPutFile); log.info(basicVo.getInpatientNo()+"文件未找到"+inPutFile);
} }
// boolean savePicFlag ; boolean savePicFlag ;
// boolean rotateFlag ; boolean rotateFlag ;
// // 2.2jp2转化jpg 图片通过文件流写到挂在的盘符 // 2.2jp2转化jpg 图片通过文件流写到挂在的盘符
// savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile); savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile, tpicture.getRotateDegree());
// if (!savePicFlag){ if (!savePicFlag){
// //需要同步tif文件成jpg过来 //需要同步tif文件成jpg过来
// savePicFlag = ImageUtils.getInstance().tifToJpg(rootDir + picName + ".tif",outFile); inPutFile = rootDir + picName + ".tif";
// } savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile, tpicture.getRotateDegree());
// //需要旋转一下文件 }
// if (tpicture.getRotateDegree()!=0){
// rotateFlag = ImageUtils.getInstance().rotateFile(outFile,outFile,tpicture.getRotateDegree());
// }else {
// rotateFlag = true;
// }
// 2.4组合文件信息 // 2.4组合文件信息
ScanAssort scanAssort = new ScanAssort(); ScanAssort scanAssort = new ScanAssort();
scanAssort.setId(SnowflakeIdWorker.idWorker.nextId()); scanAssort.setId(SnowflakeIdWorker.idWorker.nextId());
@ -177,17 +171,11 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
scanAssort.setFileStorageType(1); scanAssort.setFileStorageType(1);
scanAssort.setFilePages(1); scanAssort.setFilePages(1);
if (savePicFlag){
// if (savePicFlag&&rotateFlag){ scanAssort.setCreater("auto2");
// scanAssort.setCreater("auto2"); }else {
// }else if (savePicFlag){ scanAssort.setCreater("auto4");
// scanAssort.setCreater("auto3"); }
// //需要记录创建人为auto3表示同步失败的文件
// }else {
// scanAssort.setCreater("auto4");
// }
scanAssortList.add(scanAssort); scanAssortList.add(scanAssort);
sort+=1; sort+=1;

@ -1,5 +1,11 @@
package com.docus.demo.test; package com.docus.demo.test;
import cn.hutool.core.util.ObjectUtil;
import com.docus.demo.entity.Tbasic;
import com.docus.demo.entity.sqlserver.CardInfo;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
@ -11,18 +17,11 @@ public class test {
public static void main(String[] args) { public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(1); // try {
for (int j = 0; j < 1000; j++) { // System.out.println( URLEncoder.encode("李毅","gbk"));
CompletableFuture.runAsync(() -> { // } catch (UnsupportedEncodingException e) {
try { // e.printStackTrace();
Thread.sleep(1000L); // }
System.out.println(new Date() + " "+Thread.currentThread().getId());
} catch (InterruptedException e) {
e.printStackTrace();
}
},executor);
}
} }
} }

@ -7,15 +7,12 @@ import leadtools.codecs.CodecsLoadByteOrder;
import leadtools.codecs.CodecsSavePageMode; import leadtools.codecs.CodecsSavePageMode;
import leadtools.codecs.RasterCodecs; import leadtools.codecs.RasterCodecs;
import leadtools.demos.DemoUtilities; import leadtools.demos.DemoUtilities;
import leadtools.imageprocessing.RotateCommand;
import leadtools.imageprocessing.SizeCommand;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.stream.ImageInputStream;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.*; import java.io.*;
import java.util.Date;
@Slf4j @Slf4j
public class ImageUtils { public class ImageUtils {
@ -118,66 +115,9 @@ public class ImageUtils {
} }
/**
* tifjpg
* @param inPutFile
* @param outFile
* @return
*/
public boolean tifToJpg(String inPutFile, String outFile) {
try
{
if (createParentRoot(outFile)) {
return false;
}
InputStream inputStream = new FileInputStream(inPutFile);
OutputStream outputStream = new FileOutputStream(outFile);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
log.info(inPutFile + "成功将TIFF文件的字节码写入到新文件 " +outFile);
return true;
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
/**
* jpg
*
* @param inPutFile
* @param outFile
* @param degreesToRotate
* @return
*/
public boolean rotateFile(String inPutFile, String outFile, double degreesToRotate) {
try {
if (createParentRoot(outFile)) {
return false;
}
BufferedImage image = ImageIO.read(new File(inPutFile));
// 创建旋转后的图像
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(degreesToRotate), image.getWidth() / 2.0, image.getHeight() / 2.0);
BufferedImage rotatedImage = new BufferedImage(image.getWidth(), image.getHeight(), image.getType());
Graphics2D g = rotatedImage.createGraphics();
g.drawImage(image, transform, null);
g.dispose();
ImageIO.write(rotatedImage, "jpg", new File(outFile));
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public boolean savePic(String inputfile, String outFile) { public boolean savePic(String inputfile, String outFile,int angle) {
DemoData demoData = new DemoData(); DemoData demoData = new DemoData();
demoData.firstPage = 1; demoData.firstPage = 1;
demoData.lastPage = 1; demoData.lastPage = 1;
@ -244,10 +184,19 @@ public class ImageUtils {
// System.out.println("Load image..."); // System.out.println("Load image...");
rasterImage = rasterCodecs.load(stream, 0, CodecsLoadByteOrder.BGR_OR_GRAY, demoData.firstPage, demoData.lastPage); rasterImage = rasterCodecs.load(stream, 0, CodecsLoadByteOrder.BGR_OR_GRAY, demoData.firstPage, demoData.lastPage);
if (angle!=0){
RotateCommand rotateCommand = new RotateCommand();
rotateCommand.setAngle(angle*100);
rotateCommand.run(rasterImage);
}
SizeCommand sizeCommand = new SizeCommand(rasterImage.getWidth(), rasterImage.getHeight(), RasterSizeFlags.BICUBIC.getValue());
sizeCommand.run(rasterImage);
// Save image // Save image
// System.out.println("Save image..."); // System.out.println("Save image...");
rasterCodecs.save(rasterImage, demoData.outFilePath, RasterImageFormat.valueOf(demoData.outputFormat.toString()), demoData.outputBPP, 1, -1, 1, CodecsSavePageMode.OVERWRITE); rasterCodecs.save(rasterImage, demoData.outFilePath, RasterImageFormat.valueOf(demoData.outputFormat.toString()), demoData.outputBPP, 1, -1, 1, CodecsSavePageMode.OVERWRITE);
log.info("Image saved successfully here: " + demoData.outFilePath); // log.info("Image saved successfully here: " + demoData.outFilePath);
return true; return true;
} catch (Exception e) { } catch (Exception e) {
// System.out.println(e.getMessage()); // System.out.println(e.getMessage());
@ -286,9 +235,10 @@ public class ImageUtils {
// public static void main(String[] args) { // public static void main(String[] args) {
// ImageUtils imageUtils = new ImageUtils(); //// ImageUtils imageUtils = new ImageUtils();
//// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\HNSET0001.jp2.jp2","C:\\Users\\Administrator\\Desktop\\HNSET0001.jp2.jpg"); //// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\HNSET0001.tif","C:\\Users\\Administrator\\Desktop\\HNSET0001.jpg",90);
// imageUtils.tifToJpg("C:\\Users\\Administrator\\Desktop\\HNSET0001.tif","C:\\Users\\Administrator\\Desktop\\HNSET0001.jpg"); //
// imageUtils.rotateFile("C:\\Users\\Administrator\\Desktop\\HNSET0001.jp2.jpg","C:\\Users\\Administrator\\Desktop\\HNSET0001.jp2.jpg",90); //
//
// } // }
} }

@ -58,7 +58,7 @@
</springProfile> </springProfile>
<!-- 监控sql日志输出--> <!-- 监控sql日志输出-->
<!-- 如想看到表格数据将OFF改为INFO --> <!-- 如想看到表格数据将OFF改为INFO -->
<logger name="jdbc.resultsettable" level="OFF" additivity="false"> <logger name="jdbc.resultsettable" level="OFF" additivity="false">
<appender-ref ref="console"/> <appender-ref ref="console"/>

@ -5,30 +5,38 @@
<mapper namespace="com.docus.demo.mapper.mysql.BasicMapper"> <mapper namespace="com.docus.demo.mapper.mysql.BasicMapper">
<insert id="insertOrUpdateByid"> <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
)
values
<foreach collection="list" item="item" separator=",">
(#{item.patientId},#{item.admissTimes},#{item.inpatientNo},#{item.admissId},
#{item.name},#{item.sex},#{item.age},#{item.idCard},
#{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}
)
</foreach>
</insert> </insert>
<select id="getBasicVoList" resultType="com.docus.demo.vo.BasicVo"> <select id="getBasicVoList" resultType="com.docus.demo.vo.BasicVo">
SELECT SELECT
patient_id as patient_id, patient_id as patient_id,
admiss_times AS admissTimes, admiss_times AS admissTimes,
inpatient_no AS inpatientNo, inpatient_no AS inpatientNo,
dis_date AS disDate, dis_date AS disDate,
b_column5 as bColumn5 b_column5 as bColumn5
FROM docus_medicalrecord.t_basic FROM docus_medicalrecord.t_basic
<where> <where>
b_column5 is not null b_column5 is not null
AND b_column8 = 1 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 != ''"> <if test="dto.startDate !=null and dto.startDate != ''">
AND dis_date &gt;=#{dto.startDate} AND dis_date &gt;=#{dto.startDate}
</if> </if>
@ -42,9 +50,23 @@
</select> </select>
<select id="getOldBasicList" resultType="com.docus.demo.entity.Tbasic"> <select id="getOldBasicList" resultType="com.docus.demo.entity.Tbasic">
SELECT
admiss_times,
inpatient_no,
name,
dis_date
FROM
docus_medicalrecord.t_basic
where inpatient_no in
<foreach collection="list" item="inpatientNo" separator="," open="(" close=")">
#{inpatientNo}
</foreach>
<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>
</select> </select>
</mapper> </mapper>

@ -6,8 +6,6 @@
<select id="getCardInfo" resultType="com.docus.demo.entity.sqlserver.CardInfo"> <select id="getCardInfo" resultType="com.docus.demo.entity.sqlserver.CardInfo">
SELECT * SELECT *
from ( from (
SELECT row_number() over(order by id ) as num , SELECT row_number() over(order by id ) as num ,
@ -29,9 +27,10 @@
FROM T_card_info FROM T_card_info
WHERE OutDate &gt;= #{dto.startDate} WHERE OutDate &gt;= #{dto.startDate}
AND OutDate &lt;= #{dto.endDate} AND OutDate &lt;= #{dto.endDate}
AND PatNum is not null
) as t2 ) as t2
where t2.num &gt;= #{pageStart} where t2.num &gt;= #{pageStart}
and t2.num &lt;= {pageEnd} and t2.num &lt;= #{pageEnd}
</select> </select>
</mapper> </mapper>

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

Loading…
Cancel
Save