北京暂降平台调整

This commit is contained in:
cdf
2025-08-11 10:03:48 +08:00
parent c73e062109
commit 1a0227620f
18 changed files with 368 additions and 134 deletions

View File

@@ -0,0 +1,21 @@
package com.njcn.gather.event.devcie.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.gather.event.devcie.pojo.dto.SubstationDTO;
import com.njcn.gather.event.devcie.pojo.po.PqGdCompany;
import com.njcn.gather.event.devcie.pojo.po.PqSubstation;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
*
* Description:
* Date: 2025/06/19 下午 1:48【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface PqGdCompanyMapper extends BaseMapper<PqGdCompany> {
}

View File

@@ -24,7 +24,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
<!--@mbg.generated--> <!--@mbg.generated-->
LINE_INDEX, GD_INDEX, SUB_INDEX, SUBV_INDEX, DEV_INDEX, "NAME", PT1, PT2, CT1, CT2, LINE_INDEX, GD_INDEX, SUB_INDEX, SUBV_INDEX, DEV_INDEX, "NAME", PT1, PT2, CT1, CT2,
DEVCMP, DLCMP, JZCMP, XYCMP, SUBV_NO, "SCALE", SUBV_NAME DEVCMP, DLCMP, JZCMP, XYCMP, SUBV_NO, "SCALE", SUBV_NAME
</sql> </sql>
@@ -60,4 +60,6 @@ where 1=1
#{item} #{item}
</foreach> </foreach>
</select> </select>
</mapper>
</mapper>

View File

@@ -40,4 +40,5 @@ public class DeviceDTO {
//装置通讯状态0中断1正常 //装置通讯状态0中断1正常
private Integer status; private Integer status;
private double onLineRate=0.00; private double onLineRate=0.00;
private double integrityRate = 0.00;
} }

View File

@@ -0,0 +1,27 @@
package com.njcn.gather.event.devcie.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* CN_Gather
*
* @author cdf
* @date 2025/8/9
*/
@Data
@TableName(value = "PQ_GDINFORMATION")
public class PqGdCompany {
@TableId
@TableField(value="GD_INDEX")
private Long gdIndex;
@TableField(value="NAME")
private String name;
@TableField(value="PROVINCE_INDEX")
private Long provinceIndex;
}

View File

@@ -6,9 +6,10 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Transient;
/** /**
* *
* Description: * Description:
* Date: 2025/06/19 下午 1:43【需求编号】 * Date: 2025/06/19 下午 1:43【需求编号】
* *
@@ -123,4 +124,7 @@ public class PqLine {
*/ */
@TableField(value = "SUBV_NAME") @TableField(value = "SUBV_NAME")
private String subvName; private String subvName;
}
@TableField(exist = false)
private String subName;
}

View File

@@ -112,8 +112,8 @@ public class EventGateController extends BaseController {
String str ="/"; String str ="/";
if(CollUtil.isNotEmpty(assList)){ if(CollUtil.isNotEmpty(assList)){
List<String> userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); List<String> userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList());
List<PqUserLedgerPO> poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper<PqUserLedgerPO>().select(PqUserLedgerPO::getId,PqUserLedgerPO::getProjectName).in(PqUserLedgerPO::getId,userIds)); List<PqUserLedgerPO> poList = pqUserLedgerMapper.selectList(new LambdaQueryWrapper<PqUserLedgerPO>().select(PqUserLedgerPO::getId,PqUserLedgerPO::getCustomerName).in(PqUserLedgerPO::getId,userIds));
str = poList.stream().map(PqUserLedgerPO::getProjectName).collect(Collectors.joining(StrUtil.COMMA)); str = poList.stream().map(PqUserLedgerPO::getCustomerName).collect(Collectors.joining(StrUtil.COMMA));
} }
List<PqsDepts> deptsList = (List<PqsDepts>)redisUtil.getObjectByKey(REDIS_DEPT_INDEX+ StrUtil.DASHED+"AllDept"); List<PqsDepts> deptsList = (List<PqsDepts>)redisUtil.getObjectByKey(REDIS_DEPT_INDEX+ StrUtil.DASHED+"AllDept");

View File

@@ -15,6 +15,7 @@ import com.njcn.event.file.pojo.dto.WaveDataDTO;
import com.njcn.gather.event.devcie.mapper.PqLineMapper; import com.njcn.gather.event.devcie.mapper.PqLineMapper;
import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO; import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO;
import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO; import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO;
import com.njcn.gather.event.devcie.pojo.po.PqGdCompany;
import com.njcn.gather.event.devcie.pojo.po.PqLine; import com.njcn.gather.event.devcie.pojo.po.PqLine;
import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline; import com.njcn.gather.event.devcie.pojo.po.PqsDeptsline;
import com.njcn.gather.event.devcie.service.PqsDeptslineService; import com.njcn.gather.event.devcie.service.PqsDeptslineService;
@@ -99,8 +100,16 @@ public class EventRightController extends BaseController {
@ApiImplicitParam(name = "largeScreenCountParam", value = "", required = true) @ApiImplicitParam(name = "largeScreenCountParam", value = "", required = true)
public HttpResult<Object> rightEventDevOpen(@RequestBody LargeScreenCountParam largeScreenCountParam) { public HttpResult<Object> rightEventDevOpen(@RequestBody LargeScreenCountParam largeScreenCountParam) {
String methodDescribe = getMethodDescribe("rightEventDevOpen"); String methodDescribe = getMethodDescribe("rightEventDevOpen");
Page<DeviceDTO> page = eventRightService.rightEventDevOpen(largeScreenCountParam); Page<PqUserLedgerPO> page = eventRightService.rightEventDevOpen(largeScreenCountParam);
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe);
} }
@GetMapping("gdSelect")
public HttpResult<List<PqGdCompany>> gdSelect() {
String methodDescribe = getMethodDescribe("gdSelect");
List<PqGdCompany> list = eventRightService.gdSelect();
return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe);
}
} }

