Java开发笔记1(空调)

==========================================================================================

1.

 ==========================================================================================

 

 

1.末端空调查询:

①controller:

package com.cars.ict.rbpsems.warning;

import com.cars.ict.rbpsems.entity.record.MonitorDevice;
import com.cars.ict.rbpsems.inventory.service.record.MonitorDeviceService;
import com.cars.ict.rbpsems.utils.PageUtil;
import com.cars.ict.rbpsems.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/end")
public class AirConditioningController {

@Autowired
private MonitorDeviceService monitorDeviceService;

/**
* 末端空调设备分页查询
*
* @return
*/
@GetMapping("/air")
public Result airConditioningQuery(String stationCode, PageUtil pageUtil) {
List<MonitorDevice> page = monitorDeviceService.airConditioningQuery(stationCode, pageUtil);
return Result.ok(page);
}

/**
* 末端空调设备条件分页查询
*
* @return
*/
@GetMapping("/con")
public Result conditioningQuery(String stationCode, String deviceName, String serviceStatus, PageUtil pageUtil) {
if (StringUtils.isEmpty(serviceStatus)) {
serviceStatus = null;
}
if (StringUtils.isEmpty(deviceName)) {
deviceName = null;
}
List<MonitorDevice> page = monitorDeviceService.conditioningQuery(stationCode, deviceName, serviceStatus, pageUtil);
return Result.ok(page);
}
}



②service:

//末端空调设备分页查询
List<MonitorDevice> airConditioningQuery(String stationCode, PageUtil pageUtil);

//末端空调设备条件分页查询
List<MonitorDevice> conditioningQuery(String stationCode, String deviceName, String serviceStatus, PageUtil pageUtil);



③serviceImpl:

 

  //末端空调设备查询
@Override
public List<MonitorDevice> airConditioningQuery(String stationCode, PageUtil pageUtil) {

List<MonitorDevice> monitorDevices = monitorDeviceDao.ConditioningQuery(stationCode, pageUtil.pageable());

//ZMP是张家口车站的站码
if (stationCode.equals("ZMP")) {
List<MonitorDevice> monitorDevice = jsonConvert(monitorDevices);
return monitorDevice;
}

List<MonitorDevice> monitorDevices1 = addJson(monitorDevices);
return monitorDevices1;
}


//末端空调设备条件查询
@Override
public List<MonitorDevice> conditioningQuery(String stationCode, String deviceName, String serviceStatus, PageUtil pageUtil) {

if (serviceStatus==null){
if (StringUtils.isEmpty(deviceName)&&StringUtils.isEmpty(serviceStatus)){ //都空按全查分页
List<MonitorDevice> monitorDevices = monitorDeviceDao.ConditioningQuery(stationCode, pageUtil.pageable());

if (stationCode.equals("ZMP")) {
List<MonitorDevice> monitorDevice = jsonConvert(monitorDevices);
return monitorDevice;
}

List<MonitorDevice> monitorDevices1 = addJson(monitorDevices);
return monitorDevices1;
}
if (!StringUtils.isEmpty(deviceName)){
if (StringUtils.isEmpty(serviceStatus)){ //statusname不空,按name模糊查
List<MonitorDevice> byDeviceName = monitorDeviceDao.findByDeviceName(stationCode, deviceName, pageUtil.pageable());

if (stationCode.equals("ZMP")) {
List<MonitorDevice> monitorDevice = jsonConvert(byDeviceName);
return monitorDevice;
}

List<MonitorDevice> monitorDevices1 = addJson(byDeviceName);
return monitorDevices1;
}
}
}
if (serviceStatus.equals("0")){
serviceStatus="false";
}else if(serviceStatus.equals("1")){
serviceStatus="true";
}
if (!StringUtils.isEmpty(serviceStatus)){
if (StringUtils.isEmpty(deviceName)){ //status不空name空,按status
List<MonitorDevice> byServiceStatus = monitorDeviceDao.findByServiceStatus(stationCode, serviceStatus, pageUtil.pageable());

if (stationCode.equals("ZMP")) {
List<MonitorDevice> monitorDevice = jsonConvert(byServiceStatus);
return monitorDevice;
}

List<MonitorDevice> monitorDevices1 = addJson(byServiceStatus);
return monitorDevices1;
}
}
if (deviceName != null){
deviceName = "%"+deviceName+"%";
}
List<MonitorDevice> byNameAndStatus = monitorDeviceDao.findByNameAndStatus(stationCode, deviceName, serviceStatus, pageUtil.pageable());//两个条件都查

if (stationCode.equals("ZMP")) {
List<MonitorDevice> monitorDevice = jsonConvert(byNameAndStatus);
return monitorDevice;
}

List<MonitorDevice> monitorDevices1 = addJson(byNameAndStatus);
return monitorDevices1;
}


  //json字段名转换方法
