Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java
@@ -38,7 +38,7 @@ String roleType; /** * 根绝roleType查询出来的用户名,后续根据这个参数查询指定的日志 * 根据roleType查询出来的用户名,后续根据这个参数查询指定的日志 */ private List<String> userNameList; Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
@@ -4,13 +4,20 @@ import com.vci.starter.web.annotation.log.VciBusinessLog; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.util.ControllerUtil; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.service.LogBasicServiceI; import com.vci.web.util.Func; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Date; /** * 平台日志控制器 @@ -125,4 +132,28 @@ throw new VciBaseException(errorMsg); } } /** * 导出日志 * @param dto 导出查询传参数对象 * @param response */ @PostMapping( "/exportLogs") @VciBusinessLog(operateName = "导出日志") public void exportLogs(@RequestBody LogQueryCriteriaDTO dto, HttpServletResponse response){ try { String excelPath = logBasicServiceI.exportLogs(dto); ControllerUtil.writeFileToResponse(response,excelPath); } catch (Exception e) { String msg = "导出日志时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); try { //出错时 e.printStackTrace(); ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null); } catch (IOException ioException) { ioException.printStackTrace(); } } } } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java
@@ -191,7 +191,7 @@ String excelPath = attributeService.exportAttributes(exportFileName,attrNames,false); ControllerUtil.writeFileToResponse(response,excelPath); } catch (Exception e) { String msg = "导出枚举时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); String msg = "导出属性时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); try { //出错时 e.printStackTrace(); Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java
@@ -16,18 +16,21 @@ * @return 查询结果 */ BaseResult getPeroid() throws PLException; /** * 保存期限设置 * period 期限编码 * @return 保存结果 */ BaseResult savePeriod(String period) throws PLException; /** * 删除日志 * period 期限编码 * @return 保存结果 */ BaseResult deleteLog(String deleteDate) throws PLException; /** * 查询日志 * @param dto 查询条件传输对象 @@ -35,8 +38,12 @@ * @throws PLException */ BaseResult getLogListByContion(LogQueryCriteriaDTO dto) throws PLException; /** * 操作用户获取 */ BaseResult getOperatingUsers() throws PLException; String exportLogs(LogQueryCriteriaDTO dto) throws PLException; } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
@@ -10,7 +10,14 @@ import com.vci.dto.LogPeriodInfoDTO; import com.vci.dto.LogQueryCriteriaDTO; import com.vci.frameworkcore.compatibility.SmUserQueryServiceI; import com.vci.starter.poi.bo.WriteExcelData; import com.vci.starter.poi.bo.WriteExcelOption; import com.vci.starter.poi.util.ExcelUtil; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.util.LangBaseUtil; import com.vci.starter.web.util.LocalFileUtil; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.service.*; import com.vci.web.util.*; import org.apache.commons.lang3.StringUtils; @@ -19,9 +26,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -136,6 +145,7 @@ */ @Override public BaseResult getLogListByContion(LogQueryCriteriaDTO queryDto) throws PLException { VciBaseUtil.alertNotNull(queryDto,"日志查询参数对象"); List<String> userNameList = userQueryServiceI.queryUserNameByRoleType(queryDto.getRoleType()); queryDto.setUserNameList(userNameList); String querySql = getSQL(queryDto); @@ -188,13 +198,66 @@ } /** * 导出日志 * @param dto 导出的文件名 * @return */ @Override public String exportLogs(LogQueryCriteriaDTO dto) throws PLException{ BaseResult logListByContion = this.getLogListByContion(dto); Collection<LogInfoDTO> logList = logListByContion.getData(); //界面没传名称,使用默认导出名称 String exportFileName = "日志导出_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"); //设置列名 List<String> columns = new ArrayList<>( Arrays.asList("用户名", "姓名", "用户ip","模块", "操作", "时间", "操作结果","描述") ); //写excel String excelPath = LocalFileUtil.getDefaultTempFolder() + File.separator + exportFileName + ".xls"; try { new File(excelPath).createNewFile(); } catch (Throwable e) { throw new VciBaseException(LangBaseUtil.getErrorMsg(e), new String[]{excelPath}, e); } //设置列 List<WriteExcelData> excelDataList = new ArrayList<>(); //设置列头 for (int index = 0; index < columns.size(); index++) { excelDataList.add(new WriteExcelData(0,index, columns.get(index))); } if(Func.isEmpty(logList)){ excelDataList.add(new WriteExcelData(1,1, "导出的日志列表为空!")); }else{ //先按照属性类型排序,不同属性类型导出的数据乱的效果 AtomicInteger i = new AtomicInteger(); logList.stream().forEach(log->{ excelDataList.add(new WriteExcelData(i.get() +1,0, log.getUsername())); excelDataList.add(new WriteExcelData(i.get() +1,1, log.getTruename())); excelDataList.add(new WriteExcelData(i.get() +1,2, log.getUserIp())); excelDataList.add(new WriteExcelData(i.get() +1,3, log.getModuleName())); excelDataList.add(new WriteExcelData(i.get() +1,4, log.getType())); excelDataList.add(new WriteExcelData(i.get() +1,5, log.getDate())); excelDataList.add(new WriteExcelData(i.get() +1,6, log.getLogType())); excelDataList.add(new WriteExcelData(i.get() +1,7, log.getResult())); i.getAndIncrement(); }); } WriteExcelOption excelOption = new WriteExcelOption(excelDataList); ExcelUtil.writeDataToFile(excelPath, excelOption); return excelPath; } /** * 获取用户信息 * @param userNames 用户名称 * @return 用户信息 * @throws PLException */ private List<UserObject> getUsersByUserNames(List<String> userNames) throws PLException { List<UserObject> userList = new ArrayList<UserObject>(); List<UserObject> userList = new ArrayList<>(); for(String userName : userNames){ UserInfo userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByName(userName); UserObject user = new UserObject(); @@ -250,7 +313,7 @@ public String getSQL(LogQueryCriteriaDTO dto) throws PLException { StringBuffer sql = new StringBuffer(""); // int period = getPeriod(LOG_SAVE_PERIOD);//获取保存期限,以月为单位 int period = platformClientUtil.getLogService().getCurPeriod();;//获取保存期限,以月为单位 int period = platformClientUtil.getLogService().getCurPeriod();//获取保存期限,以月为单位 //下面是拼出SQL if(period != 0){ sql.append(" to_date(PLDATE) >= add_months(to_date(sysdate),"+(-period)+")"); @@ -413,4 +476,6 @@ res = true; return res; } } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -1792,13 +1792,9 @@ List<Tree> selectTreeList = uiAuthorDTO.getSelectTreeList(); List<Tree> filterSelectTreeList = this.authTreeListConvert(selectTreeList); //过滤出选择的按钮 List<String> checkButtonList = new ArrayList<>(); selectTreeList.stream().forEach(item->{ Object data = item.getData(); if(data instanceof PLTabButton || item.isLeaf()){ checkButtonList.add(item.getOid()); } }); List<String> checkButtonList = selectTreeList.stream() .filter(item -> item.getData() instanceof PLTabButton || item.isLeaf()) .map(item -> item.getOid()).collect(Collectors.toList()); getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),filterSelectTreeList,checkButtonList,allTreeMap,roleRightDTOList); SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();