View File

@@ -0,0 +1,16 @@
package com.njcn.gather.event.transientes.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.gather.event.transientes.pojo.po.PqsIntegrity;
import com.njcn.gather.event.transientes.pojo.po.PqsOnlinerate;
/**
*
* Description:
* Date: 2025/07/29 下午 6:40【需求编号】
*
* @author clam
* @version V1.0.0
*/
public interface PqsIntegrityMapper extends BaseMapper<PqsIntegrity> {
}

View File

@@ -44,4 +44,6 @@ public class LargeScreenCountParam extends BaseParam {
private String smallObjType; private String smallObjType;
private List<String> eventIds; private List<String> eventIds;
private Integer gdIndex;
} }

View File

@@ -29,10 +29,6 @@ public class PqUserLedgerPO implements Serializable {
@TableField(value = "CUSTOMER_NAME") @TableField(value = "CUSTOMER_NAME")
private String customerName; private String customerName;
@TableField(value = "PROJECT_NAME")
private String projectName;
@TableField(value = "ELECTRICITY_ADDRESS") @TableField(value = "ELECTRICITY_ADDRESS")
private String electricityAddress; private String electricityAddress;
@@ -88,4 +84,10 @@ public class PqUserLedgerPO implements Serializable {
@TableField(value = "IS_SHOW") @TableField(value = "IS_SHOW")
private Integer isShow; private Integer isShow;
@TableField(exist = false)
private Integer eventCount = 0;
@TableField(exist = false)
private String info;
} }

View File

@@ -0,0 +1,35 @@
package com.njcn.gather.event.transientes.pojo.po;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDate;
import java.util.Date;
/**
* CN_Gather
*
* @author cdf
* @date 2025/8/9
*/
@TableName(value="PQS_INTEGRITY")
@Data
public class PqsIntegrity {
@TableField(value="TIMEID")
private LocalDate timeID;
@TableField(value="Line_index")
private Integer lineIndex;
@TableField(value="due")
private Integer due;
@TableField(value="real")
private Integer real;
}

View File

@@ -38,6 +38,7 @@ public class EventDetailVO {
private String pointname; private String pointname;
private String gdName; private String gdName;
private String busName; private String busName;
private String devName;
private String persisttime; private String persisttime;

View File

@@ -3,6 +3,7 @@ package com.njcn.gather.event.transientes.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.event.file.pojo.dto.WaveDataDTO; import com.njcn.event.file.pojo.dto.WaveDataDTO;
import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO; import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO;
import com.njcn.gather.event.devcie.pojo.po.PqGdCompany;
import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam; import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam;
import com.njcn.gather.event.transientes.pojo.param.MonitorTerminalParam; import com.njcn.gather.event.transientes.pojo.param.MonitorTerminalParam;
import com.njcn.gather.event.transientes.pojo.param.PqUserLedgerParam; import com.njcn.gather.event.transientes.pojo.param.PqUserLedgerParam;
@@ -21,8 +22,13 @@ public interface EventRightService {
Page<EventDetailVO> rightEventOpen(LargeScreenCountParam param); Page<EventDetailVO> rightEventOpen(LargeScreenCountParam param);
Page<DeviceDTO> rightEventDevOpen(LargeScreenCountParam param); Page<PqUserLedgerPO> rightEventDevOpen(LargeScreenCountParam param);
List<UserLedgerStatisticVO.Inner> rightImportUser(LargeScreenCountParam param); List<UserLedgerStatisticVO.Inner> rightImportUser(LargeScreenCountParam param);
List<PqGdCompany> gdSelect();
} }

View File

