二级和app修改

This commit is contained in:
2026-01-05 10:05:13 +08:00
parent d752188d01
commit d48028a3b4
2 changed files with 137 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
package com.fizz.business.controller;
import com.fizz.business.constants.enums.DeviceEnum;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/deviceEnum")
@Tag(name = "设备枚举")
@Anonymous
public class DeviceEnumController {
@GetMapping("/all")
@Operation(description = "获取DeviceEnum全量定义用于前端动态渲染")
public R<List<DeviceDefVO>> all() {
List<DeviceDefVO> list = Arrays.stream(DeviceEnum.values())
.map(DeviceDefVO::from)
.collect(Collectors.toList());
return R.ok(list);
}
@Data
public static class DeviceDefVO {
private String deviceCode; // DeviceEnum.name()
private Integer idx;
private String desc;
private Double basePosition;
private String sectionType;
private String sourceType;
private List<String> paramFields;
public static DeviceDefVO from(DeviceEnum e) {
DeviceDefVO vo = new DeviceDefVO();
vo.setDeviceCode(e.name());
vo.setIdx(e.getIdx());
vo.setDesc(e.getDesc());
vo.setBasePosition(e.getBasePosition());
vo.setSectionType(e.getSectionType().name());
vo.setSourceType(e.getSourceType().name());
vo.setParamFields(e.getParamFields());
return vo;
}
}
}

View File

@@ -0,0 +1,82 @@
package com.fizz.business.controller;
import com.fizz.business.domain.msg.AppMeasureCoatMessage;
import com.fizz.business.domain.msg.AppMeasureEntryMessage;
import com.fizz.business.domain.msg.AppMeasureExitMessage;
import com.fizz.business.domain.msg.AppMeasureFurnaceMessage;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.domain.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.lang.reflect.Field;
import java.util.*;
@RestController
@RequestMapping("/api/deviceFieldMeta")
@Tag(name = "设备字段元数据")
@Anonymous
public class DeviceFieldMetaController {
@GetMapping("/all")
@Operation(description = "获取测量字段的友好文案(来自 @Schema(description)")
public R<Map<String, FieldMetaVO>> all() {
Map<String, FieldMetaVO> map = new HashMap<>();
// 4个消息类全扫一遍
collect(map, AppMeasureEntryMessage.class);
collect(map, AppMeasureFurnaceMessage.class);
collect(map, AppMeasureCoatMessage.class);
collect(map, AppMeasureExitMessage.class);
return R.ok(map);
}
private void collect(Map<String, FieldMetaVO> map, Class<?> clazz) {
for (Field f : clazz.getDeclaredFields()) {
String fieldName = f.getName();
Schema schema = f.getAnnotation(Schema.class);
if (schema == null) continue;
String desc = schema.description();
if (desc == null || desc.trim().isEmpty()) continue;
FieldMetaVO vo = new FieldMetaVO();
vo.setLabel(parseLabel(desc));
vo.setUnit(parseUnit(desc));
vo.setDescription(desc);
map.putIfAbsent(fieldName, vo);
}
}
// 例:"上层平均涂层重量 (g/m²)" -> label=上层平均涂层重量
private String parseLabel(String desc) {
int idx = desc.indexOf('(');
if (idx > 0) return desc.substring(0, idx).trim();
idx = desc.indexOf('');
if (idx > 0) return desc.substring(0, idx).trim();
return desc.trim();
}
// 例:"上层平均涂层重量 (g/m²)" -> unit=g/m²
private String parseUnit(String desc) {
int l = desc.indexOf('(');
int r = desc.indexOf(')');
if (l >= 0 && r > l) return desc.substring(l + 1, r).trim();
l = desc.indexOf('');
r = desc.indexOf('');
if (l >= 0 && r > l) return desc.substring(l + 1, r).trim();
return "";
}
@Data
public static class FieldMetaVO {
private String label;
private String unit;
private String description;
}
}