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