@@ -10,10 +10,14 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njcn.gather.event.devcie.mapper.PqDeviceMapper; import com.njcn.gather.event.devcie.mapper.PqDeviceMapper;
import com.njcn.gather.event.devcie.mapper.PqGdCompanyMapper;
import com.njcn.gather.event.devcie.mapper.PqSubstationMapper;
import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO; import com.njcn.gather.event.devcie.pojo.dto.DeviceDTO;
import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO; import com.njcn.gather.event.devcie.pojo.dto.LedgerBaseInfoDTO;
import com.njcn.gather.event.devcie.pojo.po.PqDevice; import com.njcn.gather.event.devcie.pojo.po.PqDevice;
import com.njcn.gather.event.devcie.pojo.po.PqGdCompany;
import com.njcn.gather.event.devcie.pojo.po.PqLine; import com.njcn.gather.event.devcie.pojo.po.PqLine;
import com.njcn.gather.event.devcie.pojo.po.PqSubstation;
import com.njcn.gather.event.devcie.service.PqLineService; import com.njcn.gather.event.devcie.service.PqLineService;
import com.njcn.gather.event.transientes.mapper.PqUserLedgerMapper; import com.njcn.gather.event.transientes.mapper.PqUserLedgerMapper;
import com.njcn.gather.event.transientes.mapper.PqUserLineAssMapper; import com.njcn.gather.event.transientes.mapper.PqUserLineAssMapper;
@@ -27,6 +31,7 @@ import com.njcn.gather.event.transientes.pojo.vo.UserLedgerStatisticVO;
import com.njcn.gather.event.transientes.service.*; import com.njcn.gather.event.transientes.service.*;
import com.njcn.redis.utils.RedisUtil; import com.njcn.redis.utils.RedisUtil;
import com.njcn.web.factory.PageFactory; import com.njcn.web.factory.PageFactory;
import io.swagger.models.auth.In;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -62,14 +67,11 @@ public class EventRightServiceImpl implements EventRightService {
private final MsgEventConfigService msgEventConfigService; private final MsgEventConfigService msgEventConfigService;
private final PqLineService pqLineService; private final PqLineService pqLineService;
private final PqSubstationMapper pqSubstationMapper;
private final CommGeneralService commGeneralService; private final CommGeneralService commGeneralService;
private final RedisUtil redisUtil; private final PqGdCompanyMapper pqGdCompanyMapper;
private final PqsOnlinerateService pqsOnlinerateService;
private final static String NAME_KEY = "LineCache:";
private final PqDeviceMapper pqDeviceMapper;
@@ -113,7 +115,7 @@ public class EventRightServiceImpl implements EventRightService {
.collect(Collectors.groupingBy(PqUserLedgerPO::getBigObjType)); .collect(Collectors.groupingBy(PqUserLedgerPO::getBigObjType));
// 7. 构建结果 // 7. 构建结果
buildResult(result, treeMap, userMap, assList, events, lines); buildResult(result, treeMap, userMap, assList, events, lines,dicTreeList);
return result; return result;
} }
@@ -199,6 +201,9 @@ public class EventRightServiceImpl implements EventRightService {
//对象大类不为空 //对象大类不为空
userWrapper.eq(PqUserLedgerPO::getSmallObjType,param.getSmallObjType()); userWrapper.eq(PqUserLedgerPO::getSmallObjType,param.getSmallObjType());
} }
if(Objects.nonNull(param.getGdIndex())){
userWrapper.eq(PqUserLedgerPO::getPowerSupplyArea,param.getGdIndex());
}
} }
return pqUserLedgerMapper.selectList(userWrapper); return pqUserLedgerMapper.selectList(userWrapper);
} }
@@ -219,8 +224,10 @@ public class EventRightServiceImpl implements EventRightService {
} }
private void buildResult(UserLedgerStatisticVO result,Map<String, PqsDicTreePO> treeMap,Map<String, List<PqUserLedgerPO>> userMap,List<PqUserLineAssPO> assList,List<PqsEventdetail> eventdetailList, List<PqLine> lineList){ private void buildResult(UserLedgerStatisticVO result,Map<String, PqsDicTreePO> treeMap,Map<String, List<PqUserLedgerPO>> userMap,List<PqUserLineAssPO> assList,List<PqsEventdetail> eventdetailList, List<PqLine> lineList,List<PqsDicTreePO> dicTreePOList){
List<UserLedgerStatisticVO.Inner> innerList = new ArrayList<>(); List<UserLedgerStatisticVO.Inner> innerList = new ArrayList<>();
Map<String,PqsDicTreePO> allTreeMap = dicTreePOList.stream().collect(Collectors.toMap(PqsDicTreePO::getId,dept->dept));
treeMap.forEach((tree, obj) -> { treeMap.forEach((tree, obj) -> {
//获取对象大类的用户 //获取对象大类的用户
List<PqUserLedgerPO> oneList = userMap.get(obj.getId()); List<PqUserLedgerPO> oneList = userMap.get(obj.getId());
@@ -253,7 +260,7 @@ public class EventRightServiceImpl implements EventRightService {
item.setCount(count[0]); item.setCount(count[0]);
item.setTreeId(key); item.setTreeId(key);
item.setParentId(obj.getId()); item.setParentId(obj.getId());
item.setName(treeMap.containsKey(key) ? treeMap.get(key).getName() : "/"); item.setName(allTreeMap.containsKey(key) ? allTreeMap.get(key).getName() : "/");
childrenList.add(item); childrenList.add(item);
}); });
inner.setChildren(childrenList); inner.setChildren(childrenList);
@@ -316,6 +323,9 @@ public class EventRightServiceImpl implements EventRightService {
} }
//获取用户监测点关系符合部门监测点的 //获取用户监测点关系符合部门监测点的
List<PqUserLineAssPO> assList = getUserLineAssociations(deptLineIds); List<PqUserLineAssPO> assList = getUserLineAssociations(deptLineIds);
if(CollUtil.isEmpty(assList)){
return result;
}
List<String> userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList()); List<String> userIds = assList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList());
if(CollUtil.isEmpty(userIds)){ if(CollUtil.isEmpty(userIds)){
return result; return result;
@@ -362,7 +372,7 @@ public class EventRightServiceImpl implements EventRightService {
EventDetailVO eventDetailVO = new EventDetailVO(); EventDetailVO eventDetailVO = new EventDetailVO();
BeanUtil.copyProperties(pqsEventdetail,eventDetailVO); BeanUtil.copyProperties(pqsEventdetail,eventDetailVO);
List<String> userTemIds = temMap.get(pqsEventdetail.getLineid()); List<String> userTemIds = temMap.get(pqsEventdetail.getLineid());
String objName = userTemIds.stream().map(it->pqMap.get(it).getProjectName()).collect(Collectors.joining("; ")); String objName = userTemIds.stream().map(it->pqMap.get(it).getCustomerName()).collect(Collectors.joining("; "));
eventDetailVO.setObjName(objName); eventDetailVO.setObjName(objName);
LedgerBaseInfoDTO dto = lineMap.get(pqsEventdetail.getLineid()); LedgerBaseInfoDTO dto = lineMap.get(pqsEventdetail.getLineid());
eventDetailVO.setBdname(dto.getStationName()); eventDetailVO.setBdname(dto.getStationName());
@@ -371,6 +381,8 @@ public class EventRightServiceImpl implements EventRightService {
eventDetailVO.setLineid(dto.getLineId()); eventDetailVO.setLineid(dto.getLineId());
eventDetailVO.setPointname(dto.getLineName()); eventDetailVO.setPointname(dto.getLineName());
eventDetailVO.setEventdetail_index(pqsEventdetail.getEventdetailIndex()); eventDetailVO.setEventdetail_index(pqsEventdetail.getEventdetailIndex());
eventDetailVO.setDevName(dto.getDevName());
resultList.add(eventDetailVO); resultList.add(eventDetailVO);
} }
result.setTotal(page.getTotal()); result.setTotal(page.getTotal());
@@ -379,19 +391,18 @@ public class EventRightServiceImpl implements EventRightService {
} }
@Override @Override
public Page<DeviceDTO> rightEventDevOpen(LargeScreenCountParam param) { public Page<PqUserLedgerPO> rightEventDevOpen(LargeScreenCountParam param) {
DateTime startTime = DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN))); Page<PqUserLedgerPO> result = new Page<>(PageFactory.getPageNum(param),PageFactory.getPageSize(param));
DateTime endTime = DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime(), DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
Page<DeviceDTO> result = new Page<>(PageFactory.getPageNum(param),PageFactory.getPageSize(param));
List<Integer> lineIds = commGeneralService.getLineIdsByRedis(param.getDeptId()); List<Integer> lineIds = commGeneralService.getLineIdsByRedis(param.getDeptId());
if(CollUtil.isEmpty(lineIds)){
return result;
}
List<PqUserLineAssPO> assPOList =getUserLineAssociations(lineIds); List<PqUserLineAssPO> assPOList =getUserLineAssociations(lineIds);
if(CollUtil.isEmpty(assPOList)){ if(CollUtil.isEmpty(assPOList)){
return result; return result;
} }
List<String> userIds = assPOList.stream().map(PqUserLineAssPO::getUserIndex).collect(Collectors.toList()); List<String> userIds = assPOList.stream().map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList());
LambdaQueryWrapper<PqUserLedgerPO> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PqUserLedgerPO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
if(userIds.size() > 1000){ if(userIds.size() > 1000){
@@ -414,38 +425,57 @@ public class EventRightServiceImpl implements EventRightService {
lambdaQueryWrapper.eq(PqUserLedgerPO::getSmallObjType,param.getSmallObjType()); lambdaQueryWrapper.eq(PqUserLedgerPO::getSmallObjType,param.getSmallObjType());
} }
if(StrUtil.isNotBlank(param.getBigObjType()) || StrUtil.isNotBlank(param.getSmallObjType())){ if(Objects.nonNull(param.getGdIndex())){
List<PqUserLedgerPO> pqUserLedgerPOList = pqUserLedgerMapper.selectList(lambdaQueryWrapper); lambdaQueryWrapper.eq(PqUserLedgerPO::getPowerSupplyArea,param.getGdIndex());
List<String> lastIds = pqUserLedgerPOList.stream().map(PqUserLedgerPO::getId).collect(Collectors.toList());
List<Integer> ids = assPOList.stream().filter(it->lastIds.contains(it.getUserIndex())).map(PqUserLineAssPO::getLineIndex).collect(Collectors.toList());
if(CollUtil.isEmpty(ids)){
return result;
}
result = pqDeviceMapper.queryListByLineIds(new Page<DeviceDTO>(PageFactory.getPageNum(param),PageFactory.getPageSize(param)),param.getSearchValue(),ids);
}else {
//查询条件都为空直接拿取所有测点匹配装置
List<Integer> lineAssIds = assPOList.stream().map(PqUserLineAssPO::getLineIndex).distinct().collect(Collectors.toList());
result = pqDeviceMapper.queryListByLineIds(new Page<DeviceDTO>(PageFactory.getPageNum(param),PageFactory.getPageSize(param)),param.getSearchValue(),lineAssIds);
} }
List<Integer> devList = result.getRecords().stream().map(DeviceDTO::getDevId).collect(Collectors.toList());
List<PqsOnlinerate> list = pqsOnlinerateService.lambdaQuery().in(PqsOnlinerate::getDevIndex,devList).between(PqsOnlinerate::getTimeid, startTime, endTime).list(); List<PqUserLedgerPO> userList = pqUserLedgerMapper.selectList(lambdaQueryWrapper);
if(!CollectionUtils.isEmpty(list)){ if(CollUtil.isEmpty(userList)){
for (DeviceDTO record : result.getRecords()) { return result;
List<PqsOnlinerate> tempList = list.stream().filter(temp -> Objects.equals(temp.getDevIndex(), record.getDevId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(tempList)){
double asDouble = tempList.stream().mapToDouble(temp -> {
return Double.valueOf(temp.getOnlinemin()*100) / (temp.getOfflinemin() + temp.getOnlinemin());
}).average().getAsDouble();
record.setOnLineRate(new BigDecimal(asDouble).setScale(2, RoundingMode.UP).doubleValue());
}
}
} }
return result; List<String> userTemIds = userList.stream().map(PqUserLedgerPO::getId).collect(Collectors.toList());
List<PqUserLineAssPO> aassList = assPOList.stream().filter(it->userTemIds.contains(it.getUserIndex())).collect(Collectors.toList());
List<Integer> ids = aassList.stream().map(PqUserLineAssPO::getLineIndex).distinct().collect(Collectors.toList());
List<PqsEventdetail> eventdetailList = getEventsInTimeRange(param,ids);
if(CollUtil.isEmpty(eventdetailList)){
return result;
}
List<Integer> temLineIds = eventdetailList.stream().map(PqsEventdetail::getLineid).distinct().collect(Collectors.toList());
List<String> lastUserList = aassList.stream().filter(it->temLineIds.contains(it.getLineIndex())).map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList());
Page<PqUserLedgerPO> page = pqUserLedgerMapper.selectPage(new Page<>(PageFactory.getPageNum(param),PageFactory.getPageSize(param)),new LambdaQueryWrapper<PqUserLedgerPO>().in(PqUserLedgerPO::getId,lastUserList));
if(CollUtil.isEmpty(page.getRecords())){
return page;
}
List<String> lastIds = page.getRecords().stream().map(PqUserLedgerPO::getId).collect(Collectors.toList());
List<PqUserLineAssPO> lastAssList = aassList.stream().filter(it->lastIds.contains(it.getUserIndex())).collect(Collectors.toList());
List<Integer> monitorIds = lastAssList.stream().map(PqUserLineAssPO::getLineIndex).distinct().collect(Collectors.toList());
List<PqLine> pqLineList = pqLineService.list(new LambdaQueryWrapper<PqLine>().in(PqLine::getLineIndex,monitorIds));
List<PqSubstation> pqSubstationList = pqSubstationMapper.selectList(new LambdaQueryWrapper<PqSubstation>().in(PqSubstation::getSubIndex,pqLineList.stream().map(PqLine::getSubIndex).collect(Collectors.toList())));
Map<Integer,PqSubstation> subMap = pqSubstationList.stream().collect(Collectors.toMap(PqSubstation::getSubIndex,sub->sub));
pqLineList.forEach(it->it.setSubName(subMap.get(it.getSubIndex()).getName()));
Map<String,List<Integer>> objMap = lastAssList.stream().collect(Collectors.groupingBy(PqUserLineAssPO::getUserIndex,Collectors.mapping(PqUserLineAssPO::getLineIndex,Collectors.toList())));
Map<String,List<PqLine>> lastMap = new HashMap<>();
objMap.forEach((k,vList)->{
lastMap.put(k,pqLineList.stream().filter(it->vList.contains(it.getLineIndex())).collect(Collectors.toList()));
});
page.getRecords().forEach(item-> {
if(objMap.containsKey(item.getId())){
long count = eventdetailList.stream().filter(it->objMap.get(item.getId()).contains(it.getLineid())).count();
item.setEventCount((int)count);;
}
if(lastMap.containsKey(item.getId())){
List<PqLine> abList = lastMap.get(item.getId());
item.setSubstationName(abList.stream().map(PqLine::getSubName).distinct().collect(Collectors.joining(StrUtil.COMMA)));
item.setInfo(abList.stream().map(items->items.getSubName()+"_"+items.getSubvName()).distinct().collect(Collectors.joining("; ")));
}
});
return page;
} }
@@ -490,12 +520,12 @@ public class EventRightServiceImpl implements EventRightService {
List<PqsEventdetail> eventList = pqsEventdetailService.lambdaQuery(). List<PqsEventdetail> eventList = pqsEventdetailService.lambdaQuery().
in(PqsEventdetail::getLineid,lineIds) in(PqsEventdetail::getLineid,lineIds)
.in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType()) .in(PqsEventdetail::getWavetype,msgEventConfigService.getEventType())
.between(PqsEventdetail::getTimeid,DateUtil.parse(param.getSearchBeginTime()),DateUtil.parse(param.getSearchEndTime())).list(); .between(PqsEventdetail::getTimeid,DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())),DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime()))).list();
if(CollUtil.isEmpty(eventList)){ if(CollUtil.isEmpty(eventList)){
poList.forEach(item->{ poList.forEach(item->{
UserLedgerStatisticVO.Inner inner = new UserLedgerStatisticVO.Inner(); UserLedgerStatisticVO.Inner inner = new UserLedgerStatisticVO.Inner();
inner.setCustomId(item.getId()); inner.setCustomId(item.getId());
inner.setName(item.getProjectName()); inner.setName(item.getCustomerName());
inner.setCount(0); inner.setCount(0);
result.add(inner); result.add(inner);
}); });
@@ -506,7 +536,7 @@ public class EventRightServiceImpl implements EventRightService {
poList.forEach(item->{ poList.forEach(item->{
UserLedgerStatisticVO.Inner inner = new UserLedgerStatisticVO.Inner(); UserLedgerStatisticVO.Inner inner = new UserLedgerStatisticVO.Inner();
inner.setCustomId(item.getId()); inner.setCustomId(item.getId());
inner.setName(item.getProjectName()); inner.setName(item.getCustomerName());
List<Integer> LIds = assMap.get(item.getId()); List<Integer> LIds = assMap.get(item.getId());
List<String> eventIds = eventList.stream().filter(it -> LIds.contains(it.getLineid())).map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList()); List<String> eventIds = eventList.stream().filter(it -> LIds.contains(it.getLineid())).map(PqsEventdetail::getEventdetailIndex).collect(Collectors.toList());
inner.setEventList(eventIds); inner.setEventList(eventIds);
@@ -516,6 +546,11 @@ public class EventRightServiceImpl implements EventRightService {
return result; return result;
} }
@Override
public List<PqGdCompany> gdSelect() {
return pqGdCompanyMapper.selectList(null);
}
private Integer[] getEventCount(List<PqUserLedgerPO> oneList, List<PqUserLineAssPO> assList, List<PqsEventdetail> pqsEventdetailList, List<PqLine> lineList,boolean devFlag) { private Integer[] getEventCount(List<PqUserLedgerPO> oneList, List<PqUserLineAssPO> assList, List<PqsEventdetail> pqsEventdetailList, List<PqLine> lineList,boolean devFlag) {
Integer[] count = new Integer[]{0, 0}; Integer[] count = new Integer[]{0, 0};
//用户的id //用户的id
@@ -524,31 +559,18 @@ public class EventRightServiceImpl implements EventRightService {
//获取用户关联监测点 //获取用户关联监测点
List<Integer> lineTemIds = assList.stream().filter(it -> userIds.contains(it.getUserIndex())).map(PqUserLineAssPO::getLineIndex).distinct().collect(Collectors.toList()); List<Integer> lineTemIds = assList.stream().filter(it -> userIds.contains(it.getUserIndex())).map(PqUserLineAssPO::getLineIndex).distinct().collect(Collectors.toList());
//用户的暂降事件次数 //用户的暂降事件次数
long eventCount = pqsEventdetailList.stream().filter(it -> lineTemIds.contains(it.getLineid())).count(); List<PqsEventdetail> eventdetailList = pqsEventdetailList.stream().filter(it -> lineTemIds.contains(it.getLineid())).collect(Collectors.toList());
count[0] = (int) eventCount; count[0] = eventdetailList.size();
if(devFlag) { if(devFlag) {
long devCount = lineList.stream().filter(it -> lineTemIds.contains(it.getLineIndex())).map(PqLine::getDevIndex).distinct().count(); List<Integer> lastLineIds = eventdetailList.stream().map(PqsEventdetail::getLineid).distinct().collect(Collectors.toList());
List<String> userLastIds = assList.stream().filter(it->lastLineIds.contains(it.getLineIndex())).map(PqUserLineAssPO::getUserIndex).distinct().collect(Collectors.toList());
long devCount = oneList.stream().filter(it->userLastIds.contains(it.getId())).count();
count[1] = (int) devCount; count[1] = (int) devCount;
} }
} }
return count; return count;
} }
private <T, ID> List<T> batchQuery(List<ID> ids, Function<List<ID>, List<T>> queryFunc, int batchSize) {
if (CollectionUtils.isEmpty(ids)) {
return Collections.emptyList();
}
if (ids.size() <= batchSize) {
return queryFunc.apply(ids);
}
List<T> result = new ArrayList<>();
List<List<ID>> batches = CollUtil.split(ids, batchSize);
for (List<ID> batch : batches) {
result.addAll(queryFunc.apply(batch));
}
return result;
}
} }

View File

@@ -24,6 +24,8 @@ import com.njcn.gather.event.devcie.pojo.dto.SubstationDTO;
import com.njcn.gather.event.devcie.pojo.po.PqLinedetail; import com.njcn.gather.event.devcie.pojo.po.PqLinedetail;
import com.njcn.gather.event.transientes.mapper.PqUserLedgerMapper; import com.njcn.gather.event.transientes.mapper.PqUserLedgerMapper;
import com.njcn.gather.event.transientes.mapper.PqUserLineAssMapper; import com.njcn.gather.event.transientes.mapper.PqUserLineAssMapper;
import com.njcn.gather.event.transientes.mapper.PqsIntegrityMapper;
import com.njcn.gather.event.transientes.mapper.PqsOnlinerateMapper;
import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam; import com.njcn.gather.event.transientes.pojo.param.LargeScreenCountParam;
import com.njcn.gather.event.devcie.pojo.po.PqDevice; import com.njcn.gather.event.devcie.pojo.po.PqDevice;
import com.njcn.gather.event.devcie.pojo.po.PqLine; import com.njcn.gather.event.devcie.pojo.po.PqLine;
@@ -91,6 +93,8 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
private final RedisUtil redisUtil; private final RedisUtil redisUtil;
private final PqsOnlinerateService pqsOnlinerateService; private final PqsOnlinerateService pqsOnlinerateService;
private final PqsIntegrityMapper pqsIntegrityMapper;
private final PqUserLedgerMapper pqUserLedgerMapper; private final PqUserLedgerMapper pqUserLedgerMapper;
private final PqUserLineAssMapper pqUserLineAssMapper; private final PqUserLineAssMapper pqUserLineAssMapper;
@@ -538,7 +542,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
} }
if(assMap.containsKey(eventDetailVO.getLineid())) { if(assMap.containsKey(eventDetailVO.getLineid())) {
List<String> temList = assMap.get(eventDetailVO.getLineid()).stream().map(PqUserLineAssPO::getUserIndex).collect(Collectors.toList()); List<String> temList = assMap.get(eventDetailVO.getLineid()).stream().map(PqUserLineAssPO::getUserIndex).collect(Collectors.toList());
String str = temList.stream().map(its -> userMap.containsKey(its)?userMap.get(its).getProjectName() + "; ":"/").collect(Collectors.joining()); String str = temList.stream().map(its -> userMap.containsKey(its)?userMap.get(its).getCustomerName() + "; ":"/").collect(Collectors.joining());
eventDetailVO.setObjName(str); eventDetailVO.setObjName(str);
} }
result.add(eventDetailVO); result.add(eventDetailVO);
@@ -1109,16 +1113,38 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
List<Integer> deptslineIds = (List<Integer>) redisUtil.getObjectByKey( NAME_KEY+ StrUtil.DASHED+largeScreenCountParam.getDeptId()); List<Integer> deptslineIds = (List<Integer>) redisUtil.getObjectByKey( NAME_KEY+ StrUtil.DASHED+largeScreenCountParam.getDeptId());
pqLineList = pqLineList.stream().filter(temp->deptslineIds.contains(temp.getLineIndex())).collect(Collectors.toList()); if(Objects.isNull(largeScreenCountParam.getGdIndex())){
pqLineList = pqLineList.stream().filter(temp->deptslineIds.contains(temp.getLineIndex())).collect(Collectors.toList());
}else {
pqLineList = pqLineList.stream().filter(temp->deptslineIds.contains(temp.getLineIndex()) && Objects.equals(temp.getGdIndex(),largeScreenCountParam.getGdIndex())).collect(Collectors.toList());
}
if(CollUtil.isEmpty(pqLineList)){
return new Page<>();
}
List<Integer> devIndexs = pqLineList.stream().map(PqLine::getDevIndex).distinct().collect(Collectors.toList()); List<Integer> devIndexs = pqLineList.stream().map(PqLine::getDevIndex).distinct().collect(Collectors.toList());
//在运总数 //在运总数
List<PqDevice> pqDeviceList = pqDeviceService.lambdaQuery().in(PqDevice::getDevIndex, devIndexs).eq(PqDevice::getDevflag, 0).list(); List<PqDevice> pqDeviceList = pqDeviceService.lambdaQuery().in(PqDevice::getDevIndex, devIndexs).eq(PqDevice::getDevflag, 0).list();
List<Integer> runDevList = pqDeviceList.stream().map(PqDevice::getDevIndex).collect(Collectors.toList()); List<Integer> runDevList = pqDeviceList.stream().map(PqDevice::getDevIndex).collect(Collectors.toList());
List<PqsOnlinerate> list = pqsOnlinerateService.lambdaQuery().in(PqsOnlinerate::getDevIndex,runDevList).between(PqsOnlinerate::getTimeid, startTime, endTime).list();
pqsEventdetailPage = pqDeviceService.selectDeviceDTOPage(pqsEventdetailPage,largeScreenCountParam.getSearchValue(),runDevList,largeScreenCountParam.getState()); pqsEventdetailPage = pqDeviceService.selectDeviceDTOPage(pqsEventdetailPage,largeScreenCountParam.getSearchValue(),runDevList,largeScreenCountParam.getState());
if(!CollectionUtils.isEmpty(list)){ List<DeviceDTO> deviceDTOList = pqsEventdetailPage.getRecords();
if(!CollectionUtils.isEmpty(deviceDTOList)){
List<Integer> devIds = deviceDTOList.stream().map(DeviceDTO::getDevId).collect(Collectors.toList());
List<PqsOnlinerate> list = pqsOnlinerateService.lambdaQuery().in(PqsOnlinerate::getDevIndex,devIds).between(PqsOnlinerate::getTimeid, startTime, endTime).list();
List<PqLine> inteList = pqLineList.stream().filter(it->devIds.contains(it.getDevIndex())).collect(Collectors.toList());
Map<Integer,List<Integer>> lineMap = inteList.stream().collect(Collectors.groupingBy(PqLine::getDevIndex,Collectors.mapping(PqLine::getLineIndex,Collectors.toList())));
List<Integer> inteIds = inteList.stream().map(PqLine::getLineIndex).collect(Collectors.toList());
Map<Integer,Double> inteDevMap = new HashMap<>();
List<PqsIntegrity> pqsIntegrityList = pqsIntegrityMapper.selectList(new LambdaQueryWrapper<PqsIntegrity>().in(PqsIntegrity::getLineIndex,inteIds));
lineMap.forEach((dev,lineList)->{
double rate = pqsIntegrityList.stream().filter(it->lineList.contains(it.getLineIndex())).mapToDouble(it->it.getReal()*1.0/(it.getDue()+it.getReal())).average().orElse(0.0);
inteDevMap.put(dev,rate);
});
for (DeviceDTO record : pqsEventdetailPage.getRecords()) { for (DeviceDTO record : pqsEventdetailPage.getRecords()) {
List<PqsOnlinerate> tempList = list.stream().filter(temp -> Objects.equals(temp.getDevIndex(), record.getDevId())).collect(Collectors.toList()); List<PqsOnlinerate> tempList = list.stream().filter(temp -> Objects.equals(temp.getDevIndex(), record.getDevId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(tempList)){ if(!CollectionUtils.isEmpty(tempList)){
@@ -1126,7 +1152,7 @@ public class LargeScreenCountServiceImpl implements LargeScreenCountService {
return Double.valueOf(temp.getOnlinemin()*100) / (temp.getOfflinemin() + temp.getOnlinemin()); return Double.valueOf(temp.getOnlinemin()*100) / (temp.getOfflinemin() + temp.getOnlinemin());
}).average().getAsDouble(); }).average().getAsDouble();
record.setOnLineRate(new BigDecimal(asDouble).setScale(2, RoundingMode.UP).doubleValue()); record.setOnLineRate(new BigDecimal(asDouble).setScale(2, RoundingMode.UP).doubleValue());
record.setIntegrityRate(inteDevMap.containsKey(record.getDevId())? new BigDecimal(inteDevMap.get(record.getDevId())*100).setScale(2,RoundingMode.UP).doubleValue():0);
} }
} }

