From 67161ac2aa93c7d99662f123ae8c0deb5fe979ac Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 23 十月 2024 21:25:12 +0800 Subject: [PATCH] 日志导出修改支持全查导出 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 102 insertions(+), 3 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java index 2392826..96b9519 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java @@ -9,7 +9,15 @@ import com.vci.dto.LogInfoDTO; 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; @@ -18,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; /** @@ -41,6 +51,10 @@ */ @Autowired private PlatformClientUtil platformClientUtil; + + @Autowired + private SmUserQueryServiceI userQueryServiceI; + public static final String UTF8_BOM="\uFEFF"; private final String LOG_SAVE_PERIOD = "logSavePeriod";//鏃ュ織淇濆瓨鏈熼檺 @@ -131,8 +145,12 @@ */ @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); LogInfo[] logInfos = platformClientUtil.getLogService().getLogListByContion(queryDto.getPageNo(),queryDto.getPageSize(),querySql); + List<LogInfoDTO> dtos = new ArrayList<>(); for (LogInfo logInfo : logInfos) { LogInfoDTO dto = new LogInfoDTO(); @@ -160,6 +178,7 @@ result.setTotal(sumLogRows); return result; } + /** * 鎿嶄綔鐢ㄦ埛鑾峰彇 */ @@ -179,13 +198,74 @@ } /** + * 瀵煎嚭鏃ュ織 + * @param dto 瀵煎嚭鐨勬枃浠跺悕 + * @return + */ + @Override + public String exportLogs(LogQueryCriteriaDTO dto) throws PLException{ + VciBaseUtil.alertNotNull(dto,"鏃ュ織鏌ヨ鍙傛暟瀵硅薄"); + List<String> userNameList = userQueryServiceI.queryUserNameByRoleType(dto.getRoleType()); + dto.setUserNameList(userNameList); + String querySql = getSQL(dto); + //鍏ㄦ煡璇� + if(dto.getPageSize() == -1){ + long sumLogRows = platformClientUtil.getLogService().getSumLogRows(querySql); + dto.setPageSize((int) sumLogRows); + } + LogInfo[] logList = platformClientUtil.getLogService().getLogListByContion(dto.getPageNo(),dto.getPageSize(),querySql); + + //鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ鍑哄悕绉� + String exportFileName = "鏃ュ織瀵煎嚭_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"); + //璁剧疆鍒楀悕 + List<String> columns = new ArrayList<>( + Arrays.asList("鐢ㄦ埛鍚�", "濮撳悕", "鐢ㄦ埛ip","妯″潡", "鎿嶄綔", "鏃堕棿", "鎿嶄綔缁撴灉","鎻忚堪") + ); + + //鍐檈xcel + 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(); + Arrays.stream(logList).forEach(log->{ + excelDataList.add(new WriteExcelData(i.get() +1,0, log.username)); + excelDataList.add(new WriteExcelData(i.get() +1,1, log.truename)); + excelDataList.add(new WriteExcelData(i.get() +1,2, log.userIp)); + excelDataList.add(new WriteExcelData(i.get() +1,3, log.moduleName)); + excelDataList.add(new WriteExcelData(i.get() +1,4, log.type)); + excelDataList.add(new WriteExcelData(i.get() +1,5, log.date)); + excelDataList.add(new WriteExcelData(i.get() +1,6, log.logType)); + excelDataList.add(new WriteExcelData(i.get() +1,7, log.result)); + 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(); @@ -233,14 +313,15 @@ } return userNames; } + /** * 鑾峰彇鏌ヨ鏉′欢骞舵嫾鎴怱QL锛屽彧鎷紈here瀛愬彞鍚庨潰鐨凷QL * @return */ public String getSQL(LogQueryCriteriaDTO dto) throws PLException { StringBuffer sql = new StringBuffer(""); -// int period = getPeriod(LOG_SAVE_PERIOD);//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅 - int period = platformClientUtil.getLogService().getCurPeriod();;//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅 + // int period = getPeriod(LOG_SAVE_PERIOD);//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅 + int period = platformClientUtil.getLogService().getCurPeriod();//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅 //涓嬮潰鏄嫾鍑篠QL if(period != 0){ sql.append(" to_date(PLDATE) >= add_months(to_date(sysdate),"+(-period)+")"); @@ -274,6 +355,21 @@ } sql.append("PLLOGTYPE in('" + getLogTypeString(LogType.General) + "')"); } + if(Func.isNotEmpty(dto.getUserNameList())){ + if(!sql.toString().equals("")){ + sql.append(" and "); + } + if(dto.getUserNameList().size()<=1){ + sql.append(" PLUSER = '").append(dto.getUserNameList().get(0).trim()).append("'"); + }else{ + sql.append(" PLUSER in ("); + String inWhere = dto.getUserNameList().stream() + .map(item -> "'" + item + "'") + .collect(Collectors.joining(",")); + sql.append(inWhere).append(")"); + } + } + if(StringUtils.isNotBlank(dto.getUserName())){//鎿嶄綔鐢ㄦ埛 if(!dto.getUserName().trim().equals("")){//濡傛灉鐢ㄦ埛鍚嶄负绌烘牸鍒欎笉鍔犵敤鎴锋潯浠� if(!sql.toString().equals("")){ @@ -320,6 +416,7 @@ } return sql.toString(); } + protected String getLogTypeString(LogType logType){ String res = ""; if(logType == LogType.Login) { @@ -387,4 +484,6 @@ res = true; return res; } + + } -- Gitblit v1.9.3