From 2871d648f1b89453e88eb9180f45fde124ff0391 Mon Sep 17 00:00:00 2001 From: zhuguifei <zhuguifei@zhuguifeideiMac.local> Date: 星期四, 17 七月 2025 16:37:40 +0800 Subject: [PATCH] Merge branch 'master' of http://lanpucloud.cn:1111/r/herb --- jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryRealTimeDataServiceImpl.java | 226 +++++++++++++++++++------ jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java | 14 + jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java | 16 + jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java | 3 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java | 8 jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java | 1 jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java | 71 ------- jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java | 11 + jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java | 68 +++++++ jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml | 4 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java | 2 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java | 16 + jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java | 56 ++++++ jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java | 33 +++ 14 files changed, 394 insertions(+), 135 deletions(-) diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java index 9858fa0..9009e28 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonCacheConstant.java @@ -5,4 +5,7 @@ String SYS_CACHE_TENANT = "sys:cache:tenant"; //redis缂撳瓨鍚勭鎴蜂笅璁惧淇℃伅 String DRY_CACHE_TENANT_EQUS = "dry:cache:tenant::equs"; + + // redis缂撳瓨鍚勭鎴蜂笅璁惧淇℃伅鍒楄〃 + String DRY_CACHE_TENANT_EQUS_LIST = "dry:cache:tenant:equsList"; } diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java index f4c85dd..6aa48fe 100644 --- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java +++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/MqttConstant.java @@ -77,6 +77,7 @@ String TENANT_UP_PREFIX = "tenant/up"; String TENANT_UP_PREFIX_REALTIME_DATA = TENANT_UP_PREFIX + "/realTime/data"; + String TENANT_UP_PREFIX_REALTIME_DATA_EQP = TENANT_UP_PREFIX + "/realTime/data/eqp"; String TENANT_UP_PREFIX_FAULT_DATA = TENANT_UP_PREFIX + "/fault/data"; String TENANT_UP_PREFIX_REAL_FAULT_DATA = TENANT_UP_PREFIX + "/real/fault/data"; diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java new file mode 100644 index 0000000..dc82272 --- /dev/null +++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataParentVo.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.dry.vo; + +import lombok.Data; + +@Data +public class RealTimeDataParentVo { + private RealTimeDataVo realTime; + private RealTimeReportVo report; + private RealTimeFaultVo fault; + /**宸ュ崟鍙�*/ + private String workorder; + /**绉熸埛ID*/ + private Integer tenantid; + /**璁惧缂栧彿*/ + private String machineid; +} diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java index 18aece4..72046db 100755 --- a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java +++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeDataVo.java @@ -94,23 +94,6 @@ private Integer ai_time; - // private List<DryEquipment> eqpCodes; - - - /**鎺ョ鐘舵�� 0锛氳嚜鍔� 1锛氭墜鍔� */ - private Integer state_auto; - - /**椋庣鐘舵�� 0锛氫綆浣嶉潤姝� 1锛氶珮浣嶉潤姝� 2锛氭鍦ㄤ笂鍗� 3锛氭鍦ㄤ笅闄�*/ - private Integer state_windbox; - - /**婊氱瓛鐘舵�� 0锛氶珮浣嶉潤姝� 1锛氫綆浣嶉潤姝� 2锛氭鍦ㄤ笂鍗� 3锛氭鍦ㄤ笅闄� 4锛氭杞� 5锛氬弽杞�*/ - private Integer state_roller; - - /**椋庢満鐘舵�� 0锛氬叧闂� 1锛氬紑鍚�*/ - private Integer state_fan; - - /**钂告苯闃�鐘舵�� 0锛氬叧闂� 1锛氬紑鍚�*/ - private Integer state_valve; /**宸ュ崟鐘舵��*/ private Integer workorder_status; @@ -128,61 +111,7 @@ private String level; - /**璁惧鏁呴殰**/ - // private String fault; - /**---------------------鐢熶骇璁板綍鐩稿叧瀛楁瀹氫箟---s-------------------------*/ - - private Boolean report_flag; // 鎻愪氦鏍囧織 - - private String report_head_name; // 鍝佸悕 - private String report_head_batch ; //鎵规 - private String report_head_num ; //鏁伴噺--16妗�/355.8Kg - private String report_head_machine ; //璁惧 - private String report_head_accepter; //鎺ユ枡浜� - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - private Date report_head_date ; //鐢熶骇鏃ユ湡 - private String report_head_leader ; //鐝粍闀� - private String report_head_techer ; //宸ヨ壓鍛� - //妫�鏌� - private Boolean report_check_field ; //鐢熶骇鐜板満 - private Boolean report_check_file ; //鎵ц鏂囦欢 - private Boolean report_check_tag ; //鐗╂枡鏍囩ず - private Boolean report_check_tool ; //绉伴噺鍣ㄥ叿 - private String report_check_man ; //妫�鏌ヤ汉 - private Boolean report_check_status; //妫�鏌ユ儏鍐� - private String report_check_qa ; //QA - private String report_check_record ; //寮傚父璁板綍 - //鐢熶骇 - private Boolean report_product_view ; //澶栬妫�鏌� - private Boolean report_product_wind ; //鍚归 - private Boolean report_product_sun ; //鏅� - private Boolean report_product_low_dry ; //浣庢俯骞茬嚗 - private Boolean report_product_dry ; //骞茬嚗 - private String report_product_start ; //寮�濮嬫椂闂� - private String report_product_end ; //缁撴潫鏃堕棿 - private Integer report_product_total ; //骞茬嚗鎬绘椂闂� - private Boolean report_product_check ; //骞茬嚗妫�鏌� - private String report_product_man1 ; //鎿嶄綔浜� - private String report_product_man2 ; //澶嶆牳浜� - private Double report_product_weight ; //鎿嶄綔鍚庨噸閲� - private Double report_product_waste ; //搴熸枡鏁伴噺 - private Double report_product_use ; //鏀剁巼 - private String report_product_qa ; //QA - //娓呭満 - private Boolean report_clean_machine ; //璁惧娓呯悊 - private Boolean report_clean_waste ; //搴熸枡娓呯悊 - private Boolean report_clean_tool ; //宸ュ叿娓呯悊 - private Boolean report_clean_door ; //闂ㄧ獥娓呯悊 - private Boolean report_clean_box ; //绠变綋娓呯悊 - private Boolean report_clean_record ; //鐢熶骇璁板綍娓呯悊 - @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") - private Date report_clean_date ; //娓呭満鏃ユ湡 - private String report_clean_man ; //娓呭満浜� - private Boolean report_clean_confirm ; //娓呭満纭 - private String report_clean_qa ; //QA - - /**---------------------鐢熶骇璁板綍鐩稿叧瀛楁瀹氫箟---e-------------------------*/ } diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java new file mode 100644 index 0000000..7dae163 --- /dev/null +++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeFaultVo.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.dry.vo; + +import lombok.Data; + +@Data +public class RealTimeFaultVo { + private String error; + private String warning; + private String info; + +} diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java new file mode 100644 index 0000000..9409994 --- /dev/null +++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeProdVo.java @@ -0,0 +1,68 @@ +package org.jeecg.modules.dry.vo; + +import lombok.Data; + +@Data +public class RealTimeProdVo { + private Integer ai_time; + private Integer ai_total_time; + /**鑷姩 true/鎵嬪姩 false*/ + private Boolean auto; + /**鑽℃枡寤舵椂*/ + private Integer delay; + /**鐜婀垮害*/ + private Double envhum; + /**鐜娓╁害*/ + private Double envtemp; + /**椋庢満棰戠巼*/ + private Double fanfrq; + /**閰嶆柟绱㈠紩*/ + private Integer index; + private String level; + /**娓╁害杩囦綆 true/姝e父 false*/ + private Boolean lowalarm; + + /**鍒濆鍚按鐜囷紙璁惧畾鍊硷級*/ + private Double moisture1; + /**瀹炴椂鍚按鐜�*/ + private Double moisture2; + /**鐩爣鍚按鐜�*/ + private Double moisture3; + /**鑽潗鍚嶇О*/ + private String name; + /**涓婁綅鏈� true/PLC false*/ + private Boolean plcdisable; + /**寮�濮嬪共鐖�*/ + private Boolean start; + /**钂告苯娑堣��**/ + private Double steam; + /**鏆傚仠鏍囧織 true/false*/ + private Boolean stop; + /**椋庢満娓╁害*/ + private Double temp1; + /**椋庣娓╁害*/ + private Double temp2; + /**娓╁害璁惧畾鍊�*/ + private Double temp3; + + /**鏃堕棿璁惧畾鍊�*/ + private Integer time1; + /**鏃堕棿璁℃暟*/ + private Integer time2; + /**鎬绘椂闂�*/ + private Integer time3; + /**缈绘枡娆℃暟*/ + private Integer turntime; + /**鐢佃兘娑堣��**/ + private Double watt; + /**鎶曟枡閲忥紙绛愶級*/ + private Integer weight1; + /**鍒濆閲嶉噺*/ + private Double weight2; + /**杩囩▼瀹炴椂閲嶉噺*/ + private Double weight3; + /**鐑 true/鍐烽 false*/ + private Boolean wind; + /**宸ュ崟鐘舵��*/ + private Integer workorder_status; +} diff --git a/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java new file mode 100644 index 0000000..cc8f51a --- /dev/null +++ b/jeecg-module-dry/jeecg-module-dry-api/src/main/java/org/jeecg/modules/dry/vo/RealTimeReportVo.java @@ -0,0 +1,56 @@ +package org.jeecg.modules.dry.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +@Data +public class RealTimeReportVo { + private Boolean report_flag; // 鎻愪氦鏍囧織 + private String report_head_name; // 鍝佸悕 + private String report_head_batch ; //鎵规 + private String report_head_num ; //鏁伴噺--16妗�/355.8Kg + private String report_head_machine ; //璁惧 + private String report_head_accepter; //鎺ユ枡浜� + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + private Date report_head_date ; //鐢熶骇鏃ユ湡 + private String report_head_leader ; //鐝粍闀� + private String report_head_techer ; //宸ヨ壓鍛� + //妫�鏌� + private Boolean report_check_field ; //鐢熶骇鐜板満 + private Boolean report_check_file ; //鎵ц鏂囦欢 + private Boolean report_check_tag ; //鐗╂枡鏍囩ず + private Boolean report_check_tool ; //绉伴噺鍣ㄥ叿 + private String report_check_man ; //妫�鏌ヤ汉 + private Boolean report_check_status; //妫�鏌ユ儏鍐� + private String report_check_qa ; //QA + private String report_check_record ; //寮傚父璁板綍 + //鐢熶骇 + private Boolean report_product_view ; //澶栬妫�鏌� + private Boolean report_product_wind ; //鍚归 + private Boolean report_product_sun ; //鏅� + private Boolean report_product_low_dry ; //浣庢俯骞茬嚗 + private Boolean report_product_dry ; //骞茬嚗 + private String report_product_start ; //寮�濮嬫椂闂� + private String report_product_end ; //缁撴潫鏃堕棿 + private Integer report_product_total ; //骞茬嚗鎬绘椂闂� + private Boolean report_product_check ; //骞茬嚗妫�鏌� + private String report_product_man1 ; //鎿嶄綔浜� + private String report_product_man2 ; //澶嶆牳浜� + private Double report_product_weight ; //鎿嶄綔鍚庨噸閲� + private Double report_product_waste ; //搴熸枡鏁伴噺 + private Double report_product_use ; //鏀剁巼 + private String report_product_qa ; //QA + //娓呭満 + private Boolean report_clean_machine ; //璁惧娓呯悊 + private Boolean report_clean_waste ; //搴熸枡娓呯悊 + private Boolean report_clean_tool ; //宸ュ叿娓呯悊 + private Boolean report_clean_door ; //闂ㄧ獥娓呯悊 + private Boolean report_clean_box ; //绠变綋娓呯悊 + private Boolean report_clean_record ; //鐢熶骇璁板綍娓呯悊 + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + private Date report_clean_date ; //娓呭満鏃ユ湡 + private String report_clean_man ; //娓呭満浜� + private Boolean report_clean_confirm ; //娓呭満纭 + private String report_clean_qa ; //QA +} diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java index e92e401..3344466 100644 --- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java +++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java @@ -100,6 +100,31 @@ return dryRealTimeDataService.realTimeDataHandle(realTimeDataVo); } + @ApiOperation(value="鎺ユ敹瀹炴椂鏁版嵁Json", notes="璁惧瀹炴椂鏁版嵁涓婁紶") + @PostMapping("/sendRealTimeDataJson2") + public Result<?> realTimeDataJson2(@RequestBody RealTimeDataParentVo realTimeDataParentVo) { + try { + if (mqttConfig.isEnable() && "user".equals(mqttConfig.getRole())){ + MqttMessage mqttMessage = new MqttMessage(); + mqttMessage.setQos(0); + mqttMessage.setPayload(JSONObject.toJSONString(realTimeDataParentVo).getBytes()); + mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_REALTIME_DATA,mqttMessage); + //澶勭悊鏁呴殰淇℃伅 + dryRealTimeDataService.fitFaultRecord(realTimeDataParentVo); + } + + if ("user".equals(mqttConfig.getRole()) && realTimeDataParentVo.getFault() != null){ + //澶勭悊鏁呴殰淇℃伅 + dryRealTimeDataService.fitFaultRecord(realTimeDataParentVo); + } + + } catch (MqttException e) { + e.printStackTrace(); + } + + return dryRealTimeDataService.realTimeDataHandle(realTimeDataParentVo); + } + @ApiOperation(value="鑾峰彇璁惧瀹炴椂鏁版嵁", notes="閫氳繃绉熸埛ID鍜岃澶囩紪鐮佽幏鍙栧疄鏃舵暟鎹�") @@ -115,6 +140,14 @@ } + @ApiOperation(value="鑾峰彇鎵�鏈夋満鍙�", notes="閫氳繃绉熸埛ID鑾峰彇鎵�鏈夋満鍙版暟鎹�") + @GetMapping("/queryAllEqps") + public Result<?> queryAllEqps(DryEquipment equipment) { + List<DryEquipment> dryEquipments = dryEquipmentService.queryEqusByTenantId(equipment); + return Result.OK(dryEquipments); + } + + /** * 1001 椋庣鍗� 1002 椋庣闄� * 1003 婊氱瓛鍗� 1004 婊氱瓛闄� diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java index e835376..b381df7 100644 --- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java +++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/mqtt/MqttSampleCallback.java @@ -24,6 +24,7 @@ import org.jeecg.modules.dry.service.*; import org.jeecg.modules.dry.vo.DryEquipmentVo; import org.jeecg.modules.dry.vo.DryFaultRecordVo; +import org.jeecg.modules.dry.vo.RealTimeDataParentVo; import org.jeecg.modules.dry.vo.RealTimeDataVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -215,6 +216,17 @@ }); break; + // 鎺ユ敹璁惧瀹炴椂鏁版嵁-鏈哄彴 + case MqttConstant.TENANT_UP_PREFIX_REALTIME_DATA_EQP: + ThreadUtil.execute(() -> { + try { + RealTimeDataParentVo vo = JSON.parseObject(message, RealTimeDataParentVo.class); + realTimeDataService.realTimeDataHandle(vo); + } catch (Exception e) { + e.printStackTrace(); + } + }); + break; //鍚勭鎴蜂笂浼犵殑瀹炴椂鎶ヨ鏁版嵁 case MqttConstant.TENANT_UP_PREFIX_REAL_FAULT_DATA: { @@ -243,8 +255,6 @@ //鍙戦�佸箍鎾� System.err.println("骞挎挱缁欙細" + recTopic); sendMqttMessage(MqttConstant.SERVICE_BROADCAST_TENANT_REAL_FAULT, mqMessage, 1); - - } break; //绉诲姩绔富鍔ㄨ姹傝澶囧疄鏃舵晠闅滄暟鎹紙鐢ㄤ簬椤甸潰鍒氭墦寮�鏃舵媺鍙栦竴娆℃暟鎹級 @@ -260,8 +270,6 @@ entry -> entry.getKey().toString(), entry -> (DryFaultRecordVo) entry.getValue() )); - - if (dryFaultMap.isEmpty()) { return; } diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java index 6e39cbd..67a72ee 100755 --- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java +++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryEquipmentService.java @@ -1,5 +1,6 @@ package org.jeecg.modules.dry.service; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.dry.entity.DryEquipment; import com.baomidou.mybatisplus.extension.service.IService; @@ -24,4 +25,5 @@ */ Map<String,DryEquipment> queryEquByTenantId(Integer tenantId); + List<DryEquipment> queryEqusByTenantId(DryEquipment dryEquipment); } diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java index 8c64d5c..0efdafb 100755 --- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java +++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/IDryRealTimeDataService.java @@ -1,9 +1,7 @@ package org.jeecg.modules.dry.service; import org.jeecg.common.api.vo.Result; -import org.jeecg.modules.dry.vo.CommandMessageVo; -import org.jeecg.modules.dry.vo.RealTimeDataVo; -import org.jeecg.modules.dry.vo.StatisticsDataVo; +import org.jeecg.modules.dry.vo.*; public interface IDryRealTimeDataService { Result<?> realTimeDataHandle(RealTimeDataVo realTimeDataVo); @@ -22,4 +20,8 @@ * @return */ Result<?> fitFaultRecord(RealTimeDataVo realTimeDataVo); + + void fitFaultRecord(RealTimeDataParentVo realTimeDataParentVo); + + Result<?> realTimeDataHandle(RealTimeDataParentVo realTimeDataParentVo); } diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java index 93ff976..0f4fb91 100755 --- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java +++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/service/impl/DryEquipmentServiceImpl.java @@ -1,6 +1,7 @@ package org.jeecg.modules.dry.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.jeecg.common.api.vo.Result; import org.jeecg.common.config.TenantContext; import org.jeecg.common.constant.CommonCacheConstant; import org.jeecg.common.util.RedisUtil; @@ -63,4 +64,17 @@ )); return userMap; } + + @Override + @Cacheable(cacheNames = CommonCacheConstant.DRY_CACHE_TENANT_EQUS_LIST, key = "#dryEquipment.tenantId+':'+#dryEquipment.enable" , unless = "#result == null " ) + public List<DryEquipment> queryEqusByTenantId(DryEquipment dryEquipment) { + TenantContext.setTenant(dryEquipment.getTenantId() +""); + QueryWrapper<DryEquipment> queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(DryEquipment::getTenantId,dryEquipment.getTenantId()); + if (dryEquipment.getEnable()!=null){ + queryWrapper.lambda().eq(DryEquipment::getEnable,dryEquipment.getEnable()); + } + List<DryEquipment> equipmentList = this.list(queryWrapper); + return equipmentList; + } } 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 74d1590..58b10ca 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 @@ -91,7 +91,7 @@ @Transactional public Result<?> realTimeDataHandle(RealTimeDataVo realTimeDataVo) { TenantContext.setTenant(realTimeDataVo.getTenantid()+""); - // log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString()); + log.info("瀹炴椂鏁版嵁锛�"+realTimeDataVo.toString()); // 1 鏌ヨ鎴栧垱寤哄伐鍗� @@ -132,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()); @@ -147,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()); @@ -204,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鍜屽伐鍗曞彿鏌ヨ鏁版嵁搴撴槸鍚︽湁璁板綍锛屾湁鍒欒繑鍥烇紝娌℃湁鍒欐柊澧炰竴鏉� @@ -528,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瀽瀛樺偍鏁呴殰鏁版嵁 diff --git a/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml index bbd97d8..8ffe3bc 100755 --- a/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml +++ b/jeecg-server-cloud/jeecg-cloud-nacos/src/main/resources/application.yml @@ -12,9 +12,9 @@ db: num: 1 password: - '0': ${MYSQL-PWD:root} + '0': ${MYSQL-PWD:123456} url: - '0': jdbc:mysql://${MYSQL-HOST:localhost}:${MYSQL-PORT:3306}/${MYSQL-DB:nacos-herb}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true + '0': jdbc:mysql://${MYSQL-HOST:localhost}:${MYSQL-PORT:3306}/${MYSQL-DB:nacos}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true user: '0': ${MYSQL-USER:root} management: -- Gitblit v1.9.3