陈昶聿
2026-10-12 7b9a3eb074edc9b37950cd6457207a02192c61ce
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
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
    @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("儿科档案入参为空,请检查入参");
        }
 
        // 只传了详情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();
    }
}