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