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.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;
|
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 PatMaternityArchiveServiceImpl implements IPatMaternityArchiveService
|
{
|
@Autowired
|
private PatMaternityArchiveMapper patMaternityArchiveMapper;
|
|
@Autowired
|
private IPatMaternityArchiveDetailService patMaternityArchiveDetailService;
|
@Autowired
|
private PatMaternityArchiveDetailMapper patMaternityArchiveDetailMapper;
|
|
@Override
|
public PatMaternityArchive selectPatMaternityArchiveById(Long id)
|
{
|
return patMaternityArchiveMapper.selectPatMaternityArchiveById(id);
|
}
|
|
@Override
|
public List<PatMaternityArchive> selectPatMaternityArchiveList(PatMaternityArchive patMaternityArchive)
|
{
|
return patMaternityArchiveMapper.selectPatMaternityArchiveList(patMaternityArchive);
|
}
|
|
@Override
|
public int insertPatMaternityArchive(PatMaternityArchive patMaternityArchive)
|
{
|
patMaternityArchive.setCreateTime(DateUtils.getNowDate());
|
return patMaternityArchiveMapper.insertPatMaternityArchive(patMaternityArchive);
|
}
|
|
@Override
|
public int updatePatMaternityArchive(PatMaternityArchive patMaternityArchive)
|
{
|
patMaternityArchive.setUpdateTime(DateUtils.getNowDate());
|
return patMaternityArchiveMapper.updatePatMaternityArchive(patMaternityArchive);
|
}
|
|
@Override
|
public int deletePatMaternityArchiveByIds(Long[] ids)
|
{
|
return patMaternityArchiveMapper.deletePatMaternityArchiveByIds(ids);
|
}
|
|
@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("妇科档案入参为空,请检查入参");
|
}
|
|
//保证同一就诊记录同一档案类型只能生成一条
|
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 (CollectionUtils.isNotEmpty(patMaternityArchiveDetailOlds)) {
|
PatMaternityArchiveDetail existDetail = patMaternityArchiveDetailOlds.get(0);
|
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();
|
}
|
}
|