zhanghl
2025-05-08 2a21bf56c3296510fa56024b6062aae8e99d2293
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
package com.aps.core.service.impl;
 
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.core.utils.StringUtils;
import com.aps.common.security.utils.SecurityUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aps.core.mapper.ApsGasMaterialUsageMapper;
import com.aps.core.domain.ApsGasMaterialUsage;
import com.aps.core.service.IApsGasMaterialUsageService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
 
/**
 * 气柜管路物料用量Service业务层处理
 * 
 * @author zhl
 * @date 2025-04-25
 */
@Service
public class ApsGasMaterialUsageServiceImpl implements IApsGasMaterialUsageService 
{
    @Autowired
    private ApsGasMaterialUsageMapper apsGasMaterialUsageMapper;
 
    /**
     * 查询气柜管路物料用量
     * 
     * @param id 气柜管路物料用量主键
     * @return 气柜管路物料用量
     */
    @Override
    public ApsGasMaterialUsage selectApsGasMaterialUsageById(Long id)
    {
        return apsGasMaterialUsageMapper.selectApsGasMaterialUsageById(id);
    }
 
    /**
     * 查询气柜管路物料用量列表
     * 
     * @param apsGasMaterialUsage 气柜管路物料用量
     * @return 气柜管路物料用量
     */
    @Override
    public List<ApsGasMaterialUsage> selectApsGasMaterialUsageList(ApsGasMaterialUsage apsGasMaterialUsage)
    {
        return apsGasMaterialUsageMapper.selectApsGasMaterialUsageList(apsGasMaterialUsage);
    }
 
    /**
     * 新增气柜管路物料用量
     * 
     * @param apsGasMaterialUsage 气柜管路物料用量
     * @return 结果
     */
    @Override
    public int insertApsGasMaterialUsage(ApsGasMaterialUsage apsGasMaterialUsage)
    {
        apsGasMaterialUsage.setCreateTime(DateUtils.getNowDate());
        return apsGasMaterialUsageMapper.insertApsGasMaterialUsage(apsGasMaterialUsage);
    }
 
    /**
     * 修改气柜管路物料用量
     * 
     * @param apsGasMaterialUsage 气柜管路物料用量
     * @return 结果
     */
    @Override
    public int updateApsGasMaterialUsage(ApsGasMaterialUsage apsGasMaterialUsage)
    {
        return apsGasMaterialUsageMapper.updateApsGasMaterialUsage(apsGasMaterialUsage);
    }
 
    /**
     * 批量删除气柜管路物料用量
     * 
     * @param ids 需要删除的气柜管路物料用量主键
     * @return 结果
     */
    @Override
    public int deleteApsGasMaterialUsageByIds(Long[] ids)
    {
        return apsGasMaterialUsageMapper.deleteApsGasMaterialUsageByIds(ids);
    }
 
    /**
     * 删除气柜管路物料用量信息
     * 
     * @param id 气柜管路物料用量主键
     * @return 结果
     */
    @Override
    public int deleteApsGasMaterialUsageById(Long id)
    {
        return apsGasMaterialUsageMapper.deleteApsGasMaterialUsageById(id);
    }
 
    @Transactional
    @Override
    public int batchInsertGasMaterialUsage(MultipartFile file) {
        ArrayList<ApsGasMaterialUsage> list = new ArrayList<>();
 
        Workbook workbook = null;
        try {
            workbook = WorkbookFactory.create(file.getInputStream());
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        Sheet sheet =workbook.getSheetAt(0);
        int rows = sheet.getLastRowNum();
        if (rows > 0)
        {
            /*从表头中取出工序名称*/
            Hashtable<Integer,String> processTitle=new Hashtable<>();
            Row titleRow = sheet.getRow(0);
            short lastTitleNum = titleRow.getLastCellNum();
            for (int i = 4; i < lastTitleNum; i++) {
                processTitle.put(i,titleRow.getCell(i).getStringCellValue());
            }
            /*数据列从1开始*/
            for (int i =  1; i <= rows; i++)
            {
                Row row = sheet.getRow(i);
                String itemNumber = row.getCell(0).getStringCellValue();
                String drawingNo = row.getCell(1).getStringCellValue();
                String version = row.getCell(2).getStringCellValue();
                for (int j = 4; j < lastTitleNum; j++){
                    String processName = processTitle.get(j);
                    double standardAmount = row.getCell(j).getNumericCellValue();
                    ApsGasMaterialUsage apsGasMaterialUsage = new ApsGasMaterialUsage();
                    apsGasMaterialUsage.setItemNumber(itemNumber);
                    apsGasMaterialUsage.setDrawingNo(drawingNo);
                    apsGasMaterialUsage.setVersion(version);
                    apsGasMaterialUsage.setProcessName(processName);
                    apsGasMaterialUsage.setStandardAmount(BigDecimal.valueOf(standardAmount));
                    apsGasMaterialUsage.setDelFlag("0");
                    apsGasMaterialUsage.setCreateBy(SecurityUtils.getUsername());
                    apsGasMaterialUsage.setCreateTime(DateUtils.getNowDate());
                    list.add(apsGasMaterialUsage);
                }
            }
        }
        int batchSize = 1000;
        int totalInserted = 0;
        apsGasMaterialUsageMapper.batchDeleteGasMaterialUsage();
        for (int i = 0; i < list.size(); i += batchSize) {
            int end = Math.min(i + batchSize, list.size());
            List<ApsGasMaterialUsage> subList = list.subList(i, end);
            // 设置创建时间 登录人
            for (ApsGasMaterialUsage item : subList) {
                item.setCreateBy(SecurityUtils.getUsername());
                item.setCreateTime(DateUtils.getNowDate());
            }
            totalInserted += apsGasMaterialUsageMapper.batchInsertGasMaterialUsage(subList);
        }
        return totalInserted;
    }
}