1、新增日期保存期限接口。
2、新增保存期限设置接口。
3、新增删除日志接口。
4、新增日志查询接口。
5、新增获取操作用户接口。
已修改3个文件
已添加6个文件
661 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogInfoDTO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogPeriodInfoDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java 390 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PlatformClientUtil.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/ice.properties 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package com.vci.dto;
import lombok.Data;
import java.io.Serializable;
/**
 * æ—¥å¿—传输对象
 * @author yuxc
 * @date 2024-09-18
 */
@Data
public class LogInfoDTO implements Serializable {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2492852474710986720L;
    private String puid;
    private String username;
    private String truename;
    private String userIp;
    private String result;
    private String content;
    private String date;
    private String type;
    private String moduleName;
    private String entityDesc;
    private String property;
    private String previousVal;
    private String newVal;
    private String logType;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogPeriodInfoDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.vci.dto;
import lombok.Data;
import java.io.Serializable;
/**
 * ä¿å­˜æœŸé™ä¼ è¾“对象
 * @author yuxc
 * @date 2024-09-11
 */
@Data
public class LogPeriodInfoDTO implements Serializable {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2492852474710986720L;
    //编码
    public String code;
    //值
    public String value;
    //是否选中
    public boolean choose;
}
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.vci.dto;
import lombok.Data;
import java.io.Serializable;
/**
 * æ—¥å¿—查询传输对象
 * @author yuxc
 * @date 2024-09-18
 */
@Data
public class LogQueryCriteriaDTO implements Serializable {
    /**
     * ç¦æ­¢ä¿®æ”¹è¿™ä¸ªå€¼
     */
    private static final long serialVersionUID = 2492852474710986720L;
    //开始时间
    private String startDate;
    //结束日期
    private String endDate;
    //日志类型,1:登录;2:登出;3:授权;4:一般操作;5:集成应用
    int logType;
    //用户IP
    String ipText;
    //操作用户
    String userName;
    //操作类型
    String typeText;
    //页码
    int pageNo;
    //页面条数
    int pageSize;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.vci.web.controller;
import com.vci.corba.common.PLException;
import com.vci.dto.LogQueryCriteriaDTO;
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.VciBaseUtil;
import com.vci.web.service.LogBasicServiceI;
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.*;
/**
 * å¹³å°æ—¥å¿—控制器
 * @author yuxc
 * @date 2024-9-11
 */
@Controller
@RequestMapping("/loginBasicController")
@VciBusinessLog(modelName="日志服务")
public class LogBasicController {
    /**
     * ç™»å½•服务
     */
    @Autowired
    private LogBasicServiceI logBasicServiceI;
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * èŽ·å–æ—¥æœŸä¿å­˜æœŸé™ä¸‹æ‹‰åˆ—è¡¨æ¡†
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @VciBusinessLog(operateName="日期保存期限")
    @GetMapping(value = "/getPeroid")
    @ResponseBody
    public BaseResult getPeroid(){
        try {
            return logBasicServiceI.getPeroid();
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "查询出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * ä¿å­˜æœŸé™è®¾ç½®
     * period æœŸé™ç¼–码
     * @return ä¿å­˜ç»“æžœ
     */
    @VciBusinessLog(operateName="保存期限设置")
    @PostMapping(value = "/savePeriod")
    @ResponseBody
    public BaseResult savePeriod(String period){
        try {
            return logBasicServiceI.savePeriod(period);
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "保存出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * åˆ é™¤æ—¥å¿—
     * period æœŸé™ç¼–码
     * @return ä¿å­˜ç»“æžœ
     */
    @VciBusinessLog(operateName="删除日志")
    @DeleteMapping(value = "/deleteLog")
    @ResponseBody
    public BaseResult deleteLog(String deleteDate){
        try {
            return logBasicServiceI.deleteLog(deleteDate);
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "删除出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * æŸ¥è¯¢æ—¥å¿—
     * @param dto æŸ¥è¯¢æ¡ä»¶ä¼ è¾“对象
     * @return æŸ¥è¯¢æ•°æ®
     * @throws PLException
     */
    @VciBusinessLog(operateName="日志查询")
    @GetMapping(value = "/getLogListByContion")
    @ResponseBody
    public BaseResult getLogListByContion(@RequestBody LogQueryCriteriaDTO dto){
        try {
            return logBasicServiceI.getLogListByContion(dto);
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "查询日志出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * æ“ä½œç”¨æˆ·èŽ·å–
     */
    @VciBusinessLog(operateName="获取操作用户")
    @GetMapping(value = "/getOperatingUsers")
    @ResponseBody
    public BaseResult getOperatingUsers(){
        try {
            return logBasicServiceI.getOperatingUsers();
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "查询日志出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LogBasicServiceI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.vci.web.service;
import com.vci.corba.common.PLException;
import com.vci.dto.LogQueryCriteriaDTO;
import com.vci.starter.web.pagemodel.BaseResult;
/**
 * å¹³å°æ—¥å¿—服务
 * @author yuxc
 * @date 2024-9-11
 */
public interface LogBasicServiceI {
    /**
     * èŽ·å–æ—¥æœŸä¿å­˜æœŸé™ä¸‹æ‹‰åˆ—è¡¨æ¡†
     * @return æŸ¥è¯¢ç»“æžœ
     */
    BaseResult getPeroid() throws PLException;
    /**
     * ä¿å­˜æœŸé™è®¾ç½®
     * period æœŸé™ç¼–码
     * @return ä¿å­˜ç»“æžœ
     */
    BaseResult savePeriod(String period) throws PLException;
    /**
     * åˆ é™¤æ—¥å¿—
     * period æœŸé™ç¼–码
     * @return ä¿å­˜ç»“æžœ
     */
    BaseResult deleteLog(String deleteDate) throws PLException;
    /**
     * æŸ¥è¯¢æ—¥å¿—
     * @param dto æŸ¥è¯¢æ¡ä»¶ä¼ è¾“对象
     * @return æŸ¥è¯¢æ•°æ®
     * @throws PLException
     */
    BaseResult getLogListByContion(LogQueryCriteriaDTO dto) throws PLException;
    /**
     * æ“ä½œç”¨æˆ·èŽ·å–
     */
    BaseResult getOperatingUsers() throws PLException;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,390 @@
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;
import com.vci.corba.framework.data.UserInfo;
import com.vci.corba.pllog.data.LogInfo;
import com.vci.corba.pllog.data.LogPeriodInfo;
import com.vci.corba.pllog.data.LogType;
import com.vci.dto.LogInfoDTO;
import com.vci.dto.LogPeriodInfoDTO;
import com.vci.dto.LogQueryCriteriaDTO;
import com.vci.starter.web.pagemodel.BaseResult;
import com.vci.web.service.*;
import com.vci.web.util.*;
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.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * ä¸šåŠ¡ç±»åž‹æœåŠ¡
 * @author yuxc
 * @date 2024-9-11
 */
@Service
public class LogBasicServiceImpl implements LogBasicServiceI {
    /**
     * æ—¥å¿—
     */
    private Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * å¹³å°çš„调用工具类
     */
    @Autowired
    private PlatformClientUtil platformClientUtil;
    public static final String UTF8_BOM="\uFEFF";
    private final String LOG_SAVE_PERIOD = "logSavePeriod";//日志保存期限
    /**
     * èŽ·å–æ—¥æœŸä¿å­˜æœŸé™ä¸‹æ‹‰åˆ—è¡¨æ¡†
     * @return æŸ¥è¯¢ç»“æžœ
     */
    @Override
    public BaseResult getPeroid() throws PLException {
        //获取当前期限设置
        int curPeriod = platformClientUtil.getLogService().getCurPeriod();
        LogPeriodInfo[] periods = platformClientUtil.getLogService().getPeriods();
        List<LogPeriodInfoDTO> logDTOs = new ArrayList<>();
        for (LogPeriodInfo period : periods) {
            LogPeriodInfoDTO dto = new LogPeriodInfoDTO();
            dto.setValue(period.value);
            if(period.code.startsWith(UTF8_BOM)) {
                period.code=period.code.substring(1);
            }
            if (Integer.valueOf(period.code) == curPeriod){
                dto.setChoose(true);
            }
            dto.setCode(period.code);
            logDTOs.add(dto);
        }
        return BaseResult.dataList(logDTOs);
    }
    /**
     * ä¿å­˜æœŸé™è®¾ç½®
     * period æœŸé™ç¼–码
     * @return ä¿å­˜ç»“æžœ
     */
    @Override
    public BaseResult savePeriod(String period) throws PLException {
        UserEntityInfo userEntityInfo = new UserEntityInfo();
        userEntityInfo.setModules("com.vci.client.log.ui.LogBasicConfPanel");
        userEntityInfo.setUserName(WebUtil.getCurrentUserId());
        boolean b = platformClientUtil.getLogService().savePeriod(period, userEntityInfo);
        if(!b){
            return BaseResult.fail("保存失败!");
        }
        return BaseResult.success("保存成功!");
    }
    /**
     * åˆ é™¤æ—¥å¿—
     * @param deleteDate åˆ é™¤çš„æ—¥æœŸ
     * @return åˆ é™¤ç»“æžœ
     * @throws PLException
     */
    @Override
    public BaseResult deleteLog(String deleteDate) throws PLException {
        if(StringUtils.isBlank(deleteDate)){
            throw new PLException("500", new String[]{"日期不能为空!"});
        }
        //获取当前期限设置
        int curSavePeriod = platformClientUtil.getLogService().getCurPeriod();
        int monthSpan = 1;
        String monthLabel = "";
        LogPeriodInfo[] periods = platformClientUtil.getLogService().getPeriods();
        Map<String, String> periodMap = Arrays.stream(periods).collect(Collectors.toMap(e -> e.code, e -> e.value));
        if(curSavePeriod <= 0){
            // æœªé…ç½®æ—¶ï¼Œåªèƒ½åˆ é™¤
            monthLabel = periods[0].value;
            monthSpan = Integer.valueOf(periods[0].code);
        } else {
            monthSpan = curSavePeriod;//期限code
            monthLabel = periodMap.get(String.valueOf(curSavePeriod));//期限显示值
        }
        //检查删除逻辑
        checkCanDelete(deleteDate, monthSpan, monthLabel);
        boolean res = false;
        res = platformClientUtil.getLogService().deleteLog(getDeleteDateString(deleteDate));//删除日志
        if(!res){
            return BaseResult.fail("删除失败!");
        }
        return BaseResult.success("删除成功!");
    }
    /**
     * æŸ¥è¯¢æ—¥å¿—
     * @param queryDto æŸ¥è¯¢æ¡ä»¶ä¼ è¾“对象
     * @return æŸ¥è¯¢æ•°æ®
     * @throws PLException
     */
    @Override
    public BaseResult getLogListByContion(LogQueryCriteriaDTO queryDto) throws PLException {
        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();
            dto.setLogType(logInfo.logType);
            dto.setDate(logInfo.date);
            dto.setContent(logInfo.content);
            dto.setPuid(logInfo.puid);
            dto.setModuleName(logInfo.moduleName);
            dto.setEntityDesc(logInfo.entityDesc);
            dto.setResult(logInfo.result);
            dto.setType(logInfo.type);
            dto.setProperty(logInfo.property);
            dto.setTruename(logInfo.truename);
            dto.setNewVal(logInfo.newVal);
            dto.setUserIp(logInfo.userIp);
            dto.setUsername(logInfo.username);
            dto.setPreviousVal(logInfo.previousVal);
            dtos.add(dto);
        }
        long sumLogRows = platformClientUtil.getLogService().getSumLogRows(querySql);
        BaseResult result = new BaseResult();
        result.setSuccess(true);
        result.setCode(200);
        result.setData(dtos);
        result.setTotal(sumLogRows);
        return result;
    }
    /**
     * æ“ä½œç”¨æˆ·èŽ·å–
     */
    @Override
    public BaseResult getOperatingUsers() throws PLException {
        List<UserObject> users = new ArrayList<UserObject>();
        if("secAdmin".equals(WebUtil.getCurrentUserId())){
            users.addAll(getUsersByUserNames(Arrays.asList("auditAdmin")));
            users.addAll(getUsersByUserNames(getUserNameByUserType(2)));
        }
        else if("auditAdmin".equals(WebUtil.getCurrentUserId())){
            users.addAll(getUsersByUserNames(Arrays.asList("secAdmin", "sysAdmin")));
        } else if("sysAdmin".equals(WebUtil.getCurrentUserId())){
        }
        return BaseResult.dataList(users);
    }
    /**
     * èŽ·å–ç”¨æˆ·ä¿¡æ¯
     * @param userNames ç”¨æˆ·åç§°
     * @return ç”¨æˆ·ä¿¡æ¯
     * @throws PLException
     */
    private List<UserObject> getUsersByUserNames(List<String> userNames) throws PLException {
        List<UserObject> userList = new ArrayList<UserObject>();
        for(String userName : userNames){
            UserInfo userInfo = platformClientUtil.getFrameworkService().fetchUserInfoByName(userName);
            UserObject user = new UserObject();
            user.setId(userInfo.id);
            user.setUserName(userInfo.userName);
            user.setPwd(userInfo.pwd);
            user.setEmail(userInfo.email);
            user.setTrueName(userInfo.trueName);
            user.setSpecialties(userInfo.specialties);
            user.setDesc(userInfo.desc);
            user.setUserType(userInfo.userType);
            user.setStatus(userInfo.status);
            user.setCreateTime(userInfo.createTime);
            user.setCreateUser(userInfo.createUser);
            user.setUpdateTime(userInfo.updateTime);
            user.setUpdateUser(userInfo.updateUser);
            user.setPwdUpdateTime(userInfo.pwdUpdateTime);
            user.setGrantor(userInfo.grantor);
            user.setSecretGrade(userInfo.secretGrade);
            user.setIsDeptLeader(userInfo.isDeptLeader);
            userList.add(user);
        }
        Collections.sort(userList, new Comparator<UserObject>(){
            @Override
            public int compare(UserObject o1, UserObject o2) {
                return o1.getUserName().compareTo(o2.getUserName());
            }
        });
        return userList;
    }
    /**
     * æ ¹æ®ç”¨æˆ·ç±»åž‹èŽ·å–ç”¨æˆ·æ•°æ®
     * @param userType ç”¨æˆ·ç±»åž‹
     * @return ç”¨æˆ·æ•°æ®
     * @throws PLException
     */
    private List<String> getUserNameByUserType(int userType) throws PLException{
        List<String> userNames = new ArrayList<String>();
        String sql = "select plusername,pltruename from pluser u where u.plusertype = " + String.valueOf(userType);
        String[][] valss = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
        for(String[] vals : valss){
            userNames.add(vals[0]);
        }
        return userNames;
    }
    /**
     * èŽ·å–æŸ¥è¯¢æ¡ä»¶å¹¶æ‹¼æˆSQL,只拼where子句后面的SQL
     * @return
     */
    public String getSQL(LogQueryCriteriaDTO dto) throws PLException {
        StringBuffer sql = new StringBuffer("");
//        int period = getPeriod(LOG_SAVE_PERIOD);//获取保存期限,以月为单位
        int period = platformClientUtil.getLogService().getCurPeriod();;//获取保存期限,以月为单位
        //下面是拼出SQL
        if(period != 0){
            sql.append(" to_date(PLDATE) >= add_months(to_date(sysdate),"+(-period)+")");
        }
        if(dto.getStartDate()!=null&&!dto.getStartDate().trim().equals("")&&!dto.getStartDate().equals("null")){//起始日期
            if(!sql.toString().equals("")){
                sql.append(" and ");
            }
            sql.append(" to_date(PLDATE) >= to_date('"+dto.getStartDate().trim()+"','yyyy-MM-dd') ");
        }
        if(dto.getEndDate()!=null&&!dto.getEndDate().trim().equals("")&&!dto.getEndDate().equals("null")){//结束日期
            if(!sql.toString().equals("")){
                sql.append(" and ");
            }
            sql.append(" trunc(PLDATE) <= to_date('"+dto.getEndDate().trim()+"','yyyy-MM-dd')");
        }
        if(dto.getLogType() == LogType.Login.value()) {//登入登出日志
            if(!sql.toString().equals("")){
                sql.append(" and ");
            }
            sql.append("PLLOGTYPE in ('" + getLogTypeString(LogType.Login) +"','" + getLogTypeString(LogType.Logout)+ "')");
        } else if(dto.getLogType() == LogType.Grant.value()) {//授权日志
            if(!sql.toString().equals("")){
                sql.append(" and ");
            }
            sql.append("PLLOGTYPE in('" + getLogTypeString(LogType.Grant) + "')");
        } else if(dto.getLogType() == LogType.General.value()) {//一般操作日志
            if(!sql.toString().equals("")){
                sql.append(" and ");
            }
            sql.append("PLLOGTYPE in('" + getLogTypeString(LogType.General) + "')");
        }
        if(StringUtils.isNotBlank(dto.getUserName())){//操作用户
            if(!dto.getUserName().trim().equals("")){//如果用户名为空格则不加用户条件
                if(!sql.toString().equals("")){
                    sql.append(" and ");
                }
                if(dto.getUserName().contains("*")){
                    dto.setUserName(dto.getUserName().trim().replaceAll("\\*", "%"));
                    sql.append(" PLUSER like '").append(dto.getUserName().trim()).append("'");
                }else{
                    sql.append(" PLUSER = '").append(dto.getUserName().trim()).append("'");
                }
            }
        }
        //按IP查询
        if(StringUtils.isNotBlank(dto.getIpText())){
            String ip = dto.getIpText().trim();
            if(!sql.toString().equals("")){
                sql.append(" and ");
            }
            if(ip.trim().contains("*")){//模糊查询
                ip = ip.trim().replaceAll("\\*", "%");
                sql.append(" PLIP like '").append(ip.trim()).append("'");
            }else{
                sql.append(" PLIP = '").append(ip.trim()).append("'");
            }
        }
        if(StringUtils.isNotBlank(dto.getTypeText())){
            String typeValue = dto.getTypeText();
            sql.append(" and pltype like '%").append(typeValue).append("%'");
        }
        //过滤掉admin和developer用户的日志记录
        sql.append(" and PLUSER !='admin' and  PLUSER !='developer' ");
        sql.append(" and pluser != '" + WebUtil.getCurrentUserId() + "' ");
        // å®‰å…¨ä¿å¯†å‘˜ä¸çœ‹ç³»ç»Ÿç®¡ç†å‘˜çš„æ—¥å¿—
        if("secAdmin".equals(WebUtil.getCurrentUserId())){
            sql.append(" and pluser != 'sysAdmin' ");
        }
        // å®¡è®¡ç®¡ç†å‘˜åªçœ‹ç³»ç»Ÿç®¡ç†å‘˜å’Œå®‰å…¨ä¿å¯†å‘˜çš„æ—¥å¿—
        else if("auditAdmin".equals(WebUtil.getCurrentUserId())){
            sql.append(" and pluser in ('secAdmin', 'sysAdmin')");
        }
        return sql.toString();
    }
    protected String getLogTypeString(LogType logType){
        String res = "";
        if(logType == LogType.Login) {
            res = "登录";
        } else if(logType == LogType.Logout) {
            res = "登出";
        } else if(logType == LogType.Grant) {
            res = "授权";
        } else if(logType == LogType.General) {
            res = "一般操作";
        } else if(logType == LogType.Integration) {
            res = "集成应用";
        }
        return res;
    }
    /**
     * æ—¥æœŸå­—符串处理
     * @param deleteDate æ—¥æœŸå­—符串
     * @return å¤„理完成的日期字符串
     */
    protected String getDeleteDateString(String deleteDate){
        int s = Integer.parseInt(deleteDate.substring(8))+1;
        StringBuffer buff = new StringBuffer();
        buff.append(deleteDate.substring(0, 8));
        if(("0"+s).length()>2){
            buff.append(s+"");
        }else{
            buff.append("0"+s);
        }
        return buff.toString();
    }
    /**
     * åˆ é™¤é€»è¾‘检查
     * @param deleteDate æ—¥æœŸå­—符串
     * @param monthSpan æœŸé™code
     * @param monthLabel æœŸé™æ˜¾ç¤ºå€¼
     * @return
     * @throws PLException
     */
    private boolean checkCanDelete(String deleteDate, int monthSpan, String monthLabel) throws PLException {
        boolean res = false;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            sdf.parse(deleteDate);
        } catch (ParseException  e1) {
            throw new PLException("500", new String[]{"将" + deleteDate + "转换日期时发生错误!"});
        }
        String sql = "SELECT FLOOR(MONTHS_BETWEEN(SYSDATE, to_date('" + deleteDate + "','yyyy-mm-dd'))) from dual";
        String[][] vals;
        try {
            vals = platformClientUtil.getQueryService().queryBySqlWithoutKey(sql);
            if(vals != null && vals.length > 0 && vals[0].length > 0){
                int spval = Integer.valueOf(vals[0][0]);
                if(spval <= monthSpan){
                    throw new PLException("500", new String[]{"只能删除 " + monthLabel + " ä¹‹å‰çš„æ•°æ®ï¼"});
                }
            }
        } catch (PLException e) {
            e.printStackTrace();
            e.messages[0] += "计算是否可以删除指定日期之前的数据时发生错误!";
            throw new PLException("500", e.messages);
        }
        res = true;
        return res;
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsActionServiceImpl.java
@@ -98,6 +98,7 @@
        PLActionCls pac = new PLActionCls();
        pac.name = pLActionCls.getName();
        pac.pid = pLActionCls.getPid();
        pac.id = pLActionCls.getId();
        pac.description = pLActionCls.getDescription() == null ? "" : pLActionCls.getDescription();
        pac.creator = WebUtil.getCurrentUserId();
        pac.createTime = System.currentTimeMillis();
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/PlatformClientUtil.java
@@ -4,7 +4,6 @@
import com.vci.corba.bofactory.BOFactoryServicePrx;
import com.vci.corba.common.PLException;
import com.vci.corba.framework.FrameworkServicePrx;
import com.vci.corba.log.LogServicePrx;
import com.vci.corba.omd.atm.AttPoolServicePrx;
import com.vci.corba.omd.btm.BTMServicePrx;
import com.vci.corba.omd.data.AttributeValue;
@@ -14,6 +13,7 @@
import com.vci.corba.omd.qtm.QTDServicePrx;
import com.vci.corba.omd.stm.StatePoolServicePrx;
import com.vci.corba.omd.vrm.VersionRuleServicePrx;
import com.vci.corba.pllog.LogServicePrx;
import com.vci.corba.portal.PortalServicePrx;
import com.vci.corba.query.ObjectQueryServicePrx;
import com.vci.corba.volume.VolumeServicePrx;
Source/plt-web/plt-web-parent/plt-web/src/main/resources/properties/ice.properties
@@ -1,4 +1,5 @@
#NameService=PLT
Adapter=PLT
Endpoints=default -h localhost -p 4601
Endpoints=default -h localhost -p 4061
Ice.MessageSizeMax=1048576
#Endpoints=VCI-PLT/Locator:default -h localhost -p 4601