Pārlūkot izejas kodu

运行优化二期

raojiang 2 mēneši atpakaļ
vecāks
revīzija
4b2f4983b6
33 mainītis faili ar 1206 papildinājumiem un 44 dzēšanām
  1. 13 0
      api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/request/FeederGroupRequest.java
  2. 13 0
      api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/request/FeederMetricsRequest.java
  3. 157 0
      api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/FeederGroupMetrics.java
  4. 47 0
      api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/FeederGroupTreeNode.java
  5. 207 0
      api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/FeederMetrics.java
  6. 1 0
      common/common-core/src/main/java/com/hdkj/lt/core/sys/dao/DwdShbDsFeederBaseMapper.java
  7. 3 0
      common/common-core/src/main/java/com/hdkj/lt/core/sys/service/DwdShbDsFeederBaseService.java
  8. 4 0
      common/common-core/src/main/java/com/hdkj/lt/core/sys/service/impl/DwdShbDsFeederBaseServiceImpl.java
  9. 8 0
      common/common-core/src/main/resources/mapper/DwdShbDsFeederBaseMapper.xml
  10. 130 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/application/FeederGroupApplication.java
  11. 19 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/application/OptimizationApplication.java
  12. 10 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/constants/OptimizationConstants.java
  13. 106 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/ExportController.java
  14. 53 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/optimization/FeederGroupController.java
  15. 133 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/optimization/OptimizationController.java
  16. 65 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/TJxz.java
  17. 47 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/TJxzXl.java
  18. 5 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/convert/EntityToVOConvertor.java
  19. 18 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/mapper/TJxzMapper.java
  20. 18 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/mapper/TJxzXlMapper.java
  21. 13 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/TJxzService.java
  22. 13 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/TJxzXlService.java
  23. 22 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/impl/TJxzServiceImpl.java
  24. 22 0
      services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/impl/TJxzXlServiceImpl.java
  25. 25 0
      services/load-transfer-bf/src/main/resources/bootstrap-local.yaml
  26. 7 0
      services/load-transfer-bf/src/main/resources/bootstrap.yaml
  27. 0 3
      services/load-transfer-bf/src/main/resources/bootstrap.yml
  28. 0 36
      services/load-transfer-bf/src/main/resources/config/local/bootstrap-local.yaml
  29. 0 1
      services/load-transfer-bf/src/main/resources/config/local/vol.properties
  30. 23 0
      services/load-transfer-bf/src/main/resources/mapper/TJxzMapper.xml
  31. 16 0
      services/load-transfer-bf/src/main/resources/mapper/TJxzXlMapper.xml
  32. 7 4
      services/load-transfer-io/src/main/resources/config/local/bootstrap-local.yaml
  33. 1 0
      services/pom.xml

+ 13 - 0
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/request/FeederGroupRequest.java

@@ -0,0 +1,13 @@
+package com.hdkj.fhzg.optimization.request;
+
+import lombok.Data;
+
+/**
+ * @author rj
+ * @date 2026/5/22 17:34
+ * @description
+ */
+@Data
+public class FeederGroupRequest {
+    private String feederGroupId;
+}

+ 13 - 0
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/request/FeederMetricsRequest.java

@@ -0,0 +1,13 @@
+package com.hdkj.fhzg.optimization.request;
+
+import lombok.Data;
+
+/**
+ * @author rj
+ * @date 2026/5/23 18:53
+ * @description
+ */
+@Data
+public class FeederMetricsRequest {
+    private String feederId;
+}

+ 157 - 0
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/FeederGroupMetrics.java

