feat(auxcontrol):新增智能控制逻辑

新增了智能控制设备数量统计和智能设备查询
This commit is contained in:
weitang 2025-06-10 16:07:56 +08:00
parent 11f67db5e4
commit 659d162c11
7 changed files with 93 additions and 23 deletions

View File

@ -78,11 +78,18 @@ public class DeviceSignalController {
***********************************/ ***********************************/
@GetMapping("/queryYxData") @GetMapping("/queryYxData")
@ApiOperation("查询遥信数据") @ApiOperation("查询遥信数据")
public ResponseResult queryYxData(Page<Map<String, Object>> page, String areaId, String type) { public ResponseResult queryYxData(Page<Map<String, Object>> page, String areaId, String type,String stationId) {
Page<Map<String, Object>> mapPage = deviceSignalService.queryYxData(page, areaId, type); Page<Map<String, Object>> mapPage = deviceSignalService.queryYxData(page, areaId, type,stationId);
return ResponseResult.successData(mapPage); return ResponseResult.successData(mapPage);
} }
@GetMapping("/countDeviceTypeStatus")
@ApiOperation("查询遥信数据统计")
public ResponseResult countDeviceTypeStatus(String areaId, String type,String stationId) {
List<Map<String, Object>> mapList = deviceSignalService.countDeviceTypeStatus(areaId, type,stationId);
return ResponseResult.successData(mapList);
}
/********************************** /**********************************
* 用途说明: 查询信号信息 * 用途说明: 查询信号信息
* 参数说明 * 参数说明

View File

@ -19,16 +19,24 @@ import java.util.Map;
public interface DeviceSignalMapper extends BaseMapper<DeviceSignal> { public interface DeviceSignalMapper extends BaseMapper<DeviceSignal> {
DeviceSignal selectOneDeviceSignal(String slaveIp, String type, String address); DeviceSignal selectOneDeviceSignal(String slaveIp, String type, String address);
Map<String, Object> selectDeviceSignalMap(String slaveIp, String type, String address); Map<String, Object> selectDeviceSignalMap(String slaveIp, String type, String address);
List<Map<String, Object>> getDeviceSignalMaps(String stationCode, String signalName); List<Map<String, Object>> getDeviceSignalMaps(String stationCode, String signalName);
List<DeviceSignal> selectDeviceSignalByIp(String ip); List<DeviceSignal> selectDeviceSignalByIp(String ip);
@Update("UPDATE fk_device_signal SET yc_value = #{value}, lastmodifydate = #{datetime} WHERE yc_addr = #{node_addr}")
@Update("UPDATE fk_device_signal SET yc_value = #{value}, lastmodifydate = #{datetime} WHERE yc_addr = " +
"#{node_addr}")
boolean updateDeviceSignalValue_yc(String node_addr, String value, String datetime); boolean updateDeviceSignalValue_yc(String node_addr, String value, String datetime);
@Update("UPDATE fk_device_signal SET yx_value = #{value}, lastmodifydate = #{datetime} WHERE yx_addr = #{node_addr}")
@Update("UPDATE fk_device_signal SET yx_value = #{value}, lastmodifydate = #{datetime} WHERE yx_addr = " +
"#{node_addr}")
boolean updateDeviceSignalValue_yx(String node_addr, String value, String datetime); boolean updateDeviceSignalValue_yx(String node_addr, String value, String datetime);
Map<String, Object> querySignalDataById(String signalId); Map<String, Object> querySignalDataById(String signalId);
Page<Map<String, Object>> queryYxData(Page<Map<String, Object>> page, String areaId, String type); Page<Map<String, Object>> queryYxData(Page<Map<String, Object>> page, String areaId, String type, String stationId);
List<Map<String, Object>> countDeviceTypeStatus(String areaId, String type, String stationId);
} }

View File

@ -69,5 +69,8 @@ public interface IDeviceSignalService extends IService<DeviceSignal> {
***********************************/ ***********************************/
Map<String, Object> querySignalDataById(String signalId); Map<String, Object> querySignalDataById(String signalId);
Page<Map<String, Object>> queryYxData(Page<Map<String, Object>> page, String areaId, String type); Page<Map<String, Object>> queryYxData(Page<Map<String, Object>> page, String areaId, String type,String stationId);
List<Map<String, Object>> countDeviceTypeStatus(String areaId, String type, String stationId);
} }

View File

@ -20,6 +20,7 @@ import javax.annotation.Resource;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -161,7 +162,8 @@ public class DeviceSignalServiceImpl extends ServiceImpl<DeviceSignalMapper, Dev
* .DeviceSignal> * .DeviceSignal>
***********************************/ ***********************************/
@Override @Override
public Page<DeviceSignal> getDeviceSignalPage(String systemcode,String meterDeviceId,String mainDeviceId, String componentId, String signalName, public Page<DeviceSignal> getDeviceSignalPage(String systemcode, String meterDeviceId, String mainDeviceId,
String componentId, String signalName,
Page<DeviceSignal> page) { Page<DeviceSignal> page) {
LambdaQueryWrapper<DeviceSignal> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DeviceSignal> queryWrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(systemcode)) { if (StrUtil.isNotBlank(systemcode)) {
@ -210,7 +212,13 @@ public class DeviceSignalServiceImpl extends ServiceImpl<DeviceSignalMapper, Dev
} }
@Override @Override
public Page<Map<String, Object>> queryYxData(Page<Map<String, Object>> page, String areaId, String type) { public Page<Map<String, Object>> queryYxData(Page<Map<String, Object>> page, String areaId, String type,
return deviceSignalMapper.queryYxData(page, areaId, type); String stationId) {
return deviceSignalMapper.queryYxData(page, areaId, type, stationId);
}
@Override
public List<Map<String, Object>> countDeviceTypeStatus(String areaId, String type, String stationId) {
return deviceSignalMapper.countDeviceTypeStatus(areaId, type, stationId);
} }
} }

