导入excel

master
LegnaYet 6 years ago
parent 1b97a9b4da
commit 7493d98c68

@ -0,0 +1,80 @@
package com.kiisoo.ic.common.utils;
import org.apache.poi.ss.usermodel.Cell;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author jinchaofan
* @date 2018/9/19 11:11
* @company kiisoo
* @details
*/
public class ExcelUtils {
/**
* 2007exceltrue2007
* @param filePath
* @return boolean
*/
public static boolean isExcel2007(String filePath) {
return filePath.matches("^.+\\.(?i)(xlsx)$");
}
/**
* cell
* @author jinchaofan
* @param cell
* @return String
*/
@SuppressWarnings("deprecation")
public static String getCellValue(Cell cell) {
if (cell == null) {
return "";
}
if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
return cell.getStringCellValue();
} else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
return String.valueOf(cell.getBooleanCellValue());
} else if (cell.getCellType() == Cell.CELL_TYPE_FORMULA) {
return cell.getCellFormula();
} else if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
short format = cell.getCellStyle().getDataFormat();
SimpleDateFormat sdf;
if (format == 14 || format == 31 || format == 57 || format == 58
|| (176 <= format && format <= 178) || (182 <= format && format <= 196)
|| (210 <= format && format <= 213) || (208 == format)) {
// 日期
sdf = new SimpleDateFormat("yyyy-MM-dd");
} else if (format == 20 || format == 32 || format == 183 || (200 <= format && format <= 209)) {
// 时间
sdf = new SimpleDateFormat("HH:mm");
} else if(format == 0) {
DecimalFormat df = new DecimalFormat("#");
return df.format(cell.getNumericCellValue());
} else {
// 不是日期格式
return String.valueOf(cell.getNumericCellValue());
}
double value = cell.getNumericCellValue();
Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value);
if (date == null || "".equals(date)) {
return "";
}
String result;
try {
result = sdf.format(date);
} catch (Exception e) {
e.printStackTrace();
return "";
}
return result;
}
return "";
}
}

@ -0,0 +1,21 @@
package com.kiisoo.ic.employee.entity;
import lombok.Data;
/**
* @Description:
* @Auther: yechenhao
* @Date: 2020/4/10 16:29
* @Version: v1
*/
@Data
public class ImportErrorDTO {
/**
*
*/
private Integer row;
/**
*
*/
private String reason;
}

@ -10,6 +10,14 @@ public class Constants {
* mobile
*/
public static final String DATABASE_STORE_ID_KEY = "store_id";
/**
* name
*/
public static final String DATABASE_NAME_KEY = "name";
/**
* code
*/
public static final String DATABASE_CODE_KEY = "code";
/**
* 0

@ -1,15 +1,14 @@
package com.kiisoo.ic.store.controller;
import com.kiisoo.ic.common.BaseController;
import com.kiisoo.ic.store.service.PoiStoreService;
import com.kiisoo.ic.store.service.StoreEmployeeService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.util.Map;
@ -43,4 +42,19 @@ public class StoreEmployeeController extends BaseController {
}
}
/**
*
* @return
*/
@RequestMapping(value = "list",method = RequestMethod.POST)
@ResponseBody
public Map<String,Object> importShopEmpByExcel(@RequestParam("file") MultipartFile file) {
try {
storeEmployeeService.importShopEmpByExcel(file);
return data(null);
} catch (Exception e) {
log.error("添加用户失败", e);
return fail();
}
}
}

