diff --git a/pom.xml b/pom.xml index 97adcb0..d0e9865 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,12 @@ log4jdbc-log4j2-jdbc4.1 + + com.alibaba + easyexcel + 2.2.6 + + diff --git a/src/main/java/com/docus/demo/controller/GuangZhouFirstHospController.java b/src/main/java/com/docus/demo/controller/GuangZhouFirstHospController.java index c55c8ec..fb54b22 100644 --- a/src/main/java/com/docus/demo/controller/GuangZhouFirstHospController.java +++ b/src/main/java/com/docus/demo/controller/GuangZhouFirstHospController.java @@ -184,6 +184,13 @@ public class GuangZhouFirstHospController { } } + @ApiOperation("导出数据接口-开发自定义使用") + @GetMapping("/export") + public CommonResult export() { + syncBasicDataService.export(); + return CommonResult.success("导出已完成!"); + } + private void validateAndSet(SyncLabReportDto syncLabReportDto) { List basicDtoList = syncLabReportDto.getBasicDtoList(); diff --git a/src/main/java/com/docus/demo/dto/ExportDto.java b/src/main/java/com/docus/demo/dto/ExportDto.java new file mode 100644 index 0000000..c67318d --- /dev/null +++ b/src/main/java/com/docus/demo/dto/ExportDto.java @@ -0,0 +1,41 @@ +package com.docus.demo.dto; + +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +/** + * + * @author YongBin Wen + * @date 2025/12/10 星期三 14:30 + */ +@Data +public class ExportDto { + + @ExcelIgnore + private String patientId; + @ExcelProperty(value = "姓名", index = 0) + private String name; + @ExcelProperty(value = "住院号", index = 1) + private String inpatientNo; + @ExcelProperty(value = "住院次数", index = 2) + private String admissTimes; + @ExcelProperty(value = "性别", index = 3) + private String sex; + @ExcelProperty(value = "箱号", index = 4) + private String ph; + @ExcelProperty(value = "入院时间", index = 5) + private String admissDate; + @ExcelProperty(value = "入院科室", index = 6) + private String admissDeptName; + @ExcelProperty(value = "出院时间", index = 7) + private String disDate; + @ExcelProperty(value = "出院科室", index = 8) + private String disDeptName; + @ExcelProperty(value = "数据来源", index = 9) + private String fileSource; + @ExcelProperty(value = "是否打印", index = 10) + private String isPrint; + @ExcelProperty(value = "是否扫描", index = 11) + private String scanSource; +} diff --git a/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java b/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java index 2def1c6..96cdca8 100644 --- a/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java +++ b/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java @@ -21,4 +21,6 @@ public interface ISyncBasicDataService { void choose(List inpatientNos); void xmzyyYidiChoose(); + + void export(); } 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 94971d5..2892ed6 100644 --- a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java +++ b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java @@ -2,6 +2,7 @@ package com.docus.demo.mapper.mysql; import com.docus.demo.dto.BasicSelectDto; +import com.docus.demo.dto.ExportDto; import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.entity.Tbasic; import com.docus.demo.entity.TbasicSub; @@ -63,4 +64,7 @@ public interface BasicMapper { int addLabSync(@Param("patientId") String patientId,@Param("status") Integer status); + List getExportList(@Param("startDate") String startDate, @Param("endDate") String endDate); + + List getYears(); } diff --git a/src/main/java/com/docus/demo/mapper/mysql/ScanAssortMapper.java b/src/main/java/com/docus/demo/mapper/mysql/ScanAssortMapper.java index 28f49a1..eb8c8e1 100644 --- a/src/main/java/com/docus/demo/mapper/mysql/ScanAssortMapper.java +++ b/src/main/java/com/docus/demo/mapper/mysql/ScanAssortMapper.java @@ -31,6 +31,8 @@ public interface ScanAssortMapper { ListgetScanAssort(@Param("patientId")String patientId,@Param("source")String source); + int countScanAssort(@Param("patientId")String patientId,@Param("source")String source); + int updatePatientId(@Param("oldPatId") String oldBasicPatientId, @Param("newPatId") String newPatientId); int updatePatientIdById(@Param("ids") List ids, @Param("newPatId") String newPatientId); diff --git a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java index 95998be..8ac573e 100644 --- a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java +++ b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java @@ -5,8 +5,12 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.metadata.WriteSheet; import com.docus.demo.dto.BasicChooseDto; import com.docus.demo.dto.BasicCorrectDto; +import com.docus.demo.dto.ExportDto; import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.entity.CommonResult; import com.docus.demo.entity.ScanAssort; @@ -27,9 +31,18 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.File; import java.text.SimpleDateFormat; import java.time.LocalDate; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; @Slf4j @@ -192,6 +205,71 @@ public class SyncBasicDataImpl implements ISyncBasicDataService { } } + + @Override + public void export() { + List years = basicMapper.getYears(); + String dir= currentPath()+File.separator+"export"; + if (!new File(dir).exists() || !new File(dir).isDirectory()) { + new File(dir).mkdirs(); + } + + String fileName= DateUtil.formatDateTime(new Date())+ UUID.randomUUID()+ ".xlsx"; + String filePath=dir+File.separator+fileName; + File file = new File(filePath); + ExcelWriter excelWriter = EasyExcel.write(file, ExportDto.class).build(); + for (String year : years) { + log.info("正在导出查询 {} 年数据",year); + String startDate = year + "-01-01 00:00:00"; + String endDate = year + "-12-31 23:59:59"; + List exportDtos = basicMapper.getExportList(startDate, endDate); + for (ExportDto exportDto : exportDtos) { + if (exportDto.getPh() == null) { + exportDto.setPh(""); + } + if ("1".equals(exportDto.getSex())) { + exportDto.setSex("男"); + } else if ("2".equals(exportDto.getSex())) { + exportDto.setSex("女"); + } else { + exportDto.setSex("未知"); + } + + if ("1".equals(exportDto.getIsPrint())) { + exportDto.setIsPrint("已打印"); + } else { + exportDto.setIsPrint("未打印"); + } + String scanSource = "否"; + String fileSource = "嘉时"; + int fileCount = scanAssortMapper.countScanAssort(exportDto.getPatientId(), ""); + if (fileCount > 0) { + scanSource = "是"; + int lianzhong = scanAssortMapper.countScanAssort(exportDto.getPatientId(), "lianzhong"); + if (lianzhong > 0) { + fileSource = "联众"; + } + } + exportDto.setScanSource(scanSource); + exportDto.setFileSource(fileSource); + } + WriteSheet writeSheet = EasyExcel.writerSheet(year).build(); + excelWriter.write(exportDtos,writeSheet); + log.info("正在导出 {} 年数据",year); + } + excelWriter.finish(); + log.info("导出数据完成"); + } + + public static String currentPath() { + try { + File file = new File("."); + return file.getCanonicalPath(); + } catch (Exception ex) { + return null; + } + } + /** * 厦门中医院异地扫描导入数据,根据 病案号、姓名、出院日期 进行 入院日期,性别,科室补充 */ diff --git a/src/main/resources/mapper/mysql/BasicMapper.xml b/src/main/resources/mapper/mysql/BasicMapper.xml index e27c429..f5eb443 100644 --- a/src/main/resources/mapper/mysql/BasicMapper.xml +++ b/src/main/resources/mapper/mysql/BasicMapper.xml @@ -295,7 +295,21 @@ group by inpatient_no - + + \ No newline at end of file diff --git a/src/main/resources/mapper/mysql/ScanAssortMapper.xml b/src/main/resources/mapper/mysql/ScanAssortMapper.xml index b818c44..c3ee6f4 100644 --- a/src/main/resources/mapper/mysql/ScanAssortMapper.xml +++ b/src/main/resources/mapper/mysql/ScanAssortMapper.xml @@ -111,6 +111,16 @@ + + + + \ No newline at end of file