private List<MonitorDevice> jsonConvert (List<MonitorDevice> monitorDevices){
for (MonitorDevice monitorDevices1 : monitorDevices) {
JSONObject deviceMonitor = monitorDevices1.getDeviceMonitor();

deviceMonitor.put("YCDCKTXFWD",deviceMonitor.getString("JZXFWD")); //1.新风温度
deviceMonitor.remove("JZXFWD");
deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFQT")); //2.新风阀状态
deviceMonitor.remove("JZXFFQT");
// deviceMonitor.put("JZSFKZT",deviceMonitor.getString("JZSFKZ")); //3.水阀状态先不展示
// deviceMonitor.remove("JZSFKZ");
deviceMonitor.put("YCDCKTSFWD",deviceMonitor.getString("JZSFWD")); //4.送风温度
deviceMonitor.remove("JZSFWD");
deviceMonitor.put("YCDCKTHFWD",deviceMonitor.getString("JZHFWD")); //5.回风温度
deviceMonitor.remove("JZHFWD");
deviceMonitor.put("JZQT",deviceMonitor.getString("JZBPYX")); //6.空调状态
deviceMonitor.remove("JZBPYX");
deviceMonitor.put("JZGZ",deviceMonitor.getString("JZBPGZ")); //7.空调故障状态
deviceMonitor.remove("JZBPGZ");
// deviceMonitor.put("JZSZD",deviceMonitor.getString("JZSZD")); //8.空调手自动状态
// deviceMonitor.remove("JZSZD");
// deviceMonitor.put("JZFJGLQZDBJ",deviceMonitor.getString("JZJDCC")); //9.空调过滤报警不展示
// deviceMonitor.remove("JZJDCC");
// deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFZT")); //10.新风阀手自动状态不展示
// deviceMonitor.remove("JZXFFZT");

monitorDevices1.setDeviceMonitors(deviceMonitor);
}
return monitorDevices;
}

 

 

 


  //含有json字符串的该字段的内容进行替换的方法
  private  List<MonitorDevice> addJson(List<MonitorDevice> monitorDevices){
System.out.println(monitorDevices);

for (MonitorDevice monitorDevice : monitorDevices) {
String opcDeviceName = monitorDevice.getOpcDeviceName();

if (opcDeviceName.equals("P_IZP_KTJZ_ID0001")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0007")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0002")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0007")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0004")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0008")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0005")){
for (MonitorDevice monitorDevice1 : monitorDevices) {
String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
if (opcDeviceName1.equals("P_IZP_KTJZ_ID0008")){
JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
monitorDevice.setDeviceMonitors(deviceMonitor1);
}
}
}
}
List<MonitorDevice> monitorDevices1 = new ArrayList<>();
for (MonitorDevice monitorDevices2: monitorDevices) {
String opcDeviceName = monitorDevices2.getOpcDeviceName();
if (opcDeviceName.equals("P_IZP_KTJZ_ID0001")){
monitorDevices1.add(monitorDevices2);
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0002")){
monitorDevices1.add(monitorDevices2);
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0004")){
monitorDevices1.add(monitorDevices2);
}
if (opcDeviceName.equals("P_IZP_KTJZ_ID0005")){
monitorDevices1.add(monitorDevices2);
}
}
return monitorDevices1;
}



