diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java index d7fb4f65..9c6a298f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/DeviceInfoController.java @@ -102,6 +102,13 @@ public class DeviceInfoController { return success(true); } + @PutMapping("/wf/property") + @Operation(summary = "水肥机-属性修改") + public CommonResult updateDevicePropertiesForWf(UpdateDevicePropertiesForWfReqVO reqVO) { + Boolean res = deviceInfoService.updateDevicePropertiesForWf(reqVO); + return success(res); + } + @DeleteMapping("/delete") @Operation(summary = "删除设备信息") @Parameter(name = "id", description = "编号", required = true) diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/v2/UpdateDevicePropertiesForWfReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/v2/UpdateDevicePropertiesForWfReqVO.java new file mode 100644 index 00000000..b7cf3134 --- /dev/null +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/controller/admin/deviceinfo/vo/v2/UpdateDevicePropertiesForWfReqVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +/** + * @description: 水肥机-修改 + * @author: binda + * @date: 2025/10/10 20:08 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UpdateDevicePropertiesForWfReqVO { + private String id; + private String deviceId; + private Map paramStr; +} diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/dto/wf/updateparams/UpdateDeviceStatusReqVO.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/dto/wf/updateparams/UpdateDeviceStatusReqVO.java index 98cd1570..0f2f9b5f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/dto/wf/updateparams/UpdateDeviceStatusReqVO.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/dto/wf/updateparams/UpdateDeviceStatusReqVO.java @@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Map; + /** * @description: * @author: binda @@ -14,15 +16,5 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class UpdateDeviceStatusReqVO { private String deviceId; - private ParamStr paramStr; - - @Data - @AllArgsConstructor - @NoArgsConstructor - public static class ParamStr{ - // 设备开关名称 - private String Value1; - // 要修改的值 - private String Value11; - } + private Map paramStr; } diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/service/impl/WaterFertilizerService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/service/impl/WaterFertilizerService.java index c5087430..0ab5cb1f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/service/impl/WaterFertilizerService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/manager/equipmentproducer/service/impl/WaterFertilizerService.java @@ -110,9 +110,11 @@ public class WaterFertilizerService extends AbstractDeviceService { try { // 转换请求参数 UpdateDeviceStatusReqVO wfRequest = (UpdateDeviceStatusReqVO) updateRequest; + ObjectMapper objectMapper = new ObjectMapper(); + String json = objectMapper.writeValueAsString(wfRequest); // 调用水肥机设备厂商API更新设备属性 POST 请求方式 - UpdateDeviceStatusRespVO vendorResponse = callWFUpdateDeviceApi(token, wfRequest); + UpdateDeviceStatusRespVO vendorResponse = callWFUpdateDeviceApi(token, json); // 转换为统一响应格式 return convertToUnifiedUpdateResponse(vendorResponse); @@ -201,7 +203,7 @@ public class WaterFertilizerService extends AbstractDeviceService { return httpClientUtils.doGet(url, headers, null, RealTimeDeviceDataRespVO.class); } - private UpdateDeviceStatusRespVO callWFUpdateDeviceApi(String token, UpdateDeviceStatusReqVO request) { + private UpdateDeviceStatusRespVO callWFUpdateDeviceApi(String token, String request) { String url = deviceConf.getWaterAndFertilizer().getHosts() + deviceConf.getWaterAndFertilizer().getUrl4(); String clientId = deviceConf.getWaterAndFertilizer().getClientId(); @@ -209,12 +211,12 @@ public class WaterFertilizerService extends AbstractDeviceService { headers.put("Authorization", "Bearer " + token); headers.put("clientId", clientId); - // 构建请求体,包含设备ID和参数 - Map requestBody = new HashMap<>(); - requestBody.put("deviceId", request.getDeviceId()); - requestBody.put("paramStr", request.getParamStr()); +// // 构建请求体,包含设备ID和参数 +// Map requestBody = new HashMap<>(); +// requestBody.put("deviceId", request.getDeviceId()); +// requestBody.put("paramStr", request.getParamStr()); - return httpClientUtils.doPost(url, headers, requestBody, UpdateDeviceStatusRespVO.class); + return httpClientUtils.doPost(url, headers, request, UpdateDeviceStatusRespVO.class); } private UpdateDeviceResponse convertToUnifiedUpdateResponse(UpdateDeviceStatusRespVO vendorResponse) { diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java index 3ce78260..66c3bb9f 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoService.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.DeviceInfoPag import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.DeviceInfoSaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceInfoDetailV2RespVO; import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceStatisticsRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.UpdateDevicePropertiesForWfReqVO; import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceInfoRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.deviceinfo.DeviceInfoDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -66,6 +67,13 @@ public interface DeviceInfoService { */ DeviceInfoDetailV2RespVO getDeviceRealTimeInfo(String id,Integer dateType); + /** + * 更新水肥机开关 + * @param req + * @return + */ + Boolean updateDevicePropertiesForWf(UpdateDevicePropertiesForWfReqVO req); + /** * 获得设备信息分页 * diff --git a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java index be790b9b..41d3d6af 100644 --- a/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java +++ b/yudao-module-farm/src/main/java/cn/iocoder/yudao/module/farm/service/deviceinfo/DeviceInfoServiceImpl.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.DeviceInfoPag import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.DeviceInfoSaveReqVO; import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceInfoDetailV2RespVO; import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.DeviceStatisticsRespVO; +import cn.iocoder.yudao.module.farm.controller.admin.deviceinfo.vo.v2.UpdateDevicePropertiesForWfReqVO; import cn.iocoder.yudao.module.farm.controller.admin.digitalcockpit.vo.DeviceInfoRespVO; import cn.iocoder.yudao.module.farm.dal.dataobject.baseinfo.BaseInfoDO; import cn.iocoder.yudao.module.farm.dal.dataobject.deviceclassify.DeviceClassifyDO; @@ -18,7 +19,6 @@ import cn.iocoder.yudao.module.farm.dal.mysql.plotinfo.PlotInfoMapper; import cn.iocoder.yudao.module.farm.enums.CommonConstants; import cn.iocoder.yudao.module.farm.manager.equipmentproducer.EquipmentProducerManager; import cn.iocoder.yudao.module.farm.manager.equipmentproducer.conf.DeviceConf; -import cn.iocoder.yudao.module.farm.manager.equipmentproducer.dto.DeviceListResponse; import cn.iocoder.yudao.module.farm.manager.equipmentproducer.dto.HistoryDataResponse; import cn.iocoder.yudao.module.farm.manager.equipmentproducer.dto.RealTimeDataResponse; import cn.iocoder.yudao.module.farm.manager.equipmentproducer.dto.UnifiedLoginResponse; @@ -219,6 +219,23 @@ public class DeviceInfoServiceImpl implements DeviceInfoService { return new DeviceInfoDetailV2RespVO.WfInfo(deviceUniqueId,realTimeData); } + public Boolean updateDevicePropertiesForWf(UpdateDevicePropertiesForWfReqVO req) { + try { + DeviceInfoDO deviceInfo = this.getDeviceInfo(req.getId()); + String plotId = deviceInfo.getPlotId(); + + Long tenantId = getLoginUser().getTenantId(); + UnifiedLoginResponse login = equipmentProducerManager.login(DEVICE_TYPE_SOIL, tenantId, plotId); + String token = login.getData().getToken(); + + equipmentProducerManager.updateDeviceProperties(DEVICE_TYPE_WF, tenantId, token, req); + + } catch (Exception e) { + return false; + } + return true; + } + @Override public PageResult getDeviceInfoPage(DeviceInfoPageReqVO pageReqVO) { PageResult pageResult = deviceInfoMapper.selectPage(pageReqVO);