Преглед на файлове

王耀栋--工作台模块测试报告bug修改,自动运行功能开发

wangyaodong преди 3 години
родител
ревизия
427046c27a

+ 1 - 1
api-common/src/main/java/api/common/pojo/vo/project/ManualProjectTaskVo.java

@@ -50,7 +50,7 @@ public class ManualProjectTaskVo {
     private String runResult;
 
     //得分
-    private String score;
+    private Double score;
 
     //指标评价
     private String targetEvaluate;

+ 3 - 3
api-common/src/main/java/api/common/pojo/vo/project/SublistScoreVo.java

@@ -14,12 +14,12 @@ public class SublistScoreVo {
     private String parentId;
     private String sublistName;
     private String sceneNum;
-    private String firScore;
-    private String lasScore;
+    private Double firScore;
+    private Double lasScore;
     private String packageAndRules;
     private String notStandardSceneNum;
     private String scoreExplain;
-    private String sceneScore;
+    private Double sceneScore;
     private String targetEvaluate;
     private String sceneType;
     private String returnSceneId;

+ 3 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/project/constants/ProjectConstants.java

@@ -8,6 +8,9 @@ public class ProjectConstants {
     //任务运行 Kafka推送主题
     public static final String RUN_TASK_TOPIC = "manualProject";
 
+    //任务终止,kafka推送主题
+    public static final String STOP_TASK_TOPPIC = "manualProject-stop";
+
     //第三方算法类型(索为)
     public static final String SY_ALGORITHM_TYPE="3";
 

+ 9 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/project/ctrl/SimulationProjectCtrl.java

@@ -234,6 +234,14 @@ public class SimulationProjectCtrl {
     }
 
 
-
+    /**
+     * 删除自动运行工作(支持批量删除)
+     * @return
+     */
+    @RequestMapping("deleteProjectByids")
+    @ResponseBody
+    public ResponseBodyVO deleteAutomaticProjectByids(@RequestBody SimulationManualProjectParam param){
+        return service.deleteAutomaticProjectByids(param);
+    }
 
 }

+ 94 - 11
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -27,10 +27,7 @@ import com.css.simulation.resource.project.constants.ProjectConstants;
 import com.css.simulation.resource.project.enums.ProjectRunStateEnum;
 import com.css.simulation.resource.project.enums.SceneTypeEnum;
 import com.css.simulation.resource.project.feign.KafkaService;
-import com.css.simulation.resource.project.mapper.SimulationMptFirstTargetScoreMapper;
-import com.css.simulation.resource.project.mapper.SimulationMptLastTargetScoreMapper;
-import com.css.simulation.resource.project.mapper.SimulationProjectMapper;
-import com.css.simulation.resource.project.mapper.SimulationProjectTaskMapper;
+import com.css.simulation.resource.project.mapper.*;
 import com.css.simulation.resource.project.service.SimulationProjectService;
 import com.css.simulation.resource.system.service.DictService;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -72,6 +69,9 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
     @Autowired
     private SimulationProjectMapper simulationProjectMapper;
 
+    @Autowired
+    private SimulationAutomaticProjectMapper simulationAutomaticProjectMapper;
+
     @Autowired
     private SimulationProjectTaskMapper simulationProjectTaskMapper;
 
@@ -296,6 +296,12 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
         }
 
+        //项目终止,推送到kafka
+        if(DictConstants.PROJECT_TERMINATED.equals(param.getNowRunState())){
+            projectStopToKafka(po);
+        }
+
+
         return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
 
     }
@@ -312,9 +318,20 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         kafkaParameter.setTopic(ProjectConstants.RUN_TASK_TOPIC);
         String data = JsonUtil.beanToJson(kafkaParam);
         kafkaParameter.setData(data);
-        log.info("推送消息到kafka:"+data);
+        log.info("推送项目运行消息到kafka:"+data);
         kafkaService.send(kafkaParameter);
     }
+    private void projectStopToKafka(SimulationManualProjectPo po) throws JsonProcessingException{
+        SimulationManualProjectKafkaParam kafkaParam = new SimulationManualProjectKafkaParam();
+        kafkaParam.setProjectId(po.getId());
+        KafkaParameter kafkaParameter = new KafkaParameter();
+        kafkaParameter.setTopic(ProjectConstants.STOP_TASK_TOPPIC);
+        String data = JsonUtil.beanToJson(kafkaParam);
+        kafkaParameter.setData(data);
+        log.info("推送项目中止消息到kafka:"+data);
+        kafkaService.send(kafkaParameter);
+
+    }
 
     @Override
     public ResponseBodyVO selectProjectDetailsById(SimulationManualProjectParam param) {
@@ -605,7 +622,8 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
                 //单个二级指标得分
                 SimulationMptFirstTargetScorePo simulationMptFirstTargetScorePo1 = simulationMptFirstTargetScoreMapper.selectFirstTargetScore(simulationMptFirstTargetScorePo);
                 Double score = simulationMptFirstTargetScorePo1.getScore();
-                totalScore += score*(weightDouble/100);
+                totalScore += BigDecimal.valueOf(score).multiply(BigDecimal.valueOf(weightDouble).divide(BigDecimal.valueOf(100))).doubleValue();
+//                totalScore += score*(weightDouble/100);
                 algorithmScoreVo.setScore(saveTwoDecimalPlaces(score));
 //                totalWeight +=aDouble;
 //                Integer num = v.getSceneNum();
@@ -1325,6 +1343,20 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
     }
 
+    private void createProjectId(SimulationAutomaticProjectPo po){
+        Integer nowRq = getRq(null,0);
+        po.setProjectDate(nowRq);
+        SimulationAutomaticProjectPo po1 = simulationAutomaticProjectMapper.selectLastProjectId(nowRq);
+        if(po1 == null){
+            //生成新id
+            po.setProjectNum(1);
+        }else{
+            po.setProjectNum(po1.getProjectNum()+1);
+        }
+        po.setProjectId(po.getProjectDate()+"-"+po.getProjectNum());
+
+    }
+
     private Integer getRq(Date date, int index){
         return  TimeUtil.getRq(date,index);
     }
@@ -1509,7 +1541,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
                         BeanUtils.copyProperties(po, sublistScoreVo);
                         sublistScoreVo.setRunResult(sc.getRunResult());
 
-                        sublistScoreVo.setSceneScore(sc.getScore()); //得分
+                        sublistScoreVo.setSceneScore(saveTwoDecimalPlaces(sc.getScore())); //得分
                         sublistScoreVo.setTargetEvaluate(sc.getTargetEvaluate());//指标评价
 //                        sublistScoreVo.setReturnSceneId(sc.getReturnSceneId());//显示的场景id
                         String sceneType = sc.getSceneType();
@@ -1710,8 +1742,16 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
                 setParent(po,null,pos,scenePackageId);
 
                 String sublistName = po.getSublistName();
-                String firstScore = po.getFirScore();//first得分
-                String LastScore = po.getLasScore();//last得分
+                Double firScore = po.getFirScore();
+                String firstScore = "";//first得分
+                if(firScore != null){
+                    firstScore = saveTwoDecimalPlaces(firScore,1).toString();
+                }
+                Double lasScore = po.getLasScore();
+                String LastScore = "";//last得分
+                if(lasScore != null){
+                    LastScore = saveTwoDecimalPlaces(lasScore,1).toString();
+                }
                 String sceneNum = po.getSceneNum();//场景数量
                 String notStandardSceneNum = po.getNotStandardSceneNum();//未达标场景数量
 
@@ -3499,15 +3539,58 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
 
         if(isEmpty(param.getId())){
             //工作名称一样的的不能创建
-            List<SimulationManualProjectPo> simulationManualProjectPos = simulationProjectMapper.selectProjectByName(param);
+            List<SimulationAutomaticProjectPo> simulationManualProjectPos = simulationAutomaticProjectMapper.selectAutomaticProjectByQuery(param);
             if(!isEmpty(simulationManualProjectPos)){
                 return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE,"工作名称已经存在,请修改后再保存");
             }
+            po.createPo(AuthUtil.getCurrentUserId());
+            //生成id
+            createProjectId(po);
+            int add = simulationAutomaticProjectMapper.add(po);
+            if(add > 0){
+                return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS,ResponseBodyVO.Response.SUCCESS.getMessage(),po.getId());
+            }
+            return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE,"添加失败");
+        }else{
+            //获取工作状态,仅未开始的才可以修改信息
+            SimulationAutomaticProjectPo saPo = simulationAutomaticProjectMapper.selectById(param.getId());
+            if(!ProjectRunStateEnum.NOT_START.getCode().equals(saPo.getNowRunState())){
+                return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE,"当前状态不支持修改");
+            }
+
+            po.updatePo(AuthUtil.getCurrentUserId());
+            int update = simulationAutomaticProjectMapper.updateById(po);
+            if(update > 0){
+                return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS,ResponseBodyVO.Response.SUCCESS.getMessage(),po.getId());
+            }
+
+            return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE,"修改失败");
         }
 
+    }
 
+    @Override
+    public ResponseBodyVO deleteAutomaticProjectByids(SimulationManualProjectParam param) {
+        String ids = param.getIds();
+        if(isEmpty(ids)){
+            return new ResponseBodyVO(ResponseBodyVO.Response.CLIENT_FAILURE);
+        }
+        String[] idArr = ids.split(",");
 
-        return null;
+        //未执行和已中止的可以删除
+        List<SimulationAutomaticProjectPo> pos = simulationAutomaticProjectMapper.selectProjectNowRunState(idArr);
+        for(SimulationAutomaticProjectPo p : pos){
+            if(!isEmpty(p.getNowRunState()) && !ProjectRunStateEnum.NOT_START.getCode().equals(p.getNowRunState()) && !ProjectRunStateEnum.DISCONTINUE.getCode().equals(p.getNowRunState())){
+                return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE,"数据不支持删除");
+            }
+        }
+
+        int i = simulationAutomaticProjectMapper.deleteProject(idArr);
+        if(i > 0){
+            return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS);
+        }
+
+        return new ResponseBodyVO(ResponseBodyVO.Response.SERVER_FAILURE,"删除失败");
     }
 
     private SimulationAutomaticProjectPo convertToSimulationAutomaticProjectPo(SimulationManualProjectParam param){

+ 12 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/project/mapper/SimulationAutomaticProjectMapper.java

@@ -18,9 +18,20 @@ import java.util.Map;
 @Repository
 public interface SimulationAutomaticProjectMapper {
 
-//    SimulationAutomaticProjectPo selectById(String id);
 
+     SimulationAutomaticProjectPo selectById(String id);
 
+     List<SimulationAutomaticProjectPo> selectAutomaticProjectByQuery(SimulationManualProjectParam param);
+
+     SimulationAutomaticProjectPo selectLastProjectId(Integer nowRq);
+
+     int add(SimulationAutomaticProjectPo po);
+
+     int updateById(SimulationAutomaticProjectPo po);
+
+     List<SimulationAutomaticProjectPo> selectProjectNowRunState(String[] ids);
+
+     int deleteProject(String[] ids);
 
 
 }

+ 2 - 5
simulation-resource-server/src/main/java/com/css/simulation/resource/project/service/SimulationProjectService.java

@@ -2,11 +2,6 @@ package com.css.simulation.resource.project.service;
 
 import api.common.pojo.common.ResponseBodyVO;
 import api.common.pojo.param.project.SimulationManualProjectParam;
-import com.itextpdf.text.DocumentException;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import java.io.IOException;
-import java.util.Map;
 
 
 public interface SimulationProjectService {
@@ -64,4 +59,6 @@ public interface SimulationProjectService {
 
     ResponseBodyVO addOrUpdateAutomaticProject(SimulationManualProjectParam param);
 
+    ResponseBodyVO deleteAutomaticProjectByids(SimulationManualProjectParam param)
+
 }

+ 117 - 1
simulation-resource-server/src/main/resources/mapper/project/SimulationAutomaticProjectMapper.xml

@@ -4,7 +4,123 @@
 
 
 
-    <!--根据id查询项目信息-->
+    <!--根据id查询工作信息-->
+    <select id="selectById" parameterType="string" resultType="api.common.pojo.po.project.SimulationAutomaticProjectPo">
+        select * from simulation_automatic_project where id=#{id,jdbcType=VARCHAR}
+
+    </select>
+
+    <!--根据条件查询工作信息-->
+    <select id="selectAutomaticProjectByQuery" parameterType="api.common.pojo.param.project.SimulationManualProjectParam" resultType="api.common.pojo.po.project.SimulationAutomaticProjectPo">
+        select * from simulation_automatic_project
+        is_deleted = '0'
+        <if test="projectName != null and projectName != ''">
+            and project_name = #{projectName,jdbcType=VARCHAR}
+        </if>
+    </select>
+
+    <!--查询最新项目id-->
+    <select id="selectLastProjectId" resultType="api.common.pojo.po.project.SimulationAutomaticProjectPo">
+        select project_date, project_num, project_id
+        from simulation_automatic_project
+        where project_date=#{nowRq,jdbcType=INTEGER} and is_deleted = '0'
+        order by project_date desc, project_num desc
+        limit 1
+    </select>
+
+    <!--创建项目信息-->
+    <insert id="add" parameterType="api.common.pojo.po.project.SimulationAutomaticProjectPo">
+        insert into simulation_automatic_project
+        (
+        id,
+        project_date,
+        project_num,
+        project_id,
+        project_name,
+        project_describe,
+        algorithm,
+        algorithm_type,
+        vehicle,
+        scene,
+        operation_cycle,
+        parallelism,
+        rule_view,
+        is_choice_gpu,
+        automatic_run_times,
+        last_run_time,
+        automatic_run_state,
+        create_time,
+        create_user_id,
+        modify_time,
+        modify_user_id,
+        is_deleted
+        )
+        values
+        (
+        #{id,jdbcType=VARCHAR},
+        #{projectDate,jdbcType=INTEGER},
+        #{projectNum,jdbcType=INTEGER},
+        #{projectId,jdbcType=VARCHAR},
+        #{projectName,jdbcType=VARCHAR},
+        #{projectDescribe,jdbcType=VARCHAR},
+        #{algorithm,jdbcType=VARCHAR},
+        #{algorithmType,jdbcType=VARCHAR},
+        #{vehicle,jdbcType=VARCHAR},
+        #{scene,jdbcType=VARCHAR},
+        #{operationCycle,jdbcType=VARCHAR},
+        #{parallelism,jdbcType=VARCHAR},
+        #{ruleView,jdbcType=VARCHAR},
+        #{isChoiceGpu,jdbcType=VARCHAR},
+        #{automaticRunTimes,jdbcType=BIGINT},
+        #{lastRunTime,jdbcType=TIMESTAMP},
+        #{automaticRunState,jdbcType=VARCHAR},
+        #{createTime,jdbcType=TIMESTAMP},
+        #{createUserId,jdbcType=VARCHAR},
+        #{modifyTime,jdbcType=TIMESTAMP},
+        #{modifyUserId,jdbcType=VARCHAR},
+        #{isDeleted,jdbcType=VARCHAR}
+        )
+    </insert>
+
+    <!--修改项目信息-->
+    <update id="updateById" parameterType="api.common.pojo.po.project.SimulationAutomaticProjectPo">
+        update simulation_automatic_project
+        set
+        project_name = #{projectName,jdbcType=VARCHAR},
+        project_describe = #{projectDescribe,jdbcType=VARCHAR},
+        algorithm = #{algorithm,jdbcType=VARCHAR},
+        algorithm_type = #{algorithmType,jdbcType=VARCHAR},
+        vehicle = #{vehicle,jdbcType=VARCHAR},
+        scene = #{scene,jdbcType=VARCHAR},
+        operation_cycle = #{operation_cycle,jdbcType=VARCHA},
+        parallelism = #{parallelism,jdbcType=VARCHAR},
+        is_choice_gpu = #{isChoiceGpu,jdbcType=VARCHAR}
+        where id = #{id,jdbcType=VARCHAR} and is_deleted = '0'
+    </update>
+
+
+    <!--查询项目状态-->
+    <select id="selectProjectNowRunState" resultType="api.common.pojo.po.project.SimulationAutomaticProjectPo">
+        select now_run_state
+        from simulation_automatic_project
+        where
+        is_deleted='0' and
+        id in
+        <foreach collection="array" open="(" separator="," close=")" item="id">
+            #{id,jdbcType=VARCHAR}
+        </foreach>
+    </select>
+
+    <!--删除-->
+    <update id="deleteProject">
+        update simulation_automatic_project
+        set is_deleted='1'
+        where id in
+        <foreach collection="array" open="(" separator="," close=")" item="id">
+            #{id,jdbcType=VARCHAR}
+        </foreach>
+
+    </update>