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