@@ -0,0 +1,157 @@
+package com.hdkj.fhzg.optimization.response;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author rj
+ * @date 2026/5/22 17:26
+ * @description
+ */
+@Data
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FeederGroupMetrics {
+
+    //运行问题
+    private OperationIssue operationIssue;
+
+    //时户数影响
+    private Reliability reliability;
+
+    //网损影响
+    private NetworkLossImpact networkLossImpact;
+
+    //网架结构问题
+    private NetworkStructureIssue networkStructureIssue;
+
+    /**
+     * 运行问题
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public static class OperationIssue {
+
+        //运行问题分数
+        private BigDecimal operationIssueScore;
+
+        //重过载线路数
+        private Integer overloadLineCount;
+
+        //区域平均负载率
+        private Double avgLoadRate;
+
+        //电压越限节点数
+        private Integer voltageViolationNodeCount;
+
+        //整站N-1不通过数量
+        private Integer stationN1FailCount;
+
+        //馈线N-1不通过数量
+        private Integer feederN1FailCount;
+
+        //线路N-1通过率
+        private Double lineN1PassRate;
+    }
+
+    /**
+     * 可靠性
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public static class Reliability {
+
+        //可靠性得分
+        private BigDecimal reliabilityScore;
+
+        //理论可靠性
+        private BigDecimal theoreticalReliability;
+
+        //停电线路数
+        private Double outageLineCount;
+
+        //停电配变数
+        private Double outageTransformerCount;
+
+        //影响低压用户总数
+        private Double affectedLowVoltageUserCount;
+
+        //重要/敏感用户失电数
+        private Double importantSensitiveUserLossCount;
+    }
+
+    /**
+     * 网损影响
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public static class NetworkLossImpact {
+
+        //网损影响得分
+        private BigDecimal networkLossImpactScore;
+        //总网损
+        private Double totalNetworkLoss;
+
+        //网损不达标数量
+        private Double networkLossNonCompliantCount;
+
+        //网损达标率
+        private Double networkLossCompliantRate;
+
+        //功率因数不达标线路数
+        private Double powerFactorNonCompliantLineCount;
+    }
+
+    /**
+     * 网架结构问题
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public static class NetworkStructureIssue {
+
+        //网架结构问题得分
+        private BigDecimal networkStructureIssueScore;
+        //单辐射线路数
+        private Double singleRadiationLineCount;
+
+        //线路联络率
+        private Double lineContactRate;
+
+        //复杂联络线路数
+        private Double complexContactLineCount;
+
+        //供电半径超标线路数
+        private Double powerRadiusExceedLineCount;
+
+        //大分支数量
+        private Double largeBranchCount;
+
+        //负荷组分段数不合理线路数
+        private Double unreasonableSegmentCount;
+
+        //负荷组用户数或容量异常
+        private Double abnormalLoadGroupCount;
+
+        //整线装机容量过大
+        private Double excessiveInstalledCapacityCount;
+
+        //整线挂接用户超80
+        private Double userExceed80Count;
+    }
+}

+ 47 - 0
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/FeederGroupTreeNode.java

@@ -0,0 +1,47 @@
+package com.hdkj.fhzg.optimization.response;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * @author rj
+ * @date 2026/5/22 15:18
+ * @description
+ */
+@Data
+@Accessors(chain = true)
+public class FeederGroupTreeNode {
+
+    /**
+     * 类型 1-地市 2-区县 3-接线组 4-线路
+     */
+    private Integer type;
+
+    /**
+     * ID
+     */
+    private String Id;
+
+    /**
+     * name
+     */
+    private String name;
+
+
+    private List<FileType> fileIdList;
+
+
+    private List<FeederGroupTreeNode> children;
+
+
+    @Data
+    @Accessors(chain = true)
+    public static class FileType {
+
+        private Long fileId;
+
+        private String fileType;
+    }
+}

+ 207 - 0
api/load-transfer-bf-api/src/main/java/com/hdkj/fhzg/optimization/response/FeederMetrics.java

@@ -0,0 +1,207 @@
+package com.hdkj.fhzg.optimization.response;
+
+/**
+ * @author rj
+ * @date 2026/5/23 18:51
+ * @description
+ */
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * 电网运行分析结果
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class FeederMetrics {
+
+    /**
+     * 运行问题
+     */
+    private OperationIssue operationIssue;
+
+    /**
+     * 可靠性
+     */
+    private Reliability reliability;
+
+    /**
+     * 网损影响
+     */
+    private NetworkLossImpact networkLossImpact;
+
+    /**
+     * 网架结构问题
+     */
+    private NetworkStructureIssue networkStructureIssue;
+
+    /**
+     * 运行问题
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class OperationIssue {
+
+        //运行问题得分
+        private BigDecimal operationIssueScore;
+        /**
+         * 线路当前负载率
+         */
+        private BigDecimal currentLineLoadRate;
+
+        /**
+         * 电流越限线段数
+         */
+        private Integer currentOverlimitSegmentCount;
+
+        /**
+         * 电压越限节点数
+         */
+        private Integer voltageViolationNodeCount;
+
+        /**
+         * 转供裕度不足的对侧线路数
+         */
+        private Integer insufficientTransferCapacityLineCount;
+
+        /**
+         * 线路N-1校验
+         */
+        private Boolean lineN1Check;
+    }
+
+    /**
+     * 可靠性
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class Reliability {
+
+        /**
+         * 可靠性得分
+         */
+        private BigDecimal reliabilityScore;
+
+        /**
+         * 线路状态
+         */
+        private String lineStatus;
+
+        /**
+         * 停电配变数
+         */
+        private BigDecimal outageTransformerCount;
+
+        /**
+         * 理论可靠性
+         */
+        private BigDecimal theoreticalReliability;
+
+        /**
+         * 影响低压用户总数
+         */
+        private Integer affectedLowVoltageUserCount;
+
+        /**
+         * 重要/敏感用户失电数
+         */
+        private Integer importantSensitiveUserLossCount;
+    }
+
+    /**
+     * 网损影响
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class NetworkLossImpact {
+
+        //网损影响得分
+        private BigDecimal networkLossImpactScore;
+        /**
+         * 有功网损值
+         */
+        private BigDecimal activePowerLoss;
+
+        /**
+         * 网损率
+         */
+        private BigDecimal lossRate;
+
+
+        /**
+         * 出口功率因数
+         */
+        private BigDecimal exportPowerFactor;
+
+    }
+
+    /**
+     * 网架结构问题
+     */
+    @Data
+    @Builder
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class NetworkStructureIssue {
+
+        //网架结构问题得分
+        private BigDecimal networkStructureIssueScore;
+
+        /**
+         * 线路接线类型
+         */
+        private String lineConnectionType;
+
+        /**
+         * 线路联络开关数量
+         */
+        private Integer lineContactSwitchCount;
+
+        /**
+         * 整线装机容量
+         */
+        private BigDecimal totalInstalledCapacity;
+
+
+        /**
+         * 整线挂接用户总数
+         */
+        private Integer lineUserCount;
+
+
+        /**
+         * 负荷组用户数或容量异常
+         */
+        private String abnormalLoadGroupCount;
+
+        /**
+         * 负荷组分段数
+         */
+        private Integer loadGroupSegmentCount;
+
+
+        /**
+         * 大分支数量
+         */
+        private Integer largeBranchCount;
+
+        /**
+         * 线路供电半径
+         */
+        private BigDecimal linePowerSupplyRadius;
+
+    }
+}

+ 1 - 0
common/common-core/src/main/java/com/hdkj/lt/core/sys/dao/DwdShbDsFeederBaseMapper.java

@@ -23,6 +23,7 @@ public interface DwdShbDsFeederBaseMapper extends BaseMapper<DwdShbDsFeederBase>
 
     List<FeederFileDTO> getFeederFileById(String feederId);
 
