完成大数据页面

This commit is contained in:
wanggeng888 2021-03-26 13:19:16 +08:00
parent 6da979a9a2
commit cd6377eae5
19 changed files with 454 additions and 781 deletions

View File

@ -4,6 +4,7 @@ import com.cm.tenlion.pollutantdata.manager.CollectorManager;
import com.cm.tenlion.pollutantdata.service.alarmlog.IAlarmLogService;
import com.cm.tenlion.pollutantdata.service.collector.ICollectorService;
import com.cm.tenlion.pollutantdata.service.dataminute.IDataMinuteService;
import com.cm.tenlion.pollutantdata.service.enterprise.IEnterpriseService;
import com.cm.tenlion.pollutantdata.service.instrument.IInstrumentService;
import com.cm.tenlion.pollutantdata.service.poll.IPollService;
import com.cm.tenlion.pollutantdata.utils.net.TCPServer;
@ -22,6 +23,8 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(scanBasePackages = {"com.cm"})
@MapperScan({"com.cm.**.dao"})
public class PollutantDataApplication {
@Autowired
private IEnterpriseService enterpriseService;
@Autowired
private IInstrumentService instrumentService;
@Autowired
@ -49,6 +52,7 @@ public class PollutantDataApplication {
new Thread(() -> {
try {
TCPServer tcpServer = new TCPServer(6666);
tcpServer.setEnterpriseService(enterpriseService);
tcpServer.setInstrumentService(instrumentService);
tcpServer.setCollectorService(collectorService);
tcpServer.setDataMinuteService(dataMinuteService);

View File

@ -3,6 +3,7 @@ package com.cm.tenlion.pollutantdata.controller.api.count;
import com.cm.common.constants.ISystemConstant;
import com.cm.common.result.ErrorResult;
import com.cm.common.result.SuccessResultData;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.EnterprisePollDTO;
import com.cm.tenlion.pollutantdata.service.count.ICountService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -55,10 +56,10 @@ public class CountController {
@ApiOperation(value = "污染因子列表", notes = "污染因子列表接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list-pollid/{type}")
public List<String> listPollId(@PathVariable("type") Integer type,
@RequestParam(name = "enterpriseId", required = false) String enterpriseId) {
return countService.listPollId(type, enterpriseId);
@GetMapping("list-enterprise-pollid/{type}")
public List<EnterprisePollDTO> listPollId(@PathVariable("type") Integer type,
@RequestParam(name = "enterpriseId", required = false) String enterpriseId) {
return countService.listEnterprisePollId(type, enterpriseId);
}
@ApiOperation(value = "历史数据1", notes = "历史数据1接口")
@ -66,8 +67,15 @@ public class CountController {
@GetMapping("count-history-value/{type}/{pollId}/{enterpriseId}")
public SuccessResultData<Map<String, Object>> countHistoryValue1(@PathVariable("type") Integer type,
@PathVariable("pollId") String pollId,
@RequestParam(name = "enterpriseId", required = false) String enterpriseId) {
@PathVariable("enterpriseId") String enterpriseId) {
return countService.countHistoryValue1(type, pollId, enterpriseId);
}
@ApiOperation(value = "统计污染因子上报数量", notes = "统计污染因子上报数量接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("count-report-pollid")
public SuccessResultData<Map<String, Object>> countReportPollId() {
return countService.countReportPollId();
}
}

View File

@ -2,6 +2,7 @@ package com.cm.tenlion.pollutantdata.dao.dataminute;
import com.cm.tenlion.pollutantdata.pojo.bos.dataminute.DataMinuteBO;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.DataMinuteDTO;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.EnterprisePollDTO;
import com.cm.tenlion.pollutantdata.pojo.pos.dataminute.DataMinutePO;
import com.cm.common.exception.RemoveException;
import com.cm.common.exception.SaveException;
@ -135,6 +136,15 @@ public interface IDataMinuteDao {
*/
List<String> listPollId(Map<String, Object> params) throws SearchException;
/**
* 企业污染因子列表
*
* @param params
* @return
* @throws SearchException
*/
List<EnterprisePollDTO> listEnterprisePollId(Map<String, Object> params) throws SearchException;
/**
* 最新实时数据
*

View File

@ -75,7 +75,11 @@ public enum QnRtdEnum {
/**
* 采集器编码空
*/
CUSTOM_CP_SN_ERROR(110006);
CUSTOM_CP_SN_ERROR(110006),
/**
* 企业不存在
*/
CUSTOM_ENTERPRISE_ERROR(110007);
private int value;

View File

@ -1,5 +1,7 @@
package com.cm.tenlion.pollutantdata.manager;
import com.cm.tenlion.pollutantdata.enums.BigDataTypeEnum;
import com.cm.tenlion.pollutantdata.pojo.BigDataWebSocketData;
import com.cm.tenlion.pollutantdata.pojo.OnlineCollector;
import com.cm.tenlion.pollutantdata.pojo.dtos.collector.CollectorDTO;
import lombok.extern.slf4j.Slf4j;
@ -47,15 +49,12 @@ public class CollectorManager {
public void addCollector(String channelId, CollectorDTO collectorDTO) {
OnlineCollector onlineCollector = getCollector(channelId);
if (onlineCollector == null) {
log.debug("{} 采集器设备接入", onlineCollector.getCollectorDTO().getCollectorMn());
log.debug("{} 采集器设备接入", collectorDTO.getCollectorMn());
onlineCollector = new OnlineCollector();
onlineCollector.setChannelId(channelId);
onlineCollector.setCollectorDTO(collectorDTO);
onlineCollector.setLastUploadDataTime(System.currentTimeMillis());
collectors.put(channelId, onlineCollector);
// 通知有统计的页面刷新
// WebSocketManager.getInstance().sendMessage(new BigDataWebSocketData<>(BigDataTypeEnum.ONLINE_COUNT, collectors.size()));
return;
}
onlineCollector.setLastUploadDataTime(System.currentTimeMillis());
@ -137,7 +136,13 @@ public class CollectorManager {
public void deleteCollector(String channelId) {
OnlineCollector onlineCollector = getCollector(channelId);
if (onlineCollector != null) {
log.debug("{} 采集器设备离线", onlineCollector.getCollectorDTO().getCollectorMn());
String message = String.format("%s %s 采集仪的 %s 采集器离线",
onlineCollector.getCollectorDTO().getEnterpriseName(),
onlineCollector.getCollectorDTO().getInstrumentName(),
onlineCollector.getCollectorDTO().getCollectorMn());
log.debug(message);
// 通知有统计的页面刷新
WebSocketManager.getInstance().sendMessage(new BigDataWebSocketData<>(BigDataTypeEnum.OFFLINE_MESSAGE, message));
collectors.remove(channelId);
}
}

View File

@ -0,0 +1,26 @@
package com.cm.tenlion.pollutantdata.pojo.dtos.dataminute;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* When you feel like quitting. Think about why you started
* 当你想要放弃的时候想想当初你为何开始
*
* @ClassName: EnterprisePollDTO
* @Description: 企业污染因子列表
* @Author: wanggeng
* @Date: 2021/3/26 9:40 上午
* @Version: 1.0
*/
@ApiModel
@Data
public class EnterprisePollDTO {
@ApiModelProperty(name = "enterpriseId", value = "企业ID")
private String enterpriseId;
@ApiModelProperty(name = "pollId", value = "污染因子编码")
private String pollId;
}

View File

@ -1,6 +1,7 @@
package com.cm.tenlion.pollutantdata.service.count;
import com.cm.common.result.SuccessResultData;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.EnterprisePollDTO;
import java.util.List;
import java.util.Map;
@ -46,7 +47,7 @@ public interface ICountService {
* @param enterpriseId
* @return
*/
List<String> listPollId(Integer type, String enterpriseId);
List<EnterprisePollDTO> listEnterprisePollId(Integer type, String enterpriseId);
/**
* 历史数据1
@ -58,4 +59,10 @@ public interface ICountService {
*/
SuccessResultData<Map<String, Object>> countHistoryValue1(Integer type, String pollId, String enterpriseId);
/**
* 统计污染因子上报数量
*
* @return
*/
SuccessResultData<Map<String, Object>> countReportPollId();
}

View File

@ -5,6 +5,7 @@ import com.cm.common.constants.ISystemConstant;
import com.cm.common.result.SuccessResultData;
import com.cm.common.utils.DateUtil;
import com.cm.tenlion.pollutantdata.manager.CollectorManager;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.EnterprisePollDTO;
import com.cm.tenlion.pollutantdata.pojo.pos.dataminute.DataMinutePO;
import com.cm.tenlion.pollutantdata.service.alarmlog.IAlarmLogService;
import com.cm.tenlion.pollutantdata.service.collector.ICollectorService;
@ -142,12 +143,12 @@ public class CountServiceImpl extends AbstractService implements ICountService {
}
@Override
public List<String> listPollId(Integer type, String enterpriseId) {
public List<EnterprisePollDTO> listEnterprisePollId(Integer type, String enterpriseId) {
Map<String, Object> params = getHashMap(8);
params.put("startTime", getStartTime(type));
params.put("enterpriseId", enterpriseId);
// 污染物因子列表
return dataMinuteService.listPollId(params);
return dataMinuteService.listEnterprisePollId(params);
}
@Override
@ -175,9 +176,9 @@ public class CountServiceImpl extends AbstractService implements ICountService {
rtdData.put("data", yRtdData);
yList.add(rtdData);
Map<String, Object> zsRtdData = getHashMap(6);
rtdData.put("name", "折算实时数据");
rtdData.put("type", "line");
rtdData.put("data", yZsRtdData);
zsRtdData.put("name", "折算实时数据");
zsRtdData.put("type", "line");
zsRtdData.put("data", yZsRtdData);
yList.add(zsRtdData);
params.clear();
params.put("xList", xList);
@ -185,6 +186,25 @@ public class CountServiceImpl extends AbstractService implements ICountService {
return new SuccessResultData<>(params);
}
@Override
public SuccessResultData<Map<String, Object>> countReportPollId() {
Map<String, Object> param = getHashMap(2);
List<String> pollIds = dataMinuteService.listPollId(param);
List<Map<String, Object>> pollDatas = new ArrayList<>();
for (String pollId : pollIds) {
param.put("pollId", pollId);
Integer count = dataMinuteService.count(param);
Map<String, Object> pollData = getHashMap(4);
pollData.put("name", pollId);
pollData.put("value", count);
pollDatas.add(pollData);
}
param.clear();
param.put("pollDatas", pollDatas);
return new SuccessResultData<>(param);
}
/**
* 获取开始时间
*

View File

@ -2,6 +2,7 @@ package com.cm.tenlion.pollutantdata.service.dataminute;
import com.cm.tenlion.pollutantdata.pojo.bos.dataminute.DataMinuteBO;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.DataMinuteDTO;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.EnterprisePollDTO;
import com.cm.tenlion.pollutantdata.pojo.pos.dataminute.DataMinutePO;
import com.cm.tenlion.pollutantdata.pojo.vos.dataminute.DataMinuteVO;
import com.cm.common.pojo.ListPage;
@ -201,6 +202,14 @@ public interface IDataMinuteService {
*/
List<String> listPollId(Map<String, Object> params);
/**
* 污染因子列表
*
* @param params
* @return
*/
List<EnterprisePollDTO> listEnterprisePollId(Map<String, Object> params);
/**
* 最新实时数据
*

View File

@ -3,6 +3,7 @@ package com.cm.tenlion.pollutantdata.service.dataminute.impl;
import com.cm.tenlion.pollutantdata.dao.dataminute.IDataMinuteDao;
import com.cm.tenlion.pollutantdata.pojo.bos.dataminute.DataMinuteBO;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.DataMinuteDTO;
import com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.EnterprisePollDTO;
import com.cm.tenlion.pollutantdata.pojo.pos.dataminute.DataMinutePO;
import com.cm.tenlion.pollutantdata.pojo.vos.dataminute.DataMinuteVO;
import com.cm.tenlion.pollutantdata.service.dataminute.IDataMinuteService;
@ -182,6 +183,11 @@ public class DataMinuteServiceImpl extends AbstractService implements IDataMinut
return dataMinuteDao.listPollId(params);
}
@Override
public List<EnterprisePollDTO> listEnterprisePollId(Map<String, Object> params) {
return dataMinuteDao.listEnterprisePollId(params);
}
@Override
public Double getLastRtd(Map<String, Object> params) {
return dataMinuteDao.getLastRtd(params);

View File

@ -3,10 +3,12 @@ package com.cm.tenlion.pollutantdata.utils.net;
import com.cm.common.utils.RegexUtil;
import com.cm.tenlion.pollutantdata.enums.*;
import com.cm.tenlion.pollutantdata.manager.CollectorManager;
import com.cm.tenlion.pollutantdata.pojo.dtos.enterprise.EnterpriseDTO;
import com.cm.tenlion.pollutantdata.pojo.dtos.instrument.InstrumentDTO;
import com.cm.tenlion.pollutantdata.service.alarmlog.IAlarmLogService;
import com.cm.tenlion.pollutantdata.service.collector.ICollectorService;
import com.cm.tenlion.pollutantdata.service.dataminute.IDataMinuteService;
import com.cm.tenlion.pollutantdata.service.enterprise.IEnterpriseService;
import com.cm.tenlion.pollutantdata.service.instrument.IInstrumentService;
import com.cm.tenlion.pollutantdata.service.poll.IPollService;
import com.cm.tenlion.pollutantdata.utils.HJ212DataUtil;
@ -40,17 +42,20 @@ import java.net.InetSocketAddress;
@Slf4j
public class TCPHandler extends SimpleChannelInboundHandler<ByteBuf> {
private IEnterpriseService enterpriseService;
private IInstrumentService instrumentService;
private ICollectorService collectorService;
private IDataMinuteService dataMinuteService;
private IPollService pollService;
private IAlarmLogService alarmLogService;
public TCPHandler(IInstrumentService instrumentService,
public TCPHandler(IEnterpriseService enterpriseService,
IInstrumentService instrumentService,
ICollectorService collectorService,
IDataMinuteService dataMinuteService,
IPollService pollService,
IAlarmLogService alarmLogService) {
this.enterpriseService = enterpriseService;
this.instrumentService = instrumentService;
this.collectorService = collectorService;
this.dataMinuteService = dataMinuteService;
@ -102,7 +107,7 @@ public class TCPHandler extends SimpleChannelInboundHandler<ByteBuf> {
}
InstrumentDTO instrumentDTO = instrumentService.getByMn(data.getMn());
if (instrumentDTO == null) {
log.debug("设备不存在");
log.debug("采集仪不存在");
new ResponseDefault(ctx, QnRtdEnum.MN_ERROR, ExeRtnEnum.COMMAND_ERROR, needResponse).response(data);
return;
}
@ -116,6 +121,12 @@ public class TCPHandler extends SimpleChannelInboundHandler<ByteBuf> {
new ResponseDefault(ctx, QnRtdEnum.ST_ERROR, ExeRtnEnum.COMMAND_ERROR, needResponse).response(data);
return;
}
EnterpriseDTO enterpriseDTO = enterpriseService.get(instrumentDTO.getEnterpriseId());
if (enterpriseDTO == null) {
log.debug("采集仪的企业不存在");
new ResponseDefault(ctx, QnRtdEnum.CUSTOM_ENTERPRISE_ERROR, ExeRtnEnum.COMMAND_ERROR, needResponse).response(data);
return;
}
if (CnEnum.REAL_TIME.getValue() == data.getCn()) {
log.debug("保存实时数据");
RealDataHandler realDataHandler = new RealDataHandler();
@ -123,7 +134,9 @@ public class TCPHandler extends SimpleChannelInboundHandler<ByteBuf> {
realDataHandler.setPollService(pollService);
realDataHandler.setDataMinuteService(dataMinuteService);
realDataHandler.setCollectorService(collectorService);
realDataHandler.setAlarmLogService(alarmLogService);
realDataHandler.setInstrumentDTO(instrumentDTO);
realDataHandler.setEnterpriseDTO(enterpriseDTO);
realDataHandler.handle(data, needResponse, ctx);
return;
}

View File

@ -3,6 +3,7 @@ package com.cm.tenlion.pollutantdata.utils.net;
import com.cm.tenlion.pollutantdata.service.alarmlog.IAlarmLogService;
import com.cm.tenlion.pollutantdata.service.collector.ICollectorService;
import com.cm.tenlion.pollutantdata.service.dataminute.IDataMinuteService;
import com.cm.tenlion.pollutantdata.service.enterprise.IEnterpriseService;
import com.cm.tenlion.pollutantdata.service.instrument.IInstrumentService;
import com.cm.tenlion.pollutantdata.service.poll.IPollService;
import io.netty.bootstrap.ServerBootstrap;
@ -30,6 +31,7 @@ import java.util.concurrent.TimeUnit;
**/
public class TCPServer {
private IEnterpriseService enterpriseService;
private IInstrumentService instrumentService;
private ICollectorService collectorService;
private IDataMinuteService dataMinuteService;
@ -82,7 +84,7 @@ public class TCPServer {
}
});
// 这里的对象必须new否则只有第一次有效其余无法连接每次执行的后都需要new
pipeline.addLast(new TCPHandler(instrumentService, collectorService, dataMinuteService, pollService, alarmLogService));
pipeline.addLast(new TCPHandler(enterpriseService, instrumentService, collectorService, dataMinuteService, pollService, alarmLogService));
}
});
@ -101,6 +103,10 @@ public class TCPServer {
}
}
public void setEnterpriseService(IEnterpriseService enterpriseService) {
this.enterpriseService = enterpriseService;
}
public void setInstrumentService(IInstrumentService instrumentService) {
this.instrumentService = instrumentService;
}

View File

@ -1,11 +1,15 @@
package com.cm.tenlion.pollutantdata.utils.net.handle;
import com.cm.common.utils.RegexUtil;
import com.cm.tenlion.pollutantdata.enums.BigDataTypeEnum;
import com.cm.tenlion.pollutantdata.enums.DataCpFlagEnum;
import com.cm.tenlion.pollutantdata.enums.ExeRtnEnum;
import com.cm.tenlion.pollutantdata.enums.QnRtdEnum;
import com.cm.tenlion.pollutantdata.manager.CollectorManager;
import com.cm.tenlion.pollutantdata.manager.WebSocketManager;
import com.cm.tenlion.pollutantdata.pojo.BigDataWebSocketData;
import com.cm.tenlion.pollutantdata.pojo.dtos.collector.CollectorDTO;
import com.cm.tenlion.pollutantdata.pojo.dtos.enterprise.EnterpriseDTO;
import com.cm.tenlion.pollutantdata.pojo.dtos.instrument.InstrumentDTO;
import com.cm.tenlion.pollutantdata.pojo.pos.poll.PollPO;
import com.cm.tenlion.pollutantdata.pojo.vos.alarmlog.AlarmLogVO;
@ -40,6 +44,7 @@ public class RealDataHandler implements IDataHandle<HJ212DataUtil.Data> {
private ICollectorService collectorService;
private IPollService pollService;
private IDataMinuteService dataMinuteService;
private EnterpriseDTO enterpriseDTO;
private InstrumentDTO instrumentDTO;
private IAlarmLogService alarmLogService;
private String ipAddress;
@ -93,6 +98,8 @@ public class RealDataHandler implements IDataHandle<HJ212DataUtil.Data> {
new ResponseDefault(ctx, QnRtdEnum.CUSTOM_CP_SN_ERROR, ExeRtnEnum.COMMAND_ERROR, isRepo).response(data);
return;
}
collectorDTO.setEnterpriseName(enterpriseDTO.getEnterpriseName());
collectorDTO.setInstrumentName(instrumentDTO.getInstrumentName());
DataMinuteVO dataMinuteVO = new DataMinuteVO();
dataMinuteVO.setEnterpriseId(instrumentDTO.getEnterpriseId());
@ -110,7 +117,7 @@ public class RealDataHandler implements IDataHandle<HJ212DataUtil.Data> {
CollectorManager.getInstance().addCollector(ctx.channel().id().toString(), collectorDTO);
// 超过报警值记录报警日志
if (dataMinuteVO.getRtd() > collectorDTO.getAlarmValue()) {
saveAlarmLog(dataMinuteVO, collectorDTO.getAlarmValue());
saveAlarmLog(dataMinuteVO, collectorDTO);
}
new ResponseDefault(ctx, QnRtdEnum.READY, ExeRtnEnum.SUCCESS, isRepo).response(data);
@ -120,10 +127,10 @@ public class RealDataHandler implements IDataHandle<HJ212DataUtil.Data> {
* 保存报警日志
*
* @param dataMinuteVO
* @param alarmValue
* @param collectorDTO
*/
private void saveAlarmLog(DataMinuteVO dataMinuteVO, double alarmValue) throws Exception {
if (alarmValue < 0) {
private void saveAlarmLog(DataMinuteVO dataMinuteVO, CollectorDTO collectorDTO) throws Exception {
if (collectorDTO.getAlarmValue() < 0) {
return;
}
AlarmLogVO alarmLogVO = new AlarmLogVO();
@ -132,9 +139,14 @@ public class RealDataHandler implements IDataHandle<HJ212DataUtil.Data> {
alarmLogVO.setCollectorId(dataMinuteVO.getCollectorId());
alarmLogVO.setRtd(dataMinuteVO.getRtd());
alarmLogVO.setZsRtd(dataMinuteVO.getZsRtd());
alarmLogVO.setAlarmValue(alarmValue);
alarmLogVO.setAlarmValue(collectorDTO.getAlarmValue());
alarmLogVO.setPollId(dataMinuteVO.getPollId());
alarmLogService.save(alarmLogVO);
// 通知
String message = String.format("%s %s 的 %s 采集仪数据超标报警",
collectorDTO.getEnterpriseName(), collectorDTO.getInstrumentName(), collectorDTO.getCollectorMn());
WebSocketManager.getInstance().sendMessage(new BigDataWebSocketData<>(BigDataTypeEnum.ALARM_MESSAGE, message));
}
/**
@ -183,6 +195,10 @@ public class RealDataHandler implements IDataHandle<HJ212DataUtil.Data> {
this.dataMinuteService = dataMinuteService;
}
public void setEnterpriseDTO(EnterpriseDTO enterpriseDTO) {
this.enterpriseDTO = enterpriseDTO;
}
public void setInstrumentDTO(InstrumentDTO instrumentDTO) {
this.instrumentDTO = instrumentDTO;
}

View File

@ -62,7 +62,7 @@ api-path:
# 安全
security:
oauth2:
oauth-server: http://192.168.0.106:7001/usercenter
oauth-server: http://192.168.0.103:7001/usercenter
oauth-logout: ${security.oauth2.oauth-server}/logout?redirect_uri=${server.url}
client:
client-id: 74e4b55ad48840f9b4de86ce5da58b53

View File

@ -176,10 +176,14 @@
pollute_collector t1
WHERE
t1.is_delete = 0
<if test="collectorId != null and collectorId != ''">
<if test="collectorId != null and collectorId != ''">
AND
t1.collector_id = #{collectorId}
</if>
</if>
<if test="collectorMn != null and collectorMn != ''">
AND
t1.collector_mn = #{collectorMn}
</if>
</select>
<!-- 采集器详情 -->

View File

@ -68,6 +68,11 @@
<result column="gmt_create" property="gmtCreate"/>
</resultMap>
<resultMap id="enterprisePollDTO" type="com.cm.tenlion.pollutantdata.pojo.dtos.dataminute.EnterprisePollDTO">
<result column="enterprise_id" property="enterpriseId"/>
<result column="poll_id" property="pollId"/>
</resultMap>
<!-- 新增采集分钟数据 -->
<insert id="save" parameterType="map">
INSERT INTO pollute_data_minute (
@ -429,6 +434,10 @@
AND
t1.enterprise_id = #{enterpriseId}
</if>
<if test="pollId != null and pollId != ''">
AND
t1.poll_id = #{pollId}
</if>
</select>
<!-- 统计污染因子 -->
@ -475,6 +484,35 @@
poll_id
</select>
<!-- 污染因子列表 -->
<select id="listEnterprisePollId" parameterType="map" resultMap="enterprisePollDTO">
SELECT
poll_id,
enterprise_id
FROM
pollute_data_minute
WHERE
1 = 1
<if test="enterpriseId != null and enterpriseId != ''">
AND
enterprise_id = #{enterpriseId}
</if>
<if test="day != null and day != ''">
AND
LEFT(gmt_create, 10) = #{day}
</if>
<if test="startTime != null and startTime != ''">
AND
gmt_create <![CDATA[ >= ]]> #{startTime}
</if>
<if test="endTime != null and endTime != ''">
AND
gmt_create <![CDATA[ <= ]]> #{endTime}
</if>
GROUP BY
poll_id, enterprise_id
</select>
<!-- 最新实时数据 -->
<select id="getLastRtd" parameterType="map" resultType="java.lang.Double">
SELECT

View File

@ -81,6 +81,13 @@ a:hover {
float: right;
}
.alarm-span {
width: 1rem;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
/*谷哥滚动条样式*/
::-webkit-scrollbar {

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,7 @@ import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Random;
/**
* When you feel like quitting. Think about why you started
@ -39,16 +40,20 @@ public class HJ212Test {
// 采集器密码
data.setPw("123456");
// 采集器编号
data.setMn("SCY000001");
data.setMn("SCY00010001");
data.setFlag(DataFlagEnum.HAS_PNUM_ANSWER_V2017.getValue());
HJ212DataUtil.DataCp dataCp = new HJ212DataUtil.DataCp();
Random random = new Random();
// 实时值
dataCp.setRtd(18.0D);
dataCp.setRtd((double) random.nextInt(20));
// 折算实时值
dataCp.setZsRtd(6.0D);
dataCp.setZsRtd((double) random.nextInt(20));
// 污染因子
dataCp.setPollId("w00000");
dataCp.setSn("CJQ000001");
// dataCp.setPollId("w00000");
dataCp.setPollId("w01001");
// dataCp.setSn("CJQ000100010001");
dataCp.setSn("CJQ000100010002");
dataCp.setSampleTime(DateUtil.formatDate(System.currentTimeMillis(), "yyyyMMddHHmmssSSS"));
dataCp.setFlag(DataCpFlagEnum.N.getValue());
data.setDataCp(dataCp);