feat: 扫描更新箱号和患者病案主键临时方案

jp2demo1.0
wyb 11 months ago
parent 10ca2a5838
commit f894287a00

@ -0,0 +1,40 @@
package com.docus.demo.controller;
import com.docus.demo.dto.BasicCorrectDto;
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 com.docus.demo.facade.ISyncBasicDataService;
import com.docus.demo.facade.ISyncBasicFileService;
import com.docus.demo.facade.IWebService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@Api(value = "临时方法接口", tags = "临时方法接口")
@RestController("/tempfunc")
@Slf4j
public class TemporaryFunctionController {
@Autowired
private ISyncBasicDataService syncBasicDataService;
@ApiOperation("扫描软件修正基础数据临时方案")
@PostMapping("/scan/basicCorrect")
public CommonResult<?> scanBasicCorrect(@RequestBody @Validated List<BasicCorrectDto> basicCorrectDtos){
syncBasicDataService.scanBasicCorrect(basicCorrectDtos);
return CommonResult.success("成功!");
}
}

@ -0,0 +1,25 @@
package com.docus.demo.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author YongBin Wen
* @date 2024/9/6 16:05
*/
@Data
@ApiModel("扫描软件修正基础表数据")
public class BasicCorrectDto {
@ApiModelProperty("病案主键")
private String patientId;
@ApiModelProperty("病案号")
private String inpatientNo;
@ApiModelProperty("患者出院日期 yyyyMMdd")
private String disDate;
@ApiModelProperty("患者姓名")
private String name;
@ApiModelProperty("箱号")
private String ph;
}

@ -1,13 +1,18 @@
package com.docus.demo.facade;
import com.docus.demo.dto.BasicCorrectDto;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.CommonResult;
import java.util.List;
public interface ISyncBasicDataService {
CommonResult<?> syncBasicData(SyncBasicDataDto syncBasicDataDto);
CommonResult<?> syncLzBasicData(SyncBasicDataDto syncBasicDataDto);
void scanBasicCorrect(List<BasicCorrectDto> basicCorrectDtos);
}

@ -37,8 +37,11 @@ public interface BasicMapper {
void delTbasicSub(@Param("patientId")String patientId);
Tbasic getTbasicPatientId(@Param("admissId")String admissId);
Tbasic getTbasicByAdmissId(@Param("admissId")String admissId);
Tbasic getTbasicByPatientId(@Param("patientId")String patientId);
Boolean delTbasicByAdmissId(@Param("admissId")String admissId);
int updateScanBasicCorrect(@Param("oldPatId") String oldBasicPatientId, @Param("newPatId") String newPatientId,@Param("ph") String ph);
}

@ -33,4 +33,6 @@ public interface ScanAssortMapper {
int delScanAssort(@Param("patientId")String patientId,@Param("source")String source);
List<ScanAssort>getScanAssort(@Param("patientId")String patientId,@Param("source")String source);
int updatePatientId(@Param("oldPatId") String oldBasicPatientId, @Param("newPatId") String newPatientId);
}