+    List<DwdShbDsFeederBase> getFeederListByMaintOrg(@Param("maintOrg")String maintOrg);
 }
 
 

+ 3 - 0
common/common-core/src/main/java/com/hdkj/lt/core/sys/service/DwdShbDsFeederBaseService.java

@@ -6,6 +6,7 @@ import com.hdkj.lt.core.bizms.modle.po.DwdShbDsFeederBase;
 import com.hdkj.lt.core.sys.model.dto.FeederCacheDTO;
 
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -26,4 +27,6 @@ public interface DwdShbDsFeederBaseService extends IService<DwdShbDsFeederBase>
     Map<String, Object>  getAllFeederCache();
 
     void refreshFeederCacheById(String feederId);
+
+    List<DwdShbDsFeederBase> getFeederListByMaintOrg(String maintOrg);
 }

+ 4 - 0
common/common-core/src/main/java/com/hdkj/lt/core/sys/service/impl/DwdShbDsFeederBaseServiceImpl.java

@@ -188,6 +188,10 @@ public class DwdShbDsFeederBaseServiceImpl extends ServiceImpl<DwdShbDsFeederBas
         }
     }
 
+    @Override
+    public List<DwdShbDsFeederBase> getFeederListByMaintOrg(String maintOrg) {
+        return this.baseMapper.getFeederListByMaintOrg(maintOrg);
+    }
 }
 
 

+ 8 - 0
common/common-core/src/main/resources/mapper/DwdShbDsFeederBaseMapper.xml

@@ -136,5 +136,13 @@
         where d.del_flag='0' and d.psr_id = #{feederId}
     </select>
 
+    <select id="getFeederListByMaintOrg" resultType="com.hdkj.lt.core.bizms.modle.po.DwdShbDsFeederBase">
+        select *
+        from dwd_shb_ds_feeder_base
+        where psr_state = '20'
+          and pub_priv_flag = 0
+          and maint_org = #{maintOrg}
+    </select>
+
 
 </mapper>

+ 130 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/application/FeederGroupApplication.java

