用户导出

yun-zuoyi
yunhao.wang 6 years ago
parent 29f82caef7
commit e83f3d9bd7

@ -7,6 +7,7 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysLogSystemService;
import cn.estsh.i3plus.core.apiservice.util.ExcelUtil;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
@ -168,7 +169,7 @@ public class SysLogSystemController extends CoreBaseController{
// 保证系统文件表中
String filePath = dfsClient.getHostUi() + "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
SysDictionary dictionary = sysDictionaryService.getSysDictionaryByParentCodeAndCode(
CommonConstWords.DICTIONARY_FILE_TYPE,fastDFSFile.getExt());
BaseConstWords.DICTIONARY_FILE_TYPE,fastDFSFile.getExt());
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(fileAbsolutePath[0]);

@ -8,6 +8,7 @@ import cn.estsh.i3plus.core.apiservice.util.ExcelUtil;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
@ -236,7 +237,7 @@ public class SysOrderNoRuleController extends CoreBaseController {
// 保证系统文件表中
String filePath = dfsClient.getHostUi() + "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
SysDictionary dictionary = sysDictionaryService.getSysDictionaryByParentCodeAndCode(
CommonConstWords.DICTIONARY_FILE_TYPE,fastDFSFile.getExt());
BaseConstWords.DICTIONARY_FILE_TYPE,fastDFSFile.getExt());
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(fileAbsolutePath[0]);
@ -293,7 +294,7 @@ public class SysOrderNoRuleController extends CoreBaseController {
// 保证系统文件表中
String filePath = dfsClient.getHostUi() + "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
SysDictionary dictionary = sysDictionaryService.getSysDictionaryByParentCodeAndCode(
CommonConstWords.DICTIONARY_FILE_TYPE,fastDFSFile.getExt());
BaseConstWords.DICTIONARY_FILE_TYPE,fastDFSFile.getExt());
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(fileAbsolutePath[0]);

