解决bug

通用导入导出
用户导出
系统日志导出
操作日志导出
异常日志导出
yun-zuoyi
yunhao.wang 6 years ago
parent 8d3f36c6eb
commit 0aacaa4972

@ -103,4 +103,13 @@ public interface ISysDictionaryService {
*/
@ApiOperation(value = "设置默认字典项",notes = "根据id设置默认字典项")
void updateSysDictionaryDefaultById(Long id);
/**
*
* @param parentCode
* @param value
* @return
*/
@ApiOperation(value = "根据父节点 以及当前节点值 获取字典信息")
SysDictionary getSysDictionaryByParentCodeAndValue(String parentCode,String value);
}

@ -67,4 +67,11 @@ public interface ISysFileService {
*/
@ApiOperation(value = "删除资源信息",notes = "根据ID批量删除资源信息")
void deleteSysFileByIds(Long[] ids);
/**
*
* @param file
*/
@ApiOperation(value = "上传文件资源",notes = "上传文件资源")
SysFile uploadFile(Object file) throws Exception;
}

@ -3,8 +3,8 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
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.enumutil.CommonEnumUtil;
@ -168,15 +168,15 @@ public class SysDictionaryController extends CoreBaseController{
public ResultBean findSysDictionaryUserInfo() {
try {
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("1",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_SEX));
resultMap.put("2",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_FILE_TYPE));
resultMap.put("3",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_MARRIAGE));
resultMap.put("4",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_EDUCATION));
resultMap.put("5",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_NATIONALITY));
resultMap.put("6",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_CERTIFICATE_TYPE));
resultMap.put("7",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_GRADE));
resultMap.put("8",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_POLITICAL_STATUS));
resultMap.put("9",sysDictionaryService.findSysDictionaryByParentCode(CommonConstWords.DICTIONARY_EMPLOYEE_TYPE));
resultMap.put("1",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_SEX));
resultMap.put("2",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_FILE_TYPE));
resultMap.put("3",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_MARRIAGE));
resultMap.put("4",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_EDUCATION));
resultMap.put("5",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_NATIONALITY));
resultMap.put("6",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_CERTIFICATE_TYPE));
resultMap.put("7",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_EMPLOYEE_GRADE));
resultMap.put("8",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_POLITICAL_STATUS));
resultMap.put("9",sysDictionaryService.findSysDictionaryByParentCode(BaseConstWords.DICTIONARY_EMPLOYEE_TYPE));
return ResultBean.success("查询成功").setResultMap(resultMap).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {

@ -3,22 +3,17 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
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.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
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;
@ -26,20 +21,14 @@ import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLConnection;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
/**
@ -161,7 +150,7 @@ public class SysFileController extends CoreBaseController{
@PostMapping("/upload")
@ApiOperation(value = "文件上传",notes = "文件上传")
public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {
public ResultBean singleFileUpload(@RequestParam("file") MultipartFile file) {
try {
if(file.isEmpty()){
throw ImppExceptionBuilder.newInstance()
@ -181,25 +170,7 @@ public class SysFileController extends CoreBaseController{
.build();
}
FastDFSFile dfsFile = dfsClient.saveFile(file);
String filePath = dfsClient.getHostUi() + "/" + dfsFile.getDfsGroupName() + "/" + dfsFile.getDfsFileName();
SysDictionary dictionary = dictionaryService.getSysDictionaryByParentCodeAndCode(
CommonConstWords.DICTIONARY_FILE_TYPE,
StringTool.getStringFileSuffix(file.getOriginalFilename(),false));
SysFile sysFile = new SysFile();
sysFile.setDfsGroupName(dfsFile.getDfsGroupName());
sysFile.setDfsFileName(dfsFile.getDfsFileName());
sysFile.setFileSize(dfsFile.getContent().length);
sysFile.setFilePath(filePath);
sysFile.setFileOriginalName(file.getOriginalFilename());
sysFile.setFileTypeId(dictionary.getId());
sysFile.setFileTypeName(dictionary.getName());
sysFile.setUserId(getSessionUser().getUserId());
sysFile.setDownloadNum(0);
SysFile fileDb = sysFileService.insertSysFile(sysFile);
SysFile fileDb = sysFileService.uploadFile(file);
return ResultBean.success("上传成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(fileDb);
}catch(ImppBusiException busExcep){
@ -239,17 +210,17 @@ public class SysFileController extends CoreBaseController{
response.addHeader("Content-type", "application/octet-stream");// 设置文件名
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
try {
bis = new BufferedInputStream(fis);
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[1024];
int i = bis.read(buffer);
while (i != -1) {
os.write(buffer, 0, i);
i = bis.read(buffer);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {

@ -1,13 +1,23 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysConfigService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogExceptionService;
import cn.estsh.i3plus.core.apiservice.util.ExcelUtil;
import cn.estsh.i3plus.core.apiservice.util.FileUtil;
import cn.estsh.i3plus.core.apiservice.util.ZipUtil;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogException;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
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.util.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -18,6 +28,11 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @Description :
* @Reference :
@ -28,15 +43,24 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(description = "系统异常日志服务")
@RequestMapping(PlatformConstWords.BASE_URL + "/sys-log-exception")
public class SysLogExceptionController {
public class SysLogExceptionController extends CoreBaseController {
public static final Logger LOGGER = LoggerFactory.getLogger(SysLogExceptionController.class);
@Autowired
private ISysLogExceptionService sysLogExceptionService;
@Autowired
private ISysDictionaryService sysDictionaryService;
@Autowired
private ISysConfigService sysConfigService;
@Autowired
private ISysFileService sysFileService;
@GetMapping(value = "/query")
@ApiOperation(value = "异常日志复杂查询,分页,排序",notes = "异常日志复杂查询,分页,排序")
public ResultBean querySysLogOperateByPager(SysLogException sysLogException, Pager pager){
public ResultBean querySysLogExceptionByPager(SysLogException sysLogException, Pager pager){
try {
ListPager logExceptionList = sysLogExceptionService.querySysLogExceptionByPager(sysLogException, pager);
return ResultBean.success("查询成功").setListPager(logExceptionList).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
@ -46,4 +70,82 @@ public class SysLogExceptionController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/get-col")
@ApiOperation(value = "获取系统操作日志字段")
public ResultBean getSysLogExceptionCol(){
try {
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(ExcelUtil.getColName(SysLogException.class));
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/export")
@ApiOperation(value = "导出系统异常日志")
public ResultBean exportSysLogException(SysLogException sysLogException, String[] colName, int pageSize,boolean isZip) {
ListPager listPager;
List result = new ArrayList();
File zipFile = null;
File excelDir = null;
File excelFile;
try {
Pager pager = new Pager();
pager.setCurrentPage(1);
// 判断是否超过excel最大导出数量设定值
int maxPageSize = Integer.parseInt(sysConfigService.getSysConfigByCode(PlatformConstWords.EXCEL_EXPORT_MAX_ROW).getConfigValue());
if (pageSize == 0 || pageSize >= maxPageSize) {
pager.setPageSize(maxPageSize);
} else {
pager.setPageSize(pageSize);
}
// 数据校验
if(colName==null || colName.length == 0){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail("导出列不能为空")
.build();
}
excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
excelDir.mkdir();
do {
listPager = sysLogExceptionService.querySysLogExceptionByPager(sysLogException, pager);
pager = listPager.getObjectPager();
// 将excel导出至临时文件夹并上传
excelFile = new File(excelDir + File.separator + SysLogException.class.getSimpleName() + pager.getCurrentPage() + ".xls");
excelFile.createNewFile();
ExcelUtil.exportData(excelFile, listPager.getObjectList(), SysLogException.class, colName);
result.add(sysFileService.uploadFile(excelFile));
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
// 将所有excel文件打包
if(isZip){
zipFile = ZipUtil.zipFile(null, excelDir);
result.add(sysFileService.uploadFile(zipFile));
ExcelUtil.sendStationLetter(result,getSessionUser().getUser().getId());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} else {
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);
} finally {
// 清理临时文件文件
if (zipFile != null) {
FileUtil.deletefile(zipFile.getPath());
}
FileUtil.deletefile(excelDir.getPath());
}
}
}

@ -1,14 +1,23 @@
package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysConfigService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysLogOperateService;
import cn.estsh.i3plus.core.apiservice.util.ExcelUtil;
import cn.estsh.i3plus.core.apiservice.util.FileUtil;
import cn.estsh.i3plus.core.apiservice.util.ZipUtil;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogOperate;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
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.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
@ -19,6 +28,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.websocket.server.PathParam;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -37,6 +49,15 @@ public class SysLogOperateController extends CoreBaseController {
@Autowired
private ISysLogOperateService logOperateService;
@Autowired
private ISysDictionaryService sysDictionaryService;
@Autowired
private ISysConfigService sysConfigService;
@Autowired
private ISysFileService sysFileService;
@PostMapping(value = "/insert")
@ApiOperation(value = "添加操作日志",notes = "添加操作日志")
public ResultBean insertSysLogOperateController(SysLogOperate logOperate){
@ -111,4 +132,83 @@ public class SysLogOperateController extends CoreBaseController {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/get-col")
@ApiOperation(value = "获取系统操作日志字段")
public ResultBean getSysLogOperateCol(){
try {
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(ExcelUtil.getColName(SysLogOperate.class));
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping(value = "/export")
@ApiOperation(value = "导出操作日志")
public ResultBean exportSysLogOperate(SysLogOperate sysLogOperate, String[] colName, int pageSize, boolean isZip) {
ListPager listPager;
List result = new ArrayList();
File zipFile = null;
File excelDir = null;
File excelFile;
try {
Pager pager = new Pager();
pager.setCurrentPage(1);
// 判断是否超过excel最大导出数量设定值
int maxPageSize = Integer.parseInt(sysConfigService.getSysConfigByCode(PlatformConstWords.EXCEL_EXPORT_MAX_ROW).getConfigValue());
if (pageSize == 0 || pageSize >= maxPageSize) {
pager.setPageSize(maxPageSize);
} else {
pager.setPageSize(pageSize);
}
// 数据校验
if(colName==null || colName.length == 0){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail("导出列不能为空")
.build();
}
excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
excelDir.mkdir();
do {
listPager = logOperateService.querySysLogOperateByPager(sysLogOperate, pager);
pager = listPager.getObjectPager();
// 将excel导出至临时文件夹并上传
excelFile = new File(excelDir + File.separator + SysLogOperate.class.getSimpleName() + pager.getCurrentPage() + ".xls");
excelFile.createNewFile();
ExcelUtil.exportData(excelFile, listPager.getObjectList(), SysLogOperate.class, colName);
result.add(sysFileService.uploadFile(excelFile));
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
// 将所有excel文件打包
if(isZip){
zipFile = ZipUtil.zipFile(null, excelDir);
result.add(sysFileService.uploadFile(zipFile));
ExcelUtil.sendStationLetter(result,getSessionUser().getUser().getId());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} else {
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);
} finally {
// 清理临时文件文件
// 清理临时文件文件
if (zipFile != null) {
FileUtil.deletefile(zipFile.getPath());
}
FileUtil.deletefile(excelDir.getPath());
}
}
}

@ -5,21 +5,19 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
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.core.apiservice.util.FileUtil;
import cn.estsh.i3plus.core.apiservice.util.ZipUtil;
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;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogSystem;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
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;
@ -29,7 +27,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -49,17 +49,11 @@ public class SysLogSystemController extends CoreBaseController{
private ISysLogSystemService logSystemService;
@Autowired
private ISysDictionaryService sysDictionaryService;
@Autowired
private ISysConfigService sysConfigService;
@Autowired
private ISysFileService sysFileService;
@Autowired
private FastDFSClient dfsClient;
@PostMapping(value = "/insert")
@ApiOperation(value="新增系统日志",notes = "新增系统日志")
public ResultBean insertSysLogSystem(SysLogSystem logSystem) {
@ -147,48 +141,68 @@ public class SysLogSystemController extends CoreBaseController{
}
@GetMapping(value = "/export")
@ApiOperation(value = "导出系统日志")
public ResultBean exportSysLogSystem(SysLogSystem sysLogSystem, String[] colName){
@ApiOperation(value = "导出系统异常日志")
public ResultBean exportSysLogSystem(SysLogSystem sysLogSystem, String[] colName, int pageSize, boolean isZip) {
ListPager listPager;
List result = new ArrayList();
File zipFile = null;
File excelDir = null;
File excelFile;
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();
// 判断是否超过excel最大导出数量设定值
int maxPageSize = Integer.parseInt(sysConfigService.getSysConfigByCode(PlatformConstWords.EXCEL_EXPORT_MAX_ROW).getConfigValue());
if (pageSize == 0 || pageSize >= maxPageSize) {
pager.setPageSize(maxPageSize);
} else {
pager.setPageSize(pageSize);
}
// 数据校验
if(colName==null || colName.length == 0){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail("导出列不能为空")
.build();
}
excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
excelDir.mkdir();
do {
listPager = logSystemService.querySysLogSystemByPager(sysLogSystem, 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);
// 将excel导出至临时文件夹并上传
excelFile = new File(excelDir + File.separator + SysLogSystem.class.getSimpleName() + pager.getCurrentPage() + ".xls");
excelFile.createNewFile();
// 保证系统文件表中
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));
ExcelUtil.exportData(excelFile, listPager.getObjectList(), SysLogSystem.class, colName);
result.add(sysFileService.uploadFile(excelFile));
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
}catch(ImppBusiException busExcep){
// 将所有excel文件打包
if(isZip){
zipFile = ZipUtil.zipFile(null, excelDir);
result.add(sysFileService.uploadFile(zipFile));
ExcelUtil.sendStationLetter(result,getSessionUser().getUser().getId());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} else {
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
}
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
// 清理临时文件文件
if (zipFile != null) {
FileUtil.deletefile(zipFile.getPath());
}
FileUtil.deletefile(excelDir.getPath());
}
}
}

@ -5,6 +5,8 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysOrderNoRuleService;
import cn.estsh.i3plus.core.apiservice.util.ExcelUtil;
import cn.estsh.i3plus.core.apiservice.util.FileUtil;
import cn.estsh.i3plus.core.apiservice.util.ZipUtil;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.CommonConstWords;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
@ -17,6 +19,8 @@ import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule;
import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo;
import cn.estsh.i3plus.pojo.platform.platbean.SysLogOperate;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
@ -37,6 +41,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -215,48 +220,68 @@ public class SysOrderNoRuleController extends CoreBaseController {
}
@GetMapping(value = "/export")
@ApiOperation(value = "导出单号规则")
public ResultBean exportSysOrderNoRule(SysOrderNoRule sysOrderNoRule, String[] colName){
@ApiOperation(value = "导出操作日志")
public ResultBean exportSysOrderNoRule(SysOrderNoRule sysOrderNoRule, String[] colName, int pageSize, boolean isZip) {
ListPager listPager;
List result = new ArrayList();
File zipFile = null;
File excelDir = null;
File excelFile;
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();
// 判断是否超过excel最大导出数量设定值
int maxPageSize = Integer.parseInt(sysConfigService.getSysConfigByCode(PlatformConstWords.EXCEL_EXPORT_MAX_ROW).getConfigValue());
if (pageSize == 0 || pageSize >= maxPageSize) {
pager.setPageSize(maxPageSize);
} else {
pager.setPageSize(pageSize);
}
// 数据校验
if(colName==null || colName.length == 0){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail("导出列不能为空")
.build();
}
excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
excelDir.mkdir();
do {
listPager = sysOrderNoRuleService.querySysOrderNoRuleByPager(sysOrderNoRule, 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);
// 将excel导出至临时文件夹并上传
excelFile = new File(excelDir + File.separator + SysOrderNoRule.class.getSimpleName() + pager.getCurrentPage() + ".xls");
excelFile.createNewFile();
// 保证系统文件表中
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));
ExcelUtil.exportData(excelFile, listPager.getObjectList(), SysOrderNoRule.class, colName);
result.add(sysFileService.uploadFile(excelFile));
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
}catch(ImppBusiException busExcep){
// 将所有excel文件打包
if(isZip){
zipFile = ZipUtil.zipFile(null, excelDir);
result.add(sysFileService.uploadFile(zipFile));
ExcelUtil.sendStationLetter(result,getSessionUser().getUser().getId());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} else {
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
}
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
// 清理临时文件文件
if (zipFile != null) {
FileUtil.deletefile(zipFile.getPath());
}
FileUtil.deletefile(excelDir.getPath());
}
}

@ -2,10 +2,11 @@ package cn.estsh.i3plus.core.apiservice.controller.busi;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.core.apiservice.util.ExcelUtil;
import cn.estsh.i3plus.core.apiservice.util.FileUtil;
import cn.estsh.i3plus.core.apiservice.util.ZipUtil;
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;
@ -18,7 +19,6 @@ 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;
@ -28,8 +28,9 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
@ -56,17 +57,11 @@ public class SysUserInfoController extends CoreBaseController{
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){
@ -312,58 +307,78 @@ public class SysUserInfoController extends CoreBaseController{
}
}
@GetMapping(value = "/export")
@ApiOperation(value = "导出用户信息")
public ResultBean exportSysOrderNoRule(SysUserInfo sysUserInfo, String[] colName){
public ResultBean exportSysUserInfo(SysUserInfo sysUserInfo, String[] colName, int pageSize,boolean isZip) {
ListPager listPager;
List result = new ArrayList();
File zipFile = null;
File excelDir = null;
File excelFile;
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();
// 判断是否超过excel最大导出数量设定值
int maxPageSize = Integer.parseInt(sysConfigService.getSysConfigByCode(PlatformConstWords.EXCEL_EXPORT_MAX_ROW).getConfigValue());
if (pageSize == 0 || pageSize >= maxPageSize) {
pager.setPageSize(maxPageSize);
} else {
pager.setPageSize(pageSize);
}
// 数据校验
if(colName==null || colName.length == 0){
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
.setErrorDetail("导出列不能为空")
.build();
}
excelDir = new File(System.getProperty("java.io.tmpdir") + File.separator + new Date().getTime());
excelDir.mkdir();
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());
// 将excel导出至临时文件夹并上传
excelFile = new File(excelDir + File.separator + SysUserInfo.class.getSimpleName() + pager.getCurrentPage() + ".xls");
excelFile.createNewFile();
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));
ExcelUtil.exportData(excelFile, listPager.getObjectList(), SysUserInfo.class, colName);
result.add(sysFileService.uploadFile(excelFile));
pager.setCurrentPage(pager.getCurrentPage() + 1);
} while (pager.getCurrentPage() <= pager.getTotalPages());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
}catch(ImppBusiException busExcep){
// 将所有excel文件打包
if(isZip){
zipFile = ZipUtil.zipFile(null, excelDir);
result.add(sysFileService.uploadFile(zipFile));
ExcelUtil.sendStationLetter(result,getSessionUser().getUser().getId());
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
} else {
return ResultBean.success("导出成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result);
}
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
}catch(Exception e){
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
} finally {
// 清理临时文件文件
if (zipFile != null) {
FileUtil.deletefile(zipFile.getPath());
}
FileUtil.deletefile(excelDir.getPath());
}
}
@GetMapping("/get-col")
@ApiOperation(value = "获取用户可导出字段")
public ResultBean getSysOrderNoRuleColName(){
public ResultBean getSysUserInfoColName(){
try {
return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(ExcelUtil.getColName(SysOrderNoRule.class));
return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultMap(ExcelUtil.getColName(SysUserInfo.class));
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);
}catch(Exception e){

@ -73,10 +73,11 @@ public class MessageLetterQueueReceiver {
refUserMessage.setReceiverNameRdd(sysUser.getUserName());
refUserMessage.setMessageStatus(ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue());
refUserMessage.setReceiverTime(TimeTool.getNowTime(true));
refUserMessage.setIsUrgent(msg.getIsUrgent());
sysMessageService.insertSysRefUserMessage(refUserMessage);
userMessage = sysMessageService.findSysRefUserMessageByUserIdAndStatus(sysUser.getUserInfoId(),
userMessage = sysMessageService.findSysRefUserMessageByUserIdAndStatus(sysUser.getId(),
ImppEnumUtil.MESSAGE_STATUS.UNREAD.getValue());
MessageWebSocket.sendMessage(sysUser.getUserInfoId(),
JSON.toJSONString(userMessage)

@ -171,12 +171,8 @@ public class SysDictionaryService implements ISysDictionaryService {
@Override
@ApiOperation(value = "根据父节点 以及当前节点CODE 获取字典信息")
public SysDictionary getSysDictionaryByParentCodeAndCode(String parentCode, String code) {
List<SysDictionary> list = sysDictionaryRDao.findByProperty(new String[]{"parentCodeRdd","dictionaryCode"},
return sysDictionaryRDao.getByProperty(new String[]{"parentCodeRdd","dictionaryCode"},
new Object[]{parentCode,code});
if(list != null && list.size() > 0){
return list.get(0);
}
return null;
}
@Override
@ -189,4 +185,11 @@ public class SysDictionaryService implements ISysDictionaryService {
sysDictionaryRDao.updateByProperties("id",id,
"isDefault",CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
@Override
@ApiOperation(value = "根据父节点 以及当前节点值 获取字典信息")
public SysDictionary getSysDictionaryByParentCodeAndValue(String parentCode, String value) {
return sysDictionaryRDao.getByProperty(new String[]{"parentCodeRdd","dictionaryValue"},
new Object[]{parentCode,value});
}
}

@ -1,18 +1,28 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService;
import cn.estsh.i3plus.core.apiservice.util.FileUtil;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
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;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.repository.SysDictionaryRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysFileRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient;
import cn.estsh.impp.framework.boot.fastdfs.FastDFSFile;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.List;
/**
@ -27,7 +37,13 @@ public class SysFileServiceImpl implements ISysFileService {
public static final Logger LOGGER = LoggerFactory.getLogger(SysFileServiceImpl.class);
@Autowired
public SysFileRepository sysFileRDao;
private SysFileRepository sysFileRDao;
@Autowired
private SysDictionaryRepository sysDictionaryRDao;
@Autowired
private FastDFSClient dfsClient;
@Override
@ApiOperation(value = "新增资源信息")
@ -83,4 +99,37 @@ public class SysFileServiceImpl implements ISysFileService {
LOGGER.info("文件资源 SYS_FILE ids:{}", ids.toString());
sysFileRDao.deleteByIds(ids);
}
@Override
@ApiOperation(value = "上传文件资源",notes = "上传文件资源")
public SysFile uploadFile(Object file) throws Exception{
FastDFSFile fastDFSFile;
// 判断参数类型
if(file instanceof File){
fastDFSFile = new FastDFSFile(((File)file).getName(), FileUtil.file2Byte(((File)file).getPath()),
StringTool.getStringFileSuffix(((File)file).getName(),true));
}else{
fastDFSFile = dfsClient.saveFile((MultipartFile) file);
}
String[] fileAbsolutePath = dfsClient.upload(fastDFSFile);
// 保存到系统文件表中
String filePath = dfsClient.getHostUi() + "/" + fileAbsolutePath[0] + "/" + fileAbsolutePath[1];
SysDictionary dictionary = sysDictionaryRDao.getByProperty(new String[]{"parentCodeRdd","dictionaryValue"},
new Object[]{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);
sysFile.setCreateDatetime(TimeTool.getNowTime(true));
return insertSysFile(sysFile);
}
}

@ -1,12 +1,17 @@
package cn.estsh.i3plus.core.apiservice.util;
import cn.estsh.i3plus.core.api.iservice.busi.ISysConfigService;
import cn.estsh.i3plus.core.api.iservice.busi.ISysDictionaryService;
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.base.enumutil.ImppEnumUtil;
import cn.estsh.i3plus.pojo.platform.bean.SysDictionary;
import cn.estsh.i3plus.pojo.platform.bean.SysFile;
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
import cn.estsh.i3plus.pojo.platform.bean.SysTool;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
@ -22,15 +27,18 @@ import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.persistence.EntityManager;
import java.io.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Ref;
import java.util.*;
/**
@ -44,9 +52,6 @@ import java.util.*;
public class ExcelUtil {
public static final Logger LOGGER = LoggerFactory.getLogger(ExcelUtil.class);
private ExcelUtil() throws IOException {
}
private static ISysConfigService sysConfigService;
@Autowired
@ -61,6 +66,20 @@ public class ExcelUtil {
ExcelUtil.entityManager = entityManager;
}
private static ISysDictionaryService sysDictionaryService;
@Autowired
public void setSysDictionaryService(ISysDictionaryService sysDictionaryService){
ExcelUtil.sysDictionaryService = sysDictionaryService;
}
private static RabbitTemplate rabbitTemplate;
@Autowired
public void setRabbitTemplate(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
/**
*
@ -69,15 +88,11 @@ public class ExcelUtil {
* @param exportClass
* @param exportCol
*/
public static byte[] exportData(List data, Class exportClass, String[] exportCol) {
File excelFile = null;
public static File exportData(File excelFile,List data, Class exportClass, String[] exportCol) {
FileOutputStream fos = null;
//创建HSSFWorkbook对象(excel的文档对象)
HSSFWorkbook workbook = new HSSFWorkbook();
try {
//创建临时文件
excelFile = File.createTempFile(exportClass.getSimpleName() + new Date().getTime(), ".xls");
LOGGER.info("临时文件所在的本地路径:" + excelFile.getCanonicalPath());
fos = new FileOutputStream(excelFile);
//建立新的sheet对象excel的表单
@ -88,22 +103,27 @@ public class ExcelUtil {
// 类数据
Field[] fields = new Field[exportCol.length];
Field[] allFields = ReflexTool.getAllField(exportClass.getName());
String colName;
// 获取字段中文名 优先使用 OutputColumn.name
for (int i = 0; i < exportCol.length; i++) {
fields[i] = exportClass.getDeclaredField(exportCol[i]);
colName = null;
for (int j = 0 ; j < allFields.length ; j++){
if(exportCol[i].equals(allFields[j].getName())){
fields[i] = allFields[j];
if (fields[i].isAnnotationPresent(AnnoOutputColumn.class)) {
colName = fields[i].getAnnotation(AnnoOutputColumn.class).name();
}
colName = null;
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();
if (fields[i].isAnnotationPresent(ApiParam.class) && StringUtils.isBlank(colName)) {
colName = fields[i].getAnnotation(ApiParam.class).value();
}
tableHeader.createCell(i, CellType.STRING).setCellValue(colName);
}
}
tableHeader.createCell(i, CellType.STRING).setCellValue(colName);
}
//加载数据至excel对象
@ -115,7 +135,8 @@ public class ExcelUtil {
for (int i = 0; i < data.size(); i++) {
hssfRow = sheet.createRow(i + 1);
for (int j = 0; j < fields.length; j++) {
CellValue = exportClass.getDeclaredMethod("get" + StringTool.toUpperCaseFirstOne(fields[j].getName())).invoke(data.get(i));
fields[j].setAccessible(true);
CellValue = fields[j].get(data.get(i));
// 判断是否存在引用关系
if (fields[j].isAnnotationPresent(AnnoOutputColumn.class)) {
@ -128,18 +149,26 @@ public class ExcelUtil {
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);
}else if(outputColumn.refClass().equals(SysDictionary.class) && CellValue != null){
CellValue = sysDictionaryService.getSysDictionaryByParentCodeAndValue(outputColumn.refForeignKey(), String.valueOf(CellValue)).getName();
} else if(!outputColumn.refClass().equals(Object.class) && !outputColumn.refClass().equals(SysDictionary.class)){
CellValue = selectByProperty(outputColumn.refClass(), outputColumn.value(), outputColumn.refForeignKey(), CellValue);
}
}
hssfRow.createCell(j, CellType.STRING).setCellValue(String.valueOf(CellValue));
// excel 文本框最大长度
if(String.valueOf(CellValue).length() > 30000){
hssfRow.createCell(j, CellType.STRING).setCellValue(String.valueOf(CellValue).substring(0,30000));
}else{
hssfRow.createCell(j, CellType.STRING).setCellValue(String.valueOf(CellValue));
}
}
}
workbook.write(fos);
fos.flush();
return file2Byte(excelFile);
return excelFile;
} catch (Exception e) {
e.printStackTrace();
throw ImppExceptionBuilder.newInstance()
@ -150,8 +179,7 @@ public class ExcelUtil {
} finally {
try {
workbook.close();
fos.close();
excelFile.deleteOnExit();
fos.close();;
} catch (IOException e) {
LOGGER.error("IOException!", e);
}
@ -320,7 +348,7 @@ public class ExcelUtil {
}
workbook.write(fos);
return file2Byte(excelFile);
return FileUtil.file2Byte(excelFile.getPath());
} catch (IOException e) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
@ -346,18 +374,25 @@ public class ExcelUtil {
*/
public static Map getColName(Class pojoClass) {
Map colName = new LinkedHashMap();
Field[] field = pojoClass.getDeclaredFields();
ApiParam fieldAnno;
for (int i = 0; i < field.length; i++) {
if (field[i].isAnnotationPresent(ApiParam.class)) {
fieldAnno = field[i].getAnnotation(ApiParam.class);
if (!fieldAnno.hidden()) {
colName.put(field[i].getAnnotation(ApiParam.class).value(), field[i].getName());
Field[] fields = ReflexTool.getAllField(pojoClass.getName());
for (int i = 0; i < fields.length; i++) {
if (fields[i].isAnnotationPresent(ApiParam.class)) {
colName.put(fields[i].getName(),fields[i].getAnnotation(ApiParam.class).value());
}
if (fields[i].isAnnotationPresent(AnnoOutputColumn.class)) {
// 判断是否隐藏
if(fields[i].getAnnotation(AnnoOutputColumn.class).hidden()){
colName.remove(fields[i].getName());
}
// 如果AnnoOutputColumn存在name属性则优先使用
if(!StringUtils.isBlank(fields[i].getAnnotation(AnnoOutputColumn.class).name())){
colName.put(fields[i].getName(),fields[i].getAnnotation(AnnoOutputColumn.class).name());
}
}
}
return colName;
}
@ -371,51 +406,69 @@ public class ExcelUtil {
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);
return entityManager.createQuery(queryString).setParameter(propertyName, value).getSingleResult();
}
public static void main(String[] args) {
List<SysTool> sysTools = new ArrayList<>();
SysTool sysTool = new SysTool();
for (int i = 0; i < 14; i++) {
sysTool.setName("ddd");
sysTools.add(sysTool);
}
String[] colName = new String[]{"name", "toolTypeNameRdd", "toolStatus", "toolIp", "toolPort", "toolConnType", "toolDataType", "toolOperating", "toolDescription"};
try {
FileOutputStream ds = new FileOutputStream("E://testOut.xls");
ds.write(ExcelUtil.exportData(sysTools, SysTool.class, colName));
ds.flush();
ds.close();
// ExcelUtil.importData("testOut.xls", new FileInputStream("E://testOut.xls"), SysTool.class);
// ExcelUtil.importTemplate(new FileOutputStream("E://testOut.xls"), SysTool.class, colName);
} catch (IOException e) {
e.printStackTrace();
public static void sendStationLetter(List<SysFile> fileList, Long userId){
StringBuffer letter = new StringBuffer();
letter.append("导出文件列表:");
for (SysFile sysFile:fileList) {
letter.append("<a href='/impp/operate/sys-file/download/"+sysFile.getId() + "'>");
letter.append(sysFile.getFileOriginalName());
letter.append("</a>");
}
// 消息提示
SysMessage sysMessage = new SysMessage();
sysMessage.setMessageSenderNameRdd(CommonEnumUtil.SOFT_TYPE.CORE.getDescription());
sysMessage.setMessageTitle("数据导出");
sysMessage.setMessageContent(letter.toString());
sysMessage.setMessageType(ImppEnumUtil.MESSAGE_TYPE.LETTER.getValue());
sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue());
sysMessage.setMessageSendTime(TimeTool.getNowTime(true));
sysMessage.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
sysMessage.setMessageReceiversId(String.valueOf(userId));
rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE,sysMessage);
}
public static void main(String[] args) {
// List<SysTool> sysTools = new ArrayList<>();
// SysTool sysTool = new SysTool();
// for (int i = 0; i < 14; i++) {
// sysTool.setName("ddd");
// sysTools.add(sysTool);
// }
// String[] colName = new String[]{"name", "toolTypeNameRdd", "toolStatus", "toolIp", "toolPort", "toolConnType", "toolDataType", "toolOperating", "toolDescription"};
// try {
// FileOutputStream ds = new FileOutputStream("E://testOut.xls");
// ds.write(ExcelUtil.exportData(sysTools, SysTool.class, colName));
// ds.flush();
// ds.close();
//// ExcelUtil.importData("testOut.xls", new FileInputStream("E://testOut.xls"), SysTool.class);
//// ExcelUtil.importTemplate(new FileOutputStream("E://testOut.xls"), SysTool.class, colName);
//
// } catch (IOException e) {
// e.printStackTrace();
// }
SysTool st = new SysTool();
st.setName("测试");
st.setId(1L);
public static byte[] file2Byte(File file) {
byte[] buffer = null;
try {
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
} catch (FileNotFoundException e) {
System.out.println(SysTool.class.getField("id").isAccessible());
System.out.println("取值:"+ SysTool.class.getField("id").get(st));
System.out.println(SysTool.class.getDeclaredField("name").isAccessible());
Field field = SysTool.class.getDeclaredField("name");
field.setAccessible(true);
System.out.println("取值:"+ field.get(st));
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IOException e) {
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return buffer;
}
}

@ -0,0 +1,106 @@
package cn.estsh.i3plus.core.apiservice.util;
import java.io.*;
/**
* @Description :
* @Reference :
* @Author : yunhao
* @CreateDate : 2019-01-11 13:34
* @Modify:
**/
public class FileUtil {
/**
*
*/
public static void deletefile(String delpath) {
try {
File file = new File(delpath);
if (!file.isDirectory()) {
file.delete();
} else if (file.isDirectory()) {
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File delfile = new File(delpath + File.separator + filelist[i]);
if (!delfile.isDirectory()) {
delfile.delete();
} else if (delfile.isDirectory()) {
deletefile(delpath + File.separator + filelist[i]);
}
}
file.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* File byte[]
*
* @param filePath
* @return
*/
public static byte[] file2Byte(String filePath){
byte[] buffer = null;
try {
File file = new File(filePath);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buffer;
}
/**
* byte[] File
* @param buf
* @param filePath
* @param fileName
*/
public static void byte2File(byte[] buf, String filePath, String fileName) {
BufferedOutputStream bos = null;
FileOutputStream fos = null;
File file = null;
try {
File dir = new File(filePath);
if (!dir.exists() && dir.isDirectory()) {
dir.mkdirs();
}
file = new File(filePath + File.separator + fileName);
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
bos.write(buf);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

@ -0,0 +1,181 @@
package cn.estsh.i3plus.core.apiservice.util;
import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @Description :
* zip使java.util.zip
* 使ant.jarorg.apache.tools.zip
* @Reference :
* @Author : yunhao
* @CreateDate : 2019-01-11 10:16
* @Modify:
**/
public class ZipUtil {
public static final Logger LOGGER = LoggerFactory.getLogger(ZipUtil.class);
private static byte[] _byte = new byte[1024];
/**
*
*
* @param zip
* @param srcFiles
*/
public static File zipFile(String zip, List<File> srcFiles) {
try {
// zip == null 则创建临时文件
if(StringUtils.isBlank(zip)){
zip = File.createTempFile("zip" + new Date().getTime(), ".zip").getPath();
}
File zipFile = new File(zip);
if (zip.endsWith(".zip") || zip.endsWith(".ZIP")) {
ZipOutputStream _zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
for (File _f : srcFiles) {
handlerFile(zip, _zipOut, _f, "");
}
_zipOut.close();
} else {
LOGGER.error("target file[" + zip + "] is not .zip type file");
}
return zipFile;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
*
*
* @param zip
* @param srcFiles
*/
public static File zipFile(String zip, File srcFiles) {
try {
File zipFile = null;
// zip == null 则创建临时文件
if(StringUtils.isBlank(zip)){
zipFile = new File(System.getProperty("java.io.tmpdir") + File.separator + SysUserInfo.class.getSimpleName()+ ".zip");
zipFile.createNewFile();
zip = zipFile.getPath();
}
if (zip.endsWith(".zip") || zip.endsWith(".ZIP")) {
zipFile = new File(zip);
ZipOutputStream _zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
handlerFile(zip, _zipOut, srcFiles, "");
_zipOut.close();
} else {
LOGGER.error("target file[" + zip + "] is not .zip type file");
}
return zipFile;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @param zip
* @param zipOut
* @param srcFile
* @param path zip
* @throws IOException
*/
private static void handlerFile(String zip, ZipOutputStream zipOut, File srcFile, String path) throws IOException {
LOGGER.debug(" begin to compression file[" + srcFile.getName() + "]");
if (!"".equals(path) && !path.endsWith(File.separator)) {
path += File.separator;
}
if (!srcFile.getPath().equals(zip)) {
// 判断是否为文件目录如果为文件目录则打包目录下所有文件
if (srcFile.isDirectory()) {
File[] _files = srcFile.listFiles();
if (_files.length == 0) {
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName() + File.separator));
zipOut.closeEntry();
} else {
for (File _f : _files) {
handlerFile(zip, zipOut, _f, path + srcFile.getName());
}
}
} else {
InputStream _in = new FileInputStream(srcFile);
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()));
int len = 0;
while ((len = _in.read(_byte)) > 0) {
zipOut.write(_byte, 0, len);
}
_in.close();
zipOut.closeEntry();
}
}
}
/**
* ZIPZIPtargetDIR
*
* @param zipPath ZIP
* @param descDir
*/
public static List<File> upzipFile(String zipPath, String descDir) {
return upzipFile(new File(zipPath), descDir);
}
/**
* .zip
*
* @param zipFile
* @param descDir D:\\ /mnt/d/
* @return
*/
@SuppressWarnings("rawtypes")
public static List<File> upzipFile(File zipFile, String descDir) {
List<File> _list = new ArrayList<>();
try {
ZipFile _zipFile = new ZipFile(zipFile);
for (Enumeration entries = _zipFile.getEntries(); entries.hasMoreElements(); ) {
ZipEntry entry = (ZipEntry) entries.nextElement();
File _file = new File(descDir + File.separator + entry.getName());
if (entry.isDirectory()) {
_file.mkdirs();
} else {
File _parent = _file.getParentFile();
if (!_parent.exists()) {
_parent.mkdirs();
}
InputStream _in = _zipFile.getInputStream((ZipArchiveEntry) entry);
OutputStream _out = new FileOutputStream(_file);
int len;
while ((len = _in.read(_byte)) > 0) {
_out.write(_byte, 0, len);
}
_in.close();
_out.flush();
_out.close();
_list.add(_file);
}
}
} catch (IOException e) {
}
return _list;
}
}

@ -84,9 +84,13 @@ public class MessageWebSocket {
public static void sendMessage(Long userId, String message){
try {
MessageWebSocket websocket = webSocketSet.get(userId);
if (websocket != null){
if (message.equals("heartBit") && websocket.session != null){
websocket.session.getBasicRemote().sendText(message + "=" + sendCount);
sendCount++;
}else{
if(websocket != null){
websocket.session.getBasicRemote().sendText(message);
}
}
} catch (IOException e) {
e.printStackTrace();

Loading…
Cancel
Save