@@ -0,0 +1,130 @@
+package com.hdkj.lt.bf.application;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.hdkj.fhzg.optimization.response.FeederGroupTreeNode;
+import com.hdkj.lt.bf.constants.OptimizationConstants;
+import com.hdkj.lt.bf.entity.TJxz;
+import com.hdkj.lt.bf.entity.TJxzXl;
+import com.hdkj.lt.bf.entity.convert.EntityToVOConvertor;
+import com.hdkj.lt.bf.entity.vo.XlRelVO;
+import com.hdkj.lt.bf.service.TJxzService;
+import com.hdkj.lt.bf.service.TJxzXlService;
+import com.hdkj.lt.bf.service.impl.XlRelServiceImpl;
+import com.hdkj.lt.core.bizms.modle.po.DwdShbDsFeederBase;
+import com.hdkj.lt.core.bizms.modle.po.XlRel;
+import com.hdkj.lt.core.sys.dao.FhzgDistMappingFileMapper;
+import com.hdkj.lt.core.sys.model.dto.FhzgDistMappingFileDTO;
+import com.hdkj.lt.core.sys.service.DwdShbDsFeederBaseService;
+import com.hdkj.lt.utils.cache.RedisRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author rj
+ * @date 2026/5/22 15:22
+ * @description
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class FeederGroupApplication {
+
+    private final TJxzService jxzService;
+    private final TJxzXlService jxzXlService;
+    private final FhzgDistMappingFileMapper distMappingFileMapper;
+    private final XlRelServiceImpl xlRelService;
+    private final RedisRepository redisRepository;
+    private final DwdShbDsFeederBaseService dwdShbDsFeederBaseService;
+
+
+    public List<FeederGroupTreeNode> getFeederGroupTree() {
+        Boolean exists = redisRepository.exists(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE);
+        if (!exists) {
+            //目前仅接入长阳县
+            List<DwdShbDsFeederBase> feederList = dwdShbDsFeederBaseService.getFeederListByMaintOrg("60FDC66B3FC143DC9C39001215DDCC61");
+            List<FeederGroupTreeNode> feederGroupTree = buildFeederGroupTree(feederList);
+            redisRepository.set(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE, feederGroupTree);
+            return feederGroupTree;
+        }
+        return (List<FeederGroupTreeNode>) redisRepository.get(OptimizationConstants.CACHE_KEY_FEEDER_GROUP_TREE);
+
+    }
+
+    private List<FeederGroupTreeNode> buildFeederGroupTree(List<DwdShbDsFeederBase> rawList) {
+        List<TJxzXl> jxzxlList = jxzXlService.list();
+        Map<String, List<TJxzXl>> jxzXlMap = jxzxlList.stream().collect(Collectors.groupingBy(TJxzXl::getJxzId));
+        //线路单线图文件id
+        List<String> xlIds = jxzxlList.stream().map(TJxzXl::getXlid).collect(Collectors.toList());
+        List<FhzgDistMappingFileDTO> mappingFileById = distMappingFileMapper.getMappingFileById(xlIds);
+        Map<String, Long> mappingFileMap = mappingFileById.stream().filter(i -> Objects.equals(i.getFileType(), "1")).collect(Collectors.toMap(FhzgDistMappingFileDTO::getLineId, FhzgDistMappingFileDTO::getFileId));
+
+        Map<String, FeederGroupTreeNode> cityMap = rawList.stream().collect(Collectors.toMap(
+                DwdShbDsFeederBase::getCity, row -> new FeederGroupTreeNode().setId(row.getCity()).setName(row.getCityName()).setType(1).setChildren(new ArrayList<>()),
+                (existing, replacement) -> existing
+        ));
+
+        Map<String, FeederGroupTreeNode> maintOrgMap = new HashMap<>();
+        Map<String, FeederGroupTreeNode> substationMap = new HashMap<>();
+
+//        rawList.forEach(row -> {
+//            FeederGroupTreeNode cityNode = cityMap.get(row.getCity());
+//            FeederGroupTreeNode maintOrgNode = maintOrgMap.computeIfAbsent(
+//                    row.getCity() + "_" + row.getMaintOrg(),
+//                    k -> {
+//                        FeederGroupTreeNode newMaintOrgNode = new FeederGroupTreeNode().setId(row.getMaintOrg()).setName(row.getMaintOrgName()).setType(2).setChildren(new ArrayList<>());
+//                        cityNode.getChildren().add(newMaintOrgNode);
+//                        return newMaintOrgNode;
+//                    }
+//            );
+
+//            FeederGroupTreeNode labelNode = labelMap.computeIfAbsent(
+//                    row.getCity() + "_" + row.getMaintOrg() + "_" + row.getJxzLabel(),
+//                    l -> {
+//                        FeederGroupTreeNode newLabelNode = new FeederGroupTreeNode().setName(row.getJxzLabel()).setType(3).setChildren(new ArrayList<>());
+//                        maintOrgNode.getChildren().add(newLabelNode);
+//                        return newLabelNode;
+//                    }
+//            );
+//
+//            List<TJxzXl> tJxzXls = jxzXlMap.get(row.getJxzId());
+//
+//
+//            List<FeederGroupTreeNode> list = new ArrayList<>();
+//            for (TJxzXl tJxzXl : tJxzXls) {
+//                FeederGroupTreeNode jxzxl = new FeederGroupTreeNode();
+//                jxzxl.setId(tJxzXl.getXlid());
+//                jxzxl.setType(5);
+//                jxzxl.setName(tJxzXl.getXlid());
+//                FeederGroupTreeNode.FileType fileType = new FeederGroupTreeNode.FileType().setFileId(mappingFileMap.get(tJxzXl.getXlid())).setFileType("1");
+//                FeederGroupTreeNode.FileType fileType1 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl.getSwitchSectionFileId()).setFileType("2");
+//                FeederGroupTreeNode.FileType fileType2 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl.getLoadGroupFileId()).setFileType("3");
+//                FeederGroupTreeNode.FileType fileType3 = new FeederGroupTreeNode.FileType().setFileId(tJxzXl.getPrimaryFileId()).setFileType("4");
+//                List<FeederGroupTreeNode.FileType> fileTypeList = new ArrayList<>();
+//                fileTypeList.add(fileType);
+//                fileTypeList.add(fileType1);
+//                fileTypeList.add(fileType2);
+//                fileTypeList.add(fileType3);
+//                jxzxl.setFileIdList(fileTypeList);
+//                list.add(jxzxl);
+//            }
+//
+//
+//            labelNode.getChildren().add(
+//                    new FeederGroupTreeNode().setId(row.getJxzId()).setName(row.getJxzName()).setType(4)
+//                            .setFileIdList(Collections.singletonList(new FeederGroupTreeNode.FileType().setFileId(row.getFileId()).setFileType("1")))
+//                            .setChildren(list));
+//        });
+        return new ArrayList<>(cityMap.values());
+    }
+
+    public List<XlRelVO> getFeederGroupContactSwitchList(String feederGroupId) {
+        List<TJxzXl> list = jxzXlService.list(new LambdaQueryWrapper<TJxzXl>().eq(TJxzXl::getJxzId, feederGroupId));
+        List<String> xlIds = list.stream().map(TJxzXl::getXlid).collect(Collectors.toList());
+        List<XlRel> xlRelList = xlRelService.list(new LambdaQueryWrapper<XlRel>().in(XlRel::getXlIdOne, xlIds));
+        return EntityToVOConvertor.INSTANCE.toXlRelVOList(xlRelList);
+    }
+}

+ 19 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/application/OptimizationApplication.java

@@ -0,0 +1,19 @@
+package com.hdkj.lt.bf.application;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author rj
+ * @date 2026/5/25 15:36
+ * @description
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class OptimizationApplication {
+
+
+
+}

+ 10 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/constants/OptimizationConstants.java

@@ -0,0 +1,10 @@
+package com.hdkj.lt.bf.constants;
+
+/**
+ * @author rj
+ * @date 2026/5/25 9:30
+ * @description
+ */
+public class OptimizationConstants {
+    public static final String CACHE_KEY_FEEDER_GROUP_TREE = "feeder_group_tree";
+}

+ 106 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/ExportController.java

