陈昶聿
10 天以前 816eea15ab68b3efb03786be616687b2e197014f
smartor/src/main/java/com/smartor/service/impl/PatMaternityArchiveServiceImpl.java
@@ -4,8 +4,11 @@
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.domain.PatMaternityArchive;
import com.smartor.domain.PatMaternityArchiveDetail;
import com.smartor.mapper.PatMaternityArchiveDetailMapper;
import com.smartor.mapper.PatMaternityArchiveMapper;
import com.smartor.service.IPatMaternityArchiveDetailService;
import com.smartor.service.IPatMaternityArchiveService;
@@ -32,6 +35,8 @@
    @Autowired
    private IPatMaternityArchiveDetailService patMaternityArchiveDetailService;
    @Autowired
    private PatMaternityArchiveDetailMapper patMaternityArchiveDetailMapper;
    @Override
    public PatMaternityArchive selectPatMaternityArchiveById(Long id)
@@ -66,6 +71,16 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int batchDeletePatMaternityArchiveByIds(Long[] ids)
    {
        // 先删除对应的详情表数据
        patMaternityArchiveDetailService.deletePatMaternityArchiveDetailByArchiveIds(ids);
        // 再删除主表数据
        return patMaternityArchiveMapper.deletePatMaternityArchiveByIds(ids);
    }
    @Override
    public int deletePatMaternityArchiveById(Long id)
    {
        return patMaternityArchiveMapper.deletePatMaternityArchiveById(id);
@@ -79,9 +94,63 @@
            throw new BaseException("妇科档案入参为空,请检查入参");
        }
        //保证同一就诊记录同一档案类型只能生成一条
        PatMaternityArchiveDetail patMaternityArchiveDetailVo = new PatMaternityArchiveDetail();
        patMaternityArchiveDetailVo.setOrgid(patMaternityArchiveDetail.getOrgid());
        patMaternityArchiveDetailVo.setPatid(patMaternityArchiveDetail.getPatid());
        patMaternityArchiveDetailVo.setOuthospno(patMaternityArchiveDetail.getOuthospno());
        patMaternityArchiveDetailVo.setArchiveType(patMaternityArchiveDetail.getArchiveType());
        List<PatMaternityArchiveDetail> patMaternityArchiveDetailOlds
                = patMaternityArchiveDetailService.selectPatMaternityArchiveDetailList(patMaternityArchiveDetailVo);
        if (StringUtils.isEmpty(patMaternityArchiveDetail.getOuthospno())) {
            throw new BaseException("妇科档案入参门诊编号outhospno为空,请检查入参门诊编号");
        }
        if (StringUtils.isEmpty(patMaternityArchiveDetail.getArchiveType())) {
            throw new BaseException("妇科档案入参档案类型archiveType为空,请检查入参档案类型");
        }
        // 按业务键查详情
        PatMaternityArchiveDetail key = new PatMaternityArchiveDetail();
        key.setOrgid(patMaternityArchiveDetail.getOrgid());
        key.setPatid(patMaternityArchiveDetail.getPatid());
        key.setOuthospno(patMaternityArchiveDetail.getOuthospno());
        key.setArchiveType(patMaternityArchiveDetail.getArchiveType());
        List<PatMaternityArchiveDetail> olds =
                patMaternityArchiveDetailService.selectPatMaternityArchiveDetailList(key);
        Long existArchiveId = null;
        Long existDetailId = null;
        if (CollectionUtils.isNotEmpty(olds)) {
            existArchiveId = olds.get(0).getArchiveid();
            existDetailId = olds.get(0).getId();
        }
        // 详情没查到,再兜底按同样键查主表,避免主表重复
        if (existArchiveId == null) {
            PatMaternityArchive mainKey = new PatMaternityArchive();
            mainKey.setOrgid(patMaternityArchiveDetail.getOrgid());
            mainKey.setPatid(patMaternityArchiveDetail.getPatid());
            mainKey.setOuthospno(patMaternityArchiveDetail.getOuthospno());
            mainKey.setArchiveType(patMaternityArchiveDetail.getArchiveType());
            List<PatMaternityArchive> mainOlds =
                    patMaternityArchiveMapper.selectPatMaternityArchiveList(mainKey);
            if (CollectionUtils.isNotEmpty(mainOlds)) {
                existArchiveId = mainOlds.get(0).getId();
            }
        }
        patMaternityArchiveDetail.setArchiveid(existArchiveId);
        // 后面更新详情时,优先用业务键匹配到的 detail id
        Long detailId = patMaternityArchiveDetail.getId();
        if (detailId == null) {
            detailId = existDetailId;
        }
        // 只传了详情id时,反查出对应的档案主键id,保证后续能正确更新主表
        if (patMaternityArchiveDetail.getId() != null && patMaternityArchiveDetail.getArchiveid() == null) {
            PatMaternityArchiveDetail existDetail = patMaternityArchiveDetailService.selectPatMaternityArchiveDetailById(patMaternityArchiveDetail.getId());
        if (CollectionUtils.isNotEmpty(patMaternityArchiveDetailOlds)) {
            PatMaternityArchiveDetail existDetail = patMaternityArchiveDetailOlds.get(0);
            if (existDetail != null) {
                patMaternityArchiveDetail.setArchiveid(existDetail.getArchiveid());
            }
@@ -111,7 +180,7 @@
        // 回填主表id到详情,同步生成/更新详情表
        patMaternityArchiveDetail.setArchiveid(patMaternityArchive.getId());
        Long detailId = patMaternityArchiveDetail.getId();
//        Long detailId = patMaternityArchiveDetail.getId();
        if (detailId == null && patMaternityArchiveDetail.getArchiveid() != null) {
            PatMaternityArchiveDetail query = new PatMaternityArchiveDetail();
            query.setArchiveid(patMaternityArchiveDetail.getArchiveid());