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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } 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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java new file mode 100644 index 0000000..152a82b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.neutron.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * psdtxt导出DTO + */ +@Data +public class PsdTxtDTO { + + @ApiModelProperty(value = "横坐标值" ) + private Integer x; + @ApiModelProperty(value = "纵坐标值" ) + private Integer y; + + public PsdTxtDTO() { + } + + public PsdTxtDTO(Integer x, Integer y) { + this.x = x; + this.y = y; + } +} 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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java new file mode 100644 index 0000000..152a82b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.neutron.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * psdtxt导出DTO + */ +@Data +public class PsdTxtDTO { + + @ApiModelProperty(value = "横坐标值" ) + private Integer x; + @ApiModelProperty(value = "纵坐标值" ) + private Integer y; + + public PsdTxtDTO() { + } + + public PsdTxtDTO(Integer x, Integer y) { + this.x = x; + this.y = y; + } +} 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 9c69d3c..c2289a3 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** *

@@ -23,6 +24,8 @@ List hsList(Long detectorId,String type); + Map psdExport(Long taskId,Long psdX1,Long psdX2); + void insertPsdAlarms(); } 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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java new file mode 100644 index 0000000..152a82b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.neutron.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * psdtxt导出DTO + */ +@Data +public class PsdTxtDTO { + + @ApiModelProperty(value = "横坐标值" ) + private Integer x; + @ApiModelProperty(value = "纵坐标值" ) + private Integer y; + + public PsdTxtDTO() { + } + + public PsdTxtDTO(Integer x, Integer y) { + this.x = x; + this.y = y; + } +} 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 9c69d3c..c2289a3 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** *

@@ -23,6 +24,8 @@ List hsList(Long detectorId,String type); + Map psdExport(Long taskId,Long psdX1,Long psdX2); + void insertPsdAlarms(); } 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 fa8c89d..c6a30c6 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 @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.common.WebSocket; import com.casic.missiles.core.application.service.AbstractDictService; @@ -12,6 +13,7 @@ import com.casic.missiles.modular.neutron.dao.PsdMapper; import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO; import com.casic.missiles.modular.neutron.dto.PsdDataDTO; +import com.casic.missiles.modular.neutron.dto.PsdTxtDTO; import com.casic.missiles.modular.neutron.model.Psd; import com.casic.missiles.modular.neutron.service.IPsdService; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.netty.CacheUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -58,6 +61,9 @@ //记录报警是否推送 private static volatile boolean flag = true; + @Value("${casic.psdLimit:1}") + private float psdLimit; + @Override public List dataList(Long taskId) { List psdDataDTOS = new ArrayList<>(); @@ -181,7 +187,7 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("robotId", robotId); RobotInfo robotInfo = robotInfoService.getById(robotId); - jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo)?robotInfo.getRobotName():""); + jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo) ? robotInfo.getRobotName() : ""); jsonObject.put("taskTypeName", ObjectUtil.isNotEmpty(taskInfo.getTaskType()) ? dictService.getDictNameByCode("taskType", taskInfo.getTaskType() + "") : ""); jsonObject.put("discernTypeName", ObjectUtil.isNotEmpty(taskInfo.getDiscernType()) ? dictService.getDictNameByCode("discernType", taskInfo.getDiscernType() + "") : ""); jsonObject.put("taskId", taskInfo.getId()); @@ -212,4 +218,79 @@ iAlarmRecordService.saveBatch(alarmRecordList); } } + + @Override + public Map psdExport(Long taskId, Long psdX1, Long psdX2) { + + Map resultMap = new HashMap<>(); + //构造第一列数据 + List list1 = new ArrayList<>(); + int i = 0; + while (i < 4096) { + list1.add(i); + i++; + } + resultMap.put("x", list1); + + //构造第二列数据 + List psdTxtDTOList2 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList3 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList4 = new ArrayList<>(); + list1.forEach(first -> { + psdTxtDTOList2.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList3.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList4.add(new PsdTxtDTO(first, 0)); + }); + resultMap.put("mca", psdTxtDTOList2); + + resultMap.put("psd", psdTxtDTOList3); + + resultMap.put("mca:psd", psdTxtDTOList4); + + TaskInfo taskInfo = iTaskInfoService.getById(taskId); + + if (ObjectUtil.isNotEmpty(taskInfo)) { + Long robotId = taskInfo.getRobotId(); + Date startTime = taskInfo.getStartTime(); + Date endTime = taskInfo.getEndTime(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DETECTOR_ID", robotId); + queryWrapper.ge(ObjectUtil.isNotEmpty(startTime), "CREATE_TIME", startTime); + queryWrapper.le(ObjectUtil.isNotEmpty(endTime), "CREATE_TIME", endTime); + List psdList = list(queryWrapper); + for (Psd psd : psdList) { + if (ObjectUtil.isNotEmpty(psd.getPsd()) && Float.valueOf(psd.getPsd()) >= psdLimit) { + if (ObjectUtil.isNotEmpty(psd.getMcax())) { + psdTxtDTOList2.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + + if (ObjectUtil.isNotEmpty(psd.getPsdx())) { + psdTxtDTOList3.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getPsdx()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + + if (ObjectUtil.isAllNotEmpty(psdX1, psdX2) && + psdX1 <= Long.valueOf(psd.getPsdx()) && + psdX2 >= Long.valueOf(psd.getPsdx())) { + psdTxtDTOList4.forEach(psdTxtDTO -> { + if (ObjectUtil.isNotEmpty(psd.getMcax()) && + psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + } + } + } + } + return resultMap; + } } 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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java new file mode 100644 index 0000000..152a82b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.neutron.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * psdtxt导出DTO + */ +@Data +public class PsdTxtDTO { + + @ApiModelProperty(value = "横坐标值" ) + private Integer x; + @ApiModelProperty(value = "纵坐标值" ) + private Integer y; + + public PsdTxtDTO() { + } + + public PsdTxtDTO(Integer x, Integer y) { + this.x = x; + this.y = y; + } +} 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 9c69d3c..c2289a3 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** *