④MonitorDeviceDao:

 

/**
* 末端空调
* gs
* @return
*/
@Query("SELECT m FROM MonitorDevice m where m.stationCode = :stationCode and m.deviceCategoryCode='0817'")
List<MonitorDevice> ConditioningQuery(@Param("stationCode") String stationCode, Pageable pageable);

@Query("SELECT m FROM MonitorDevice m where m.stationCode = :stationCode and m.deviceCategoryCode='0817' and m.deviceName like CONCAT('%',:deviceName,'%') ")
List<MonitorDevice> findByDeviceName(@Param("stationCode") String stationCode, @Param("deviceName") String deviceName, Pageable pageable);

@Query(value = "SELECT * FROM rec_monitor_device m WHERE m.station_code = :stationCode and device_category_code='0817' and (device_monitor->'$.JZGZ' = :serviceStatus or device_monitor->'$.JZBPGZ' = :serviceStatus or opc_device_name='P_IZP_KTJZ_ID0007' or opc_device_name='P_IZP_KTJZ_ID0008')",nativeQuery = true)
List<MonitorDevice> findByServiceStatus(@Param("stationCode") String stationCode, @Param("serviceStatus") String serviceStatus, Pageable pageable);

@Query(value = "SELECT * FROM rec_monitor_device m WHERE m.station_code = :stationCode and device_category_code='0817' and (device_monitor->'$.JZGZ' = :serviceStatus or device_monitor->'$.JZBPGZ' = :serviceStatus and device_name LIKE :deviceName or opc_device_name='P_IZP_KTJZ_ID0007' or opc_device_name='P_IZP_KTJZ_ID0008')",nativeQuery = true)
List<MonitorDevice> findByNameAndStatus(@Param("stationCode") String stationCode, @Param("deviceName") String deviceName, @Param("serviceStatus") String serviceStatus, Pageable pageable)

 

 

⑤实体类:

 

package com.cars.ict.rbpsems.entity.record;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.vladmihalcea.hibernate.type.json.JsonStringType;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
* 可监测设备表
*
* @author artisan867
* @date 2020-09-18 14:05
*/

@Getter
@Setter
@Entity
@Table(name = "rec_monitor_device")
@TypeDef(name = "json", typeClass = JsonStringType.class)
public class MonitorDevice implements Serializable {

private static final long serialVersionUID = 1L;

/**
* 自动创建id
*/
@Id
@GenericGenerator(name = "uuid", strategy = "uuid")
@GeneratedValue(generator = "uuid")
@Column(length = 32)
private String id;

/**
* 创建时间
*/
@Temporal(TemporalType.TIMESTAMP)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;

/**
* 更新时间
*/
@Temporal(TemporalType.TIMESTAMP)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;

/**
* 设备id(来源设备台账)
*/
@Column(length = 32)
private String deviceId;

/**
* 设备类型编码
*/
@Column(length = 32)
private String deviceCategoryCode;

/**
* 设备状态(json
*/
@Type(type = "json")
private JSONObject deviceMonitor;

/**
* 设备唯一标识
*/
@Column(length = 50)
private String deviceUnique;

/**
* 名称
*/
@Column(length = 50)
private String deviceName;

/**
* 车站id
*/
@Column(length = 32)
private String stationId;

/**
* 车站code
*/
@Column(length = 32)
private String stationCode;

/**
* 地址
*/
@Column(columnDefinition = "text")
private String deviceAddress;

/**
* opc设备名
*/
@Column(length = 50)
private String opcDeviceName;

/**
* opc应用名
*/
@Column(length = 50)
private String opcApplicationName;

/**
* 售票处号
*/
@Column(length = 20)
private String officeNo;

/**
* 窗口号
*/
@Column(length = 20)
private String terminalId;

/**
* IP地址
*/
@Column(length = 20)
private String networkAddress;

/**
* 状态编码
*/
@Column(length = 50)
private String serviceStatus;

/**
* 故障码
*/
@Column(length = 20)
private String malfunctionCode;

/**
* 状态描述
*/
@Column(columnDefinition = "text")
private String description;

/**
* 数据来源(tvm/afc/opc)
*/
@Column(length = 20)
private String sourceType;
/**
* 通讯状态
* 应用场景:新加名称字段
* authorzyl
* time211014
*/
@Column(length = 50)
private String newName;
/**
* 通讯状态
* 应用场景:用于电伴热的通讯状态显示,属于实体类中的临时属性,不进行持久化。
* authorzyl
* time211014
*/
@Transient
private String commStatus;

/**
* 温度显示
* 应用场景:用于将温度值返回给前台。
* authorgdh
* time211015
*/
@Transient
@Type(type = "json")
private JSONObject deviceMonitors;
}

 




