新增算法分析调用逻辑
This commit is contained in:
		
							parent
							
								
									14e10b9a59
								
							
						
					
					
						commit
						548f66b281
					
				@ -1,10 +1,8 @@
 | 
			
		||||
package com.yfd.platform.modules.algorithm.controller;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import cn.hutool.json.JSONObject;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.alibaba.fastjson.JSONObject;
 | 
			
		||||
import com.yfd.platform.config.ResponseResult;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.domain.AlgorithmClass;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.domain.AlgorithmParams;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.service.IAlgorithmParamsService;
 | 
			
		||||
import io.swagger.annotations.Api;
 | 
			
		||||
@ -94,8 +92,8 @@ public class AlgorithmParamsController {
 | 
			
		||||
    @PostMapping("/callAlgorithmAnalyse")
 | 
			
		||||
    @ApiOperation("调用算法分析")
 | 
			
		||||
    public ResponseResult callAlgorithmAnalyse(String id,String componentId) {
 | 
			
		||||
        if (StrUtil.isBlank(id)) {
 | 
			
		||||
            return ResponseResult.error("算法分类id为空");
 | 
			
		||||
        if (StrUtil.isBlank(id)|| StrUtil.isBlank(componentId)) {
 | 
			
		||||
            return ResponseResult.error("算法参数为空");
 | 
			
		||||
        }
 | 
			
		||||
        JSONObject data = algorithmParamsService.callAlgorithmAnalyse(id, componentId);
 | 
			
		||||
        return ResponseResult.successData(data);
 | 
			
		||||
 | 
			
		||||
@ -19,4 +19,7 @@ public interface AlgorithmParamsMapper extends BaseMapper<AlgorithmParams> {
 | 
			
		||||
    List<Map<String, Object>> getAlgorithmParamsList(String algorithmId,String componentId);
 | 
			
		||||
 | 
			
		||||
    List<Map<String, Object>> getAlgorithmParamsNameList(String algorithmId,String componentId);
 | 
			
		||||
 | 
			
		||||
    List<Map<String, String>> getAnalyseParams(String id, String componentId);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,8 @@
 | 
			
		||||
package com.yfd.platform.modules.algorithm.service;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.json.JSONObject;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.domain.AlgorithmParams;
 | 
			
		||||
import com.alibaba.fastjson.JSONObject;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.IService;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.domain.AlgorithmParams;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@ -1,14 +1,17 @@
 | 
			
		||||
package com.yfd.platform.modules.algorithm.service.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.json.JSONObject;
 | 
			
		||||
import com.alibaba.fastjson.JSONObject;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.domain.AlgorithmClass;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.domain.AlgorithmParams;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.mapper.AlgorithmDeviceMapper;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.mapper.AlgorithmClassMapper;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.mapper.AlgorithmParamsMapper;
 | 
			
		||||
import com.yfd.platform.modules.algorithm.service.IAlgorithmParamsService;
 | 
			
		||||
import com.yfd.platform.utils.HttpRESTfulUtils;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
 | 
			
		||||
@ -26,7 +29,9 @@ public class AlgorithmParamsServiceImpl extends ServiceImpl<AlgorithmParamsMappe
 | 
			
		||||
    @Resource
 | 
			
		||||
    private AlgorithmParamsMapper algorithmParamsMapper;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private AlgorithmDeviceMapper algorithmDeviceMapper;
 | 
			
		||||
    private AlgorithmClassMapper algorithmClassMapper;
 | 
			
		||||
    @Resource
 | 
			
		||||
    private HttpRESTfulUtils httpRESTfulUtils;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Map<String, Object>> getAlgorithmParamsList(String algorithmId, String componentId) {
 | 
			
		||||
@ -60,7 +65,24 @@ public class AlgorithmParamsServiceImpl extends ServiceImpl<AlgorithmParamsMappe
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public JSONObject callAlgorithmAnalyse(String id, String componentId) {
 | 
			
		||||
 | 
			
		||||
        AlgorithmClass algorithmClass = algorithmClassMapper.selectById(id);
 | 
			
		||||
        if (algorithmClass == null) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        // 固定参数就是固定参数,点位数据是默认最新点位,信号也是找最新数据
 | 
			
		||||
        List<Map<String, String>> mapList = algorithmParamsMapper.getAnalyseParams(id, componentId);
 | 
			
		||||
        if (mapList.size() <= 0) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, Object> senData = new HashMap<>();
 | 
			
		||||
        for (Map<String, String> map : mapList) {
 | 
			
		||||
            senData.put(map.get("paramName"), map.get("paramValue"));
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, Object> param = new HashMap<>();
 | 
			
		||||
        param.put("param", senData);
 | 
			
		||||
        JSONObject jsonObject = httpRESTfulUtils.sendHttpUrlPost("json",
 | 
			
		||||
                algorithmClass.getServiceAddress(), "", param, null);
 | 
			
		||||
        jsonObject.put("mapList", mapList);
 | 
			
		||||
        return jsonObject;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -49,12 +49,12 @@ public class DeviceSignalController {
 | 
			
		||||
     ***********************************/
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    @ApiOperation("分页查询变电站辅控设备信号")
 | 
			
		||||
    public ResponseResult getDeviceSignalPage(String mainDeviceId, String mainComponentId, String signalName, Page<DeviceSignal> page) {
 | 
			
		||||
    public ResponseResult getDeviceSignalPage(String systemcode,String meterDeviceId,String mainDeviceId, String mainComponentId, String signalName, Page<DeviceSignal> page) {
 | 
			
		||||
        //参数校验  辅控设备ID不能为空
 | 
			
		||||
        if (StrUtil.isBlank(mainComponentId)) {
 | 
			
		||||
            return ResponseResult.error("参数为空");
 | 
			
		||||
        }
 | 
			
		||||
        Page<DeviceSignal> deviceSignalPage = deviceSignalService.getDeviceSignalPage(mainDeviceId,mainComponentId, signalName, page);
 | 
			
		||||
        Page<DeviceSignal> deviceSignalPage = deviceSignalService.getDeviceSignalPage(systemcode,meterDeviceId,mainDeviceId,mainComponentId, signalName, page);
 | 
			
		||||
        return ResponseResult.successData(deviceSignalPage);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -52,7 +52,7 @@ public interface IDeviceSignalService extends IService<DeviceSignal> {
 | 
			
		||||
    * 参数说明 page
 | 
			
		||||
    * 返回值说明: com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.yfd.platform.modules.auxcontrol.domain.DeviceSignal>
 | 
			
		||||
    ***********************************/
 | 
			
		||||
    Page<DeviceSignal> getDeviceSignalPage(String mainDeviceId, String componentId, String signalName, Page<DeviceSignal> page);
 | 
			
		||||
    Page<DeviceSignal> getDeviceSignalPage(String systemcode,String meterDeviceId,String mainDeviceId, String componentId, String signalName, Page<DeviceSignal> page);
 | 
			
		||||
 | 
			
		||||
    /**********************************
 | 
			
		||||
     * 用途说明: 获取信号集合
 | 
			
		||||
 | 
			
		||||
@ -161,9 +161,16 @@ public class DeviceSignalServiceImpl extends ServiceImpl<DeviceSignalMapper, Dev
 | 
			
		||||
     * .DeviceSignal>
 | 
			
		||||
     ***********************************/
 | 
			
		||||
    @Override
 | 
			
		||||
    public Page<DeviceSignal> getDeviceSignalPage(String mainDeviceId, String componentId, String signalName,
 | 
			
		||||
    public Page<DeviceSignal> getDeviceSignalPage(String systemcode,String meterDeviceId,String mainDeviceId, String componentId, String signalName,
 | 
			
		||||
                                                  Page<DeviceSignal> page) {
 | 
			
		||||
        LambdaQueryWrapper<DeviceSignal> queryWrapper = new LambdaQueryWrapper<>();
 | 
			
		||||
        if (StrUtil.isNotBlank(systemcode)) {
 | 
			
		||||
            //查询条件拼接模糊
 | 
			
		||||
            queryWrapper.like(DeviceSignal::getSystemcode, systemcode);
 | 
			
		||||
        }
 | 
			
		||||
        if (StrUtil.isNotBlank(meterDeviceId)) {
 | 
			
		||||
            queryWrapper.eq(DeviceSignal::getMeterDeviceId, meterDeviceId);
 | 
			
		||||
        }
 | 
			
		||||
        //如果信号名称signalName不为空 模糊搜索
 | 
			
		||||
        if (StrUtil.isNotBlank(signalName)) {
 | 
			
		||||
            //查询条件拼接模糊
 | 
			
		||||
 | 
			
		||||
@ -266,6 +266,102 @@ public class HttpRESTfulUtils {
 | 
			
		||||
        return responseJSON;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public JSONObject sendHttpUrlPost(String posttype,String url,  String secret, Map<String, Object> param, RequestCallback callback) {
 | 
			
		||||
        OkHttpClient client = getClient();
 | 
			
		||||
        JSONObject responseJSON = new JSONObject();
 | 
			
		||||
        //-2自定义流媒体 调用错误码
 | 
			
		||||
        responseJSON.put("code", -2);
 | 
			
		||||
        responseJSON.put("msg", "http请求调用失败!");
 | 
			
		||||
 | 
			
		||||
        RequestBody body = null;
 | 
			
		||||
        if (posttype.equals("json")) {
 | 
			
		||||
            body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), JSON.toJSONString(param));
 | 
			
		||||
        } else {
 | 
			
		||||
            FormBody.Builder builder = new FormBody.Builder();
 | 
			
		||||
            builder.add("secret", secret);
 | 
			
		||||
            if (param != null && param.keySet().size() > 0) {
 | 
			
		||||
                for (String key : param.keySet()) {
 | 
			
		||||
                    if (param.get(key) != null) {
 | 
			
		||||
                        builder.add(key, param.get(key).toString());
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            body = builder.build();
 | 
			
		||||
        }
 | 
			
		||||
        Request request = new Request.Builder()
 | 
			
		||||
                .post(body)
 | 
			
		||||
                .url(url)
 | 
			
		||||
                .build();
 | 
			
		||||
        if (callback == null) {
 | 
			
		||||
            try {
 | 
			
		||||
                Response response = client.newCall(request).execute();
 | 
			
		||||
                if (response.isSuccessful()) {
 | 
			
		||||
                    ResponseBody responseBody = response.body();
 | 
			
		||||
                    if (responseBody != null) {
 | 
			
		||||
                        String responseStr = responseBody.string();
 | 
			
		||||
                        responseJSON = JSON.parseObject(responseStr);
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    response.close();
 | 
			
		||||
                    Objects.requireNonNull(response.body()).close();
 | 
			
		||||
                }
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
 | 
			
		||||
                //throw new RuntimeException(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
 | 
			
		||||
                if (e instanceof SocketTimeoutException) {
 | 
			
		||||
                    //读取超时超时异常
 | 
			
		||||
                    //logger.error(String.format("读取Http服务器数据失败: %s, %s", url, e.getMessage()));
 | 
			
		||||
                    throw new RuntimeException(String.format("读取Http服务器数据失败: %s, %s", url, e.getMessage()));
 | 
			
		||||
                }
 | 
			
		||||
                if (e instanceof ConnectException) {
 | 
			
		||||
                    //判断连接异常,我这里是报Failed to connect to 10.7.5.144
 | 
			
		||||
                    logger.error(String.format("连接Http服务器失败: %s, %s", url, e.getMessage()));
 | 
			
		||||
                    throw new RuntimeException(String.format("连接Http服务器失败: %s, %s", url, e.getMessage()));
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                logger.error(String.format("访问Http服务器失败: %s, %s", url, e.getMessage()));
 | 
			
		||||
                throw new RuntimeException(String.format("访问Http服务器失败: %s, %s", url, e.getMessage()));
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            client.newCall(request).enqueue(new Callback() {
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void onResponse(@NotNull Call call, @NotNull Response response) {
 | 
			
		||||
                    if (response.isSuccessful()) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            String responseStr = Objects.requireNonNull(response.body()).string();
 | 
			
		||||
                            callback.run(JSON.parseObject(responseStr));
 | 
			
		||||
                        } catch (IOException e) {
 | 
			
		||||
                            logger.error(String.format("[ %s ]请求失败: %s", url, e.getMessage()));
 | 
			
		||||
                        }
 | 
			
		||||
 | 
			
		||||
                    } else {
 | 
			
		||||
                        response.close();
 | 
			
		||||
                        Objects.requireNonNull(response.body()).close();
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                @Override
 | 
			
		||||
                public void onFailure(@NotNull Call call, @NotNull IOException e) {
 | 
			
		||||
                    logger.error(String.format("连接Http服务器失败: %s, %s", call.request().toString(), e.getMessage()));
 | 
			
		||||
 | 
			
		||||
                    if (e instanceof SocketTimeoutException) {
 | 
			
		||||
                        //读取超时超时异常
 | 
			
		||||
                        logger.error(String.format("读取Http服务器数据失败: %s, %s", call.request().toString(), e.getMessage()));
 | 
			
		||||
                    }
 | 
			
		||||
                    if (e instanceof ConnectException) {
 | 
			
		||||
                        //判断连接异常,我这里是报Failed to connect to 10.7.5.144
 | 
			
		||||
                        logger.error(String.format("连接Http服务器失败: %s, %s", call.request().toString(), e.getMessage()));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return responseJSON;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public JSONObject sendHttpPostStr(String ip, String port, String api, Map<String, Object> param, RequestCallback callback) {
 | 
			
		||||
        OkHttpClient client = getClient();
 | 
			
		||||
        String url = String.format("http://%s:%s/%s", ip, port, api);
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,8 @@
 | 
			
		||||
        ad.source_type,
 | 
			
		||||
        ad.device_id,
 | 
			
		||||
        ad.device_name,
 | 
			
		||||
        ap.id
 | 
			
		||||
        ap.id paramId,
 | 
			
		||||
        ad.id
 | 
			
		||||
        FROM
 | 
			
		||||
        iis_algorithm_params ap
 | 
			
		||||
        LEFT JOIN iis_algorithm_device ad
 | 
			
		||||
@ -50,4 +51,43 @@
 | 
			
		||||
            AND ap.algorithm_id = #{algorithmId}
 | 
			
		||||
        </if>
 | 
			
		||||
    </select>
 | 
			
		||||
    <select id="getAnalyseParams" resultType="java.util.Map">
 | 
			
		||||
    SELECT
 | 
			
		||||
    ap.id paramId,
 | 
			
		||||
		ad.device_id,
 | 
			
		||||
    ap.param_unit,
 | 
			
		||||
    ap.param_name,
 | 
			
		||||
    CASE
 | 
			
		||||
        WHEN ap.param_fixed = '1' THEN ad.param_value
 | 
			
		||||
        ELSE
 | 
			
		||||
            CASE ad.source_type
 | 
			
		||||
                WHEN '1' THEN (
 | 
			
		||||
                    SELECT tr.value
 | 
			
		||||
                    FROM iis_task_result tr
 | 
			
		||||
                    WHERE tr.device_id = ad.device_id
 | 
			
		||||
                    ORDER BY tr.patroldevice_date DESC
 | 
			
		||||
                    LIMIT 1
 | 
			
		||||
                )
 | 
			
		||||
                WHEN '2' THEN (
 | 
			
		||||
                    SELECT dwd.value
 | 
			
		||||
                    FROM fk_device_work_data dwd
 | 
			
		||||
                    WHERE dwd.signal_id = ad.device_id
 | 
			
		||||
										ORDER BY dwd.start_time DESC
 | 
			
		||||
                    LIMIT 1
 | 
			
		||||
                )
 | 
			
		||||
                ELSE NULL
 | 
			
		||||
            END
 | 
			
		||||
    END AS param_value,
 | 
			
		||||
    ap.algorithm_id,
 | 
			
		||||
    ad.component_id,
 | 
			
		||||
    ap.param_fixed
 | 
			
		||||
FROM
 | 
			
		||||
    iis_algorithm_params ap
 | 
			
		||||
LEFT JOIN iis_algorithm_device ad
 | 
			
		||||
    ON ap.id = ad.param_id
 | 
			
		||||
    AND ad.component_id = #{componentId}
 | 
			
		||||
WHERE
 | 
			
		||||
 | 
			
		||||
     ap.algorithm_id = #{id};
 | 
			
		||||
    </select>
 | 
			
		||||
</mapper>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user