陈昶聿
2026-10-10 5723d458f427570793e26c13d4ecf22d096e9519
smartor/src/main/java/com/smartor/service/impl/PatMaternityArchiveServiceImpl.java
@@ -1,11 +1,19 @@
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.PatMaternityArchive;
import com.smartor.domain.PatMaternityArchiveDetail;
import com.smartor.mapper.PatMaternityArchiveMapper;
import com.smartor.service.IPatMaternityArchiveDetailService;
import com.smartor.service.IPatMaternityArchiveService;
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;
@@ -15,11 +23,15 @@
 * @author ruoyi
 * @date 2026-10-09
 */
@Slf4j
@Service
public class PatMaternityArchiveServiceImpl implements IPatMaternityArchiveService
{
    @Autowired
    private PatMaternityArchiveMapper patMaternityArchiveMapper;
    @Autowired
    private IPatMaternityArchiveDetailService patMaternityArchiveDetailService;
    @Override
    public PatMaternityArchive selectPatMaternityArchiveById(Long id)
@@ -54,8 +66,82 @@
    }
    @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);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int insertOrUpdateMaternityArchive(PatMaternityArchiveDetail patMaternityArchiveDetail) {
        if (patMaternityArchiveDetail == null) {
            log.error("insertOrUpdateMaternityArchive入参为空,请检查入参");
            throw new BaseException("妇科档案入参为空,请检查入参");
        }
        // 只传了详情id时,反查出对应的档案主键id,保证后续能正确更新主表
        if (patMaternityArchiveDetail.getId() != null && patMaternityArchiveDetail.getArchiveid() == null) {
            PatMaternityArchiveDetail existDetail = patMaternityArchiveDetailService.selectPatMaternityArchiveDetailById(patMaternityArchiveDetail.getId());
            if (existDetail != null) {
                patMaternityArchiveDetail.setArchiveid(existDetail.getArchiveid());
            }
        }
        // 将详情中的公共字段复制到主表对象
        PatMaternityArchive patMaternityArchive = DtoConversionUtils.sourceToTarget(patMaternityArchiveDetail, PatMaternityArchive.class);
        if (patMaternityArchive == null) {
            throw new BaseException("妇科档案对象转换失败,请检查入参");
        }
        // 防止把详情表id(patMaternityArchiveDetail.id)当作主表id,主表id必须以archiveid为准
        patMaternityArchive.setId(patMaternityArchiveDetail.getArchiveid());
        // 主表:有id且库中存在则修改,否则新增
        if (patMaternityArchive.getId() != null
                && patMaternityArchiveMapper.selectPatMaternityArchiveById(patMaternityArchive.getId()) != null) {
            patMaternityArchive.setUpdateTime(DateUtils.getNowDate());
            patMaternityArchiveMapper.updatePatMaternityArchive(patMaternityArchive);
        } else {
            patMaternityArchive.setCreateTime(DateUtils.getNowDate());
            if (StringUtils.isEmpty(patMaternityArchive.getDelFlag())) {
                patMaternityArchive.setDelFlag("0");
            }
            patMaternityArchiveMapper.insertPatMaternityArchive(patMaternityArchive);
        }
        // 回填主表id到详情,同步生成/更新详情表
        patMaternityArchiveDetail.setArchiveid(patMaternityArchive.getId());
        Long detailId = patMaternityArchiveDetail.getId();
        if (detailId == null && patMaternityArchiveDetail.getArchiveid() != null) {
            PatMaternityArchiveDetail query = new PatMaternityArchiveDetail();
            query.setArchiveid(patMaternityArchiveDetail.getArchiveid());
            List<PatMaternityArchiveDetail> existList = patMaternityArchiveDetailService.selectPatMaternityArchiveDetailList(query);
            if (CollectionUtils.isNotEmpty(existList)) {
                detailId = existList.get(0).getId();
            }
        }
        if (detailId != null) {
            patMaternityArchiveDetail.setId(detailId);
            patMaternityArchiveDetailService.updatePatMaternityArchiveDetail(patMaternityArchiveDetail);
        } else {
            if (StringUtils.isEmpty(patMaternityArchiveDetail.getDelFlag())) {
                patMaternityArchiveDetail.setDelFlag("0");
            }
            patMaternityArchiveDetailService.insertPatMaternityArchiveDetail(patMaternityArchiveDetail);
        }
        log.info("insertOrUpdateMaternityArchive处理完成,主表id:{},详情id:{}", patMaternityArchive.getId(), patMaternityArchiveDetail.getId());
        return patMaternityArchive.getId().intValue();
    }
}