陈昶聿
2026-10-10 5723d458f427570793e26c13d4ecf22d096e9519
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.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;
 
/**
 * 妇科档案Service业务层处理
 *
 * @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)
    {
        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("妇科档案入参为空,请检查入参");
        }
 
        // 只传了详情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();
    }
}