fix: 添加分批上传接口,基础数据比较,住院次数为空都改为0

jp2demo1.0
wyb 7 months ago
parent 263f3c0b5a
commit c7fefe0ce0

@ -99,7 +99,7 @@ public class SyncBasicDataController {
* @author linjj
* @date: 2024/6/28 10:38
*/
@ApiOperation("联众同步文件上传")
@ApiOperation("联众同步文件上传,删除旧的所有联众,新的增加")
@PostMapping(value = "fileUploadJpg")
@ResponseBody
public CommonResult<?> fileUploadJpg(@RequestPart("files") MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam) {
@ -111,4 +111,23 @@ public class SyncBasicDataController {
}
}
/**
* @description:
* @params: files
* @params: uploadBatchFileParam
* @author linjj
* @date: 2024/6/28 10:38
*/
@ApiOperation("联众同步文件上传,相同名字的删除,不同的添加,用于个别单次无法上传完毕的")
@PostMapping(value = "batchFileUploadJpg")
@ResponseBody
public CommonResult<?> batchFileUploadJpg(@RequestPart("files") MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam) {
try {
return syncBasicFileService.batchFileUploadJpg(files, uploadJpgFileParam);
} catch (Exception e) {
log.error("保存失败!异常处理" + e.getMessage(), e);
return CommonResult.failed("保存失败!异常处理" + e.getMessage());
}
}
}

@ -4,7 +4,6 @@ import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.dto.SyncFileDto;
import com.docus.demo.dto.UploadJpgFileParam;
import com.docus.demo.entity.CommonResult;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
public interface ISyncBasicFileService {
@ -21,4 +20,6 @@ public interface ISyncBasicFileService {
CommonResult<?>fileUploadJpg(MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam);
CommonResult<String> batchFileUploadJpg(MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam);
}

@ -1,10 +1,7 @@
package com.docus.demo.mapper.mysql;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.docus.demo.entity.ScanAssort;
import com.docus.demo.entity.ZdAssort;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -35,4 +32,6 @@ public interface ScanAssortMapper {
List<ScanAssort>getScanAssort(@Param("patientId")String patientId,@Param("source")String source);
int updatePatientId(@Param("oldPatId") String oldBasicPatientId, @Param("newPatId") String newPatientId);
int delScanAssortById(@Param("id") Long id);
}

@ -276,6 +276,9 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
if(StrUtil.isNotBlank(e.getPatNo())){
e.setPatNo(e.getPatNo().toLowerCase(Locale.ROOT));
}
if (e.getPatNum()==null) {
e.setPatNum(0);
}
}
List<String> fprnList = cardInfoList.stream().map(CardInfo::getPatNo).collect(Collectors.toList());
//数据map转换

