feat: 导出辅助接口

lianzhong-receive
wyb 7 days ago
parent 3065494e1d
commit 80ad2fd563

@ -72,6 +72,12 @@
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.alibaba</groupId>-->
<!-- <artifactId>druid</artifactId>-->

@ -184,6 +184,13 @@ public class GuangZhouFirstHospController {
}
}
@ApiOperation("导出数据接口-开发自定义使用")
@GetMapping("/export")
public CommonResult<?> export() {
syncBasicDataService.export();
return CommonResult.success("导出已完成!");
}
private void validateAndSet(SyncLabReportDto syncLabReportDto) {
List<SyncLabReportDto.SyncLabReportBasicDto> basicDtoList = syncLabReportDto.getBasicDtoList();

@ -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;
}

@ -21,4 +21,6 @@ public interface ISyncBasicDataService {
void choose(List<String> inpatientNos);
void xmzyyYidiChoose();
void export();
}

@ -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<ExportDto> getExportList(@Param("startDate") String startDate, @Param("endDate") String endDate);
List<String> getYears();
}

@ -31,6 +31,8 @@ public interface ScanAssortMapper {
List<ScanAssort>getScanAssort(@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<Long> ids, @Param("newPatId") String newPatientId);

@ -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<String> 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<ExportDto> 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;
}
}
/**
*
*/

@ -295,7 +295,21 @@
group by inpatient_no
</select>
<select id="getExportList" resultType="com.docus.demo.dto.ExportDto">
select
patient_id,name ,inpatient_no,admiss_times ,sex,ph ,admiss_date ,admiss_dept_name ,dis_date ,dis_dept_name ,
file_source,is_print,scan_source
FROM docus_medicalrecord.t_basic
where
dis_date between #{startDate} and #{endDate}
and is_cancel=0
</select>
<select id="getYears" resultType="java.lang.String">
select
DATE_FORMAT(dis_date,'%Y') disDateYear
from docus_medicalrecord.t_basic
GROUP BY DATE_FORMAT(dis_date,'%Y')
</select>
</mapper>

@ -111,6 +111,16 @@
<select id="getScanAssort" resultType="com.docus.demo.entity.ScanAssort">
SELECT * FROM docus_archivefile.t_scan_assort WHERE patient_id=#{patientId} and source=#{source}
</select>
<select id="countScanAssort" resultType="java.lang.Integer">
SELECT count(1)
FROM docus_archivefile.t_scan_assort
WHERE patient_id=#{patientId}
<if test="source != null and source != ''">
and source=#{source}
</if>
</select>
<select id="getListByPids" resultType="com.docus.demo.entity.ScanAssort">
SELECT id,
patient_id,
@ -134,4 +144,5 @@
</select>
</mapper>
Loading…
Cancel
Save