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