|
@@ -8,15 +8,15 @@ import api.common.pojo.po.scene.SceneComplexityPO;
|
|
import api.common.pojo.po.scene.SceneEvaluationOperatePO;
|
|
import api.common.pojo.po.scene.SceneEvaluationOperatePO;
|
|
import api.common.pojo.po.scene.SceneEvaluationRulePO;
|
|
import api.common.pojo.po.scene.SceneEvaluationRulePO;
|
|
import api.common.pojo.po.scene.SceneRiskPO;
|
|
import api.common.pojo.po.scene.SceneRiskPO;
|
|
-import api.common.util.LogUtil;
|
|
|
|
-import api.common.util.StringUtil;
|
|
|
|
-import api.common.util.TimeUtil;
|
|
|
|
|
|
+import api.common.pojo.po.system.SceneEvaluationRuleScriptPO;
|
|
|
|
+import api.common.util.*;
|
|
import com.alibaba.druid.util.StringUtils;
|
|
import com.alibaba.druid.util.StringUtils;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.SceneComplexityMapper;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.SceneComplexityMapper;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.SceneEvaluationRuleMapper;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.SceneEvaluationRuleMapper;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.ScenePackageMapper;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.ScenePackageMapper;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.SceneRiskMapper;
|
|
import com.css.simulation.resource.server.infra.db.mysql.mapper.SceneRiskMapper;
|
|
import com.css.simulation.resource.server.infra.feign.service.FileDownService;
|
|
import com.css.simulation.resource.server.infra.feign.service.FileDownService;
|
|
|
|
+import com.css.simulation.resource.server.infra.feign.service.SceneService;
|
|
import com.css.simulation.resource.server.infra.runnable.SceneEvaluationComputeRunnable;
|
|
import com.css.simulation.resource.server.infra.runnable.SceneEvaluationComputeRunnable;
|
|
import com.css.simulation.resource.server.infra.threadpool.ThreadPool;
|
|
import com.css.simulation.resource.server.infra.threadpool.ThreadPool;
|
|
import com.css.simulation.resource.server.infra.util.AuthUtil;
|
|
import com.css.simulation.resource.server.infra.util.AuthUtil;
|
|
@@ -33,6 +33,9 @@ import java.util.Map;
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
+import static api.common.pojo.constants.DictConstants.SCENE_IMPORT_STATUS_1;
|
|
|
|
+import static api.common.pojo.constants.DictConstants.SCENE_IMPORT_STATUS_2;
|
|
|
|
+
|
|
@Slf4j
|
|
@Slf4j
|
|
@Service
|
|
@Service
|
|
public class SceneEvaluationRuleService {
|
|
public class SceneEvaluationRuleService {
|
|
@@ -56,6 +59,9 @@ public class SceneEvaluationRuleService {
|
|
@Resource
|
|
@Resource
|
|
private FileDownService fileDownService;
|
|
private FileDownService fileDownService;
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private SceneService sceneService;
|
|
|
|
+
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
public int querySceneEvaluationRuleOnly(String ruleName, String ruleId) {
|
|
public int querySceneEvaluationRuleOnly(String ruleName, String ruleId) {
|
|
return sceneEvaluationRuleMapper.querySceneEvaluationRuleOnly(ruleName, ruleId);
|
|
return sceneEvaluationRuleMapper.querySceneEvaluationRuleOnly(ruleName, ruleId);
|
|
@@ -102,6 +108,7 @@ public class SceneEvaluationRuleService {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ sceneEvaluationRulePO.setStatus(SCENE_IMPORT_STATUS_2);
|
|
// 判断 ruleId 是否为空
|
|
// 判断 ruleId 是否为空
|
|
if (StringUtil.isEmpty(sceneEvaluationRulePO.getRuleId())) {
|
|
if (StringUtil.isEmpty(sceneEvaluationRulePO.getRuleId())) {
|
|
// 创建
|
|
// 创建
|
|
@@ -116,54 +123,44 @@ public class SceneEvaluationRuleService {
|
|
|
|
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
public ResponseBodyVO<String> uploadPyScriptAndSaveRuleByPath(SceneEvaluationRulePO sceneEvaluationRulePO) {
|
|
public ResponseBodyVO<String> uploadPyScriptAndSaveRuleByPath(SceneEvaluationRulePO sceneEvaluationRulePO) {
|
|
-
|
|
|
|
- boolean hasRuleId = StringUtil.isEmpty(sceneEvaluationRulePO.getRuleId());
|
|
|
|
|
|
+ if (ObjectUtil.isNull(sceneEvaluationRulePO)) {
|
|
|
|
+ return new ResponseBodyVO<>(false, 500, "参数错误!", null);
|
|
|
|
+ }
|
|
|
|
+ String sceneType = sceneEvaluationRulePO.getRuleType();
|
|
|
|
+ if (ObjectUtil.isNull(sceneType) || DictConstants.SCENE_GENERAL.equals(sceneType)) {
|
|
|
|
+ return new ResponseBodyVO<>(false, 500, "参数错误!", null);
|
|
|
|
+ }
|
|
|
|
+ boolean createRule = StringUtil.isEmpty(sceneEvaluationRulePO.getRuleId());
|
|
|
|
|
|
// 检查是否存在同名场景评价规则
|
|
// 检查是否存在同名场景评价规则
|
|
int repeatPyScriptAndSaveRuleCount = querySceneEvaluationRuleOnly(sceneEvaluationRulePO.getRuleName(),
|
|
int repeatPyScriptAndSaveRuleCount = querySceneEvaluationRuleOnly(sceneEvaluationRulePO.getRuleName(),
|
|
- hasRuleId ? null : sceneEvaluationRulePO.getRuleId());
|
|
|
|
|
|
+ createRule ? null : sceneEvaluationRulePO.getRuleId());
|
|
if (repeatPyScriptAndSaveRuleCount > 0) {
|
|
if (repeatPyScriptAndSaveRuleCount > 0) {
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "场景规则 " + sceneEvaluationRulePO.getRuleName() + " 已存在,请重新命名。");
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "场景规则 " + sceneEvaluationRulePO.getRuleName() + " 已存在,请重新命名。");
|
|
}
|
|
}
|
|
// 新建或者是编辑时重新上传文件
|
|
// 新建或者是编辑时重新上传文件
|
|
- if ((hasRuleId) || sceneEvaluationRulePO.getUploadNewFile()) {
|
|
|
|
|
|
+ if ((createRule) || sceneEvaluationRulePO.getUploadNewFile()) {
|
|
String roleCode = AuthUtil.getCurrentUserRoleCode();
|
|
String roleCode = AuthUtil.getCurrentUserRoleCode();
|
|
if (!DictConstants.ROLE_CODE_ADMIN.equals(roleCode) && !DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode)) {
|
|
if (!DictConstants.ROLE_CODE_ADMIN.equals(roleCode) && !DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode)) {
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "非管理员禁止上传文件");
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "非管理员禁止上传文件");
|
|
}
|
|
}
|
|
- // 检查文件内容是否合规
|
|
|
|
-// String pyStr = new String(file.getBytes(), StandardCharsets.UTF_8);
|
|
|
|
-// //1 校验 python 语法错误
|
|
|
|
-// String pylint = PythonUtil.pylint(pyStr, PythonUtil.C, PythonUtil.R, PythonUtil.W, PythonUtil.E0401, PythonUtil.E0601);
|
|
|
|
-// if (!pylint.contains(PythonUtil.PASS)) {
|
|
|
|
-// return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "代码格式错误,请检查。");
|
|
|
|
-// }
|
|
|
|
-// // 获取文件原本的名字
|
|
|
|
-// String originName = file.getOriginalFilename();
|
|
|
|
-// if (null == originName) {
|
|
|
|
-// return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "文件名为空,请检查!");
|
|
|
|
-// }
|
|
|
|
-// Integer nowTime = TimeUtil.getRq(new Date(), 0);
|
|
|
|
-// String randomCode = StringUtil.getRandomCode();
|
|
|
|
-// String fileName = "/" + DictConstants.SCENE_EVALUATION_RULE_PY_FILE + "/" + nowTime + "/" + randomCode + "/" + originName;
|
|
|
|
-// ResponseBodyVO<String> response = fileDownService.upload(file, fileName);
|
|
|
|
-// if (response.isStatus()) {
|
|
|
|
-// sceneEvaluationRulePO.setScriptName(originName);
|
|
|
|
-// sceneEvaluationRulePO.setScriptPath(fileName);
|
|
|
|
-// } else {
|
|
|
|
-// return new ResponseBodyVO<>(ResponseBodyVO.Response.CLIENT_FAILURE, "上传失败!");
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-// // 判断 ruleId 是否为空
|
|
|
|
-// if (StringUtil.isEmpty(sceneEvaluationRulePO.getRuleId())) {
|
|
|
|
-// // 创建
|
|
|
|
-// saveSceneEvaluationRule(sceneEvaluationRulePO);
|
|
|
|
-// } else {
|
|
|
|
-// // 修改
|
|
|
|
-// updateSceneEvaluationRule(sceneEvaluationRulePO);
|
|
|
|
-// }
|
|
|
|
|
|
+ sceneEvaluationRulePO.setStatus(SCENE_IMPORT_STATUS_1);
|
|
|
|
+ // 判断 ruleId 是否为空
|
|
|
|
+ if (StringUtil.isEmpty(sceneEvaluationRulePO.getRuleId())) {
|
|
|
|
+ // 创建
|
|
|
|
+ saveSceneEvaluationRule(sceneEvaluationRulePO);
|
|
|
|
+ } else {
|
|
|
|
+ // 修改
|
|
|
|
+ updateSceneEvaluationRule(sceneEvaluationRulePO);
|
|
|
|
+ }
|
|
|
|
+ // 异步上传
|
|
|
|
+ SceneEvaluationRuleScriptPO sceneEvaluationRuleScriptPO = new SceneEvaluationRuleScriptPO();
|
|
|
|
+ sceneEvaluationRuleScriptPO.setRuleId(sceneEvaluationRulePO.getRuleId());
|
|
|
|
+ sceneEvaluationRuleScriptPO.setLocalPath(sceneEvaluationRulePO.getLocalPath());
|
|
|
|
+ sceneService.startImportEvaluationScript(sceneEvaluationRuleScriptPO);
|
|
|
|
+ return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
|
|
}
|
|
}
|
|
|
|
+ updateSceneEvaluationRule(sceneEvaluationRulePO);
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
|
|
return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
|
|
}
|
|
}
|
|
|
|
|