From 86f19c30b243337f1400244f3a0426c13e54a475 Mon Sep 17 00:00:00 2001
From: zhuguifei <312353457@qq.com>
Date: 星期三, 27 十一月 2024 13:46:27 +0800
Subject: [PATCH] Merge branch 'herb' of https://gitee.com/baoshwi/herb into herb

---
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java |  171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 166 insertions(+), 5 deletions(-)

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 b261d83..dbc488d 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
@@ -3,25 +3,44 @@
 
 import ai.djl.modality.Classifications;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.thread.ThreadUtil;
+import com.alibaba.druid.support.json.JSONUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.eclipse.paho.client.mqttv3.MqttException;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
 import org.jeecg.common.api.vo.Result;
 
-import org.jeecg.modules.dry.entity.DryHerbInfo;
+import org.jeecg.common.config.TenantContext;
+import org.jeecg.common.constant.MqttConstant;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.util.IpUtils;
+import org.jeecg.common.util.SpringContextUtils;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.config.mybatis.MybatisPlusSaasConfig;
+import org.jeecg.modules.dry.entity.*;
+import org.jeecg.modules.dry.mqtt.MqttConfig;
+import org.jeecg.modules.dry.mqtt.MqttUtil;
 import org.jeecg.modules.dry.service.*;
 
 //import org.jeecg.modules.dry.util.HerbUtil;
-import org.jeecg.modules.dry.vo.CommandMessageVo;
-import org.jeecg.modules.dry.vo.DryHerbInfoVo;
-import org.jeecg.modules.dry.vo.RealTimeDataVo;
+import org.jeecg.modules.dry.vo.*;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
 import java.io.InputStream;
+import java.io.StringWriter;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -36,11 +55,33 @@
     @Autowired
     private IDryRealTimeDataService dryRealTimeDataService;
 
+    @Autowired
+    private IDryHerbFormulaService dryHerbFormulaService;
+
+    @Autowired
+    private IDryHerbInfoService dryHerbInfoService;
+
+    @Autowired
+    private IDryEqpTypeService dryEqpTypeService;
+
 //    @Autowired
 //    private HerbUtil herbUtil;
 
     @Autowired
+    private MqttUtil mqttUtil;
+
+    @Autowired
+    private MqttConfig mqttConfig;
+
+    @Autowired
     private IDryHerbInfoService herbInfoService;
+
+    @Autowired
+    private IDryHerbFormulaHisService dryHerbFormulaHisService;
+
+    @Autowired
+    private IDryEquipmentService dryEquipmentService;
+
 
 
     @ApiOperation(value="娴嬭瘯", notes="杩斿洖Hello")
@@ -51,7 +92,21 @@
 
     @ApiOperation(value="鎺ユ敹瀹炴椂鏁版嵁Json", notes="璁惧瀹炴椂鏁版嵁涓婁紶")
     @PostMapping("/sendRealTimeDataJson")
-    public Result<?> realTimeDataJson(@RequestBody RealTimeDataVo realTimeDataVo) {
+    public Result<?> realTimeDataJson(@RequestBody RealTimeDataVo realTimeDataVo)  {
+        try {
+            if ("user".equals(mqttConfig.getRole())){
+                MqttMessage mqttMessage = new MqttMessage();
+                mqttMessage.setQos(0);
+                mqttMessage.setPayload(JSONObject.toJSONString(realTimeDataVo).getBytes());
+                mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_REALTIME_DATA,mqttMessage);
+                //澶勭悊鏁呴殰淇℃伅
+                dryRealTimeDataService.fitFultRecord(realTimeDataVo);
+            }
+
+        } catch (MqttException e) {
+            e.printStackTrace();
+        }
+
         return dryRealTimeDataService.realTimeDataHandle(realTimeDataVo);
     }
 
@@ -124,4 +179,110 @@
 //        }
 //    }
 
