Jay
2024-10-12 0152278ce3c291d474a00203ac0896737dc3d7f5
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
package com.iailab.module.data.ind.item.service.impl;
 
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.iailab.framework.common.pojo.PageResult;
import com.iailab.framework.common.service.impl.BaseServiceImpl;
import com.iailab.framework.common.util.object.BeanUtils;
import com.iailab.module.data.common.enums.ItemTypeEnum;
import com.iailab.module.data.ind.item.dao.IndItemDao;
import com.iailab.module.data.ind.item.entity.IndItemAtomEntity;
import com.iailab.module.data.ind.item.entity.IndItemCalEntity;
import com.iailab.module.data.ind.item.entity.IndItemDerEntity;
import com.iailab.module.data.ind.item.entity.IndItemEntity;
import com.iailab.module.data.ind.item.service.IndItemAtomService;
import com.iailab.module.data.ind.item.service.IndItemService;
import com.iailab.module.data.ind.item.vo.IndItemPageReqVO;
import com.iailab.module.data.ind.item.vo.IndItemRespVO;
import com.iailab.module.data.ind.item.vo.IndItemSaveReqVO;
import com.iailab.module.data.point.common.IncreaseCodeEnum;
import com.iailab.module.data.point.service.DaSequenceNumService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.Date;
import java.util.List;
import java.util.UUID;
 
/**
 * @author PanZhibao
 * @Description
 * @createTime 2024年09月11日
 */
@Service
public class IndItemServiceImpl extends BaseServiceImpl<IndItemDao, IndItemEntity> implements IndItemService {
 
    @Autowired
    private IndItemAtomService indItemAtomService;
 
    @Autowired
    private IndItemDerServiceImpl indItemDerServiceImpl;
 
    @Autowired
    private IndItemCalServiceImpl indItemCalServiceImpl;
 
    @Autowired
    private DaSequenceNumService daSequenceNumService;
 
    @Override
    public PageResult<IndItemEntity> page(IndItemPageReqVO reqVO) {
        return baseDao.selectPage(reqVO);
    }
 
    @Override
    @DSTransactional(rollbackFor = Exception.class)
    public void create(IndItemSaveReqVO createReqVO) {
        IndItemEntity entity = BeanUtils.toBean(createReqVO, IndItemEntity.class);
        entity.setId(UUID.randomUUID().toString());
 
        if (ItemTypeEnum.ATOM.getCode().equals(createReqVO.getItemType())) {
            IndItemAtomEntity atomEntity = BeanUtils.toBean(createReqVO.getAtomItem(), IndItemAtomEntity.class);
            atomEntity.setId(UUID.randomUUID().toString());
            atomEntity.setItemId(entity.getId());
            indItemAtomService.insert(atomEntity);
            entity.setItemNo(daSequenceNumService.getAndIncreaseByCode(IncreaseCodeEnum.IND_A.name()));
        } else if (ItemTypeEnum.DER.getCode().equals(createReqVO.getItemType())) {
            IndItemDerEntity derEntity = BeanUtils.toBean(createReqVO.getDerItem(), IndItemDerEntity.class);
            derEntity.setId(UUID.randomUUID().toString());
            derEntity.setItemId(entity.getId());
            indItemDerServiceImpl.insert(derEntity);
            entity.setItemNo(daSequenceNumService.getAndIncreaseByCode(IncreaseCodeEnum.IND_D.name()));
        } else if (ItemTypeEnum.CAL.getCode().equals(createReqVO.getItemType())) {
            IndItemCalEntity calEntity = BeanUtils.toBean(createReqVO.getCalItem(), IndItemCalEntity.class);
            calEntity.setId(UUID.randomUUID().toString());
            calEntity.setItemId(entity.getId());
            indItemCalServiceImpl.insert(calEntity);
            entity.setItemNo(daSequenceNumService.getAndIncreaseByCode(IncreaseCodeEnum.IND_C.name()));
        }
        entity.setCreateTime(new Date());
        baseDao.insert(entity);
    }
 
    @Override
    @DSTransactional(rollbackFor = Exception.class)
    public void update(IndItemSaveReqVO updateReqVO) {
        IndItemEntity entity = BeanUtils.toBean(updateReqVO, IndItemEntity.class);
        entity.setUpdateTime(new Date());
        if (ItemTypeEnum.ATOM.getCode().equals(updateReqVO.getItemType())) {
            IndItemAtomEntity atomEntity = BeanUtils.toBean(updateReqVO.getAtomItem(), IndItemAtomEntity.class);
            indItemAtomService.updateById(atomEntity);
        } else if (ItemTypeEnum.DER.getCode().equals(updateReqVO.getItemType())) {
            IndItemDerEntity derEntity = BeanUtils.toBean(updateReqVO.getDerItem(), IndItemDerEntity.class);
            indItemDerServiceImpl.updateById(derEntity);
        } else if (ItemTypeEnum.CAL.getCode().equals(updateReqVO.getItemType())) {
            IndItemCalEntity calEntity = BeanUtils.toBean(updateReqVO.getCalItem(), IndItemCalEntity.class);
            indItemCalServiceImpl.updateById(calEntity);
        }
        baseDao.updateById(entity);
    }
 
    @Override
    public IndItemEntity get(String id) {
        return baseDao.selectById(id);
    }
 
    @Override
    public IndItemEntity getInfoByNo(String no) {
        QueryWrapper<IndItemEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("item_no", no);
        return baseDao.selectOne(queryWrapper);
    }
 
    @Override
    @DSTransactional(rollbackFor = Exception.class)
    public void delete(String id) {
        IndItemEntity entity = get(id);
        if (ItemTypeEnum.ATOM.getCode().equals(entity.getItemType())) {
            indItemAtomService.deleteByItemId(id);
        } else if (ItemTypeEnum.DER.getCode().equals(entity.getItemType())) {
            indItemDerServiceImpl.deleteByItemId(id);
        } else if (ItemTypeEnum.CAL.getCode().equals(entity.getItemType())) {
            indItemCalServiceImpl.deleteByItemId(id);
        }
        baseDao.deleteById(id);
    }
 
    @Override
    public List<IndItemRespVO> getList(IndItemPageReqVO reqVO) {
        return baseDao.getItemList(reqVO);
    }
}