package com.aps.core.service.impl;
|
|
import cn.hutool.core.util.IdUtil;
|
import com.aps.common.core.utils.DateUtils;
|
import com.aps.common.security.utils.SecurityUtils;
|
import com.aps.core.domain.ApsGasPipelinePrediction;
|
import com.aps.core.mapper.ApsGasPipelinePredictionMapper;
|
import com.aps.core.service.IApsGasPipelinePredictionService;
|
import io.micrometer.common.util.StringUtils;
|
import lombok.SneakyThrows;
|
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 org.springframework.web.multipart.MultipartFile;
|
|
import java.math.BigDecimal;
|
import java.sql.Timestamp;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 管路手工气体预测数据Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2025-05-19
|
*/
|
@Service
|
public class ApsGasPipelinePredictionServiceImpl implements IApsGasPipelinePredictionService
|
{
|
@Autowired
|
private ApsGasPipelinePredictionMapper apsGasPipelinePredictionMapper;
|
|
/**
|
* 查询管路手工气体预测数据
|
*
|
* @param id 管路手工气体预测数据主键
|
* @return 管路手工气体预测数据
|
*/
|
@Override
|
public ApsGasPipelinePrediction selectApsGasPipelinePredictionById(Long id)
|
{
|
return apsGasPipelinePredictionMapper.selectApsGasPipelinePredictionById(id);
|
}
|
|
/**
|
* 查询管路手工气体预测数据列表
|
*
|
* @param apsGasPipelinePrediction 管路手工气体预测数据
|
* @return 管路手工气体预测数据
|
*/
|
@Override
|
public List<ApsGasPipelinePrediction> selectApsGasPipelinePredictionList(ApsGasPipelinePrediction apsGasPipelinePrediction)
|
{
|
return apsGasPipelinePredictionMapper.selectApsGasPipelinePredictionList(apsGasPipelinePrediction);
|
}
|
|
/**
|
* 新增管路手工气体预测数据
|
*
|
* @param apsGasPipelinePrediction 管路手工气体预测数据
|
* @return 结果
|
*/
|
@Override
|
public int insertApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction)
|
{
|
apsGasPipelinePrediction.setCreateTime(DateUtils.getNowDate());
|
return apsGasPipelinePredictionMapper.insertApsGasPipelinePrediction(apsGasPipelinePrediction);
|
}
|
|
/**
|
* 修改管路手工气体预测数据
|
*
|
* @param apsGasPipelinePrediction 管路手工气体预测数据
|
* @return 结果
|
*/
|
@Override
|
public int updateApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction)
|
{
|
apsGasPipelinePrediction.setUpdateTime(DateUtils.getNowDate());
|
return apsGasPipelinePredictionMapper.updateApsGasPipelinePrediction(apsGasPipelinePrediction);
|
}
|
|
/**
|
* 批量删除管路手工气体预测数据
|
*
|
* @param ids 需要删除的管路手工气体预测数据主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsGasPipelinePredictionByIds(Long[] ids)
|
{
|
return apsGasPipelinePredictionMapper.deleteApsGasPipelinePredictionByIds(ids);
|
}
|
|
/**
|
* 删除管路手工气体预测数据信息
|
*
|
* @param id 管路手工气体预测数据主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteApsGasPipelinePredictionById(Long id)
|
{
|
return apsGasPipelinePredictionMapper.deleteApsGasPipelinePredictionById(id);
|
}
|
|
@SneakyThrows
|
@Override
|
public int batchInsertApsGasPipelinePrediction(MultipartFile file) {
|
Workbook workbook = WorkbookFactory.create(file.getInputStream());
|
|
Sheet sheet = workbook.getSheetAt(0);
|
int rows = sheet.getLastRowNum();
|
if (rows > 0) {
|
List<ApsGasPipelinePrediction> list = new ArrayList<>();
|
|
/*数据列从1开始*/
|
for (int i = 1; i <= rows; i++) {
|
Row row = sheet.getRow(i);
|
String materialCode = row.getCell(0).getStringCellValue();
|
if (StringUtils.isEmpty(materialCode)){
|
continue;
|
}
|
String factory = row.getCell(1).getStringCellValue();
|
double quantity = row.getCell(2).getNumericCellValue();
|
Date date = row.getCell(3).getDateCellValue();
|
if (StringUtils.isNotBlank(factory) &&
|
date != null) {
|
ApsGasPipelinePrediction item = new ApsGasPipelinePrediction();
|
item.setId(IdUtil.getSnowflakeNextId());
|
item.setFactory(factory);
|
item.setMaterialCode(materialCode);
|
item.setCreateBy(SecurityUtils.getUsername());
|
item.setCreateTime(DateUtils.getNowDate());
|
item.setPredictQuantity(new BigDecimal(quantity));
|
item.setPredictDate(new Timestamp(date.getTime()));
|
list.add(item);
|
}
|
}
|
if (!list.isEmpty()) {
|
apsGasPipelinePredictionMapper.deleteAll();
|
apsGasPipelinePredictionMapper.insert(list);
|
}
|
return list.size();
|
}
|
return 0;
|
}
|
}
|