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/service/impl/LogBasicServiceImpl.java |   69 +++++++++++++++++++++++++++++++++-
 1 files changed, 67 insertions(+), 2 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 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;
     }
+
+
 }

--
Gitblit v1.9.3