From 567096dae7f467d04883f11b17f667b6cef5f536 Mon Sep 17 00:00:00 2001
From: baoshiwei <baoshiwei@shlanbao.cn>
Date: 星期五, 28 十一月 2025 10:35:18 +0800
Subject: [PATCH] feat(dry): 新增干燥配方上传功能
---
jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java | 200 +++++++++++++++++++++++++++++++------------------
1 files changed, 126 insertions(+), 74 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 e58f432..c420bd1 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
@@ -1,14 +1,10 @@
package org.jeecg.modules.dry.controller;
-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;
@@ -18,11 +14,9 @@
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.Bo.HerbFormulaBo;
import org.jeecg.modules.dry.entity.*;
import org.jeecg.modules.dry.mqtt.MqttConfig;
import org.jeecg.modules.dry.mqtt.MqttUtil;
@@ -33,17 +27,13 @@
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;
@Api(tags = "瀹炴椂鏁版嵁澶勭悊鎺у埗鍣�")
@@ -83,24 +73,26 @@
private IDryEquipmentService dryEquipmentService;
-
- @ApiOperation(value="娴嬭瘯", notes="杩斿洖Hello")
+ @ApiOperation(value = "娴嬭瘯", notes = "杩斿洖Hello")
@GetMapping("/hello")
public Result<?> sayHello() {
return Result.ok("Hello");
}
- @ApiOperation(value="鎺ユ敹瀹炴椂鏁版嵁Json", notes="璁惧瀹炴椂鏁版嵁涓婁紶")
+ @ApiOperation(value = "鎺ユ敹瀹炴椂鏁版嵁Json", notes = "璁惧瀹炴椂鏁版嵁涓婁紶")
@PostMapping("/sendRealTimeDataJson")
- public Result<?> realTimeDataJson(@RequestBody RealTimeDataVo realTimeDataVo) {
+ public Result<?> realTimeDataJson(@RequestBody RealTimeDataVo realTimeDataVo) {
try {
- if (mqttConfig.isEnable() && "user".equals(mqttConfig.getRole())){
+ if (mqttConfig.isEnable() && "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);
+ mqttUtil.getMqttClient().publish(MqttConstant.TENANT_UP_PREFIX_REALTIME_DATA, mqttMessage);
+ }
+
+ if ("user".equals(mqttConfig.getRole())) {
//澶勭悊鏁呴殰淇℃伅
- dryRealTimeDataService.fitFultRecord(realTimeDataVo);
+ dryRealTimeDataService.fitFaultRecord(realTimeDataVo);
}
} catch (MqttException e) {
@@ -110,18 +102,32 @@
return dryRealTimeDataService.realTimeDataHandle(realTimeDataVo);
}
+ @ApiOperation(value = "鎺ユ敹瀹炴椂鏁版嵁Json", notes = "璁惧瀹炴椂鏁版嵁涓婁紶")
+ @PostMapping("/sendRealTimeDataJson2")
+ public Result<?> realTimeDataJson2(@RequestBody RealTimeDataParentVo realTimeDataParentVo) {
+ return dryRealTimeDataService.realTimeDataHandle(realTimeDataParentVo);
+
+ }
- @ApiOperation(value="鑾峰彇璁惧瀹炴椂鏁版嵁", notes="閫氳繃绉熸埛ID鍜岃澶囩紪鐮佽幏鍙栧疄鏃舵暟鎹�")
+ @ApiOperation(value = "鑾峰彇璁惧瀹炴椂鏁版嵁", notes = "閫氳繃绉熸埛ID鍜岃澶囩紪鐮佽幏鍙栧疄鏃舵暟鎹�")
@GetMapping("/getRealTimeData")
public Result<?> queryMachineRealTimeData(RealTimeDataVo realTimeDataVo) {
return dryRealTimeDataService.queryMachineRealTImeData(realTimeDataVo);
}
- @ApiOperation(value="鑾峰彇杞﹂棿缁熻鏁版嵁", notes="閫氳繃绉熸埛ID鑾峰彇杞﹂棿缁熻鏁版嵁")
+ @ApiOperation(value = "鑾峰彇杞﹂棿缁熻鏁版嵁", notes = "閫氳繃绉熸埛ID鑾峰彇杞﹂棿缁熻鏁版嵁")
@GetMapping("/workshopStatistics")
public Result<?> workshopStatistics(RealTimeDataVo realTimeDataVo) {
return dryRealTimeDataService.queryWorkshopStatistics(realTimeDataVo);
+ }
+
+
+ @ApiOperation(value = "鑾峰彇鎵�鏈夋満鍙�", notes = "閫氳繃绉熸埛ID鑾峰彇鎵�鏈夋満鍙版暟鎹�")
+ @GetMapping("/queryAllEqps")
+ public Result<?> queryAllEqps(DryEquipment equipment) {
+ List<DryEquipment> dryEquipments = dryEquipmentService.queryEqusByTenantId(equipment);
+ return Result.OK(dryEquipments);
}
@@ -134,7 +140,7 @@
* 1013 鐑鍚姩 1014 寮�闂ㄨ瀵�
* 1015 鍑烘枡鎸夐挳
*/
- @ApiOperation(value="鍙戦�佹帶鍒舵寚浠�", notes="鍚戞湇鍔$鍙戦�佹帶鍒舵寚浠わ紝鐢辨湇鍔$閫氳繃socket杞彂缁欐帶鍒舵ā鍧�")
+ @ApiOperation(value = "鍙戦�佹帶鍒舵寚浠�", notes = "鍚戞湇鍔$鍙戦�佹帶鍒舵寚浠わ紝鐢辨湇鍔$閫氳繃socket杞彂缁欐帶鍒舵ā鍧�")
@PostMapping("/sendCommand")
public Result<?> sendCommand(@RequestBody CommandMessageVo msgVo) {
return dryRealTimeDataService.sendSocketMsg(msgVo);
@@ -181,19 +187,20 @@
/**
* 鏍规嵁璁惧鍜岀鎴锋煡璇㈣璁惧绫诲瀷鐨勫共鐕ラ厤鏂癸紝灏嗛厤鏂硅浆鎴恱ml鏍煎紡锛屼互瀛楃涓叉柟寮忚繑鍥�
+ *
* @param tenantId
* @param eqpCode
* @return
* @throws JAXBException
*/
- @ApiOperation(value="骞茬嚗閰嶆柟鑾峰彇", notes="骞茬嚗閰嶆柟涓嬪彂")
+ @ApiOperation(value = "骞茬嚗閰嶆柟鑾峰彇", notes = "骞茬嚗閰嶆柟涓嬪彂")
@GetMapping(value = "/queryFormula")
- public Result<String> queryFormulaByEqpType(Integer tenantId, String eqpCode) throws JAXBException {
+ public Result<List<HerbFormulaVo>> queryFormulaByEqpType(Integer tenantId, String eqpCode) throws JAXBException {
//鑾峰彇request
HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
// 鑾峰彇璇锋眰涓绘満鐨処P鍦板潃
String ip = IpUtils.getIpAddr(request);
- DryEquipment dryEquipment = dryEquipmentService.selectByTenantIdEquipmentId(tenantId+ "", eqpCode);
+ DryEquipment dryEquipment = dryEquipmentService.selectByTenantIdEquipmentId(tenantId + "", eqpCode);
if (dryEquipment != null) {
if (dryEquipment.getIp().equals(ip)) {
} else {
@@ -202,65 +209,110 @@
} 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()));
+ LambdaQueryWrapper<DryHerbFormula> queryWrapper = new LambdaQueryWrapper<DryHerbFormula>();
+ queryWrapper.eq(DryHerbFormula::getEqpType, dryEquipment.getType())
+ .eq(DryHerbFormula::getEnabled, "true")
+ .eq(DryHerbFormula::getTenantId, tenantId);
+ List<DryHerbFormula> list = dryHerbFormulaService.list(queryWrapper);
- 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);
+ List<HerbFormulaVo> voList = new ArrayList<>();
- // 鍒涘缓Marshaller瀹炰緥
- Marshaller marshaller = jaxbContext.createMarshaller();
+ list.forEach(item -> {
+// DryHerbInfo byId = dryHerbInfoService.getById(item.getHerbId());
+// if (byId != null) {
+// item.setPinyin(byId.getPinyin());
+// item.setName(byId.getName());
+// }
- // 璁剧疆鏄惁鏍煎紡鍖栬緭鍑�
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, false);
+// 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);
- // 灏嗗璞″簭鍒楀寲鍒板瓧绗︿覆
- StringWriter writer = new StringWriter();
- marshaller.marshal(formulas, writer);
+ HerbFormulaVo vo = new HerbFormulaVo();
+ BeanUtil.copyProperties(item, vo);
+ voList.add(vo);
+ });
+// // 鎶妚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());
+// String jsonString = JSONObject.toJSONString(voList);
+//
+// String json = JSON.toJSONString(voList);
+// System.out.println(jsonString);
+
+ return Result.OK("璇锋眰鎴愬姛", voList);
}
- @ApiOperation(value="骞茬嚗閰嶆柟涓婃姤", notes="骞茬嚗閰嶆柟璁板綍涓婃姤")
+
+ /**
+ * drying formula upload
+ * @param formulaBo
+ * @return
+ */
+
+ @ApiOperation(value = "骞茬嚗閰嶆柟涓婁紶", notes = "骞茬嚗閰嶆柟鏂板鎴栨洿鏂�")
+ @PostMapping(value = "/saveFormula")
+ public Result<?> saveFormula(@RequestBody HerbFormulaBo formulaBo) {
+ TenantContext.setTenant(formulaBo.getTenantId()+"");
+ //鑾峰彇request
+ HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
+ // 鑾峰彇璇锋眰涓绘満鐨処P鍦板潃
+ String ip = IpUtils.getIpAddr(request);
+ DryEquipment dryEquipment = dryEquipmentService.selectByTenantIdEquipmentId(formulaBo.getTenantId() + "", formulaBo.getEqpCode());
+ if (dryEquipment != null) {
+ if (dryEquipment.getIp().equals(ip)) {
+ } else {
+ return Result.error("璁惧IP鍦板潃鏈厤缃細" + ip);
+ }
+ } else {
+ return Result.error("璁惧涓嶅瓨鍦�");
+ }
+ formulaBo.setEqpType(dryEquipment.getType());
+ dryHerbFormulaService.saveOrUpdateFormula(formulaBo);
+ return Result.ok("淇濆瓨鎴愬姛");
+ }
+
+
+
+
+ @ApiOperation(value = "骞茬嚗閰嶆柟涓婃姤", notes = "骞茬嚗閰嶆柟璁板綍涓婃姤")
@PostMapping(value = "/sendFormulaHistory")
public Result<?> sendFormulaHistory(DryHerbFormulaHisVo hisVo) {
//鑾峰彇request
--
Gitblit v1.9.3