@@ -0,0 +1,106 @@
+package com.hdkj.lt.bf.controller;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowCallbackHandler;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Sunlit
+ * @date 2026/5/20 15:02
+ * @description
+ **/
+@Slf4j
+@RestController
+@RequestMapping("/api/export")
+public class ExportController {
+
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    @PostMapping("/csv")
+    public void exportToCsv(@RequestBody Map<String, String> request,
+                            HttpServletResponse response) throws IOException {
+        String sql = request.get("sql");
+        
+        log.info("开始导出CSV,SQL: {}", sql);
+        long startTime = System.currentTimeMillis();
+
+        // 设置响应头
+        response.setContentType("text/csv;charset=UTF-8");
+        response.setHeader("Content-Disposition", "attachment; filename=export.csv");
+        response.setCharacterEncoding("UTF-8");
+        response.setBufferSize(8192); // 设置缓冲区大小
+
+        try (PrintWriter writer = response.getWriter()) {
+            // 写入BOM解决中文乱码
+            writer.write("\uFEFF");
+
+            // 使用流式查询避免内存溢出
+            final boolean[] headerWritten = {false};
+            final long[] rowCount = {0};
+
+            jdbcTemplate.query(sql, new RowCallbackHandler() {
+                @Override
+                public void processRow(ResultSet rs) throws SQLException {
+                    // 第一次处理时获取列名并写入表头
+                    if (!headerWritten[0]) {
+                        int columnCount = rs.getMetaData().getColumnCount();
+                        List<String> headers = new ArrayList<>(columnCount);
+                        
+                        for (int i = 1; i <= columnCount; i++) {
+                            String columnName = rs.getMetaData().getColumnName(i);
+                            headers.add(columnName);
+                        }
+                        
+                        writer.println(String.join(",", headers));
+                        headerWritten[0] = true;
+                    }
+
+                    // 写入当前行数据
+                    int columnCount = rs.getMetaData().getColumnCount();
+                    List<String> values = new ArrayList<>(columnCount);
+                    
+                    for (int i = 1; i <= columnCount; i++) {
+                        Object value = rs.getObject(i);
+                        String strValue = value != null ? value.toString() : "";
+                        
+                        // 处理逗号和引号
+                        if (strValue.contains(",") || strValue.contains("\"") || strValue.contains("\n")) {
+                            strValue = "\"" + strValue.replace("\"", "\"\"") + "\"";
+                        }
+                        values.add(strValue);
+                    }
+                    writer.println(String.join(",", values));
+                    
+                    rowCount[0]++;
+                    // 每处理10000行记录一次日志
+                    if (rowCount[0] % 10000 == 0) {
+                        log.debug("已处理 {} 行数据", rowCount[0]);
+                    }
+                }
+            });
+            
+            writer.flush();
+            
+            long endTime = System.currentTimeMillis();
+            log.info("CSV导出完成,共处理 {} 行数据,耗时: {} ms", rowCount[0], (endTime - startTime));
+        } catch (Exception e) {
+            log.error("导出CSV失败", e);
+            throw new IOException("导出CSV失败: " + e.getMessage(), e);
+        }
+    }
+}

+ 53 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/optimization/FeederGroupController.java

@@ -0,0 +1,53 @@
+package com.hdkj.lt.bf.controller.optimization;
+
+import com.hdkj.fhzg.optimization.request.FeederGroupRequest;
+import com.hdkj.fhzg.optimization.response.FeederGroupTreeNode;
+import com.hdkj.hussar.ApiResponse;
+import com.hdkj.lt.bf.application.FeederGroupApplication;
+import com.hdkj.lt.bf.entity.vo.XlRelVO;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author rj
+ * @date 2026/5/22 15:10
+ * @description
+ */
+@Slf4j
+@RestController
+@RequestMapping("/feederGroup")
+@RequiredArgsConstructor
+public class FeederGroupController {
+
+    private final FeederGroupApplication FeederGroupApplication;
+
+    /**
+     * 接线组索引树
+     * 5/25:去掉接线组层级 改成 地市-区县-变电站-线路
+     * @return
+     */
+    @PostMapping("/getFeederGroupTree")
+    public ApiResponse<List<FeederGroupTreeNode>> getCountryStatistic() {
+        List<FeederGroupTreeNode> feederGroupTree = FeederGroupApplication.getFeederGroupTree();
+        return ApiResponse.success(feederGroupTree);
+    }
+
+    /**
+     * 获取接线组联络开关列表
+     *
+     * @return
+     */
+    @PostMapping("/getFeederGroupContactSwitchList")
+    public ApiResponse<List<XlRelVO>> getFeederGroupContactSwitchList(@RequestBody FeederGroupRequest request) {
+        List<XlRelVO> xlRelList = FeederGroupApplication.getFeederGroupContactSwitchList(request.getFeederGroupId());
+        return ApiResponse.success(xlRelList);
+    }
+
+
+}

+ 133 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/controller/optimization/OptimizationController.java