@@ -23,6 +24,8 @@ List hsList(Long detectorId,String type); + Map psdExport(Long taskId,Long psdX1,Long psdX2); + void insertPsdAlarms(); } 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 fa8c89d..c6a30c6 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 @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.common.WebSocket; import com.casic.missiles.core.application.service.AbstractDictService; @@ -12,6 +13,7 @@ import com.casic.missiles.modular.neutron.dao.PsdMapper; import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO; import com.casic.missiles.modular.neutron.dto.PsdDataDTO; +import com.casic.missiles.modular.neutron.dto.PsdTxtDTO; import com.casic.missiles.modular.neutron.model.Psd; import com.casic.missiles.modular.neutron.service.IPsdService; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.netty.CacheUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -58,6 +61,9 @@ //记录报警是否推送 private static volatile boolean flag = true; + @Value("${casic.psdLimit:1}") + private float psdLimit; + @Override public List dataList(Long taskId) { List psdDataDTOS = new ArrayList<>(); @@ -181,7 +187,7 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("robotId", robotId); RobotInfo robotInfo = robotInfoService.getById(robotId); - jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo)?robotInfo.getRobotName():""); + jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo) ? robotInfo.getRobotName() : ""); jsonObject.put("taskTypeName", ObjectUtil.isNotEmpty(taskInfo.getTaskType()) ? dictService.getDictNameByCode("taskType", taskInfo.getTaskType() + "") : ""); jsonObject.put("discernTypeName", ObjectUtil.isNotEmpty(taskInfo.getDiscernType()) ? dictService.getDictNameByCode("discernType", taskInfo.getDiscernType() + "") : ""); jsonObject.put("taskId", taskInfo.getId()); @@ -212,4 +218,79 @@ iAlarmRecordService.saveBatch(alarmRecordList); } } + + @Override + public Map psdExport(Long taskId, Long psdX1, Long psdX2) { + + Map resultMap = new HashMap<>(); + //构造第一列数据 + List list1 = new ArrayList<>(); + int i = 0; + while (i < 4096) { + list1.add(i); + i++; + } + resultMap.put("x", list1); + + //构造第二列数据 + List psdTxtDTOList2 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList3 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList4 = new ArrayList<>(); + list1.forEach(first -> { + psdTxtDTOList2.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList3.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList4.add(new PsdTxtDTO(first, 0)); + }); + resultMap.put("mca", psdTxtDTOList2); + + resultMap.put("psd", psdTxtDTOList3); + + resultMap.put("mca:psd", psdTxtDTOList4); + + TaskInfo taskInfo = iTaskInfoService.getById(taskId); + + if (ObjectUtil.isNotEmpty(taskInfo)) { + Long robotId = taskInfo.getRobotId(); + Date startTime = taskInfo.getStartTime(); + Date endTime = taskInfo.getEndTime(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DETECTOR_ID", robotId); + queryWrapper.ge(ObjectUtil.isNotEmpty(startTime), "CREATE_TIME", startTime); + queryWrapper.le(ObjectUtil.isNotEmpty(endTime), "CREATE_TIME", endTime); + List psdList = list(queryWrapper); + for (Psd psd : psdList) { + if (ObjectUtil.isNotEmpty(psd.getPsd()) && Float.valueOf(psd.getPsd()) >= psdLimit) { + if (ObjectUtil.isNotEmpty(psd.getMcax())) { + psdTxtDTOList2.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + + if (ObjectUtil.isNotEmpty(psd.getPsdx())) { + psdTxtDTOList3.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getPsdx()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + + if (ObjectUtil.isAllNotEmpty(psdX1, psdX2) && + psdX1 <= Long.valueOf(psd.getPsdx()) && + psdX2 >= Long.valueOf(psd.getPsdx())) { + psdTxtDTOList4.forEach(psdTxtDTO -> { + if (ObjectUtil.isNotEmpty(psd.getMcax()) && + psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + } + } + } + } + return resultMap; + } } 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 ae41ed4..e8c59b8 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 @@ -17,9 +17,7 @@ import javax.annotation.Resource; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @Slf4j @@ -52,7 +50,7 @@ public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); p.addLast(new HjtDecoder()); - p.addLast(new NettyClientHandler(userId, channelCache, neutronOptService, NettyClient.this)); + p.addLast(new NettyClientHandler(userId,channelCache,neutronOptService,NettyClient.this)); } }); @@ -119,10 +117,8 @@ System.out.println("中子源探测器开始连接了------>"); List detectorInfoList = iDetectorInfoService.list(); if (null != detectorInfoList && detectorInfoList.size() > 0) { - ThreadPoolExecutor executor = new ThreadPoolExecutor(detectorInfoList.size(), detectorInfoList.size(), 10, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(10), new ThreadPoolExecutor.CallerRunsPolicy()); detectorInfoList.forEach(detectorInfo -> { - executor.execute(() -> startClient(detectorInfo.getDetectorIp(), + ForkJoinPool.commonPool().submit(() -> startClient(detectorInfo.getDetectorIp(), detectorInfo.getDetectorPort(), detectorInfo.getRobotId())); }); } 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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java new file mode 100644 index 0000000..152a82b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.neutron.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * psdtxt导出DTO + */ +@Data +public class PsdTxtDTO { + + @ApiModelProperty(value = "横坐标值" ) + private Integer x; + @ApiModelProperty(value = "纵坐标值" ) + private Integer y; + + public PsdTxtDTO() { + } + + public PsdTxtDTO(Integer x, Integer y) { + this.x = x; + this.y = y; + } +} 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 9c69d3c..c2289a3 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** *