==========================================================================================


2. 清河代码:

=======================================================
① Controller:

package com.cars.ict.rbpsems.warning;

import com.cars.ict.rbpsems.entity.record.MonitorDevice;
import com.cars.ict.rbpsems.inventory.service.record.MonitorDeviceService;
import com.cars.ict.rbpsems.utils.PageUtil;
import com.cars.ict.rbpsems.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/end")
public class AirConditioningController {

    @Autowired
    private MonitorDeviceService monitorDeviceService;

    /**
     * 末端空调设备分页查询
     *
     * @return
     */
    @GetMapping("/air")
    public Result airConditioningQuery(String stationCode, PageUtil pageUtil) {
        int pageSize = 1000;
        pageUtil.setPageSize(pageSize);
        List<MonitorDevice> page = monitorDeviceService.airConditioningQuery(stationCode, pageUtil);
        return Result.ok(page);
    }

    /**
     * 末端空调设备条件分页查询
     *
     * @return
     */
    @GetMapping("/con")
    public Result conditioningQuery(String stationCode, String deviceName, String serviceStatus, PageUtil pageUtil) {
        int pageSize = 1000;
        pageUtil.setPageSize(pageSize);
        if (StringUtils.isEmpty(serviceStatus)) {
            serviceStatus = null;
        }
        if (StringUtils.isEmpty(deviceName)) {
            deviceName = null;
        }
        List<MonitorDevice> page =  monitorDeviceService.conditioningQuery(stationCode, deviceName, serviceStatus, pageUtil);
        return Result.ok(page);
    }
}



=======================================================
② Service:
//末端空调设备分页查询
    List<MonitorDevice> airConditioningQuery(String stationCode, PageUtil pageUtil);

    //末端空调设备条件分页查询
    List<MonitorDevice> conditioningQuery(String stationCode, String deviceName, String serviceStatus, PageUtil pageUtil);





=======================================================
③ ServiceImpl:


