diff --git a/comService/src/main/java/com/njcn/mapper/data/AssesMapper.java b/comService/src/main/java/com/njcn/mapper/data/AssesMapper.java index 6256332..bce968c 100644 --- a/comService/src/main/java/com/njcn/mapper/data/AssesMapper.java +++ b/comService/src/main/java/com/njcn/mapper/data/AssesMapper.java @@ -3,6 +3,7 @@ package com.njcn.mapper.data; import java.util.Date; import java.util.List; +import com.njcn.pojo.data.AssesData; import org.apache.ibatis.annotations.Param; import com.njcn.pojo.data.Asses; @@ -22,4 +23,5 @@ public interface AssesMapper extends Mapper { //获取对应范围内综合质量 List getSynData(@Param("list")List temp,@Param("startTime")Date startTime,@Param("endTime")Date endTime); + List getLineVol( @Param("list") List lineIds,@Param("startTime") Date startTime, @Param("endTime") Date endTime); } diff --git a/comService/src/main/java/com/njcn/mapper/point/PointBaseInfoMapper.java b/comService/src/main/java/com/njcn/mapper/point/PointBaseInfoMapper.java index 3ca8c89..3143c86 100644 --- a/comService/src/main/java/com/njcn/mapper/point/PointBaseInfoMapper.java +++ b/comService/src/main/java/com/njcn/mapper/point/PointBaseInfoMapper.java @@ -26,7 +26,7 @@ public interface PointBaseInfoMapper { List getDeptsLineIndex(@Param("deptsIndex")String deptsIndex,@Param("sysIndex")String sysIndex); - List getLineLedger(@Param("lineList")List lineList,@Param("loadTypeList")List loadTypeList,@Param("scaleList")List scaleList,@Param("status")Integer status,@Param("type")Integer type); + List getLineLedger(@Param("lineList")List lineList,@Param("loadTypeList")List loadTypeList,@Param("scaleList")List scaleList,@Param("status")Integer status,@Param("type")Integer type,@Param("powerId")Integer powerId); DeviceUnitVO lineUnitDetail(@Param("lineId")Integer lineId); diff --git a/comService/src/main/java/com/njcn/mapper/user/DeptsLineMapper.java b/comService/src/main/java/com/njcn/mapper/user/DeptsLineMapper.java index b55712b..8d061fb 100644 --- a/comService/src/main/java/com/njcn/mapper/user/DeptsLineMapper.java +++ b/comService/src/main/java/com/njcn/mapper/user/DeptsLineMapper.java @@ -36,6 +36,16 @@ public interface DeptsLineMapper extends Mapper { List selectIndexsByDeptRun(@Param("deptsIndex") String deptsIndex, @Param("sysType") String sysType, @Param("devModel") Integer devModel, @Param("dataType") List dataType,@Param("devStatus") Integer devicdStatus,@Param("status")Integer status); + List selectIndexsPowerIdByDeptRun(@Param("depts") List depts, + @Param("sysType") String sysType, + @Param("devModel") Integer devModel, + @Param("dataType") List dataType, + @Param("devStatus") Integer devicdStatus, + @Param("status")Integer status, + @Param("powerId") Integer powerId + ); + + //扩展上面两个sql(多关联了一个pq_linedetail表) List selectIndexsByDeptsRunForStatFlag(@Param("depts") List depts, @Param("sysType") String sysType, @Param("devModel") Integer devModel, @Param("dataType") List dataType, @Param("devStatus") Integer devicdStatus,@Param("status")Integer status); diff --git a/comService/src/main/java/com/njcn/pojo/data/AssesData.java b/comService/src/main/java/com/njcn/pojo/data/AssesData.java new file mode 100644 index 0000000..b4c6986 --- /dev/null +++ b/comService/src/main/java/com/njcn/pojo/data/AssesData.java @@ -0,0 +1,111 @@ +package com.njcn.pojo.data; + +import java.io.Serializable; + +/** + * @author wr + * @description + * @date 2024/4/9 16:32 + */ +public class AssesData implements Serializable { + //供电公司 + private String powerCompany; + //变电站 + private String substation; + //监测点id + private String lineId; + //监测点名称 + private String lineName; + //综合评估 + private Float synData; + //电压偏差 + private Float vuDevs; + //频率偏差 + private Float freqDev; + //电压闪变 + private Float dataPlt; + //电压不平衡度 + private Float vunbalanceCp95; + //谐波含量 + private Float vThdCp95; + + public String getPowerCompany() { + return powerCompany; + } + + public void setPowerCompany(String powerCompany) { + this.powerCompany = powerCompany; + } + + public String getSubstation() { + return substation; + } + + public void setSubstation(String substation) { + this.substation = substation; + } + + public String getLineName() { + return lineName; + } + + public void setLineName(String lineName) { + this.lineName = lineName; + } + + public Float getSynData() { + return synData; + } + + public void setSynData(Float synData) { + this.synData = synData; + } + + public Float getVuDevs() { + return vuDevs; + } + + public void setVuDevs(Float vuDevs) { + this.vuDevs = vuDevs; + } + + public Float getFreqDev() { + return freqDev; + } + + public void setFreqDev(Float freqDev) { + this.freqDev = freqDev; + } + + public Float getDataPlt() { + return dataPlt; + } + + public void setDataPlt(Float dataPlt) { + this.dataPlt = dataPlt; + } + + public Float getVunbalanceCp95() { + return vunbalanceCp95; + } + + public void setVunbalanceCp95(Float vunbalanceCp95) { + this.vunbalanceCp95 = vunbalanceCp95; + } + + public Float getvThdCp95() { + return vThdCp95; + } + + public void setvThdCp95(Float vThdCp95) { + this.vThdCp95 = vThdCp95; + } + + public String getLineId() { + return lineId; + } + + public void setLineId(String lineId) { + this.lineId = lineId; + } +} diff --git a/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedger.java b/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedger.java index b98d28a..cb87335 100644 --- a/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedger.java +++ b/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedger.java @@ -11,6 +11,8 @@ public class LineLedger { private String lineIndex; private String lineName; + //母线名称 + private String busBarName; private String electricityQualityName; private Long devIndex; @@ -655,4 +657,12 @@ public class LineLedger { public void setElectricityQualityName(String electricityQualityName) { this.electricityQualityName = electricityQualityName; } + + public String getBusBarName() { + return busBarName; + } + + public void setBusBarName(String busBarName) { + this.busBarName = busBarName; + } } \ No newline at end of file diff --git a/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedgerVO.java b/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedgerVO.java index a150feb..52dc163 100644 --- a/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedgerVO.java +++ b/comService/src/main/java/com/njcn/pojo/pointInfo/LineLedgerVO.java @@ -18,6 +18,8 @@ public class LineLedgerVO { private Integer status; //上报类型(国网、非国网) private Integer appear; + //监测点性质 + private Integer powerId; public String getDeptIndex() { return deptIndex; @@ -74,4 +76,12 @@ public class LineLedgerVO { public void setAppear(Integer appear) { this.appear = appear; } + + public Integer getPowerId() { + return powerId; + } + + public void setPowerId(Integer powerId) { + this.powerId = powerId; + } } \ No newline at end of file diff --git a/comService/src/main/java/com/njcn/service/configuration/DeviceService.java b/comService/src/main/java/com/njcn/service/configuration/DeviceService.java index a7fb205..0465e5e 100644 --- a/comService/src/main/java/com/njcn/service/configuration/DeviceService.java +++ b/comService/src/main/java/com/njcn/service/configuration/DeviceService.java @@ -82,7 +82,7 @@ public interface DeviceService { List getOnlineRate(Date startTime, Date endTime, String area); //运行管理--》监测点数据完整性 - IntergralityData getDataIntegralityTable(Date startTime, Date endTime, String area,Integer devflag); + IntergralityData getDataIntegralityTable(Date startTime, Date endTime, String area,Integer devflag,Integer powerId); String getDeviceOnline(Date startTime, Date endTime, Long lineIndex); diff --git a/comService/src/main/java/com/njcn/serviceimpl/configuration/DeviceServiceImpl.java b/comService/src/main/java/com/njcn/serviceimpl/configuration/DeviceServiceImpl.java index 7fd79d3..0f3b2a8 100644 --- a/comService/src/main/java/com/njcn/serviceimpl/configuration/DeviceServiceImpl.java +++ b/comService/src/main/java/com/njcn/serviceimpl/configuration/DeviceServiceImpl.java @@ -312,10 +312,10 @@ public class DeviceServiceImpl implements DeviceService { * @param area 区域 */ @Override - public IntergralityData getDataIntegralityTable(Date startTime, Date endTime, String area,Integer devflag) { + public IntergralityData getDataIntegralityTable(Date startTime, Date endTime, String area,Integer devflag,Integer powerId) { IntergralityData intergralityData = new IntergralityData(); - List areaGeneralDataList = userUtil.getAreaGeneralRun(devflag,area); + List areaGeneralDataList = userUtil.getAreaGeneralRun(devflag,area,powerId); List lineIndexs = areaGeneralDataList.stream().flatMap(item->item.getLineIndexs().stream()).collect(Collectors.toList()); if (CollectionUtils.isEmpty(lineIndexs)) { return null; @@ -6776,12 +6776,13 @@ public class DeviceServiceImpl implements DeviceService { getGwData(tmp, gwLineList, start, end); String onlinerate = getOnline(devList, start, end); + //在线率 deviceMapInfo.setOnline(onlinerate.equals("3.14159") ? "0" : onlinerate); deviceMapInfo.setGwOnline(tmp.getGwonline().equals("3.14159") ? "0" : tmp.getGwonline()); String dataIntegrality = getIntegrality(lineList, start, end); String gwdataIntegrality = getGwIntegrality(gwLineList, start, end); - + //数据完整率 deviceMapInfo.setDataIntegrality(dataIntegrality.equals("3.14159") ? "0" : dataIntegrality); deviceMapInfo.setGwDataIntegrality(gwdataIntegrality.equals("3.14159") ? "0" : gwdataIntegrality); } diff --git a/comService/src/main/java/com/njcn/serviceimpl/point/PointBaseInfoServiceImpl.java b/comService/src/main/java/com/njcn/serviceimpl/point/PointBaseInfoServiceImpl.java index 2c8326c..51a8963 100644 --- a/comService/src/main/java/com/njcn/serviceimpl/point/PointBaseInfoServiceImpl.java +++ b/comService/src/main/java/com/njcn/serviceimpl/point/PointBaseInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.njcn.serviceimpl.point; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import com.njcn.mapper.configuration.DeviceDetailMapper; import com.njcn.mapper.point.PointBaseInfoMapper; @@ -17,10 +18,7 @@ import com.njcn.utils.UserUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -91,14 +89,14 @@ public class PointBaseInfoServiceImpl implements PointBaseInfoService { } else { list = lineIndexes; } - List rvoList = pointBaseInfoMapper.getLineLedger(list, lineLedgerVO.getLoadType(), lineLedgerVO.getVoltage(), lineLedgerVO.getStatus(), lineLedgerVO.getAppear()); + List rvoList = pointBaseInfoMapper.getLineLedger(list, lineLedgerVO.getLoadType(), lineLedgerVO.getVoltage(), lineLedgerVO.getStatus(), lineLedgerVO.getAppear(),lineLedgerVO.getPowerId()); if (CollectionUtil.isNotEmpty(rvoList)) { lineLedgerList.addAll(rvoList); } list.clear(); } } else { - List rvoList = pointBaseInfoMapper.getLineLedger(lineIndexes, lineLedgerVO.getLoadType(), lineLedgerVO.getVoltage(), lineLedgerVO.getStatus(), lineLedgerVO.getAppear()); + List rvoList = pointBaseInfoMapper.getLineLedger(lineIndexes, lineLedgerVO.getLoadType(), lineLedgerVO.getVoltage(), lineLedgerVO.getStatus(), lineLedgerVO.getAppear(),lineLedgerVO.getPowerId()); lineLedgerList.addAll(rvoList); } @@ -122,7 +120,7 @@ public class PointBaseInfoServiceImpl implements PointBaseInfoService { if (CollectionUtil.isEmpty(lineLedgerVO.getVoltage())) { lineLedgerVO.setVoltage(null); } - List rvoList = pointBaseInfoMapper.getLineLedger(lineList, lineLedgerVO.getLoadType(), lineLedgerVO.getVoltage(), lineLedgerVO.getStatus(), lineLedgerVO.getAppear()); + List rvoList = pointBaseInfoMapper.getLineLedger(lineList, lineLedgerVO.getLoadType(), lineLedgerVO.getVoltage(), lineLedgerVO.getStatus(), lineLedgerVO.getAppear(),lineLedgerVO.getPowerId()); lineLedgerList.addAll(rvoList); } } @@ -140,7 +138,6 @@ public class PointBaseInfoServiceImpl implements PointBaseInfoService { lineLedger.setDevNo(deviceDetails.getDevNo()); lineLedger.setLineStatus(deviceDetails.getLineStatus()); } - return lineLedgerList; } diff --git a/comService/src/main/java/com/njcn/utils/UserUtil.java b/comService/src/main/java/com/njcn/utils/UserUtil.java index d631513..e7a9d69 100644 --- a/comService/src/main/java/com/njcn/utils/UserUtil.java +++ b/comService/src/main/java/com/njcn/utils/UserUtil.java @@ -6,6 +6,7 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ArrayUtil; import com.njcn.pojo.configuration.*; import org.apache.commons.lang.StringUtils; import org.apache.shiro.session.Session; @@ -530,14 +531,14 @@ public class UserUtil { return ag; } - public List getAreaGeneralRun(Integer devFlag,String deptId) { + public List getAreaGeneralRun(Integer devFlag,String deptId,Integer powerId) { List ag; Depts depts = getDeptsByIndex(deptId); DeviceType deviceType = getOnLineDeviceType(); if (null == depts) { return new ArrayList<>(); } - ag = getAreaDatas(depts, deviceType, devFlag); + ag = getAreaPowerIdData(depts, deviceType, devFlag,powerId); return ag; } @@ -644,6 +645,63 @@ public class UserUtil { return ag; } + /** + * @param dept 部门 只统计在线装置 且投运状态 + * 1:判断该部门有没有直接子部门 + * 2:根据有效部门获取部门对应的各项信息 + */ + private List getAreaPowerIdData(Depts dept, DeviceType deviceType, Integer devFlag,Integer powerId) { + List ag = new ArrayList<>(); + try { + List depts = getDirectDeptsByNode(dept.getDeptsIndex()); + if (CollectionUtils.isEmpty(depts)) { + //则只获取当前部门下的所有信息 + ag.add(getAreaPowerIdDept(dept, deviceType, devFlag,powerId)); + } else { + //返回当前用户下所有子部门的信息 + for (Depts deptsTemp : depts) { + ag.add(getAreaPowerIdDept(deptsTemp, deviceType, devFlag,powerId)); + } + } + } catch (Exception e) { + logger.error(e.getMessage()); + } + return ag; + } + /** + * 获取部门下详细信息(监测点性质) + * + * @param dept 部门 + */ + private AreaGeneralData getAreaPowerIdDept(Depts dept, DeviceType deviceType, Integer devicdStatus,Integer powerId) { + AreaGeneralData areaGeneralData = new AreaGeneralData(); + if (dept.getCustomDept() == 0) { + areaGeneralData.setName(dept.getArea()); + } else { + areaGeneralData.setName(dept.getDeptsName()); + } + areaGeneralData.setDeptIndex(dept.getDeptsIndex()); + String sysType = getSysType().equals(ProjectEnum.APP.getKey()) ? null : getSysType(); + List indexsCountsByDept = deptsLineMapper.selectIndexsPowerIdByDeptRun(Arrays.asList(dept.getDeptsIndex()), sysType, deviceType.getDevModel(), deviceType.getDataType(), devicdStatus,null,powerId); + if (CollectionUtils.isEmpty(indexsCountsByDept)) { + //如果该部门没有任何的监测点关联,有可能是因为其是父节点(程序默认,当存在子节点时,当前部门节点不可绑定监测点) + List depts = getDeptsByNode(dept.getDeptsIndex()); + if (CollectionUtils.isEmpty(depts)) { + areaGeneralData.setMonitors(0); + } else { + List deptIds = depts.stream().map(Depts::getDeptsIndex).collect(Collectors.toList()); + List indexsCountsByDepts = deptsLineMapper.selectIndexsPowerIdByDeptRun(deptIds, sysType, deviceType.getDevModel(), deviceType.getDataType(), devicdStatus,null,powerId); + if (CollectionUtils.isEmpty(indexsCountsByDepts)) { + areaGeneralData.setMonitors(0); + } else { + areaGeneralData = filtIndexData(indexsCountsByDepts, areaGeneralData); + } + } + } else { + areaGeneralData = filtIndexData(indexsCountsByDept, areaGeneralData); + } + return areaGeneralData; + } private List getDeptsDatas(Depts dept, DeviceType deviceType, Integer devStatus) { List ag = new ArrayList<>(); try { diff --git a/pqs9000/src/main/java/com/pqs9000/controller/area/IntegralityController.java b/pqs9000/src/main/java/com/pqs9000/controller/area/IntegralityController.java index c31ff0c..d1cc35a 100644 --- a/pqs9000/src/main/java/com/pqs9000/controller/area/IntegralityController.java +++ b/pqs9000/src/main/java/com/pqs9000/controller/area/IntegralityController.java @@ -83,7 +83,7 @@ public class IntegralityController { * type 统计类型(冀北省、国网) */ @GetMapping("integralitytable") - public ModelAndView integrityTable(String starttime, String endtime, String area, String interval) { + public ModelAndView integrityTable(String starttime, String endtime, String area, String interval, String gwtype) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("business/manage/integrityTable"); if(StringUtils.isEmpty(starttime)&&StringUtils.isEmpty(endtime)){ @@ -101,6 +101,7 @@ public class IntegralityController { } modelAndView.addObject("area", area); modelAndView.addObject("interval", interval); + modelAndView.addObject("gwType", gwtype); return modelAndView; } @@ -114,7 +115,7 @@ public class IntegralityController { */ @PostMapping("getIntegrityData") @ResponseBody - public HttpResult getIntegrityData(String startTime, String endTime, String area,Integer devflag, HttpServletRequest request) { + public HttpResult getIntegrityData(String startTime, String endTime, String area,Integer devflag,Integer powerId, HttpServletRequest request) { HttpResult result = PubUtils.initResult(TokenManager.getToken().getLoginName(), request, LogTypeEnum.BUSSINESS.toString(), 0); DatePojo datePojo; datePojo = PubUtils.validateDate(startTime, endTime, "getIntegrityData"); @@ -124,7 +125,7 @@ public class IntegralityController { } IntergralityData intergralityData; try { - intergralityData = deviceService.getDataIntegralityTable(datePojo.getStartTime(), datePojo.getEndTime(), area,devflag); + intergralityData = deviceService.getDataIntegralityTable(datePojo.getStartTime(), datePojo.getEndTime(), area,devflag,powerId); if (null == intergralityData) { result = PubUtils.assignmentResultLog(null, 500, "获取监测点数据完整性数据为空", "查询完整性列表", "成功", result); } else { diff --git a/pqs9000/src/main/java/com/pqs9000/controller/business/BusinessController.java b/pqs9000/src/main/java/com/pqs9000/controller/business/BusinessController.java index 18f1f17..5d6874d 100644 --- a/pqs9000/src/main/java/com/pqs9000/controller/business/BusinessController.java +++ b/pqs9000/src/main/java/com/pqs9000/controller/business/BusinessController.java @@ -1,5 +1,6 @@ package com.pqs9000.controller.business; +import cn.hutool.core.util.StrUtil; import com.njcn.enums.ProjectEnum; import com.njcn.pojo.commons.WebItem; import com.njcn.pojo.system.SubSystem; @@ -348,11 +349,17 @@ public class BusinessController { // 跳转终端运行管理页面 @GetMapping(value = "runtime") - public ModelAndView runtime(String area,String type) { + public ModelAndView runtime(String area,String type, String manufacturer) { ModelAndView modelAndView = new ModelAndView(); + if(StrUtil.isNotBlank(manufacturer)){ + if(manufacturer.indexOf("(")!=-1){ + manufacturer=manufacturer.substring(0,manufacturer.indexOf("(")); + } + } modelAndView.setViewName("business/manage/runtime"); modelAndView.addObject("area", area); modelAndView.addObject("type", type); + modelAndView.addObject("manufacturer", manufacturer); return modelAndView; } diff --git a/pqs9000/src/main/java/com/pqs9000/controller/business/OverviewController.java b/pqs9000/src/main/java/com/pqs9000/controller/business/OverviewController.java index d207d45..a04f3f2 100644 --- a/pqs9000/src/main/java/com/pqs9000/controller/business/OverviewController.java +++ b/pqs9000/src/main/java/com/pqs9000/controller/business/OverviewController.java @@ -6,27 +6,25 @@ import com.njcn.pojo.commons.DatePojo; import com.njcn.pojo.commons.HttpResult; import com.njcn.pojo.commons.SimpleValue; import com.njcn.pojo.commons.SteadyTypeData; -import com.njcn.pojo.commons.acceptability.AcceptabilityAllData; -import com.njcn.pojo.commons.acceptability.AcceptabilityData; import com.njcn.pojo.commons.device.DeviceGeneral; +import com.njcn.pojo.data.AssesData; import com.njcn.service.configuration.DeviceService; import com.njcn.service.configuration.LineService; import com.njcn.service.log.UserLogDetailService; import com.njcn.shiro.token.TokenManager; import com.njcn.utils.PubUtils; -import com.pqs9000.pojo.common.OverviewData; import com.pqs9000.pojo.common.PowerQualityData; import com.pqs9000.service.data.AssesService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import tk.mybatis.mapper.entity.Example; +import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import java.util.List; @@ -52,6 +50,51 @@ public class OverviewController { @Autowired UserLogDetailService userLog; + @GetMapping("/assesTable") + public ModelAndView integrityTable(String starttime, String endtime, String area, String interval) { + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("business/area/assesTable"); + DatePojo datePojo=PubUtils.validateDate(starttime,endtime,"assesTable"); + if(!StringUtils.isEmpty(datePojo.getMsg())){ + modelAndView.addObject("startTime", ""); + modelAndView.addObject("endTime", ""); + }else{ + modelAndView.addObject("startTime", starttime); + modelAndView.addObject("endTime", endtime); + } + modelAndView.addObject("area", area); + modelAndView.addObject("interval", interval); + return modelAndView; + } + /** + * 区域--》点击柱状图电能质量评估--》列表 + * + * @param startTime 起始时间 + * @param endTime 截止时间 + */ + @PostMapping("/assesTableData") + @ResponseBody + public HttpResult getAssesTableData(String startTime, String endTime, String area, HttpServletRequest request) { + HttpResult result = PubUtils.initResult(TokenManager.getToken().getLoginName(), request, LogTypeEnum.BUSSINESS.toString(), 0); + DatePojo datePojo; + datePojo = PubUtils.validateDate(startTime, endTime, "assesTableData"); + if (!StringUtils.isEmpty(datePojo.getMsg())) { + result = PubUtils.assignmentResult(null, 500, datePojo.getMsg()); + return result; + } + List data; + try { + data = assesService.getAssesTableData(datePojo.getStartTime(), datePojo.getEndTime(), area); + result = PubUtils.assignmentResultLog(data, 200, "区域获取电能质量评估列表成功", "查询区域获取电能质量评估列表", "成功", result); + userLog.getLog("查询电能质量评估列表", "成功", PubUtils.getIpAddr(request), LogTypeEnum.BUSSINESS.toString(), 0); + } catch (Exception e) { + userLog.getLog("查询电能质量评估列表", "失败", PubUtils.getIpAddr(request), LogTypeEnum.BUSSINESS.toString(), 0); + result = PubUtils.assignmentResultLog(null, 200, "区域获取电能质量评估列表失败", "查询区域获取电能质量评估列表", "失败", result); + } + return result; + } + + /** diff --git a/pqs9000/src/main/java/com/pqs9000/pojo/common/AreaPowerQualityData.java b/pqs9000/src/main/java/com/pqs9000/pojo/common/AreaPowerQualityData.java index 801c55b..4212de4 100644 --- a/pqs9000/src/main/java/com/pqs9000/pojo/common/AreaPowerQualityData.java +++ b/pqs9000/src/main/java/com/pqs9000/pojo/common/AreaPowerQualityData.java @@ -9,6 +9,7 @@ import java.io.Serializable; */ public class AreaPowerQualityData implements Serializable { + private String deptsIndex; private String name; private float data; @@ -49,6 +50,14 @@ public class AreaPowerQualityData implements Serializable { this.level = level; } + public String getDeptsIndex() { + return deptsIndex; + } + + public void setDeptsIndex(String deptsIndex) { + this.deptsIndex = deptsIndex; + } + @Override public String toString() { return "AreaPowerQualityData{" + diff --git a/pqs9000/src/main/java/com/pqs9000/service/data/AssesService.java b/pqs9000/src/main/java/com/pqs9000/service/data/AssesService.java index 03b71be..73c3961 100644 --- a/pqs9000/src/main/java/com/pqs9000/service/data/AssesService.java +++ b/pqs9000/src/main/java/com/pqs9000/service/data/AssesService.java @@ -1,8 +1,10 @@ package com.pqs9000.service.data; +import com.njcn.pojo.data.AssesData; import com.pqs9000.pojo.common.PowerQualityData; import java.util.Date; +import java.util.List; /** * @author hongawen @@ -20,4 +22,7 @@ public interface AssesService { PowerQualityData qualityAssess(Date startTime, Date endTime, Long lineIndex); PowerQualityData qualityAssessTB(Date startTime, Date endTime,Date laststartTime, Date lastendTime, Long lineIndex); + + //电能质量评估列表 + List getAssesTableData(Date startTime, Date endTime, String area); } diff --git a/pqs9000/src/main/java/com/pqs9000/serviceimpl/data/AssesServiceImpl.java b/pqs9000/src/main/java/com/pqs9000/serviceimpl/data/AssesServiceImpl.java index 612e792..55f8bb9 100644 --- a/pqs9000/src/main/java/com/pqs9000/serviceimpl/data/AssesServiceImpl.java +++ b/pqs9000/src/main/java/com/pqs9000/serviceimpl/data/AssesServiceImpl.java @@ -1,10 +1,11 @@ package com.pqs9000.serviceimpl.data; import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; +import cn.hutool.core.collection.CollUtil; +import com.njcn.pojo.data.AssesData; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -12,7 +13,6 @@ import org.springframework.stereotype.Service; import com.njcn.mapper.configuration.OverLimitMapper; import com.njcn.mapper.data.AssesMapper; -import com.njcn.mapper.user.DeptsMapper; import com.njcn.pojo.commons.AreaGeneralData; import com.njcn.pojo.configuration.OverLimit; import com.njcn.pojo.data.Asses; @@ -94,6 +94,7 @@ public class AssesServiceImpl implements AssesService { if(CollectionUtils.isEmpty(areaGeneralData.getLineIndexs())){ //综合评分 AreaPowerQualityData areaPowerQualityData5=new AreaPowerQualityData(); + areaPowerQualityData5.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData5.setName(areaGeneralData.getName()); //获取综合评分 areaPowerQualityData5.setData(3.1415f); @@ -103,6 +104,7 @@ public class AssesServiceImpl implements AssesService { synData.add(areaPowerQualityData5); if(StringUtils.isBlank(overview)){ AreaPowerQualityData areaPowerQualityData=new AreaPowerQualityData(); + areaPowerQualityData.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData.setName(areaGeneralData.getName()); //获取时间范围内该区域的电压偏差 areaPowerQualityData.setData(3.1415f); @@ -110,24 +112,28 @@ public class AssesServiceImpl implements AssesService { areaPowerQualityData.setMonitor(0); vuDevs.add(areaPowerQualityData); AreaPowerQualityData areaPowerQualityData1=new AreaPowerQualityData(); + areaPowerQualityData1.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData1.setName(areaGeneralData.getName()); areaPowerQualityData1.setData(3.1415f); areaPowerQualityData1.setLevel("/"); areaPowerQualityData1.setMonitor(0); freqDev.add(areaPowerQualityData1); AreaPowerQualityData areaPowerQualityData2=new AreaPowerQualityData(); + areaPowerQualityData2.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData2.setName(areaGeneralData.getName()); areaPowerQualityData2.setData(3.1415f); areaPowerQualityData2.setLevel("/"); areaPowerQualityData2.setMonitor(0); dataPlt.add(areaPowerQualityData2); AreaPowerQualityData areaPowerQualityData3=new AreaPowerQualityData(); + areaPowerQualityData3.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData3.setName(areaGeneralData.getName()); areaPowerQualityData3.setData(3.1415f); areaPowerQualityData3.setLevel("/"); areaPowerQualityData3.setMonitor(0); vThdCp95.add(areaPowerQualityData3); AreaPowerQualityData areaPowerQualityData4=new AreaPowerQualityData(); + areaPowerQualityData4.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData4.setName(areaGeneralData.getName()); areaPowerQualityData4.setData(3.1415f); areaPowerQualityData4.setLevel("/"); @@ -136,6 +142,7 @@ public class AssesServiceImpl implements AssesService { } }else{ AreaPowerQualityData areaPowerQualityData=new AreaPowerQualityData(); + areaPowerQualityData.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData.setName(areaGeneralData.getName()); //获取时间范围内该区域的电压偏差 List lineIds=areaGeneralData.getLineIndexs(); @@ -158,24 +165,28 @@ public class AssesServiceImpl implements AssesService { areaPowerQualityData.setMonitor(lineIds.size()); vuDevs.add(areaPowerQualityData); AreaPowerQualityData areaPowerQualityData1=new AreaPowerQualityData(); + areaPowerQualityData1.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData1.setName(areaGeneralData.getName()); areaPowerQualityData1.setData(3.14159f); areaPowerQualityData1.setLevel("(暂无数据)"); areaPowerQualityData1.setMonitor(lineIds.size()); freqDev.add(areaPowerQualityData1); AreaPowerQualityData areaPowerQualityData2=new AreaPowerQualityData(); + areaPowerQualityData2.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData2.setName(areaGeneralData.getName()); areaPowerQualityData2.setData(3.14159f); areaPowerQualityData2.setLevel("(暂无数据)"); areaPowerQualityData2.setMonitor(lineIds.size()); dataPlt.add(areaPowerQualityData2); AreaPowerQualityData areaPowerQualityData3=new AreaPowerQualityData(); + areaPowerQualityData3.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData3.setName(areaGeneralData.getName()); areaPowerQualityData3.setData(3.14159f); areaPowerQualityData3.setLevel("(暂无数据)"); areaPowerQualityData3.setMonitor(lineIds.size()); vThdCp95.add(areaPowerQualityData3); AreaPowerQualityData areaPowerQualityData4=new AreaPowerQualityData(); + areaPowerQualityData4.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData4.setName(areaGeneralData.getName()); areaPowerQualityData4.setData(3.14159f); areaPowerQualityData4.setLevel("(暂无数据)"); @@ -185,6 +196,7 @@ public class AssesServiceImpl implements AssesService { }else{ //综合评分 AreaPowerQualityData areaPowerQualityData5=new AreaPowerQualityData(); + areaPowerQualityData5.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData5.setName(areaGeneralData.getName()); //获取综合评分 float synDatas=getSynData(areaGeneralData.getLineIndexs(),startTime,endTime); @@ -199,24 +211,28 @@ public class AssesServiceImpl implements AssesService { areaPowerQualityData.setMonitor(lineIds.size()); vuDevs.add(areaPowerQualityData); AreaPowerQualityData areaPowerQualityData1=new AreaPowerQualityData(); + areaPowerQualityData1.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData1.setName(areaGeneralData.getName()); areaPowerQualityData1.setData(FloatUtils.get2Float(asses.getFreqDev())); areaPowerQualityData1.setLevel(getLevel(asses.getFreqDev(),0f,0.05f,0.1f,0.15f,0.2f,0.25f,0.30f,0.35f)); areaPowerQualityData1.setMonitor(lineIds.size()); freqDev.add(areaPowerQualityData1); AreaPowerQualityData areaPowerQualityData2=new AreaPowerQualityData(); + areaPowerQualityData2.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData2.setName(areaGeneralData.getName()); areaPowerQualityData2.setData(FloatUtils.get2Float(asses.getDataPlt())); areaPowerQualityData2.setLevel(getLevel(asses.getDataPlt(),0f,0.15f,0.3f,0.45f,0.6f,0.75f,0.90f,1.05f)); areaPowerQualityData2.setMonitor(lineIds.size()); dataPlt.add(areaPowerQualityData2); AreaPowerQualityData areaPowerQualityData3=new AreaPowerQualityData(); + areaPowerQualityData3.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData3.setName(areaGeneralData.getName()); areaPowerQualityData3.setData(FloatUtils.get2Float(asses.getvThdCp95())); areaPowerQualityData3.setLevel(getLevel(asses.getvThdCp95(),0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f)); areaPowerQualityData3.setMonitor(lineIds.size()); vThdCp95.add(areaPowerQualityData3); AreaPowerQualityData areaPowerQualityData4=new AreaPowerQualityData(); + areaPowerQualityData4.setDeptsIndex(areaGeneralData.getDeptIndex()); areaPowerQualityData4.setName(areaGeneralData.getName()); areaPowerQualityData4.setData(FloatUtils.get2Float(asses.getVunbalanceCp95())); areaPowerQualityData4.setLevel(getLevel(asses.getVunbalanceCp95(),0f,0.5f,1f,1.5f,2f,2.5f,3f,3.5f)); @@ -241,6 +257,9 @@ public class AssesServiceImpl implements AssesService { if(synDatas==3.14159f){ return "(暂无数据)"; } + if(synDatas==3.1415f){ + return "/"; + } if(0<=synDatas&&synDatas<2){ return "极差"; }else if(2<=synDatas&&synDatas<3){ @@ -599,4 +618,99 @@ public class AssesServiceImpl implements AssesService { powerQualityData.setVunbalanceCp95(vunbalanceCp95); return powerQualityData; } + + @Override + public List getAssesTableData(Date startTime, Date endTime, String area) { + List areaGeneralDataList = userUtil.getAreaGeneralRun(null,area,null); + List lineIndexs = areaGeneralDataList.stream().flatMap(item->item.getLineIndexs().stream()).collect(Collectors.toList()); + if (org.springframework.util.CollectionUtils.isEmpty(lineIndexs)) { + return null; + } + List integralityTable = getIntegralityTable(startTime, endTime, lineIndexs); + if(CollUtil.isNotEmpty(integralityTable)){ + Map assesSynData = getAssesSynData(startTime, endTime, lineIndexs); + for (AssesData assesData : integralityTable) { + if(assesSynData.containsKey(assesData.getLineId())){ + assesData.setSynData(assesSynData.get(assesData.getLineId())); + }else{ + assesData.setSynData(0f); + } + } + } + return integralityTable; + } + + /** + * 分片处理获取 + * + * @param startTime 起始时间 + * @param endTime 截止时间 + * @param lineIndexs 监测点索引 + */ + private List getIntegralityTable(Date startTime, Date endTime, List lineIndexs) { + List intergralityTables = new ArrayList<>(); + //分片1000个监测点 + if (lineIndexs.size() > 1000) { + int times = lineIndexs.size() / 1000 + 1; + for (int i = 1; i <= times; i++) { + if (lineIndexs.size() > 1000) { + List tempIndexs = lineIndexs.subList(0, 1000); + List tempTables = assesMapper.getLineVol(tempIndexs, startTime, endTime); + intergralityTables.addAll(tempTables); + tempIndexs.clear(); + } else { + List tempTables = assesMapper.getLineVol(lineIndexs, startTime, endTime); + intergralityTables.addAll(tempTables); + } + } + } else { + intergralityTables = assesMapper.getLineVol(lineIndexs, startTime, endTime); + } + return intergralityTables; + } + + /** + * 分片处理获取 + * + * @param startTime 起始时间 + * @param endTime 截止时间 + * @param lineIndexs 监测点索引 + */ + private Map getAssesSynData(Date startTime, Date endTime, List lineIndexs) { + Map map=new HashMap<>(); + List intergralityTables = new ArrayList<>(); + //分片1000个监测点 + if (lineIndexs.size() > 1000) { + int times = lineIndexs.size() / 1000 + 1; + for (int i = 1; i <= times; i++) { + if (lineIndexs.size() > 1000) { + List tempIndexs = lineIndexs.subList(0, 1000); + List tempTables = assesMapper.getSynData(tempIndexs, startTime, endTime); + intergralityTables.addAll(tempTables); + tempIndexs.clear(); + } else { + List tempTables = assesMapper.getSynData(lineIndexs, startTime, endTime); + intergralityTables.addAll(tempTables); + } + } + } else { + intergralityTables = assesMapper.getSynData(lineIndexs, startTime, endTime); + } + if(CollUtil.isNotEmpty(intergralityTables)){ + for (int i = 0; i < intergralityTables.size(); i++) { + PqsComasses tempPqs=intergralityTables.get(i); + //组合二维数组 + float f1[][]={{tempPqs.getFreqDev1(),tempPqs.getFreqDev2(),tempPqs.getFreqDev3(),tempPqs.getFreqDev4(),tempPqs.getFreqDev5()} + ,{tempPqs.getVThd1(),tempPqs.getVThd2(),tempPqs.getVThd3(),tempPqs.getVThd4(),tempPqs.getVThd5(),} + ,{tempPqs.getDataPst1(),tempPqs.getDataPst2(),tempPqs.getDataPst3(),tempPqs.getDataPst4(),tempPqs.getDataPst5()} + ,{tempPqs.getVuDev1(),tempPqs.getVuDev2(),tempPqs.getVuDev3(),tempPqs.getVuDev4(),tempPqs.getVuDev5(),} + ,{tempPqs.getVUnbalance1(),tempPqs.getVUnbalance2(),tempPqs.getVUnbalance3(),tempPqs.getVUnbalance4(),tempPqs.getVUnbalance5(),} + ,{tempPqs.getEvent1(),tempPqs.getEvent2(),tempPqs.getEvent3(),tempPqs.getEvent4(),tempPqs.getEvent5(),}}; + //获取该值返回的数据 + float temp=comAssesUtil.GetComAsses(f1); + map.put(tempPqs.getLineid(),temp); + } + } + return map; + } } diff --git a/pqs9000/src/main/resources/mybatis/mappers/data/AssesMapper.xml b/pqs9000/src/main/resources/mybatis/mappers/data/AssesMapper.xml index 8b76b86..4f532a9 100644 --- a/pqs9000/src/main/resources/mybatis/mappers/data/AssesMapper.xml +++ b/pqs9000/src/main/resources/mybatis/mappers/data/AssesMapper.xml @@ -66,5 +66,44 @@ GROUP BY LINEID - + \ No newline at end of file diff --git a/pqs9000/src/main/resources/mybatis/mappers/data/IntegrityMapper.xml b/pqs9000/src/main/resources/mybatis/mappers/data/IntegrityMapper.xml index 71bcc66..823db7b 100644 --- a/pqs9000/src/main/resources/mybatis/mappers/data/IntegrityMapper.xml +++ b/pqs9000/src/main/resources/mybatis/mappers/data/IntegrityMapper.xml @@ -23,7 +23,7 @@ SUM (T1.real) countOnline, SUM (T1.due) countAll FROM - PQS_NGCPINTEGRITY T1 + PQS_Integrity T1 WHERE T1.Line_index in @@ -148,7 +148,7 @@ 4 ) * 100 integrity FROM - PQS_NGCPINTEGRITY T1 + PQS_Integrity T1 WHERE T1.LINE_INDEX IN #{item} AND t1.TIMEID BETWEEN #{startTime} AND #{endTime} diff --git a/pqs9000/src/main/resources/mybatis/mappers/point/PointInfoMapper.xml b/pqs9000/src/main/resources/mybatis/mappers/point/PointInfoMapper.xml index 89a21ed..b57cab6 100644 --- a/pqs9000/src/main/resources/mybatis/mappers/point/PointInfoMapper.xml +++ b/pqs9000/src/main/resources/mybatis/mappers/point/PointInfoMapper.xml @@ -108,7 +108,8 @@ a.line_index lineIndex, mod(a.line_index,10) as lineNum, a.name as lineName, - nvl(b.POWER_SUBSTATION_NAME,e.name)||'_'||sv.NAME||'_'||a.name as electricityQualityName, + e.name||'_'||sv.NAME||'_'||a.name as electricityQualityName, + sv.NAME as busBarName, a.dev_index devIndex, a.status lineStatus, b.pttype ptType, @@ -194,10 +195,14 @@ and d.status = #{status} + + and b.POWERID = #{powerId} + and b.MONITOR_ID is not null and b.MONITOR_ID != ' ' and (b.MONITOR_ID IS NULL or b.MONITOR_ID IN (' ')) + order by province,gdName,devName,lineNum,subName,busBarName,lineName - + + + +
+
+ + + <%@include file="../../include/time.jsp" %> + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pqs9000/src/main/webapp/WEB-INF/views/business/manage/integrityTable.jsp b/pqs9000/src/main/webapp/WEB-INF/views/business/manage/integrityTable.jsp index 88c88bc..85912ba 100644 --- a/pqs9000/src/main/webapp/WEB-INF/views/business/manage/integrityTable.jsp +++ b/pqs9000/src/main/webapp/WEB-INF/views/business/manage/integrityTable.jsp @@ -82,9 +82,19 @@
- +
+ +