package com.gyee.impala.controller.diagnose; import com.alibaba.fastjson.JSONObject; import com.gyee.impala.common.result.JsonResult; import com.gyee.impala.common.result.ResultCode; import com.gyee.impala.common.util.DateUtil; import com.gyee.impala.model.custom.diagnose.DataInfo; import com.gyee.impala.model.custom.diagnose.ExecuteInfo; import com.gyee.impala.model.master.Casefault; import com.gyee.impala.model.master.diagnose.Diagnosepoint; import com.gyee.impala.service.custom.diagnose.DataPointService; import com.gyee.impala.service.master.CasefaultService; import com.gyee.impala.service.master.diagnose.TrainDataModeService; import org.apache.kudu.client.ListTablesResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; /** * 数据源方式训练模型 */ @CrossOrigin @RestController @RequestMapping("/api/traindatamode") public class TrainDataModeController { @Autowired private DataPointService dataService; @Autowired private CasefaultService casefaultService; @Autowired TrainDataModeService trainDataModeService; /** * 查询数据库的表 * @return */ @GetMapping("/tables") public JSONObject getListTables(){ List<Map<String, String>> list = new ArrayList<>(); try { List<ListTablesResponse.TableInfo> tables = trainDataModeService.getListTables(); tables.stream().filter(a -> a.getTableName().equals("impala::gyee_sample_kudu.casefault")).forEach(obj -> { Map<String, String> map = new HashMap<>(); String name = obj.getTableName().substring(obj.getTableName().lastIndexOf(".") + 1); map.put("tableId", obj.getTableId()); map.put("tableName", name); list.add(map); }); } catch (Exception e) { e.getMessage(); } return JsonResult.successData(ResultCode.SUCCESS,list); } /** * 查询数据库表的列 * @param table * @return */ @GetMapping("/columns") public JSONObject getColumns(String table){ Object columns = null; try { columns = trainDataModeService.getColumns(table); } catch (Exception e) { e.getMessage(); } return JsonResult.successData(ResultCode.SUCCESS, columns); } /** 查询样本原始数据 **/ @GetMapping("/data") public JSONObject getData(String sql){ List<Casefault> list = casefaultService.executeSql(sql); return JsonResult.successData(ResultCode.SUCCESS, list); } /** 开始训练 查询 golden 所有原始数据 * flag ture: 所有数据 * flag false: 前10条数据 * **/ @PostMapping("/pointdata") public JSONObject getPointData(@RequestBody JSONObject json){ if (json == null) return JsonResult.error(ResultCode.PARAM_IS_BLANK); json = json.getJSONObject("params"); boolean flag = json.getBooleanValue("flag"); List<Diagnosepoint> points = JSONObject.parseArray(json.getJSONArray("points").toString(), Diagnosepoint.class); List<Casefault> faults = JSONObject.parseArray(json.getJSONArray("faults").toString(), Casefault.class); Map<String, Object> map = new HashMap<>(); /** 组装数据 删除添加的故障类型**/ dataService.formatUniformcode(points.stream().filter(a -> !a.getUniformcode().equals("faulttype")).collect(Collectors.toList())); ExecuteInfo executeInfo = new ExecuteInfo(); Calendar cal = Calendar.getInstance(); DataInfo[] dataInfos = new DataInfo[faults.size()]; for (int i = 0; i < faults.size(); i++){ DataInfo data = new DataInfo(); data.setId(Long.valueOf(faults.get(i).getId())); data.setStationId(faults.get(i).getStationen()); data.setThingId(faults.get(i).getWindturbineid()); data.setModelId(faults.get(i).getModel()); data.setTag(faults.get(i).getFaultcode()); data.setFaultTime(faults.get(i).getStarttime()); data.setStartTs(DateUtil.covertDateTimestamp(faults.get(i).getStarttime()).toString()); if (flag){ data.setEndTs(DateUtil.covertDateTimestamp(faults.get(i).getEndtime()).toString()); }else{ //查看前10条数据时结束时间往后推10s cal.setTime(DateUtil.parseStrtoDate(faults.get(i).getStarttime(), DateUtil.DATE_TIME_PATTERN)); cal.add(Calendar.SECOND, 10); data.setEndTs(cal.getTimeInMillis() + ""); } dataInfos[i] = data; } executeInfo.setDataInfos(dataInfos); if (flag){ String file = dataService.getFormDataAll(executeInfo); map.put("info", executeInfo); map.put("filename", file); return JsonResult.successData(ResultCode.SUCCESS, map); }else { Map<String, Object> mp = dataService.getFormData(executeInfo); return JsonResult.successData(ResultCode.SUCCESS, mp); } } }