@ -198,11 +198,12 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
//解析文件上传参数
List<FileUploadJpgDto> fileUploadJpg = JSONArray.parseArray(uploadJpgFileParam.getUploadFileParams(), FileUploadJpgDto.class);
String patientId = fileUploadJpg.get(0).getPatientId();
Integer admissTimes= null;
if (fileUploadJpg.get(0).getAdmissTimes()==null){
admissTimes= 0;
}else {
admissTimes=fileUploadJpg.get(0).getAdmissTimes();
Integer admissTimes = null;
if (fileUploadJpg.get(0).getAdmissTimes() == null) {
admissTimes = 0;
fileUploadJpg.get(0).setAdmissTimes(0);
} else {
admissTimes = fileUploadJpg.get(0).getAdmissTimes();
}
String admissId = fileUploadJpg.get(0).getAdmissId();
Date disDate = fileUploadJpg.get(0).getDisDate();
@ -293,6 +294,119 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
return CommonResult.success("上传完成");
}
@Override
public CommonResult<String> batchFileUploadJpg(MultipartFile[] files, UploadJpgFileParam uploadJpgFileParam) {
// 校验上传的数据
if (Objects.isNull(uploadJpgFileParam) || Objects.isNull(uploadJpgFileParam.getUploadFileParams())) {
log.info("文件上传参数为空!");
return CommonResult.failed("文件上传参数为空!");
}
//解析文件上传参数
List<FileUploadJpgDto> fileUploadJpg = JSONArray.parseArray(uploadJpgFileParam.getUploadFileParams(), FileUploadJpgDto.class);
String patientId = fileUploadJpg.get(0).getPatientId();
Integer admissTimes = null;
if (fileUploadJpg.get(0).getAdmissTimes() == null) {
admissTimes = 0;
fileUploadJpg.get(0).setAdmissTimes(0);
} else {
admissTimes = fileUploadJpg.get(0).getAdmissTimes();
}
String admissId = fileUploadJpg.get(0).getAdmissId();
Date disDate = fileUploadJpg.get(0).getDisDate();
for (FileUploadJpgDto dto : fileUploadJpg) {
if (StrUtil.isBlank(dto.getPatientId())) {
log.info("PatientId为空");
return CommonResult.failed("PatientId不能为空");
}
}
if (fileUploadJpg.size() != files.length) {
log.info(patientId + "文件上传数量与参数不一致!");
return CommonResult.failed("文件上传数量与参数不一致");
}
// 参数不含上传的,不匹配
List<String> originalFileNames = fileUploadJpg.stream().map(item -> String.valueOf(item.getUploadFileName())).collect(Collectors.toList());
for (MultipartFile file : files) {
if (!originalFileNames.contains(file.getOriginalFilename())) {
log.info("文件名:" + file.getOriginalFilename() + "与病案号:" + patientId + "集合中文件名不匹配");
return CommonResult.failed("文件名:" + file.getOriginalFilename() + "与病案号:" + patientId + "集合中中文名不匹配");
}
}
final String source = "lianzhong";
List<TbasicSub> tbasicSubList = this.getTbasicSubList(fileUploadJpg);
//查询是否存在更新,不存在新增
Tbasic oldBasic = getOldTbasic(fileUploadJpg.get(0));
Tbasic tbasic = oldBasic;
if (oldBasic == null) {
ArrayList<Tbasic> tbasics = new ArrayList<>();
//组织基础数据
Tbasic addTbasic = this.getTbasic(fileUploadJpg);
tbasics.add(addTbasic);
basicDeptService.handleDept(tbasics);
tbasic = addTbasic;
basicMapper.addBasic(tbasics);
log.info("批次新增PatientId为:" + patientId + "的基础数据成功");
} else {
//删除tbasic拓展表
basicMapper.delTbasicSub(oldBasic.getPatientId());
}
for (TbasicSub sub : tbasicSubList) {
sub.setPatientId(tbasic.getPatientId());
}
basicMapper.insertOrUpdateTbasicSub(tbasicSubList);
// 删除旧的存在的同名的联众文件数据、图像
if (oldBasic != null) {
List<ScanAssort> scanAssort = scanAssortMapper.getScanAssort(oldBasic.getPatientId(), source);
if (!CollectionUtils.isEmpty(scanAssort)) {
for (MultipartFile file : files) {
String originalFilename = file.getOriginalFilename();
for (ScanAssort assort : scanAssort) {
if (originalFilename.equals(assort.getScanPage())) {
File oldFile = new File(assort.getImagePath() + File.separatorChar + assort.getScanPage());
try {
oldFile.delete(); // 删除照片
int i = scanAssortMapper.delScanAssortById(assort.getId());
break;
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
// 保存文件和文件数据
String filePathdir = createDirectory(patientId, admissTimes, admissId, disDate);
//保存文件
ArrayList<ScanAssort> scanAssorts = new ArrayList<>();
for (MultipartFile file : files) {
for (FileUploadJpgDto dto : fileUploadJpg) {
//上传原文件名与实际文件名一致
if (dto.getUploadFileName().equals(file.getOriginalFilename())) {
//记录排序
final int[] sort = {0};
ScanAssort tScanAssortDto = addScanAssort(tbasic.getPatientId(), filePathdir, file, dto, sort);
if (Objects.isNull(tScanAssortDto)) {
log.info("批次病案主键:" + tbasic.getPatientId() + "中" + dto.getFileTitle() + "中保存失败");
} else {
tScanAssortDto.setSource(source);
scanAssorts.add(tScanAssortDto);
}
}
}
}
if (!scanAssortMapper.addScanAssort(scanAssorts)) {
log.info(patientId + "保存数据库失败");
return CommonResult.failed(patientId + "保存数据库失败");
}
log.info("本次批次传输成功病案主键为:" + patientId);
return CommonResult.success("上传完成");
}
private Tbasic getOldTbasic(FileUploadJpgDto fileUploadJpgDto) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// String admissId = fileUploadJpgDto.getAdmissId();
@ -328,7 +442,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
String month = parts[1];
String day = parts[2];
//文件保存目录
String filePathdir = savePath + File.separatorChar + year + File.separatorChar + month + File.separatorChar + day+File.separatorChar+ admissId +"_"+ admissTimes +File.separatorChar+ patientId;
String filePathdir = savePath + File.separatorChar + year + File.separatorChar + month + File.separatorChar + day + File.separatorChar + admissId + "_" + admissTimes + File.separatorChar + patientId;
File filePath = new File(filePathdir);
//判断文件夹是否存在不存在创建文件夹
if (!filePath.exists()) {
@ -339,7 +453,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
private List<TbasicSub> getTbasicSubList(List<FileUploadJpgDto> tbasicList) {
return tbasicList.stream().map(m->{
return tbasicList.stream().map(m -> {
TbasicSub tbasicSub = new TbasicSub();
tbasicSub.setBirthday(m.getBirthday());
tbasicSub.setPatientId(m.getPatientId());
@ -379,7 +493,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
Tbasic addTbasic = new Tbasic();
addTbasic.setPatientId(String.valueOf(SnowflakeIdWorker.idWorker.nextId()));
addTbasic.setAdmissTimes(fileUploadJpgDto.getAdmissTimes());
if(addTbasic.getAdmissTimes()==null){
if (addTbasic.getAdmissTimes() == null) {
addTbasic.setAdmissTimes(0);
}
addTbasic.setInpatientNo(fileUploadJpgDto.getInpatientNo());

@ -59,6 +59,9 @@
<delete id="delScanAssort">
delete from docus_archivefile.t_scan_assort where patient_id=#{patientId} and source=#{source}
</delete>
<delete id="delScanAssortById">
delete from docus_archivefile.t_scan_assort where id=#{id};
</delete>
<select id="getListByPid" resultType="com.docus.demo.entity.ScanAssort">
SELECT id,
patient_id,

Loading…
Cancel
Save