| | |
| | | import com.iailab.framework.common.util.date.DateUtils; |
| | | import com.iailab.framework.common.util.object.ConvertUtils; |
| | | import com.iailab.module.ansteel.api.dto.*; |
| | | import com.iailab.module.ansteel.common.utils.DecimalUtil; |
| | | import com.iailab.module.ansteel.power.entity.*; |
| | | import com.iailab.module.ansteel.power.service.*; |
| | | import com.iailab.module.data.api.point.DataPointApi; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private PowerCapacitorDetService powerCapacitorDetService; |
| | | |
| | | @Autowired |
| | | private PowerNetDropdownService powerNetDropdownService; |
| | | |
| | | @GetMapping("/net-factor/list") |
| | | @Operation(summary = "功率因数-电网拓扑") |
| | |
| | | |
| | | @GetMapping("/net-factor-dropdown/list") |
| | | @Operation(summary = "功率因数-电网拓扑下拉列表") |
| | | public CommonResult<List<PowerNetFactorDropdownDTO>> getPowerNetFactorDropdownList(@RequestParam String nodeCode) { |
| | | public CommonResult<List<PowerNetDropdownDTO>> getPowerNetFactorDropdownList(@RequestParam String nodeCode) { |
| | | log.info("nodeCode=" + nodeCode); |
| | | List<PowerNetFactorEntity> list = powerNetFactorService.listDropdown(nodeCode); |
| | | return success(ConvertUtils.sourceToTarget(list, PowerNetFactorDropdownDTO.class)); |
| | | List<PowerNetDropdownDTO> result = new ArrayList<>(); |
| | | PowerNetFactorEntity entity = powerNetFactorService.getByNodeCode(nodeCode); |
| | | if (entity == null) { |
| | | return success(result); |
| | | } |
| | | List<PowerNetDropdownEntity> list = new ArrayList<>(); |
| | | Map<String, Object> params = new HashMap<>(); |
| | | if ("望铁关口".equals(entity.getGroupName())) { |
| | | params.put("groupName", entity.getGroupName()); |
| | | params.put("neNodeName", entity.getNodeName()); |
| | | } else { |
| | | params.put("groupName", entity.getNodeName()); |
| | | } |
| | | list = powerNetDropdownService.list(params); |
| | | List<String> points = list.stream().map(item -> { |
| | | return item.getCurCos(); |
| | | }).collect(Collectors.toList()); |
| | | Map<String, Object> pointsRealValue = new HashMap<>(); |
| | | if (!CollectionUtils.isEmpty(points)) { |
| | | pointsRealValue = dataPointApi.queryPointsRealValue(points); |
| | | } |
| | | for (PowerNetDropdownEntity netDropdown : list) { |
| | | PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); |
| | | BigDecimal curCos = BigDecimal.ZERO; |
| | | if (pointsRealValue.get(netDropdown.getCurCos()) != null) { |
| | | curCos = new BigDecimal(pointsRealValue.get(netDropdown.getCurCos()).toString()); |
| | | } |
| | | dto.setCurCos(curCos); |
| | | result.add(dto); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | /** |
| | |
| | | if (StringUtils.isBlank(dto.getQueryType())) { |
| | | return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST, "queryType不能为空"); |
| | | } |
| | | |
| | | log.info("id={}", dto.getId()); |
| | | PowerGenStatusEntity powerGenStatus = powerGenStatusDaoService.getById(dto.getId()); |
| | | if (powerGenStatus == null) { |
| | | log.info("未找到code对应的数据: {}", dto.getId()); |
| | |
| | | } |
| | | |
| | | String queryType = dto.getQueryType().toUpperCase(); |
| | | log.info("queryType={}", queryType); |
| | | String pointNo; |
| | | switch (queryType.toUpperCase()) { |
| | | case "P": |
| | |
| | | pointNo = powerGenStatus.getCurQ(); |
| | | break; |
| | | case "COS": |
| | | pointNo = powerGenStatus.getCurCOS(); |
| | | pointNo = powerGenStatus.getCurCos(); |
| | | break; |
| | | default: |
| | | throw new IllegalArgumentException("不支持的queryType: " + queryType); |
| | | } |
| | | log.info("开始查询,pointNo={}", pointNo); |
| | | |
| | | // 默认查最近24小时 |
| | | Date end = Optional.ofNullable(dto.getEndTime()).orElseGet(() -> { |
| | |
| | | @Operation(summary = "功率因数-电容器投退指示灯") |
| | | public CommonResult<List<PowerCapacitorDetDTO>> getPowerCapacitorDetList(@RequestParam Map<String, Object> params) { |
| | | List<PowerCapacitorDetEntity> list = powerCapacitorDetService.list(params); |
| | | log.info("list.size=" + list.size()); |
| | | log.info("list.size=" + list.size()); |
| | | List<String> points = list.stream().map(item -> { |
| | | return item.getPointNo(); |
| | | }).collect(Collectors.toList()); |
| | |
| | | if (StringUtils.isNotBlank(dto.getActivePower())) { |
| | | points.add(dto.getActivePower()); |
| | | } |
| | | |
| | | if (!CollectionUtils.isEmpty(points)) { |
| | | |
| | | Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); |
| | | |
| | | if (pointsRealValue.get(dto.getCurDemand()) != null) { |
| | | dto.setCurDemand(pointsRealValue.get(dto.getCurDemand()).toString()); |
| | | } |
| | |
| | | Date start = calendar.getTime(); |
| | | ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO(); |
| | | apiPointValueQueryDTO.setStart(start); |
| | | apiPointValueQueryDTO.setEnd(new Date()); |
| | | apiPointValueQueryDTO.setPointNo(dto.getMaxDemand()); |
| | | |
| | | List<ApiPointValueDTO> monthValues = dataPointApi.queryPointHistoryValue(apiPointValueQueryDTO); |
| | | double max = 0; |
| | | for (int i = 0; i < monthValues.size() - 1; i++) { |
| | | if (max < monthValues.get(i).getV()) { |
| | | max = monthValues.get(i).getV(); |
| | | } |
| | | Object maxValue = dataPointApi.queryPointMaxValue(apiPointValueQueryDTO); |
| | | dto.setMaxDemand(maxValue == null ? "" : maxValue.toString()); |
| | | } |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | @GetMapping("/demand-dropdown/list") |
| | | @Operation(summary = "负荷移植-功率因数下拉列表") |
| | | public CommonResult<List<PowerNetDropdownDTO>> getDemandDropdownList(@RequestParam String code) { |
| | | if (StringUtils.isBlank(code)) { |
| | | log.info("code isBlank"); |
| | | return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); |
| | | } |
| | | log.info("code=" + code); |
| | | |
| | | List<PowerNetDropdownDTO> result = new ArrayList<>(); |
| | | PowerDemandEntity entity = powerDemandService.getByCode(code); |
| | | if (entity == null) { |
| | | log.info("PowerDemandEntity is null"); |
| | | return success(result); |
| | | } |
| | | Map<String, Object> params0 = new HashMap<>(); |
| | | params0.put("groupName", entity.getName()); |
| | | List<PowerNetDropdownEntity> list = powerNetDropdownService.list(params0); |
| | | List<String> points = list.stream().map(item -> { |
| | | return item.getCurCos(); |
| | | }).collect(Collectors.toList()); |
| | | Map<String, Object> pointsRealValue = new HashMap<>(); |
| | | if (!CollectionUtils.isEmpty(points)) { |
| | | pointsRealValue = dataPointApi.queryPointsRealValue(points); |
| | | } |
| | | for (PowerNetDropdownEntity netDropdown : list) { |
| | | PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); |
| | | BigDecimal curCos = BigDecimal.ZERO; |
| | | if (pointsRealValue.get(netDropdown.getCurCos()) != null) { |
| | | curCos = new BigDecimal(pointsRealValue.get(netDropdown.getCurCos()).toString()); |
| | | } |
| | | dto.setCurCos(curCos); |
| | | result.add(dto); |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | @PostMapping("/demand-query/list") |
| | | @Operation(summary = "负荷移植-功率因数查询") |
| | | public CommonResult<List<PowerNetDropdownDTO>> getDemandDropdownList(@RequestBody PowerDemandQueryDTO queryDto) { |
| | | List<PowerNetDropdownDTO> result = new ArrayList<>(); |
| | | if (StringUtils.isBlank(queryDto.getCode())) { |
| | | log.info("code isBlank"); |
| | | } |
| | | log.info("code=" + queryDto.getCode()); |
| | | if (StringUtils.isBlank(queryDto.getNodeCode())) { |
| | | log.info("NodeCode isBlank"); |
| | | } |
| | | PowerDemandEntity entity = powerDemandService.getByCode(queryDto.getCode()); |
| | | if (entity == null) { |
| | | log.info("PowerDemandEntity is null"); |
| | | return success(result); |
| | | } |
| | | Map<String, Object> params0 = new HashMap<>(); |
| | | params0.put("groupName", entity.getName()); |
| | | List<PowerNetDropdownEntity> list = powerNetDropdownService.list(params0); |
| | | List<String> points = list.stream().map(item -> { |
| | | return item.getCurCos(); |
| | | }).collect(Collectors.toList()); |
| | | if (queryDto.getCurCos() == null) { |
| | | log.info("查询当前值"); |
| | | Map<String, Object> pointsRealValue = new HashMap<>(); |
| | | if (!CollectionUtils.isEmpty(points)) { |
| | | pointsRealValue = dataPointApi.queryPointsRealValue(points); |
| | | } |
| | | for (PowerNetDropdownEntity netDropdown : list) { |
| | | PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); |
| | | BigDecimal curCos = BigDecimal.ZERO; |
| | | if (pointsRealValue.get(netDropdown.getCurCos()) != null) { |
| | | curCos = new BigDecimal(pointsRealValue.get(netDropdown.getCurCos()).toString()); |
| | | } |
| | | dto.setMaxDemand(String.valueOf(max)); |
| | | dto.setCurCos(curCos); |
| | | result.add(dto); |
| | | } |
| | | } else { |
| | | log.info("查询历史值"); |
| | | String nodeCode = queryDto.getNodeCode(); |
| | | if (StringUtils.isBlank(nodeCode)) { |
| | | log.info("nodeCode isBlank"); |
| | | return success(result); |
| | | } |
| | | PowerNetDropdownEntity powerNetDropdownEntity = powerNetDropdownService.getByNodeCode(nodeCode); |
| | | if (powerNetDropdownEntity == null) { |
| | | log.info("PowerNetDropdownEntity is null"); |
| | | return success(result); |
| | | } |
| | | ApiPointsValueQueryDTO valueQueryDTO = new ApiPointsValueQueryDTO(); |
| | | valueQueryDTO.setPointNos(points); |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | Date startTime = queryDto.getStartTime(); |
| | | Date endTime = queryDto.getEndTime(); |
| | | if (endTime == null) { |
| | | endTime = calendar.getTime(); |
| | | } |
| | | if (startTime == null) { |
| | | calendar.add(Calendar.DAY_OF_YEAR, -1); |
| | | startTime = calendar.getTime(); |
| | | } |
| | | valueQueryDTO.setStart(startTime); |
| | | valueQueryDTO.setEnd(endTime); |
| | | Map<String, List<Map<String, Object>>> pointsHisValues = dataPointApi.queryPointsHistoryValue(valueQueryDTO); |
| | | if (CollectionUtils.isEmpty(pointsHisValues)) { |
| | | log.info("pointsHisValues is null"); |
| | | return success(result); |
| | | } |
| | | |
| | | ApiPointValueQueryDTO pointValueQueryDTO = new ApiPointValueQueryDTO(); |
| | | pointValueQueryDTO.setStart(startTime); |
| | | pointValueQueryDTO.setEnd(endTime); |
| | | pointValueQueryDTO.setPointNo(powerNetDropdownEntity.getCurCos()); |
| | | List<ApiPointValueDTO> hisValue = dataPointApi.queryPointHistoryValue(pointValueQueryDTO); |
| | | if (CollectionUtils.isEmpty(hisValue)) { |
| | | log.info("hisValue is null"); |
| | | } |
| | | ApiPointValueDTO curValue = null; |
| | | Collections.reverse(hisValue); |
| | | for (ApiPointValueDTO valueDTO : hisValue) { |
| | | curValue = valueDTO; |
| | | if ((queryDto.getCurCos().doubleValue() - valueDTO.getV()) <= 0.0001) { |
| | | break; |
| | | } |
| | | } |
| | | if (curValue == null) { |
| | | log.info("curValue is null"); |
| | | return success(result); |
| | | } |
| | | log.info("curValue=" + curValue); |
| | | for (PowerNetDropdownEntity netDropdown : list) { |
| | | PowerNetDropdownDTO dto = ConvertUtils.sourceToTarget(netDropdown, PowerNetDropdownDTO.class); |
| | | |
| | | if (CollectionUtils.isEmpty(pointsHisValues.get(netDropdown.getCurCos()))) { |
| | | continue; |
| | | } |
| | | Map<String, BigDecimal> pointValueMap = new HashMap<>(); |
| | | pointsHisValues.get(netDropdown.getCurCos()).forEach(item -> { |
| | | pointValueMap.put(item.get("time").toString(), DecimalUtil.toBigDecimal(item.get("value"))); |
| | | |
| | | }); |
| | | dto.setCurCos(pointValueMap.get(DateUtils.format(curValue.getT(),DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND))); |
| | | result.add(dto); |
| | | } |
| | | } |
| | | |
| | | return success(result); |
| | | } |
| | | |
| | |
| | | @Operation(summary = "功率因数-根据nodeName获取最近1440min历史数据,月最大,最小值") |
| | | public CommonResult<PowerHistoryDTO> getPowerHistoryData(@RequestBody PowerNetFactorHisReqDTO dto) { |
| | | log.info("PowerNetFactorHisReqDTO=" + JSONObject.toJSONString(dto)); |
| | | PowerHistoryDTO result = new PowerHistoryDTO(); |
| | | String nodeCode = dto.getNodeCode(); |
| | | if (StringUtils.isBlank(nodeCode)) { |
| | | return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); |
| | |
| | | if (StringUtils.isBlank(queryType)) { |
| | | return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); |
| | | } |
| | | PowerNetFactorEntity powerNetFactor = powerNetFactorService.getByNodeCode(nodeCode); |
| | | PowerHistoryDTO result = new PowerHistoryDTO(); |
| | | if (powerNetFactor == null) { |
| | | PowerNetFactorQuery powerNetFactorQuery = null; |
| | | PowerNetFactorEntity powerNetFactorEntity = powerNetFactorService.getByNodeCode(nodeCode); |
| | | PowerNetDropdownEntity powerNetDropdownEntity = powerNetDropdownService.getByNodeCode(nodeCode); |
| | | if (powerNetFactorEntity != null) { |
| | | powerNetFactorQuery = ConvertUtils.sourceToTarget(powerNetFactorEntity, PowerNetFactorQuery.class); |
| | | } else if (powerNetDropdownEntity != null) { |
| | | powerNetFactorQuery = ConvertUtils.sourceToTarget(powerNetDropdownEntity, PowerNetFactorQuery.class); |
| | | } |
| | | if (powerNetFactorQuery == null) { |
| | | log.info("powerNetFactor is null"); |
| | | return success(result); |
| | | } |
| | | log.info("开始查询,"); |
| | | |
| | | ApiPointValueQueryDTO apiPointValueQueryDTO = new ApiPointValueQueryDTO(); |
| | | String pointNo = ""; |
| | | switch (queryType.toUpperCase()) { |
| | | case "P": |
| | | pointNo = powerNetFactor.getCurP(); |
| | | pointNo = powerNetFactorQuery.getCurP(); |
| | | break; |
| | | case "Q": |
| | | pointNo = powerNetFactor.getCurQ(); |
| | | pointNo = powerNetFactorQuery.getCurQ(); |
| | | break; |
| | | case "COS": |
| | | pointNo = powerNetFactor.getCurCos(); |
| | | pointNo = powerNetFactorQuery.getCurCos(); |
| | | break; |
| | | default: |
| | | break; |