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"; } 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"; 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; } 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-------------------------*/ } 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; } 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/æ£å¸¸ 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; } 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 } 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 æ»çé 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; } 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); } 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); } 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; } } 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 ä»redisååºå·¥åç¼å 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 æ´æ°å°redisç¼å 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 { //è§£æå卿¥è¦æ°æ® 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); //å¤çç»æåï¼å°redisä¸å®æ¶æ°æ®åéè³äºæå¡å¨ 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(); } }); } /** * è§£æå卿 éæ°æ® 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: