Browse Source

项目自动运行bug修改、集群管理bug修改及优化

zhaoyan 2 năm trước cách đây
mục cha
commit
f88582ec7e

+ 4 - 0
api-common/src/main/java/api/common/pojo/vo/system/ClusterVO.java

@@ -18,6 +18,10 @@ public class ClusterVO {
     private int numDynamicLicense;        // 动力学软件license数量
     @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
     private Date dateDynamicLicense;       // 动力学软件license到期时间
+
+    private int validNumSimLicense;        // 有效的仿真软件license数量-编辑页面
+    private int validNumDynLicense;        // 有效的动力学软件license数量-编辑页面
+
     private Date modifyTime;        // 操作时间
 
 }

+ 4 - 3
simulation-resource-server/src/main/java/com/css/simulation/resource/project/impl/SimulationProjectServiceImpl.java

@@ -4009,14 +4009,15 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         }
 
         //推送消息到kafka
-        autoProjectRunToKafka(po);
+        autoProjectRunToKafka(po, subprojectPo.getId());
 
         return new ResponseBodyVO(ResponseBodyVO.Response.SUCCESS,null);
     }
 
-    private void autoProjectRunToKafka(SimulationAutomaticProjectPo po) throws JsonProcessingException {
+    private void autoProjectRunToKafka(SimulationAutomaticProjectPo po, String subId) throws JsonProcessingException {
         SimulationManualProjectKafkaParam kafkaParam = new SimulationManualProjectKafkaParam();
-        kafkaParam.setProjectId(po.getId());
+//        kafkaParam.setProjectId(po.getId());
+        kafkaParam.setProjectId(subId); //子任务id
         kafkaParam.setAlgorithmId(po.getAlgorithm());
         kafkaParam.setVehicleConfigId(po.getVehicle());
         kafkaParam.setScenePackageId(po.getScene());

+ 13 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/system/ctrl/ClusterCtrl.java

@@ -63,6 +63,8 @@ public class ClusterCtrl {
         return response;
     }
 
+
+
     /**
      * 查询已分配未到期节点数量
      */
@@ -87,4 +89,15 @@ public class ClusterCtrl {
         return response;
     }
 
+
+    /**
+     * 编辑页面查询有效的集群信息
+     */
+    @RequestMapping("/getValidClusterInfo")
+    @ResponseBody
+    public ResponseBodyVO<ClusterVO> getValidClusterInfo(@RequestBody ClusterParam clusterParam){
+        ResponseBodyVO<ClusterVO> response = new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS);
+        response.setInfo(clusterService.getValidClusterInfo(clusterParam));
+        return response;
+    }
 }

+ 8 - 1
simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/ClusterMapper.java

@@ -24,7 +24,14 @@ public interface ClusterMapper {
 
     HashMap<String, Integer> getClusterNum(ClusterParam clusterParam);
 
-    Integer getLicenseNum(@Param("userId") String userId);
+    Integer getSimulationLicenseNum(@Param("userId") String userId);
+
+    Integer getDynamicLicenseNum(@Param("userId") String userId);
+
+    Integer getAssignedSimLicenseNum(ClusterParam clusterParam);
+
+    Integer getAssignedDynLicenseNum(ClusterParam clusterParam);
 
     ClusterVO getClusterByUserId(String userId);
+
 }

+ 48 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/system/service/ClusterService.java

@@ -89,18 +89,27 @@ public class ClusterService {
         String roleCode = AuthUtil.getCurrentUserRoleCode();
         String useType = AuthUtil.getCurrentUseType();
         String userId = AuthUtil.getCurrentUserId();
+        Integer totalSimulationAll;
+        Integer totalDynamicAll;
         //当前账户为管理员账户,需要查询普通账户,设置roleCode为2
         if(DictConstants.ROLE_CODE_ADMIN.equals(roleCode) || DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode)){
             clusterParam.setRoleCode(DictConstants.ROLE_CODE_UESR);
+            totalSimulationAll = -1;
+            totalDynamicAll = -1;
         }else if(DictConstants.ROLE_CODE_UESR.equals(roleCode) && DictConstants.USE_TYPE_EXCLUSIVE.equals(useType)){
             // 当前账户为独占使用的普通账户,需要查询该账户创建的普通账户子账户,设置roleCode为3及当前创建用户id
             clusterParam.setRoleCode(DictConstants.ROLE_CODE_SUBUESR);
             clusterParam.setCreateUserId(userId);
+            // 查询该普通账户所有的集群数量
+            totalSimulationAll = clusterMapper.getSimulationLicenseNum(userId);
+            totalDynamicAll = clusterMapper.getDynamicLicenseNum(userId);
         }else{
             return null;
         }
 
         HashMap<String, Integer> resMap = clusterMapper.getClusterNum(clusterParam);
+        resMap.put("totalSimulationAll", totalSimulationAll);
+        resMap.put("totalDynamicAll", totalDynamicAll);
         return resMap;
     }
 
@@ -115,10 +124,17 @@ public class ClusterService {
             //查询父账户
             userId = AuthUtil.getCreateUserId();
         }
-        Integer simulationLicenseNum = clusterMapper.getLicenseNum(userId);
+        Integer simulationLicenseNum = clusterMapper.getSimulationLicenseNum(userId);
         if(simulationLicenseNum == null){
             simulationLicenseNum = 0;
         }