//末端空调设备查询
    @Override
    public List<MonitorDevice> airConditioningQuery(String stationCode, PageUtil pageUtil) {

        List<MonitorDevice> monitorDevices = monitorDeviceDao.ConditioningQuery(stationCode, pageUtil.pageable());

        //ZMP是张家口车站的站码
        if (stationCode.equals("ZMP")) {
            List<MonitorDevice> monitorDevice = jsonConvert(monitorDevices);
            return monitorDevice;
        }

        // QIP清河车站的站码
        if (stationCode.equals("QIP")) {
            List<MonitorDevice> monitorDevice = jsonConvertQIP(monitorDevices);
            return monitorDevice;
        }

        List<MonitorDevice> monitorDevices1 = addJson(monitorDevices);
        return monitorDevices1;
    }

    //张家口字段转换
    private  List<MonitorDevice> jsonConvert (List<MonitorDevice> monitorDevices){
        for (MonitorDevice monitorDevices1 : monitorDevices) {
            JSONObject deviceMonitor = monitorDevices1.getDeviceMonitor();

            deviceMonitor.put("YCDCKTXFWD",deviceMonitor.getString("JZXFWD"));    //1.新风温度
            deviceMonitor.remove("JZXFWD");
            deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFQT"));     //2.新风阀状态
            deviceMonitor.remove("JZXFFQT");
//            deviceMonitor.put("JZSFKZT",deviceMonitor.getString("JZSFKZ"));         //3.水阀状态先不展示
//            deviceMonitor.remove("JZSFKZ");
            deviceMonitor.put("YCDCKTSFWD",deviceMonitor.getString("JZSFWD"));    //4.送风温度
            deviceMonitor.remove("JZSFWD");
            deviceMonitor.put("YCDCKTHFWD",deviceMonitor.getString("JZHFWD"));    //5.回风温度
            deviceMonitor.remove("JZHFWD");
            deviceMonitor.put("JZQT",deviceMonitor.getString("JZBPYX"));          //6.空调状态
            deviceMonitor.remove("JZBPYX");
            deviceMonitor.put("JZGZ",deviceMonitor.getString("JZBPGZ"));          //7.空调故障状态
            deviceMonitor.remove("JZBPGZ");
//            deviceMonitor.put("JZSZD",deviceMonitor.getString("JZSZD"));            //8.空调手自动状态
//            deviceMonitor.remove("JZSZD");
//            deviceMonitor.put("JZFJGLQZDBJ",deviceMonitor.getString("JZJDCC"));     //9.空调过滤报警不展示
//            deviceMonitor.remove("JZJDCC");
//            deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFZT"));       //10.新风阀手自动状态不展示
//            deviceMonitor.remove("JZXFFZT");

            monitorDevices1.setDeviceMonitors(deviceMonitor);
        }
        return monitorDevices;
    }


    //清河字段转换
    private  List<MonitorDevice> jsonConvertQIP (List<MonitorDevice> monitorDevices){
//        List<String> list = new ArrayList<String>(){{add("SFTT");add("TT");}};
        for (MonitorDevice monitorDevices1 : monitorDevices) {
            JSONObject deviceMonitor = monitorDevices1.getDeviceMonitor();
            Set<String> set = deviceMonitor.keySet();
            deviceMonitor.put("YCDCKTXFWD",deviceMonitor.getString("XFTT"));    //1.新风温度
            deviceMonitor.remove("XFTT");
//            deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("JZXFFQT"));     //2.新风阀状态不展示
//            deviceMonitor.remove("JZXFFQT");
//            deviceMonitor.put("JZSFKZT",deviceMonitor.getString("TVLFB"));         //3.水阀状态不展示
//            deviceMonitor.remove("TVLFB");
            if (set.contains("SFTT")){
                deviceMonitor.put("YCDCKTSFWD",deviceMonitor.getString("SFTT"));    //4.送风温度 (SFTT、TT)
                deviceMonitor.remove("SFTT");
            }
            if (set.contains("TT")){
                deviceMonitor.put("YCDCKTSFWD",deviceMonitor.getString("TT"));
                deviceMonitor.remove("TT");
            }
            deviceMonitor.put("YCDCKTHFWD",deviceMonitor.getString("RFTT"));    //5.回风温度
            deviceMonitor.remove("RFTT");
            deviceMonitor.put("JZQT",deviceMonitor.getString("ST"));          //6.空调状态
            deviceMonitor.remove("ST");
            deviceMonitor.put("JZGZ",deviceMonitor.getString("AL"));          //7.空调故障状态
            deviceMonitor.remove("AL");
            deviceMonitor.put("JZSZD",deviceMonitor.getString("RL"));            //8.空调手自动状态
            deviceMonitor.remove("RL");
//            deviceMonitor.put("JZFJGLQZDBJ",deviceMonitor.getString("JZJDCC"));     //9.空调过滤报警不展示
//            deviceMonitor.remove("JZJDCC");
            deviceMonitor.put("JZXFFKZT",deviceMonitor.getString("MANMDV"));       //10.新风阀手自动状态不展示
            deviceMonitor.remove("MANMDV");

            monitorDevices1.setDeviceMonitors(deviceMonitor);
        }
        return monitorDevices;
    }


    //末端空调设备条件查询
    @Override
    public List<MonitorDevice> conditioningQuery(String stationCode, String deviceName, String serviceStatus, PageUtil pageUtil) {

        if (serviceStatus==null){
            if (StringUtils.isEmpty(deviceName)&&StringUtils.isEmpty(serviceStatus)){    //都空按全查分页
                List<MonitorDevice> monitorDevices = monitorDeviceDao.ConditioningQuery(stationCode, pageUtil.pageable());

                if (stationCode.equals("ZMP")) {
                    List<MonitorDevice> monitorDevice = jsonConvert(monitorDevices);
                    return monitorDevice;
                }

                if (stationCode.equals("QIP")) {
                    List<MonitorDevice> monitorDevice = jsonConvertQIP(monitorDevices);
                    return monitorDevice;
                }

                List<MonitorDevice> monitorDevices1 = addJson(monitorDevices);
                return monitorDevices1;
            }
            if (!StringUtils.isEmpty(deviceName)){
                if (StringUtils.isEmpty(serviceStatus)){                                 //status空name不空,按name模糊查
                    List<MonitorDevice> byDeviceName = monitorDeviceDao.findByDeviceName(stationCode, deviceName, pageUtil.pageable());

                    if (stationCode.equals("ZMP")) {
                        List<MonitorDevice> monitorDevice = jsonConvert(byDeviceName);
                        return monitorDevice;
                    }

                    if (stationCode.equals("QIP")) {
                        List<MonitorDevice> monitorDevice = jsonConvertQIP(byDeviceName);
                        return monitorDevice;
                    }

                    List<MonitorDevice> monitorDevices1 = addJson(byDeviceName);
                    return monitorDevices1;
                }
            }
        }
        if (serviceStatus.equals("0")){
            serviceStatus="false";
        }else if(serviceStatus.equals("1")){
            serviceStatus="true";
        }
        if (!StringUtils.isEmpty(serviceStatus)){
            if (StringUtils.isEmpty(deviceName)){                                    //status不空name空,按status查
                List<MonitorDevice> byServiceStatus = monitorDeviceDao.findByServiceStatus(stationCode, serviceStatus, pageUtil.pageable());

                if (stationCode.equals("ZMP")) {
                    List<MonitorDevice> monitorDevice = jsonConvert(byServiceStatus);
                    return monitorDevice;
                }

                if (stationCode.equals("QIP")) {
                    List<MonitorDevice> monitorDevice = jsonConvertQIP(byServiceStatus);
                    return monitorDevice;
                }

                List<MonitorDevice> monitorDevices1 = addJson(byServiceStatus);
                return monitorDevices1;
            }
        }
        if (deviceName != null){
            deviceName = "%"+deviceName+"%";
        }
        List<MonitorDevice> byNameAndStatus = monitorDeviceDao.findByNameAndStatus(stationCode, deviceName, serviceStatus, pageUtil.pageable());//两个条件都查

        if (stationCode.equals("ZMP")) {
            List<MonitorDevice> monitorDevice = jsonConvert(byNameAndStatus);
            return monitorDevice;
        }

        if (stationCode.equals("QIP")) {
            List<MonitorDevice> monitorDevice = jsonConvertQIP(byNameAndStatus);
            return monitorDevice;
        }

        List<MonitorDevice> monitorDevices1 = addJson(byNameAndStatus);
        return monitorDevices1;

    }


