huangjiayang
2025-04-29 f176e23977ff478ba2306383ea38d91f3a24fffd
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
148
149
150
151
152
153
package com.aps.core.service.impl;
 
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Stream;
 
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.utils.uuid.IdUtils;
import com.aps.core.domain.ApsResourceGroupTemp;
import com.aps.core.mapper.ApsResourceGroupTempMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aps.core.mapper.ApsResourceGroupMapper;
import com.aps.core.domain.ApsResourceGroup;
import com.aps.core.service.IApsResourceGroupService;
import org.springframework.transaction.annotation.Transactional;
 
/**
 * 资源组Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-04-10
 */
@Service
public class ApsResourceGroupServiceImpl implements IApsResourceGroupService 
{
    @Autowired
    private ApsResourceGroupMapper apsResourceGroupMapper;
    @Autowired
    private ApsResourceGroupTempMapper apsResourceGroupTempMapper;
 
    /**
     * 查询资源组
     * 
     * @param id 资源组主键
     * @return 资源组
     */
    @Override
    public ApsResourceGroup selectApsResourceGroupById(String id)
    {
        return apsResourceGroupMapper.selectApsResourceGroupById(id);
    }
 
    /**
     * 查询资源组列表
     * 
     * @param apsResourceGroup 资源组
     * @return 资源组
     */
    @Override
    public List<ApsResourceGroup> selectApsResourceGroupList(ApsResourceGroup apsResourceGroup)
    {
        return apsResourceGroupMapper.selectApsResourceGroupList(apsResourceGroup);
    }
 
    /**
     * 新增资源组
     * 
     * @param apsResourceGroup 资源组
     * @return 结果
     */
    @Override
    public int insertApsResourceGroup(ApsResourceGroup apsResourceGroup)
    {
        apsResourceGroup.setCreateTime(DateUtils.getNowDate());
        return apsResourceGroupMapper.insertApsResourceGroup(apsResourceGroup);
    }
 
    /**
     * 修改资源组
     * 
     * @param apsResourceGroup 资源组
     * @return 结果
     */
    @Override
    public int updateApsResourceGroup(ApsResourceGroup apsResourceGroup)
    {
        apsResourceGroup.setUpdateTime(DateUtils.getNowDate());
        return apsResourceGroupMapper.updateApsResourceGroup(apsResourceGroup);
    }
 
    /**
     * 批量删除资源组
     * 
     * @param ids 需要删除的资源组主键
     * @return 结果
     */
    @Override
    public int deleteApsResourceGroupByIds(String[] ids)
    {
        return apsResourceGroupMapper.deleteApsResourceGroupByIds(ids);
    }
 
    /**
     * 删除资源组信息
     * 
     * @param id 资源组主键
     * @return 结果
     */
    @Override
    public int deleteApsResourceGroupById(String id)
    {
        return apsResourceGroupMapper.deleteApsResourceGroupById(id);
    }
 
    /**
     * 导入数据
     * @param tempList
     * @return 批次号
     */
    @Override
    public String importData(List<ApsResourceGroupTemp> tempList) {
        String batchNum= IdUtils.fastUUID();
        if (!tempList.isEmpty()) {
            tempList.forEach(temp->{
                temp.setId(IdUtils.simpleUUID());
                //计算逻辑:理论产能=设备数量x每日理论时间x截止需求日剩余天数
                BigDecimal devicesQuantity = new BigDecimal(temp.getDevicesQuantity());
                BigDecimal restDays = new BigDecimal(temp.getRestDays());
                temp.setTheoryCapacity(devicesQuantity.multiply(temp.getTheoryHours()).multiply(restDays));
                temp.setBatchNumber(batchNum);
                temp.setCreateTime(DateUtils.getNowDate());
                apsResourceGroupTempMapper.insertApsResourceGroupTemp(temp);
            });
        }
        return batchNum;
    }
    /**
     * 确认数据
     * @param batchNum
     * @param requestDate
     */
    @Transactional
    public void confirmData(String batchNum, LocalDateTime requestDate){
        ApsResourceGroupTemp param = new ApsResourceGroupTemp();
        param.setBatchNumber(batchNum);
        List<ApsResourceGroupTemp> tempList = apsResourceGroupTempMapper.selectApsResourceGroupTempList(param);
        List<String> groupName = tempList.stream().map(x -> x.getResourceGroupName()).distinct().toList();
        if (!tempList.isEmpty()) {
            /*根据资源组名称删除旧的数据*/
            apsResourceGroupMapper.deleteResourceGroupByNames(groupName.toArray(new String[0]));
            Stream<ApsResourceGroup> apsResourceGroupStream = tempList.stream().map(x -> x.getApsResourceGroup());
            apsResourceGroupStream.forEach(x->{
                x.setRequestDate(requestDate);
                x.setCreateTime(DateUtils.getNowDate());
                apsResourceGroupMapper.insertApsResourceGroup(x);
            });
            apsResourceGroupMapper.deleteApsResourceGroupTempByBatchNumber(batchNum);
 
        }
    }
}