View File

@@ -0,0 +1,53 @@
spring:
application:
name: event_smart
datasource:
dynamic:
primary: master
strict: false # 是否严格匹配数据源默认false
druid: # 如果使用Druid连接池
validation-query: SELECT 1 FROM DUAL # 达梦专用校验SQL
initial-size: 10
# 初始化大小,最小,最大
min-idle: 20
maxActive: 500
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: true
testOnReturn: false
# 打开PSCache并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
datasource:
master:
url: jdbc:oracle:thin:@192.168.1.51:1521:pqsbase
username: pqsadmin_bj
password: pqsadmin
driver-class-name: oracle.jdbc.OracleDriver
# salve:
# driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:dm://192.168.1.21:5236/PQSADMIN?useUnicode=true&characterEncoding=utf-8
# username: PQSADMINLN
# password: Pqsadmin123
redis:
database: 10
host: localhost
port: 6379
timeout: 5000
lettuce:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0

View File

@@ -0,0 +1,55 @@
server:
port: 18093
spring:
application:
name: event_smart
datasource:
dynamic:
primary: master
strict: false # 是否严格匹配数据源默认false
druid: # 如果使用Druid连接池
validation-query: SELECT 1 FROM DUAL # 达梦专用校验SQL
initial-size: 10
# 初始化大小,最小,最大
min-idle: 20
maxActive: 500
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: true
testOnReturn: false
# 打开PSCache并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
datasource:
master:
url: jdbc:oracle:thin:@192.168.10.34:11521:pqsbase
username: pqsadmin
password: Pqsadmin_123
driver-class-name: oracle.jdbc.OracleDriver
# salve:
# driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:dm://192.168.1.21:5236/PQSADMIN?useUnicode=true&characterEncoding=utf-8
# username: PQSADMINLN
# password: Pqsadmin123
redis:
database: 10
host: localhost
port: 16379
password: "Pqsadmin@#1qaz"
timeout: 5000
lettuce:
pool:
max-active: 20
max-wait: 5000
max-idle: 8
min-idle: 0