@@ -23,6 +24,8 @@ List hsList(Long detectorId,String type); + Map psdExport(Long taskId,Long psdX1,Long psdX2); + void insertPsdAlarms(); } 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 fa8c89d..c6a30c6 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 @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.common.WebSocket; import com.casic.missiles.core.application.service.AbstractDictService; @@ -12,6 +13,7 @@ import com.casic.missiles.modular.neutron.dao.PsdMapper; import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO; import com.casic.missiles.modular.neutron.dto.PsdDataDTO; +import com.casic.missiles.modular.neutron.dto.PsdTxtDTO; import com.casic.missiles.modular.neutron.model.Psd; import com.casic.missiles.modular.neutron.service.IPsdService; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.netty.CacheUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -58,6 +61,9 @@ //记录报警是否推送 private static volatile boolean flag = true; + @Value("${casic.psdLimit:1}") + private float psdLimit; + @Override public List dataList(Long taskId) { List psdDataDTOS = new ArrayList<>(); @@ -181,7 +187,7 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("robotId", robotId); RobotInfo robotInfo = robotInfoService.getById(robotId); - jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo)?robotInfo.getRobotName():""); + jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo) ? robotInfo.getRobotName() : ""); jsonObject.put("taskTypeName", ObjectUtil.isNotEmpty(taskInfo.getTaskType()) ? dictService.getDictNameByCode("taskType", taskInfo.getTaskType() + "") : ""); jsonObject.put("discernTypeName", ObjectUtil.isNotEmpty(taskInfo.getDiscernType()) ? dictService.getDictNameByCode("discernType", taskInfo.getDiscernType() + "") : ""); jsonObject.put("taskId", taskInfo.getId()); @@ -212,4 +218,79 @@ iAlarmRecordService.saveBatch(alarmRecordList); } } + + @Override + public Map psdExport(Long taskId, Long psdX1, Long psdX2) { + + Map resultMap = new HashMap<>(); + //构造第一列数据 + List list1 = new ArrayList<>(); + int i = 0; + while (i < 4096) { + list1.add(i); + i++; + } + resultMap.put("x", list1); + + //构造第二列数据 + List psdTxtDTOList2 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList3 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList4 = new ArrayList<>(); + list1.forEach(first -> { + psdTxtDTOList2.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList3.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList4.add(new PsdTxtDTO(first, 0)); + }); + resultMap.put("mca", psdTxtDTOList2); + + resultMap.put("psd", psdTxtDTOList3); + + resultMap.put("mca:psd", psdTxtDTOList4); + + TaskInfo taskInfo = iTaskInfoService.getById(taskId); + + if (ObjectUtil.isNotEmpty(taskInfo)) { + Long robotId = taskInfo.getRobotId(); + Date startTime = taskInfo.getStartTime(); + Date endTime = taskInfo.getEndTime(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DETECTOR_ID", robotId); + queryWrapper.ge(ObjectUtil.isNotEmpty(startTime), "CREATE_TIME", startTime); + queryWrapper.le(ObjectUtil.isNotEmpty(endTime), "CREATE_TIME", endTime); + List psdList = list(queryWrapper); + for (Psd psd : psdList) { + if (ObjectUtil.isNotEmpty(psd.getPsd()) && Float.valueOf(psd.getPsd()) >= psdLimit) { + if (ObjectUtil.isNotEmpty(psd.getMcax())) { + psdTxtDTOList2.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + + if (ObjectUtil.isNotEmpty(psd.getPsdx())) { + psdTxtDTOList3.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getPsdx()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + + if (ObjectUtil.isAllNotEmpty(psdX1, psdX2) && + psdX1 <= Long.valueOf(psd.getPsdx()) && + psdX2 >= Long.valueOf(psd.getPsdx())) { + psdTxtDTOList4.forEach(psdTxtDTO -> { + if (ObjectUtil.isNotEmpty(psd.getMcax()) && + psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + } + } + } + } + return resultMap; + } } 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 ae41ed4..e8c59b8 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 @@ -17,9 +17,7 @@ import javax.annotation.Resource; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @Slf4j @@ -52,7 +50,7 @@ public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); p.addLast(new HjtDecoder()); - p.addLast(new NettyClientHandler(userId, channelCache, neutronOptService, NettyClient.this)); + p.addLast(new NettyClientHandler(userId,channelCache,neutronOptService,NettyClient.this)); } }); @@ -119,10 +117,8 @@ System.out.println("中子源探测器开始连接了------>"); List detectorInfoList = iDetectorInfoService.list(); if (null != detectorInfoList && detectorInfoList.size() > 0) { - ThreadPoolExecutor executor = new ThreadPoolExecutor(detectorInfoList.size(), detectorInfoList.size(), 10, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(10), new ThreadPoolExecutor.CallerRunsPolicy()); detectorInfoList.forEach(detectorInfo -> { - executor.execute(() -> startClient(detectorInfo.getDetectorIp(), + ForkJoinPool.commonPool().submit(() -> startClient(detectorInfo.getDetectorIp(), detectorInfo.getDetectorPort(), detectorInfo.getRobotId())); }); } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 01be493..937b695 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -68,11 +68,11 @@ casic-core ${core.version} - - io.swagger - swagger-models - 1.6.0 - + + + + + com.casic casic-admin-core 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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java new file mode 100644 index 0000000..152a82b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.neutron.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * psdtxt导出DTO + */ +@Data +public class PsdTxtDTO { + + @ApiModelProperty(value = "横坐标值" ) + private Integer x; + @ApiModelProperty(value = "纵坐标值" ) + private Integer y; + + public PsdTxtDTO() { + } + + public PsdTxtDTO(Integer x, Integer y) { + this.x = x; + this.y = y; + } +} 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 9c69d3c..c2289a3 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** *

@@ -23,6 +24,8 @@ List hsList(Long detectorId,String type); + Map psdExport(Long taskId,Long psdX1,Long psdX2); + void insertPsdAlarms(); } 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 fa8c89d..c6a30c6 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 @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.common.WebSocket; import com.casic.missiles.core.application.service.AbstractDictService; @@ -12,6 +13,7 @@ import com.casic.missiles.modular.neutron.dao.PsdMapper; import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO; import com.casic.missiles.modular.neutron.dto.PsdDataDTO; +import com.casic.missiles.modular.neutron.dto.PsdTxtDTO; import com.casic.missiles.modular.neutron.model.Psd; import com.casic.missiles.modular.neutron.service.IPsdService; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.netty.CacheUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -58,6 +61,9 @@ //记录报警是否推送 private static volatile boolean flag = true; + @Value("${casic.psdLimit:1}") + private float psdLimit; + @Override public List dataList(Long taskId) { List psdDataDTOS = new ArrayList<>(); @@ -181,7 +187,7 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("robotId", robotId); RobotInfo robotInfo = robotInfoService.getById(robotId); - jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo)?robotInfo.getRobotName():""); + jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo) ? robotInfo.getRobotName() : ""); jsonObject.put("taskTypeName", ObjectUtil.isNotEmpty(taskInfo.getTaskType()) ? dictService.getDictNameByCode("taskType", taskInfo.getTaskType() + "") : ""); jsonObject.put("discernTypeName", ObjectUtil.isNotEmpty(taskInfo.getDiscernType()) ? dictService.getDictNameByCode("discernType", taskInfo.getDiscernType() + "") : ""); jsonObject.put("taskId", taskInfo.getId()); @@ -212,4 +218,79 @@ iAlarmRecordService.saveBatch(alarmRecordList); } } + + @Override + public Map psdExport(Long taskId, Long psdX1, Long psdX2) { + + Map resultMap = new HashMap<>(); + //构造第一列数据 + List list1 = new ArrayList<>(); + int i = 0; + while (i < 4096) { + list1.add(i); + i++; + } + resultMap.put("x", list1); + + //构造第二列数据 + List psdTxtDTOList2 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList3 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList4 = new ArrayList<>(); + list1.forEach(first -> { + psdTxtDTOList2.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList3.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList4.add(new PsdTxtDTO(first, 0)); + }); + resultMap.put("mca", psdTxtDTOList2); + + resultMap.put("psd", psdTxtDTOList3); + + resultMap.put("mca:psd", psdTxtDTOList4); + + TaskInfo taskInfo = iTaskInfoService.getById(taskId); + + if (ObjectUtil.isNotEmpty(taskInfo)) { + Long robotId = taskInfo.getRobotId(); + Date startTime = taskInfo.getStartTime(); + Date endTime = taskInfo.getEndTime(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DETECTOR_ID", robotId); + queryWrapper.ge(ObjectUtil.isNotEmpty(startTime), "CREATE_TIME", startTime); + queryWrapper.le(ObjectUtil.isNotEmpty(endTime), "CREATE_TIME", endTime); + List psdList = list(queryWrapper); + for (Psd psd : psdList) { + if (ObjectUtil.isNotEmpty(psd.getPsd()) && Float.valueOf(psd.getPsd()) >= psdLimit) { + if (ObjectUtil.isNotEmpty(psd.getMcax())) { + psdTxtDTOList2.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + + if (ObjectUtil.isNotEmpty(psd.getPsdx())) { + psdTxtDTOList3.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getPsdx()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + + if (ObjectUtil.isAllNotEmpty(psdX1, psdX2) && + psdX1 <= Long.valueOf(psd.getPsdx()) && + psdX2 >= Long.valueOf(psd.getPsdx())) { + psdTxtDTOList4.forEach(psdTxtDTO -> { + if (ObjectUtil.isNotEmpty(psd.getMcax()) && + psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + } + } + } + } + return resultMap; + } } 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 ae41ed4..e8c59b8 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 @@ -17,9 +17,7 @@ import javax.annotation.Resource; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @Slf4j @@ -52,7 +50,7 @@ public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); p.addLast(new HjtDecoder()); - p.addLast(new NettyClientHandler(userId, channelCache, neutronOptService, NettyClient.this)); + p.addLast(new NettyClientHandler(userId,channelCache,neutronOptService,NettyClient.this)); } }); @@ -119,10 +117,8 @@ System.out.println("中子源探测器开始连接了------>"); List detectorInfoList = iDetectorInfoService.list(); if (null != detectorInfoList && detectorInfoList.size() > 0) { - ThreadPoolExecutor executor = new ThreadPoolExecutor(detectorInfoList.size(), detectorInfoList.size(), 10, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(10), new ThreadPoolExecutor.CallerRunsPolicy()); detectorInfoList.forEach(detectorInfo -> { - executor.execute(() -> startClient(detectorInfo.getDetectorIp(), + ForkJoinPool.commonPool().submit(() -> startClient(detectorInfo.getDetectorIp(), detectorInfo.getDetectorPort(), detectorInfo.getRobotId())); }); } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 01be493..937b695 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -68,11 +68,11 @@ casic-core ${core.version} - - io.swagger - swagger-models - 1.6.0 - + + + + + com.casic casic-admin-core diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index fa44b21..4378955 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,9 +4,9 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://192.168.1.41:3000/casic_robot_inspection?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_robot_inspection?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 jms: pub-sub-domain: true # session: @@ -27,8 +27,8 @@ logging: level.root: info level.com.casic: debug - level.com.casic.missiles.netty: error - level.com.casic.missiles.modular.neutron: error + level.com.casic.missiles.netty: debug + level.com.casic.missiles.modular.neutron: debug level.org.springframework.web: info file: path: D:\\logs \ No newline at end of file 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 4d738a4..f9e68ed 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 @@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; +import java.util.Map; @Api(tags = "探测器管理(包括控制)") @Controller @@ -63,4 +64,13 @@ request.getX3(), request.getX4())); } + + + @ApiOperation("psd导出4列数据接口,需传taskId;psdX1,psdX2为框选psd横坐标的起止值") + @PostMapping("/psdExport") + @ResponseBody + public ResponseDataDTO> psdExport(Long taskId,Long psdX1,Long psdX2) { + + return ResponseDataDTO.success(iPsdService.psdExport(taskId,psdX1,psdX2)); + } } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java new file mode 100644 index 0000000..152a82b --- /dev/null +++ b/casic-server/src/main/java/com/casic/missiles/modular/neutron/dto/PsdTxtDTO.java @@ -0,0 +1,24 @@ +package com.casic.missiles.modular.neutron.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * psdtxt导出DTO + */ +@Data +public class PsdTxtDTO { + + @ApiModelProperty(value = "横坐标值" ) + private Integer x; + @ApiModelProperty(value = "纵坐标值" ) + private Integer y; + + public PsdTxtDTO() { + } + + public PsdTxtDTO(Integer x, Integer y) { + this.x = x; + this.y = y; + } +} 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 9c69d3c..c2289a3 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 @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; +import java.util.Map; /** *

