| | |
| | | package com.smartor.service.impl; |
| | | |
| | | import com.ruoyi.common.exception.base.BaseException; |
| | | import com.ruoyi.common.utils.DateUtils; |
| | | import com.ruoyi.common.utils.DtoConversionUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.smartor.domain.PatChildArchive; |
| | | import com.smartor.domain.PatChildArchiveDetail; |
| | | import com.smartor.mapper.PatChildArchiveMapper; |
| | | import com.smartor.service.IPatChildArchiveDetailService; |
| | | import com.smartor.service.IPatChildArchiveService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.collections4.CollectionUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | * @author ruoyi |
| | | * @date 2026-10-09 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class PatChildArchiveServiceImpl implements IPatChildArchiveService |
| | | { |
| | | @Autowired |
| | | private PatChildArchiveMapper patChildArchiveMapper; |
| | | |
| | | @Autowired |
| | | private IPatChildArchiveDetailService patChildArchiveDetailService; |
| | | |
| | | @Override |
| | | public PatChildArchive selectPatChildArchiveById(Long id) |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int batchDeletePatChildArchiveByIds(Long[] ids) |
| | | { |
| | | // 先删除对应的详情表数据 |
| | | patChildArchiveDetailService.deletePatChildArchiveDetailByArchiveIds(ids); |
| | | // 再删除主表数据 |
| | | return patChildArchiveMapper.deletePatChildArchiveByIds(ids); |
| | | } |
| | | |
| | | @Override |
| | | public int deletePatChildArchiveById(Long id) |
| | | { |
| | | return patChildArchiveMapper.deletePatChildArchiveById(id); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int insertOrUpdateChildArchive(PatChildArchiveDetail patChildArchiveDetail) { |
| | | if (patChildArchiveDetail == null) { |
| | | log.error("insertOrUpdateChildArchive入参为空,请检查入参"); |
| | | throw new BaseException("儿科档案入参为空,请检查入参"); |
| | | } |
| | | if (StringUtils.isEmpty(patChildArchiveDetail.getOuthospno())) { |
| | | throw new BaseException("儿科档案入参门诊编号outhospno为空,请检查入参门诊编号"); |
| | | } |
| | | if (StringUtils.isEmpty(patChildArchiveDetail.getArchiveType())) { |
| | | throw new BaseException("儿科档案入参档案类型archiveType为空,请检查入参档案类型"); |
| | | } |
| | | |
| | | // 按业务键查详情 |
| | | 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); |
| | | if (patChildArchive == null) { |
| | | throw new BaseException("儿科档案对象转换失败,请检查入参"); |
| | | } |
| | | // 防止把详情表id(patChildArchiveDetail.id)当作主表id,主表id必须以archiveid为准 |
| | | patChildArchive.setId(patChildArchiveDetail.getArchiveid()); |
| | | |
| | | // 主表:有id且库中存在则修改,否则新增 |
| | | if (patChildArchive.getId() != null |
| | | && patChildArchiveMapper.selectPatChildArchiveById(patChildArchive.getId()) != null) { |
| | | patChildArchive.setUpdateTime(DateUtils.getNowDate()); |
| | | patChildArchiveMapper.updatePatChildArchive(patChildArchive); |
| | | } else { |
| | | patChildArchive.setCreateTime(DateUtils.getNowDate()); |
| | | if (StringUtils.isEmpty(patChildArchive.getDelFlag())) { |
| | | patChildArchive.setDelFlag("0"); |
| | | } |
| | | patChildArchiveMapper.insertPatChildArchive(patChildArchive); |
| | | } |
| | | |
| | | // 回填主表id到详情,同步生成/更新详情表 |
| | | patChildArchiveDetail.setArchiveid(patChildArchive.getId()); |
| | | |
| | | // Long detailId = patChildArchiveDetail.getId(); |
| | | if (detailId == null && patChildArchiveDetail.getArchiveid() != null) { |
| | | PatChildArchiveDetail query = new PatChildArchiveDetail(); |
| | | query.setArchiveid(patChildArchiveDetail.getArchiveid()); |
| | | List<PatChildArchiveDetail> existList = patChildArchiveDetailService.selectPatChildArchiveDetailList(query); |
| | | if (CollectionUtils.isNotEmpty(existList)) { |
| | | detailId = existList.get(0).getId(); |
| | | } |
| | | } |
| | | |
| | | if (detailId != null) { |
| | | patChildArchiveDetail.setId(detailId); |
| | | patChildArchiveDetailService.updatePatChildArchiveDetail(patChildArchiveDetail); |
| | | } else { |
| | | if (StringUtils.isEmpty(patChildArchiveDetail.getDelFlag())) { |
| | | patChildArchiveDetail.setDelFlag("0"); |
| | | } |
| | | patChildArchiveDetailService.insertPatChildArchiveDetail(patChildArchiveDetail); |
| | | } |
| | | |
| | | log.info("insertOrUpdateChildArchive处理完成,主表id:{},详情id:{}", patChildArchive.getId(), patChildArchiveDetail.getId()); |
| | | return patChildArchive.getId().intValue(); |
| | | } |
| | | } |