Browse Source

fix:1.阈值管理支持批量,2.巡视方案剔除未配置预置位的点位

master
wangguangyuan 3 weeks ago
parent
commit
4396b1bdb4
7 changed files with 165 additions and 28 deletions
  1. +10
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java
  2. +86
    -24
      inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/controller/BasedataEqpBookController.java
  3. +5
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/domain/BasedataPatrolPoint.java
  4. +2
    -0
      inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/mapper/BasedataPatrolPointMapper.java
  5. +9
    -2
      inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java
  6. +8
    -2
      inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml
  7. +45
    -0
      inspect-metadata/src/main/resources/mapper/patrolpointmnt/BasedataPatrolPointMapper.xml

+ 10
- 0
inspect-metadata/src/main/java/com/inspect/metadata/area/domain/BaseDataArea.java View File

@ -66,6 +66,16 @@ public class BaseDataArea extends BaseEntity {
// 算法类型 字典编码
private List<Long> algTypeCodeList;
// 是否过滤未配置预置位的点位
private Boolean filterByPreset;
public Boolean getFilterByPreset() {
return filterByPreset;
}
public void setFilterByPreset(Boolean filterByPreset) {
this.filterByPreset = filterByPreset;
}
public String getOldAreaId() {
return this.oldAreaId;
}


+ 86
- 24
inspect-metadata/src/main/java/com/inspect/metadata/eqpbook/controller/BasedataEqpBookController.java View File

@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.inspect.base.core.utils.ServletUtils;
import com.inspect.metadata.alg.domain.BasedataAlgSubtype;
import com.inspect.metadata.alg.service.IBasedataAlgSubtypeService;
import com.inspect.metadata.area.controller.BaseDataAreaController;
import com.inspect.metadata.area.domain.BaseDataArea;
import com.inspect.metadata.eqpbook.domain.BasedataEqpBook;
import com.inspect.metadata.eqpbook.domain.BasedataEqpBookChannel;
@ -23,6 +24,7 @@ import com.inspect.metadata.eqpbook.task.FeignTaskClient;
import com.inspect.metadata.montdata.domain.BasedataMontPatDevStaData;
import com.inspect.metadata.mqutil.FeignMsgClient;
import com.inspect.metadata.patrolpointmnt.domain.BasedataPatrolPoint;
import com.inspect.metadata.patrolpointmnt.mapper.BasedataPatrolPointMapper;
import com.inspect.metadata.patrolpointmnt.service.IBasedataPatrolPointService;
import com.inspect.metadata.station.service.IBasedataStationService;
import com.inspect.metadata.threshold.domain.BasedataThresholdModification;
@ -89,6 +91,11 @@ public class BasedataEqpBookController extends BaseController {
private IBasedataThresholdModificationService basedataThresholdModificationService;
@Autowired
private FeignTaskClient feignTaskClient;
@Autowired
private BaseDataAreaController baseDataAreaController;
@Resource
private BasedataPatrolPointMapper basedataPatrolpointMapper;
@GetMapping({"/list"})
public TableDataInfo list(BasedataEqpBook basedataEqpbook) {
@ -853,10 +860,44 @@ public class BasedataEqpBookController extends BaseController {
@GetMapping({"/subtypeData"})
public TableDataInfo subtypeData(BasedataPatrolPoint basedataPatrolpoint) {
// List<String> errors = new ArrayList<>();
// this.startPage();
// List<BasedataPatrolPoint> subtypeList = this.basedataEqpBookService.getSubtypeData(basedataPatrolpoint);
List<BasedataPatrolPoint> stdList = new ArrayList<>();
// 前端传的算法编码
List<Long> algTypeCodeList = basedataPatrolpoint.getAlgTypeCodeList();
// 获取算法分类字典dictCode=字典编码dictValue=逗号分隔的子类型ID
List<SysDictData> algCategoryDict = getSysDictDataList("threshold_alg_type");
// 构建字典编码所有可配阈值的算法 -> 子类型ID集合的映射 (例如"886" -> {"1", "2"})
Map<Long, Set<String>> labelToSubtypeIds = algCategoryDict.stream()
.collect(Collectors.toMap(
SysDictData::getDictCode,
item -> Arrays.stream(item.getDictValue().split(","))
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet())
));
logger.info("[META] labelToSubtypeIds : {}", labelToSubtypeIds);
if (algTypeCodeList == null || algTypeCodeList.size() == 0) {
algTypeCodeList = new ArrayList<>(labelToSubtypeIds.keySet());
}
// 合并所有允许的子类型ID
Set<String> allowedSubtypeIds = algTypeCodeList.stream()
.filter(Objects::nonNull)
.flatMap(dictCode -> labelToSubtypeIds.getOrDefault(dictCode, Collections.emptySet()).stream())
.collect(Collectors.toSet());
// subtypeList = subtypeList.stream().filter(point -> {
// String algSubtypeIds = point.getAlgSubtypeIds();
// if (StringUtils.isBlank(algSubtypeIds)) {
// return false;
// }
// return Arrays.stream(algSubtypeIds.split(",")).anyMatch(allowedSubtypeIds::contains);
// }).collect(Collectors.toList());
this.startPage();
basedataPatrolpoint.setAlgSubtypeIds(StringUtils.join(allowedSubtypeIds, ","));
List<BasedataPatrolPoint> subtypeList = this.basedataEqpBookService.getSubtypeData(basedataPatrolpoint);
List<BasedataPatrolPoint> stdList = new ArrayList<>();
// 查询区域信息
for (BasedataPatrolPoint bp : subtypeList) {
List<BasedataThresholdModification> subTypeDOList = new ArrayList<>();
List<JSONObject> jsonArray = JSONArray.parseArray(bp.getAlarmThreshold(), JSONObject.class);
@ -866,22 +907,35 @@ public class BasedataEqpBookController extends BaseController {
} else {
subs = new String[]{bp.getAlgSubtypeIds()};
}
Long relationAreaId = bp.getRelationAreaId();
if (relationAreaId != null) {
BaseDataArea areaQuery = new BaseDataArea();
areaQuery.setAreaIdS(String.valueOf(relationAreaId));
AjaxResult ajaxResult = baseDataAreaController.selectAreaNameSForTaskByAreaIdSRelation(areaQuery);
if (ajaxResult.get("code").equals(200)) {
bp.setAreaName(ajaxResult.get("data").toString());
}
}
if(jsonArray == null || subs.length != jsonArray.size()) {
logger.info("问题巡检点位id,{}", bp.getPatrolPointId());
// errors.add(bp.getPatrolPointId()+"");
continue;
}
List<String> algSubtypeNames = new ArrayList<>();
for (int k = 0; k < subs.length; ++k) {
if ("52".equals(subs[k]) || "53".equals(subs[k])) {
BasedataAlgSubtype basedataAlgSubtype = this.basedataAlgSubtypeService.selectBasedataAlgSubtypeByAlgSubtypeId(Long.valueOf(subs[k]));
if (null != basedataAlgSubtype && (basedataPatrolpoint.getAlgSubtypeName() == null || "".equals(basedataPatrolpoint.getAlgSubtypeName()) || basedataAlgSubtype.getAlgSubtypeName().contains(basedataPatrolpoint.getAlgSubtypeName()))) {
BasedataThresholdModification std = new BasedataThresholdModification();
std.setPatrolPointId(bp.getPatrolPointId());
std.setAlgSubtypeId(subs[k]);
std.setAlgSubtypeName(basedataAlgSubtype.getAlgSubtypeName());
std.setUpperValue(jsonArray.get(k).getString("upperValue"));
std.setLowerValue(jsonArray.get(k).getString("lowerValue"));
subTypeDOList.add(std);
}
BasedataAlgSubtype basedataAlgSubtype = this.basedataAlgSubtypeService.selectBasedataAlgSubtypeByAlgSubtypeId(Long.valueOf(subs[k]));
if (null != basedataAlgSubtype) {
BasedataThresholdModification std = new BasedataThresholdModification();
std.setPatrolPointId(bp.getPatrolPointId());
std.setAlgSubtypeId(subs[k]);
std.setAlgSubtypeName(basedataAlgSubtype.getAlgSubtypeName());
std.setUpperValue(jsonArray.get(k).getString("upperValue"));
std.setLowerValue(jsonArray.get(k).getString("lowerValue"));
subTypeDOList.add(std);
algSubtypeNames.add(basedataAlgSubtype.getAlgSubtypeName());
}
}
bp.setAlgSubtypeName(StringUtils.join(algSubtypeNames, ","));
if (!subTypeDOList.isEmpty()) {
bp.setSubTypeDOList(subTypeDOList);
stdList.add(bp);
@ -900,18 +954,26 @@ public class BasedataEqpBookController extends BaseController {
return rspData;
}
private List<SysDictData> getSysDictDataList(String dictType) {
return basedataPatrolpointMapper.selectDictDataByType(dictType);
}
@PostMapping({"/subtypeUpdate"})
public AjaxResult subtypeUpdate(@RequestBody BasedataPatrolPoint bp) {
List<JSONObject> jsonArray = JSONArray.parseArray(bp.getAlarmThreshold(), JSONObject.class);
public AjaxResult subtypeUpdate(@RequestBody List<JSONObject> jsonObjects) {
for (JSONObject jsonObject : jsonObjects) {
BasedataPatrolPoint bp = jsonObject.toJavaObject(BasedataPatrolPoint.class);
List<JSONObject> jsonArray = JSONArray.parseArray(bp.getAlarmThreshold(), JSONObject.class);
for (int i = 0; i < bp.getSubTypeDOList().size(); ++i) {
jsonArray.get(i).put("upperValue", bp.getSubTypeDOList().get(i).getUpperValue());
jsonArray.get(i).put("lowerValue", bp.getSubTypeDOList().get(i).getLowerValue());
this.basedataThresholdModificationService.insertBasedataThresholdModification(bp.getSubTypeDOList().get(i));
}
for (int i = 0; i < bp.getSubTypeDOList().size(); ++i) {
jsonArray.get(i).put("upperValue", bp.getSubTypeDOList().get(i).getUpperValue());
jsonArray.get(i).put("lowerValue", bp.getSubTypeDOList().get(i).getLowerValue());
this.basedataThresholdModificationService.insertBasedataThresholdModification(bp.getSubTypeDOList().get(i));
}
bp.setAlarmThreshold(jsonArray.toString().replaceFirst(",$", StringUtils.EMPTY));
return this.toAjax(this.basedataPatrolPointService.updateBasedataPatrolPoint(bp));
bp.setAlarmThreshold(jsonArray.toString().replaceFirst(",$", StringUtils.EMPTY));
int i = this.basedataPatrolPointService.updateBasedataPatrolPoint(bp);
}
return this.toAjax(true);
}
@GetMapping({"/subtypeUpdateRecord"})


+ 5
- 0
inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/domain/BasedataPatrolPoint.java View File

@ -70,6 +70,7 @@ public class BasedataPatrolPoint extends BaseEntity {
@JsonProperty("stdparolPointId")
private Long stdParolPointId;
private Long areaId;
private String areaName;
private Long relationAreaId;
private String patrolTypeId;
private String pointImptLevel;
@ -122,6 +123,10 @@ public class BasedataPatrolPoint extends BaseEntity {
private String parentName;
List<Long> algTypeCodeList;
private String allowedSubtypeIds;
public void setPatrolpointName(String patrolpointName) {
this.patrolpointName = patrolpointName;
this.patrolPointName = patrolpointName;


+ 2
- 0
inspect-metadata/src/main/java/com/inspect/metadata/patrolpointmnt/mapper/BasedataPatrolPointMapper.java View File

@ -45,6 +45,8 @@ public interface BasedataPatrolPointMapper {
List<BasedataPatrolPoint> selectBasedataPatrolPointListByDeviceIds(@Param("deviceIds") List<Long> deviceIds);
List<BasedataPatrolPoint> selectBasedataPatrolPointRelationListByDeviceIds(@Param("deviceIds") List<Long> deviceIds);
List<BasedataPatrolPoint> selectBasedataPatrolPointWithPresetRelationListByDeviceIds(@Param("deviceIds") List<Long> deviceIds);
void updateBasedataPatrolPointRelation(@Param("toAreaId") Long toAreaId, @Param("deviceId") Long deviceId);


+ 9
- 2
inspect-metadata/src/main/java/com/inspect/metadata/prodevmnt/service/impl/BasedataDeviceServiceImpl.java View File

@ -524,9 +524,16 @@ public class BasedataDeviceServiceImpl implements IBasedataDeviceService {
if (deviceIds.isEmpty()) {
return;
}
List<BasedataPatrolPoint> patrolPoints = null;
// 批量查询点位
List<BasedataPatrolPoint> patrolPoints = basedataPatrolPointMapper.selectBasedataPatrolPointRelationListByDeviceIds(new ArrayList<>(deviceIds));
if (baseDataArea != null && baseDataArea.getFilterByPreset() != null && baseDataArea.getFilterByPreset()) {
// 剔除掉未配置预置位的点位
patrolPoints = basedataPatrolPointMapper.selectBasedataPatrolPointWithPresetRelationListByDeviceIds(new ArrayList<>(deviceIds));
} else {
// 全部点位
patrolPoints = basedataPatrolPointMapper.selectBasedataPatrolPointRelationListByDeviceIds(new ArrayList<>(deviceIds));
}
List<BasedataAlgSubtype> basedataAlgSubtypes = basedataAlgSubtypeMapper.selectBasedataAlgSubtypeList(new BasedataAlgSubtype());
logger.info("[META] basedataAlgSubtypes cnt: {}", basedataAlgSubtypes.size());


+ 8
- 2
inspect-metadata/src/main/resources/mapper/eqpbook/BasedataEqpBookMapper.xml View File

@ -731,6 +731,7 @@
</select>
<resultMap type="BasedataPatrolPoint" id="BasedataPatrolPointResult">
<result property="patrolPointId" column="patrol_point_id"/>
<result property="relationAreaId" column="relation_area_id"/>
<result property="patrolPointName" column="patrol_point_name"/>
<result property="parentName" column="parent_name"/>
<result property="alarmThreshold" column="alarm_threshold"/>
@ -744,6 +745,7 @@
<select id="getSubtypeData" resultMap="BasedataPatrolPointResult">
SELECT
a.patrol_point_id,
a.relation_area_id,
(SELECT c.device_name FROM basedata_device c WHERE c.device_id = b.parent_id) parent_name,
b.device_name,
a.patrol_point_name,
@ -757,10 +759,14 @@
a.device_id = b.device_id
AND a.alarm_threshold != ''
AND a.alarm_threshold != '[]'
AND ( a.alarm_threshold LIKE '%52%' OR a.alarm_threshold LIKE '%53%' )
<if test="deviceName != null and deviceName != ''">and b.device_name = #{deviceName}</if>
<if test="patrolPointName != null and patrolPointName != ''">and a.patrol_point_name = #{patrolPointName}</if>
<if test="patrolPointName != null and patrolPointName != ''">and a.patrol_point_name like concat('%',
#{patrolPointName}, '%')</if>
<if test="algSubtypeIds != null and algSubtypeIds != ''">
AND a.alg_subtype_ids REGEXP CONCAT('(^|,)(', REPLACE(#{algSubtypeIds}, ',', '|'), ')(,|$)')
</if>
ORDER BY
update_time DESC,
a.device_id
</select>


+ 45
- 0
inspect-metadata/src/main/resources/mapper/patrolpointmnt/BasedataPatrolPointMapper.xml View File

@ -198,6 +198,51 @@
</foreach>
</select>
<select id="selectBasedataPatrolPointWithPresetRelationListByDeviceIds" parameterType="java.util.List"
resultMap="BasedataPatrolPointResult">
select
distinct bp.patrol_point_id,
bp.patrol_point_code,
bp.patrol_point_name,
bp.device_type_id,
bp.main_device_id,
bp.relation_main_device_id,
bp.device_id,
bp.relation_device_id,
bp.area_id,
bp.relation_area_id,
bp.patrol_content,
bp.purpose,
bp.create_by,
bp.create_time,
bp.update_by,
bp.update_time,
bp.delete_flag,
bp.std_parol_point_id,
bp.point_impt_level,
bp.patrol_type_id,
bp.lower_value,
bp.upper_value,
bp.position_x,
bp.position_y,
bp.position_z,
bp.alg_subtype_ids,
bp.original_alg_subtype_ids,
bp.original_device_id,
bp.dis_ref_picture_path,
bp.original_main_device_id,
bp.alarm_threshold,
bp.meter_type
from basedata_patrolpoint bp
left join basedata_patrolpoint_preset bpp on bp.patrol_point_id = bpp.patrol_point_id
left join patrol_preset_pos ppp on bp.patrol_point_id = ppp.patrol_point_id
WHERE relation_device_id IN
<foreach item="item" collection="deviceIds" open="(" separator="," close=")">
#{item}
</foreach>
and (bpp.patrol_point_id is not null or ppp.patrol_point_id is not null)
</select>
<select id="selectBasedataMonitorList" parameterType="BasedataPatrolPoint" resultMap="BasedataPatrolPointResult">
-- select a.patrol_point_id, a.patrol_point_code,a.area_id, a.patrol_point_name, a.main_device_id, a.device_id,
-- left join basedata_stdpatrol_point b on a.std_parol_point_id = b.std_patrol_point_id


Loading…
Cancel
Save