@ -1,11 +1,11 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDepartmentService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.util.ExcelUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
@ -17,6 +17,8 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile;
import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
@ -53,6 +55,18 @@ public class SysUserInfoController extends CoreBaseController{
@Autowired
private ISysPositionService sysPositionService;
@Autowired
private ISysDictionaryService sysDictionaryService;
@Autowired
private ISysConfigService sysConfigService;
@Autowired
private ISysFileService sysFileService;
@Autowired
private FastDFSClient dfsClient;
@PostMapping(value="/insert")
@ApiOperation(value="添加用户信息",notes="返回内容添加用户信息")
public ResultBean insertSysUserInfo(SysUserInfo userInfo){
@ -334,4 +348,63 @@ public class SysUserInfoController extends CoreBaseController{
LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + "{}",e.getMessage(),e);
}
}
@GetMapping(value = "/export")
@ApiOperation(value = "导出用户信息")
public ResultBean exportSysOrderNoRule(SysUserInfo sysUserInfo, String[] colName){
try {
Pager pager = new Pager();
pager.setCurrentPage(1);
pager.setPageSize(Integer.parseInt(sysConfigService.getSysConfigByCode(PlatformConstWords.EXCEL_EXPORT_MAX_ROW).getConfigValue()));
ListPager listPager;
String[] fileAbsolutePath;
List result = new ArrayList();
do {
listPager = sysUserInfoService.querySysUserInfo(sysUserInfo, pager);
pager = listPager.getObjectPager();
// 上传至文件服务器
FastDFSFile fastDFSFile = new FastDFSFile(SysOrderNoRule.class.getSimpleName() + pager.getCurrentPage() + ".xls",
ExcelUtil.exportData(listPager.getObjectList(),SysOrderNoRule.class,colName),"xls");
fileAbsolutePath = dfsClient.upload(fastDFSFile);
// 保证系统文件表中
String filePath = dfsClient.getHostUi() + "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
SysDictionary dictionary = sysDictionaryService.getSysDictionaryByParentCodeAndCode(
BaseConstWords.DICTIONARY_FILE_TYPE,fastDFSFile.getExt());
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(fileAbsolutePath[0]);
sysFile.setDfsFileName(fileAbsolutePath[1]);
sysFile.setFileSize(fastDFSFile.getContent().length);
sysFile.setFilePath(filePath);
sysFile.setFileOriginalName(fastDFSFile.getName());
sysFile.setFileTypeId(dictionary.getId());
sysFile.setFileTypeName(dictionary.getName());
sysFile.setDownloadNum(0);
result.add(sysFileService.insertSysFile(sysFile));
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/get-col")
@ApiOperation(value = "获取用户可导出字段")
public ResultBean getSysOrderNoRuleColName(){
try {
return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(ExcelUtil.getColName(SysOrderNoRule.class));
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -3,6 +3,7 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.pojo.base.bean.BaseConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
@ -153,7 +154,7 @@ public class SysDictionaryService implements ISysDictionaryService {
@Override
@ApiOperation(value = "检出文件名称是否符合系统规范")
public boolean checkFileName(String fileName) {
List<SysDictionary> list = findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_FILE_TYPE);
List<SysDictionary> list = findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_FILE_TYPE);
if(list != null && list.size()> 0){
String suffix = StringTool.getStringFileSuffix(fileName,true);

@ -1,14 +1,17 @@
package cn.estsh.i3plus.core.apiservice.util;
import cn.estsh.i3plus.core.api.iservice.busi.ISysConfigService;
import cn.estsh.i3plus.platform.common.tool.ReflexTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.annotation.AnnoOutputColumn;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysTool;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@ -22,10 +25,12 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.persistence.EntityManager;
import java.io.*;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Ref;
import java.util.*;
/**
@ -49,6 +54,14 @@ public class ExcelUtil {
ExcelUtil.sysConfigService = sysConfigService;
}
private static EntityManager entityManager;
@Autowired
public void setEntityManager(EntityManager entityManager) {
ExcelUtil.entityManager = entityManager;
}
/**
*
*
@ -74,45 +87,61 @@ public class ExcelUtil {
HSSFRow tableHeader = sheet.createRow(0);
// 类数据
Field[] declaredFields = exportClass.getDeclaredFields();
Field[] fields = new Field[exportCol.length];
String colName;
// 获取字段中文名 优先使用 OutputColumn.name
for (int i = 0; i < exportCol.length; i++) {
for (Field field : declaredFields) {
if (field.getName().equals(exportCol[i])) {
fields[i] = field;
fields[i] = exportClass.getDeclaredField(exportCol[i]);
colName = null;
if (field.isAnnotationPresent(ApiParam.class)) {
ApiParam fieldAnno = field.getAnnotation(ApiParam.class);
tableHeader.createCell(i, CellType.STRING).setCellValue(fieldAnno.value());
}
}
if (fields[i].isAnnotationPresent(AnnoOutputColumn.class)) {
colName = fields[i].getAnnotation(AnnoOutputColumn.class).name();
}
if (fields[i].isAnnotationPresent(ApiParam.class) && StringUtils.isBlank(colName)) {
colName = fields[i].getAnnotation(ApiParam.class).value();
}
tableHeader.createCell(i, CellType.STRING).setCellValue(colName);
}
//加载数据至excel对象
HSSFRow hssfRow;
Method method;
AnnoOutputColumn outputColumn;
Object CellValue;
for (int i = 0; i < data.size(); i++) {
hssfRow = sheet.createRow(i + 1);
for (int j = 0; j < fields.length; j++) {
method = exportClass.getDeclaredMethod("get" + StringTool.toUpperCaseFirstOne(fields[j].getName()));
hssfRow.createCell(j, CellType.STRING).setCellValue(
String.valueOf(method.invoke(data.get(i)))
);
CellValue = exportClass.getDeclaredMethod("get" + StringTool.toUpperCaseFirstOne(fields[j].getName())).invoke(data.get(i));
// 判断是否存在引用关系
if (fields[j].isAnnotationPresent(AnnoOutputColumn.class)) {
outputColumn = fields[j].getAnnotation(AnnoOutputColumn.class);
// 判断是否为枚举字段
if (outputColumn.refClass().isEnum()) {
method = outputColumn.refClass().getDeclaredMethod(
outputColumn.refForeignKey() + "Of" + StringTool.toUpperCaseFirstOne(outputColumn.value()),
outputColumn.refClass().getDeclaredMethod("get"
+ StringTool.toUpperCaseFirstOne(outputColumn.refForeignKey())).getReturnType());
CellValue = method.invoke(data.get(i), CellValue);
} else {
selectByProperty(outputColumn.refClass(), outputColumn.value(), outputColumn.refForeignKey(), CellValue);
}
}
hssfRow.createCell(j, CellType.STRING).setCellValue(String.valueOf(CellValue));
}
}
workbook.write(fos);
fos.flush();
return file2Byte(excelFile);
} catch (NoSuchMethodException e) {
LOGGER.error("属性get方法不存在", e);
} catch (IllegalAccessException e) {
LOGGER.error("Excel 导出异常!", e);
} catch (InvocationTargetException e) {
LOGGER.error("Excel 导出异常!", e);
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace();
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.IO_EXCEPTION_FILE.getCode())
@ -127,7 +156,6 @@ public class ExcelUtil {
LOGGER.error("IOException!", e);
}
}
return null;
}
/**
@ -196,9 +224,9 @@ public class ExcelUtil {
obj = importClass.newInstance();
for (int j = 0; j < fields.length; j++) {
row.getCell(j).setCellType(CellType.STRING);
if("".equals(row.getCell(j).getStringCellValue())){
if ("".equals(row.getCell(j).getStringCellValue())) {
cellValue = null;
}else if (fields[j].getType() == String.class) {
} else if (fields[j].getType() == String.class) {
cellValue = row.getCell(j).getStringCellValue();
} else if (fields[j].getType() == Integer.class) {
cellValue = Integer.parseInt(row.getCell(j).getStringCellValue());
@ -333,6 +361,21 @@ public class ExcelUtil {
return colName;
}
/**
* @param persistentClass
* @param colName
* @param propertyName
* @param value
* @return
*/
public static Object selectByProperty(Class persistentClass, String colName, String propertyName, Object value) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
String queryString = "select model." + colName + " from " + persistentClass.getSimpleName()
+ " as model where model." + propertyName + "= :" + propertyName;
Object result = entityManager.createQuery(queryString).setParameter(propertyName, value).getSingleResult();
return persistentClass.getDeclaredMethod("get" + StringTool.toUpperCaseFirstOne(colName)).invoke(result);
}
public static void main(String[] args) {
List<SysTool> sysTools = new ArrayList<>();
SysTool sysTool = new SysTool();

Loading…
Cancel
Save