yangys
2024-04-23 9097df6b9559b04682e9907d900eb86d5109f84a
smart-man-boot/src/main/java/com/qianwen/smartman/modules/cps/service/impl/InitServiceImpl.java
@@ -1,14 +1,7 @@
package com.qianwen.smartman.modules.cps.service.impl;
import cn.hutool.core.io.IoUtil;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import java.io.File;
import java.io.FileReader;
import java.lang.invoke.SerializedLambda;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.Collection;
@@ -16,7 +9,9 @@
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.sql.DataSource;
import org.apache.commons.io.FileUtils;
import org.apache.ibatis.jdbc.ScriptRunner;
import org.slf4j.Logger;
@@ -24,14 +19,25 @@
import org.smartboot.license.client.License;
import org.smartboot.license.client.LicenseEntity;
import org.smartboot.license.client.LicenseException;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.utils.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qianwen.core.log.exception.ServiceException;
import com.qianwen.core.redis.cache.BladeRedis;
import com.qianwen.core.tool.api.ResultCode;
import com.qianwen.core.tool.utils.DigestUtil;
import com.qianwen.core.tool.utils.Func;
import com.qianwen.smartman.common.constant.CommonConstant;
import com.qianwen.smartman.common.constant.FmsConstant;
import com.qianwen.smartman.common.utils.LicenseUtil;
import com.qianwen.smartman.common.utils.MessageUtils;
import com.qianwen.core.log.exception.ServiceException;
import com.qianwen.core.redis.cache.BladeRedis;
import com.qianwen.core.tool.utils.DigestUtil;
import com.qianwen.core.tool.utils.Func;
import com.qianwen.smartman.modules.cps.enums.AppEnum;
import com.qianwen.smartman.modules.cps.mapper.InitMapper;
import com.qianwen.smartman.modules.cps.mapper.TdengineMapper;
@@ -42,18 +48,14 @@
import com.qianwen.smartman.modules.cps.vo.ConfigVO;
import com.qianwen.smartman.modules.cps.vo.InitSettingVO;
import com.qianwen.smartman.modules.system.dto.LicenseDetailDTO;
import com.qianwen.smartman.modules.system.entity.Application;
import com.qianwen.smartman.modules.system.service.IApplicationService;
import com.qianwen.smartman.modules.visual.entity.VisualConfig;
import com.qianwen.smartman.modules.visual.service.IVisualConfigService;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import cn.hutool.core.io.IoUtil;
@Service
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/cps/service/impl/InitServiceImpl.class */
public class InitServiceImpl implements IInitService {
    private static final Logger log = LoggerFactory.getLogger(InitServiceImpl.class);
    private final InitMapper initMapper;
@@ -67,46 +69,6 @@
    private final ThreadPoolTaskExecutor taskExecutor;
    private final Environment environment;
    private static /* synthetic */ Object $deserializeLambda$(SerializedLambda lambda) {
        String implMethodName = lambda.getImplMethodName();
        boolean z = true;
        switch (implMethodName.hashCode()) {
            case -75622813:
                if (implMethodName.equals("getCode")) {
                    z = true;
                    break;
                }
                break;
            case 643007317:
                if (implMethodName.equals("getDomainUrl")) {
                    z = false;
                    break;
                }
                break;
        }
        switch (z) {
            case false:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Application") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getDomainUrl();
                    };
                }
                break;
            case true:
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Application") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getCode();
                    };
                }
                if (lambda.getImplMethodKind() == 5 && lambda.getFunctionalInterfaceClass().equals("com/baomidou/mybatisplus/core/toolkit/support/SFunction") && lambda.getFunctionalInterfaceMethodName().equals("apply") && lambda.getFunctionalInterfaceMethodSignature().equals("(Ljava/lang/Object;)Ljava/lang/Object;") && lambda.getImplClass().equals("org/springblade/modules/system/entity/Application") && lambda.getImplMethodSignature().equals("()Ljava/lang/String;")) {
                    return (v0) -> {
                        return v0.getCode();
                    };
                }
                break;
        }
        throw new IllegalArgumentException("Invalid lambda deserialization");
    }
    public InitServiceImpl(final InitMapper initMapper, final ConfigVO configVO, final TdengineMapper tdengineMapper, final DataSource dataSource, final IInitBusinessService initBusinessService, final BladeRedis bladeRedis, final IVisualConfigService visualConfigService, final IApplicationService applicationService, final ThreadPoolTaskExecutor taskExecutor, final Environment environment) {
        this.initMapper = initMapper;
@@ -121,17 +83,17 @@
        this.environment = environment;
    }
    @Override // org.springblade.modules.cps.service.IInitService
    @Override
    public Boolean checkIsNeedInit() {
        return Boolean.valueOf(this.initMapper.checkIsNeedInit(this.configVO.getDatabase(), this.configVO.getType()).intValue() <= 0);
    }
    @Override // org.springblade.modules.cps.service.IInitService
    @Override
    public ConfigVO getConfig() {
        return this.configVO;
    }
    @Override // org.springblade.modules.cps.service.IInitService
    @Override
    public List<AppVO> getApp() {
        List<AppVO> result = new ArrayList<>();
        AppEnum[] values = AppEnum.values();
@@ -148,54 +110,59 @@
        return result;
    }
    @Override // org.springblade.modules.cps.service.IInitService
    @Override
    @Transactional(rollbackFor = {Exception.class})
    public Boolean initSystem(InitSettingVO initSettingVO) {
        if (!initSettingVO.getPassword().equals(initSettingVO.getConfirmPassword())) {
            throw new ServiceException(MessageUtils.message("init.system.inconsistent.password", new Object[0]));
        }
        initSettingVO.setPassword(DigestUtil.encrypt(initSettingVO.getPassword()));
        Connection conn = this.dataSource.getConnection();
        ScriptRunner runner = new ScriptRunner(conn);
        runner.setStopOnError(true);
        File file = new File(System.getProperty("java.io.tmpdir") + File.separator + "common.sql");
        FileUtils.copyToFile(new ClassPathResource("sql" + File.separator + this.configVO.getType() + File.separator + "common.sql").getInputStream(), file);
        runner.runScript(new FileReader(file));
        FileUtils.copyToFile(new ClassPathResource("sql" + File.separator + this.configVO.getType() + File.separator + "xxl_job.sql").getInputStream(), file);
        runner.runScript(new FileReader(file));
        List<Integer> appIds = (List) initSettingVO.getAppList().stream().sorted().collect(Collectors.toList());
        for (Integer appId : appIds) {
            Future<?> asyncResult = this.taskExecutor.submit(() -> {
                try {
                    this.initBusinessService.initApp(appId, this.configVO);
                } catch (Exception e) {
                    throw new ServiceException(e.getMessage());
                }
            });
            while (!asyncResult.isDone()) {
                TimeUnit.NANOSECONDS.sleep(2L);
            }
        }
        initAdapter(initSettingVO, this.configVO.getUrl(), this.configVO.getType());
        replaceJumuUrl();
        this.initMapper.replaceUrlJiMu(initSettingVO);
        if (CommonConstant.ORACLE.equals(this.configVO.getType()) && Func.isNotEmpty(initSettingVO.getAppList()) && initSettingVO.getAppList().contains(AppEnum.VISUAL.getCode())) {
            try {
                VisualConfig visualConfig = new VisualConfig();
                visualConfig.setId(1510135236368261122L);
                visualConfig.setVisualId(1510135236343095298L);
                visualConfig.setDetail(FileUtil.getFileString(new ClassPathResource("constant" + File.separator + "VisualDetail.txt")));
                visualConfig.setComponent(FileUtil.getFileString(new ClassPathResource("constant" + File.separator + "VisualComponent.txt")));
                this.visualConfigService.save(visualConfig);
            } catch (Exception e) {
                throw new ServiceException(e.getMessage());
            }
        }
        IoUtil.close(conn);
        return true;
       try {
           if (!initSettingVO.getPassword().equals(initSettingVO.getConfirmPassword())) {
               throw new ServiceException(MessageUtils.message("init.system.inconsistent.password", new Object[0]));
           }
           initSettingVO.setPassword(DigestUtil.encrypt(initSettingVO.getPassword()));
           Connection conn = this.dataSource.getConnection();
           ScriptRunner runner = new ScriptRunner(conn);
           runner.setStopOnError(true);
           File file = new File(System.getProperty("java.io.tmpdir") + File.separator + "common.sql");
           FileUtils.copyToFile(new ClassPathResource("sql" + File.separator + this.configVO.getType() + File.separator + "common.sql").getInputStream(), file);
           runner.runScript(new FileReader(file));
           FileUtils.copyToFile(new ClassPathResource("sql" + File.separator + this.configVO.getType() + File.separator + "xxl_job.sql").getInputStream(), file);
           runner.runScript(new FileReader(file));
           List<Integer> appIds = initSettingVO.getAppList().stream().sorted().collect(Collectors.toList());
           for (Integer appId : appIds) {
               Future<?> asyncResult = this.taskExecutor.submit(() -> {
                   try {
                       this.initBusinessService.initApp(appId, this.configVO);
                   } catch (Exception e) {
                       throw new ServiceException(e.getMessage());
                   }
               });
               while (!asyncResult.isDone()) {
                   TimeUnit.NANOSECONDS.sleep(2L);
               }
           }
           initAdapter(initSettingVO, this.configVO.getUrl(), this.configVO.getType());
           replaceJumuUrl();
           this.initMapper.replaceUrlJiMu(initSettingVO);
           if (CommonConstant.ORACLE.equals(this.configVO.getType()) && Func.isNotEmpty(initSettingVO.getAppList()) && initSettingVO.getAppList().contains(AppEnum.VISUAL.getCode())) {
               try {
                   VisualConfig visualConfig = new VisualConfig();
                   visualConfig.setId(1510135236368261122L);
                   visualConfig.setVisualId(1510135236343095298L);
                   visualConfig.setDetail(FileUtil.getFileString(new ClassPathResource("constant" + File.separator + "VisualDetail.txt")));
                   visualConfig.setComponent(FileUtil.getFileString(new ClassPathResource("constant" + File.separator + "VisualComponent.txt")));
                   this.visualConfigService.save(visualConfig);
               } catch (Exception e) {
                   throw new ServiceException(e.getMessage());
               }
           }
           IoUtil.close(conn);
           return true;
       }catch(Exception ex) {
          log.error("初始化系统失败",ex);
          throw new ServiceException(ResultCode.FAILURE,ex);
       }
    }
    @Override // org.springblade.modules.cps.service.IInitService
    @Override
    public Boolean init(InitSettingVO initSettingVO) {
        if (!checkIsNeedInit().booleanValue()) {
            throw new ServiceException(MessageUtils.message("system.has.been.initialized", new Object[0]));
@@ -224,22 +191,23 @@
            List<String> list = new ArrayList<>();
            list.addAll(applicationCodes);
            list.add("HMI");
            this.applicationService.remove(Wrappers.<Application>lambdaQuery().notIn(Application::getCode, list));
            /*
            this.applicationService.remove((Wrapper) Wrappers.lambdaQuery().notIn((v0) -> {
                return v0.getCode();
            }, list));
            initSettingVO.getApplicationList().forEach(k, v -> {
                this.applicationService.update((Wrapper) ((LambdaUpdateWrapper) Wrappers.lambdaUpdate().set((v0) -> {
                    return v0.getDomainUrl();
                }, v)).eq((v0) -> {
                    return v0.getCode();
                }, k));
            Application::getDomainUrl
            */
            initSettingVO.getApplicationList().forEach((k, v) -> {
                this.applicationService.update(Wrappers.<Application>lambdaUpdate().set(Application::getDomainUrl, v).eq(Application::getCode, k));
            });
        }
        System.setProperty("blade.system.need_init", FmsConstant.MANUAL);
        return true;
    }
    @Override // org.springblade.modules.cps.service.IInitService
    @Override
    public LicenseDetailDTO licenseDetail() {
        try {
            Boolean needInit = checkIsNeedInit();
@@ -250,6 +218,7 @@
            LicenseEntity licenseEntity = new License().loadLicense(text);
            return (LicenseDetailDTO) JSONObject.parseObject(new String(licenseEntity.getData()), LicenseDetailDTO.class);
        } catch (LicenseException e) {
           log.error("加载licenseDetail错误",e);
            return null;
        }
    }