@@ -23,6 +24,8 @@ List hsList(Long detectorId,String type); + Map psdExport(Long taskId,Long psdX1,Long psdX2); + void insertPsdAlarms(); } 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 fa8c89d..c6a30c6 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 @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.common.WebSocket; import com.casic.missiles.core.application.service.AbstractDictService; @@ -12,6 +13,7 @@ import com.casic.missiles.modular.neutron.dao.PsdMapper; import com.casic.missiles.modular.neutron.dto.PsdAlarmDTO; import com.casic.missiles.modular.neutron.dto.PsdDataDTO; +import com.casic.missiles.modular.neutron.dto.PsdTxtDTO; import com.casic.missiles.modular.neutron.model.Psd; import com.casic.missiles.modular.neutron.service.IPsdService; import com.casic.missiles.modular.robot.dto.PointNextDTO; @@ -23,6 +25,7 @@ import com.casic.missiles.modular.robot.service.*; import com.casic.missiles.netty.CacheUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -58,6 +61,9 @@ //记录报警是否推送 private static volatile boolean flag = true; + @Value("${casic.psdLimit:1}") + private float psdLimit; + @Override public List dataList(Long taskId) { List psdDataDTOS = new ArrayList<>(); @@ -181,7 +187,7 @@ JSONObject jsonObject = new JSONObject(); jsonObject.put("robotId", robotId); RobotInfo robotInfo = robotInfoService.getById(robotId); - jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo)?robotInfo.getRobotName():""); + jsonObject.put("robotName", ObjectUtil.isNotEmpty(robotInfo) ? robotInfo.getRobotName() : ""); jsonObject.put("taskTypeName", ObjectUtil.isNotEmpty(taskInfo.getTaskType()) ? dictService.getDictNameByCode("taskType", taskInfo.getTaskType() + "") : ""); jsonObject.put("discernTypeName", ObjectUtil.isNotEmpty(taskInfo.getDiscernType()) ? dictService.getDictNameByCode("discernType", taskInfo.getDiscernType() + "") : ""); jsonObject.put("taskId", taskInfo.getId()); @@ -212,4 +218,79 @@ iAlarmRecordService.saveBatch(alarmRecordList); } } + + @Override + public Map psdExport(Long taskId, Long psdX1, Long psdX2) { + + Map resultMap = new HashMap<>(); + //构造第一列数据 + List list1 = new ArrayList<>(); + int i = 0; + while (i < 4096) { + list1.add(i); + i++; + } + resultMap.put("x", list1); + + //构造第二列数据 + List psdTxtDTOList2 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList3 = new ArrayList<>(); + //构造第三列数据 + List psdTxtDTOList4 = new ArrayList<>(); + list1.forEach(first -> { + psdTxtDTOList2.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList3.add(new PsdTxtDTO(first, 0)); + psdTxtDTOList4.add(new PsdTxtDTO(first, 0)); + }); + resultMap.put("mca", psdTxtDTOList2); + + resultMap.put("psd", psdTxtDTOList3); + + resultMap.put("mca:psd", psdTxtDTOList4); + + TaskInfo taskInfo = iTaskInfoService.getById(taskId); + + if (ObjectUtil.isNotEmpty(taskInfo)) { + Long robotId = taskInfo.getRobotId(); + Date startTime = taskInfo.getStartTime(); + Date endTime = taskInfo.getEndTime(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DETECTOR_ID", robotId); + queryWrapper.ge(ObjectUtil.isNotEmpty(startTime), "CREATE_TIME", startTime); + queryWrapper.le(ObjectUtil.isNotEmpty(endTime), "CREATE_TIME", endTime); + List psdList = list(queryWrapper); + for (Psd psd : psdList) { + if (ObjectUtil.isNotEmpty(psd.getPsd()) && Float.valueOf(psd.getPsd()) >= psdLimit) { + if (ObjectUtil.isNotEmpty(psd.getMcax())) { + psdTxtDTOList2.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + + if (ObjectUtil.isNotEmpty(psd.getPsdx())) { + psdTxtDTOList3.forEach(psdTxtDTO -> { + if (psdTxtDTO.getX().equals(Integer.valueOf(psd.getPsdx()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + + if (ObjectUtil.isAllNotEmpty(psdX1, psdX2) && + psdX1 <= Long.valueOf(psd.getPsdx()) && + psdX2 >= Long.valueOf(psd.getPsdx())) { + psdTxtDTOList4.forEach(psdTxtDTO -> { + if (ObjectUtil.isNotEmpty(psd.getMcax()) && + psdTxtDTO.getX().equals(Integer.valueOf(psd.getMcax()))) { + psdTxtDTO.setY(psdTxtDTO.getY() + 1); + } + }); + } + } + } + } + } + return resultMap; + } } 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 ae41ed4..e8c59b8 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 @@ -17,9 +17,7 @@ import javax.annotation.Resource; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ForkJoinPool; -import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @Slf4j @@ -52,7 +50,7 @@ public void initChannel(SocketChannel ch) throws Exception { ChannelPipeline p = ch.pipeline(); p.addLast(new HjtDecoder()); - p.addLast(new NettyClientHandler(userId, channelCache, neutronOptService, NettyClient.this)); + p.addLast(new NettyClientHandler(userId,channelCache,neutronOptService,NettyClient.this)); } }); @@ -119,10 +117,8 @@ System.out.println("中子源探测器开始连接了------>"); List detectorInfoList = iDetectorInfoService.list(); if (null != detectorInfoList && detectorInfoList.size() > 0) { - ThreadPoolExecutor executor = new ThreadPoolExecutor(detectorInfoList.size(), detectorInfoList.size(), 10, TimeUnit.SECONDS, - new ArrayBlockingQueue<>(10), new ThreadPoolExecutor.CallerRunsPolicy()); detectorInfoList.forEach(detectorInfo -> { - executor.execute(() -> startClient(detectorInfo.getDetectorIp(), + ForkJoinPool.commonPool().submit(() -> startClient(detectorInfo.getDetectorIp(), detectorInfo.getDetectorPort(), detectorInfo.getRobotId())); }); } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index 01be493..937b695 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -68,11 +68,11 @@ casic-core ${core.version} - - io.swagger - swagger-models - 1.6.0 - + + + + + com.casic casic-admin-core diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index fa44b21..4378955 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -4,9 +4,9 @@ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://192.168.1.41:3000/casic_robot_inspection?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true + url: jdbc:mysql://111.198.10.15:11336/casic_robot_inspection?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true username: root - password: 123456 + password: Casic203 jms: pub-sub-domain: true # session: @@ -27,8 +27,8 @@ logging: level.root: info level.com.casic: debug - level.com.casic.missiles.netty: error - level.com.casic.missiles.modular.neutron: error + level.com.casic.missiles.netty: debug + level.com.casic.missiles.modular.neutron: debug level.org.springframework.web: info file: path: D:\\logs \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 7fca313..04420fc 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -54,6 +54,7 @@ config-path: E:\Develop\IdeaProject\smartcity\casic-smartcity-dcms\casic-web\src\main\resources\config\ file: uploadPath: C:\casic\tmp\ + psdLimit: 0.1 server: servlet: context-path: /casic-robot \ No newline at end of file