@ -3,8 +3,14 @@ package com.kiisoo.ic.store.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.kiisoo.ic.common.utils.ExcelUtils;
import com.kiisoo.ic.department.entity.DepartmentDO;
import com.kiisoo.ic.department.mapper.PrivilageDepartmentDOMapper;
import com.kiisoo.ic.employee.entity.EmployeeDO;
import com.kiisoo.ic.employee.entity.ImportErrorDTO;
import com.kiisoo.ic.employee.entity.PrivilageCpUserDO;
import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper;
import com.kiisoo.ic.employee.service.EmployeeService;
import com.kiisoo.ic.store.entity.PoiStore;
import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO;
import com.kiisoo.ic.store.entity.StoreUserDTO;
@ -12,12 +18,25 @@ import com.kiisoo.ic.store.mapper.PoiStoreDOMapper;
import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper;
import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.kiisoo.ic.store.constant.Constants.DATABASE_STORE_ID_KEY;
import static com.kiisoo.ic.employee.constant.Constants.ADD_CP_CODE_BINDED;
import static com.kiisoo.ic.store.constant.Constants.*;
/**
* @Description: service
@ -36,6 +55,10 @@ public class StoreEmployeeService {
private PoiStoreStaffDOMapper poiStoreStaffDOMapper;
private PrivilageDepartmentDOMapper departmentDOMapper;
private EmployeeService employeeService;
/**
*
* @param storeId id
@ -82,4 +105,131 @@ public class StoreEmployeeService {
Page<StoreUserDTO> pageList = (Page<StoreUserDTO>)storeUserDTOS;
}
/**
* excel
* @param file excel
* @return
* @throws Exception
*/
public List<ImportErrorDTO> importShopEmpByExcel(MultipartFile file) throws Exception {
List<ImportErrorDTO> results = new ArrayList<>();
if (file != null) {
if (!file.isEmpty()) {
//获取文件名
String fileName = file.getOriginalFilename();
InputStream fileInput = file.getInputStream();
// 根据后缀创建EXCEL对象
Workbook book;
if (ExcelUtils.isExcel2007(fileName)) {
book = new XSSFWorkbook(fileInput);
} else {
book = new HSSFWorkbook(fileInput);
}
// 得到第一个sheet
Sheet sheet = book.getSheetAt(0);
// 得到Excel的行数
int totalRows = sheet.getPhysicalNumberOfRows();
// 循环Excel行数,获取数据
for (int r = 1; r < totalRows; r++) {
Row dataRow = sheet.getRow(r);
if (dataRow == null) {
continue;
}
addRowInfo(dataRow,results,r);
}
}
}
return results;
}
/**
* Excel-
* @param dataRow
* @param results
* @param row
* @throws Exception
*/
private void addRowInfo(Row dataRow,List<ImportErrorDTO> results,Integer row) throws Exception {
//初始化导购对象
EmployeeDO employeeDO = new EmployeeDO();
//获取店铺名和店铺code
String shopName = dataRow.getCell(0).getStringCellValue();
if (StringUtils.isBlank(shopName)){
getReason(row,"未填写店铺名",results);
return;
}
String shopCode = dataRow.getCell(1).getStringCellValue();
if (StringUtils.isBlank(shopCode)){
getReason(row,"未填写店铺Code",results);
return;
}
//查询店铺信息
QueryWrapper<PoiStore> storeParams = new QueryWrapper<>();
storeParams.eq(DATABASE_NAME_KEY,shopName);
storeParams.eq(DATABASE_CODE_KEY,shopCode);
PoiStore poiStore = poiStoreDOMapper.selectOne(storeParams);
if (poiStore == null){
getReason(row,"未找到店铺",results);
return;
}
employeeDO.setStoreId(poiStore.getId());
//获取企业微信账号user_id
String cpUserId = dataRow.getCell(2).getStringCellValue();
if (StringUtils.isBlank(cpUserId)){
getReason(row,"未填写账号",results);
return;
}
employeeDO.setUserId(cpUserId);
//获取企业微信别名
String align = dataRow.getCell(3).getStringCellValue();
employeeDO.setAlias(align);
//获取部门信息
String departmentName = dataRow.getCell(4).getStringCellValue();
if (StringUtils.isBlank(departmentName)){
getReason(row,"未填写部门",results);
return;
}
QueryWrapper<DepartmentDO> depParams = new QueryWrapper<DepartmentDO>();
depParams.eq(DATABASE_NAME_KEY,departmentName);
DepartmentDO departmentDO = departmentDOMapper.selectOne(depParams);
if (departmentDO == null){
getReason(row,"未找到部门",results);
return;
}
Long[] depIds = new Long[1];
depIds[0] = departmentDO.getId();
employeeDO.setDepartIds(depIds);
String mobile = dataRow.getCell(5).getStringCellValue();
if (StringUtils.isBlank(mobile)){
getReason(row,"未填写手机号",results);
return;
}
employeeDO.setMobile(mobile);
String returnCode = employeeService.addUser(employeeDO);
if (returnCode.contains(ADD_CP_CODE_BINDED)){
String[] split = returnCode.split("&");
getReason(row,"该账号已绑定【"+ split[1] +"】店铺",results);
}
}
/**
*
* @param row
* @param reason
* @param results
*/
private void getReason(Integer row,String reason,List<ImportErrorDTO> results){
ImportErrorDTO importErrorDTO = new ImportErrorDTO();
importErrorDTO.setRow(row);
reason = "第"+ row + "行导入失败,原因:"+reason;
importErrorDTO.setReason(reason);
results.add(importErrorDTO);
}
}

Loading…
Cancel
Save