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)){ //status空name不空,按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;