From f894287a00dfec2ab6a77628e34f10a1366a6f2a Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Fri, 6 Sep 2024 17:05:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=AB=E6=8F=8F=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E7=AE=B1=E5=8F=B7=E5=92=8C=E6=82=A3=E8=80=85=E7=97=85=E6=A1=88?= =?UTF-8?q?=E4=B8=BB=E9=94=AE=E4=B8=B4=E6=97=B6=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemporaryFunctionController.java | 40 +++++++++++ .../com/docus/demo/dto/BasicCorrectDto.java | 25 +++++++ .../demo/facade/ISyncBasicDataService.java | 5 ++ .../docus/demo/mapper/mysql/BasicMapper.java | 5 +- .../demo/mapper/mysql/ScanAssortMapper.java | 2 + .../docus/demo/service/SyncBasicDataImpl.java | 68 ++++++++++++++++++- .../docus/demo/service/SyncBasicFileImpl.java | 2 +- .../resources/mapper/mysql/BasicMapper.xml | 16 ++++- .../mapper/mysql/ScanAssortMapper.xml | 3 + 9 files changed, 160 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/docus/demo/controller/TemporaryFunctionController.java create mode 100644 src/main/java/com/docus/demo/dto/BasicCorrectDto.java diff --git a/src/main/java/com/docus/demo/controller/TemporaryFunctionController.java b/src/main/java/com/docus/demo/controller/TemporaryFunctionController.java new file mode 100644 index 0000000..8f057be --- /dev/null +++ b/src/main/java/com/docus/demo/controller/TemporaryFunctionController.java @@ -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 basicCorrectDtos){ + syncBasicDataService.scanBasicCorrect(basicCorrectDtos); + return CommonResult.success("成功!"); + } + + + +} diff --git a/src/main/java/com/docus/demo/dto/BasicCorrectDto.java b/src/main/java/com/docus/demo/dto/BasicCorrectDto.java new file mode 100644 index 0000000..9d97d55 --- /dev/null +++ b/src/main/java/com/docus/demo/dto/BasicCorrectDto.java @@ -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; + +} diff --git a/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java b/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java index a40f417..d70d4ba 100644 --- a/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java +++ b/src/main/java/com/docus/demo/facade/ISyncBasicDataService.java @@ -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 basicCorrectDtos); } 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 8e57a8e..27c9763 100644 --- a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java +++ b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java @@ -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); } 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 83bc81c..8eb7309 100644 --- a/src/main/java/com/docus/demo/mapper/mysql/ScanAssortMapper.java +++ b/src/main/java/com/docus/demo/mapper/mysql/ScanAssortMapper.java @@ -33,4 +33,6 @@ public interface ScanAssortMapper { int delScanAssort(@Param("patientId")String patientId,@Param("source")String source); ListgetScanAssort(@Param("patientId")String patientId,@Param("source")String source); + + int updatePatientId(@Param("oldPatId") String oldBasicPatientId, @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 4bc96a9..177efb8 100644 --- a/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java +++ b/src/main/java/com/docus/demo/service/SyncBasicDataImpl.java @@ -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 basicCorrectDtos) { + SimpleDateFormat inFormat = new SimpleDateFormat("yyyyMMdd"); + List 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 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 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 getTbasicSubList(List tbasicList) { return tbasicList.stream().map(m->{ TbasicSub tbasicSub = new TbasicSub(); diff --git a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java index c9fb250..12b3c1a 100644 --- a/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java +++ b/src/main/java/com/docus/demo/service/SyncBasicFileImpl.java @@ -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; } diff --git a/src/main/resources/mapper/mysql/BasicMapper.xml b/src/main/resources/mapper/mysql/BasicMapper.xml index 9fd9731..8b6ac01 100644 --- a/src/main/resources/mapper/mysql/BasicMapper.xml +++ b/src/main/resources/mapper/mysql/BasicMapper.xml @@ -71,6 +71,9 @@ WHERE patient_id = #{pid} + + update docus_medicalrecord.t_basic set patient_id=#{newPatId} ,ph=#{ph} where patient_id=#{oldPatId} + delete from docus_medicalrecord.t_basic where admiss_id=#{admissId} @@ -164,7 +167,7 @@ limit #{pageStart} ,#{pageEnd} - select patient_id, ph, admiss_times, @@ -175,6 +178,17 @@ from docus_medicalrecord.t_basic where admiss_id = #{admissId} + \ 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 2b81450..931bb75 100644 --- a/src/main/resources/mapper/mysql/ScanAssortMapper.xml +++ b/src/main/resources/mapper/mysql/ScanAssortMapper.xml @@ -44,6 +44,9 @@ ,#{item.creater},#{item.createrName},#{item.createTime},#{item.sort},#{item.taskId},#{item.source}) + + update docus_archivefile.t_scan_assort set patient_id=#{newPatId} where patient_id=#{oldPatId} + delete FROM docus_archivefile.t_scan_assort where patient_id in