8 changed files with 480 additions and 7 deletions
			
			
		@ -0,0 +1,93 @@
					 | 
				
			||||
package com.mh.user.controller; | 
				
			||||
 | 
				
			||||
import com.alibaba.fastjson2.JSONObject; | 
				
			||||
import com.mh.common.http.HttpResult; | 
				
			||||
import com.mh.common.utils.StringUtils; | 
				
			||||
import com.mh.user.annotation.SysLogger; | 
				
			||||
import com.mh.user.constants.Constant; | 
				
			||||
import com.mh.user.entity.ControlSetEntity; | 
				
			||||
import com.mh.user.entity.DeviceCodeParamEntity; | 
				
			||||
import com.mh.user.entity.DeviceInstallEntity; | 
				
			||||
import com.mh.user.entity.PumpSetEntity; | 
				
			||||
import com.mh.user.model.DeviceModel; | 
				
			||||
import com.mh.user.model.SerialPortModel; | 
				
			||||
import com.mh.user.serialport.SerialPortSingle2; | 
				
			||||
import com.mh.user.service.*; | 
				
			||||
import com.mh.user.utils.ExchangeStringUtil; | 
				
			||||
import lombok.extern.slf4j.Slf4j; | 
				
			||||
import org.springframework.beans.factory.annotation.Autowired; | 
				
			||||
import org.springframework.web.bind.annotation.*; | 
				
			||||
 | 
				
			||||
import java.math.BigDecimal; | 
				
			||||
import java.util.List; | 
				
			||||
import java.util.Map; | 
				
			||||
 | 
				
			||||
@Slf4j | 
				
			||||
@RestController | 
				
			||||
@RequestMapping("serial") | 
				
			||||
public class DeviceOperateController { | 
				
			||||
 | 
				
			||||
    @Autowired | 
				
			||||
    DeviceInstallService deviceInstallService; | 
				
			||||
 | 
				
			||||
    @Autowired | 
				
			||||
    PumpSetService pumpSetService; | 
				
			||||
 | 
				
			||||
    @Autowired | 
				
			||||
    ControlSetService controlSetService; | 
				
			||||
 | 
				
			||||
    @Autowired | 
				
			||||
    NowDataService nowDataService; | 
				
			||||
 | 
				
			||||
    @Autowired | 
				
			||||
    private DeviceControlService deviceControlService; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
    //操作设备
 | 
				
			||||
    @SysLogger(title = "控制管理", optDesc = "设置设备参数值") | 
				
			||||
    @PostMapping(value = "/operate") | 
				
