mq数据接收,新增数据过滤及日志

master
zpl 4 years ago
parent f5f0549164
commit 28d811db9e

@ -17,6 +17,6 @@ import org.springframework.stereotype.Repository;
public interface ResourceStatusReceiveMapper extends BaseMapper<ResourceStatusReceive> {
// 获取最新的记录
ResourceStatusReceive getOneByMaxCreateDateTime(@Param("site") String site);
ResourceStatusReceive getOneByMaxCreateDateTime(@Param("site") String site, @Param("resrce") String resrce);
}

@ -4,8 +4,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.meapi.mapper.DcParameterMapper;
import com.foreverwin.mesnac.meapi.model.DcParameter;
import com.foreverwin.mesnac.meapi.model.Resrce;
import com.foreverwin.mesnac.meapi.service.ResrceService;
import com.foreverwin.modular.core.exception.BusinessException;
import com.foreverwin.modular.core.util.FrontPage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -14,6 +17,8 @@ import com.foreverwin.mesnac.equip.model.EdcDataResource;
import com.foreverwin.mesnac.equip.mapper.EdcDataResourceMapper;
import com.foreverwin.mesnac.equip.service.EdcDataResourceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@ -36,11 +41,14 @@ import java.util.UUID;
@Transactional(rollbackFor = Exception.class)
public class EdcDataResourceServiceImpl extends ServiceImpl<EdcDataResourceMapper, EdcDataResource> implements EdcDataResourceService {
private static Logger logger = LoggerFactory.getLogger(EdcDataResourceServiceImpl.class);
@Autowired
private EdcDataResourceMapper edcDataResourceMapper;
@Autowired
private DcParameterMapper dcParameterMapper;
@Autowired
private ResrceService resrceService;
@Override
public IPage<EdcDataResource> selectPage(FrontPage<EdcDataResource> frontPage, EdcDataResource edcDataResource) {
@ -64,6 +72,25 @@ public class EdcDataResourceServiceImpl extends ServiceImpl<EdcDataResourceMappe
String site = jsonObject.getString("SITE");
String resource = jsonObject.getString("RESOURCE");
String sendTime = jsonObject.getString("SEND_TIME");
if (StringUtil.isBlank(handle)) {
logger.error("唯一标识不能为空!");
throw BusinessException.build("唯一标识不能为空!");
}
if (StringUtil.isBlank(site)) {
logger.error("站点不能为空!");
throw BusinessException.build("站点不能为空!");
}
if (StringUtil.isBlank(resource)) {
logger.error("设备编号不能为空!");
throw BusinessException.build("设备编号不能为空!");
}
String resourceHandle = HandleEnum.RESOURCE.getHandle(site, resource);
Resrce resourceById = resrceService.getById(resourceHandle);
if (resourceById == null){
logger.error("未找到设备编号为" + resource + "的设备!");
throw BusinessException.build("未找到设备编号为" + resource + "的设备!");
}
// 参数列将参数存入MAP方便提取
String paramList = jsonObject.getString("PARAM_LIST");
JSONArray jsonArray = JSON.parseArray(paramList);
@ -80,6 +107,7 @@ public class EdcDataResourceServiceImpl extends ServiceImpl<EdcDataResourceMappe
if (dcGroupBo == null){
dcGroupBo = edcDataResourceMapper.getDcGroupBoByResourceBo2(resourceBo);
if (dcGroupBo == null){
logger.info("设备编号" + resource + "未找到数据收集组");
throw BusinessException.build("设备编号未找到数据收集组!");
}
}
@ -87,7 +115,8 @@ public class EdcDataResourceServiceImpl extends ServiceImpl<EdcDataResourceMappe
StringBuilder columnValSql = new StringBuilder();
StringBuilder columnSql = new StringBuilder();
List<DcParameter> getParamList = dcParameterMapper.getDcParameterByDcGroupBo(dcGroupBo);
if (getParamList.size()<1){
if (getParamList.size() < 1){
logger.info("数据收集组" + dcGroupBo + "未维护字段信息");
throw BusinessException.build("数据收集组" + dcGroupBo + "未维护字段信息");
}
for (DcParameter dcParam:getParamList) {

@ -3,7 +3,10 @@ package com.foreverwin.mesnac.equip.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.meapi.model.Resrce;
import com.foreverwin.mesnac.meapi.service.ResrceService;
import com.foreverwin.modular.core.exception.BusinessException;
import com.foreverwin.modular.core.util.FrontPage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -12,6 +15,8 @@ import com.foreverwin.mesnac.equip.model.ResourceFaultReceive;
import com.foreverwin.mesnac.equip.mapper.ResourceFaultReceiveMapper;
import com.foreverwin.mesnac.equip.service.ResourceFaultReceiveService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@ -34,11 +39,12 @@ import java.util.UUID;
@Transactional(rollbackFor = Exception.class)
public class ResourceFaultReceiveServiceImpl extends ServiceImpl<ResourceFaultReceiveMapper, ResourceFaultReceive> implements ResourceFaultReceiveService {
private static Logger logger = LoggerFactory.getLogger(ResourceFaultReceiveServiceImpl.class);
@Autowired
private ResourceFaultReceiveMapper resourceFaultReceiveMapper;
@Autowired
private ResourceFaultReceiveService resourceFaultReceiveService;
@Autowired
private ResrceService resrceService;
@Override
public IPage<ResourceFaultReceive> selectPage(FrontPage<ResourceFaultReceive> frontPage, ResourceFaultReceive resourceFaultReceive) {
@ -68,14 +74,24 @@ public class ResourceFaultReceiveServiceImpl extends ServiceImpl<ResourceFaultRe
LocalDateTime sendDate = LocalDateTime.parse(sendTime, dataFormatter);
if (StringUtil.isBlank(handle)) {
logger.error("唯一标识不能为空!");
throw BusinessException.build("唯一标识不能为空!");
}
if (StringUtil.isBlank(site)) {
logger.error("站点不能为空!");
throw BusinessException.build("站点不能为空!");
}
if (StringUtil.isBlank(resource)) {
logger.error("设备编号不能为空!");
throw BusinessException.build("设备编号不能为空!");
}
String resourceHandle = HandleEnum.RESOURCE.getHandle(site, resource);
Resrce resourceById = resrceService.getById(resourceHandle);
if (resourceById == null){
logger.error("未找到设备编号为" + resource + "的设备!");
throw BusinessException.build("未找到设备编号为" + resource + "的设备!");
}
List<ResourceFaultReceive> list = new ArrayList<>();
// 故障编码及故障时间
JSONArray jsonArray = JSON.parseArray(faultList);

@ -6,6 +6,7 @@ import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.meapi.model.Resrce;
import com.foreverwin.mesnac.meapi.service.ResrceService;
import com.foreverwin.modular.core.exception.BusinessException;
import com.foreverwin.modular.core.util.CommonMethods;
import com.foreverwin.modular.core.util.FrontPage;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -13,6 +14,8 @@ import com.foreverwin.mesnac.equip.model.ResourceStatusReceive;
import com.foreverwin.mesnac.equip.mapper.ResourceStatusReceiveMapper;
import com.foreverwin.mesnac.equip.service.ResourceStatusReceiveService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@ -35,6 +38,7 @@ import java.util.UUID;
@Transactional(rollbackFor = Exception.class)
public class ResourceStatusReceiveServiceImpl extends ServiceImpl<ResourceStatusReceiveMapper, ResourceStatusReceive> implements ResourceStatusReceiveService {
private static Logger logger = LoggerFactory.getLogger(ResourceStatusReceiveServiceImpl.class);
@Autowired
private ResourceStatusReceiveMapper resourceStatusReceiveMapper;
@ -62,6 +66,7 @@ public class ResourceStatusReceiveServiceImpl extends ServiceImpl<ResourceStatus
*/
@Override
public String updateResourceStatusByMq(String text) {
String user = CommonMethods.getUser();
JSONObject jsonObject = JSONObject.parseObject(text);
// 传输数据的唯一标识HANDLE站点、设备编号、状态
String handle = jsonObject.getString("TRANID");
@ -74,18 +79,28 @@ public class ResourceStatusReceiveServiceImpl extends ServiceImpl<ResourceStatus
LocalDateTime dateTime = LocalDateTime.parse(sendTime,dataFormatter);
if (StringUtil.isBlank(handle)) {
logger.error("唯一标识不能为空!");
throw BusinessException.build("唯一标识不能为空!");
}
if (StringUtil.isBlank(site)) {
logger.error("站点不能为空!");
throw BusinessException.build("站点不能为空!");
}
if (StringUtil.isBlank(resource)) {
logger.error("设备编号不能为空!");
throw BusinessException.build("设备编号不能为空!");
}
String resourceHandle = HandleEnum.RESOURCE.getHandle(site, resource);
Resrce resourceById = resrceService.getById(resourceHandle);
if (resourceById == null){
logger.error("未找到设备编号为" + resource + "的设备!");
throw BusinessException.build("未找到设备编号为" + resource + "的设备!");
}
if (StringUtil.isBlank(sendStatus)) {
logger.error("设备状态不能为空!");
throw BusinessException.build("设备状态不能为空!");
}
LocalDateTime now = LocalDateTime.now();
String status = "301";
//设备状态转换
switch (sendStatus) {
@ -99,19 +114,26 @@ public class ResourceStatusReceiveServiceImpl extends ServiceImpl<ResourceStatus
status = "2"; break;
case "REPAIR" :
status = "4"; break;
default:
logger.info("发送的状态编码:" + sendStatus + ",未找到对应的状态!");
throw BusinessException.build("发送的状态编码:" + sendStatus + ",未找到对应的状态!");
}
// 获取最新数据
ResourceStatusReceive resourceStatus = resourceStatusReceiveMapper.getOneByMaxCreateDateTime(site);
LocalDateTime oldDate = resourceStatus.getDateTime();
resourceStatus.setChangeStatus(status);
resourceStatus.setChangeDateTime(dateTime);
Duration between = Duration.between(oldDate, dateTime);
Long intervalTime = between.toMinutes();
resourceStatus.setIntervalTime(intervalTime.doubleValue());
resourceStatus.setModifiedDateTime(LocalDateTime.now());
resourceStatus.setModifyUser("SITE_ADMIN");
resourceStatusReceiveMapper.updateById(resourceStatus);
ResourceStatusReceive resourceStatus = resourceStatusReceiveMapper.getOneByMaxCreateDateTime(site,resource);
if (resourceStatus != null){
LocalDateTime oldDate = resourceStatus.getDateTime();
resourceStatus.setChangeStatus(status);
resourceStatus.setChangeDateTime(dateTime);
Duration between = Duration.between(oldDate, dateTime);
Long intervalTime = between.toMinutes();
resourceStatus.setIntervalTime(intervalTime.doubleValue());
resourceStatus.setModifiedDateTime(now);
resourceStatus.setModifyUser(user);
resourceStatusReceiveMapper.updateById(resourceStatus);
}else{
logger.info("设备编号:" + resource + ",记录第一笔数据!");
}
// 数据库录入新数据
ResourceStatusReceive resourceStatusReceive = new ResourceStatusReceive();
resourceStatusReceive.setHandle(UUID.randomUUID().toString());
@ -119,14 +141,13 @@ public class ResourceStatusReceiveServiceImpl extends ServiceImpl<ResourceStatus
resourceStatusReceive.setResrce(resource);
resourceStatusReceive.setStatus(status);
resourceStatusReceive.setDateTime(dateTime);
resourceStatusReceive.setCreateUser("SITE_ADMIN");
resourceStatusReceive.setCreatedDateTime(LocalDateTime.now());
resourceStatusReceive.setCreateUser(user);
resourceStatusReceive.setCreatedDateTime(now);
resourceStatusReceiveMapper.insert(resourceStatusReceive);
// 修改设备状态
Resrce resrce = resrceService.getById(HandleEnum.RESOURCE.getHandle(site, resource));
resrce.setStatusBo(HandleEnum.STATUS.getHandle(site,status));
resrce.setModifiedDateTime(LocalDateTime.now());
resrceService.updateById(resrce);
resourceById.setStatusBo(HandleEnum.STATUS.getHandle(site,status));
resourceById.setModifiedDateTime(now);
resrceService.updateById(resourceById);
return handle;
}

@ -433,13 +433,14 @@
<!--自定义sql-->
<select id="getOneByMaxCreateDateTime" resultType="com.foreverwin.mesnac.equip.model.ResourceStatusReceive">
SELECT RSR.*
FROM
Z_RESOURCE_STATUS_RECEIVE RSR
WHERE
RSR.CREATED_DATE_TIME = (SELECT MAX(CREATED_DATE_TIME) FROM Z_RESOURCE_STATUS_RECEIVE )
AND RSR.SITE = #{site}
SELECT * FROM (
SELECT ROWNUM SEQ, RSR.*
FROM Z_RESOURCE_STATUS_RECEIVE RSR
WHERE RSR.CHANGE_STATUS IS NULL AND RSR.SITE = #{site} AND RSR.RESRCE = #{resrce}
ORDER BY RSR.CREATED_DATE_TIME DESC
) WHERE SEQ = 1
</select>
<!--自定义sql-->

Loading…
Cancel
Save