Bladeren bron

202502141832 #comment 需求筹划前端传递类型进行修改

jojo 4 maanden geleden
bovenliggende
commit
39df9a2f74

+ 19 - 0
orbit-base-biz/base-biz-service/src/main/java/com/base/biz/controller/DemandManagerController.java

@@ -10,7 +10,9 @@ import com.base.biz.model.dto.request.QueryTargetRelationPointAddDTO;
 import com.base.biz.model.dto.request.QueryTargetRelationUpdateDTO;
 import com.base.biz.model.dto.response.QueryBatchUpdateRelationDTO;
 import com.base.biz.model.dto.response.TargetDemandDTO;
+import com.base.biz.service.CreateTargetService;
 import com.base.biz.service.TargetDemandService;
+import com.base.orbit.domain.AjaxResult;
 import com.base.orbit.web.Code;
 import com.base.orbit.web.Result;
 import com.github.liaochong.myexcel.core.DefaultExcelReader;
@@ -36,6 +38,9 @@ public class DemandManagerController {
     @Resource
     TargetDemandMapper targetDemandMapper;
 
+    @Resource
+    CreateTargetService createTargetService;
+
     @ApiOperation(value = "目标关系列表添加")
     @PostMapping("/relation/add")
     public Result<Boolean> addTargetRelationList(@RequestBody List<QueryTargetRelationAddDTO> request) {
@@ -140,4 +145,18 @@ public class DemandManagerController {
         return Result.success();
     }
 
+    @GetMapping("/createPointTarget")
+    public AjaxResult createPointTarget(){
+        return createTargetService.createPointTarget();
+    }
+
+    @GetMapping("/createMobileTarget")
+    public AjaxResult createMobileTarget(){
+        return createTargetService.createMobileTarget();
+    }
+
+    @GetMapping("/createTargetDemandRelationData")
+    public AjaxResult createTargetDemandRelationData(){
+        return createTargetService.createTargetDemandRelationData();
+    }
 }

+ 1 - 0
orbit-base-biz/base-biz-service/src/main/java/com/base/biz/mapper/SceneBasisTargetMapper.java

@@ -26,4 +26,5 @@ public interface SceneBasisTargetMapper extends BaseMapper<SceneBasisTarget> {
 
     List<SceneBasisTarget> getTargetByCodes(List<String> targetCodes);
 
+    List<SceneBasisTarget> findTargetDemandRelationData();
 }

+ 1 - 1
orbit-base-biz/base-biz-service/src/main/java/com/base/biz/model/entity/SceneTargetPoint.java

@@ -84,7 +84,7 @@ public class SceneTargetPoint implements Serializable {
      */
     private BigDecimal status;
 
-      @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     private String id;
 
     /**

+ 234 - 0
orbit-base-biz/base-biz-service/src/main/java/com/base/biz/service/CreateTargetService.java

@@ -0,0 +1,234 @@
+package com.base.biz.service;
+
+import com.base.biz.mapper.SceneBasisTargetMapper;
+import com.base.biz.mapper.SceneTargetPointMapper;
+import com.base.biz.model.PointDTO;
+import com.base.biz.model.dto.request.QueryTargetRelationAddDTO;
+import com.base.biz.model.dto.request.QueryTargetRelationPointAddDTO;
+import com.base.biz.model.entity.SceneBasisTarget;
+import com.base.orbit.domain.AjaxResult;
+import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import javax.annotation.Resource;
+
+/**
+ * @program: server
+ * @description: 创建目标业务逻辑类
+ * @author: JoJo
+ * @create: 2025-02-14 14:48
+ **/
+@Service
+public class CreateTargetService {
+
+    @Resource
+    TargetDemandService targetDemandService;
+
+    @Resource
+    SceneBasisTargetMapper sceneBasisTargetMapper;
+
+    private static final double MIN_LATITUDE = -90.0;
+
+    private static final double MAX_LATITUDE = 90.0;
+
+    private static final double MIN_LONGITUDE = -180.0;
+
+    private static final double MAX_LONGITUDE = 180.0;
+
+    // 最大距离(度)
+    private static final double MAX_DISTANCE = 0.5;
+
+
+    public AjaxResult createPointTarget() {
+        List<QueryTargetRelationPointAddDTO> queryTargetRelationPointAddDTOList = new ArrayList<>();
+        queryTargetRelationPointAddDTOList = generatePointLocations(400);
+        List<QueryTargetRelationAddDTO> target = targetDemandService.createTarget(queryTargetRelationPointAddDTOList);
+        return AjaxResult.success(target);
+    }
+
+    public List<QueryTargetRelationPointAddDTO> generatePointLocations(int count) {
+        List<QueryTargetRelationPointAddDTO> locations = new ArrayList<>();
+        Random random = new Random();
+
+        // 定义热点地区的经纬度范围 (可以根据需要添加更多)
+        double[][] hotZones = {
+                {20, 40, 30, 60},   // 中东 (lat_min, lon_min, lat_max, lon_max)
+                {45, 25, 65, 50},   // 俄乌地区
+                {35, -10, 60, 40},   // 欧洲
+                {25, -125, 50, -65}, // 美洲
+                {30, 120, 45, 145},  // 朝韩日本
+                {-45, 110, -10, 160}  // 澳大利亚
+                // 可以添加更多区域
+        };
+
+        while (locations.size() < count) {
+            // 随机选择一个热点地区
+            int zoneIndex = random.nextInt(hotZones.length);
+            double latMin = hotZones[zoneIndex][0];
+            double lonMin = hotZones[zoneIndex][1];
+            double latMax = hotZones[zoneIndex][2];
+            double lonMax = hotZones[zoneIndex][3];
+
+            // 在该热点地区内生成随机经纬度
+            double latitude = latMin + (latMax - latMin) * random.nextDouble();
+            double longitude = lonMin + (lonMax - lonMin) * random.nextDouble();
+
+            // 排除中国区域 (大致范围,可以根据需要调整)
+            if (isInsideChina(latitude, longitude)) {
+                String areaName = "";
+                areaName = getAreaNameByZoneIndex(zoneIndex);
+                ArrayList<PointDTO> pointDTOS = new ArrayList<>();
+                PointDTO pointDTO = new PointDTO();
+                pointDTO.setLat(latitude);
+                pointDTO.setLng(longitude);
+                pointDTO.setSequence(1);
+                pointDTOS.add(pointDTO);
+                QueryTargetRelationPointAddDTO queryTargetRelationPointAddDTO = new QueryTargetRelationPointAddDTO();
+                queryTargetRelationPointAddDTO.setParentId("250214_XQCH_10001_M00" + (locations.size() + 1));
+                queryTargetRelationPointAddDTO.setCountryName(areaName);
+                queryTargetRelationPointAddDTO.setTargetName("0214点目标" + (locations.size() + 1));
+                queryTargetRelationPointAddDTO.setPointDTOList(pointDTOS);
+                queryTargetRelationPointAddDTO.setType(0);
+                queryTargetRelationPointAddDTO.setTargetLevel(3);
+                locations.add(queryTargetRelationPointAddDTO);
+            }
+        }
+
+        return locations;
+    }
+
+    private static String getAreaNameByZoneIndex(int zoneIndex) {
+        String areaName;
+        switch (zoneIndex) {
+            case 0:
+                // 中东
+                areaName = "中东";
+                break;
+            case 1:
+                // 俄乌地区
+                areaName = "俄乌地区";
+                break;
+            case 2:
+                // 欧洲
+                areaName = "欧洲";
+                break;
+            case 3:
+                // 美洲
+                areaName = "美洲";
+                break;
+            case 4:
+                // 朝韩日本
+                areaName = "朝韩日本";
+                break;
+            case 5:
+                // 澳大利亚
+                areaName = "澳大利亚";
+                break;
+            default:
+                areaName = "未知区域";
+                break;
+        }
+        return areaName;
+    }
+
+    // 判断是否在中国区域内 (简单判断,可以根据实际情况调整)
+    private boolean isInsideChina(double latitude, double longitude) {
+        return (!(latitude >= 18.0) || !(latitude <= 54.0) || !(longitude >= 73.0) || !(longitude <= 135.0));
+    }
+
+
+    public AjaxResult createMobileTarget() {
+        List<QueryTargetRelationPointAddDTO> queryTargetRelationPointAddDTOS = generateMobileTargets(300);
+        List<QueryTargetRelationAddDTO> target = targetDemandService.createTarget(queryTargetRelationPointAddDTOS);
+        return AjaxResult.success(target);
+    }
+
+    public List<QueryTargetRelationPointAddDTO> generateMobileTargets(int targetCount){
+        List<QueryTargetRelationPointAddDTO> targets = new ArrayList<>();
+
+        Random random = new Random();
+
+        // 定义热点地区的经纬度范围 (可以根据需要添加更多)
+        double[][] hotZones = {
+                {20, 40, 30, 60},   // 中东 (lat_min, lon_min, lat_max, lon_max)
+                {45, 25, 65, 50},   // 俄乌地区
+                {35, -10, 60, 40},   // 欧洲
+                {25, -125, 50, -65}, // 美洲
+                {30, 120, 45, 145},  // 朝韩日本
+                {-45, 110, -10, 160}  // 澳大利亚
+                // 可以添加更多区域
+        };
+
+        while (targets.size() < targetCount) {
+            // 随机选择一个热点地区
+            int zoneIndex = random.nextInt(hotZones.length);
+            double latMin = hotZones[zoneIndex][0];
+            double lonMin = hotZones[zoneIndex][1];
+            double latMax = hotZones[zoneIndex][2];
+            double lonMax = hotZones[zoneIndex][3];
+
+            String areaName = getAreaNameByZoneIndex(zoneIndex);
+
+            // 生成基础经纬度
+            double baseLatitude = latMin + (latMax - latMin) * random.nextDouble();
+            double baseLongitude = lonMin + (lonMax - lonMin) * random.nextDouble();
+
+            // 排除中国区域
+            if (isInsideChina(baseLatitude, baseLongitude)) {
+                // 确定目标的点数(3-5个)
+                int pointCount = random.nextInt(3) + 3; // 3, 4, or 5
+
+                List<PointDTO> pointDTOS = new ArrayList<>();
+                for (int i = 0; i < pointCount; i++) {
+                    PointDTO pointDTO = new PointDTO();
+                    // 在基础点附近生成其他点
+                    double latitude = baseLatitude + (random.nextDouble() * 2 - 1) * MAX_DISTANCE;
+                    double longitude = baseLongitude + (random.nextDouble() * 2 - 1) * MAX_DISTANCE;
+
+                    // 确保生成的点在有效经纬度范围内
+                    latitude = Math.max(MIN_LATITUDE, Math.min(MAX_LATITUDE, latitude));
+                    longitude = Math.max(MIN_LONGITUDE, Math.min(MAX_LONGITUDE, longitude));
+
+                    pointDTO.setLat(latitude);
+                    pointDTO.setLng(longitude);
+                    pointDTO.setSequence(i + 1);
+                    pointDTOS.add(pointDTO);
+                }
+
+                QueryTargetRelationPointAddDTO queryTargetRelationPointAddDTO = new QueryTargetRelationPointAddDTO();
+                queryTargetRelationPointAddDTO.setParentId("250214_XQCH_10001_M0" + (300 + targets.size() + 1));
+                queryTargetRelationPointAddDTO.setCountryName(areaName);
+                queryTargetRelationPointAddDTO.setTargetName("0214移动目标" + (targets.size() + 1));
+                queryTargetRelationPointAddDTO.setPointDTOList(pointDTOS);
+                queryTargetRelationPointAddDTO.setType(1);
+                queryTargetRelationPointAddDTO.setTargetLevel(3);
+                targets.add(queryTargetRelationPointAddDTO);
+            }
+        }
+
+        return targets;
+    }
+
+    public AjaxResult createTargetDemandRelationData() {
+        List<SceneBasisTarget> sceneBasisTargetList = sceneBasisTargetMapper.findTargetDemandRelationData();
+
+        String baseParentId = "250214_XQCH_10000_0";
+        List<QueryTargetRelationAddDTO> queryTargetRelationAddDTOS = new ArrayList<>();
+        for (int i = 0; i < sceneBasisTargetList.size(); i++) {
+            String parentId = baseParentId + (i + 1);
+            SceneBasisTarget sceneBasisTarget = sceneBasisTargetList.get(i);
+            QueryTargetRelationAddDTO queryTargetRelationAddDTO = new QueryTargetRelationAddDTO();
+            queryTargetRelationAddDTO.setId(sceneBasisTarget.getId());
+            queryTargetRelationAddDTO.setParentId(parentId);
+            queryTargetRelationAddDTOS.add(queryTargetRelationAddDTO);
+        }
+
+        Boolean b = targetDemandService.addList(queryTargetRelationAddDTOS);
+        if (b) {
+            return AjaxResult.success("添加成功");
+        }
+        return AjaxResult.error("添加失败");
+    }
+}

+ 4 - 2
orbit-base-biz/base-biz-service/src/main/java/com/base/biz/service/TargetDemandService.java

@@ -300,7 +300,9 @@ public class TargetDemandService extends ServiceImpl<TargetDemandMapper, TargetD
 
     public List<TargetDemandRpcDTO> selTargetDemandByParentId(Set<String> parents) {
         QueryWrapper<TargetDemand> queryWrapper = new QueryWrapper<>();
-        queryWrapper.in("parent_id", parents);
+        if(!parents.isEmpty()){
+            queryWrapper.in("parent_id", parents);
+        }
         List<TargetDemand> targetDemands = this.list(queryWrapper);
         List<TargetDemandRpcDTO> targetDemandRpcDTOS = BizUtils.copyEntityToDto(TargetDemandRpcDTO.class, targetDemands);
         //  带上目标点位信息
@@ -600,7 +602,7 @@ public class TargetDemandService extends ServiceImpl<TargetDemandMapper, TargetD
      * @param queryTargetRelationPointAddDTOList 目标基本信息
      * @return 目标
      */
-    private List<QueryTargetRelationAddDTO> createTarget(List<QueryTargetRelationPointAddDTO> queryTargetRelationPointAddDTOList) {
+    public List<QueryTargetRelationAddDTO> createTarget(List<QueryTargetRelationPointAddDTO> queryTargetRelationPointAddDTOList) {
         List<SceneBasisTarget> SceneBasisTargetList = new ArrayList<>();
         List<QueryTargetRelationAddDTO> relationAddDTOS = new ArrayList<>();
         //导入,新增的parentId都是一样的,所以只取第一个

+ 9 - 0
orbit-base-biz/base-biz-service/src/main/resources/mapper/SceneBasisTargetMapper.xml

@@ -56,6 +56,15 @@
             #{item}
         </foreach>
     </select>
+    <select id="findTargetDemandRelationData" resultType="com.base.biz.model.entity.SceneBasisTarget">
+        select
+            *
+        from
+            scene_basis_target sbt
+        where
+            sbt.target_name like "%0214%"
+          and sbt.created_date >= "2025-02-14 15:58:43";
+    </select>
 
     <insert id="batch" parameterType="com.base.biz.model.entity.SceneBasisTarget">
         insert into scene_basis_target (<include refid="Base_Column_List"/>)

+ 6 - 0
orbit-base-plan/base-plan-service/src/main/java/com/base/plan/mapper/AlgSchemeStepMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.base.plan.model.entity.AlgSchemeStep;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 import org.springframework.stereotype.Repository;
 
@@ -24,4 +25,9 @@ public interface AlgSchemeStepMapper extends BaseMapper<AlgSchemeStep> {
         this.update(null,new UpdateWrapper<AlgSchemeStep>().set("is_confirm",1).in("id",ids));
     }
 
+    /**
+     * 根据parentId删除方案步骤
+     * @param parentIds:父Id集合
+     */
+    void deleteByParentIds(@Param("parentIds") List<String> parentIds);
 }

+ 4 - 3
orbit-base-plan/base-plan-service/src/main/java/com/base/plan/service/DemandService.java

@@ -86,14 +86,15 @@ public class DemandService {
             throw new ServiceException("目标parentIds不能为空!");
         }
         List<TargetDemandRpcDTO> targetDemandRpcDTOS = tragetDemandRpcService.selTargetDemandByParentId(parentIds);
+        List<TargetDemandRpcDTO> targetDemandRpcDTOS1 = targetDemandRpcDTOS.subList(0, 6);
         log.info("需求提报,目标个数为:" + targetDemandRpcDTOS.size() + "");
 
         //  计算条带信息开始
-        stripService.getPayloadInfosByReqId(targetDemandRpcDTOS);
+        stripService.getPayloadInfosByReqId(targetDemandRpcDTOS1);
         //  计算条带信息结束
         //  将parentId下所有需求状态改为已提交
         targetDemandRpcDTOS.forEach(targetRelation -> targetRelation.setStatus(1));
-        tragetDemandRpcService.batchStatus(targetDemandRpcDTOS);
+        tragetDemandRpcService.batchStatus(targetDemandRpcDTOS1);
     }
 
     /**
@@ -561,7 +562,7 @@ public class DemandService {
             stepWindowControlPassRelationMapper.initSelected(parentIdSubstring);
             stepWindowDataPassRelationMapper.initSelected(parentIdSubstring);
             stepWindowRelationMapper.initConfirmStatus(parentIdSubstring);
-            algSchemeStepMapper.delete(new QueryWrapper<AlgSchemeStep>().in("parent_id",parentIds));
+            algSchemeStepMapper.deleteByParentIds(parentIds);
         }else{
             //2.1 根据传入的parent_id集合查询alg_scheme_step_window中parent_id一致的数据,然后按照卫星冲突检测规则进行时间筛选
             algSchemeStepWindowList = algSchemeStepWindowService.getAlgSchemeStepWindowByParentIds(demandParam.getParentIds());

+ 13 - 0
orbit-base-plan/base-plan-service/src/main/resources/mapper/AlgSchemeStepMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.base.plan.mapper.AlgSchemeStepMapper">
+
+    <delete id="deleteByParentIds">
+        DELETE FROM alg_scheme_step
+        <where>
+            <foreach collection="parentIds" index="index" item="item" open="(" separator=" or " close=")">
+                parent_id = #{item}
+            </foreach>
+        </where>
+    </delete>
+</mapper>

+ 4 - 3
orbit-base-plan/base-plan-service/src/main/resources/mapper/StepWindowRelationMapper.xml

@@ -35,9 +35,9 @@
         <where>
             swr1.id in (
                 select
-                    swr.id
+                    *
                 from
-                    step_window_relation swr
+                    (select swr.id from step_window_relation swr
                         left join alg_scheme_step_window assw on
                         swr.window_id = assw.id
                             and assw.parent_id in
@@ -45,7 +45,8 @@
                                 #{parentId}
                             </foreach>
                 where
-                    swr.is_confirm = 2)
+                    swr.is_confirm = 2) t1
+            )
         </where>
     </update>
     <update id="batchUpdateConfirmStatus">

+ 1 - 1
orbit-base-user/base-user-service/src/main/java/com/user/service/token/TokenService.java

@@ -32,7 +32,7 @@ public class TokenService {
     private static final String SECRET = "abcdefghijklmnopqrstuvwxyz";
 
     // 令牌有效期(默认30分钟)
-    private int expireTime = 30;
+    private int expireTime = 1440;
 
     protected static final long MILLIS_SECOND = 1000;