package com.javaweb.platform.service.impl;
|
|
import java.io.InputStream;
|
import java.text.DecimalFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
|
import org.apache.poi.ss.formula.eval.ErrorEval;
|
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.CellValue;
|
import org.apache.poi.ss.usermodel.DateUtil;
|
import org.apache.poi.ss.usermodel.FormulaEvaluator;
|
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 com.javaweb.common.utils.DateUtils;
|
import com.javaweb.common.utils.IdGenerate;
|
import com.javaweb.common.utils.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import com.javaweb.platform.mapper.ProjectInfoMapper;
|
import com.javaweb.platform.domain.ProjectInfo;
|
import com.javaweb.platform.service.IProjectInfoService;
|
import com.javaweb.common.core.text.Convert;
|
|
/**
|
* 项目信息Service业务层处理
|
*
|
* @author zmk
|
* @date 2022-03-08
|
*/
|
@Service
|
public class ProjectInfoServiceImpl implements IProjectInfoService
|
{
|
@Autowired
|
private ProjectInfoMapper projectInfoMapper;
|
|
/**
|
* 查询项目信息
|
*
|
* @param id 项目信息ID
|
* @return 项目信息
|
*/
|
@Override
|
public ProjectInfo selectProjectInfoById(String id)
|
{
|
return projectInfoMapper.selectProjectInfoById(id);
|
}
|
|
/**
|
* 查询项目信息列表
|
*
|
* @param projectInfo 项目信息
|
* @return 项目信息
|
*/
|
@Override
|
public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo)
|
{
|
return projectInfoMapper.selectProjectInfoList(projectInfo);
|
}
|
|
/**
|
* 新增项目信息
|
*
|
* @param projectInfo 项目信息
|
* @return 结果
|
*/
|
@Override
|
public int insertProjectInfo(ProjectInfo projectInfo)
|
{
|
projectInfo.setCreateTime(DateUtils.getNowDate());
|
return projectInfoMapper.insertProjectInfo(projectInfo);
|
}
|
|
/**
|
* 修改项目信息
|
*
|
* @param projectInfo 项目信息
|
* @return 结果
|
*/
|
@Override
|
public int updateProjectInfo(ProjectInfo projectInfo)
|
{
|
projectInfo.setUpdateTime(DateUtils.getNowDate());
|
return projectInfoMapper.updateProjectInfo(projectInfo);
|
}
|
|
/**
|
* 删除项目信息对象
|
*
|
* @param ids 需要删除的数据ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteProjectInfoByIds(String ids)
|
{
|
return projectInfoMapper.deleteProjectInfoByIds(Convert.toStrArray(ids));
|
}
|
|
/**
|
* 删除项目信息信息
|
*
|
* @param id 项目信息ID
|
* @return 结果
|
*/
|
@Override
|
public int deleteProjectInfoById(String id)
|
{
|
return projectInfoMapper.deleteProjectInfoById(id);
|
}
|
|
@Override
|
public List<ProjectInfo> selectByPolygon(String polygon) {
|
|
return projectInfoMapper.selectByPolygon(polygon);
|
}
|
|
@Override
|
public List<ProjectInfo> selectBynCircle(Double lat, Double lng, Double radius) {
|
|
return projectInfoMapper.selectBynCircle(lat, lng, radius);
|
}
|
|
|
@Override
|
public String importData(MultipartFile file, boolean updateSupport) {
|
|
String string = "";
|
List<ProjectInfo> docInfos = new ArrayList<>();
|
try {
|
InputStream inputStream = file.getInputStream();
|
Workbook wb = WorkbookFactory.create(inputStream);
|
Sheet sheet = wb.getSheetAt(0);// 打开第1个工作薄
|
|
docInfos = getProjectInfo(sheet);
|
|
} catch (Exception e) {
|
|
string = "读取信息错误:" + e.toString();
|
return string;
|
}
|
|
string = insertTemplateData(docInfos);
|
|
return string;
|
}
|
|
private String insertTemplateData(List<ProjectInfo> infos){
|
try {
|
for (ProjectInfo info : infos) {
|
insertProjectInfo(info);
|
}
|
} catch (Exception e) {
|
return e.toString();
|
}
|
|
return "导入完毕";
|
|
}
|
|
//获取表格数据
|
private List<ProjectInfo> getProjectInfo(Sheet sheet){
|
int lastRowNo = sheet.getLastRowNum() + 1;// 假如有10行数据
|
List<ProjectInfo> list = new ArrayList<>();
|
try {
|
for (int i = 1; i < lastRowNo; i++) {
|
ProjectInfo info = new ProjectInfo();
|
Row row = sheet.getRow(i);
|
|
String address = String.valueOf(getCellValue(row, 11));
|
if(StringUtils.isEmpty(address)){
|
break;
|
}
|
|
String projectname = String.valueOf(getCellValue(row, 1));
|
info.setProjectName(projectname);
|
|
String ConstructionUnit = String.valueOf(getCellValue(row, 2));
|
info.setConstructionUnit(ConstructionUnit);
|
|
String ServiceUnit = String.valueOf(getCellValue(row, 3));
|
info.setServiceUnit(ServiceUnit);
|
|
String ProjectLeader = String.valueOf(getCellValue(row, 6));
|
info.setProjectLeader(ProjectLeader);
|
|
info.setAddress(address);
|
|
info.setId(IdGenerate.nextId());
|
|
list.add(info);
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
throw e;
|
}
|
return list;
|
}
|
|
private Date DateTimeFormat(String str){
|
if(StringUtils.isEmpty(str)){
|
return null;
|
}
|
|
return DateUtils.parseDate(str.trim());
|
|
}
|
|
/**
|
* 获取单元格数据
|
*
|
* @param row
|
* @param column
|
* @return
|
*/
|
@SuppressWarnings("deprecation")
|
private Object getCellValue(Row row, int column) {
|
if (row == null) {
|
return row;
|
}
|
Object val = "";
|
try {
|
Cell cell = row.getCell(column);
|
if (cell != null) {
|
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
|
val = cell.getNumericCellValue();
|
if (HSSFDateUtil.isCellDateFormatted(cell)) {
|
val = DateUtil.getJavaDate((Double) val); // POI Excel
|
// 日期格式转换
|
} else {
|
if ((Double) val % 1 > 0) {
|
val = new DecimalFormat("0.000000").format(val);
|
} else {
|
val = new DecimalFormat("0").format(val);
|
}
|
}
|
} else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
|
val = cell.getStringCellValue();
|
|
} else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
|
try {
|
val = cell.getStringCellValue();
|
} catch (Exception e) {
|
FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper()
|
.createFormulaEvaluator();
|
evaluator.evaluateFormulaCell(cell);
|
CellValue cellValue = evaluator.evaluate(cell);
|
switch (cellValue.getCellType()) {
|
case Cell.CELL_TYPE_NUMERIC:
|
val = cellValue.getNumberValue();
|
break;
|
case Cell.CELL_TYPE_STRING:
|
val = cellValue.getStringValue();
|
break;
|
case Cell.CELL_TYPE_BOOLEAN:
|
val = cellValue.getBooleanValue();
|
break;
|
case Cell.CELL_TYPE_ERROR:
|
val = ErrorEval.getText(cellValue.getErrorValue());
|
break;
|
default:
|
val = cell.getCellFormula();
|
}
|
}
|
} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
|
val = cell.getBooleanCellValue();
|
} else if (cell.getCellType() == Cell.CELL_TYPE_ERROR) {
|
val = cell.getErrorCellValue();
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
return val;
|
}
|
return val;
|
}
|
|
@Override
|
public List<ProjectInfo> selectByPolygonContains(String polygon) {
|
return projectInfoMapper.selectByPolygonContains(polygon);
|
}
|
}
|