From 65866894f615d7a1386cd7f030307322996450de Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 24 十月 2024 16:17:37 +0800
Subject: [PATCH] 文件柜导出接口上传,ui定义导出界面传参调整。

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 101 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..3dd6390 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,73 @@
     }
 
     /**
+     * 瀵煎嚭鏃ュ織
+     * @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 +312,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 +354,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 +415,7 @@
         }
         return sql.toString();
     }
+
     protected String getLogTypeString(LogType logType){
         String res = "";
         if(logType == LogType.Login) {
@@ -387,4 +483,6 @@
         res = true;
         return res;
     }
+
+
 }

--
Gitblit v1.9.3