//太子城给字段相互赋值:
private  List<MonitorDevice> addJson(List<MonitorDevice> monitorDevices){
        System.out.println(monitorDevices);

        for (MonitorDevice monitorDevice : monitorDevices) {
            String opcDeviceName = monitorDevice.getOpcDeviceName();

            if (opcDeviceName.equals("P_IZP_KTJZ_ID0001")){
                for (MonitorDevice monitorDevice1 : monitorDevices) {
                    String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
                    if (opcDeviceName1.equals("P_IZP_KTJZ_ID0007")){
                        JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
                        monitorDevice.setDeviceMonitors(deviceMonitor1);
                    }
                }
            }
            if (opcDeviceName.equals("P_IZP_KTJZ_ID0002")){
                for (MonitorDevice monitorDevice1 : monitorDevices) {
                    String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
                    if (opcDeviceName1.equals("P_IZP_KTJZ_ID0007")){
                        JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
                        monitorDevice.setDeviceMonitors(deviceMonitor1);
                    }
                }
            }
            if (opcDeviceName.equals("P_IZP_KTJZ_ID0004")){
                for (MonitorDevice monitorDevice1 : monitorDevices) {
                    String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
                    if (opcDeviceName1.equals("P_IZP_KTJZ_ID0008")){
                        JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
                        monitorDevice.setDeviceMonitors(deviceMonitor1);
                    }
                }
            }
            if (opcDeviceName.equals("P_IZP_KTJZ_ID0005")){
                for (MonitorDevice monitorDevice1 : monitorDevices) {
                    String opcDeviceName1 = monitorDevice1.getOpcDeviceName();
                    if (opcDeviceName1.equals("P_IZP_KTJZ_ID0008")){
                        JSONObject deviceMonitor1 = monitorDevice1.getDeviceMonitor();
                        monitorDevice.setDeviceMonitors(deviceMonitor1);
                    }
                }
            }
           }
        List<MonitorDevice> monitorDevices1 = new ArrayList<>();
        for (MonitorDevice monitorDevices2: monitorDevices) {
            String opcDeviceName = monitorDevices2.getOpcDeviceName();
            if (opcDeviceName.equals("P_IZP_KTJZ_ID0001")){
                monitorDevices1.add(monitorDevices2);
            }
            if (opcDeviceName.equals("P_IZP_KTJZ_ID0002")){
                monitorDevices1.add(monitorDevices2);
            }
            if (opcDeviceName.equals("P_IZP_KTJZ_ID0004")){
                monitorDevices1.add(monitorDevices2);
            }
            if (opcDeviceName.equals("P_IZP_KTJZ_ID0005")){
                monitorDevices1.add(monitorDevices2);
            }
        }
        return monitorDevices1;
        }



