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;
|
|
/**
|
* 儿科档案Service业务层处理
|
*
|
* @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)
|
{
|
return patChildArchiveMapper.selectPatChildArchiveById(id);
|
}
|
|
@Override
|
public List<PatChildArchive> selectPatChildArchiveList(PatChildArchive patChildArchive)
|
{
|
return patChildArchiveMapper.selectPatChildArchiveList(patChildArchive);
|
}
|
|
@Override
|
public int insertPatChildArchive(PatChildArchive patChildArchive)
|
{
|
patChildArchive.setCreateTime(DateUtils.getNowDate());
|
return patChildArchiveMapper.insertPatChildArchive(patChildArchive);
|
}
|
|
@Override
|
public int updatePatChildArchive(PatChildArchive patChildArchive)
|
{
|
patChildArchive.setUpdateTime(DateUtils.getNowDate());
|
return patChildArchiveMapper.updatePatChildArchive(patChildArchive);
|
}
|
|
@Override
|
public int deletePatChildArchiveByIds(Long[] 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("儿科档案入参为空,请检查入参");
|
}
|
|
// 只传了详情id时,反查出对应的档案主键id,保证后续能正确更新主表
|
if (patChildArchiveDetail.getId() != null && patChildArchiveDetail.getArchiveid() == null) {
|
PatChildArchiveDetail existDetail = patChildArchiveDetailService.selectPatChildArchiveDetailById(patChildArchiveDetail.getId());
|
if (existDetail != null) {
|
patChildArchiveDetail.setArchiveid(existDetail.getArchiveid());
|
}
|
}
|
|
// 将详情中的公共字段复制到主表对象
|
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();
|
}
|
}
|