From 2cedf6c143d5f1b5c2b5bf0c5c2867dc225345bc Mon Sep 17 00:00:00 2001 From: "3067418132@qq.com" Date: Tue, 16 Jun 2026 12:27:42 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E7=8F=A0=E6=B5=B7=E5=8C=97=E5=B8=88?= =?UTF-8?q?=E5=A4=A7=E7=9B=91=E8=A7=86=E7=AE=A1=E7=90=86=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=83=AD=E6=B3=B5=E5=88=97=E8=A1=A8=E5=86=85=E5=AE=B9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mh/user/mapper/DeviceInstallMapper.java | 6 +++ .../com/mh/user/mapper/PumpSetMapper.java | 6 +++ .../com/mh/user/model/MultiControlModel.java | 8 ++++ .../mh/user/service/DeviceInstallService.java | 2 + .../com/mh/user/service/PumpSetService.java | 1 + .../impl/DeviceInstallServiceImpl.java | 5 +++ .../user/service/impl/NowDataServiceImpl.java | 27 +++++++++++- .../user/service/impl/PumpSetServiceImpl.java | 5 +++ .../mh/user/strategy/HeatPumpStrategy.java | 44 +++++++++++++------ 9 files changed, 90 insertions(+), 14 deletions(-) diff --git a/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java b/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java index f03fedd..0f10406 100644 --- a/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/DeviceInstallMapper.java @@ -389,4 +389,10 @@ public interface DeviceInstallMapper extends BaseMapper { " and brand = #{brand} " + " and device_addr = #{deviceAddr} ") Integer selectDeviceByParam(String buildingId, String dataCom, String deviceType, String brand, String deviceAddr); + + @Update("update device_install set is_fault=#{isFault} where device_addr=#{deviceAddr} and device_type=#{deviceType} and device_name=#{deviceName}") + void updateDeviceFaultAndDeviceName(@Param("isFault") String number, + @Param("deviceAddr") String addr, + @Param("deviceType") String deviceType, + @Param("deviceName") String deviceName); } diff --git a/user-service/src/main/java/com/mh/user/mapper/PumpSetMapper.java b/user-service/src/main/java/com/mh/user/mapper/PumpSetMapper.java index 5592f45..502b64e 100644 --- a/user-service/src/main/java/com/mh/user/mapper/PumpSetMapper.java +++ b/user-service/src/main/java/com/mh/user/mapper/PumpSetMapper.java @@ -56,4 +56,10 @@ public interface PumpSetMapper { @ResultMap("rs") @Select("select * from Pump_Set where building_id='001'") PumpSetEntity queryHandTime(); + + @Update("update pump_set set temp_set= #{tempSet} where building_id = #{buildingId} and pump_id= #{pumpId} and pump_name=#{pumpName}") + void updatePumpSetTempAndPumpName(@Param("tempSet") String string, + @Param("buildingId") String buildingId, + @Param("pumpId") String addr, + @Param("pumpName") String deviceName); } diff --git a/user-service/src/main/java/com/mh/user/model/MultiControlModel.java b/user-service/src/main/java/com/mh/user/model/MultiControlModel.java index e213cc2..0323e3c 100644 --- a/user-service/src/main/java/com/mh/user/model/MultiControlModel.java +++ b/user-service/src/main/java/com/mh/user/model/MultiControlModel.java @@ -34,6 +34,14 @@ public class MultiControlModel { private int gwRunState; // 网关运行状态 标志位(连接状态) 0:正常;1:不在线;2:异常 + private String pumpName; //水泵名称 + private String pumpId; //水泵编号 + private String tempSet; //温度设置 + private String waterTemp; //当前温度 + private String waterLevel; //水位 + private String isFault; //是否故障 + private String pumpRunState; //运行状态 + @Override public String toString() { return new StringJoiner(", ", MultiControlModel.class.getSimpleName() + "[", "]") diff --git a/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java b/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java index ab271d2..12a29b8 100644 --- a/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java +++ b/user-service/src/main/java/com/mh/user/service/DeviceInstallService.java @@ -188,4 +188,6 @@ public interface DeviceInstallService { int queryPumpCount(String buildingId); Integer selectDeviceByOtherParams(DeviceCodeParamEntity deviceCodeParamEntity); + + void updateDeviceFaultAndDeviceName(String number, String addr, String deviceType, String deviceName); } diff --git a/user-service/src/main/java/com/mh/user/service/PumpSetService.java b/user-service/src/main/java/com/mh/user/service/PumpSetService.java index c436a19..b199129 100644 --- a/user-service/src/main/java/com/mh/user/service/PumpSetService.java +++ b/user-service/src/main/java/com/mh/user/service/PumpSetService.java @@ -12,4 +12,5 @@ public interface PumpSetService { PumpSetEntity queryHandTime(); + void updatePumpSetTempAndPumpName(String string, String buildingId, String addr, String deviceName); } diff --git a/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java index 31f6e5a..ee93180 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/DeviceInstallServiceImpl.java @@ -486,6 +486,11 @@ public class DeviceInstallServiceImpl implements DeviceInstallService { deviceInstallMapper.updateDeviceFault(isFault, deviceAddr, deviceType); } + @Override + public void updateDeviceFaultAndDeviceName(String number, String addr, String deviceType, String deviceName) { + deviceInstallMapper.updateDeviceFaultAndDeviceName(number, addr, deviceType, deviceName); + } + //查询设备品牌 @Override public String selectBrand(String buildingId, String deviceAddr) { diff --git a/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java index 63b8548..37436bb 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/NowDataServiceImpl.java @@ -14,6 +14,7 @@ import com.mh.user.service.DeviceInstallService; import com.mh.user.service.NowDataService; import com.mh.user.utils.DateUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -106,6 +107,7 @@ public class NowDataServiceImpl implements NowDataService { break; } } + // 在判断网关在线情况 List devices = deviceInstallMapper.selectOfflineDevice(buildingId, "多路控制"); if (!devices.isEmpty()) { @@ -113,7 +115,30 @@ public class NowDataServiceImpl implements NowDataService { int online = gatewayManageMapper.queryGatewayByDataCom(deviceInstallEntity.getDataCom()); multiControlModel.setGwRunState(online); } - result.add(multiControlModel); + + // 在进行遍历,获取包含热泵的对应数据 + list.stream().filter(nowDataEntity -> nowDataEntity.getPumpName().contains("热泵")).forEach( + nowDataEntity -> { + MultiControlModel multiControlModel1 = new MultiControlModel(); + BeanUtils.copyProperties(nowDataEntity, multiControlModel1); + multiControlModel1.setBuildingId(buildingId); + multiControlModel1.setBuildingName(list.get(0).getBuildingName()); + multiControlModel1.setPumpName(nowDataEntity.getPumpName()); + multiControlModel1.setPumpId(nowDataEntity.getPumpId()); + multiControlModel1.setTempSet(nowDataEntity.getTempSet()); + multiControlModel1.setWaterTemp(nowDataEntity.getWaterTemp()); + multiControlModel1.setIsFault(nowDataEntity.getIsFault()); // Fixed method name + multiControlModel1.setPumpRunState(nowDataEntity.getRunState()); // Fixed method name + if (!StringUtils.isBlank(nowDataEntity.getWaterLevel())) { + multiControlModel1.setWaterLevel(nowDataEntity.getWaterLevel()); + } + result.add(multiControlModel1); // Add to result list + } + ); + // result再根据热泵名称的数字进行排序 + result.sort(Comparator.comparingInt(multiControlModel1 -> + Integer.parseInt(multiControlModel1.getPumpName().replaceAll("[^0-9]", "")) + )); return result; } diff --git a/user-service/src/main/java/com/mh/user/service/impl/PumpSetServiceImpl.java b/user-service/src/main/java/com/mh/user/service/impl/PumpSetServiceImpl.java index f79f0be..90f1f48 100644 --- a/user-service/src/main/java/com/mh/user/service/impl/PumpSetServiceImpl.java +++ b/user-service/src/main/java/com/mh/user/service/impl/PumpSetServiceImpl.java @@ -29,6 +29,11 @@ public class PumpSetServiceImpl implements PumpSetService { pumpSetMapper.updatePumpSetTemp(tempSet,buildingId,pumpId); } + @Override + public void updatePumpSetTempAndPumpName(String string, String buildingId, String addr, String deviceName) { + pumpSetMapper.updatePumpSetTempAndPumpName(string,buildingId,addr,deviceName); + } + @Override public PumpSetEntity queryPumpSet(String pumpId, String buildingId) { return pumpSetMapper.queryPumpSet(pumpId,buildingId); diff --git a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java index 67f8c3b..a1082b2 100644 --- a/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java +++ b/user-service/src/main/java/com/mh/user/strategy/HeatPumpStrategy.java @@ -331,7 +331,7 @@ public class HeatPumpStrategy implements DeviceStrategy { log.info("正帝热泵解析 - 地址: {}, 原始值: {}, 解析结果: {}", regAddr, value, parsedValue); // 根据不同的寄存器地址处理不同的业务逻辑 - processZhengDiData(regAddr, parsedValue, value, buildingId, buildingName, addr, dataType); + processZhengDiData(regAddr, parsedValue, value, buildingId, buildingName, addr, dataType, deviceCodeParamEntity.getDeviceName()); sValue = String.valueOf(parsedValue); // 这里根据com口、deviceType、brand、deviceAddr、buildingId查询对应deviceInstall的ID值 Integer deviceInstallId = deviceInstallService.selectDeviceByOtherParams(deviceCodeParamEntity); @@ -352,9 +352,9 @@ public class HeatPumpStrategy implements DeviceStrategy { /** * 处理正帝热泵解析后的数据 */ - private void processZhengDiData(String regAddr, Object parsedValue, int rawValue, - String buildingId, String buildingName, String addr, - StringBuffer dataType) { + private void processZhengDiData(String regAddr, Object parsedValue, int rawValue, + String buildingId, String buildingName, String addr, + StringBuffer dataType, String deviceName) { try { // 温度相关数据 if (regAddr.equals(XK814ModbusParamReadUtil.ADDR_DISPLAY_WATER_TEMP) || @@ -363,14 +363,32 @@ public class HeatPumpStrategy implements DeviceStrategy { dataType.setLength(0); dataType.append("waterTemp"); String tempStr = parsedValue.toString(); - - // 保存公共数据 + String avgTemp = nowDataService.selectAve(buildingId); NowPublicDataEntity publicData = new NowPublicDataEntity(); publicData.setBuildingId(buildingId); - publicData.setSingleTemp(tempStr); + publicData.setUseWaterTemp(avgTemp); + publicData.setBackWaterTemp(avgTemp); + String pumpId = nowDataService.selectMinPumpId(buildingId); + // 如果是华夏,则取新增得字段标识为热泵ID + String name = dealDataService.customName(); + if (name.contains(Constant.CUSTOM_NAME_HUAXIA)) { + pumpId = deviceInstallService.selectSinglePumpId(buildingId, addr); + } + log.info("---------------addr:" + addr + ",pumpId:" + pumpId + " ---------------"); + if (addr.equals(pumpId)) { //取ID最小的热泵为单箱温度 + publicData.setSingleTemp(tempStr); + log.info("---------------单箱温度:" + tempStr + "---------------"); + } nowPublicDataService.saveNowHistoryPublicData(publicData); + log.info("楼栋名称:" + buildingName + ",热泵编号:" + addr); - log.info("楼栋名称:{}, 热泵编号:{}, 水箱温度:{}", buildingName, addr, tempStr); +// // 保存公共数据 +// NowPublicDataEntity publicData = new NowPublicDataEntity(); +// publicData.setBuildingId(buildingId); +// publicData.setSingleTemp(tempStr); +// nowPublicDataService.saveNowHistoryPublicData(publicData); +// +// log.info("楼栋名称:{}, 热泵编号:{}, 水箱温度:{}", buildingName, addr, tempStr); } else if (regAddr.equals(XK814ModbusParamReadUtil.ADDR_OUTLET_TEMP)) { // 出水温度 @@ -394,25 +412,25 @@ public class HeatPumpStrategy implements DeviceStrategy { // 制冷设置温度 dataType.setLength(0); dataType.append("coolSetTemp"); - pumpSetService.updatePumpSetTemp(parsedValue.toString(), buildingId, addr); + //pumpSetService.updatePumpSetTemp(parsedValue.toString(), buildingId, addr); } else if (regAddr.equals(XK814ModbusParamReadUtil.ADDR_HEAT_SET_TEMP)) { // 制热设置温度 dataType.setLength(0); dataType.append("heatSetTemp"); - pumpSetService.updatePumpSetTemp(parsedValue.toString(), buildingId, addr); + //pumpSetService.updatePumpSetTemp(parsedValue.toString(), buildingId, addr); } else if (regAddr.equals(XK814ModbusParamReadUtil.ADDR_HOT_WATER_SET_TEMP)) { // 热水设置温度 dataType.setLength(0); dataType.append("hotWaterSetTemp"); - pumpSetService.updatePumpSetTemp(parsedValue.toString(), buildingId, addr); + pumpSetService.updatePumpSetTempAndPumpName(parsedValue.toString(), buildingId, addr, deviceName); } else if (regAddr.equals(XK814ModbusParamReadUtil.ADDR_CONSTANT_TEMP_SET)) { // 恒温设置温度 dataType.setLength(0); dataType.append("constantTempSet"); - pumpSetService.updatePumpSetTemp(parsedValue.toString(), buildingId, addr); + // pumpSetService.updatePumpSetTemp(parsedValue.toString(), buildingId, addr); } else if (regAddr.equals(XK814ModbusParamReadUtil.ADDR_MODE)) { // 运行模式 @@ -436,7 +454,7 @@ public class HeatPumpStrategy implements DeviceStrategy { dataType.append("isFault"); String faultStatus = (rawValue == 0) ? "无故障" : "有故障"; - deviceInstallService.updateDeviceFault((rawValue == 0) ? "0" : "1", addr, "热泵"); + deviceInstallService.updateDeviceFaultAndDeviceName((rawValue == 0) ? "0" : "1", addr, "热泵", deviceName); log.info("楼栋名称:{}, 热泵编号:{}, 故障状态:{}", buildingName, addr, faultStatus); } else if (regAddr.equals(XK814ModbusParamReadUtil.ADDR_INPUT_SWITCH_STATUS)) {