陈昶聿
23 小时以前 1787e235922ca30045c6875269c5114defef52d7
smartor/src/main/java/com/smartor/service/impl/PatChildArchiveServiceImpl.java
@@ -88,14 +88,50 @@
            log.error("insertOrUpdateChildArchive入参为空,请检查入参");
            throw new BaseException("儿科档案入参为空,请检查入参");
        }
        if (StringUtils.isEmpty(patChildArchiveDetail.getOuthospno())) {
            throw new BaseException("儿科档案入参门诊编号outhospno为空,请检查入参门诊编号");
        }
        if (StringUtils.isEmpty(patChildArchiveDetail.getArchiveType())) {
            throw new BaseException("儿科档案入参档案类型archiveType为空,请检查入参档案类型");
        }
        // 只传了详情id时,反查出对应的档案主键id,保证后续能正确更新主表
        if (patChildArchiveDetail.getId() != null && patChildArchiveDetail.getArchiveid() == null) {
            PatChildArchiveDetail existDetail = patChildArchiveDetailService.selectPatChildArchiveDetailById(patChildArchiveDetail.getId());
            if (existDetail != null) {
                patChildArchiveDetail.setArchiveid(existDetail.getArchiveid());
        // 按业务键查详情
        PatChildArchiveDetail key = new PatChildArchiveDetail();
        key.setOrgid(patChildArchiveDetail.getOrgid());
        key.setPatid(patChildArchiveDetail.getPatid());
        key.setOuthospno(patChildArchiveDetail.getOuthospno());
        key.setArchiveType(patChildArchiveDetail.getArchiveType());
        List<PatChildArchiveDetail> olds =
                patChildArchiveDetailService.selectPatChildArchiveDetailList(key);
        Long existArchiveId = null;
        Long existDetailId = null;
        if (CollectionUtils.isNotEmpty(olds)) {
            existArchiveId = olds.get(0).getArchiveid();
            existDetailId = olds.get(0).getId();
        }
        // 详情没查到,再兜底按同样键查主表,避免主表重复
        if (existArchiveId == null) {
            PatChildArchive mainKey = new PatChildArchive();
            mainKey.setOrgid(patChildArchiveDetail.getOrgid());
            mainKey.setPatid(patChildArchiveDetail.getPatid());
            mainKey.setOuthospno(patChildArchiveDetail.getOuthospno());
            mainKey.setArchiveType(patChildArchiveDetail.getArchiveType());
            List<PatChildArchive> mainOlds =
                    patChildArchiveMapper.selectPatChildArchiveList(mainKey);
            if (CollectionUtils.isNotEmpty(mainOlds)) {
                existArchiveId = mainOlds.get(0).getId();
            }
        }
        patChildArchiveDetail.setArchiveid(existArchiveId);
        // 后面更新详情时,优先用业务键匹配到的 detail id
        Long detailId = patChildArchiveDetail.getId();
        if (detailId == null) {
            detailId = existDetailId;
        }
        // 将详情中的公共字段复制到主表对象
        PatChildArchive patChildArchive = DtoConversionUtils.sourceToTarget(patChildArchiveDetail, PatChildArchive.class);
@@ -121,7 +157,7 @@
        // 回填主表id到详情,同步生成/更新详情表
        patChildArchiveDetail.setArchiveid(patChildArchive.getId());
        Long detailId = patChildArchiveDetail.getId();
//      Long detailId = patChildArchiveDetail.getId();
        if (detailId == null && patChildArchiveDetail.getArchiveid() != null) {
            PatChildArchiveDetail query = new PatChildArchiveDetail();
            query.setArchiveid(patChildArchiveDetail.getArchiveid());