package com.zhgd.xmgl.task; import cn.hutool.core.date.DateUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachine; import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineAlarm; import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineCurrentData; import com.zhgd.xmgl.modules.bigdevice.entity.TunnelBoringMachineStat; import com.zhgd.xmgl.modules.bigdevice.mapper.TunnelBoringMachineAlarmMapper; import com.zhgd.xmgl.modules.bigdevice.mapper.TunnelBoringMachineCurrentDataMapper; import com.zhgd.xmgl.modules.bigdevice.mapper.TunnelBoringMachineMapper; import com.zhgd.xmgl.modules.bigdevice.service.ITunnelBoringMachineStatService; import com.zhgd.xmgl.modules.poisonous.entity.PoisonousGasDevAlarm; import com.zhgd.xmgl.modules.poisonous.entity.PoisonousGasDevCurrentData; import com.zhgd.xmgl.modules.poisonous.mapper.PoisonousGasDevAlarmMapper; import com.zhgd.xmgl.modules.poisonous.mapper.PoisonousGasDevCurrentDataMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.*; import java.util.concurrent.CompletableFuture; /** * @program: wisdomSite * @description: 盾构机 实时数据 每日环数 * @author: Mr.Peng * @create: 2021-07-12 13:41 **/ @Slf4j @Component @RestController @RequestMapping(("/xmgl/task")) public class TunnelBoringMachineTask { @Autowired private TunnelBoringMachineMapper tunnelBoringMachineMapper; @Autowired private TunnelBoringMachineCurrentDataMapper tunnelBoringMachineCurrentDataMapper; @Autowired private ITunnelBoringMachineStatService tunnelBoringMachineStatService; @Autowired private PoisonousGasDevCurrentDataMapper poisonousGasDevCurrentDataMapper; @Autowired private TunnelBoringMachineAlarmMapper tunnelBoringMachineAlarmMapper; @Autowired private PoisonousGasDevAlarmMapper poisonousGasDevAlarmMapper; // @Scheduled(cron = "0 50 23 * * ?") @RequestMapping("getTunnelBoringMachineStat") public void getTunnelBoringMachineStat() { log.info("获取盾构机今日环数开始任务"); // 获取设备列表 List devList = tunnelBoringMachineMapper.selectList(null); List list = new ArrayList<>(); for (TunnelBoringMachine tunnelBoringMachine : devList) { Map map = new HashMap<>(); map.put("projectSn", tunnelBoringMachine.getProjectSn()); map.put("deviceSn", tunnelBoringMachine.getDevSn()); TunnelBoringMachineCurrentData lastData = tunnelBoringMachineCurrentDataMapper.getLastData(map); TunnelBoringMachineCurrentData firstData = tunnelBoringMachineCurrentDataMapper.getFirstData(map); TunnelBoringMachineStat tunnelBoringMachineStat = new TunnelBoringMachineStat(); tunnelBoringMachineStat.setProjectSn(tunnelBoringMachine.getProjectSn()); tunnelBoringMachineStat.setDevSn(tunnelBoringMachine.getDevSn()); tunnelBoringMachineStat.setCreateTime(DateUtil.parseDate(DateUtil.formatDate(new Date()))); if (lastData == null || firstData == null) { tunnelBoringMachineStat.setNumber(0); } else { tunnelBoringMachineStat.setNumber(lastData.getCurrentNumber() - firstData.getCurrentNumber()); } list.add(tunnelBoringMachineStat); } tunnelBoringMachineStatService.saveBatch(list); } // @Scheduled(cron = "0/30 * * * * ?") @RequestMapping("getTunnelBoringMachineAlarm") public void getTunnelBoringMachineAlarm() { log.info("获取盾构机报警数据开始任务"); // 获取设备列表 List devList = tunnelBoringMachineMapper.selectList(null); devList.forEach(dev -> CompletableFuture.runAsync(() -> { doGetTunnelBoringMachineAlarm(dev); }).exceptionally(throwable -> { log.error("err", throwable); return null; }) ); } private void doGetTunnelBoringMachineAlarm(TunnelBoringMachine tunnelBoringMachine) { JSONObject body = new JSONObject(); body.put("secretKey", "Xvt875SvK8zz7F+3Lj0faInIyd800TK0wGXt5GcaL4JubaXuwmlLoMXKXj7M9A21FxNB12mqhGqZnzW8ZSZHxQ=="); body.put("tbmCode", tunnelBoringMachine.getDevSn()); body.put("name", "ysej"); String result = HttpRequest.post("https://trans.tbmcloud.com.cn/tbmcenter-trans/trans/alarm/ex/getCurrent") .body(JSON.toJSONString(body)) .timeout(2000) .execute() .body(); List list = Arrays.asList("螺机CH4", "螺机H2S", "螺机CO", "螺机CO2", "螺机NO2"); JSONObject jsonObject = JSONObject.parseObject(result); if (jsonObject != null || jsonObject.getInteger("code") == 200) { JSONArray data = jsonObject.getJSONArray("data"); for (int i = 0; i < data.size(); i++) { JSONObject obj = data.getJSONObject(i); String name = obj.getString("name"); if (list.contains(name)) { PoisonousGasDevAlarm devAlarm = new PoisonousGasDevAlarm(); devAlarm.setMonitorObject(tunnelBoringMachine.getDevName()); devAlarm.setAlarmDetail(tunnelBoringMachine.getDevName() + name + ",当前值为" + obj.getDouble("aramValue")); devAlarm.setDevSn(tunnelBoringMachine.getDevSn()); devAlarm.setAlarmTime(new Date(obj.getLong("timestamp"))); devAlarm.setProjectSn(tunnelBoringMachine.getProjectSn()); devAlarm.setGasVal(obj.getDouble("aramValue")); devAlarm.setUnit(2); String aramFlag = obj.getString("aramFlag"); if (aramFlag.equals("red ")) { devAlarm.setAlarmType(7); } else if (aramFlag.equals("yellow")) { devAlarm.setAlarmType(8); } else { devAlarm.setAlarmType(9); } poisonousGasDevAlarmMapper.insert(devAlarm); } else { TunnelBoringMachineAlarm tunnelBoringMachineAlarm = new TunnelBoringMachineAlarm(); tunnelBoringMachineAlarm.setAlarmType(name); tunnelBoringMachineAlarm.setDevSn(tunnelBoringMachine.getDevSn()); tunnelBoringMachineAlarm.setProjectSn(tunnelBoringMachine.getProjectSn()); tunnelBoringMachineAlarm.setType(obj.getString("aramFlag")); // tunnelBoringMachineAlarm.setExceed(exceed - alarmValue); tunnelBoringMachineAlarm.setAlarmValue(obj.getDouble("aramValue")); tunnelBoringMachineAlarm.setLine(tunnelBoringMachine.getLine()); tunnelBoringMachineAlarm.setAlarmTime(new Date(obj.getLong("timestamp"))); tunnelBoringMachineAlarmMapper.insert(tunnelBoringMachineAlarm); } } } } // @Scheduled(cron = "0/20 * * * * ?") @RequestMapping("getTunnelBoringMachineData") public void getTunnelBoringMachineData() { log.info("获取盾构机实时数据开始任务"); // 获取设备列表 List devList = tunnelBoringMachineMapper.selectList(null); devList.forEach(dev -> CompletableFuture.runAsync(() -> { doGetTunnelBoringMachineData(dev); }).exceptionally(throwable -> { log.error("err", throwable); return null; }) ); } private void doGetTunnelBoringMachineData(TunnelBoringMachine tunnelBoringMachine) { JSONObject body = new JSONObject(); body.put("secretKey", "Xvt875SvK8zz7F+3Lj0faInIyd800TK0wGXt5GcaL4JubaXuwmlLoMXKXj7M9A21FxNB12mqhGqZnzW8ZSZHxQ=="); body.put("tbmCode", tunnelBoringMachine.getDevSn()); body.put("name", "ysej"); String result = HttpRequest.post("https://trans.tbmcloud.com.cn/trans/transGetRealData/ex/getRealData") .body(JSON.toJSONString(body)) .timeout(2000) .execute() .body(); JSONObject jsonObject = JSONObject.parseObject(result); if (jsonObject != null || jsonObject.getInteger("code") == 200) { TunnelBoringMachineCurrentData tunnelBoringMachineCurrentData = new TunnelBoringMachineCurrentData(); PoisonousGasDevCurrentData poisonousGasDevCurrentData = new PoisonousGasDevCurrentData(); poisonousGasDevCurrentData.setDevSn(tunnelBoringMachine.getDevSn()); poisonousGasDevCurrentData.setProjectSn(tunnelBoringMachine.getProjectSn()); tunnelBoringMachineCurrentData.setDeviceSn(tunnelBoringMachine.getDevSn()); tunnelBoringMachineCurrentData.setProjectSn(tunnelBoringMachine.getProjectSn()); tunnelBoringMachineCurrentData.setLine(tunnelBoringMachine.getLine()); JSONArray values = jsonObject.getJSONObject("data").getJSONArray("values"); for (int i = 0; i < values.size(); i++) { JSONObject obj = values.getJSONObject(i); if (obj.getString("colName").equals("环号")) { tunnelBoringMachineCurrentData.setCurrentNumber(obj.getInteger("val")); tunnelBoringMachineCurrentData.setMileageCompleted(obj.getString("val")); // tunnelBoringMachineCurrentData.setGroutingStatus(); // tunnelBoringMachineCurrentData.setCommunicationStatus(); // tunnelBoringMachineCurrentData.setHingeStatus(); } if (obj.getString("colName").equals("正上土仓压力")) { tunnelBoringMachineCurrentData.setUpCabinPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("左中土仓压力")) { tunnelBoringMachineCurrentData.setLeftCenterCabinPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("左上土仓压力")) { tunnelBoringMachineCurrentData.setLeftUpCabinPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("左下土仓压力")) { tunnelBoringMachineCurrentData.setLeftBelowCabinPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("右下土仓压力")) { tunnelBoringMachineCurrentData.setRightBelowCabinPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("右中土仓压力")) { tunnelBoringMachineCurrentData.setRightCenterCabinPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("右上土仓压力")) { tunnelBoringMachineCurrentData.setRightUpCabinPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("前点偏差X")) { tunnelBoringMachineCurrentData.setCutterheadHorizontalDeviation(obj.getDouble("val")); } if (obj.getString("colName").equals("前点偏差Y")) { tunnelBoringMachineCurrentData.setCutterheadVerticalDeviation(obj.getDouble("val")); } if (obj.getString("colName").equals("后点偏差X")) { tunnelBoringMachineCurrentData.setShieldHorizontalDeviation(obj.getDouble("val")); } if (obj.getString("colName").equals("后点偏差Y")) { tunnelBoringMachineCurrentData.setShieldVerticalDeviation(obj.getDouble("val")); } if (obj.getString("colName").equals("贯入度")) { tunnelBoringMachineCurrentData.setPenetration(obj.getString("val")); } if (obj.getString("colName").equals("俯仰角")) { tunnelBoringMachineCurrentData.setPitchAngle(obj.getString("val")); } if (obj.getString("colName").equals("滚动角")) { tunnelBoringMachineCurrentData.setRollPosition(obj.getDouble("val")); } if (obj.getString("colName").equals("刀盘转速")) { tunnelBoringMachineCurrentData.setCutterheadSpeed(obj.getDouble("val")); } if (obj.getString("colName").equals("刀盘扭矩")) { tunnelBoringMachineCurrentData.setCutterheadTorque(obj.getDouble("val")); } if (obj.getString("colName").equals("垂直偏差趋向")) { tunnelBoringMachineCurrentData.setVerticalDeviation(obj.getString("val")); } if (obj.getString("colName").equals("水平偏差趋向")) { tunnelBoringMachineCurrentData.setHorizontalDeviation(obj.getString("val")); } if (obj.getString("colName").equals("推进泵压力")) { tunnelBoringMachineCurrentData.setTotalPropulsion(obj.getDouble("val")); } if (obj.getString("colName").equals("推进速度")) { tunnelBoringMachineCurrentData.setAdvanceSpeed(obj.getDouble("val")); } if (obj.getString("colName").equals("总推进力")) { tunnelBoringMachineCurrentData.setTotalThrust(obj.getDouble("val")); } if (obj.getString("colName").equals("导向推进油缸A组位移")) { tunnelBoringMachineCurrentData.setCylinderDisplacementA(obj.getString("val")); } if (obj.getString("colName").equals("导向推进油缸B组位移")) { tunnelBoringMachineCurrentData.setCylinderDisplacementB(obj.getString("val")); } if (obj.getString("colName").equals("导向推进油缸C组位移")) { tunnelBoringMachineCurrentData.setCylinderDisplacementC(obj.getString("val")); } if (obj.getString("colName").equals("导向推进油缸D组位移")) { tunnelBoringMachineCurrentData.setCylinderDisplacementD(obj.getString("val")); } if (obj.getString("colName").equals("导向推进油缸E组位移")) { tunnelBoringMachineCurrentData.setCylinderDisplacementE(obj.getString("val")); } if (obj.getString("colName").equals("导向推进油缸F组位移")) { tunnelBoringMachineCurrentData.setCylinderDisplacementF(obj.getString("val")); } if (obj.getString("colName").equals("A组压力")) { tunnelBoringMachineCurrentData.setCylinderPressureA(obj.getString("val")); } if (obj.getString("colName").equals("B组压力")) { tunnelBoringMachineCurrentData.setCylinderPressureB(obj.getString("val")); } if (obj.getString("colName").equals("C组压力")) { tunnelBoringMachineCurrentData.setCylinderPressureC(obj.getString("val")); } if (obj.getString("colName").equals("D组压力")) { tunnelBoringMachineCurrentData.setCylinderPressureD(obj.getString("val")); } if (obj.getString("colName").equals("E组压力")) { tunnelBoringMachineCurrentData.setCylinderPressureE(obj.getString("val")); } if (obj.getString("colName").equals("F组压力")) { tunnelBoringMachineCurrentData.setCylinderPressureF(obj.getString("val")); } if (obj.getString("colName").equals("左中注浆压力")) { tunnelBoringMachineCurrentData.setLeftCenterGroutingPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("左上注浆压力")) { tunnelBoringMachineCurrentData.setLeftUpGroutingPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("左下注浆压力")) { tunnelBoringMachineCurrentData.setLeftBelowGroutingPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("右下注浆压力")) { tunnelBoringMachineCurrentData.setRightBelowGroutingPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("右中注浆压力")) { tunnelBoringMachineCurrentData.setRightCenterGroutingPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("右上注浆压力")) { tunnelBoringMachineCurrentData.setRightUpGroutingPressure(obj.getDouble("val")); } if (obj.getString("colName").equals("螺机O2")) { poisonousGasDevCurrentData.setGasType(1); poisonousGasDevCurrentData.setGasVal(obj.getDouble("val")); poisonousGasDevCurrentData.setUnit(2); } if (obj.getString("colName").equals("螺机CH4")) { poisonousGasDevCurrentData.setGasType(2); poisonousGasDevCurrentData.setGasVal(obj.getDouble("val")); poisonousGasDevCurrentData.setUnit(1); } if (obj.getString("colName").equals("螺机CO")) { poisonousGasDevCurrentData.setGasType(3); poisonousGasDevCurrentData.setGasVal(obj.getDouble("val")); poisonousGasDevCurrentData.setUnit(0); } // if (obj.getString("colName").equals("螺机CO2")) { // poisonousGasDevCurrentData.setGasType(1); // poisonousGasDevCurrentData.setGasVal(obj.getDouble("val")); // poisonousGasDevCurrentData.setUnit(2); // } // if (obj.getString("colName").equals("螺机NO2")) { // poisonousGasDevCurrentData.setGasType(1); // poisonousGasDevCurrentData.setGasVal(obj.getDouble("val")); // poisonousGasDevCurrentData.setUnit(2); // } } Map map = new HashMap<>(); map.put("projectSn", tunnelBoringMachine.getProjectSn()); map.put("deviceSn", tunnelBoringMachine.getDevSn()); TunnelBoringMachineCurrentData firstData = tunnelBoringMachineCurrentDataMapper.getFirstData(map); tunnelBoringMachineCurrentData.setDayNumber(tunnelBoringMachineCurrentData.getCurrentNumber() - firstData.getCurrentNumber()); tunnelBoringMachineCurrentData.setReportTime(DateUtil.parseDateTime(jsonObject.getJSONObject("data").getString("time_str"))); tunnelBoringMachineCurrentData.setCreateTime(new Date()); // tunnelBoringMachineCurrentData.setWorkerStatus(); tunnelBoringMachineCurrentDataMapper.insert(tunnelBoringMachineCurrentData); poisonousGasDevCurrentData.setUploadTime(new Date()); poisonousGasDevCurrentDataMapper.insert(poisonousGasDevCurrentData); } } }