@ -1,8 +1,10 @@
package com.docus.demo.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.docus.demo.dto.BasicCorrectDto;
import com.docus.demo.dto.SyncBasicDataDto;
import com.docus.demo.entity.CommonResult;
import com.docus.demo.entity.Tbasic;
@ -13,6 +15,7 @@ import com.docus.demo.entity.sqlserver1.Toperation;
import com.docus.demo.entity.sqlserver1.Tpatientvisit;
import com.docus.demo.facade.ISyncBasicDataService;
import com.docus.demo.mapper.mysql.BasicMapper;
import com.docus.demo.mapper.mysql.ScanAssortMapper;
import com.docus.demo.mapper.sqlserver.TcardMapper;
import com.docus.demo.mapper.sqlserver1.PaintVisitMapper;
import com.docus.demo.utils.SnowflakeIdWorker;
@ -22,9 +25,7 @@ import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@ -39,6 +40,8 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
private PaintVisitMapper paintVisitMapper;
@Autowired
private TcardMapper tcardMapper;
@Autowired
private ScanAssortMapper scanAssortMapper;
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
// private final ExecutorService executor = Executors.newFixedThreadPool(7);
@ -98,6 +101,65 @@ public class SyncBasicDataImpl implements ISyncBasicDataService {
return CommonResult.success("同步成功");
}
@Override
public void scanBasicCorrect(List<BasicCorrectDto> basicCorrectDtos) {
SimpleDateFormat inFormat = new SimpleDateFormat("yyyyMMdd");
List<BasicCorrectDto> afterSyncHandle = new ArrayList<>();
for (BasicCorrectDto correctDto : basicCorrectDtos) {
try {
String newPatientId = correctDto.getPatientId();
String ph = correctDto.getPh();
String inpatientNo = correctDto.getInpatientNo();
String inDisDateStr = correctDto.getDisDate();
Date disDate = inFormat.parse(inDisDateStr);
String disDateStr = simpleDateFormat.format(disDate);
List<String> inpatientNoList = Collections.singletonList(inpatientNo);
SyncBasicDataDto syncBasicDataDto = new SyncBasicDataDto();
syncBasicDataDto.setStartDate(disDateStr + " 00:00:00");
syncBasicDataDto.setEndDate(disDateStr + " 23:59:59");
syncBasicDataDto.setInpatientNoList(inpatientNoList);
Tbasic oldBasic = basicMapper.getTbasicByPatientId(newPatientId);
// 二次确认
if (oldBasic == null) {
List<Tbasic> oldBasicList = basicMapper.getOldBasicList(inpatientNoList, syncBasicDataDto);
// 没数据,加到同步
if (CollUtil.isEmpty(oldBasicList)) {
SyncBasicDataDto syncDto = new SyncBasicDataDto();
syncDto.setInpatientNoList(inpatientNoList);
syncDto.setStartDate(disDateStr);
syncDto.setEndDate(disDateStr);
syncDto.setLimit(1);
syncBasicData(syncDto);
// 同步之后在处理
afterSyncHandle.add(correctDto);
continue;
}
oldBasic = oldBasicList.get(0);
}
String oldBasicPatientId = oldBasic.getPatientId();
// 更新箱号和patientId,如果更换了patientId,文件表也更换patientId
basicMapper.updateScanBasicCorrect(oldBasicPatientId, newPatientId, ph);
if (!newPatientId.equals(oldBasicPatientId)) {
scanAssortMapper.updatePatientId(oldBasicPatientId, newPatientId);
}
} catch (Exception ex) {
log.error("扫描修正基础数据出错了!" + ex.getMessage(), ex);
}
}
if (CollUtil.isNotEmpty(afterSyncHandle)) {
scanBasicCorrect(afterSyncHandle);
}
}
public static void main(String[] args) {
LocalDate startDate = LocalDate.parse("2024-05-06");
System.out.println(startDate);
}
private List<TbasicSub> getTbasicSubList(List<Tbasic> tbasicList) {
return tbasicList.stream().map(m->{
TbasicSub tbasicSub = new TbasicSub();

@ -291,7 +291,7 @@ public class SyncBasicFileImpl implements ISyncBasicFileService {
private Tbasic getOldTbasic(FileUploadJpgDto fileUploadJpgDto) {
String admissId = fileUploadJpgDto.getAdmissId();
Tbasic getByAdmissId = basicMapper.getTbasicPatientId(admissId);
Tbasic getByAdmissId = basicMapper.getTbasicByAdmissId(admissId);
if (getByAdmissId != null) {
return getByAdmissId;
}

@ -71,6 +71,9 @@
WHERE patient_id = #{pid}
</update>
<update id="updateScanBasicCorrect">
update docus_medicalrecord.t_basic set patient_id=#{newPatId} ,ph=#{ph} where patient_id=#{oldPatId}
</update>
<delete id="delTbasicByAdmissId">
delete from docus_medicalrecord.t_basic where admiss_id=#{admissId}
</delete>
@ -164,7 +167,7 @@
</if>
limit #{pageStart} ,#{pageEnd}
</select>
<select id="getTbasicPatientId" resultType="com.docus.demo.entity.Tbasic">
<select id="getTbasicByAdmissId" resultType="com.docus.demo.entity.Tbasic">
select patient_id,
ph,
admiss_times,
@ -175,6 +178,17 @@
from docus_medicalrecord.t_basic
where admiss_id = #{admissId}
</select>
<select id="getTbasicByPatientId" resultType="com.docus.demo.entity.Tbasic">
select patient_id,
ph,
admiss_times,
inpatient_no,
admiss_date,
`name`,
dis_date
from docus_medicalrecord.t_basic
where patient_id = #{patientId}
</select>
</mapper>

@ -44,6 +44,9 @@
,#{item.creater},#{item.createrName},#{item.createTime},#{item.sort},#{item.taskId},#{item.source})
</foreach>
</insert>
<update id="updatePatientId">
update docus_archivefile.t_scan_assort set patient_id=#{newPatId} where patient_id=#{oldPatId}
</update>
<delete id="deleteByPid">
delete FROM docus_archivefile.t_scan_assort
where patient_id in

Loading…
Cancel
Save