=======================================================
④ dao


/**
     * 末端空调
     * gs
     * @return
     */
    @Query("SELECT m FROM MonitorDevice m where m.stationCode = :stationCode and (m.deviceCategoryCode='0817' or m.deviceCategoryCode='0803' or m.deviceCategoryCode='0830')")
    List<MonitorDevice> ConditioningQuery(@Param("stationCode") String stationCode, Pageable pageable);

    @Query("SELECT m FROM MonitorDevice m where m.stationCode = :stationCode and (m.deviceCategoryCode='0817' or m.deviceCategoryCode='0803' or m.deviceCategoryCode='0830') and m.deviceName like CONCAT('%',:deviceName,'%')")
    List<MonitorDevice> findByDeviceName(@Param("stationCode") String stationCode, @Param("deviceName") String deviceName, Pageable pageable);

    @Query(value = "SELECT * FROM rec_monitor_device m WHERE m.station_code = :stationCode and (device_category_code='0817' or device_category_code='0803' or device_category_code='0830') and (device_monitor->'$.JZGZ' = :serviceStatus or device_monitor->'$.JZBPGZ' = :serviceStatus or device_monitor->'$.AL' = :serviceStatus or opc_device_name='P_IZP_KTJZ_ID0007' or opc_device_name='P_IZP_KTJZ_ID0008')",nativeQuery = true)
    List<MonitorDevice> findByServiceStatus(@Param("stationCode") String stationCode, @Param("serviceStatus") String serviceStatus, Pageable pageable);

    @Query(value = "SELECT * FROM rec_monitor_device m WHERE m.station_code = :stationCode and (device_category_code='0817' or device_category_code='0803' or device_category_code='0830') and (device_monitor->'$.JZGZ' = :serviceStatus or device_monitor->'$.JZBPGZ' = :serviceStatus or device_monitor->'$.AL' = :serviceStatus and device_name LIKE :deviceName or opc_device_name='P_IZP_KTJZ_ID0007' or opc_device_name='P_IZP_KTJZ_ID0008')",nativeQuery = true)
    List<MonitorDevice> findByNameAndStatus(@Param("stationCode") String stationCode, @Param("deviceName") String deviceName, @Param("serviceStatus") String serviceStatus, Pageable pageable);