			||||
    public HttpResult operateDevice(@RequestBody List<SerialPortModel> params) { | 
				
			||||
        try { | 
				
			||||
            Constant.WEB_FLAG = true; //单抄,暂时停止采集
 | 
				
			||||
            String returnStr = deviceControlService.readOrWriteDevice(params, Constant.WRITE); | 
				
			||||
            if (!StringUtils.isBlank(returnStr) && "fail".equals(returnStr)) { | 
				
			||||
                return HttpResult.error(500, "fail"); | 
				
			||||
            } | 
				
			||||
            Constant.WEB_FLAG = false; //单抄,恢复采集
 | 
				
			||||
            return HttpResult.ok(); | 
				
			||||
        } catch (Exception e) { | 
				
			||||
            log.error("前端发送控制异常==>", e); | 
				
			||||
            Constant.WEB_FLAG = false; //单抄,恢复采集
 | 
				
			||||
            return HttpResult.error(500, "fail"); | 
				
			||||
        } finally { | 
				
			||||
            Constant.WEB_FLAG = false; | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    //读数据
 | 
				
			||||
    @SysLogger(title = "控制管理", optDesc = "读设备数据") | 
				
			||||
    @PostMapping(value = "/read") | 
				
			||||
    public HttpResult readData(@RequestBody List<SerialPortModel> params) { | 
				
			||||
        try { | 
				
			||||
            Constant.WEB_FLAG = true; //单抄,暂时停止采集
 | 
				
			||||
            String rtData = deviceControlService.readOrWriteDevice(params, Constant.READ); | 
				
			||||
            Constant.WEB_FLAG = false; //单抄,恢复采集
 | 
				
			||||
            if (ExchangeStringUtil.getJSONType(rtData)) { | 
				
			||||
                Map map = JSONObject.parseObject(rtData); | 
				
			||||
                return HttpResult.ok("success", map); | 
				
			||||
            } else { | 
				
			||||
                if (rtData.equals("fail")) { | 
				
			||||
                    return HttpResult.error(500, "fail"); | 
				
			||||
                } else { | 
				
			||||
                    return HttpResult.ok(rtData, rtData); | 
				
			||||
                } | 
				
			||||
            } | 
				
			||||
        } catch (Exception e) { | 
				
			||||
            Constant.WEB_FLAG = false; //单抄,恢复采集
 | 
				
			||||
            return HttpResult.error(500, "fail"); | 
				
			||||
        } finally { | 
				
			||||
            Constant.WEB_FLAG = false; //单抄,恢复采集
 | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,23 @@
					 | 
				
			||||
package com.mh.user.service; | 
				
			||||
 | 
				
			||||
import com.mh.user.model.SerialPortModel; | 
				
			||||
 | 
				
			||||
import java.util.List; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author LJF | 
				
			||||
 * @version 1.0 | 
				
			||||
 * @project CHWS | 
				
			||||
 * @description 设备控制服务类 | 
				
			||||
 * @date 2023-12-21 10:18:34 | 
				
			||||
 */ | 
				
			||||
public interface DeviceControlService { | 
				
			||||
 | 
				
			||||
    /** | 
				
			||||
     * 读写设备 | 
				
			||||
     * @param params | 
				
			||||
     * @return | 
				
			||||
     */ | 
				
			||||
    public String readOrWriteDevice(List<SerialPortModel> params, String type); | 
				
			||||
 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,336 @@
					 | 
				
			||||
package com.mh.user.service.impl; | 
				
			||||
 | 
				
			||||
import com.mh.common.http.HttpResult; | 
				
			||||
import com.mh.common.utils.StringUtils; | 
				
			||||
import com.mh.user.constants.Constant; | 
				
			||||
import com.mh.user.entity.ControlSetEntity; | 
				
			||||
import com.mh.user.entity.DeviceCodeParamEntity; | 
				
			||||
import com.mh.user.entity.DeviceInstallEntity; | 
				
			||||
import com.mh.user.entity.PumpSetEntity; | 
				
			||||
import com.mh.user.model.DeviceModel; | 
				
			||||
import com.mh.user.model.SerialPortModel; | 
				
			||||
import com.mh.user.serialport.SerialPortSingle2; | 
				
			||||
import com.mh.user.service.*; | 
				
			||||
import lombok.extern.slf4j.Slf4j; | 
				
			||||
import org.springframework.stereotype.Service; | 
				
			||||
 | 
				
			||||
import javax.annotation.Resource; | 
				
			||||
import java.math.BigDecimal; | 
				
			||||
import java.util.List; | 
				
			||||
 | 
				
			||||
/** | 
				
			||||
 * @author LJF | 
				
			||||
 * @version 1.0 | 
				
			||||
 * @project CHWS | 
				
			||||
 * @description 设备控制服务类 | 
				
			||||
 * @date 2023-12-21 10:21:11 | 
				
			||||
 */ | 
				
			||||
@Slf4j | 
				
			||||
@Service | 
				
			||||
public class DeviceControlServiceImpl implements DeviceControlService { | 
				
			||||
 | 
				
			||||
    @Resource | 
				
			||||
    private DeviceInstallService deviceInstallService; | 
				
			||||
 | 
				
			||||
    @Resource | 
				
			||||
    private PumpSetService pumpSetService; | 
				
			||||
 | 
				
			||||
    @Resource | 
				
			||||
    private NowDataService nowDataService; | 
				
			||||
 | 
				
			||||
    @Resource | 
				
			||||
    private ControlSetService controlSetService; | 
				
			||||
 | 
				
			||||
    @Override | 
				
			||||
    public String readOrWriteDevice(List<SerialPortModel> params, String type) { | 
				
			||||
        try { | 
				
			||||
            SerialPortSingle2 serialPortSingle = new SerialPortSingle2(); | 
				
			||||
            String rtData = ""; | 
				
			||||
            for (SerialPortModel serialPortModel : params) { | 
				
			||||
 | 
				
			||||
                DeviceCodeParamEntity deviceCodeParam = new DeviceCodeParamEntity(); | 
				
			||||
 | 
				
			||||
                String deviceAddr = serialPortModel.getDeviceAddr(); | 
				
			||||
                String deviceType = serialPortModel.getDeviceType(); | 
				
			||||
                String buildingId = serialPortModel.getBuildingId(); | 
				
			||||
                String param = serialPortModel.getParam(); | 
				
			||||
 | 
				
			||||
                if (StringUtils.isBlank(deviceAddr)) { | 
				
			||||
                    List<DeviceModel> list = deviceInstallService.selectDevices(buildingId, deviceType); | 
				
			||||
                    deviceAddr = list.get(0).getDeviceAddr(); | 
				
			||||
                } | 
				
			||||
                if (deviceAddr == null || deviceAddr.length() == 0) { | 
				
			||||
                    return "fail"; | 
				
			||||
                } | 
				
			||||
 | 
				
			||||
                DeviceInstallEntity deviceInstallEntity = | 
				
			||||
                        deviceInstallService.selectDevice(deviceAddr, deviceType, buildingId); | 
				
			||||
 | 
				
			||||
                deviceCodeParam.setDeviceAddr(deviceAddr); | 
				
			||||
                deviceCodeParam.setDeviceType(deviceType); | 
				
			||||
                deviceCodeParam.setDataCom(deviceInstallEntity.getDataCom()); | 
				
			||||
                deviceCodeParam.setBaudrate(deviceInstallEntity.getBaudRate()); | 
				
			||||
                deviceCodeParam.setParity(deviceInstallEntity.getParity()); | 
				
			||||
                deviceCodeParam.setBuildingId(buildingId); | 
				
			||||
 | 
				
			||||
                String brand = deviceInstallEntity.getBrand(); | 
				
			||||
                deviceCodeParam.setBrand(brand); | 
				
			||||
 | 
				
			||||
                deviceCodeParam.setParam(param); | 
				
			||||
 | 
				
			||||
                ControlSetEntity controlData = new ControlSetEntity(); | 
				
			||||
                controlData.setBuildingId(deviceInstallEntity.getBuildingId()); | 
				
			||||
 | 
				
			||||
                // 根据设备类型和参数执行相应的操作
 | 
				
			||||
                switch (deviceType) { | 
				
			||||
                    case "热泵": | 
				
			||||
                        rtData = handleHotPump(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                    case "时控": | 
				
			||||
                        rtData = handleTimeControl(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                    case "水位开关": | 
				
			||||
                        rtData = handleWaterLevelSwitch(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                    case "温度变送器": | 
				
			||||
                        rtData = handleTemperatureTransmitter(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                    case "压变": | 
				
			||||
                        rtData = handlePressureTransducer(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                    case "水表": | 
				
			||||
                        rtData = handleWaterMeter(serialPortModel, deviceCodeParam, controlData, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                    case "电表": | 
				
			||||
                        rtData = handleElectricMeter(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                    default: | 
				
			||||
                        rtData = handleHotPump(serialPortModel, deviceCodeParam, controlData, rtData, type, serialPortSingle); | 
				
			||||
                        break; | 
				
			||||
                } | 
				
			||||
                if (Constant.WRITE.equals(type)) { | 
				
			||||
                    rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
                } | 
				
			||||
            } | 
				
			||||
            return rtData; | 
				
			||||
        } catch (Exception e) { | 
				
			||||
            log.error("设备控制异常", e); | 
				
			||||
            return Constant.FAIL; | 
				
			||||
        } | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private String handleElectricMeter(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { | 
				
			||||
        rtData = serialPortSingle.serialPortSend(deviceCodeParam); | 
				
			||||
        return rtData; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private String handleWaterMeter(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, ControlSetEntity controlData1, String rtData, String type, SerialPortSingle2 serialPortSingle) { | 
				
			||||
        rtData = serialPortSingle.serialPortSend(deviceCodeParam); | 
				
			||||
        // 要添加校准值
 | 
				
			||||
        Double deviationValue = deviceInstallService.selectDeviceDeviation(deviceCodeParam.getDeviceAddr(),deviceCodeParam.getDeviceType(), deviceCodeParam.getBuildingId()); | 
				
			||||
        if (null != deviationValue && !"fail".equals(rtData)) { | 
				
			||||
            rtData = new BigDecimal(rtData).add(BigDecimal.valueOf(deviationValue)).toString(); | 
				
			||||
        } | 
				
			||||
        return rtData; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private String handlePressureTransducer(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { | 
				
			||||
        deviceCodeParam.setFunCode("03");        //功能码读
 | 
				
			||||
        deviceCodeParam.setRegisterAddr("0004"); | 
				
			||||
        rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
        return rtData; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private String handleTemperatureTransmitter(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { | 
				
			||||
        deviceCodeParam.setFunCode("03");        //功能码读
 | 
				
			||||
        deviceCodeParam.setRegisterAddr("0028"); | 
				
			||||
        rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
        return rtData; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private String handleWaterLevelSwitch(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) throws InterruptedException { | 
				
			||||
        if (Constant.WRITE.equals(type)) { | 
				
			||||
            switch (deviceCodeParam.getBrand()) { | 
				
			||||
                case "远向": | 
				
			||||
                    deviceCodeParam.setFunCode("06");        //功能码写数据
 | 
				
			||||
                    if (!serialPortModel.getDataValue().equals("100%")) { | 
				
			||||
                        deviceCodeParam.setDataValue("100%"); | 
				
			||||
//                        serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
//                        Thread.sleep(1000);
 | 
				
			||||
                    } | 
				
			||||
                    break; | 
				
			||||
                case "顶威": | 
				
			||||
                    deviceCodeParam.setFunCode("0407");      //功能码写数据
 | 
				
			||||
                    break; | 
				
			||||
                default: | 
				
			||||
                    deviceCodeParam.setFunCode("12");        //功能码写数据
 | 
				
			||||
                    if (!serialPortModel.getDataValue().equals("100%")) { | 
				
			||||
                        deviceCodeParam.setDataValue("100%"); | 
				
			||||
//                        serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
//                        Thread.sleep(1000);
 | 
				
			||||
                    } | 
				
			||||
                    break; | 
				
			||||
            } | 
				
			||||
            deviceCodeParam.setDataValue(serialPortModel.getDataValue()); | 
				
			||||
            nowDataService.upLevelSet(deviceCodeParam.getBuildingId(), serialPortModel.getDataValue());//更新实时状态表
 | 
				
			||||
        } else if (Constant.READ.equals(type)) { | 
				
			||||
            //生成并发送指令
 | 
				
			||||
            if ("状态".equals(deviceCodeParam.getParam())) { | 
				
			||||
                if ("远向".equals(deviceCodeParam.getBrand())) { | 
				
			||||
                    deviceCodeParam.setFunCode("03");        //功能码读
 | 
				
			||||
                    deviceCodeParam.setRegisterAddr("0010"); | 
				
			||||
                } | 
				
			||||
            } else { | 
				
			||||
                if (StringUtils.isBlank(deviceCodeParam.getBrand()) | 
				
			||||
                        || "中凯".equals(deviceCodeParam.getBrand())) {//品牌
 | 
				
			||||
                    deviceCodeParam.setFunCode("17");        //功能码读
 | 
				
			||||
                    deviceCodeParam.setRegisterAddr("0017"); | 
				
			||||
                } else if ("远向".equals(deviceCodeParam.getBrand())) { | 
				
			||||
                    deviceCodeParam.setFunCode("03");        //功能码读
 | 
				
			||||
                    deviceCodeParam.setRegisterAddr("0018"); | 
				
			||||
                } else if ("顶威".equals(deviceCodeParam.getBrand())) { | 
				
			||||
                    deviceCodeParam.setFunCode("0102");      //功能码读
 | 
				
			||||
                    deviceCodeParam.setRegisterAddr("0102"); | 
				
			||||
                } | 
				
			||||
            } | 
				
			||||
            rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
        } | 
				
			||||
        return rtData; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private String handleTimeControl(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { | 
				
			||||
        String time = serialPortModel.getDataValue(); | 
				
			||||
        if (Constant.READ.equals(type)) { | 
				
			||||
            deviceCodeParam.setFunCode("03");        //功能码读数据
 | 
				
			||||
            if (deviceCodeParam.getParam().equals("L1")) { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D)
 | 
				
			||||
            } else if (deviceCodeParam.getParam().equals("L2")) { | 
				
			||||
                deviceCodeParam.setRegisterAddr("000D"); | 
				
			||||
            } else { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0011"); | 
				
			||||
            } | 
				
			||||
            rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
            time = rtData; | 
				
			||||
        } else { | 
				
			||||
            deviceCodeParam.setFunCode("10");        //功能码写数据
 | 
				
			||||
        } | 
				
			||||
        if (time.length() == 16) { | 
				
			||||
            //时段1 HHmmHHmm
 | 
				
			||||
            String statTime1 = time.substring(0, 2) + ":" + time.substring(2, 4);  //HH:mm
 | 
				
			||||
            String closeTime1 = time.substring(4, 6) + ":" + time.substring(6, 8); //HH:mm
 | 
				
			||||
            //时段2
 | 
				
			||||
            String statTime2 = time.substring(8, 10) + ":" + time.substring(10, 12); | 
				
			||||
            String closeTime2 = time.substring(12, 14) + ":" + time.substring(14, 16); | 
				
			||||
            if ("L1".equals(deviceCodeParam.getParam())) { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0009"); //寄存器地址,L3路,L1(0009),L2(000D)
 | 
				
			||||
                controlData.setUseStartTime1(statTime1); | 
				
			||||
                controlData.setUseCloseTime1(closeTime1); | 
				
			||||
                controlData.setUseStartTime2(statTime2); | 
				
			||||
                controlData.setUseCloseTime2(closeTime2); | 
				
			||||
            } else if ("L2".equals(deviceCodeParam.getParam())) { | 
				
			||||
                deviceCodeParam.setRegisterAddr("000D"); | 
				
			||||
                controlData.setUseStartTime3(statTime1); | 
				
			||||
                controlData.setUseCloseTime3(closeTime1); | 
				
			||||
                controlData.setUseStartTime4(statTime2); | 
				
			||||
                controlData.setUseCloseTime4(closeTime2); | 
				
			||||
            } else { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0011"); | 
				
			||||
                controlData.setUseStartTime5(statTime1); | 
				
			||||
                controlData.setUseCloseTime5(closeTime1); | 
				
			||||
                controlData.setUseStartTime6(statTime2); | 
				
			||||
                controlData.setUseCloseTime6(closeTime2); | 
				
			||||
            } | 
				
			||||
        } | 
				
			||||
        controlSetService.saveControlSet(controlData); //保存设置内容
 | 
				
			||||
        return rtData; | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    private String handleHotPump(SerialPortModel serialPortModel, DeviceCodeParamEntity deviceCodeParam, ControlSetEntity controlData, String rtData, String type, SerialPortSingle2 serialPortSingle) { | 
				
			||||
        //设置热泵实体对象
 | 
				
			||||
        PumpSetEntity pumpData = new PumpSetEntity(); | 
				
			||||
        pumpData.setBuildingId(deviceCodeParam.getBuildingId()); | 
				
			||||
        pumpData.setPumpId(deviceCodeParam.getDeviceAddr()); | 
				
			||||
        if (StringUtils.isBlank(deviceCodeParam.getParam()) || deviceCodeParam.getParam().equals("温度设定")) { | 
				
			||||
            //发送指令
 | 
				
			||||
            if (deviceCodeParam.getBrand().equals("美的")) { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0642"); //寄存器地址
 | 
				
			||||
                deviceCodeParam.setFunCode("10");        //功能码写数据
 | 
				
			||||
            } else { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0003"); //寄存器地址
 | 
				
			||||
                deviceCodeParam.setFunCode("06");        //功能码写数据
 | 
				
			||||
            } | 
				
			||||
            //保存数据
 | 
				
			||||
            if (Constant.READ.equals(type)) { | 
				
			||||
                rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
                if (!rtData.equals("fail")) { | 
				
			||||
                    pumpData.setTempSet(rtData); | 
				
			||||
                    pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
 | 
				
			||||
                } | 
				
			||||
                return rtData; | 
				
			||||
            } | 
				
			||||
            pumpData.setTempSet(serialPortModel.getDataValue()); | 
				
			||||
            pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
 | 
				
			||||
 | 
				
			||||
            nowDataService.upTempSet2(deviceCodeParam.getBuildingId(), serialPortModel.getDataValue(), deviceCodeParam.getDeviceAddr());//更新实时状态表
 | 
				
			||||
            log.info("楼栋编号:" + deviceCodeParam.getBuildingId() + ",设定温度:" + serialPortModel.getDataValue() + ",热泵编号:" + deviceCodeParam.getDeviceAddr()); | 
				
			||||
        } else if (deviceCodeParam.getParam().equals("时段1") || deviceCodeParam.getParam().equals("时段2")) { | 
				
			||||
            if (deviceCodeParam.getBrand().equals("美的")) { | 
				
			||||
                //发送指令
 | 
				
			||||
                if (Constant.READ.equals(type)) { | 
				
			||||
                    deviceCodeParam.setFunCode("03");           //功能码读数据
 | 
				
			||||
                } else { | 
				
			||||
                    deviceCodeParam.setFunCode("10");           //功能码写数据
 | 
				
			||||
                } | 
				
			||||
                if ("时段1".equals(deviceCodeParam.getParam())) { | 
				
			||||
                    deviceCodeParam.setRegisterAddr("0656");    //寄存器地址
 | 
				
			||||
                } else { | 
				
			||||
                    deviceCodeParam.setRegisterAddr("065A");    //寄存器地址
 | 
				
			||||
                } | 
				
			||||
 | 
				
			||||
                if (Constant.READ.equals(type)) { | 
				
			||||
                    rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
                } else { | 
				
			||||
                    rtData = serialPortModel.getDataValue(); | 
				
			||||
                } | 
				
			||||
                if (!rtData.equals("fail")) { | 
				
			||||
                    if (rtData.length() == 8) { | 
				
			||||
                        String statTime = rtData.substring(0, 2) + ":" + rtData.substring(2, 4); | 
				
			||||
                        String closeTime = rtData.substring(4, 6) + ":" + rtData.substring(6, 8); | 
				
			||||
                        if ("时段1".equals(deviceCodeParam.getParam())) { | 
				
			||||
                            pumpData.setStartTime1(statTime); | 
				
			||||
                            pumpData.setCloseTime1(closeTime); | 
				
			||||
                        } else if ("时段2".equals(deviceCodeParam.getParam())) { | 
				
			||||
                            pumpData.setStartTime2(statTime); | 
				
			||||
                            pumpData.setCloseTime2(closeTime); | 
				
			||||
                        } | 
				
			||||
                    } | 
				
			||||
                    pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
 | 
				
			||||
                } | 
				
			||||
                return rtData; | 
				
			||||
            } | 
				
			||||
        } else if ("实际温度".equals(deviceCodeParam.getParam())) { | 
				
			||||
            deviceCodeParam.setFunCode("03");        //功能码读数据
 | 
				
			||||
            if ("美的".equals(deviceCodeParam.getBrand())) { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0007"); //寄存器地址
 | 
				
			||||
            } else { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0064"); //寄存器地址
 | 
				
			||||
            } | 
				
			||||
            rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
            if (!rtData.equals("fail")) { | 
				
			||||
                pumpData.setWaterTemp(rtData); | 
				
			||||
                pumpSetService.savePumpSet(pumpData);//热泵信息保存数据库
 | 
				
			||||
            } | 
				
			||||
            return rtData; | 
				
			||||
        } else if ("运行状态".equals(deviceCodeParam.getParam())) { | 
				
			||||
            deviceCodeParam.setFunCode("03");        //功能码读数据
 | 
				
			||||
            if ("美的".equals(deviceCodeParam.getBrand())) { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0641"); //寄存器地址
 | 
				
			||||
            } else { | 
				
			||||
                deviceCodeParam.setRegisterAddr("0BBD"); //寄存器地址
 | 
				
			||||
            } | 
				
			||||
            rtData = serialPortSingle.serialPortSend(deviceCodeParam);//生成并发送指令
 | 
				
			||||
            return rtData; | 
				
			||||
        } | 
				
			||||
        return rtData; | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue