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