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;
|
}
|
}
|