田源
2023-11-27 b874509c73cbdea8eab37bb232ed3fd515b9a1a2
Merge remote-tracking branch 'origin/master'
已修改13个文件
已删除4个文件
已重命名1个文件
已添加1个文件
728 ■■■■ 文件已修改
Source/UBCS-WEB/src/views/monitor/log/localLog.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-log-api/pom.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/entity/LogOperate.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/entity/SystemLog.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/enumpack/ServiceNameRoleEnum.java 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/vo/LocalLogVO.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogLocalController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogSystemController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/feign/LogClient.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogLocalService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogOperateService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogSystemService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogOperateServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogSystemServiceImpl.java 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/monitor/log/localLog.vue
@@ -69,7 +69,7 @@
          // menuWidth: 300,
          dialogClickModal: false,
          highlightCurrentRow: true, //行选中时高亮
          rowKey: "logName", //行数据的 Key,用来优化 Table çš„æ¸²æŸ“
          rowKey: "randomOid", //行数据的 Key,用来优化 Table çš„æ¸²æŸ“
          column: [
            {
              label: "服务名称",
@@ -121,11 +121,18 @@
        };
      }
    },
    methods: {
    methods: {
      // åˆ¤æ–­å®¢æˆ·ç«¯æ‰€åœ¨çš„æ“ä½œç³»ç»Ÿå¹³å°
      isWindows() {
        return navigator.platform.indexOf('Win') !== -1
      },
      // æ ¹æ®æ“ä½œç³»ç»Ÿå¹³å°è¿”回相应的路径分隔符
      getPathSeparator() {
        return this.isWindows() ? '\\' : '/'
      },
      downLoadLogFile(row){
          this.downloadLoading = true;
          let logPath = row.hasChildren ?  row.logPath:row.logPath+"\\"+row.logName;
          let logPath = row.hasChildren ?  row.logPath:row.logPath+this.getPathSeparator()+row.logName;
          downLoadLog(Object.assign({},row,{logFullPaths:logPath})).then(res=>{
              func.downloadFileByBlobHandler(res);
              this.downloadLoading = false;
Source/UBCS/ubcs-ops-api/ubcs-log-api/pom.xml
@@ -10,6 +10,14 @@
    <modelVersion>4.0.0</modelVersion>
    <artifactId>ubcs-log-api</artifactId>
    <dependencies>
        <dependency>
            <groupId>com.vci.ubcs</groupId>
            <artifactId>ubcs-util-api</artifactId>
            <version>3.0.1.RELEASE</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/entity/LogOperate.java
@@ -1,10 +1,14 @@
package com.vci.ubcs.log.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
 * æ“ä½œæ—¥å¿—管理:(包括登录日志、操作日志、授权日志,以及管理员的以上三种日志)
@@ -14,6 +18,7 @@
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("PL_LOG_OPERATE")
public class LogOperate implements Serializable {
    /**
@@ -24,6 +29,7 @@
    /**
     * ä¸»é”®
     */
    @TableId("OID")
    private String oid;
    /**
@@ -54,7 +60,7 @@
    /**
     * æ—¶é—´
     */
    private String time;
    private Date time;
    /**
     * æ“ä½œç»“æžœ
@@ -66,4 +72,9 @@
     */
    private String description;
    /**
     * æ—¥å¿—类型
     */
    private String logType;
}
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/entity/SystemLog.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/enumpack/ServiceNameRoleEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,182 @@
package com.vci.ubcs.log.enumpack;
import com.vci.ubcs.starter.web.enumpck.BaseEnum;
/**
 * @author ludc
 * @date 2023/11/26 18:54
 */
public enum ServiceNameRoleEnum implements BaseEnum {
    /**
     * ç¼–码服务
     */
    UBCS_CODE("ubcs_code","编码服务"),
    /**
     * é‰´æƒæœåŠ¡
     */
    UBCS_AUTH("ubcs_auth","鉴权服务"),
    /**
     * æµç¨‹ç®¡ç†æœåŠ¡
     */
    UBCS_FLOW("ubcs_flow","流程管理服务"),
    /**
     * å¯¹è±¡å»ºæ¨¡ç®¡ç†æœåŠ¡
     */
    UBCS_OMD("ubcs_omd","对象建模管理服务"),
    /**
     * æ—¥å¿—管理服务
     */
    UBCS_LOG("ubcs_log","日志管理服务"),
    /**
     * é›†æˆç®¡ç†æœåŠ¡
     */
    UBCS_APPLYJTCODESERVICE("ubcs_applyjtcodeservice","集成管理服务"),
    /**
     * ç³»ç»Ÿç®¡ç†æœåŠ¡
     */
    UBCS_SYSTEM("ubcs_system","系统管理服务"),
    /**
     * é¦–页桌面服务
     */
    UBCS_DESK("ubcs_desk","首页桌面服务"),
    /**
     * æ–‡ä»¶ç®¡ç†æœåŠ¡
     */
    UBCS_RESOURCE("ubcs_resource","文件管理服务"),
    /**
     * ç½‘关服务
     */
    UBCS_GATEWAY("ubcs_gateway","网关服务"),
    /**
     * æŠ¥è¡¨æœåŠ¡
     */
    UBCS_REPORT("ubcs_report","报表服务"),
    /**
     * ç”¨æˆ·ä¿¡æ¯ç®¡ç†æœåŠ¡
     */
    UBCS_USER("ubcs_user","用户信息管理服务"),
    /**
     * ç”¨æˆ·ä¿¡æ¯ç®¡ç†æœåŠ¡
     */
    UBCS_ADMIN("ubcs_user","服务治理服务")
    ;
    /**
     * æžšä¸¾çš„值
     */
    private String value;
    /**
     * æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     */
    private String text;
    /**
     * èŽ·å–æžšä¸¾å€¼
     *
     * @return æžšä¸¾å€¼
     */
    @Override
    public String getValue() {
        return value;
    }
    /**
     * è®¾ç½®æžšä¸¾å€¼
     *
     * @param value æžšä¸¾å€¼
     */
    public void setValue(String value) {
        this.value = value;
    }
    /**
     * èŽ·å–æžšä¸¾æ˜¾ç¤ºæ–‡æœ¬
     *
     * @return æ˜¾ç¤ºæ–‡æœ¬
     */
    @Override
    public String getText() {
        return text;
    }
    /**
     * è®¾ç½®æ˜¾ç¤ºæ–‡æœ¬
     *
     * @param text æ˜¾ç¤ºæ–‡æœ¬
     */
    public void setText(String text) {
        this.text = text;
    }
    /**
     * æž„造函数
     *
     * @param value å€¼
     * @param text  æ˜¾ç¤ºæ–‡æœ¬
     */
    private ServiceNameRoleEnum(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * æ ¹æ®åç§°èŽ·å–å¯¹åº”çš„æžšä¸¾å€¼
     *
     * @param text åç§°
     * @return æžšä¸¾å€¼
     */
    public static String getValueByText(String text) {
        for (ServiceNameRoleEnum wenum : ServiceNameRoleEnum.values()) {
            if (wenum.getText().equalsIgnoreCase(text)) {
                return wenum.getValue();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–åç§°
     *
     * @param value æžšä¸¾å€¼
     * @return åç§°
     */
    public static String getTextByValue(String value) {
        for (ServiceNameRoleEnum wenum : ServiceNameRoleEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum.getText();
            }
        }
        return "";
    }
    /**
     * æ ¹æ®æžšä¸¾å€¼èŽ·å–æžšä¸¾å¯¹è±¡
     *
     * @param value æžšä¸¾å€¼
     * @return æžšä¸¾å¯¹è±¡ï¼Œä¸å­˜åœ¨æ—¶å€™è¿”回null
     */
    public static ServiceNameRoleEnum forValue(String value) {
        for (ServiceNameRoleEnum wenum : ServiceNameRoleEnum.values()) {
            if (wenum.getValue().equalsIgnoreCase(value)) {
                return wenum;
            }
        }
        return null;
    }
}
Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/vo/LocalLogVO.java
ÎļþÃû´Ó Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/dto/LocalLogVO.java ÐÞ¸Ä
@@ -1,6 +1,7 @@
package com.vci.ubcs.log.dto;
package com.vci.ubcs.log.vo;
import com.vci.ubcs.log.entity.LocalLog;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import javafx.scene.Parent;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -28,4 +29,9 @@
     */
    private String logFullPaths;
    /**
     * éšæœºçš„oid,为了解决表格渲染rowkey重复的问题
     */
    private String randomOid = VciBaseUtil.getPk();
}
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogLocalController.java
@@ -1,28 +1,23 @@
package com.vci.ubcs.log.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.common.utils.StringUtils;
import com.vci.ubcs.log.dto.LocalLogVO;
import com.vci.ubcs.log.vo.LocalLogVO;
import com.vci.ubcs.log.service.ILogLocalService;
import com.vci.ubcs.log.entity.LocalLog;
import com.vci.ubcs.resource.utils.FileDownloadUtil;
import com.vci.ubcs.starter.web.util.ControllerUtil;
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.rmi.ServerException;
import java.util.List;
import java.util.Map;
/**
 * æœ¬åœ°ç³»ç»Ÿæ—¥å¿—
@@ -44,7 +39,7 @@
     * @return
     */
    @PostMapping("/lazy-list")
    public R<List<LocalLog>> getSystemLogList(@RequestBody LocalLog localLog){
    public R<List<LocalLogVO>> getSystemLogList(@RequestBody LocalLog localLog){
         return R.data(logLocalService.getSystemLogList(localLog.getLogPath()));
    }
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogSystemController.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/feign/LogClient.java
@@ -67,4 +67,7 @@
        log.setParams(log.getParams().replace("&amp;", "&"));
        return R.data(errorLogService.save(log));
    }
}
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogLocalService.java
@@ -1,13 +1,12 @@
package com.vci.ubcs.log.service;
import com.vci.ubcs.log.dto.LocalLogVO;
import com.vci.ubcs.log.vo.LocalLogVO;
import com.vci.ubcs.log.entity.LocalLog;
import com.vci.ubcs.resource.bo.FileObjectBO;
import org.springblade.core.tool.api.R;
import java.rmi.ServerException;
import java.util.List;
import java.util.Map;
/**
 * æœ¬åœ°ç³»ç»Ÿæ—¥å¿—
@@ -21,7 +20,7 @@
     * @param logParentPath
     * @return
     */
    List<LocalLog> getSystemLogList(String logParentPath);
    List<LocalLogVO> getSystemLogList(String logParentPath);
    /**
     * ä¸‹è½½ï¼Œæ ¹æ®æœåŠ¡åæ‰€åœ¨æ–‡ä»¶åå’Œæ–‡ä»¶åä¸‹è½½æ–‡ä»¶
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogOperateService.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vci.ubcs.log.entity.LogOperate;
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
import org.springblade.core.log.exception.ServiceException;
import java.util.List;
@@ -17,13 +19,13 @@
     * @param logOperate
     * @return
     */
    boolean saveLogOperate(LogOperate logOperate);
    boolean saveLogOperate(LogOperate logOperate) throws ServiceException;
    /**
     * æ¡ä»¶æŸ¥è¯¢èŽ·å–æ—¥å¿—åˆ—è¡¨
     * @param logOperate
     * @param bladeQueryObject
     * @return
     */
    List<LogOperate> listByCondition(LogOperate logOperate);
    List<LogOperate> listByCondition(BladeQueryObject bladeQueryObject) throws ServiceException;
}
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogSystemService.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
@@ -1,14 +1,12 @@
package com.vci.ubcs.log.service.impl;
import com.vci.ubcs.log.dto.LocalLogVO;
import com.vci.ubcs.log.enumpack.ServiceNameRoleEnum;
import com.vci.ubcs.log.vo.LocalLogVO;
import com.vci.ubcs.log.service.ILogLocalService;
import com.vci.ubcs.log.entity.LocalLog;
import com.vci.ubcs.resource.utils.FileUtil;
import com.vci.ubcs.resource.utils.ZipUtil;
import com.vci.ubcs.resource.vo.FileObjectVO;
import com.vci.ubcs.starter.exception.VciBaseException;
import com.vci.ubcs.starter.web.util.BeanUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springblade.core.log.exception.ServiceException;
@@ -17,16 +15,13 @@
import com.vci.ubcs.resource.bo.FileObjectBO;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -43,7 +38,7 @@
 */
@Service
@Slf4j
public class LogLocalServiceImpl implements ILogLocalService{
public class LogLocalServiceImpl implements ILogLocalService, EnvironmentAware {
    /**
     * å„个服务存放的的父路径
@@ -62,9 +57,13 @@
     */
    private Boolean isWindows = true;
    {
        String os = System.getProperty("os.name").toLowerCase();
        //默认就配置为windows的,如果不是当前系统不是windows就需要对其转换为linux的文件路径格式
    /**
     * æ ¹æ®å½“前运行的环境,对配置的日志路径格式进行调整
     * @param environment
     */
    @Override
    public void setEnvironment(Environment environment) {
        String os = environment.getProperty("os.name").toLowerCase();
        if (!os.contains("win")) {
            this.PARENTPATH = this.PARENTPATH.substring(this.PARENTPATH.lastIndexOf(":") + 1).replace("\\", "/");
            this.LOGPATH = this.LOGPATH.replace("\\", "/");
@@ -84,8 +83,8 @@
     * @return
     */
    //@Override
    public List<LocalLog> getSystemLogList(String logParentPath) {
        List<LocalLog> localLogs = new ArrayList<>();
    public List<LocalLogVO> getSystemLogList(String logParentPath) {
        List<LocalLogVO> localLogsVO = new ArrayList<>();
        // ä¸ä¸ºç©ºè¯´æ˜Žæ˜¯åŠ è½½å½“å‰è¿™ä¸ªæœåŠ¡è·¯å¾„ä¸‹çš„æ—¥å¿—æ–‡ä»¶
        if(Func.isNotEmpty(logParentPath)){
            File file = new File(logParentPath);
@@ -93,7 +92,7 @@
                File[] files = file.listFiles();
                Arrays.stream(files).forEach(item->{
                    // ç»„建日志文件对象
                    LocalLog localLog = new LocalLog();
                    LocalLogVO localLog = new LocalLogVO();
                    localLog.setLogName(item.getName());
                    localLog.setLogType(getLogType(item.getName()));
                    localLog.setCreateTime(getLastModifiedOrCreatTime(false,logParentPath));
@@ -103,7 +102,7 @@
                    localLog.setServiceId(serviceId);
                    localLog.setServiceName(getServiceName(serviceId));
                    localLog.setHasChildren(false);
                    localLogs.add(localLog);
                    localLogsVO.add(localLog);
                });
            }
        }else {
@@ -113,22 +112,24 @@
                if(dir.getName().contains("ubcs_")){
                    String fullPath = dir.getPath() + LOGPATH;
                    File file = new File(fullPath);
                    LocalLog localLog = new LocalLog();
                    localLog.setLastModifier(getLastModifiedOrCreatTime(true,fullPath));
                    localLog.setCreateTime(getLastModifiedOrCreatTime(false,fullPath));
                    localLog.setLogPath(fullPath);
                    String serviceId = getServiceId(file.getPath());
                    localLog.setServiceId(serviceId);
                    String serviceName = getServiceName(serviceId);
                    localLog.setServiceName(serviceName);
                    localLog.setLogType(serviceName+"日志父目录");
                    localLog.setLogName(serviceName+"日志父目录");
                    localLog.setHasChildren(true);
                    localLogs.add(localLog);
                    if(file.exists()){
                        LocalLogVO localLogVO = new LocalLogVO();
                        localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,fullPath));
                        localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,fullPath));
                        localLogVO.setLogPath(fullPath);
                        String serviceId = getServiceId(file.getPath());
                        localLogVO.setServiceId(serviceId);
                        String serviceName = getServiceName(serviceId);
                        localLogVO.setServiceName(serviceName);
                        localLogVO.setLogType(serviceName+"日志父目录");
                        localLogVO.setLogName(serviceName+"日志父目录");
                        localLogVO.setHasChildren(true);
                        localLogsVO.add(localLogVO);
                    }
                }
            });
        }
        return localLogs;
        return localLogsVO;
    }
    /**
@@ -193,7 +194,8 @@
     * @return
     */
    private String getServiceName(String serViceId){
        return EnumCache.getValue(EnumEnum.SERCIVE_NAME_ROLE, serViceId);
        // EnumCache.getValue(EnumEnum.SERCIVE_NAME_ROLE, serViceId)
        return ServiceNameRoleEnum.getTextByValue(serViceId);
    }
    /**
@@ -223,7 +225,7 @@
            throw new ServerException("未获取到该日志路径!");
        }
        FileObjectBO fileObjectBO = new FileObjectBO();
        String logFullPaths = localLogVO.getLogFullPaths();
        String logFullPaths = this.convertWindows2Linux(localLogVO.getLogFullPaths());
        // åˆ¤æ–­æ˜¯å¦æ˜¯çˆ¶ç›®å½•
        if(!localLogVO.getHasChildren()){
            //只下载一个日志文件
@@ -281,6 +283,19 @@
    }
    /**
     * ä¸‹è½½ä¹‹å‰å°†windows的路径格式转换为linux
     * @param fullPath
     * @return
     */
    private String convertWindows2Linux(String fullPath){
        String os = System.getProperty("os.name").toLowerCase();
        if (!os.contains("win")) {
            fullPath = fullPath.replace("\\", "/");
        }
        return fullPath;
    }
    /**
     * åˆ é™¤æ—¥å¿—文件
     * @param localLogVO æ–‡ä»¶å…¨è·¯å¾„集合
     * @throws ServerException
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogOperateServiceImpl.java
@@ -6,12 +6,15 @@
import com.vci.ubcs.log.entity.LogOperate;
import com.vci.ubcs.log.mapper.LogOperateMapper;
import com.vci.ubcs.log.service.ILogOperateService;
import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * æ“ä½œæ—¥å¿—管理:(包括登录日志、操作日志、授权日志,以及管理员的以上三种日志)
@@ -30,7 +33,7 @@
     * @return
     */
    @Override
    public boolean saveLogOperate(LogOperate logOperate) {
    public boolean saveLogOperate(LogOperate logOperate)throws ServiceException {
        if(Func.isEmpty(logOperate)){
            return false;
        }
@@ -39,13 +42,17 @@
    /**
     * æ¡ä»¶æŸ¥è¯¢èŽ·å–æ—¥å¿—åˆ—è¡¨
     * @param logOperate
     * @param bladeQueryObject
     * @return
     */
    @Override
    public List<LogOperate> listByCondition(LogOperate logOperate) {
        QueryWrapper<LogOperate> queryWrapper = Condition.getQueryWrapper(logOperate);
        this.list(queryWrapper);
    public List<LogOperate> listByCondition(BladeQueryObject bladeQueryObject) throws ServiceException{
        Map<String, Object> conditionMap = bladeQueryObject.getConditionMap();
        if(conditionMap.isEmpty() || Func.isBlank(conditionMap.get("logType").toString())){
            throw new ServiceException("日志查询必传参数【日志类型】不能为空!");
        }
        // map对象转换为查询对象
        QueryWrapper<LogOperate> queryWrapper = Condition.getQueryWrapper(bladeQueryObject.getConditionMap(),LogOperate.class);
        return this.list(queryWrapper);
    }
Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogSystemServiceImpl.java
ÎļþÒÑɾ³ý
Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -144,7 +144,6 @@
            baseModel.setLastV(dataMap.getOrDefault("LASTV",""));
            Object revisionseq =dataMap.getOrDefault("REVISIONSEQ","");
            if(revisionseq!=null){
                baseModel.setRevisionSeq(chageStringToInt(revisionseq.toString()));
            }
@@ -157,7 +156,15 @@
            baseModel.setVersionValue(dataMap.getOrDefault("VERSIONVALUE",""));
            baseModel.setRevisionOid(dataMap.getOrDefault("REVISIONOID",""));
            baseModel.setLastModifier(AuthUtil.getUser().getAccount());
            baseModel.setLcStatus(dataMap.getOrDefault("LCSTATUS",""));
            baseModel.setName(dataMap.getOrDefault("NAME",""));
            baseModel.setTenantId(dataMap.getOrDefault("TENADTID",""));
            baseModel.setDescription(dataMap.getOrDefault("DESCRIOTION",""));
            baseModel.setCopyFromVersion(dataMap.getOrDefault("COPYFROMVERSION",""));
            Object secretgrade=dataMap.get("SECRETGRADE");
            if(secretgrade!=null){
                baseModel.setSecretGrade(chageStringToInt(secretgrade.toString()));
            }
        }catch (VciBaseException e){
            e.printStackTrace();
        }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmEngineServiceImpl.java
@@ -873,13 +873,13 @@
                    //不忽略大小写、不去空、不忽略全半角
                    temp = "%s";
                }
                queryKey = String.format(temp, "t." + attrId);
                queryKey = String.format(temp, "nvl("+ "t." + attrId +",'/')");
                queryValue = String.format(temp, "'" + (trim ? value.trim() : value) + "'");
                conditionMap.put(queryKey, queryValue);
            } else {
                if(StringUtils.isNotBlank(value)) {
                    //为空的时候不代表不校验,只是不去除相关的信息
                    conditionMap.put("t." + attrId, "'" + value + "'");
                    conditionMap.put("nvl("+ "t." + attrId+",'/')", "'" + value + "'");
                }else{
                    conditionMap.put("t." + attrId, QueryOptionConstant.ISNULL);
                }
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -2102,50 +2102,54 @@
                Map<String, List<BaseModel>> indexTodataMap = keyResultVO.getIndexTODataMap();
                cboList.stream().forEach(cbo -> {
                    String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
                    String msg = errorKeyMap.get(rowIndex);
                    if (indexTodataMap.containsKey(rowIndex)) {
                        String oid = cbo.getOid();
                        String sourceOid = oid;
                        String code = "";
                        String groupCode="";
                        String errorid = "201";
                        if(codeOidToSystemOidMap.containsKey(oid)){
                            sourceOid=codeOidToSystemOidMap.get(oid);
                        }
                        List<BaseModel> newCboList = indexTodataMap.get(rowIndex);
                        if (!CollectionUtils.isEmpty(newCboList)) {
                            BaseModel newCbo= newCboList.get(0);
                            String lcstatus =newCbo.getLcStatus();
                            String newOid =newCbo.getOid();
                            Date ts =newCbo.getTs();
                            code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId();
                            groupCode=newCbo.getData().getOrDefault("GROUPCODE","");
                            String lastmodifier=newCbo.getLastModifier();
                            if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
                                newCbo.setOid(newOid);
                                newCbo.setLastModifier(lastmodifier);
                                /*if(isCodeOrGroupCode) {
                                    newCbo.setId(code);
                                }else{
                                    newCbo.getData().put("groupcode",groupCode);
                                }*/
                                newCbo.setTs(ts);
                                cbo.setLastModifier(cbo.getLastModifier());
                                editBoList.add(newCbo);
                            }
                            String mes = errorKeyMap.get(rowIndex);
                            XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                            if(isCodeOrGroupCode) {
                                if(StringUtils.isBlank(groupCode)){
                                    errorid="1";
                                    mes+=";申请的编码类型为集团码,等待集团编码赋值";
                            //处理关键属性查出多条的话,根据集成调用的当前分类代号取当前分类的码值。
                            Map<String/**编码**/, BaseModel/**重复编码数据**/> classOidTOBaseModelMap = new HashMap<>();
                                newCboList.stream().forEach(baseModel->{
                                    String codeclsfid=baseModel.getData().get(CODE_CLASSIFY_OID_FIELD.toUpperCase(Locale.ROOT));
                                    classOidTOBaseModelMap.put(codeclsfid,baseModel);
                                });
                            String codeclsfid= classifyFullInfo.getCurrentClassifyVO().getOid();
                            if(classOidTOBaseModelMap.containsKey(codeclsfid)){
                                BaseModel newCbo= classOidTOBaseModelMap.get(codeclsfid);
                                String lcstatus =newCbo.getLcStatus();
                                String newOid =newCbo.getOid();
                                Date ts =newCbo.getTs();
                                code = StringUtils.isBlank(newCbo.getId())?"":newCbo.getId();
                                if(isCodeOrGroupCode) {
                                    code=newCbo.getData().getOrDefault("GROUPCODE","");
                                    if(StringUtils.isBlank(code)){
                                        errorid="1";
                                        msg=";申请的编码类型为集团码,等待集团编码赋值";
                                    }
                                }
                                resultDataObjectDetailDO.setCode(groupCode);
                                String lastmodifier=newCbo.getLastModifier();
                                if (lcstatus!=null&&!lcstatus.equals(CodeDefaultLC.RELEASED.getValue())) {
                                    newCbo.setOid(newOid);
                                    newCbo.setLastModifier(lastmodifier);
                                    newCbo.setTs(ts);
                                    cbo.setLastModifier(cbo.getLastModifier());
                                    editBoList.add(newCbo);
                                }
                            }else{
                                resultDataObjectDetailDO.setCode(code);
                                errorid="205";
                                msg+=";编码则属于其他分类。";
                            }
                            XMLResultDataObjectDetailDO resultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
                            resultDataObjectDetailDO.setCode(code);
                            resultDataObjectDetailDO.setId(sourceOid);
                            resultDataObjectDetailDO.setErrorid(errorid);
                            resultDataObjectDetailDO.setMsg(mes);
                            resultDataObjectDetailDO.setMsg(msg);
                            resultDataObjectDetailDOs.add(resultDataObjectDetailDO);
                        }
@@ -3904,6 +3908,7 @@
                    newDataList.stream().forEach(stringStringMap -> {
                        BaseModel baseModel=new BaseModel();
                        DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel);
                        baseModel.setData(stringStringMap);
                        newCboList.add(baseModel);
                    });
                    // æ·»åŠ é”™è¯¯å€¼
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -104,7 +104,6 @@
            // && StringUtils.isNotBlank(cbo.getAttributeValue(CODE_SEC_LENGTH_FIELD))
        ){
            //是历史数据导入
            //历史数据执行的时候,这个系统会很卡
            //主要是为了录入最大流水号和allcode
            //SessionInfo sessionInfo = VciBaseUtil.getCurrentUserSessionInfo();
            List<CodeAllCode> allCodeDOList = new CopyOnWriteArrayList<>();
@@ -419,7 +418,6 @@
            allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
                s.setLcStatus(statusMap.get(s.getOid()));
            });
            //通过ID来进行去重
            List<CodeAllCode> distinctCodeAllCOdes = allCodeDOList.stream().collect(Collectors
@@ -772,20 +770,20 @@
    /**
     * æ‹¼æŽ¥å‰åŽç¼€
     * @param secVO
     * @param secValue
     * @param secVO ç æ®µ
     * @param secValue ç å€¼
     * @return
     */
    private String joinPreffixAndSuffix(CodeBasicSecVO secVO, String secValue){
        StringBuilder joinSecValue = new StringBuilder();
        // æ‹¼æŽ¥å‰ç¼€
        if (Func.isNotEmpty(secVO.getPrefixCode())) {
        if (Func.isNotEmpty(secVO.getPrefixCode()) && Func.isNotEmpty(secValue)) {
            joinSecValue = joinSecValue.append(secVO.getPrefixCode());
        }
        // åœ¨ä¸­é—´æ‹¼æŽ¥å€¼
        joinSecValue.append(secValue);
        // æ‹¼æŽ¥åŽç¼€
        if(Func.isNotEmpty(secVO.getSuffixCode())){
        if(Func.isNotEmpty(secVO.getSuffixCode()) && Func.isNotEmpty(secValue)){
            joinSecValue = joinSecValue.append(secVO.getSuffixCode());
        }
        return joinSecValue.toString();