=======================================================
⑤ 实体类

package com.cars.ict.rbpsems.entity.record;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.vladmihalcea.hibernate.type.json.JsonStringType;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;

import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;

/**
 * 可监测设备表
 *
 * @author artisan867
 * @date 2020-09-18 14:05
 */

@Getter
@Setter
@Entity
@Table(name = "rec_monitor_device")
@TypeDef(name = "json", typeClass = JsonStringType.class)
public class MonitorDevice implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自动创建id
     */
    @Id
    @GenericGenerator(name = "uuid", strategy = "uuid")
    @GeneratedValue(generator = "uuid")
    @Column(length = 32)
    private String id;

    /**
     * 创建时间
     */
    @Temporal(TemporalType.TIMESTAMP)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @Temporal(TemporalType.TIMESTAMP)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 设备id(来源设备台账)
     */
    @Column(length = 32)
    private String deviceId;

    /**
     * 设备类型编码
     */
    @Column(length = 32)
    private String deviceCategoryCode;

    /**
     * 设备状态(json)
     */
    @Type(type = "json")
    private JSONObject deviceMonitor;

    /**
     * 设备唯一标识
     */
    @Column(length = 50)
    private String deviceUnique;

    /**
     * 名称
     */
    @Column(length = 50)
    private String deviceName;

    /**
     * 车站id
     */
    @Column(length = 32)
    private String stationId;

    /**
     * 车站code
     */
    @Column(length = 32)
    private String stationCode;

    /**
     * 地址
     */
    @Column(columnDefinition = "text")
    private String deviceAddress;

    /**
     * opc设备名
     */
    @Column(length = 50)
    private String opcDeviceName;

    /**
     * opc应用名
     */
    @Column(length = 50)
    private String opcApplicationName;

    /**
     * 售票处号
     */
    @Column(length = 20)
    private String officeNo;

    /**
     * 窗口号
     */
    @Column(length = 20)
    private String terminalId;

    /**
     * IP地址
     */
    @Column(length = 20)
    private String networkAddress;

    /**
     * 状态编码
     */
    @Column(length = 50)
    private String serviceStatus;

    /**
     * 故障码
     */
    @Column(length = 20)
    private String malfunctionCode;

    /**
     * 状态描述
     */
    @Column(columnDefinition = "text")
    private String description;

    /**
     * 数据来源(tvm/afc/opc)
     */
    @Column(length = 20)
    private String sourceType;
    /**
     * 通讯状态
     * 应用场景:新加名称字段
     * author:zyl
     * time:211014
     */
    @Column(length = 50)
    private String newName;
    /**
     * 通讯状态
     * 应用场景:用于电伴热的通讯状态显示,属于实体类中的临时属性,不进行持久化。
     * author:zyl
     * time:211014
     */
    @Transient
    private String commStatus;

    /**
     * 温度显示
     * 应用场景:用于将温度值返回给前台。
     * author:gdh
     * time:211015
     */
    @Transient
    @Type(type = "json")
    private JSONObject deviceMonitors;
}








































 ==========================================================================================










 

posted @   sensen~||^_^|||&  阅读(86)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示