From 49f13be32b8c3a0742df021f13300f34d86c9b89 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期三, 23 十月 2024 17:46:50 +0800 Subject: [PATCH] 日志导出接口上传 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java | 31 ++++++++++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java | 7 ++ Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java | 2 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java | 2 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 10 +-- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java | 69 ++++++++++++++++++++++ 6 files changed, 110 insertions(+), 11 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java index c1bbc2b..e23592d 100644 --- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java +++ b/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; diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java index e35e925..aeb3b35 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java +++ b/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(); + } + } + } + } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java index 8b982bd..2323993 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsAttributeController.java +++ b/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(); diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java index 995a7ce..e29f5fe 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java +++ b/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; + } 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 bc75fa7..5e6b4fc 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 @@ -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","妯″潡", "鎿嶄綔", "鏃堕棿", "鎿嶄綔缁撴灉","鎻忚堪") + ); + + //鍐檈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(); + 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();//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅 //涓嬮潰鏄嫾鍑篠QL if(period != 0){ sql.append(" to_date(PLDATE) >= add_months(to_date(sysdate),"+(-period)+")"); @@ -413,4 +476,6 @@ res = true; return res; } + + } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java index 093939e..2dd03e2 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java +++ b/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(); -- Gitblit v1.9.3