From f8cc793899735d41ebeba69588610d6e9858d2ba Mon Sep 17 00:00:00 2001 From: zhanglb Date: Fri, 21 Jul 2023 09:25:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=82=E4=B8=80=20=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E5=A4=84=E7=90=86=20=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SyncBasicDataController.java | 19 -- .../docus/demo/mapper/mysql/BasicMapper.java | 3 +- .../docus/demo/service/SyncBasicDataImpl.java | 222 ++++++++++-------- .../docus/demo/service/SyncBasicFileImpl.java | 104 ++++---- src/main/java/com/docus/demo/test/test.java | 23 +- .../java/com/docus/demo/utils/ImageUtils.java | 88 ++----- src/main/resources/logback.xml | 2 +- .../resources/mapper/mysql/BasicMapper.xml | 52 ++-- .../mapper/sqlserver/TcardMapper.xml | 5 +- .../mapper/sqlserver1/PaintVisitMapper.xml | 10 +- 10 files changed, 251 insertions(+), 277 deletions(-) diff --git a/src/main/java/com/docus/demo/controller/SyncBasicDataController.java b/src/main/java/com/docus/demo/controller/SyncBasicDataController.java index 983d407..a52056b 100644 --- a/src/main/java/com/docus/demo/controller/SyncBasicDataController.java +++ b/src/main/java/com/docus/demo/controller/SyncBasicDataController.java @@ -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("测试成功"); - } } diff --git a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java index da30f50..d773eab 100644 --- a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java +++ b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java @@ -1,7 +1,6 @@ package com.docus.demo.mapper.mysql; -import com.baomidou.dynamic.datasource.annotation.DS; import com.docus.demo.dto.BasicSelectDto; import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.entity.Tbasic; @@ -21,5 +20,5 @@ public interface BasicMapper { void insertOrUpdateByid(List tbasicList); - List getOldBasicList(List fprnList, SyncBasicDataDto syncBasicDataDto); + List getOldBasicList(@Param("list") List fprnList, @Param("dto") SyncBasicDataDto syncBasicDataDto); } diff --git a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java index 41a8cb0..c1552a4 100644 --- a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java +++ b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java @@ -14,13 +14,18 @@ import com.docus.demo.mapper.mysql.BasicMapper; import com.docus.demo.mapper.sqlserver.TcardMapper; import com.docus.demo.mapper.sqlserver1.PaintVisitMapper; import com.docus.demo.utils.SnowflakeIdWorker; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.stream.Collectors; +@Slf4j @Service public class SyncBasicDataImpl implements ISyncBasicDataService { @Autowired @@ -31,6 +36,8 @@ public class SyncBasicDataImpl implements ISyncBasicDataService { @Autowired private TcardMapper tcardMapper; + private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + private final ExecutorService executor = Executors.newFixedThreadPool(7); @Override public CommonResult syncBasicData(SyncBasicDataDto syncBasicDataDto) { @@ -41,7 +48,7 @@ public class SyncBasicDataImpl implements ISyncBasicDataService { List tpatientvisitList; 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) { break; } @@ -50,8 +57,8 @@ public class SyncBasicDataImpl implements ISyncBasicDataService { List tdiagnoses = paintVisitMapper.getTdiagnose(fprnList); List toperations = paintVisitMapper.getToperation(fprnList); //数据map转换 - List oldBasicList = basicMapper.getOldBasicList(fprnList,syncBasicDataDto); - List tbasicList = this.getTbasicList(oldBasicList,tpatientvisitList,tdiagnoses,toperations); + List oldBasicList = basicMapper.getOldBasicList(fprnList, syncBasicDataDto); + List tbasicList = this.getTbasicList(oldBasicList, tpatientvisitList, tdiagnoses, toperations); //数据入库 basicMapper.insertOrUpdateByid(tbasicList); } @@ -59,122 +66,139 @@ public class SyncBasicDataImpl implements ISyncBasicDataService { } - private List getTbasicList(List oldBasicList,List tpatientvisitList, List tdiagnoses, List toperations) { + private List getTbasicList(List oldBasicList, List tpatientvisitList, List tdiagnoses, List toperations) { - return tpatientvisitList.stream() - .filter(f->{ + // 根据病案号 住院次数 名称 做去重判断 + + return tpatientvisitList.stream().map(m -> { Tbasic oldBasic = oldBasicList.stream() - .filter(old->ObjectUtil.equal(f.getFprn(),old.getInpatientNo()) - &&ObjectUtil.equal(f.getFtimes(),old.getAdmissTimes()) + .filter(old -> ObjectUtil.equal(m.getFprn(), old.getInpatientNo()) + && ObjectUtil.equal(m.getFtimes(), old.getAdmissTimes()) + && ObjectUtil.equal(m.getFname(), old.getName()) ) .findFirst() .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() - .filter(f-> ObjectUtil.equal(f.getFprn(),fprn) - &&ObjectUtil.equal(f.getFtimes(),ftimes) - &&ObjectUtil.equal(f.getFpx(),1L) - ) - .findFirst() - .orElse(null); + String fprn = m.getFprn(); + Integer ftimes = m.getFtimes(); - Tbasic tbasic = new Tbasic(); - 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); + Tdiagnose tdiagnose = tdiagnoses.stream() + .filter(f -> ObjectUtil.equal(f.getFprn(), fprn) + && ObjectUtil.equal(f.getFtimes(), ftimes) + && ObjectUtil.equal(f.getFzdlx(), "1") + ) + .findFirst() + .orElse(null); - return tbasic; - }).collect(Collectors.toList()); + Toperation toperation = toperations.stream() + .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 public CommonResult syncLzBasicData(SyncBasicDataDto syncBasicDataDto) { - //页码 - int current; - //每页1000条数据 - int limit = syncBasicDataDto.getLimit(); - List cardInfoList; - for (current = 1; ; current++) { - cardInfoList = tcardMapper.getCardInfo((current-1)*limit, limit,syncBasicDataDto); - if (null == cardInfoList || cardInfoList.size() == 0) { - break; - } - List fprnList = cardInfoList.stream().map(CardInfo::getPatNo).collect(Collectors.toList()); - //数据map转换 - List oldBasicList = basicMapper.getOldBasicList(fprnList,syncBasicDataDto); - List tbasicList = this.getInsertTbasic(oldBasicList,cardInfoList); - if (ObjectUtil.isNotEmpty(tbasicList)){ - //判断数据量 如果文件数据大于五百条 需要做拆分分批次插入 - int batchSize = 1000; - // 拆分列表 - for (int i = 0; i < tbasicList.size(); i += batchSize) { - int endIndex = Math.min(i + batchSize, tbasicList.size()); - List sublist = tbasicList.subList(i, endIndex); - //数据入库 - basicMapper.insertOrUpdateByid(sublist); + + executor.execute(()->{ + //页码 + int current; + //每页1000条数据 + int limit = syncBasicDataDto.getLimit(); + List cardInfoList; + for (current = 1; ; current++) { + cardInfoList = tcardMapper.getCardInfo((current - 1) * limit, current * limit, syncBasicDataDto); + if (null == cardInfoList || cardInfoList.size() == 0) { + break; + } + log.info(syncBasicDataDto.getStartDate() + " " + syncBasicDataDto.getEndDate() + "开始同步" + cardInfoList.size()); + List fprnList = cardInfoList.stream().map(CardInfo::getPatNo).collect(Collectors.toList()); + //数据map转换 + List oldBasicList = basicMapper.getOldBasicList(fprnList, syncBasicDataDto); + log.info("获取到旧数据"+oldBasicList.size()); + List tbasicList = this.getInsertTbasic(oldBasicList, cardInfoList); + if (ObjectUtil.isNotEmpty(tbasicList)) { + //判断数据量 如果文件数据大于五百条 需要做拆分分批次插入 + int batchSize = 1000; + // 拆分列表 + for (int i = 0; i < tbasicList.size(); i += batchSize) { + int endIndex = Math.min(i + batchSize, tbasicList.size()); + List sublist = tbasicList.subList(i, endIndex); + //数据入库 + basicMapper.insertOrUpdateByid(sublist); + log.info("数据入库"+sublist.size()); + } } } - } + log.info(syncBasicDataDto.getStartDate() + " " + syncBasicDataDto.getEndDate() + "结束同步" ); + }); + + return CommonResult.success("同步成功"); } private List getInsertTbasic(List oldBasicList, List cardInfoList) { - return cardInfoList.stream().filter(f->{ + + List cardInfos = cardInfoList.stream().filter(f -> { + //根据病案号 名称 住院次数 出院时间 去重 String pno = f.getPatNo(); String name = f.getPatName(); Integer pNum = f.getPatNum(); - Date date = f.getOutDate(); - Tbasic tbasic = oldBasicList.stream().filter(o-> - ObjectUtil.equal(o.getInpatientNo(),pno) - &&ObjectUtil.equal(name,o.getName()) - &&ObjectUtil.equal(pNum,o.getAdmissTimes()) - &&ObjectUtil.equal(date,o.getDisDate())) + + Tbasic tbasic = oldBasicList.stream().filter(o -> + ObjectUtil.equal(pno, o.getInpatientNo()) + && ObjectUtil.equal(name, o.getName()) + && ObjectUtil.equal(pNum, o.getAdmissTimes()) + ) .findAny() .orElse(null); - return tbasic==null; - }).map(m->{ - //根据病案号 名称 住院次数 出院时间 去重 + + return tbasic == null; + }).collect(Collectors.toList()); + + List tbasicList = cardInfos.stream().map(m -> { + Tbasic tbasic = new Tbasic(); tbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId())); tbasic.setAdmissTimes(m.getPatNum()); @@ -194,8 +218,16 @@ public class SyncBasicDataImpl implements ISyncBasicDataService { tbasic.setMainDiagCode(m.getIcdeCode11()); tbasic.setMainOperateName(m.getOperName1()); 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; }).collect(Collectors.toList()); + + return tbasicList; } } diff --git a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java index ca65bcb..5880778 100644 --- a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java +++ b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java @@ -50,40 +50,41 @@ public class SyncBasicFileImpl implements ISyncBasicFileService { public CommonResult syncBasicFile(SyncFileDto syncFileDto) { CompletableFuture.runAsync(() -> { - //页码 - int current; - //每页1000条数据 - int limit = syncFileDto.getLimit(); - //1.先去tbaisc查数据 查询出带cid的数据 - BasicSelectDto basicSelectDto = this.getBaiscSelectDto(syncFileDto); - List basicVoList; - for (current = 1; ; current++) { - basicVoList = basicMapper.getBasicVoList((current-1)*limit, limit, basicSelectDto); - if (null == basicVoList || basicVoList.size() == 0) { - break; - } -// List updateOrInsertList = new ArrayList<>(5000); - for (BasicVo basicVo : basicVoList) { - log.info("开始同步"+basicVo.getInpatientNo()); - List scanAssortList = this.doSyncFile(basicVo); - //2.5数据入库 -// if (scanAssortList.size() != 0) { -// List oldScanAssort = scanAssortMapper.getListByPid(basicVo.getPatientId()); -// //根据pid 查询数据库 根据路径和名称做匹配 如果数据存在需要做幂等 不存在需要做数据更新 -// List addScanAssortList = this.handleUpdateOrInsert(oldScanAssort,scanAssortList); -// updateOrInsertList.addAll(addScanAssortList); -// } else { -// log.info(basicVo.getPatientId() + " canFindImage "); -// } - - log.info("结束同步"+basicVo.getInpatientNo()); + try { + //页码 + int current; + //每页1000条数据 + int limit = syncFileDto.getLimit(); + //1.先去tbaisc查数据 查询出带cid的数据 + BasicSelectDto basicSelectDto = this.getBaiscSelectDto(syncFileDto); + List basicVoList; + for (current = 1; ; current++) { + basicVoList = basicMapper.getBasicVoList((current-1)*limit, limit, basicSelectDto); + if (null == basicVoList || basicVoList.size() == 0) { + break; + } + List updateOrInsertList = new ArrayList<>(5000); + for (BasicVo basicVo : basicVoList) { + log.info("开始同步"+basicVo.getInpatientNo()); + List scanAssortList = this.doSyncFile(basicVo); + //2.5数据入库 + if (scanAssortList.size() != 0) { + List oldScanAssort = scanAssortMapper.getListByPid(basicVo.getPatientId()); + //根据pid 查询数据库 根据路径和名称做匹配 如果数据存在需要做幂等 不存在需要做数据更新 + List addScanAssortList = this.handleUpdateOrInsert(oldScanAssort,scanAssortList); + updateOrInsertList.addAll(addScanAssortList); + } else { + log.info(basicVo.getPatientId() + " canFindImage "); + } + log.info("结束同步"+basicVo.getInpatientNo()); + } + scanAssortMapper.insertOrUpdateBatch(updateOrInsertList); } -// scanAssortMapper.insertOrUpdateBatch(updateOrInsertList); + }catch (Exception e){ + log.info(e.getMessage()); } - - },executor); -// System.out.println("执行了一个任务" +syncFileDto.getStartDate() +" " +syncFileDto.getEndDate()); + return CommonResult.success("同步成功"); } @@ -147,22 +148,15 @@ public class SyncBasicFileImpl implements ISyncBasicFileService { if (!file.exists()){ log.info(basicVo.getInpatientNo()+"文件未找到"+inPutFile); } -// boolean savePicFlag ; -// boolean rotateFlag ; -// // 2.2jp2转化jpg 图片通过文件流写到挂在的盘符 -// savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile); -// if (!savePicFlag){ -// //需要同步tif文件成jpg过来 -// savePicFlag = ImageUtils.getInstance().tifToJpg(rootDir + picName + ".tif",outFile); -// } -// //需要旋转一下文件 -// if (tpicture.getRotateDegree()!=0){ -// rotateFlag = ImageUtils.getInstance().rotateFile(outFile,outFile,tpicture.getRotateDegree()); -// }else { -// rotateFlag = true; -// } - - + boolean savePicFlag ; + boolean rotateFlag ; + // 2.2jp2转化jpg 图片通过文件流写到挂在的盘符 + savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile, tpicture.getRotateDegree()); + if (!savePicFlag){ + //需要同步tif文件成jpg过来 + inPutFile = rootDir + picName + ".tif"; + savePicFlag = ImageUtils.getInstance().savePic(inPutFile, outFile, tpicture.getRotateDegree()); + } // 2.4组合文件信息 ScanAssort scanAssort = new ScanAssort(); scanAssort.setId(SnowflakeIdWorker.idWorker.nextId()); @@ -177,17 +171,11 @@ public class SyncBasicFileImpl implements ISyncBasicFileService { scanAssort.setFileStorageType(1); scanAssort.setFilePages(1); - -// if (savePicFlag&&rotateFlag){ -// scanAssort.setCreater("auto2"); -// }else if (savePicFlag){ -// scanAssort.setCreater("auto3"); -// //需要记录创建人为auto3表示同步失败的文件 -// }else { -// scanAssort.setCreater("auto4"); -// } - - + if (savePicFlag){ + scanAssort.setCreater("auto2"); + }else { + scanAssort.setCreater("auto4"); + } scanAssortList.add(scanAssort); sort+=1; diff --git a/src/main/java/com/docus/demo/test/test.java b/src/main/java/com/docus/demo/test/test.java index 489f81e..c1c0622 100644 --- a/src/main/java/com/docus/demo/test/test.java +++ b/src/main/java/com/docus/demo/test/test.java @@ -1,5 +1,11 @@ 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.util.Date; import java.util.concurrent.CompletableFuture; @@ -11,18 +17,11 @@ public class test { public static void main(String[] args) { - ExecutorService executor = Executors.newFixedThreadPool(1); - for (int j = 0; j < 1000; j++) { - CompletableFuture.runAsync(() -> { - try { - Thread.sleep(1000L); - System.out.println(new Date() + " "+Thread.currentThread().getId()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - },executor); - } - +// try { +// System.out.println( URLEncoder.encode("李毅","gbk")); +// } catch (UnsupportedEncodingException e) { +// e.printStackTrace(); +// } } } diff --git a/src/main/java/com/docus/demo/utils/ImageUtils.java b/src/main/java/com/docus/demo/utils/ImageUtils.java index d526780..2e7b9c7 100644 --- a/src/main/java/com/docus/demo/utils/ImageUtils.java +++ b/src/main/java/com/docus/demo/utils/ImageUtils.java @@ -7,15 +7,12 @@ import leadtools.codecs.CodecsLoadByteOrder; import leadtools.codecs.CodecsSavePageMode; import leadtools.codecs.RasterCodecs; import leadtools.demos.DemoUtilities; +import leadtools.imageprocessing.RotateCommand; +import leadtools.imageprocessing.SizeCommand; 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.util.Date; @Slf4j public class ImageUtils { @@ -118,66 +115,9 @@ public class ImageUtils { } - /** - * tif文件转jpg - * @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.firstPage = 1; demoData.lastPage = 1; @@ -244,10 +184,19 @@ public class ImageUtils { // System.out.println("Load image..."); 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 // System.out.println("Save image..."); 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; } catch (Exception e) { // System.out.println(e.getMessage()); @@ -286,9 +235,10 @@ public class ImageUtils { // public static void main(String[] args) { -// ImageUtils imageUtils = new ImageUtils(); -//// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\HNSET0001.jp2.jp2","C:\\Users\\Administrator\\Desktop\\HNSET0001.jp2.jpg"); -// 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); +//// ImageUtils imageUtils = new ImageUtils(); +//// imageUtils.savePic("C:\\Users\\Administrator\\Desktop\\HNSET0001.tif","C:\\Users\\Administrator\\Desktop\\HNSET0001.jpg",90); +// +// +// // } } diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index ced9d63..2fcbe02 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -58,7 +58,7 @@ - + diff --git a/src/main/resources/mapper/mysql/BasicMapper.xml b/src/main/resources/mapper/mysql/BasicMapper.xml index e0a7edd..2c1d614 100644 --- a/src/main/resources/mapper/mysql/BasicMapper.xml +++ b/src/main/resources/mapper/mysql/BasicMapper.xml @@ -5,30 +5,38 @@ - - + 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 + + (#{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} + ) + \ No newline at end of file diff --git a/src/main/resources/mapper/sqlserver/TcardMapper.xml b/src/main/resources/mapper/sqlserver/TcardMapper.xml index 3498b9b..b0207f7 100644 --- a/src/main/resources/mapper/sqlserver/TcardMapper.xml +++ b/src/main/resources/mapper/sqlserver/TcardMapper.xml @@ -6,8 +6,6 @@ \ No newline at end of file diff --git a/src/main/resources/mapper/sqlserver1/PaintVisitMapper.xml b/src/main/resources/mapper/sqlserver1/PaintVisitMapper.xml index 561c86e..d7372c4 100644 --- a/src/main/resources/mapper/sqlserver1/PaintVisitMapper.xml +++ b/src/main/resources/mapper/sqlserver1/PaintVisitMapper.xml @@ -6,7 +6,9 @@