From 4f45f29e6b53f4c01b414409c5000ff4e212b3d9 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 05 六月 2026 13:36:54 +0800
Subject: [PATCH] 增加eip

---
 basic-server/doc/EIP线缆对接.sql                                                     |   31 +++
 basic-server/src/main/java/com/ruoyi/basic/controller/EipCableController.java    |   90 +++++++++++
 basic-server/src/main/java/com/ruoyi/basic/dto/EipSyncDto.java                   |   14 +
 basic-server/src/main/java/com/ruoyi/basic/pojo/EipCableTestData.java            |   83 ++++++++++
 basic-server/src/main/java/com/ruoyi/basic/service/EipCableService.java          |   15 +
 basic-server/src/main/java/com/ruoyi/basic/service/impl/EipCableServiceImpl.java |  118 ++++++++++++++
 basic-server/src/main/java/com/ruoyi/basic/constant/EipCableTypeConstants.java   |   58 +++++++
 basic-server/src/main/java/com/ruoyi/basic/mapper/EipCableTestDataMapper.java    |   10 +
 basic-server/src/main/java/com/ruoyi/basic/dto/EipCableQueryDto.java             |   24 +++
 9 files changed, 443 insertions(+), 0 deletions(-)

diff --git "a/basic-server/doc/EIP\347\272\277\347\274\206\345\257\271\346\216\245.sql" "b/basic-server/doc/EIP\347\272\277\347\274\206\345\257\271\346\216\245.sql"
new file mode 100644
index 0000000..dda6ea4
--- /dev/null
+++ "b/basic-server/doc/EIP\347\272\277\347\274\206\345\257\271\346\216\245.sql"
@@ -0,0 +1,31 @@
+CREATE TABLE `eip_cable_test_data` (
+  `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '涓婚敭',
+  `cable_type` VARCHAR(50) DEFAULT NULL COMMENT '绾跨紗绫诲瀷缂栫爜',
+  `cable_type_name` VARCHAR(100) DEFAULT NULL COMMENT '绾跨紗绫诲瀷鍚嶇О',
+  `sample_code` VARCHAR(100) DEFAULT NULL COMMENT '鏍峰搧缂栧彿',
+  `product_name` VARCHAR(200) DEFAULT NULL COMMENT '浜у搧鍚嶇О',
+  `spec_model` VARCHAR(200) DEFAULT NULL COMMENT '瑙勬牸鍨嬪彿',
+  `test_type` VARCHAR(100) DEFAULT NULL COMMENT '璇曢獙绫诲瀷',
+  `test_result` VARCHAR(100) DEFAULT NULL COMMENT '璇曢獙缁撴灉',
+  `raw_material` VARCHAR(500) DEFAULT NULL COMMENT '鍘熸潗鏂�',
+  `process_inspection` VARCHAR(500) DEFAULT NULL COMMENT '杩囩▼妫�',
+  `final_inspection` VARCHAR(500) DEFAULT NULL COMMENT '鎴愬搧妫�',
+  `test_date` DATE DEFAULT NULL COMMENT '璇曢獙鏃堕棿',
+  `source_system` VARCHAR(100) DEFAULT NULL COMMENT '鏉ユ簮绯荤粺',
+  `sync_batch_no` VARCHAR(100) DEFAULT NULL COMMENT '鍚屾鎵规鍙�',
+  `sync_status` TINYINT DEFAULT '1' COMMENT '鍚屾鐘舵�侊細0澶辫触锛�1鎴愬姛',
+  `remark` VARCHAR(500) DEFAULT NULL COMMENT '澶囨敞',
+  `create_by` VARCHAR(100) DEFAULT NULL COMMENT '鍒涘缓浜�',
+  `update_by` VARCHAR(100) DEFAULT NULL COMMENT '淇敼浜�',
+  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '鍒涘缓鏃堕棿',
+  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '鏇存柊鏃堕棿',
+  PRIMARY KEY (`id`),
+  KEY `idx_cable_type` (`cable_type`),
+  KEY `idx_sample_code` (`sample_code`),
+  KEY `idx_test_date` (`test_date`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='EIP绾跨紗璇曢獙鏁版嵁琛�';
+
+INSERT INTO `sys_menu`
+(`menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `route_name`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `icon`, `create_by`, `create_time`, `remark`)
+VALUES
+('EIP绾跨紗瀵规帴', 0, 14, 'quality-eip-cable', 'quality/eipCable/index', NULL, 'QualityEipCable', '1', '0', 'C', '0', '0', 'quality:eipCable:list', 'guide', 'admin', NOW(), '璐ㄩ噺绠$悊-绾跨紗绫籈IP瀵规帴');
diff --git a/basic-server/src/main/java/com/ruoyi/basic/constant/EipCableTypeConstants.java b/basic-server/src/main/java/com/ruoyi/basic/constant/EipCableTypeConstants.java
new file mode 100644
index 0000000..25990e4
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/constant/EipCableTypeConstants.java
@@ -0,0 +1,58 @@
+package com.ruoyi.basic.constant;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * EIP 绾跨紗绫诲瀷甯搁噺
+ */
+public final class EipCableTypeConstants {
+
+    private EipCableTypeConstants() {
+    }
+
+    public static final String HIGH_VOLTAGE = "highVoltage";
+    public static final String MEDIUM_VOLTAGE = "mediumVoltage";
+    public static final String LOW_VOLTAGE = "lowVoltage";
+    public static final String MAIN_NETWORK = "mainNetwork";
+    public static final String DISTRIBUTION = "distribution";
+    public static final String OPTICAL_FIBER = "opticalFiber";
+    public static final String OPGW = "opgw";
+    public static final String ADSS = "adss";
+
+    public static List<String> allTypes() {
+        return Arrays.asList(
+                HIGH_VOLTAGE,
+                MEDIUM_VOLTAGE,
+                LOW_VOLTAGE,
+                MAIN_NETWORK,
+                DISTRIBUTION,
+                OPTICAL_FIBER,
+                OPGW,
+                ADSS
+        );
+    }
+
+    public static String getTypeName(String type) {
+        switch (type) {
+            case HIGH_VOLTAGE:
+                return "楂樺帇鐢靛姏鐢电紗";
+            case MEDIUM_VOLTAGE:
+                return "涓帇鐢靛姏鐢电紗";
+            case LOW_VOLTAGE:
+                return "浣庡帇绾跨紗";
+            case MAIN_NETWORK:
+                return "涓荤綉瀵煎湴绾�";
+            case DISTRIBUTION:
+                return "閰嶇綉瀵煎湴绾�";
+            case OPTICAL_FIBER:
+                return "鍏夌紗";
+            case OPGW:
+                return "OPGW鍏夌紗";
+            case ADSS:
+                return "ADSS鍏夌紗";
+            default:
+                return type;
+        }
+    }
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/EipCableController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/EipCableController.java
new file mode 100644
index 0000000..3afc550
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/EipCableController.java
@@ -0,0 +1,90 @@
+package com.ruoyi.basic.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.basic.constant.EipCableTypeConstants;
+import com.ruoyi.basic.dto.EipCableQueryDto;
+import com.ruoyi.basic.dto.EipSyncDto;
+import com.ruoyi.basic.pojo.EipCableTestData;
+import com.ruoyi.basic.service.EipCableService;
+import com.ruoyi.common.core.domain.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+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.annotation.Resource;
+
+/**
+ * EIP 绾跨紗瀵规帴鎺у埗鍣�
+ */
+@Api(tags = "EIP绾跨紗瀵规帴")
+@RestController
+@RequestMapping("/eip")
+public class EipCableController {
+
+    @Resource
+    private EipCableService eipCableService;
+
+    @ApiOperation("鍒嗛〉鏌ヨ楂樺帇鐢靛姏鐢电紗璇曢獙鏁版嵁")
+    @GetMapping("/highVoltageCable/page")
+    public Result<IPage<EipCableTestData>> pageHighVoltageCable(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.HIGH_VOLTAGE, query));
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ涓帇鐢靛姏鐢电紗璇曢獙鏁版嵁")
+    @GetMapping("/mediumVoltageCable/page")
+    public Result<IPage<EipCableTestData>> pageMediumVoltageCable(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.MEDIUM_VOLTAGE, query));
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ浣庡帇绾跨紗璇曢獙鏁版嵁")
+    @GetMapping("/lowVoltageCable/page")
+    public Result<IPage<EipCableTestData>> pageLowVoltageCable(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.LOW_VOLTAGE, query));
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ涓荤綉瀵煎湴绾胯瘯楠屾暟鎹�")
+    @GetMapping("/mainNetworkGroundWire/page")
+    public Result<IPage<EipCableTestData>> pageMainNetworkGroundWire(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.MAIN_NETWORK, query));
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ閰嶇綉瀵煎湴绾胯瘯楠屾暟鎹�")
+    @GetMapping("/distributionGroundWire/page")
+    public Result<IPage<EipCableTestData>> pageDistributionGroundWire(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.DISTRIBUTION, query));
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ鍏夌紗璇曢獙鏁版嵁")
+    @GetMapping("/opticalFiber/page")
+    public Result<IPage<EipCableTestData>> pageOpticalFiber(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.OPTICAL_FIBER, query));
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ OPGW 鍏夌紗璇曢獙鏁版嵁")
+    @GetMapping("/opgwOpticalFiber/page")
+    public Result<IPage<EipCableTestData>> pageOPGWOpticalFiber(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.OPGW, query));
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ ADSS 鍏夌紗璇曢獙鏁版嵁")
+    @GetMapping("/adssOpticalFiber/page")
+    public Result<IPage<EipCableTestData>> pageADSSOpticalFiber(Long page, Long size, EipCableQueryDto query) {
+        return Result.success(pageCableData(page, size, EipCableTypeConstants.ADSS, query));
+    }
+
+    @ApiOperation("鍚屾 EIP 绾跨紗璇曢獙鏁版嵁")
+    @PostMapping("/sync")
+    public Result<Integer> sync(@RequestBody EipSyncDto dto) {
+        return Result.success(eipCableService.syncCableData(dto.getCableType()));
+    }
+
+    private IPage<EipCableTestData> pageCableData(Long page, Long size, String cableType, EipCableQueryDto query) {
+        long current = page == null || page < 1 ? 1L : page;
+        long pageSize = size == null || size < 1 ? 20L : size;
+        return eipCableService.pageByCableType(current, pageSize, cableType, query == null ? new EipCableQueryDto() : query);
+    }
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/EipCableQueryDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/EipCableQueryDto.java
new file mode 100644
index 0000000..31f1895
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/EipCableQueryDto.java
@@ -0,0 +1,24 @@
+package com.ruoyi.basic.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * EIP 绾跨紗璇曢獙鏁版嵁鏌ヨ鍙傛暟
+ */
+@Data
+public class EipCableQueryDto {
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    private String sampleCode;
+
+    @ApiModelProperty("璇曢獙绫诲瀷")
+    private String testType;
+
+    @ApiModelProperty("璇曢獙鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate testDate;
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/EipSyncDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/EipSyncDto.java
new file mode 100644
index 0000000..2fc93be
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/EipSyncDto.java
@@ -0,0 +1,14 @@
+package com.ruoyi.basic.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * EIP 鏁版嵁鍚屾鍙傛暟
+ */
+@Data
+public class EipSyncDto {
+
+    @ApiModelProperty("绾跨紗绫诲瀷")
+    private String cableType;
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/EipCableTestDataMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/EipCableTestDataMapper.java
new file mode 100644
index 0000000..c4f85bb
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/EipCableTestDataMapper.java
@@ -0,0 +1,10 @@
+package com.ruoyi.basic.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.basic.pojo.EipCableTestData;
+
+/**
+ * EIP 绾跨紗璇曢獙鏁版嵁 Mapper
+ */
+public interface EipCableTestDataMapper extends BaseMapper<EipCableTestData> {
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/pojo/EipCableTestData.java b/basic-server/src/main/java/com/ruoyi/basic/pojo/EipCableTestData.java
new file mode 100644
index 0000000..9da5f13
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/pojo/EipCableTestData.java
@@ -0,0 +1,83 @@
+package com.ruoyi.basic.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * EIP 绾跨紗璇曢獙鏁版嵁
+ */
+@Data
+@TableName("eip_cable_test_data")
+public class EipCableTestData implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("绾跨紗绫诲瀷缂栫爜")
+    private String cableType;
+
+    @ApiModelProperty("绾跨紗绫诲瀷鍚嶇О")
+    private String cableTypeName;
+
+    @ApiModelProperty("鏍峰搧缂栧彿")
+    private String sampleCode;
+
+    @ApiModelProperty("浜у搧鍚嶇О")
+    private String productName;
+
+    @ApiModelProperty("瑙勬牸鍨嬪彿")
+    private String specModel;
+
+    @ApiModelProperty("璇曢獙绫诲瀷")
+    private String testType;
+
+    @ApiModelProperty("璇曢獙缁撴灉")
+    private String testResult;
+
+    @ApiModelProperty("鍘熸潗鏂�")
+    private String rawMaterial;
+
+    @ApiModelProperty("杩囩▼妫�")
+    private String processInspection;
+
+    @ApiModelProperty("鎴愬搧妫�")
+    private String finalInspection;
+
+    @ApiModelProperty("璇曢獙鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate testDate;
+
+    @ApiModelProperty("鏉ユ簮绯荤粺")
+    private String sourceSystem;
+
+    @ApiModelProperty("鍚屾鎵规鍙�")
+    private String syncBatchNo;
+
+    @ApiModelProperty("鍚屾鐘舵��")
+    private Integer syncStatus;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    private String createBy;
+
+    @ApiModelProperty("淇敼浜�")
+    private String updateBy;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/EipCableService.java b/basic-server/src/main/java/com/ruoyi/basic/service/EipCableService.java
new file mode 100644
index 0000000..d44e118
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/EipCableService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.basic.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.basic.dto.EipCableQueryDto;
+import com.ruoyi.basic.pojo.EipCableTestData;
+
+/**
+ * EIP 绾跨紗瀵规帴 Service
+ */
+public interface EipCableService {
+
+    IPage<EipCableTestData> pageByCableType(long pageNum, long pageSize, String cableType, EipCableQueryDto query);
+
+    int syncCableData(String cableType);
+}
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/EipCableServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/EipCableServiceImpl.java
new file mode 100644
index 0000000..f63a81e
--- /dev/null
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/EipCableServiceImpl.java
@@ -0,0 +1,118 @@
+package com.ruoyi.basic.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.constant.EipCableTypeConstants;
+import com.ruoyi.basic.dto.EipCableQueryDto;
+import com.ruoyi.basic.mapper.EipCableTestDataMapper;
+import com.ruoyi.basic.pojo.EipCableTestData;
+import com.ruoyi.basic.service.EipCableService;
+import com.ruoyi.common.utils.SecurityUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * EIP 绾跨紗瀵规帴 Service 瀹炵幇
+ */
+@Service
+public class EipCableServiceImpl implements EipCableService {
+
+    @Resource
+    private EipCableTestDataMapper eipCableTestDataMapper;
+
+    @Override
+    public IPage<EipCableTestData> pageByCableType(long pageNum, long pageSize, String cableType, EipCableQueryDto query) {
+        validateCableType(cableType);
+        Page<EipCableTestData> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<EipCableTestData> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(EipCableTestData::getCableType, cableType)
+                .like(query.getSampleCode() != null && !query.getSampleCode().trim().isEmpty(),
+                        EipCableTestData::getSampleCode, query.getSampleCode())
+                .like(query.getTestType() != null && !query.getTestType().trim().isEmpty(),
+                        EipCableTestData::getTestType, query.getTestType())
+                .eq(query.getTestDate() != null, EipCableTestData::getTestDate, query.getTestDate())
+                .orderByDesc(EipCableTestData::getTestDate)
+                .orderByDesc(EipCableTestData::getId);
+        return eipCableTestDataMapper.selectPage(page, wrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int syncCableData(String cableType) {
+        validateCableType(cableType);
+        String username = resolveUsername();
+        LocalDateTime now = LocalDateTime.now();
+        String batchNo = "EIP" + now.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
+        List<EipCableTestData> dataList = buildDemoData(cableType, batchNo, username, now);
+        int count = 0;
+        for (EipCableTestData data : dataList) {
+            count += eipCableTestDataMapper.insert(data);
+        }
+        return count;
+    }
+
+    private List<EipCableTestData> buildDemoData(String cableType, String batchNo, String username, LocalDateTime now) {
+        String cableTypeName = EipCableTypeConstants.getTypeName(cableType);
+        List<EipCableTestData> list = new ArrayList<>();
+        list.add(buildData(cableType, cableTypeName, batchNo, username, now, 1,
+                "鍘熸潗鏂欏浣撶數闃昏瘯楠�", "鍚堟牸", "閾滃浣撳師鏉愭枡鎵规A", "瀵间綋缁炲悎杩囩▼鎶芥", "鎴愬搧鍑哄巶渚嬭妫�楠�"));
+        list.add(buildData(cableType, cableTypeName, batchNo, username, now, 2,
+                "鍘熸潗鏂欑粷缂樺帤搴︽娴�", "鍚堟牸", "缁濈紭鏂欐壒娆", "缁濈紭鎸ゅ嚭杩囩▼鎶芥", "鎴愬搧鑰愬帇妫�楠�"));
+        list.add(buildData(cableType, cableTypeName, batchNo, username, now, 3,
+                "杩囩▼鑰愬帇璇曢獙", "鍚堟牸", "鎶ゅ鏂欐壒娆", "鎴愮紗杩囩▼宸℃", "鎴愬搧缁撴瀯灏哄妫�楠�"));
+        list.add(buildData(cableType, cableTypeName, batchNo, username, now, 4,
+                "鑰佸寲鎬ц兘璇曢獙", "鍚堟牸", "灞忚斀鏉愭枡鎵规D", "鐏姳璇曢獙杩囩▼妫�", "鎴愬搧鑰佸寲鎬ц兘妫�楠�"));
+        list.add(buildData(cableType, cableTypeName, batchNo, username, now, 5,
+                "鎴愬搧渚嬭璇曢獙", "鍚堟牸", "杈呮潗鎵规E", "鍖呰鍓嶇粓妫�", "鎴愬搧渚嬭鏀捐妫�楠�"));
+        return list;
+    }
+
+    private EipCableTestData buildData(String cableType, String cableTypeName, String batchNo, String username,
+                                       LocalDateTime now, int index, String testType, String testResult,
+                                       String rawMaterial, String processInspection, String finalInspection) {
+        EipCableTestData data = new EipCableTestData();
+        data.setCableType(cableType);
+        data.setCableTypeName(cableTypeName);
+        data.setSampleCode(cableType.toUpperCase() + "-" + now.format(DateTimeFormatter.ofPattern("yyyyMMdd")) + "-" + index);
+        data.setProductName(cableTypeName + "鏍峰搧" + index);
+        data.setSpecModel("ZC-" + (10 + index) + "kV-" + index + "*120");
+        data.setTestType(testType);
+        data.setTestResult(testResult);
+        data.setRawMaterial(rawMaterial);
+        data.setProcessInspection(processInspection);
+        data.setFinalInspection(finalInspection);
+        data.setTestDate(LocalDate.now().minusDays(index - 1L));
+        data.setSourceSystem("鍥界綉绾跨紗绫荤墿鑱旇瘯楠屽钩鍙�(妯℃嫙)");
+        data.setSyncBatchNo(batchNo);
+        data.setSyncStatus(1);
+        data.setRemark("妯℃嫙鍚屾鏁版嵁锛岀敤浜庡墠绔仈璋�");
+        data.setCreateBy(username);
+        data.setUpdateBy(username);
+        data.setCreateTime(now);
+        data.setUpdateTime(now);
+        return data;
+    }
+
+    private void validateCableType(String cableType) {
+        if (!EipCableTypeConstants.allTypes().contains(cableType)) {
+            throw new RuntimeException("涓嶆敮鎸佺殑绾跨紗绫诲瀷: " + cableType);
+        }
+    }
+
+    private String resolveUsername() {
+        try {
+            String username = SecurityUtils.getUsername();
+            return username == null || username.trim().isEmpty() ? "system" : username;
+        } catch (Exception e) {
+            return "system";
+        }
+    }
+}

--
Gitblit v1.9.3