+        if(DictConstants.ROLE_CODE_UESR.equals(roleCode) && simulationLicenseNum != 0){//普通账户需要减去它分配给子账户的
+            ClusterParam clusterParam = new ClusterParam();
+            clusterParam.setCreateUserId(userId);
+            Integer assignedSimulationLicenseNum =  clusterMapper.getAssignedSimLicenseNum(clusterParam);
+            simulationLicenseNum = simulationLicenseNum - assignedSimulationLicenseNum;
+        }
+
         return simulationLicenseNum;
     }
 
@@ -128,11 +144,41 @@ public class ClusterService {
         String userId = AuthUtil.getCurrentUserId();
         if(DictConstants.ROLE_CODE_ADMIN.equals(roleCode) || DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode)){ //管理员账户
             return null;
-        }else if(DictConstants.ROLE_CODE_SUBUESR.equals(roleCode) && DictConstants.USE_TYPE_PUBLIC.equals(useType)){
+        }else if(DictConstants.ROLE_CODE_SUBUESR.equals(roleCode) && DictConstants.USE_TYPE_PUBLIC.equals(useType)){ //公共使用的普通子账户
             //查询父账户
             userId = AuthUtil.getCreateUserId();
         }
         ClusterVO clusterVO = clusterMapper.getClusterByUserId(userId);
         return clusterVO;
     }
+
+
+    public ClusterVO getValidClusterInfo(ClusterParam clusterParam) {
+        String roleCode = AuthUtil.getCurrentUserRoleCode();
+        String useType = AuthUtil.getCurrentUseType();
+        String currentUserId = AuthUtil.getCurrentUserId();
+        if(DictConstants.ROLE_CODE_UESR.equals(roleCode) && DictConstants.USE_TYPE_EXCLUSIVE.equals(useType)){
+            //当前账户为独占使用的普通账户,其集群配置信息
+            ClusterVO clusterVO = clusterMapper.getClusterByUserId(currentUserId);
+
+            //查询当前普通账户分配给其子账户的集群总数量
+            clusterParam.setCreateUserId(currentUserId);
+            Integer assignedSimLicenseNum = clusterMapper.getAssignedSimLicenseNum(clusterParam);
+            Integer assignedDynLicenseNum = clusterMapper.getAssignedDynLicenseNum(clusterParam);
+
+            //当前普通账户的集群总数量减去已分配的数量
+            if(ObjectUtil.isNotNull(clusterVO) && clusterVO.getNumSimulationLicense() > assignedSimLicenseNum && clusterVO.getNumDynamicLicense() > assignedDynLicenseNum){
+                int validSimLicenseNum = clusterVO.getNumSimulationLicense() - assignedSimLicenseNum;
+                int validDynLicenseNum =  clusterVO.getNumDynamicLicense()  - assignedDynLicenseNum;
+
+                clusterVO.setValidNumSimLicense(validSimLicenseNum);
+                clusterVO.setValidNumDynLicense(validDynLicenseNum);
+
+                return clusterVO;
+            }
+
+        }
+        return null;
+    }
+
 }

+ 26 - 1
simulation-resource-server/src/main/resources/mapper/system/ClusterMapper.xml

@@ -132,12 +132,37 @@
         ) as totalDynamic
     </select>
 
-    <select id="getLicenseNum" parameterType="java.lang.String" resultType="java.lang.Integer">
+    <!--查询根据userId未到期的仿真软件license数量-->
+    <select id="getSimulationLicenseNum" parameterType="java.lang.String" resultType="java.lang.Integer">
         select num_simulation_license from system_cluster
         where is_deleted = '0' and DATE(date_simulation_license) >= DATE(NOW()) and user_id = #{userId,jdbcType=VARCHAR}
     </select>
+
+    <!--查询根据userId未到期的动力学软件license数量-->
+    <select id="getDynamicLicenseNum" resultType="java.lang.Integer">
+        select num_dynamic_license from system_cluster
+        where is_deleted = '0' and DATE(date_dynamic_license) >= DATE(NOW()) and user_id = #{userId,jdbcType=VARCHAR}
+    </select>
+
+
     <select id="getClusterByUserId" parameterType="java.lang.String" resultType="api.common.pojo.vo.system.ClusterVO">
         select num_simulation_license, date_simulation_license, num_dynamic_license, date_dynamic_license from system_cluster
         where is_deleted = '0' and user_id = #{userId,jdbcType=VARCHAR}
     </select>
+
+    <select id="getAssignedSimLicenseNum" parameterType="api.common.pojo.param.system.ClusterParam" resultType="java.lang.Integer">
+        select SUM(num_simulation_license) as AssignedSimLicenseNum from system_cluster
+        where is_deleted = '0' and DATE(date_simulation_license) >= DATE(NOW()) and create_user_id = #{createUserId,jdbcType=VARCHAR}
+        <if test="userId != null and userId != ''">
+            and  user_id != #{userId,jdbcType=VARCHAR}
+        </if>
+    </select>
+    <select id="getAssignedDynLicenseNum" parameterType="api.common.pojo.param.system.ClusterParam" resultType="java.lang.Integer">
+        select SUM(num_dynamic_license) as AssignedDynLicenseNum from system_cluster
+        where is_deleted = '0' and DATE(date_dynamic_license) >= DATE(NOW()) and create_user_id = #{createUserId,jdbcType=VARCHAR}
+        <if test="userId != null and userId != ''">
+            and  user_id != #{userId,jdbcType=VARCHAR}
+        </if>
+    </select>
+
 </mapper>