View File

@ -115,9 +115,11 @@ public class SubstationMaindeviceController {
} }
LambdaQueryWrapper<SubstationMaindevice> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SubstationMaindevice> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StrUtil.isNotBlank(stationCode), SubstationMaindevice::getStationCode, stationCode); queryWrapper.eq(StrUtil.isNotBlank(stationCode), SubstationMaindevice::getStationCode, stationCode);
queryWrapper.in(StrUtil.isNotBlank(deviceTypeList), SubstationMaindevice::getDeviceType, StrUtil.split(deviceTypeList queryWrapper.in(StrUtil.isNotBlank(deviceTypeList), SubstationMaindevice::getDeviceType,
StrUtil.split(deviceTypeList
, ",")); , ","));
queryWrapper.select(SubstationMaindevice::getMainDeviceId,SubstationMaindevice::getAreaId,SubstationMaindevice::getAreaName, SubstationMaindevice::getMainDeviceName, queryWrapper.select(SubstationMaindevice::getMainDeviceId, SubstationMaindevice::getAreaId,
SubstationMaindevice::getAreaName, SubstationMaindevice::getMainDeviceName,
SubstationMaindevice::getDeviceType, SubstationMaindevice::getFileUrl); SubstationMaindevice::getDeviceType, SubstationMaindevice::getFileUrl);
queryWrapper.eq(SubstationMaindevice::getDatastatus, "1"); queryWrapper.eq(SubstationMaindevice::getDatastatus, "1");
List<Map<String, Object>> maps = substationMaindeviceService.listMaps(queryWrapper); List<Map<String, Object>> maps = substationMaindeviceService.listMaps(queryWrapper);
@ -321,11 +323,15 @@ public class SubstationMaindeviceController {
if (count > 0) { if (count > 0) {
return ResponseResult.error("当前间隔下已经存在该主设备"); return ResponseResult.error("当前间隔下已经存在该主设备");
} }
if (StrUtil.isNotBlank(mainDeviceId) && StrUtil.isNotBlank(mainDeviceName)) {
int count2 = int count2 =
substationDeviceService.count(new LambdaQueryWrapper<SubstationDevice>().eq(SubstationDevice::getMainDeviceId, mainDeviceId)); substationDeviceService.count(new LambdaQueryWrapper<SubstationDevice>().eq
if (count2 > 0) { (SubstationDevice::getMainDeviceId, mainDeviceId).ne(SubstationDevice::getMainDeviceName,mainDeviceName));
return ResponseResult.error("当前主设备有点位关联不能修改"); if (count2 > 0 && file == null) {
return ResponseResult.error("当前主设备有点位关联不能修改名称");
} }
}
substationMaindevice.setLastmodifier(SecurityUtils.getCurrentUsername()); substationMaindevice.setLastmodifier(SecurityUtils.getCurrentUsername());
substationMaindevice.setLastmodifydate(LocalDateTime.now()); substationMaindevice.setLastmodifydate(LocalDateTime.now());
// 文件上传逻辑 // 文件上传逻辑

View File

@ -22,7 +22,14 @@
</select> </select>
<select id="getMainDeviceInfo" resultType="java.util.Map"> <select id="getMainDeviceInfo" resultType="java.util.Map">
SELECT SELECT
sm.* sm.main_device_id,
sm.device_type,
sm.main_device_name,
sm.area_name,
sm.patroldevice_json,
sm.file_url,
sm.factory_lifespan,
sm.run_time
FROM FROM
`iis_substation_component` sc `iis_substation_component` sc
INNER JOIN iis_substation_maindevice sm ON sc.main_device_id = sm.main_device_id INNER JOIN iis_substation_maindevice sm ON sc.main_device_id = sm.main_device_id

View File

@ -134,14 +134,20 @@
ds.signal_name, ds.signal_name,
ds.signal_code, ds.signal_code,
ds.yx_addr, ds.yx_addr,
ds.yx_value ds.yx_value,
md.`status`
FROM FROM
fk_device_signal ds fk_device_signal ds
INNER JOIN fk_meter_device md ON ds.meter_device_id = md.device_id INNER JOIN fk_meter_device md ON ds.meter_device_id = md.device_id
WHERE WHERE
ds.yx_addr IS NOT NULL ds.yx_addr IS NOT NULL
AND ds.yx_addr != '' AND ds.yx_addr != ''
<if test="stationId != null and stationId != ''">
AND md.station_id = #{stationId}
</if>
<if test="areaId != null and areaId != ''">
AND md.region = #{areaId} AND md.region = #{areaId}
</if>
<if test="type != null and type != ''"> <if test="type != null and type != ''">
AND md.device_type = #{type} AND md.device_type = #{type}
</if> </if>
@ -150,4 +156,29 @@
ds.signal_code ds.signal_code
</select> </select>
<select id="countDeviceTypeStatus" resultType="java.util.Map">
SELECT
md.device_type,
COUNT(*) AS total,
SUM(CASE WHEN md.`status` = '01' THEN 1 ELSE 0 END) AS online_count
FROM
fk_device_signal ds
INNER JOIN fk_meter_device md ON ds.meter_device_id = md.device_id
WHERE
ds.yx_addr IS NOT NULL
AND ds.yx_addr != ''
<if test="stationId != null and stationId != ''">
AND md.station_id = #{stationId}
</if>
<if test="areaId != null and areaId != ''">
AND md.region = #{areaId}
</if>
<if test="type != null and type != ''">
AND md.device_type = #{type}
</if>
GROUP BY
md.device_type
ORDER BY
md.device_type
</select>
</mapper> </mapper>