1. 程式人生 > 其它 >Java開發大筆記

Java開發大筆記

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

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;
}



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


1.


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