View File

@@ -7,56 +7,8 @@ server:
spring: spring:
application: application:
name: event_smart name: event_smart
datasource: profiles:
dynamic: active: dev
primary: master
strict: false # 是否严格匹配数据源默认false
druid: # 如果使用Druid连接池
validation-query: SELECT 1 FROM DUAL # 达梦专用校验SQL
initial-size: 10
# 初始化大小,最小,最大
min-idle: 20
maxActive: 500
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: true
testOnReturn: false
# 打开PSCache并且指定每个连接上PSCache的大小
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
datasource:
master:
url: jdbc:oracle:thin:@192.168.1.51:1521:pqsbase
username: pqsadmin_bj
password: pqsadmin
#url: jdbc:oracle:thin:@192.168.10.34:11521:pqsbase
#username: pqsadmin
#password: Pqsadmin_123
driver-class-name: oracle.jdbc.OracleDriver
# salve:
# driver-class-name: dm.jdbc.driver.DmDriver
# url: jdbc:dm://192.168.1.21:5236/PQSADMIN?useUnicode=true&characterEncoding=utf-8
# username: PQSADMINLN
# password: Pqsadmin123
redis:
database: 10
host: localhost
port: 6379
timeout: 5000
lettuce:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
#mybatis配置信息 #mybatis配置信息