From a899eae792897cb014b9291562f32f5786cfb1f4 Mon Sep 17 00:00:00 2001
From: yuxc <yuxc@vci-tech.com>
Date: 星期四, 16 一月 2025 15:51:13 +0800
Subject: [PATCH] UI授权后,由于一个用户拥有多个角色问题,没有权限的角色可能会把有权限的角色数据替换,进行修改

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java |   85 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 80 insertions(+), 5 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..fc2702d 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
@@ -1,4 +1,5 @@
 package com.vci.web.service.impl;
+
 import com.vci.client.common.objects.UserObject;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
@@ -9,19 +10,30 @@
 import com.vci.dto.LogInfoDTO;
 import com.vci.dto.LogPeriodInfoDTO;
 import com.vci.dto.LogQueryCriteriaDTO;
-import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
+import com.vci.web.service.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.web.service.*;
-import com.vci.web.util.*;
+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.LogBasicServiceI;
+import com.vci.starter.web.util.Lcm.Func;
+import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.WebUtil;
 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.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 +148,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 +201,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();
@@ -250,7 +323,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 +486,6 @@
         res = true;
         return res;
     }
+
+
 }

--
Gitblit v1.9.3