+    /**
+     * 鏍规嵁璁惧鍜岀鎴锋煡璇㈣璁惧绫诲瀷鐨勫共鐕ラ厤鏂癸紝灏嗛厤鏂硅浆鎴恱ml鏍煎紡锛屼互瀛楃涓叉柟寮忚繑鍥�
+     * @param tenantId
+     * @param eqpCode
+     * @return
+     * @throws JAXBException
+     */
+    @ApiOperation(value="骞茬嚗閰嶆柟鑾峰彇", notes="骞茬嚗閰嶆柟涓嬪彂")
+    @GetMapping(value = "/queryFormula")
+    public Result<String> queryFormulaByEqpType(Integer tenantId, String eqpCode) throws JAXBException {
+        //鑾峰彇request
+        HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
+        // 鑾峰彇璇锋眰涓绘満鐨処P鍦板潃
+        String ip = IpUtils.getIpAddr(request);
+        DryEquipment dryEquipment = dryEquipmentService.selectByTenantIdEquipmentId(tenantId+ "", eqpCode);
+        if (dryEquipment != null) {
+            if (dryEquipment.getIp().equals(ip)) {
+            } else {
+                return Result.error("璁惧IP鍦板潃鏈厤缃細" + ip);
+            }
+        } else {
+            return Result.error("璁惧涓嶅瓨鍦�");
+        }
+            LambdaQueryWrapper<DryHerbFormula> queryWrapper = new LambdaQueryWrapper<DryHerbFormula>();
+            queryWrapper.eq(DryHerbFormula::getEqpType, dryEquipment.getType())
+                    .eq(DryHerbFormula::getTenantId, tenantId);
+            List<DryHerbFormula> list = dryHerbFormulaService.list(queryWrapper);
+            Formulas formulas = new Formulas();
+            list.forEach(item -> {
+                DryHerbInfo byId = dryHerbInfoService.getById(item.getHerbId());
+                if (byId!=null) {
+                    item.setPinyin(byId.getPinyin());
+                    item.setName(byId.getName());
+                }
+                Formula formula = new Formula();
+                BaseParam baseParam = new BaseParam();
+                WaterParam waterParam = new WaterParam();
+                TypeParam typeParam = new TypeParam();
+                OffsetParam offsetParam = new OffsetParam();
+                baseParam.setCode(item.getCode());
+                baseParam.setIndex(item.getCode());
+                baseParam.setName(item.getName());
+                baseParam.setAb(item.getName());
+                baseParam.setTyp(item.getCategory());
+                waterParam.setDelay(Double.valueOf(item.getDelay()));
+                waterParam.setMoisture3(item.getTarget());
+                waterParam.setWeight1(Double.valueOf(item.getFeed()));
+                waterParam.setTimes(item.getEt());
+                waterParam.setTemp1(item.getWindTemp());
+                waterParam.setTemp2(item.getEnvTemp());
+                waterParam.setTemp3(item.getEnvHum());
+                waterParam.setTurntime(item.getTurn());
+                typeParam.setMtype(Integer.valueOf(item.getCategory()));
+                offsetParam.setMoisoffset(item.getMoisOffset());
+                offsetParam.setColdwind(Double.valueOf(item.getCoolingDuration()));
+
+                formula.setBaseParam(baseParam);
+                formula.setWaterParam(waterParam);
+                formula.setTypeParam(typeParam);
+                formula.setOffsetParam(offsetParam);
+                formulas.getDryFormulaList().add(formula);
+            });
+            // 鎶妚os杞崲鎴恱ml
+        // 鍒涘缓JAXBContext瀹炰緥
+        JAXBContext jaxbContext = JAXBContext.newInstance(Formulas.class);
+
+        // 鍒涘缓Marshaller瀹炰緥
+        Marshaller marshaller = jaxbContext.createMarshaller();
+
+        // 璁剧疆鏄惁鏍煎紡鍖栬緭鍑�
+        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
+
+        // 灏嗗璞″簭鍒楀寲鍒板瓧绗︿覆
+        StringWriter writer = new StringWriter();
+        marshaller.marshal(formulas, writer);
+
+            return Result.OK("璇锋眰鎴愬姛",writer.toString());
+
+
+    }
+
+    @ApiOperation(value="骞茬嚗閰嶆柟涓婃姤", notes="骞茬嚗閰嶆柟璁板綍涓婃姤")
+    @PostMapping(value = "/sendFormulaHistory")
+    public Result<?> sendFormulaHistory(DryHerbFormulaHisVo hisVo) {
+        //鑾峰彇request
+        HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
+        // 鑾峰彇璇锋眰涓绘満鐨処P鍦板潃
+        String ip = IpUtils.getIpAddr(request);
+        DryHerbFormulaHis his = new DryHerbFormulaHis();
+        BeanUtil.copyProperties(hisVo, his);
+        his.setFormulaIndex(hisVo.getIndex());
+        DryEquipment dryEquipment = dryEquipmentService.selectByTenantIdEquipmentId(hisVo.getTenantId() + "", hisVo.getEqp());
+        if (dryEquipment != null) {
+            if (dryEquipment.getIp().equals(ip)) {
+                his.setEqpId(dryEquipment.getId());
+            } else {
+                return Result.error("璁惧IP鍦板潃鏈厤缃細" + ip);
+            }
+
+        } else {
+            return Result.error("璁惧涓嶅瓨鍦�");
+        }
+        dryHerbFormulaHisService.save(his);
+        return Result.OK("淇濆瓨鎴愬姛");
+    }
+
 }

--
Gitblit v1.9.3