@@ -0,0 +1,133 @@
+package com.hdkj.lt.bf.controller.optimization;
+
+import com.alibaba.fastjson.JSON;
+import com.hdkj.fhzg.optimization.request.FeederGroupRequest;
+import com.hdkj.fhzg.optimization.request.FeederMetricsRequest;
+import com.hdkj.fhzg.optimization.response.FeederGroupMetrics;
+import com.hdkj.fhzg.optimization.response.FeederMetrics;
+import com.hdkj.hussar.ApiResponse;
+import com.hdkj.lt.bf.application.OptimizationApplication;
+import com.hdkj.lt.bf.entity.vo.XlRelVO;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author rj
+ * @date 2026/5/22 17:18
+ * @description
+ */
+@Slf4j
+@RestController
+@RequestMapping("/optimization")
+@RequiredArgsConstructor
+public class OptimizationController {
+
+    private final OptimizationApplication optimizationApplication;
+
+
+    /**
+     * 获取接线组指标数据
+     *
+     * @return
+     */
+    @PostMapping("/getFeederGroupMetrics")
+    public ApiResponse<FeederGroupMetrics> getFeederGroupMetrics(@RequestBody FeederGroupRequest request) {
+        String json = "{\n" +
+                "  \"operationIssue\": {\n" +
+                "    \"operationIssueScore\": 0.00,\n" +
+                "    \"overloadLineCount\": 0,\n" +
+                "    \"avgLoadRate\": 0.00,\n" +
+                "    \"voltageViolationNodeCount\": 0,\n" +
+                "    \"stationN1FailCount\": 0,\n" +
+                "    \"feederN1FailCount\": 0,\n" +
+                "    \"lineN1PassRate\": 0.00\n" +
+                "  },\n" +
+                "  \"reliability\": {\n" +
+                "    \"reliabilityScore\": 0.00,\n" +
+                "    \"theoreticalReliability\": 0.00,\n" +
+                "    \"outageLineCount\": 0.00,\n" +
+                "    \"outageTransformerCount\": 0.00,\n" +
+                "    \"affectedLowVoltageUserCount\": 0.00,\n" +
+                "    \"importantSensitiveUserLossCount\": 0.00\n" +
+                "  },\n" +
+                "  \"networkLossImpact\": {\n" +
+                "    \"networkLossImpactScore\": 0.00,\n" +
+                "    \"totalNetworkLoss\": 0.00,\n" +
+                "    \"networkLossNonCompliantCount\": 0.00,\n" +
+                "    \"networkLossCompliantRate\": 0.00,\n" +
+                "    \"powerFactorNonCompliantLineCount\": 0.00\n" +
+                "  },\n" +
+                "  \"networkStructureIssue\": {\n" +
+                "    \"networkStructureIssueScore\": 0.00,\n" +
+                "    \"singleRadiationLineCount\": 0.00,\n" +
+                "    \"lineContactRate\": 0.00,\n" +
+                "    \"complexContactLineCount\": 0.00,\n" +
+                "    \"powerRadiusExceedLineCount\": 0.00,\n" +
+                "    \"largeBranchCount\": 0.00,\n" +
+                "    \"unreasonableSegmentCount\": 0.00,\n" +
+                "    \"abnormalLoadGroupCount\": 0.00,\n" +
+                "    \"excessiveInstalledCapacityCount\": 0.00,\n" +
+                "    \"userExceed80Count\": 0.00\n" +
+                "  }\n" +
+                "}";
+        FeederGroupMetrics feederGroupMetrics = JSON.parseObject(json, FeederGroupMetrics.class);
+        return ApiResponse.success(feederGroupMetrics);
+    }
+
+
+    /**
+     * 获取单线指标数据
+     *
+     * @return
+     */
+    @PostMapping("/getFeederMetrics")
+    public ApiResponse<FeederMetrics> getFeederGroupMetrics(@RequestBody FeederMetricsRequest request) {
+        String json = "{\n" +
+                "  \"operationIssue\": {\n" +
+                "    \"operationIssueScore\": 0.00,\n" +
+                "    \"currentLineLoadRate\": 0.00,\n" +
+                "    \"currentOverlimitSegmentCount\": 0,\n" +
+                "    \"voltageViolationNodeCount\": 0,\n" +
+                "    \"insufficientTransferCapacityLineCount\": 0,\n" +
+                "    \"lineN1Check\": false\n" +
+                "  },\n" +
+                "  \"reliability\": {\n" +
+                "    \"reliabilityScore\": 0.00,\n" +
+                "    \"lineStatus\": \"Status_b\",\n" +
+                "    \"outageTransformerCount\": 0.00,\n" +
+                "    \"theoreticalReliability\": 0.00,\n" +
+                "    \"affectedLowVoltageUserCount\": 0,\n" +
+                "    \"importantSensitiveUserLossCount\": 0\n" +
+                "  },\n" +
+                "  \"networkLossImpact\": {\n" +
+                "    \"networkLossImpactScore\": 0.00,\n" +
+                "    \"activePowerLoss\": 0.00,\n" +
+                "    \"lossRate\": 0.00,\n" +
+                "    \"exportPowerFactor\": 0.00\n" +
+                "  },\n" +
+                "  \"networkStructureIssue\": {\n" +
+                "    \"networkStructureIssueScore\": 0.00,\n" +
+                "    \"lineConnectionType\": \"Type_f\",\n" +
+                "    \"lineContactSwitchCount\": 0,\n" +
+                "    \"totalInstalledCapacity\": 0.00,\n" +
+                "    \"lineUserCount\": 0,\n" +
+                "    \"abnormalLoadGroupCount\": \"Count_b\",\n" +
+                "    \"loadGroupSegmentCount\": 0,\n" +
+                "    \"largeBranchCount\": 0,\n" +
+                "    \"linePowerSupplyRadius\": 0.00\n" +
+                "  }\n" +
+                "}";
+        FeederMetrics feederMetrics = JSON.parseObject(json, FeederMetrics.class);
+        return ApiResponse.success(feederMetrics);
+    }
+
+
+
+
+}

+ 65 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/TJxz.java

@@ -0,0 +1,65 @@
+package com.hdkj.lt.bf.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 单元接线组负荷断面
+ * @TableName t_jxz
+ */
+@TableName(value ="t_jxz")
+@Data
+public class TJxz implements Serializable {
+    /**
+     * 接线组ID
+     */
+    @TableId
+    private String jxzId;
+
+    /**
+     * 接线组名称
+     */
+    private String jxzName;
+
+    /**
+     * 地市id
+     */
+    private String city;
+
+    /**
+     * 地市名称
+     */
+    private String cityName;
+
+    /**
+     * 图id
+     */
+    private Long fileId;
+
+    /**
+     * 区县id
+     */
+    private String maintOrg;
+
+    /**
+     * 区县名称
+     */
+    private String maintOrgName;
+
+    /**
+     * 接线组类型
+     */
+    private String jxzLabel;
+
+    /**
+     * 网格编码
+     */
+    private String gridCode;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 47 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/TJxzXl.java

@@ -0,0 +1,47 @@
+package com.hdkj.lt.bf.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 接线组和线路的N-N关联关系表
+ * @TableName t_jxz_xl
+ */
+@TableName(value ="t_jxz_xl")
+@Data
+public class TJxzXl implements Serializable {
+    /**
+     * 接线组ID
+     */
+    private String jxzId;
+
+    /**
+     * 线路id
+     */
+    private String xlid;
+    /**
+     * 线路id
+     */
+    private Long switchSectionFileId;
+    /**
+     * 线路id
+     */
+    private Long loadGroupFileId;
+    /**
+     * 线路id
+     */
+    private Long primaryFileId;
+
+
+
+    /**
+     * 地市编码
+     */
+    private String cityCode;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 5 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/entity/convert/EntityToVOConvertor.java

@@ -7,6 +7,7 @@ import com.hdkj.lt.bf.entity.vo.*;
 import com.hdkj.lt.core.bizms.modle.po.DwdShbDsSwitchBase;
 import com.hdkj.lt.core.bizms.modle.po.FhzgSwitchProtectionSettings;
 import com.hdkj.lt.core.bizms.modle.po.FhzgTransferSchemeSwitchProtectionRecommend;
+import com.hdkj.lt.core.bizms.modle.po.XlRel;
 import com.hdkj.lt.core.bizms.modle.po.fault.FhzgDistLineSwitchSection;
 import com.hdkj.lt.core.bizms.modle.po.plan.FhzgPlanTransferSchemePowerTransferInfo;
 import org.mapstruct.Mapper;
@@ -68,4 +69,8 @@ public interface EntityToVOConvertor {
 
     @Mapping(source = "fileSize",target = "size")
     AttachmentDTO toAttachmentDTO(FhzgProblemFeedbackAttachment fhzgProblemFeedbackAttachment);
+
+    XlRelVO toXlRelVO(XlRel xlRel);
+
+    List<XlRelVO> toXlRelVOList(List<XlRel> list);
 }

+ 18 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/mapper/TJxzMapper.java

@@ -0,0 +1,18 @@
+package com.hdkj.lt.bf.mapper;
+
+import com.hdkj.lt.bf.entity.TJxz;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Sunlit
+* @description 针对表【t_jxz(单元接线组负荷断面)】的数据库操作Mapper
+* @createDate 2026-05-22 15:19:49
+* @Entity com.hdkj.lt.bf.entity.TJxz
+*/
+public interface TJxzMapper extends BaseMapper<TJxz> {
+
+}
+
+
+
+

+ 18 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/mapper/TJxzXlMapper.java

@@ -0,0 +1,18 @@
+package com.hdkj.lt.bf.mapper;
+
+import com.hdkj.lt.bf.entity.TJxzXl;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Sunlit
+* @description 针对表【t_jxz_xl(接线组和线路的N-N关联关系表)】的数据库操作Mapper
+* @createDate 2026-05-22 15:19:49
+* @Entity com.hdkj.lt.bf.entity.TJxzXl
+*/
+public interface TJxzXlMapper extends BaseMapper<TJxzXl> {
+
+}
+
+
+
+

+ 13 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/TJxzService.java

@@ -0,0 +1,13 @@
+package com.hdkj.lt.bf.service;
+
+import com.hdkj.lt.bf.entity.TJxz;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Sunlit
+* @description 针对表【t_jxz(单元接线组负荷断面)】的数据库操作Service
+* @createDate 2026-05-22 15:19:49
+*/
+public interface TJxzService extends IService<TJxz> {
+
+}

+ 13 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/TJxzXlService.java

@@ -0,0 +1,13 @@
+package com.hdkj.lt.bf.service;
+
+import com.hdkj.lt.bf.entity.TJxzXl;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author Sunlit
+* @description 针对表【t_jxz_xl(接线组和线路的N-N关联关系表)】的数据库操作Service
+* @createDate 2026-05-22 15:19:49
+*/
+public interface TJxzXlService extends IService<TJxzXl> {
+
+}

+ 22 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/impl/TJxzServiceImpl.java

@@ -0,0 +1,22 @@
+package com.hdkj.lt.bf.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hdkj.lt.bf.entity.TJxz;
+import com.hdkj.lt.bf.service.TJxzService;
+import com.hdkj.lt.bf.mapper.TJxzMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Sunlit
+* @description 针对表【t_jxz(单元接线组负荷断面)】的数据库操作Service实现
+* @createDate 2026-05-22 15:19:49
+*/
+@Service
+public class TJxzServiceImpl extends ServiceImpl<TJxzMapper, TJxz>
+    implements TJxzService{
+
+}
+
+
+
+

+ 22 - 0
services/load-transfer-bf/src/main/java/com/hdkj/lt/bf/service/impl/TJxzXlServiceImpl.java

@@ -0,0 +1,22 @@
+package com.hdkj.lt.bf.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.hdkj.lt.bf.entity.TJxzXl;
+import com.hdkj.lt.bf.service.TJxzXlService;
+import com.hdkj.lt.bf.mapper.TJxzXlMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author Sunlit
+* @description 针对表【t_jxz_xl(接线组和线路的N-N关联关系表)】的数据库操作Service实现
+* @createDate 2026-05-22 15:19:49
+*/
+@Service
+public class TJxzXlServiceImpl extends ServiceImpl<TJxzXlMapper, TJxzXl>
+    implements TJxzXlService{
+
+}
+
+
+
+

+ 25 - 0
services/load-transfer-bf/src/main/resources/bootstrap-local.yaml

@@ -0,0 +1,25 @@
+# 本地环境配置文件(研发网终端)
+NACOS_HOST: 27.54.100.176
+NACOS_PORT: 18848
+NACOS_PWD: FHZG@nacos2025
+NAMESPACE: pwfhzg-local
+
+spring:
+  cloud:
+    nacos:
+      username: nacos
+      password: ${NACOS_PWD}
+      discovery:
+        server-addr: ${NACOS_HOST}:${NACOS_PORT}
+        namespace: ${NAMESPACE}
+      config:
+        server-addr: ${spring.cloud.nacos.discovery.server-addr}
+        namespace: ${spring.cloud.nacos.discovery.namespace}
+        file-extension: yaml
+        shared-configs:
+          - data-id: application.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+          - data-id: common-core.yaml
+            group: DEFAULT_GROUP
+            refresh: true

+ 7 - 0
services/load-transfer-bf/src/main/resources/bootstrap.yaml

@@ -0,0 +1,7 @@
+server:
+  port: 19001
+spring:
+  application:
+    name: load-transfer-bf
+  profiles:
+    active: @environment@

+ 0 - 3
services/load-transfer-bf/src/main/resources/bootstrap.yml

@@ -1,3 +0,0 @@
-spring:
-  profiles:
-    active: @environment@

+ 0 - 36
services/load-transfer-bf/src/main/resources/config/local/bootstrap-local.yaml

@@ -1,36 +0,0 @@
-# 本地环境配置文件(研发网终端)
-NACOS_HOST: 27.54.100.176
-NACOS_PORT: 18848
-NACOS_PWD: FHZG@nacos2025
-NAMESPACE: 88b0baca-b7b1-496c-8ebd-bbfea7959c49
-
-server:
-  servlet:
-    context-path: /
-  port: 19001
-
-spring:
-  main:
-    allow-bean-definition-overriding: true
-  mvc:
-    static-path-pattern: /static/**         # 静态资源路径
-    view:
-      prefix: /WEB-INF/view
-  application:
-    name: load-transfer-bf
-  cloud:
-    nacos:
-      discovery:
-        username: nacos
-        password: ${NACOS_PWD}
-        server-addr: ${NACOS_HOST}:${NACOS_PORT}
-        namespace: ${NAMESPACE}
-      config:
-        server-addr: ${spring.cloud.nacos.discovery.server-addr}
-        username: ${spring.cloud.nacos.discovery.username}
-        password: ${spring.cloud.nacos.discovery.password}
-        namespace: ${spring.cloud.nacos.discovery.namespace}
-        file-extension: yaml
-        shared-configs:
-          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} #公共配置
-          - datasource.${spring.cloud.nacos.config.file-extension}  #数据源配置

+ 0 - 1
services/load-transfer-bf/src/main/resources/config/local/vol.properties

@@ -1 +0,0 @@
-hussar.vol.server=http://27.54.100.93:18090

+ 23 - 0
services/load-transfer-bf/src/main/resources/mapper/TJxzMapper.xml

@@ -0,0 +1,23 @@
+<?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.hdkj.lt.bf.mapper.TJxzMapper">
+
+    <resultMap id="BaseResultMap" type="com.hdkj.lt.bf.entity.TJxz">
+            <id property="jxzId" column="jxz_id" jdbcType="VARCHAR"/>
+            <result property="jxzName" column="jxz_name" jdbcType="VARCHAR"/>
+            <result property="city" column="city" jdbcType="VARCHAR"/>
+            <result property="cityName" column="city_name" jdbcType="VARCHAR"/>
+            <result property="maintOrg" column="maint_org" jdbcType="VARCHAR"/>
+            <result property="maintOrgName" column="maint_org_name" jdbcType="VARCHAR"/>
+            <result property="jxzLabel" column="jxz_label" jdbcType="VARCHAR"/>
+            <result property="gridCode" column="grid_code" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        jxz_id,jxz_name,city,
+        city_name,maint_org,maint_org_name,
+        jxz_label,grid_code
+    </sql>
+</mapper>

+ 16 - 0
services/load-transfer-bf/src/main/resources/mapper/TJxzXlMapper.xml

@@ -0,0 +1,16 @@
+<?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.hdkj.lt.bf.mapper.TJxzXlMapper">
+
+    <resultMap id="BaseResultMap" type="com.hdkj.lt.bf.entity.TJxzXl">
+            <result property="jxzId" column="jxz_id" jdbcType="VARCHAR"/>
+            <result property="xlid" column="xlid" jdbcType="VARCHAR"/>
+            <result property="cityCode" column="city_code" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        jxz_id,xlid,city_code
+    </sql>
+</mapper>

+ 7 - 4
services/load-transfer-io/src/main/resources/config/local/bootstrap-local.yaml

@@ -2,7 +2,7 @@
 NACOS_HOST: 27.54.100.176
 NACOS_PORT: 18848
 NACOS_PWD: FHZG@nacos2025
-NAMESPACE: 88b0baca-b7b1-496c-8ebd-bbfea7959c49
+NAMESPACE: pwfhzg-local
 
 server:
   servlet:
@@ -34,6 +34,9 @@ spring:
         namespace: ${spring.cloud.nacos.discovery.namespace}
         file-extension: yaml
         shared-configs:
-          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} #公共配置
-          - datasource.${spring.cloud.nacos.config.file-extension}  #数据源配置
-          - common-core.${spring.cloud.nacos.config.file-extension}  #数据源配置
+          - data-id: application.yaml
+            group: DEFAULT_GROUP
+            refresh: true
+          - data-id: common-core.yaml
+            group: DEFAULT_GROUP
+            refresh: true

+ 1 - 0
services/pom.xml

@@ -168,6 +168,7 @@
                 <directory>src/main/resources</directory>
                 <includes>
                     <include>bootstrap.yaml</include>
+                    <include>bootstrap-${environment}.yaml</include>
                     <include>bootstrap.yml</include>
                     <include>kaptcha.properties</include>
                     <include>log4j2.xml</include>