huminmin
2026-06-05 4f45f29e6b53f4c01b414409c5000ff4e212b3d9
增加eip
已添加9个文件
443 ■■■■■ 文件已修改
basic-server/doc/EIP线缆对接.sql 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/constant/EipCableTypeConstants.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/EipCableController.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/EipCableQueryDto.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/EipSyncDto.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/mapper/EipCableTestDataMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/EipCableTestData.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/EipCableService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/EipCableServiceImpl.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/doc/EIPÏßÀ¶ԽÓ.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(), '质量管理-线缆类EIP对接');
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;
        }
    }
}
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);
    }
}
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;
}
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;
}
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> {
}
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;
}
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);
}
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,
                "原材料绝缘厚度检测", "合格", "绝缘料批次B", "绝缘挤出过程抽检", "成品耐压检验"));
        list.add(buildData(cableType, cableTypeName, batchNo, username, now, 3,
                "过程耐压试验", "合格", "护套料批次C", "成缆过程巡检", "成品结构尺寸检验"));
        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";
        }
    }
}