diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java index 4062cb7..85ce4c6 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysDictionaryService.java @@ -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); } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java index e0303a3..92ab4ca 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysFileService.java @@ -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; } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java index ccd2042..a0f5a23 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysDictionaryController.java @@ -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 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) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java index bcaa485..b01698b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysFileController.java @@ -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 { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogExceptionController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogExceptionController.java index 173ea70..aac7848 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogExceptionController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogExceptionController.java @@ -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()); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogOperateController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogOperateController.java index d3b6ad5..28c8ace 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogOperateController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogOperateController.java @@ -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()); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogSystemController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogSystemController.java index 533c771..047e84a 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogSystemController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysLogSystemController.java @@ -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()); } } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java index 0f3b102..dee27de 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrderNoRuleController.java @@ -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()); } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java index fdc5579..d49a53e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java @@ -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){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java index b37a399..147bd22 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/mq/MessageLetterQueueReceiver.java @@ -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) diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java index 6d6d0ea..ad4ea82 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysDictionaryService.java @@ -171,12 +171,8 @@ public class SysDictionaryService implements ISysDictionaryService { @Override @ApiOperation(value = "根据父节点 以及当前节点CODE 获取字典信息") public SysDictionary getSysDictionaryByParentCodeAndCode(String parentCode, String code) { - List 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}); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java index dc8a70d..a13da7d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysFileServiceImpl.java @@ -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); + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/ExcelUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/ExcelUtil.java index a1bd351..fcb58fc 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/ExcelUtil.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/ExcelUtil.java @@ -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 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 fileList, Long userId){ + StringBuffer letter = new StringBuffer(); + letter.append("导出文件列表:"); + for (SysFile sysFile:fileList) { + letter.append(""); + letter.append(sysFile.getFileOriginalName()); + letter.append(""); } + + // 消息提示 + 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 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; + + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/FileUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/FileUtil.java new file mode 100644 index 0000000..4735e14 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/FileUtil.java @@ -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(); + } + } + } + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/ZipUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/ZipUtil.java new file mode 100644 index 0000000..5079e0e --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/ZipUtil.java @@ -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.jar中的org.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 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(); + } + } + } + + /** + * 解压缩ZIP文件,将ZIP文件里的内容解压到targetDIR目录下 + * + * @param zipPath 待解压缩的ZIP文件路径 + * @param descDir 目标目录 + */ + public static List 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 upzipFile(File zipFile, String descDir) { + List _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; + } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/MessageWebSocket.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/MessageWebSocket.java index 77ff2a2..969b4d4 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/MessageWebSocket.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/websocket/MessageWebSocket.java @@ -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();