diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
index c15e68c..9e0e888 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
@@ -37,7 +37,7 @@
try {
for (int i = 1; i <= codeArr.length / 3; i++) {
- nettyClient.send(codeArr[i * 3 - 1]);
+ nettyClient.send(config.getDetectorId(),codeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
index c15e68c..9e0e888 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
@@ -37,7 +37,7 @@
try {
for (int i = 1; i <= codeArr.length / 3; i++) {
- nettyClient.send(codeArr[i * 3 - 1]);
+ nettyClient.send(config.getDetectorId(),codeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
index 7171d3b..9f7768a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
@@ -2,7 +2,9 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.neutron.dto.HsDTO;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.model.Psd;
import com.casic.missiles.modular.neutron.model.Vol;
import com.casic.missiles.modular.neutron.service.IDetectorLogService;
@@ -13,12 +15,14 @@
import com.casic.missiles.netty.InstructCode;
import com.casic.missiles.netty.NettyClient;
import com.casic.missiles.common.WebSocket;
+import com.sun.javafx.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -42,7 +46,7 @@
try {
for (int i = 1; i <= InstructCode.InitCodeArr.length / 3; i++) {
- nettyClient.send(InstructCode.InitCodeArr[i * 3 - 1]);
+ nettyClient.send(detectorId, InstructCode.InitCodeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
@@ -52,26 +56,30 @@
@Override
public void pressurize(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_UP)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_UP)) {
iLogService.addLog(detectorId, "6", "start");
}
}
@Override
@Async("syncExecutorPool")
- public void analysis(String deviceIpPort, String msg) {
+ public void analysis(String deviceIpPort, String msg, Long uid) {
Map resultMap = CacheUtils.processData(msg);
List psdList = (List) resultMap.get("psd");
List volList = (List) resultMap.get("vol");
if (volList != null && volList.size() > 0) {
volList.forEach(vol -> {
+ JSONObject headerJson = new JSONObject();
+ headerJson.put("msgKey", "detector_vol");
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceIp", deviceIpPort);
jsonObject.put("vol", vol.getVolData6());
jsonObject.put("time", vol.getCreateTime());
- webSocket.sendAllMessage(jsonObject.toJSONString());
- log.info("推送电压数据"+jsonObject.toJSONString());
+ headerJson.put("data", jsonObject);
+ webSocket.sendAllMessage(headerJson.toJSONString());
+ log.info("推送电压数据" + headerJson.toJSONString());
vol.setIpPort(deviceIpPort.substring(1));
+ vol.setDetectorId(uid);
});
iVolService.saveBatch(volList);
}
@@ -85,15 +93,75 @@
Long Qshort = Math.abs(Long.valueOf(psd.getQshort(), 16) - Long.parseLong(psd.getBaseLine(), 16) * Long.parseLong(psd.getShortGate(), 16));
Double psdRate = (Qlong - Qshort) * 1.000 / Qlong;
psd.setPsd(String.format("%.2f", psdRate));
+ psd.setDetectorId(uid);
+ //设置psdx值 toDo:4096、100000 需要自动取
+ int psdx = (int) ((Qlong - Qshort) * 1.000 / Qlong * 4096);
+ int mcax = (int) ((Qlong) * 1.00000 / 100000 * 4096);
+ psd.setPsdx(psdx + "");
+ psd.setMcax(mcax + "");
+ //根据是否启动,向前端推送hs曲线数值
+ if (hsFlag) {
+ HsDTO hsDTO = new HsDTO(psdx, 1, mcax, 1);
+ if (psdx < 0 || psdx > 4096) {
+ hsDTO.setPsdX(null);
+ hsDTO.setPsdY(null);
+ }
+ if (mcax < 0 || mcax > 4096) {
+ hsDTO.setMcaX(null);
+ hsDTO.setMcaY(null);
+ }
+ //psd数据叠加到mca曲线上
+ if (psdx >= x3_3 && psdx <= x4_4) {
+ hsDTO.setMcaX1(mcax);
+ hsDTO.setMcaY1(1);
+ }
+ //mca数据叠加到psd曲线上
+ if (mcax >= x1_1 && mcax <= x2_2) {
+ if (psdx > 0) {
+ hsDTO.setPsdX1(psdx);
+ hsDTO.setPsdY1(1);
+ }
+ }
+ JSONObject headJson = new JSONObject();
+ headJson.put("msgKey", "detector_hs");
+ headJson.put("data", hsDTO);
+ webSocket.sendAllMessage(headJson.toJSONString());
+ log.info("推送HS数据" + headJson.toJSONString());
+ }
}
});
iPsdService.saveBatch(psdList);
}
}
+
+ private volatile boolean hsFlag = false;
+ private volatile int x1_1 = 0;
+ private volatile int x2_2 = 0;
+ private volatile int x3_3 = 0;
+ private volatile int x4_4 = 0;
+// private volatile List hsDTOList = new ArrayList<>() ;
+
+ @Override
+ public boolean hsList(Long detectorId, String type, int x1, int x2, int x3, int x4) {
+ x1_1 = x1;
+ x2_2 = x2;
+ x3_3 = x3;
+ x4_4 = x4;
+ switch (type) {
+ case "1":
+ hsFlag = true;
+ break;
+ case "0":
+ hsFlag = false;
+ break;
+ }
+ return true;
+ }
+
@Override
public void depress(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_DOWN)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_DOWN)) {
iLogService.addLog(detectorId, "6", "stop");
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
index c15e68c..9e0e888 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
@@ -37,7 +37,7 @@
try {
for (int i = 1; i <= codeArr.length / 3; i++) {
- nettyClient.send(codeArr[i * 3 - 1]);
+ nettyClient.send(config.getDetectorId(),codeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
index 7171d3b..9f7768a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
@@ -2,7 +2,9 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.neutron.dto.HsDTO;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.model.Psd;
import com.casic.missiles.modular.neutron.model.Vol;
import com.casic.missiles.modular.neutron.service.IDetectorLogService;
@@ -13,12 +15,14 @@
import com.casic.missiles.netty.InstructCode;
import com.casic.missiles.netty.NettyClient;
import com.casic.missiles.common.WebSocket;
+import com.sun.javafx.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -42,7 +46,7 @@
try {
for (int i = 1; i <= InstructCode.InitCodeArr.length / 3; i++) {
- nettyClient.send(InstructCode.InitCodeArr[i * 3 - 1]);
+ nettyClient.send(detectorId, InstructCode.InitCodeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
@@ -52,26 +56,30 @@
@Override
public void pressurize(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_UP)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_UP)) {
iLogService.addLog(detectorId, "6", "start");
}
}
@Override
@Async("syncExecutorPool")
- public void analysis(String deviceIpPort, String msg) {
+ public void analysis(String deviceIpPort, String msg, Long uid) {
Map resultMap = CacheUtils.processData(msg);
List psdList = (List) resultMap.get("psd");
List volList = (List) resultMap.get("vol");
if (volList != null && volList.size() > 0) {
volList.forEach(vol -> {
+ JSONObject headerJson = new JSONObject();
+ headerJson.put("msgKey", "detector_vol");
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceIp", deviceIpPort);
jsonObject.put("vol", vol.getVolData6());
jsonObject.put("time", vol.getCreateTime());
- webSocket.sendAllMessage(jsonObject.toJSONString());
- log.info("推送电压数据"+jsonObject.toJSONString());
+ headerJson.put("data", jsonObject);
+ webSocket.sendAllMessage(headerJson.toJSONString());
+ log.info("推送电压数据" + headerJson.toJSONString());
vol.setIpPort(deviceIpPort.substring(1));
+ vol.setDetectorId(uid);
});
iVolService.saveBatch(volList);
}
@@ -85,15 +93,75 @@
Long Qshort = Math.abs(Long.valueOf(psd.getQshort(), 16) - Long.parseLong(psd.getBaseLine(), 16) * Long.parseLong(psd.getShortGate(), 16));
Double psdRate = (Qlong - Qshort) * 1.000 / Qlong;
psd.setPsd(String.format("%.2f", psdRate));
+ psd.setDetectorId(uid);
+ //设置psdx值 toDo:4096、100000 需要自动取
+ int psdx = (int) ((Qlong - Qshort) * 1.000 / Qlong * 4096);
+ int mcax = (int) ((Qlong) * 1.00000 / 100000 * 4096);
+ psd.setPsdx(psdx + "");
+ psd.setMcax(mcax + "");
+ //根据是否启动,向前端推送hs曲线数值
+ if (hsFlag) {
+ HsDTO hsDTO = new HsDTO(psdx, 1, mcax, 1);
+ if (psdx < 0 || psdx > 4096) {
+ hsDTO.setPsdX(null);
+ hsDTO.setPsdY(null);
+ }
+ if (mcax < 0 || mcax > 4096) {
+ hsDTO.setMcaX(null);
+ hsDTO.setMcaY(null);
+ }
+ //psd数据叠加到mca曲线上
+ if (psdx >= x3_3 && psdx <= x4_4) {
+ hsDTO.setMcaX1(mcax);
+ hsDTO.setMcaY1(1);
+ }
+ //mca数据叠加到psd曲线上
+ if (mcax >= x1_1 && mcax <= x2_2) {
+ if (psdx > 0) {
+ hsDTO.setPsdX1(psdx);
+ hsDTO.setPsdY1(1);
+ }
+ }
+ JSONObject headJson = new JSONObject();
+ headJson.put("msgKey", "detector_hs");
+ headJson.put("data", hsDTO);
+ webSocket.sendAllMessage(headJson.toJSONString());
+ log.info("推送HS数据" + headJson.toJSONString());
+ }
}
});
iPsdService.saveBatch(psdList);
}
}
+
+ private volatile boolean hsFlag = false;
+ private volatile int x1_1 = 0;
+ private volatile int x2_2 = 0;
+ private volatile int x3_3 = 0;
+ private volatile int x4_4 = 0;
+// private volatile List hsDTOList = new ArrayList<>() ;
+
+ @Override
+ public boolean hsList(Long detectorId, String type, int x1, int x2, int x3, int x4) {
+ x1_1 = x1;
+ x2_2 = x2;
+ x3_3 = x3;
+ x4_4 = x4;
+ switch (type) {
+ case "1":
+ hsFlag = true;
+ break;
+ case "0":
+ hsFlag = false;
+ break;
+ }
+ return true;
+ }
+
@Override
public void depress(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_DOWN)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_DOWN)) {
iLogService.addLog(detectorId, "6", "stop");
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
index 8a20e31..f1adc1e 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
@@ -58,7 +58,7 @@
long countX = DateUtil.between(DateUtil.parseDateTime(last.getTimeCount()), DateUtil.parseDateTime(startTime), DateUnit.SECOND, true);
for (int i = 0; i <= countX / 5; i++) {
if (i == 0) {
- psdDataDTOS.add(new PsdDataDTO("0", "0"));
+ psdDataDTOS.add(new PsdDataDTO("0", "0"));
continue;
}
int countY = 0;
@@ -74,7 +74,7 @@
}
}
}
- psdDataDTO.setValueCount((int) Math.ceil(countY / 5) + "");
+ psdDataDTO.setValueCount(String.format("%.2f",countY*1.00 / 5));
psdDataDTOS.add(psdDataDTO);
}
}
@@ -105,10 +105,14 @@
trajectoryInfo.getPostionY() + "",
alarmTime));
return psdAlarmDTOList;
-
}
}
}
return psdAlarmDTOList;
}
+
+ @Override
+ public List hsList(Long detectorId,String type) {
+ return null;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
index c15e68c..9e0e888 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
@@ -37,7 +37,7 @@
try {
for (int i = 1; i <= codeArr.length / 3; i++) {
- nettyClient.send(codeArr[i * 3 - 1]);
+ nettyClient.send(config.getDetectorId(),codeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
index 7171d3b..9f7768a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
@@ -2,7 +2,9 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.neutron.dto.HsDTO;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.model.Psd;
import com.casic.missiles.modular.neutron.model.Vol;
import com.casic.missiles.modular.neutron.service.IDetectorLogService;
@@ -13,12 +15,14 @@
import com.casic.missiles.netty.InstructCode;
import com.casic.missiles.netty.NettyClient;
import com.casic.missiles.common.WebSocket;
+import com.sun.javafx.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -42,7 +46,7 @@
try {
for (int i = 1; i <= InstructCode.InitCodeArr.length / 3; i++) {
- nettyClient.send(InstructCode.InitCodeArr[i * 3 - 1]);
+ nettyClient.send(detectorId, InstructCode.InitCodeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
@@ -52,26 +56,30 @@
@Override
public void pressurize(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_UP)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_UP)) {
iLogService.addLog(detectorId, "6", "start");
}
}
@Override
@Async("syncExecutorPool")
- public void analysis(String deviceIpPort, String msg) {
+ public void analysis(String deviceIpPort, String msg, Long uid) {
Map resultMap = CacheUtils.processData(msg);
List psdList = (List) resultMap.get("psd");
List volList = (List) resultMap.get("vol");
if (volList != null && volList.size() > 0) {
volList.forEach(vol -> {
+ JSONObject headerJson = new JSONObject();
+ headerJson.put("msgKey", "detector_vol");
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceIp", deviceIpPort);
jsonObject.put("vol", vol.getVolData6());
jsonObject.put("time", vol.getCreateTime());
- webSocket.sendAllMessage(jsonObject.toJSONString());
- log.info("推送电压数据"+jsonObject.toJSONString());
+ headerJson.put("data", jsonObject);
+ webSocket.sendAllMessage(headerJson.toJSONString());
+ log.info("推送电压数据" + headerJson.toJSONString());
vol.setIpPort(deviceIpPort.substring(1));
+ vol.setDetectorId(uid);
});
iVolService.saveBatch(volList);
}
@@ -85,15 +93,75 @@
Long Qshort = Math.abs(Long.valueOf(psd.getQshort(), 16) - Long.parseLong(psd.getBaseLine(), 16) * Long.parseLong(psd.getShortGate(), 16));
Double psdRate = (Qlong - Qshort) * 1.000 / Qlong;
psd.setPsd(String.format("%.2f", psdRate));
+ psd.setDetectorId(uid);
+ //设置psdx值 toDo:4096、100000 需要自动取
+ int psdx = (int) ((Qlong - Qshort) * 1.000 / Qlong * 4096);
+ int mcax = (int) ((Qlong) * 1.00000 / 100000 * 4096);
+ psd.setPsdx(psdx + "");
+ psd.setMcax(mcax + "");
+ //根据是否启动,向前端推送hs曲线数值
+ if (hsFlag) {
+ HsDTO hsDTO = new HsDTO(psdx, 1, mcax, 1);
+ if (psdx < 0 || psdx > 4096) {
+ hsDTO.setPsdX(null);
+ hsDTO.setPsdY(null);
+ }
+ if (mcax < 0 || mcax > 4096) {
+ hsDTO.setMcaX(null);
+ hsDTO.setMcaY(null);
+ }
+ //psd数据叠加到mca曲线上
+ if (psdx >= x3_3 && psdx <= x4_4) {
+ hsDTO.setMcaX1(mcax);
+ hsDTO.setMcaY1(1);
+ }
+ //mca数据叠加到psd曲线上
+ if (mcax >= x1_1 && mcax <= x2_2) {
+ if (psdx > 0) {
+ hsDTO.setPsdX1(psdx);
+ hsDTO.setPsdY1(1);
+ }
+ }
+ JSONObject headJson = new JSONObject();
+ headJson.put("msgKey", "detector_hs");
+ headJson.put("data", hsDTO);
+ webSocket.sendAllMessage(headJson.toJSONString());
+ log.info("推送HS数据" + headJson.toJSONString());
+ }
}
});
iPsdService.saveBatch(psdList);
}
}
+
+ private volatile boolean hsFlag = false;
+ private volatile int x1_1 = 0;
+ private volatile int x2_2 = 0;
+ private volatile int x3_3 = 0;
+ private volatile int x4_4 = 0;
+// private volatile List hsDTOList = new ArrayList<>() ;
+
+ @Override
+ public boolean hsList(Long detectorId, String type, int x1, int x2, int x3, int x4) {
+ x1_1 = x1;
+ x2_2 = x2;
+ x3_3 = x3;
+ x4_4 = x4;
+ switch (type) {
+ case "1":
+ hsFlag = true;
+ break;
+ case "0":
+ hsFlag = false;
+ break;
+ }
+ return true;
+ }
+
@Override
public void depress(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_DOWN)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_DOWN)) {
iLogService.addLog(detectorId, "6", "stop");
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
index 8a20e31..f1adc1e 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
@@ -58,7 +58,7 @@
long countX = DateUtil.between(DateUtil.parseDateTime(last.getTimeCount()), DateUtil.parseDateTime(startTime), DateUnit.SECOND, true);
for (int i = 0; i <= countX / 5; i++) {
if (i == 0) {
- psdDataDTOS.add(new PsdDataDTO("0", "0"));
+ psdDataDTOS.add(new PsdDataDTO("0", "0"));
continue;
}
int countY = 0;
@@ -74,7 +74,7 @@
}
}
}
- psdDataDTO.setValueCount((int) Math.ceil(countY / 5) + "");
+ psdDataDTO.setValueCount(String.format("%.2f",countY*1.00 / 5));
psdDataDTOS.add(psdDataDTO);
}
}
@@ -105,10 +105,14 @@
trajectoryInfo.getPostionY() + "",
alarmTime));
return psdAlarmDTOList;
-
}
}
}
return psdAlarmDTOList;
}
+
+ @Override
+ public List hsList(Long detectorId,String type) {
+ return null;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
index 8b9aaf2..7531a59 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
@@ -58,14 +58,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.VOL_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1) {
-// if (msgs.length() < (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
-// msgLast = msgs.substring(msgs.indexOf(msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH)));
-// CacheUtils.VOL_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
}
}
@@ -83,17 +75,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.PSD_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.PSD1_HEAD) != -1) {
-// if (msgs.length() >= 24) {
-// int totalLength = Integer.parseInt(ByteUtil.reverseHex(msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD) + 16, 24)), 16);
-// if (msgs.length() < totalLength * 2) {
-// msgLast = msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD));
-// CacheUtils.PSD_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
-// }
}
}
return msgs;
@@ -133,12 +114,12 @@
for (int i = 0; i < (msg.length() - (msg.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = msg.substring((msg.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (msg.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
@@ -146,7 +127,7 @@
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
} else {
@@ -168,23 +149,23 @@
int totalLength = Integer.parseInt(ByteUtil.reverseHex(str.substring(str.indexOf(InstructCode.PSD1_HEAD) + 16,
str.indexOf(InstructCode.PSD1_HEAD) + 24)), 16);
if (str.length() >= totalLength * 2) {
+ PSD_FLAG = false;
for (int i = 0; i < (str.length() - (str.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = str.substring((str.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (str.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
- //toDo:算法计算
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("分包:gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
"longGate--->" + longGate +
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
}
@@ -211,7 +192,7 @@
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
} else {
//分包处理,先放到缓存
VOL_FLAG = true;
@@ -222,15 +203,15 @@
VOL_I++;
CacheUtils.VOL_MAP.put(VOL_I, msg);
String str = startVolMapCache();
- if (ObjectUtil.isNotEmpty(str) &&
+ VOL_FLAG = false;
+ if (ObjectUtil.isNotEmpty(str) &&str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1&&
str.length() >= (str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
- VOL_FLAG = false;
str = str.substring(str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24);
String[] volArr = InstructCode.getVolArr(str);
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("分包第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
}
}
return volList;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
index c15e68c..9e0e888 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
@@ -37,7 +37,7 @@
try {
for (int i = 1; i <= codeArr.length / 3; i++) {
- nettyClient.send(codeArr[i * 3 - 1]);
+ nettyClient.send(config.getDetectorId(),codeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
index 7171d3b..9f7768a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
@@ -2,7 +2,9 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.neutron.dto.HsDTO;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.model.Psd;
import com.casic.missiles.modular.neutron.model.Vol;
import com.casic.missiles.modular.neutron.service.IDetectorLogService;
@@ -13,12 +15,14 @@
import com.casic.missiles.netty.InstructCode;
import com.casic.missiles.netty.NettyClient;
import com.casic.missiles.common.WebSocket;
+import com.sun.javafx.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -42,7 +46,7 @@
try {
for (int i = 1; i <= InstructCode.InitCodeArr.length / 3; i++) {
- nettyClient.send(InstructCode.InitCodeArr[i * 3 - 1]);
+ nettyClient.send(detectorId, InstructCode.InitCodeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
@@ -52,26 +56,30 @@
@Override
public void pressurize(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_UP)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_UP)) {
iLogService.addLog(detectorId, "6", "start");
}
}
@Override
@Async("syncExecutorPool")
- public void analysis(String deviceIpPort, String msg) {
+ public void analysis(String deviceIpPort, String msg, Long uid) {
Map resultMap = CacheUtils.processData(msg);
List psdList = (List) resultMap.get("psd");
List volList = (List) resultMap.get("vol");
if (volList != null && volList.size() > 0) {
volList.forEach(vol -> {
+ JSONObject headerJson = new JSONObject();
+ headerJson.put("msgKey", "detector_vol");
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceIp", deviceIpPort);
jsonObject.put("vol", vol.getVolData6());
jsonObject.put("time", vol.getCreateTime());
- webSocket.sendAllMessage(jsonObject.toJSONString());
- log.info("推送电压数据"+jsonObject.toJSONString());
+ headerJson.put("data", jsonObject);
+ webSocket.sendAllMessage(headerJson.toJSONString());
+ log.info("推送电压数据" + headerJson.toJSONString());
vol.setIpPort(deviceIpPort.substring(1));
+ vol.setDetectorId(uid);
});
iVolService.saveBatch(volList);
}
@@ -85,15 +93,75 @@
Long Qshort = Math.abs(Long.valueOf(psd.getQshort(), 16) - Long.parseLong(psd.getBaseLine(), 16) * Long.parseLong(psd.getShortGate(), 16));
Double psdRate = (Qlong - Qshort) * 1.000 / Qlong;
psd.setPsd(String.format("%.2f", psdRate));
+ psd.setDetectorId(uid);
+ //设置psdx值 toDo:4096、100000 需要自动取
+ int psdx = (int) ((Qlong - Qshort) * 1.000 / Qlong * 4096);
+ int mcax = (int) ((Qlong) * 1.00000 / 100000 * 4096);
+ psd.setPsdx(psdx + "");
+ psd.setMcax(mcax + "");
+ //根据是否启动,向前端推送hs曲线数值
+ if (hsFlag) {
+ HsDTO hsDTO = new HsDTO(psdx, 1, mcax, 1);
+ if (psdx < 0 || psdx > 4096) {
+ hsDTO.setPsdX(null);
+ hsDTO.setPsdY(null);
+ }
+ if (mcax < 0 || mcax > 4096) {
+ hsDTO.setMcaX(null);
+ hsDTO.setMcaY(null);
+ }
+ //psd数据叠加到mca曲线上
+ if (psdx >= x3_3 && psdx <= x4_4) {
+ hsDTO.setMcaX1(mcax);
+ hsDTO.setMcaY1(1);
+ }
+ //mca数据叠加到psd曲线上
+ if (mcax >= x1_1 && mcax <= x2_2) {
+ if (psdx > 0) {
+ hsDTO.setPsdX1(psdx);
+ hsDTO.setPsdY1(1);
+ }
+ }
+ JSONObject headJson = new JSONObject();
+ headJson.put("msgKey", "detector_hs");
+ headJson.put("data", hsDTO);
+ webSocket.sendAllMessage(headJson.toJSONString());
+ log.info("推送HS数据" + headJson.toJSONString());
+ }
}
});
iPsdService.saveBatch(psdList);
}
}
+
+ private volatile boolean hsFlag = false;
+ private volatile int x1_1 = 0;
+ private volatile int x2_2 = 0;
+ private volatile int x3_3 = 0;
+ private volatile int x4_4 = 0;
+// private volatile List hsDTOList = new ArrayList<>() ;
+
+ @Override
+ public boolean hsList(Long detectorId, String type, int x1, int x2, int x3, int x4) {
+ x1_1 = x1;
+ x2_2 = x2;
+ x3_3 = x3;
+ x4_4 = x4;
+ switch (type) {
+ case "1":
+ hsFlag = true;
+ break;
+ case "0":
+ hsFlag = false;
+ break;
+ }
+ return true;
+ }
+
@Override
public void depress(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_DOWN)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_DOWN)) {
iLogService.addLog(detectorId, "6", "stop");
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
index 8a20e31..f1adc1e 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
@@ -58,7 +58,7 @@
long countX = DateUtil.between(DateUtil.parseDateTime(last.getTimeCount()), DateUtil.parseDateTime(startTime), DateUnit.SECOND, true);
for (int i = 0; i <= countX / 5; i++) {
if (i == 0) {
- psdDataDTOS.add(new PsdDataDTO("0", "0"));
+ psdDataDTOS.add(new PsdDataDTO("0", "0"));
continue;
}
int countY = 0;
@@ -74,7 +74,7 @@
}
}
}
- psdDataDTO.setValueCount((int) Math.ceil(countY / 5) + "");
+ psdDataDTO.setValueCount(String.format("%.2f",countY*1.00 / 5));
psdDataDTOS.add(psdDataDTO);
}
}
@@ -105,10 +105,14 @@
trajectoryInfo.getPostionY() + "",
alarmTime));
return psdAlarmDTOList;
-
}
}
}
return psdAlarmDTOList;
}
+
+ @Override
+ public List hsList(Long detectorId,String type) {
+ return null;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
index 8b9aaf2..7531a59 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
@@ -58,14 +58,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.VOL_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1) {
-// if (msgs.length() < (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
-// msgLast = msgs.substring(msgs.indexOf(msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH)));
-// CacheUtils.VOL_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
}
}
@@ -83,17 +75,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.PSD_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.PSD1_HEAD) != -1) {
-// if (msgs.length() >= 24) {
-// int totalLength = Integer.parseInt(ByteUtil.reverseHex(msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD) + 16, 24)), 16);
-// if (msgs.length() < totalLength * 2) {
-// msgLast = msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD));
-// CacheUtils.PSD_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
-// }
}
}
return msgs;
@@ -133,12 +114,12 @@
for (int i = 0; i < (msg.length() - (msg.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = msg.substring((msg.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (msg.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
@@ -146,7 +127,7 @@
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
} else {
@@ -168,23 +149,23 @@
int totalLength = Integer.parseInt(ByteUtil.reverseHex(str.substring(str.indexOf(InstructCode.PSD1_HEAD) + 16,
str.indexOf(InstructCode.PSD1_HEAD) + 24)), 16);
if (str.length() >= totalLength * 2) {
+ PSD_FLAG = false;
for (int i = 0; i < (str.length() - (str.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = str.substring((str.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (str.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
- //toDo:算法计算
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("分包:gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
"longGate--->" + longGate +
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
}
@@ -211,7 +192,7 @@
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
} else {
//分包处理,先放到缓存
VOL_FLAG = true;
@@ -222,15 +203,15 @@
VOL_I++;
CacheUtils.VOL_MAP.put(VOL_I, msg);
String str = startVolMapCache();
- if (ObjectUtil.isNotEmpty(str) &&
+ VOL_FLAG = false;
+ if (ObjectUtil.isNotEmpty(str) &&str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1&&
str.length() >= (str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
- VOL_FLAG = false;
str = str.substring(str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24);
String[] volArr = InstructCode.getVolArr(str);
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("分包第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
}
}
return volList;
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java b/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
index 24ec5a5..d58645a 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
@@ -1,44 +1,36 @@
package com.casic.missiles.netty;
+import cn.hutool.core.util.ObjectUtil;
import io.netty.channel.Channel;
-import io.netty.channel.group.ChannelGroup;
-import io.netty.channel.group.DefaultChannelGroup;
-import io.netty.util.concurrent.GlobalEventExecutor;
-import org.springframework.context.annotation.Configuration;
+import io.netty.util.AttributeKey;
+import org.springframework.stereotype.Component;
import java.util.concurrent.ConcurrentHashMap;
-@Configuration
+@Component
public class ChannelCache {
- // 存储所有Channel
- private ChannelGroup channelGroup = new DefaultChannelGroup("channelGroups", GlobalEventExecutor.INSTANCE);
- // 存储Channel.id().asLongText()和用户id对应关系
- private ConcurrentHashMap channelIdUid = new ConcurrentHashMap();
+ // 存储用户id和Channel.id().asLongText()对应关系
+ private static final ConcurrentHashMap channelMap = new ConcurrentHashMap();
- public ChannelGroup getChannelGroup() {
- return channelGroup;
- }
+ // 存储用户id和Channel.id().asLongText()对应关系
+ private static final ConcurrentHashMap channelIdUid = new ConcurrentHashMap();
- public ConcurrentHashMap getChannelIdUid() {
+ private static final AttributeKey CHANNEL_ATTR_KEY = AttributeKey.valueOf("user");
+
+
+ public ConcurrentHashMap getChannelIdUid() {
return channelIdUid;
}
-
/**
* 获取Channel
*
* @return
*/
- public Channel getChannel(Channel channel) {
- Channel channel_ = channelGroup.find(channel.id());
- if (channel_ != null) {
- return channel_;
- }
- return null;
- }
+
/**
* 添加Channel到ChannelGroup
@@ -46,15 +38,14 @@
* @param uid
* @param channel
*/
- public void addChannel(Channel channel, int uid) {
- Channel channel_ = channelGroup.find(channel.id());
- if (channel_ == null) {
- channelGroup.add(channel);
- }
+ public synchronized void addChannel(Channel channel, String uid) {
- // redis添加对应用户和channelId之前的关系
- Integer userId = channelIdUid.get(channel.id().asLongText());
- channelIdUid.put(channel.id().asLongText(), userId);
+ channel.attr(CHANNEL_ATTR_KEY).set(uid);
+ Channel channel_ = channelMap.get(channel.id().asLongText());
+ if (channel_ == null) {
+ channelMap.put(channel.id().asLongText(), channel);
+ }
+ channelIdUid.put(uid, channel.id().asLongText());
}
/**
@@ -62,17 +53,36 @@
*
* @param channel
*/
- public void removeChannel(Channel channel) {
- Channel channel_ = channelGroup.find(channel.id());
+ public synchronized void removeChannel(Channel channel) {
+ Channel channel_ = channelMap.get(channel.id().asLongText());
if (channel_ != null) {
- channelGroup.remove(channel_);
+ channelMap.remove(channel.id().asLongText());
}
- Integer userId = channelIdUid.get(channel.id().asLongText());
+ String userId = channel.attr(CHANNEL_ATTR_KEY).get();
if (userId != null) {
- channelIdUid.remove(channel.id().asLongText());
+ channelIdUid.remove(userId);
}
}
+ /**
+ * 获取Channel
+ *
+ * @return
+ */
+ /**
+ * 根据用户id获取该用户的通道
+ *
+ * @param userId
+ * @return
+ */
+ public synchronized Channel getChannelByUserId(String userId) {
+ String channelIdStr = channelIdUid.get(userId);
+ if (ObjectUtil.isNotEmpty(channelIdStr)) {
+ return channelMap.get(channelIdStr);
+ }
+ return null;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
index c15e68c..9e0e888 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
@@ -37,7 +37,7 @@
try {
for (int i = 1; i <= codeArr.length / 3; i++) {
- nettyClient.send(codeArr[i * 3 - 1]);
+ nettyClient.send(config.getDetectorId(),codeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
index 7171d3b..9f7768a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
@@ -2,7 +2,9 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.neutron.dto.HsDTO;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.model.Psd;
import com.casic.missiles.modular.neutron.model.Vol;
import com.casic.missiles.modular.neutron.service.IDetectorLogService;
@@ -13,12 +15,14 @@
import com.casic.missiles.netty.InstructCode;
import com.casic.missiles.netty.NettyClient;
import com.casic.missiles.common.WebSocket;
+import com.sun.javafx.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -42,7 +46,7 @@
try {
for (int i = 1; i <= InstructCode.InitCodeArr.length / 3; i++) {
- nettyClient.send(InstructCode.InitCodeArr[i * 3 - 1]);
+ nettyClient.send(detectorId, InstructCode.InitCodeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
@@ -52,26 +56,30 @@
@Override
public void pressurize(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_UP)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_UP)) {
iLogService.addLog(detectorId, "6", "start");
}
}
@Override
@Async("syncExecutorPool")
- public void analysis(String deviceIpPort, String msg) {
+ public void analysis(String deviceIpPort, String msg, Long uid) {
Map resultMap = CacheUtils.processData(msg);
List psdList = (List) resultMap.get("psd");
List volList = (List) resultMap.get("vol");
if (volList != null && volList.size() > 0) {
volList.forEach(vol -> {
+ JSONObject headerJson = new JSONObject();
+ headerJson.put("msgKey", "detector_vol");
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceIp", deviceIpPort);
jsonObject.put("vol", vol.getVolData6());
jsonObject.put("time", vol.getCreateTime());
- webSocket.sendAllMessage(jsonObject.toJSONString());
- log.info("推送电压数据"+jsonObject.toJSONString());
+ headerJson.put("data", jsonObject);
+ webSocket.sendAllMessage(headerJson.toJSONString());
+ log.info("推送电压数据" + headerJson.toJSONString());
vol.setIpPort(deviceIpPort.substring(1));
+ vol.setDetectorId(uid);
});
iVolService.saveBatch(volList);
}
@@ -85,15 +93,75 @@
Long Qshort = Math.abs(Long.valueOf(psd.getQshort(), 16) - Long.parseLong(psd.getBaseLine(), 16) * Long.parseLong(psd.getShortGate(), 16));
Double psdRate = (Qlong - Qshort) * 1.000 / Qlong;
psd.setPsd(String.format("%.2f", psdRate));
+ psd.setDetectorId(uid);
+ //设置psdx值 toDo:4096、100000 需要自动取
+ int psdx = (int) ((Qlong - Qshort) * 1.000 / Qlong * 4096);
+ int mcax = (int) ((Qlong) * 1.00000 / 100000 * 4096);
+ psd.setPsdx(psdx + "");
+ psd.setMcax(mcax + "");
+ //根据是否启动,向前端推送hs曲线数值
+ if (hsFlag) {
+ HsDTO hsDTO = new HsDTO(psdx, 1, mcax, 1);
+ if (psdx < 0 || psdx > 4096) {
+ hsDTO.setPsdX(null);
+ hsDTO.setPsdY(null);
+ }
+ if (mcax < 0 || mcax > 4096) {
+ hsDTO.setMcaX(null);
+ hsDTO.setMcaY(null);
+ }
+ //psd数据叠加到mca曲线上
+ if (psdx >= x3_3 && psdx <= x4_4) {
+ hsDTO.setMcaX1(mcax);
+ hsDTO.setMcaY1(1);
+ }
+ //mca数据叠加到psd曲线上
+ if (mcax >= x1_1 && mcax <= x2_2) {
+ if (psdx > 0) {
+ hsDTO.setPsdX1(psdx);
+ hsDTO.setPsdY1(1);
+ }
+ }
+ JSONObject headJson = new JSONObject();
+ headJson.put("msgKey", "detector_hs");
+ headJson.put("data", hsDTO);
+ webSocket.sendAllMessage(headJson.toJSONString());
+ log.info("推送HS数据" + headJson.toJSONString());
+ }
}
});
iPsdService.saveBatch(psdList);
}
}
+
+ private volatile boolean hsFlag = false;
+ private volatile int x1_1 = 0;
+ private volatile int x2_2 = 0;
+ private volatile int x3_3 = 0;
+ private volatile int x4_4 = 0;
+// private volatile List hsDTOList = new ArrayList<>() ;
+
+ @Override
+ public boolean hsList(Long detectorId, String type, int x1, int x2, int x3, int x4) {
+ x1_1 = x1;
+ x2_2 = x2;
+ x3_3 = x3;
+ x4_4 = x4;
+ switch (type) {
+ case "1":
+ hsFlag = true;
+ break;
+ case "0":
+ hsFlag = false;
+ break;
+ }
+ return true;
+ }
+
@Override
public void depress(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_DOWN)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_DOWN)) {
iLogService.addLog(detectorId, "6", "stop");
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
index 8a20e31..f1adc1e 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
@@ -58,7 +58,7 @@
long countX = DateUtil.between(DateUtil.parseDateTime(last.getTimeCount()), DateUtil.parseDateTime(startTime), DateUnit.SECOND, true);
for (int i = 0; i <= countX / 5; i++) {
if (i == 0) {
- psdDataDTOS.add(new PsdDataDTO("0", "0"));
+ psdDataDTOS.add(new PsdDataDTO("0", "0"));
continue;
}
int countY = 0;
@@ -74,7 +74,7 @@
}
}
}
- psdDataDTO.setValueCount((int) Math.ceil(countY / 5) + "");
+ psdDataDTO.setValueCount(String.format("%.2f",countY*1.00 / 5));
psdDataDTOS.add(psdDataDTO);
}
}
@@ -105,10 +105,14 @@
trajectoryInfo.getPostionY() + "",
alarmTime));
return psdAlarmDTOList;
-
}
}
}
return psdAlarmDTOList;
}
+
+ @Override
+ public List hsList(Long detectorId,String type) {
+ return null;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
index 8b9aaf2..7531a59 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
@@ -58,14 +58,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.VOL_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1) {
-// if (msgs.length() < (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
-// msgLast = msgs.substring(msgs.indexOf(msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH)));
-// CacheUtils.VOL_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
}
}
@@ -83,17 +75,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.PSD_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.PSD1_HEAD) != -1) {
-// if (msgs.length() >= 24) {
-// int totalLength = Integer.parseInt(ByteUtil.reverseHex(msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD) + 16, 24)), 16);
-// if (msgs.length() < totalLength * 2) {
-// msgLast = msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD));
-// CacheUtils.PSD_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
-// }
}
}
return msgs;
@@ -133,12 +114,12 @@
for (int i = 0; i < (msg.length() - (msg.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = msg.substring((msg.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (msg.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
@@ -146,7 +127,7 @@
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
} else {
@@ -168,23 +149,23 @@
int totalLength = Integer.parseInt(ByteUtil.reverseHex(str.substring(str.indexOf(InstructCode.PSD1_HEAD) + 16,
str.indexOf(InstructCode.PSD1_HEAD) + 24)), 16);
if (str.length() >= totalLength * 2) {
+ PSD_FLAG = false;
for (int i = 0; i < (str.length() - (str.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = str.substring((str.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (str.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
- //toDo:算法计算
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("分包:gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
"longGate--->" + longGate +
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
}
@@ -211,7 +192,7 @@
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
} else {
//分包处理,先放到缓存
VOL_FLAG = true;
@@ -222,15 +203,15 @@
VOL_I++;
CacheUtils.VOL_MAP.put(VOL_I, msg);
String str = startVolMapCache();
- if (ObjectUtil.isNotEmpty(str) &&
+ VOL_FLAG = false;
+ if (ObjectUtil.isNotEmpty(str) &&str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1&&
str.length() >= (str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
- VOL_FLAG = false;
str = str.substring(str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24);
String[] volArr = InstructCode.getVolArr(str);
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("分包第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
}
}
return volList;
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java b/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
index 24ec5a5..d58645a 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
@@ -1,44 +1,36 @@
package com.casic.missiles.netty;
+import cn.hutool.core.util.ObjectUtil;
import io.netty.channel.Channel;
-import io.netty.channel.group.ChannelGroup;
-import io.netty.channel.group.DefaultChannelGroup;
-import io.netty.util.concurrent.GlobalEventExecutor;
-import org.springframework.context.annotation.Configuration;
+import io.netty.util.AttributeKey;
+import org.springframework.stereotype.Component;
import java.util.concurrent.ConcurrentHashMap;
-@Configuration
+@Component
public class ChannelCache {
- // 存储所有Channel
- private ChannelGroup channelGroup = new DefaultChannelGroup("channelGroups", GlobalEventExecutor.INSTANCE);
- // 存储Channel.id().asLongText()和用户id对应关系
- private ConcurrentHashMap channelIdUid = new ConcurrentHashMap();
+ // 存储用户id和Channel.id().asLongText()对应关系
+ private static final ConcurrentHashMap channelMap = new ConcurrentHashMap();
- public ChannelGroup getChannelGroup() {
- return channelGroup;
- }
+ // 存储用户id和Channel.id().asLongText()对应关系
+ private static final ConcurrentHashMap channelIdUid = new ConcurrentHashMap();
- public ConcurrentHashMap getChannelIdUid() {
+ private static final AttributeKey CHANNEL_ATTR_KEY = AttributeKey.valueOf("user");
+
+
+ public ConcurrentHashMap getChannelIdUid() {
return channelIdUid;
}
-
/**
* 获取Channel
*
* @return
*/
- public Channel getChannel(Channel channel) {
- Channel channel_ = channelGroup.find(channel.id());
- if (channel_ != null) {
- return channel_;
- }
- return null;
- }
+
/**
* 添加Channel到ChannelGroup
@@ -46,15 +38,14 @@
* @param uid
* @param channel
*/
- public void addChannel(Channel channel, int uid) {
- Channel channel_ = channelGroup.find(channel.id());
- if (channel_ == null) {
- channelGroup.add(channel);
- }
+ public synchronized void addChannel(Channel channel, String uid) {
- // redis添加对应用户和channelId之前的关系
- Integer userId = channelIdUid.get(channel.id().asLongText());
- channelIdUid.put(channel.id().asLongText(), userId);
+ channel.attr(CHANNEL_ATTR_KEY).set(uid);
+ Channel channel_ = channelMap.get(channel.id().asLongText());
+ if (channel_ == null) {
+ channelMap.put(channel.id().asLongText(), channel);
+ }
+ channelIdUid.put(uid, channel.id().asLongText());
}
/**
@@ -62,17 +53,36 @@
*
* @param channel
*/
- public void removeChannel(Channel channel) {
- Channel channel_ = channelGroup.find(channel.id());
+ public synchronized void removeChannel(Channel channel) {
+ Channel channel_ = channelMap.get(channel.id().asLongText());
if (channel_ != null) {
- channelGroup.remove(channel_);
+ channelMap.remove(channel.id().asLongText());
}
- Integer userId = channelIdUid.get(channel.id().asLongText());
+ String userId = channel.attr(CHANNEL_ATTR_KEY).get();
if (userId != null) {
- channelIdUid.remove(channel.id().asLongText());
+ channelIdUid.remove(userId);
}
}
+ /**
+ * 获取Channel
+ *
+ * @return
+ */
+ /**
+ * 根据用户id获取该用户的通道
+ *
+ * @param userId
+ * @return
+ */
+ public synchronized Channel getChannelByUserId(String userId) {
+ String channelIdStr = channelIdUid.get(userId);
+ if (ObjectUtil.isNotEmpty(channelIdStr)) {
+ return channelMap.get(channelIdStr);
+ }
+ return null;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java b/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java
index b91ef75..5fdb5b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java
@@ -1,5 +1,8 @@
package com.casic.missiles.netty;
+import com.casic.missiles.modular.neutron.service.INeutronOptService;
+import com.casic.missiles.modular.robot.model.DetectorInfo;
+import com.casic.missiles.modular.robot.service.IDetectorInfoService;
import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
@@ -13,6 +16,7 @@
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
+import java.util.List;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.TimeUnit;
@@ -20,18 +24,20 @@
@Component
public class NettyClient {
-// static final int SIZE = Integer.parseInt(System.getProperty("size", "256"));
-
private final EventLoopGroup group = new NioEventLoopGroup();
private ChannelFuture mChannelFuture = null;
private final ThreadLocal mChannel = new ThreadLocal<>();
-// private final ThreadLocalMap threadLocalMap = new ThreadLocalMap;
-// ThreadLocalMap
+ // @Resource
+// private NettyClientHandler nettyClientHandler;
@Resource
- private NettyClientHandler nettyClientHandler;
+ private IDetectorInfoService iDetectorInfoService;
+ @Resource
+ private ChannelCache channelCache;
+ @Resource
+ private INeutronOptService neutronOptService;
- public void startClient(String host, int port) {
+ public void startClient(String host, int port, Long userId) {
// Configure the client.
try {
Bootstrap b = new Bootstrap();
@@ -44,23 +50,23 @@
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast(new HjtDecoder());
-// p.addLast(new NettyClientHandler(NettyClient.this));
- p.addLast(nettyClientHandler);
+ p.addLast(new NettyClientHandler(userId,channelCache,neutronOptService));
+// p.addLast(nettyClientHandler);
}
});
- mChannelFuture = b.connect(host, port).addListener(new ChannelFutureListener(){
+ mChannelFuture = b.connect(host, port).addListener(new ChannelFutureListener() {
@Override
- public void operationComplete(ChannelFuture future){
+ public void operationComplete(ChannelFuture future) {
if (future.isSuccess()) {
- log.info("探测器{}--连接成功!!", host);
+ log.info("探测器{}:{}--连接成功!!", host, port);
} else {
- log.error("探测器{}--连接失败!!", host);
+ log.error("探测器{}:{}--连接失败!!", host, port);
future.channel().eventLoop().schedule(new Runnable() {
@Override
public void run() {
- log.info("探测器{}--重新连接!!", host);
- startClient(host, port);
+ log.info("探测器{}:{}--重新连接!!", host, port);
+ startClient(host, port, userId);
}
}, 10, TimeUnit.SECONDS);
}
@@ -76,7 +82,7 @@
*
* @param data 文本数据
*/
- public boolean send(String data) {
+ public boolean send1(String data) {
try {
if (mChannel.get() == null) {
mChannel.set(mChannelFuture.channel());
@@ -89,12 +95,35 @@
return false;
}
+ //发送数据
+ public boolean send(Long uid, String data) {
+ try {
+ Channel channel = channelCache.getChannelByUserId(uid + "");
+ if (channel != null) {
+ channel.writeAndFlush(Unpooled.copiedBuffer(data.getBytes(StandardCharsets.UTF_8)));
+ return true;
+ } else {
+ log.error("探测器id--->{}--未连接,请检查设备", uid);
+ }
+
+ } catch (Exception e) {
+ log.error(this.getClass().getName().concat(".send has error"), e);
+ }
+ return false;
+ }
+
// 客户端启动,并连上服务器端
@PostConstruct
public void init() {
- System.out.println("开始连接了------>");
- ForkJoinPool.commonPool().submit(() -> startClient("192.168.1.50", 52002));
-// ForkJoinPool.commonPool().submit(() -> startClient("127.0.0.1", 52002));
+ System.out.println("中子源探测器开始连接了------>");
+ List detectorInfoList = iDetectorInfoService.list();
+ if (null != detectorInfoList && detectorInfoList.size() > 0) {
+ detectorInfoList.forEach(detectorInfo -> {
+ ForkJoinPool.commonPool().submit(() -> startClient(detectorInfo.getDetectorIp(),
+ detectorInfo.getDetectorPort(), detectorInfo.getId()));
+ });
+ }
+// ForkJoinPool.commonPool().submit(() -> startClient("192.168.1.50", 52002));
}
@PreDestroy
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
index 4f1136b..d560517 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/controller/NeutronController.java
@@ -2,6 +2,7 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.neutron.dto.HsRequest;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.service.INeutronOptService;
@@ -34,9 +35,9 @@
@ApiOperation("控制指令类型(start-加压开始工作,stop-退高压,停止工作")
@PostMapping("/control")
@ResponseBody
- public ResponseDataDTO control(String command,Long detectorId) {
+ public ResponseDataDTO control(String command, Long detectorId) {
//toDo:需要加返回值
- neutronOptService.control(command,detectorId);
+ neutronOptService.control(command, detectorId);
return ResponseDataDTO.success();
}
@@ -57,5 +58,18 @@
return ResponseDataDTO.success(iPsdService.dataList(taskId));
}
+ @ApiOperation("主界面HS显示,需传探测器detectorId,type值为1:启动,0:停止")
+ @PostMapping("/hsList")
+ @ResponseBody
+ public ResponseDataDTO hsList(HsRequest request) {
+
+ return ResponseDataDTO.success(neutronOptService.hsList(request.getDetectorId(),
+ request.getType(),
+ request.getX1(),
+ request.getX2(),
+ request.getX3(),
+ request.getX4()));
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
index 5ac549c..236aa30 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dao/mapping/PsdMapper.xml
@@ -31,7 +31,7 @@
FROM detector_info di
WHERE di.robot_id = #{robotId})
AND dp.CREATE_TIME >= #{startTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
ORDER BY dp.CREATE_TIME ASC LIMIT 13
@@ -50,7 +50,7 @@
and dp.CREATE_TIME #{endTime}
- AND dp.PSD > 0.18
+ AND dp.PSD > 0
GROUP BY dp.CREATE_TIME
ORDER BY dp.CREATE_TIME ASC
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
new file mode 100644
index 0000000..4b42612
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsDTO.java
@@ -0,0 +1,40 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * psd报警DTO
+ */
+@Data
+public class HsDTO {
+
+ @ApiModelProperty(value = "psd横坐标值(道数)")
+ private Integer psdX;
+ @ApiModelProperty(value = "psd纵坐标值")
+ private Integer psdY;
+ @ApiModelProperty(value = "psd1横坐标值(道数)")
+ private Integer psdX1;
+ @ApiModelProperty(value = "psd1纵坐标值")
+ private Integer psdY1;
+ @ApiModelProperty(value = "mca横坐标值(道数)")
+ private Integer mcaX;
+ @ApiModelProperty(value = "mca纵坐标值")
+ private Integer mcaY;
+ @ApiModelProperty(value = "mca1横坐标值(道数)")
+ private Integer mcaX1;
+ @ApiModelProperty(value = "mca1纵坐标值")
+ private Integer mcaY1;
+// @ApiModelProperty(value = "时间值")
+// private String timeCount;
+
+ public HsDTO() {
+ }
+
+ public HsDTO(int psdX, int psdY, int mcaX, int mcaY) {
+ this.psdX = psdX;
+ this.psdY = psdY;
+ this.mcaX = mcaX;
+ this.mcaY = mcaY;
+ }
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
new file mode 100644
index 0000000..2f83779
--- /dev/null
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/HsRequest.java
@@ -0,0 +1,25 @@
+package com.casic.missiles.modular.neutron.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Hs请求参数Request
+ */
+@Data
+public class HsRequest {
+
+ @ApiModelProperty(value = "探测器Id")
+ Long detectorId;
+ @ApiModelProperty(value = "type值为1:启动,0:停止")
+ String type;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标开始值")
+ int x1;
+ @ApiModelProperty(value = "mca映射到psd曲线上的横坐标截止值")
+ int x2;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标开始值")
+ int x3;
+ @ApiModelProperty(value = "psd映射到mca曲线上的横坐标截止值")
+ int x4;
+
+}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
index e54ac10..540ba70 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Psd.java
@@ -44,6 +44,10 @@
private String qshort;
@TableField("PSD")
private String psd;
+ @TableField("PSDX")
+ private String psdx;
+ @TableField("MCAX")
+ private String mcax;
@TableField("IP_PORT")
private String ipPort;
/**
@@ -61,8 +65,9 @@
public Psd() {
}
- public Psd(Long detectorId, String gateOffet, String baseLine, String shortGate, String longGate, String qlong, String qshort, String createTime) {
- this.detectorId = detectorId;
+ public Psd(String gateOffet, String baseLine, String shortGate,
+ String longGate, String qlong, String qshort,
+ String createTime) {
this.gateOffet = gateOffet;
this.baseLine = baseLine;
this.shortGate = shortGate;
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
index ef4fc59..a65e5b0 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/model/Vol.java
@@ -61,8 +61,7 @@
public Vol() {
}
- public Vol(Long detectorId, String volData6, String createTime) {
- this.detectorId = detectorId;
+ public Vol( String volData6, String createTime) {
this.volData6 = volData6;
this.createTime = createTime;
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
index 34d7056..277ccc2 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/INeutronOptService.java
@@ -1,6 +1,7 @@
package com.casic.missiles.modular.neutron.service;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import java.util.List;
@@ -25,7 +26,7 @@
* No.3 解析
* 设备会在tcp上 上报数据,读取后进行解析
*/
- void analysis(String deviceIpPort,String msg);
+ void analysis(String deviceIpPort,String msg,Long uid);
/**
* No.4 退高压,停止工作
@@ -41,4 +42,6 @@
List alarmList(Long taskId);
+ boolean hsList(Long detectorId, String type,int x1, int x2, int x3, int x4);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
index 321336b..462f31a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/IPsdService.java
@@ -21,4 +21,6 @@
List dataList(Long taskId);
+ List hsList(Long detectorId,String type);
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
index c15e68c..9e0e888 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/DetectorConfigServiceImpl.java
@@ -37,7 +37,7 @@
try {
for (int i = 1; i <= codeArr.length / 3; i++) {
- nettyClient.send(codeArr[i * 3 - 1]);
+ nettyClient.send(config.getDetectorId(),codeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
index 7171d3b..9f7768a 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/NeutronOptServiceImpl.java
@@ -2,7 +2,9 @@
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
+import com.casic.missiles.modular.neutron.dto.HsDTO;
import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO;
+import com.casic.missiles.modular.neutron.dto.PsdDataDTO;
import com.casic.missiles.modular.neutron.model.Psd;
import com.casic.missiles.modular.neutron.model.Vol;
import com.casic.missiles.modular.neutron.service.IDetectorLogService;
@@ -13,12 +15,14 @@
import com.casic.missiles.netty.InstructCode;
import com.casic.missiles.netty.NettyClient;
import com.casic.missiles.common.WebSocket;
+import com.sun.javafx.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -42,7 +46,7 @@
try {
for (int i = 1; i <= InstructCode.InitCodeArr.length / 3; i++) {
- nettyClient.send(InstructCode.InitCodeArr[i * 3 - 1]);
+ nettyClient.send(detectorId, InstructCode.InitCodeArr[i * 3 - 1]);
Thread.sleep(500);
}
} catch (InterruptedException e) {
@@ -52,26 +56,30 @@
@Override
public void pressurize(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_UP)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_UP)) {
iLogService.addLog(detectorId, "6", "start");
}
}
@Override
@Async("syncExecutorPool")
- public void analysis(String deviceIpPort, String msg) {
+ public void analysis(String deviceIpPort, String msg, Long uid) {
Map resultMap = CacheUtils.processData(msg);
List psdList = (List) resultMap.get("psd");
List volList = (List) resultMap.get("vol");
if (volList != null && volList.size() > 0) {
volList.forEach(vol -> {
+ JSONObject headerJson = new JSONObject();
+ headerJson.put("msgKey", "detector_vol");
JSONObject jsonObject = new JSONObject();
jsonObject.put("deviceIp", deviceIpPort);
jsonObject.put("vol", vol.getVolData6());
jsonObject.put("time", vol.getCreateTime());
- webSocket.sendAllMessage(jsonObject.toJSONString());
- log.info("推送电压数据"+jsonObject.toJSONString());
+ headerJson.put("data", jsonObject);
+ webSocket.sendAllMessage(headerJson.toJSONString());
+ log.info("推送电压数据" + headerJson.toJSONString());
vol.setIpPort(deviceIpPort.substring(1));
+ vol.setDetectorId(uid);
});
iVolService.saveBatch(volList);
}
@@ -85,15 +93,75 @@
Long Qshort = Math.abs(Long.valueOf(psd.getQshort(), 16) - Long.parseLong(psd.getBaseLine(), 16) * Long.parseLong(psd.getShortGate(), 16));
Double psdRate = (Qlong - Qshort) * 1.000 / Qlong;
psd.setPsd(String.format("%.2f", psdRate));
+ psd.setDetectorId(uid);
+ //设置psdx值 toDo:4096、100000 需要自动取
+ int psdx = (int) ((Qlong - Qshort) * 1.000 / Qlong * 4096);
+ int mcax = (int) ((Qlong) * 1.00000 / 100000 * 4096);
+ psd.setPsdx(psdx + "");
+ psd.setMcax(mcax + "");
+ //根据是否启动,向前端推送hs曲线数值
+ if (hsFlag) {
+ HsDTO hsDTO = new HsDTO(psdx, 1, mcax, 1);
+ if (psdx < 0 || psdx > 4096) {
+ hsDTO.setPsdX(null);
+ hsDTO.setPsdY(null);
+ }
+ if (mcax < 0 || mcax > 4096) {
+ hsDTO.setMcaX(null);
+ hsDTO.setMcaY(null);
+ }
+ //psd数据叠加到mca曲线上
+ if (psdx >= x3_3 && psdx <= x4_4) {
+ hsDTO.setMcaX1(mcax);
+ hsDTO.setMcaY1(1);
+ }
+ //mca数据叠加到psd曲线上
+ if (mcax >= x1_1 && mcax <= x2_2) {
+ if (psdx > 0) {
+ hsDTO.setPsdX1(psdx);
+ hsDTO.setPsdY1(1);
+ }
+ }
+ JSONObject headJson = new JSONObject();
+ headJson.put("msgKey", "detector_hs");
+ headJson.put("data", hsDTO);
+ webSocket.sendAllMessage(headJson.toJSONString());
+ log.info("推送HS数据" + headJson.toJSONString());
+ }
}
});
iPsdService.saveBatch(psdList);
}
}
+
+ private volatile boolean hsFlag = false;
+ private volatile int x1_1 = 0;
+ private volatile int x2_2 = 0;
+ private volatile int x3_3 = 0;
+ private volatile int x4_4 = 0;
+// private volatile List hsDTOList = new ArrayList<>() ;
+
+ @Override
+ public boolean hsList(Long detectorId, String type, int x1, int x2, int x3, int x4) {
+ x1_1 = x1;
+ x2_2 = x2;
+ x3_3 = x3;
+ x4_4 = x4;
+ switch (type) {
+ case "1":
+ hsFlag = true;
+ break;
+ case "0":
+ hsFlag = false;
+ break;
+ }
+ return true;
+ }
+
@Override
public void depress(Long detectorId) {
- if (nettyClient.send(InstructCode.DAC_DOWN)) {
+ if (nettyClient.send(detectorId, InstructCode.DAC_DOWN)) {
iLogService.addLog(detectorId, "6", "stop");
}
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
index 8a20e31..f1adc1e 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/service/impl/PsdServiceImpl.java
@@ -58,7 +58,7 @@
long countX = DateUtil.between(DateUtil.parseDateTime(last.getTimeCount()), DateUtil.parseDateTime(startTime), DateUnit.SECOND, true);
for (int i = 0; i <= countX / 5; i++) {
if (i == 0) {
- psdDataDTOS.add(new PsdDataDTO("0", "0"));
+ psdDataDTOS.add(new PsdDataDTO("0", "0"));
continue;
}
int countY = 0;
@@ -74,7 +74,7 @@
}
}
}
- psdDataDTO.setValueCount((int) Math.ceil(countY / 5) + "");
+ psdDataDTO.setValueCount(String.format("%.2f",countY*1.00 / 5));
psdDataDTOS.add(psdDataDTO);
}
}
@@ -105,10 +105,14 @@
trajectoryInfo.getPostionY() + "",
alarmTime));
return psdAlarmDTOList;
-
}
}
}
return psdAlarmDTOList;
}
+
+ @Override
+ public List hsList(Long detectorId,String type) {
+ return null;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
index 8b9aaf2..7531a59 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/CacheUtils.java
@@ -58,14 +58,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.VOL_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1) {
-// if (msgs.length() < (msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
-// msgLast = msgs.substring(msgs.indexOf(msgs.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH)));
-// CacheUtils.VOL_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
}
}
@@ -83,17 +75,6 @@
}
if (ObjectUtil.isNotEmpty(msgs)) {
CacheUtils.PSD_MAP.clear();
- //继续拆包处理
-// String msgLast = "";
-// if (msgs.indexOf(InstructCode.PSD1_HEAD) != -1) {
-// if (msgs.length() >= 24) {
-// int totalLength = Integer.parseInt(ByteUtil.reverseHex(msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD) + 16, 24)), 16);
-// if (msgs.length() < totalLength * 2) {
-// msgLast = msgs.substring(msgs.indexOf(InstructCode.PSD1_HEAD));
-// CacheUtils.PSD_MAP.put(keyInts.get(keyInts.size() - 1), msgLast);
-// }
-// }
-// }
}
}
return msgs;
@@ -133,12 +114,12 @@
for (int i = 0; i < (msg.length() - (msg.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = msg.substring((msg.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (msg.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
@@ -146,7 +127,7 @@
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
} else {
@@ -168,23 +149,23 @@
int totalLength = Integer.parseInt(ByteUtil.reverseHex(str.substring(str.indexOf(InstructCode.PSD1_HEAD) + 16,
str.indexOf(InstructCode.PSD1_HEAD) + 24)), 16);
if (str.length() >= totalLength * 2) {
+ PSD_FLAG = false;
for (int i = 0; i < (str.length() - (str.indexOf(InstructCode.PSD1_HEAD) + 24)) / 64; i++) {
String msgi = str.substring((str.indexOf(InstructCode.PSD1_HEAD) + 24) + i * 64, (str.indexOf(InstructCode.PSD1_HEAD) + 24) + (i + 1) * 64);
if (msgi.indexOf(InstructCode.PSD2_HEAD) == 0) {
- String gateOff = msgi.substring(16, 20);
- String baseline = msgi.substring(20, 24);
- String shortGate = msgi.substring(24, 28);
- String longGate = msgi.substring(28, 32);
- String qlong = msgi.substring(48, 56);
- String qshort = msgi.substring(56, 64);
- //toDo:算法计算
+ String gateOff = ByteUtil.reverseHex(msgi.substring(16, 20));
+ String baseline = ByteUtil.reverseHex(msgi.substring(20, 24));
+ String shortGate = ByteUtil.reverseHex(msgi.substring(24, 28));
+ String longGate = ByteUtil.reverseHex(msgi.substring(28, 32));
+ String qlong = ByteUtil.reverseHex(msgi.substring(48, 56));
+ String qshort = ByteUtil.reverseHex(msgi.substring(56, 64));
log.info("分包:gateOff--->" + gateOff +
"baseline--->" + baseline +
"shortGate--->" + shortGate +
"longGate--->" + longGate +
"qlong--->" + qlong +
"qshort--->" + qshort);
- psdList.add(new Psd(1L, gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
+ psdList.add(new Psd(gateOff, baseline, shortGate, longGate, qlong, qshort, DateUtil.formatDateTime(new Date())));
}
}
}
@@ -211,7 +192,7 @@
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
} else {
//分包处理,先放到缓存
VOL_FLAG = true;
@@ -222,15 +203,15 @@
VOL_I++;
CacheUtils.VOL_MAP.put(VOL_I, msg);
String str = startVolMapCache();
- if (ObjectUtil.isNotEmpty(str) &&
+ VOL_FLAG = false;
+ if (ObjectUtil.isNotEmpty(str) &&str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) != -1&&
str.length() >= (str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24 + InstructCode.DAC_DATA_LENGTH)) {
- VOL_FLAG = false;
str = str.substring(str.indexOf(InstructCode.DAC_HEAD + InstructCode.DAC_HEAD_LENGTH) + 24);
String[] volArr = InstructCode.getVolArr(str);
//本设备只用到第6通道
String vol6 = volArr[5];
log.info("分包第6通道电压值-------->" + vol6);
- volList.add(new Vol(1L, Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
+ volList.add(new Vol(Long.parseLong(vol6,16)+"", DateUtil.formatDateTime(new Date())));
}
}
return volList;
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java b/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
index 24ec5a5..d58645a 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/ChannelCache.java
@@ -1,44 +1,36 @@
package com.casic.missiles.netty;
+import cn.hutool.core.util.ObjectUtil;
import io.netty.channel.Channel;
-import io.netty.channel.group.ChannelGroup;
-import io.netty.channel.group.DefaultChannelGroup;
-import io.netty.util.concurrent.GlobalEventExecutor;
-import org.springframework.context.annotation.Configuration;
+import io.netty.util.AttributeKey;
+import org.springframework.stereotype.Component;
import java.util.concurrent.ConcurrentHashMap;
-@Configuration
+@Component
public class ChannelCache {
- // 存储所有Channel
- private ChannelGroup channelGroup = new DefaultChannelGroup("channelGroups", GlobalEventExecutor.INSTANCE);
- // 存储Channel.id().asLongText()和用户id对应关系
- private ConcurrentHashMap channelIdUid = new ConcurrentHashMap();
+ // 存储用户id和Channel.id().asLongText()对应关系
+ private static final ConcurrentHashMap channelMap = new ConcurrentHashMap();
- public ChannelGroup getChannelGroup() {
- return channelGroup;
- }
+ // 存储用户id和Channel.id().asLongText()对应关系
+ private static final ConcurrentHashMap channelIdUid = new ConcurrentHashMap();
- public ConcurrentHashMap getChannelIdUid() {
+ private static final AttributeKey CHANNEL_ATTR_KEY = AttributeKey.valueOf("user");
+
+
+ public ConcurrentHashMap getChannelIdUid() {
return channelIdUid;
}
-
/**
* 获取Channel
*
* @return
*/
- public Channel getChannel(Channel channel) {
- Channel channel_ = channelGroup.find(channel.id());
- if (channel_ != null) {
- return channel_;
- }
- return null;
- }
+
/**
* 添加Channel到ChannelGroup
@@ -46,15 +38,14 @@
* @param uid
* @param channel
*/
- public void addChannel(Channel channel, int uid) {
- Channel channel_ = channelGroup.find(channel.id());
- if (channel_ == null) {
- channelGroup.add(channel);
- }
+ public synchronized void addChannel(Channel channel, String uid) {
- // redis添加对应用户和channelId之前的关系
- Integer userId = channelIdUid.get(channel.id().asLongText());
- channelIdUid.put(channel.id().asLongText(), userId);
+ channel.attr(CHANNEL_ATTR_KEY).set(uid);
+ Channel channel_ = channelMap.get(channel.id().asLongText());
+ if (channel_ == null) {
+ channelMap.put(channel.id().asLongText(), channel);
+ }
+ channelIdUid.put(uid, channel.id().asLongText());
}
/**
@@ -62,17 +53,36 @@
*
* @param channel
*/
- public void removeChannel(Channel channel) {
- Channel channel_ = channelGroup.find(channel.id());
+ public synchronized void removeChannel(Channel channel) {
+ Channel channel_ = channelMap.get(channel.id().asLongText());
if (channel_ != null) {
- channelGroup.remove(channel_);
+ channelMap.remove(channel.id().asLongText());
}
- Integer userId = channelIdUid.get(channel.id().asLongText());
+ String userId = channel.attr(CHANNEL_ATTR_KEY).get();
if (userId != null) {
- channelIdUid.remove(channel.id().asLongText());
+ channelIdUid.remove(userId);
}
}
+ /**
+ * 获取Channel
+ *
+ * @return
+ */
+ /**
+ * 根据用户id获取该用户的通道
+ *
+ * @param userId
+ * @return
+ */
+ public synchronized Channel getChannelByUserId(String userId) {
+ String channelIdStr = channelIdUid.get(userId);
+ if (ObjectUtil.isNotEmpty(channelIdStr)) {
+ return channelMap.get(channelIdStr);
+ }
+ return null;
+ }
+
}
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java b/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java
index b91ef75..5fdb5b1 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/NettyClient.java
@@ -1,5 +1,8 @@
package com.casic.missiles.netty;
+import com.casic.missiles.modular.neutron.service.INeutronOptService;
+import com.casic.missiles.modular.robot.model.DetectorInfo;
+import com.casic.missiles.modular.robot.service.IDetectorInfoService;
import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.Unpooled;
import io.netty.channel.*;
@@ -13,6 +16,7 @@
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;
+import java.util.List;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.TimeUnit;
@@ -20,18 +24,20 @@
@Component
public class NettyClient {
-// static final int SIZE = Integer.parseInt(System.getProperty("size", "256"));
-
private final EventLoopGroup group = new NioEventLoopGroup();
private ChannelFuture mChannelFuture = null;
private final ThreadLocal mChannel = new ThreadLocal<>();
-// private final ThreadLocalMap threadLocalMap = new ThreadLocalMap;
-// ThreadLocalMap
+ // @Resource
+// private NettyClientHandler nettyClientHandler;
@Resource
- private NettyClientHandler nettyClientHandler;
+ private IDetectorInfoService iDetectorInfoService;
+ @Resource
+ private ChannelCache channelCache;
+ @Resource
+ private INeutronOptService neutronOptService;
- public void startClient(String host, int port) {
+ public void startClient(String host, int port, Long userId) {
// Configure the client.
try {
Bootstrap b = new Bootstrap();
@@ -44,23 +50,23 @@
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast(new HjtDecoder());
-// p.addLast(new NettyClientHandler(NettyClient.this));
- p.addLast(nettyClientHandler);
+ p.addLast(new NettyClientHandler(userId,channelCache,neutronOptService));
+// p.addLast(nettyClientHandler);
}
});
- mChannelFuture = b.connect(host, port).addListener(new ChannelFutureListener(){
+ mChannelFuture = b.connect(host, port).addListener(new ChannelFutureListener() {
@Override
- public void operationComplete(ChannelFuture future){
+ public void operationComplete(ChannelFuture future) {
if (future.isSuccess()) {
- log.info("探测器{}--连接成功!!", host);
+ log.info("探测器{}:{}--连接成功!!", host, port);
} else {
- log.error("探测器{}--连接失败!!", host);
+ log.error("探测器{}:{}--连接失败!!", host, port);
future.channel().eventLoop().schedule(new Runnable() {
@Override
public void run() {
- log.info("探测器{}--重新连接!!", host);
- startClient(host, port);
+ log.info("探测器{}:{}--重新连接!!", host, port);
+ startClient(host, port, userId);
}
}, 10, TimeUnit.SECONDS);
}
@@ -76,7 +82,7 @@
*
* @param data 文本数据
*/
- public boolean send(String data) {
+ public boolean send1(String data) {
try {
if (mChannel.get() == null) {
mChannel.set(mChannelFuture.channel());
@@ -89,12 +95,35 @@
return false;
}
+ //发送数据
+ public boolean send(Long uid, String data) {
+ try {
+ Channel channel = channelCache.getChannelByUserId(uid + "");
+ if (channel != null) {
+ channel.writeAndFlush(Unpooled.copiedBuffer(data.getBytes(StandardCharsets.UTF_8)));
+ return true;
+ } else {
+ log.error("探测器id--->{}--未连接,请检查设备", uid);
+ }
+
+ } catch (Exception e) {
+ log.error(this.getClass().getName().concat(".send has error"), e);
+ }
+ return false;
+ }
+
// 客户端启动,并连上服务器端
@PostConstruct
public void init() {
- System.out.println("开始连接了------>");
- ForkJoinPool.commonPool().submit(() -> startClient("192.168.1.50", 52002));
-// ForkJoinPool.commonPool().submit(() -> startClient("127.0.0.1", 52002));
+ System.out.println("中子源探测器开始连接了------>");
+ List detectorInfoList = iDetectorInfoService.list();
+ if (null != detectorInfoList && detectorInfoList.size() > 0) {
+ detectorInfoList.forEach(detectorInfo -> {
+ ForkJoinPool.commonPool().submit(() -> startClient(detectorInfo.getDetectorIp(),
+ detectorInfo.getDetectorPort(), detectorInfo.getId()));
+ });
+ }
+// ForkJoinPool.commonPool().submit(() -> startClient("192.168.1.50", 52002));
}
@PreDestroy
diff --git a/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java b/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java
index 0e9d152..c786117 100644
--- a/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java
+++ b/casic-server/src/main/java/com/casic/missiles/netty/NettyClientHandler.java
@@ -14,22 +14,37 @@
@Slf4j
public class NettyClientHandler extends ChannelInboundHandlerAdapter {
-// private NettyClient nettyClient;
-//
-// public NettyClientHandler(NettyClient nettyClient) {
-// this.nettyClient = nettyClient;
-// }
- @Autowired
+ private Long userId;
+ private ChannelCache channelCache;
private INeutronOptService neutronOptService;
+
+ public NettyClientHandler(Long userId, ChannelCache channelCache, INeutronOptService neutronOptService) {
+ this.userId = userId;
+ this.channelCache = channelCache;
+ this.neutronOptService = neutronOptService;
+ }
+
+ public NettyClientHandler() {
+ }
+
+
+
+ @Override
+ public void channelActive(ChannelHandlerContext ctx) throws Exception {
+
+ channelCache.addChannel(ctx.channel(),userId+"");
+ }
+
// 服务器端读取到 客户端发送过来的数据,然后通过 Channel 回写数据
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
+
log.info(String.format("客户端读取到从服务器端:%s 发送过来的数据:%s", ctx.channel().remoteAddress(), msg.toString()));
//解析数据
try {
- neutronOptService.analysis(ctx.channel().remoteAddress().toString(),msg.toString());
+ neutronOptService.analysis(ctx.channel().remoteAddress().toString(),msg.toString(),userId);
}catch (Exception e){
e.printStackTrace();
}
@@ -42,9 +57,12 @@
ctx.close();
}
-// @Override
-// public void channelInactive(ChannelHandlerContext ctx) throws Exception {
-// super.channelInactive(ctx);
+ @Override
+ public void channelInactive(ChannelHandlerContext ctx) throws Exception {
+ super.channelInactive(ctx);
+ channelCache.removeChannel(ctx.channel());
// nettyClient.startClient("192.168.1.50", 52002);
-// }
+ }
+
+
}