From 39cae5e98a6fd6fb7ade9c80a11f45f46d0ab4c5 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期四, 06 二月 2025 17:01:07 +0800 Subject: [PATCH] 修改实时数据接口 --- jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java | 233 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 176 insertions(+), 57 deletions(-) diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java index 8def570..f867f5b 100755 --- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java +++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java @@ -71,6 +71,9 @@ @Autowired private MqttUtil mqttUtil; + @Value(value = "${jeecg.mqtt.enable}") + private boolean mqttEnable; + public String getTemporaryToken() { if (token == null) { RedisUtil redisUtil = SpringContextUtils.getBean(RedisUtil.class); @@ -88,7 +91,7 @@ @Transactional public Result<?> realTimeDataHandle(RealTimeDataVo realTimeDataVo) { TenantContext.setTenant(realTimeDataVo.getTenantid()+""); - // log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString()); + log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString()); // 1 鏌ヨ鎴栧垱寤哄伐鍗� @@ -129,11 +132,6 @@ orderVo.setEnvTemp(realTimeDataVo.getEnvtemp()); orderVo.setRemain(realTimeDataVo.getAi_total_time()); orderVo.setCurRemain(realTimeDataVo.getAi_time()); - orderVo.setState_fan(realTimeDataVo.getState_fan()); - orderVo.setState_roller(realTimeDataVo.getState_roller()); - orderVo.setState_auto(realTimeDataVo.getState_auto()); - orderVo.setState_windbox(realTimeDataVo.getState_windbox()); - orderVo.setState_valve(realTimeDataVo.getState_valve()); orderVo.setOrderStatus(realTimeDataVo.getWorkorder_status()); orderVo.setEqp_status(realTimeDataVo.getEqp_status()); // orderVo.setEqp_state(realTimeDataVo.getEqp_state()); @@ -144,55 +142,6 @@ DryOrderTrendVo trendVo = new DryOrderTrendVo(realTimeDataVo); // 2.2 淇濆瓨宸ュ崟鍚按鐜囧彉鍖� 鎴� 閲嶉噺鍙樺寲 - - if(realTimeDataVo.getReport_flag()) { - DryProdRecord prodRecord = new DryProdRecord(); - prodRecord.setReportHeadName(realTimeDataVo.getReport_head_name()); - prodRecord.setReportHeadBatch(realTimeDataVo.getReport_head_batch()); - prodRecord.setReportHeadNum(realTimeDataVo.getReport_head_num()); - prodRecord.setReportHeadMachine(realTimeDataVo.getReport_head_machine()); - prodRecord.setReportHeadAccepter(realTimeDataVo.getReport_head_accepter()); - prodRecord.setReportHeadDate(realTimeDataVo.getReport_head_date()); - prodRecord.setReportHeadLeader(realTimeDataVo.getReport_head_leader()); - prodRecord.setReportHeadTecher(realTimeDataVo.getReport_head_techer()); - - prodRecord.setReportCheckField(realTimeDataVo.getReport_check_field()?1:0); - prodRecord.setReportCheckFile(realTimeDataVo.getReport_check_file()?1:0); - prodRecord.setReportCheckTag(realTimeDataVo.getReport_check_tag()?1:0); - prodRecord.setReportCheckTool(realTimeDataVo.getReport_check_tool()?1:0); - prodRecord.setReportCheckMan(realTimeDataVo.getReport_check_man()); - prodRecord.setReportCheckStatus(realTimeDataVo.getReport_check_status()?1:0); - prodRecord.setReportCheckQa(realTimeDataVo.getReport_check_qa()); - prodRecord.setReportCheckRecord(realTimeDataVo.getReport_check_record()); - - prodRecord.setReportProductView(realTimeDataVo.getReport_product_view()?1:0); - prodRecord.setReportProductWind(realTimeDataVo.getReport_product_wind()?1:0); - prodRecord.setReportProductSun(realTimeDataVo.getReport_product_sun()?1:0); - prodRecord.setReportProductLowDry(realTimeDataVo.getReport_product_low_dry()?1:0); - prodRecord.setReportProductDry(realTimeDataVo.getReport_product_dry()?1:0); - prodRecord.setReportProductStart(realTimeDataVo.getReport_product_start()); - prodRecord.setReportProductEnd(realTimeDataVo.getReport_product_end()); - prodRecord.setReportProductTotal(realTimeDataVo.getReport_product_total()); - prodRecord.setReportProductCheck(realTimeDataVo.getReport_product_check()?1:0); - prodRecord.setReportProductMan1(realTimeDataVo.getReport_product_man1()); - prodRecord.setReportProductMan2(realTimeDataVo.getReport_product_man2()); - prodRecord.setReportProductWeight(realTimeDataVo.getReport_product_weight()); - prodRecord.setReportProductWaste(realTimeDataVo.getReport_product_waste()); - prodRecord.setReportProductUse(realTimeDataVo.getReport_product_use()); - prodRecord.setReportProductQa(realTimeDataVo.getReport_product_qa()); - - prodRecord.setReportCleanMachine(realTimeDataVo.getReport_clean_machine()?1:0); - prodRecord.setReportCleanWaste(realTimeDataVo.getReport_clean_waste()?1:0); - prodRecord.setReportCleanTool(realTimeDataVo.getReport_clean_tool()?1:0); - prodRecord.setReportCleanDoor(realTimeDataVo.getReport_clean_door()?1:0); - prodRecord.setReportCleanBox(realTimeDataVo.getReport_clean_box()?1:0); - prodRecord.setReportCleanRecord(realTimeDataVo.getReport_clean_record()?1:0); - prodRecord.setReportCleanDate(realTimeDataVo.getReport_clean_date()); - prodRecord.setReportCleanMan(realTimeDataVo.getReport_clean_man()); - prodRecord.setReportCleanConfirm(realTimeDataVo.getReport_clean_confirm()?1:0); - prodRecord.setReportCleanQa(realTimeDataVo.getReport_clean_qa()); - prodRecordService.save(prodRecord); - } saveOrderTrendVo(trendVo, orderVo); orderVo.setTrendVo(trendVo); orderVo.getBellowsTemp().put(realTimeDataVo.getTime3(), realTimeDataVo.getTemp2()); @@ -201,6 +150,131 @@ realTimeDataVo.getTenantid()+"_"+realTimeDataVo.getMachineid(),orderVo, 60*60); return Result.ok(); } + + + + + @Override + @Transactional + public Result<?> realTimeDataHandle(RealTimeDataParentVo realTimeDataParentVo) { + TenantContext.setTenant(realTimeDataParentVo.getTenantid()+""); + log.info("瀹炴椂鏁版嵁锛�"+realTimeDataParentVo.toString()); + if (realTimeDataParentVo.getRealTime() != null) { + RealTimeDataVo realTimeDataVo = realTimeDataParentVo.getRealTime(); + + // 1 鏌ヨ鎴栧垱寤哄伐鍗� + // 1.1 浠巖edis鍙栧嚭宸ュ崟缂撳瓨 + DryOrderVo orderVo = (DryOrderVo) redisUtil.hget(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), + realTimeDataParentVo.getTenantid()+"_"+realTimeDataParentVo.getMachineid()); + // 1.2 濡傛灉鏈夌紦瀛樿褰� + if(orderVo != null && orderVo.getCode().equals(realTimeDataParentVo.getWorkorder())) { + + // 1.3 娌℃湁缂撳瓨璁板綍鍐嶆煡璇㈡暟鎹簱 + } else { + // 鏍规嵁绉熸埛id鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉″啀杩斿洖 + orderVo = getOrSaveDryOrderVoDB(realTimeDataVo); + } + if (orderVo == null) { + log.error("宸ュ崟涓嶅瓨鍦紝宸ュ崟鍙凤細"+realTimeDataParentVo.getWorkorder()+",璁惧锛�" + realTimeDataParentVo.getMachineid() +",鑽潗锛�" + realTimeDataVo.getName()); + return Result.error("宸ュ崟涓嶅瓨鍦�"); + } + + // 2 鏇存柊宸ュ崟瀹炴椂鏁版嵁 + // 2.1 灏嗗伐鍗曚腑鐨勬暟鎹浛鎹负鏈�鏂版暟鎹� + realTimeDataVo.setOrderId(orderVo.getId()); + orderVo.setInitial(realTimeDataVo.getMoisture1()); + orderVo.setDryTime(realTimeDataVo.getTime3()); + orderVo.setDelay(realTimeDataVo.getDelay()); + orderVo.setTurn(realTimeDataVo.getTurntime()); + orderVo.setYield(realTimeDataVo.getWeight3()); + orderVo.setStart(realTimeDataVo.getStart()); + orderVo.setAuto(realTimeDataVo.getAuto()); + orderVo.setPlcdisable(realTimeDataVo.getPlcdisable()); + orderVo.setLowalarm(realTimeDataVo.getLowalarm()); + orderVo.setWind(realTimeDataVo.getWind()); + orderVo.setOriginWeight(realTimeDataVo.getWeight2()); + orderVo.setWatt(realTimeDataVo.getWatt()); + orderVo.setSteam(realTimeDataVo.getSteam()); + orderVo.setEnvHum(realTimeDataVo.getEnvhum()); + orderVo.setEnvTemp(realTimeDataVo.getEnvtemp()); + orderVo.setRemain(realTimeDataVo.getAi_total_time()); + orderVo.setCurRemain(realTimeDataVo.getAi_time()); + orderVo.setOrderStatus(realTimeDataVo.getWorkorder_status()); + orderVo.setEqp_status(realTimeDataVo.getEqp_status()); +// orderVo.setEqp_state(realTimeDataVo.getEqp_state()); + orderVo.setWarning(realTimeDataVo.getEqp_warning()); + orderVo.setFault(realTimeDataVo.getEqp_fault()); + orderVo.setLevel(realTimeDataVo.getLevel()); + DryOrderTrendVo trendVo = new DryOrderTrendVo(realTimeDataVo); + // 2.2 淇濆瓨宸ュ崟鍚按鐜囧彉鍖� 鎴� 閲嶉噺鍙樺寲 + + saveOrderTrendVo(trendVo, orderVo); + orderVo.setTrendVo(trendVo); + orderVo.getBellowsTemp().put(realTimeDataVo.getTime3(), realTimeDataVo.getTemp2()); + + // 2.3 鏇存柊鍒皉edis缂撳瓨 + redisUtil.hset(CacheConstants.RedisKeyEnum.WORK_ORDER.getCode(), + realTimeDataVo.getTenantid()+"_"+realTimeDataVo.getMachineid(),orderVo, 60*60); + } + + if (realTimeDataParentVo.getReport() != null) { + saveReport(realTimeDataParentVo); + } + return Result.ok(); + } + + private void saveReport(RealTimeDataParentVo realTimeDataParentVo) { + RealTimeReportVo report = realTimeDataParentVo.getReport(); + if(report.getReport_flag()) { + DryProdRecord prodRecord = new DryProdRecord(); + prodRecord.setReportHeadName(report.getReport_head_name()); + prodRecord.setReportHeadBatch(report.getReport_head_batch()); + prodRecord.setReportHeadNum(report.getReport_head_num()); + prodRecord.setReportHeadMachine(report.getReport_head_machine()); + prodRecord.setReportHeadAccepter(report.getReport_head_accepter()); + prodRecord.setReportHeadDate(report.getReport_head_date()); + prodRecord.setReportHeadLeader(report.getReport_head_leader()); + prodRecord.setReportHeadTecher(report.getReport_head_techer()); + + prodRecord.setReportCheckField(report.getReport_check_field()?1:0); + prodRecord.setReportCheckFile(report.getReport_check_file()?1:0); + prodRecord.setReportCheckTag(report.getReport_check_tag()?1:0); + prodRecord.setReportCheckTool(report.getReport_check_tool()?1:0); + prodRecord.setReportCheckMan(report.getReport_check_man()); + prodRecord.setReportCheckStatus(report.getReport_check_status()?1:0); + prodRecord.setReportCheckQa(report.getReport_check_qa()); + prodRecord.setReportCheckRecord(report.getReport_check_record()); + + prodRecord.setReportProductView(report.getReport_product_view()?1:0); + prodRecord.setReportProductWind(report.getReport_product_wind()?1:0); + prodRecord.setReportProductSun(report.getReport_product_sun()?1:0); + prodRecord.setReportProductLowDry(report.getReport_product_low_dry()?1:0); + prodRecord.setReportProductDry(report.getReport_product_dry()?1:0); + prodRecord.setReportProductStart(report.getReport_product_start()); + prodRecord.setReportProductEnd(report.getReport_product_end()); + prodRecord.setReportProductTotal(report.getReport_product_total()); + prodRecord.setReportProductCheck(report.getReport_product_check()?1:0); + prodRecord.setReportProductMan1(report.getReport_product_man1()); + prodRecord.setReportProductMan2(report.getReport_product_man2()); + prodRecord.setReportProductWeight(report.getReport_product_weight()); + prodRecord.setReportProductWaste(report.getReport_product_waste()); + prodRecord.setReportProductUse(report.getReport_product_use()); + prodRecord.setReportProductQa(report.getReport_product_qa()); + + prodRecord.setReportCleanMachine(report.getReport_clean_machine()?1:0); + prodRecord.setReportCleanWaste(report.getReport_clean_waste()?1:0); + prodRecord.setReportCleanTool(report.getReport_clean_tool()?1:0); + prodRecord.setReportCleanDoor(report.getReport_clean_door()?1:0); + prodRecord.setReportCleanBox(report.getReport_clean_box()?1:0); + prodRecord.setReportCleanRecord(report.getReport_clean_record()?1:0); + prodRecord.setReportCleanDate(report.getReport_clean_date()); + prodRecord.setReportCleanMan(report.getReport_clean_man()); + prodRecord.setReportCleanConfirm(report.getReport_clean_confirm()?1:0); + prodRecord.setReportCleanQa(report.getReport_clean_qa()); + prodRecordService.save(prodRecord); + } + } + /** * 鏍规嵁绉熸埛id鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉� @@ -480,7 +554,7 @@ } @Override - public Result<?> fitFultRecord(RealTimeDataVo vo) { + public Result<?> fitFaultRecord(RealTimeDataVo vo) { TenantContext.setTenant(vo.getTenantid()+""); ThreadUtil.execute(() -> { try { @@ -492,7 +566,7 @@ //澶勭悊缁撴潫鍚庯紝灏唕edis涓疄鏃舵暟鎹彂閫佽嚦浜戞湇鍔″櫒 Map<Object, Object> toCloudFaultMap = redisUtil.hmget(MqttConstant.MQTT_REAL_FAULT); - if(!toCloudFaultMap.isEmpty()){ + if(mqttEnable && !toCloudFaultMap.isEmpty()){ MqMessage< Map<Object, Object>> message = new MqMessage<>(); message.setData(toCloudFaultMap); message.setTentId(vo.getTenantid()+""); @@ -525,6 +599,51 @@ return null; } + @Override + public void fitFaultRecord(RealTimeDataParentVo vo) { + TenantContext.setTenant(vo.getTenantid()+""); + ThreadUtil.execute(() -> { + try { + //瑙f瀽瀛樺偍鎶ヨ鏁版嵁 + List<DryFaultRecord> faultRecords1 = fitFault(vo.getFault().getError(), vo.getWorkorder(), vo.getTenantid(), vo.getMachineid(), 1); + List<DryFaultRecord> faultRecords2 = fitFault(vo.getFault().getWarning(), vo.getWorkorder(), vo.getTenantid(), vo.getMachineid(), 2); + faultRecords1.addAll(faultRecords2); + + + //澶勭悊缁撴潫鍚庯紝灏唕edis涓疄鏃舵暟鎹彂閫佽嚦浜戞湇鍔″櫒 + Map<Object, Object> toCloudFaultMap = redisUtil.hmget(MqttConstant.MQTT_REAL_FAULT); + if(mqttEnable && !toCloudFaultMap.isEmpty()){ + MqMessage< Map<Object, Object>> message = new MqMessage<>(); + message.setData(toCloudFaultMap); + message.setTentId(vo.getTenantid()+""); + MqttMessage mqttMessage = new MqttMessage(); + mqttMessage.setQos(0); + mqttMessage.setPayload(JSON.toJSONString(message).getBytes()); + mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_REAL_FAULT_DATA,mqttMessage); + } + + + //瑕佷繚瀛樼殑鍘嗗彶鏁呴殰 + if(!faultRecords1.isEmpty()){ + MqMessage<List<DryFaultRecord>> message = new MqMessage<>(); + message.setData(faultRecords1); + message.setTentId(vo.getTenantid()+""); + MqttMessage mqttMessage = new MqttMessage(); + mqttMessage.setQos(0); + mqttMessage.setPayload((JSON.toJSONString(message).getBytes())); + mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_FAULT_DATA,mqttMessage); + } + + + + + } catch (Exception e) { + e.printStackTrace(); + } + }); + + } + /** * 瑙f瀽瀛樺偍鏁呴殰鏁版嵁 -- Gitblit v1.9.3