| | |
| | | package com.iailab.module.ansteel.api.controller.admin; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants; |
| | | import com.iailab.framework.common.pojo.CommonResult; |
| | | import com.iailab.framework.common.util.object.ConvertUtils; |
| | | import com.iailab.module.ansteel.api.dto.PowerCapacitorStatusDTO; |
| | | import com.iailab.module.ansteel.api.dto.PowerControlDetDTO; |
| | | import com.iailab.module.ansteel.api.dto.PowerControlMainDTO; |
| | | import com.iailab.module.ansteel.api.dto.PowerNetFactorDTO; |
| | | import com.iailab.module.ansteel.api.entity.*; |
| | | import com.iailab.module.ansteel.api.service.*; |
| | | import com.iailab.module.ansteel.api.dto.*; |
| | | import com.iailab.module.ansteel.power.entity.*; |
| | | import com.iailab.module.ansteel.power.service.*; |
| | | import com.iailab.module.data.api.point.DataPointApi; |
| | | import com.iailab.module.model.api.mcs.McsApi; |
| | | import com.iailab.module.model.api.mcs.dto.PredictLastValueReqVO; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Random; |
| | | import java.util.*; |
| | | |
| | | import static com.iailab.framework.common.pojo.CommonResult.success; |
| | | |
| | |
| | | @Autowired |
| | | private PowerControlDetService powerControlDetService; |
| | | |
| | | @Autowired |
| | | private PowerGenStatusDaoService powerGenStatusDaoService; |
| | | |
| | | @Resource |
| | | private DataPointApi dataPointApi; |
| | | |
| | | @Resource |
| | | private McsApi mcsApi; |
| | | |
| | | @GetMapping("/net-factor/list") |
| | | @Operation(summary = "功率因数-电网拓扑") |
| | | public CommonResult<List<PowerNetFactorDTO>> getPowerNetFactorList(@RequestParam Map<String, Object> params) { |
| | | List<PowerNetFactorEntity> list = powerNetFactorService.list(params); |
| | | return success(ConvertUtils.sourceToTarget(list, PowerNetFactorDTO.class)); |
| | | List<PowerNetFactorDTO> result = ConvertUtils.sourceToTarget(list, PowerNetFactorDTO.class); |
| | | if (CollectionUtils.isEmpty(result)) { |
| | | return success(result); |
| | | } |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(Calendar.MILLISECOND, 0); |
| | | calendar.set(Calendar.SECOND, 0); |
| | | calendar.set(Calendar.MINUTE, 0); |
| | | calendar.set(Calendar.HOUR_OF_DAY, 0); |
| | | |
| | | for (PowerNetFactorDTO dto : result) { |
| | | try { |
| | | List<String> points = new ArrayList<>(); |
| | | if (StringUtils.isNotBlank(dto.getCurP())) { |
| | | points.add(dto.getCurP()); |
| | | } |
| | | if (StringUtils.isNotBlank(dto.getCurQ())) { |
| | | points.add(dto.getCurQ()); |
| | | } |
| | | if (!CollectionUtils.isEmpty(points)) { |
| | | Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); |
| | | if (pointsRealValue.get(dto.getCurP()) != null) { |
| | | dto.setCurP(pointsRealValue.get(dto.getCurP()).toString()); |
| | | } |
| | | if (pointsRealValue.get(dto.getCurQ()) != null) { |
| | | dto.setCurQ(pointsRealValue.get(dto.getCurQ()).toString()); |
| | | } |
| | | if (pointsRealValue.get(dto.getCurCos()) != null) { |
| | | dto.setCurCos(pointsRealValue.get(dto.getCurCos()).toString()); |
| | | } |
| | | } |
| | | } catch (Exception ex) { |
| | | log.info(dto.getNodeName() + "获取当前值异常" + ex.getMessage()); |
| | | } |
| | | |
| | | try { |
| | | PredictLastValueReqVO reqVO = new PredictLastValueReqVO(); |
| | | reqVO.setPredictTime(calendar.getTime()); |
| | | List<String[]> itemNos = new ArrayList<>(); |
| | | if (StringUtils.isNotBlank(dto.getPreP())) { |
| | | itemNos.add(dto.getPreP().split(",")); |
| | | } |
| | | if (StringUtils.isNotBlank(dto.getPreQ())) { |
| | | itemNos.add(dto.getPreQ().split(",")); |
| | | } |
| | | if (StringUtils.isNotBlank(dto.getPreCos())) { |
| | | itemNos.add(dto.getPreCos().split(",")); |
| | | } |
| | | if (!CollectionUtils.isEmpty(itemNos)) { |
| | | reqVO.setItemNos(itemNos); |
| | | log.info("reqVO=" + JSONObject.toJSONString(reqVO)); |
| | | Map<String, BigDecimal> preValues = mcsApi.getPredictValueByTime(reqVO); |
| | | if (StringUtils.isNotBlank(dto.getPreP()) && preValues.get(dto.getPreP()) != null) { |
| | | dto.setPreP(preValues.get(dto.getPreP()).toString()); |
| | | } |
| | | if (StringUtils.isNotBlank(dto.getPreQ()) && preValues.get(dto.getPreQ()) != null) { |
| | | dto.setPreQ(preValues.get(dto.getPreQ()).toString()); |
| | | } |
| | | if (StringUtils.isNotBlank(dto.getPreCos()) && preValues.get(dto.getPreCos()) != null) { |
| | | dto.setPreCos(preValues.get(dto.getPreCos()).toString()); |
| | | } |
| | | } |
| | | } catch (Exception ex) { |
| | | log.info(dto.getNodeName() + "获取预测值异常," + ex.getMessage()); |
| | | } |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | /** |
| | | * 判断 curCos 是否超上下限 |
| | | * {nodeName}功率因数超上限/下限。 |
| | | * <p> |
| | | * 判断 curQ |
| | | * {nodeName}发生无功返送 |
| | | */ |
| | | @GetMapping("/net-factor/alarm") |
| | | @Operation(summary = "功率因数-电网拓扑预警信息") |
| | | public CommonResult<List<String>> getPowerNetFactorAlarm(@RequestParam Map<String, Object> params) { |
| | | List<String> result = new ArrayList<>(); |
| | | List<PowerNetFactorEntity> list = powerNetFactorService.list(params); |
| | | List<PowerNetFactorDTO> dtoList = ConvertUtils.sourceToTarget(list, PowerNetFactorDTO.class); |
| | | if (CollectionUtils.isEmpty(dtoList)) { |
| | | return success(result); |
| | | } |
| | | for (PowerNetFactorDTO dto : dtoList) { |
| | | List<String> points = new ArrayList<>(); |
| | | String message = ""; |
| | | if (StringUtils.isNotBlank(dto.getCurQ())) { |
| | | points.add(dto.getCurQ()); |
| | | } |
| | | if (StringUtils.isNotBlank(dto.getCurCos())) { |
| | | points.add(dto.getCurCos()); |
| | | } |
| | | if (CollectionUtils.isEmpty(points)) { |
| | | continue; |
| | | } |
| | | |
| | | Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); |
| | | if (pointsRealValue.get(dto.getCurQ()) != null) { |
| | | BigDecimal curQ = new BigDecimal(pointsRealValue.get(dto.getCurQ()).toString()); |
| | | if (curQ.compareTo(BigDecimal.ZERO) == dto.getCurFlag()) { |
| | | message = dto.getNodeName() + "发生无功返送;"; |
| | | } |
| | | } |
| | | if (pointsRealValue.get(dto.getCurCos()) != null) { |
| | | BigDecimal curCos = new BigDecimal(pointsRealValue.get(dto.getCurCos()).toString()); |
| | | if (curCos.compareTo(dto.getLimitH()) > 0) { |
| | | message += dto.getNodeName() + "功率因数超上限"; |
| | | } else if (curCos.compareTo(dto.getLimitL()) < 0) { |
| | | message += dto.getNodeName() + "功率因数超下限"; |
| | | } |
| | | } |
| | | if (!message.isEmpty()) { |
| | | result.add(message); |
| | | } |
| | | } |
| | | return success(result); |
| | | } |
| | | |
| | | @GetMapping("/gen-status/list") |
| | | @Operation(summary = "功率因数-发电机组实时状态") |
| | | public CommonResult<List<PowerGenStatusDTO>> getPowerGenStatusList(@RequestParam Map<String, Object> params) { |
| | | List<PowerGenStatusEntity> list = powerGenStatusDaoService.list(params); |
| | | List<PowerGenStatusDTO> result = ConvertUtils.sourceToTarget(list, PowerGenStatusDTO.class); |
| | | if (CollectionUtils.isEmpty(result)) { |
| | | return success(result); |
| | | } |
| | | for (PowerGenStatusDTO dto : result) { |
| | | List<String> points = new ArrayList<>(); |
| | | if (StringUtils.isNotBlank(dto.getCurP())) { |
| | | points.add(dto.getCurP()); |
| | | } |
| | | if (StringUtils.isNotBlank(dto.getCurQ())) { |
| | | points.add(dto.getCurQ()); |
| | | } |
| | | if (!CollectionUtils.isEmpty(points)) { |
| | | Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); |
| | | if (pointsRealValue.get(dto.getCurP()) != null) { |
| | | dto.setCurP(pointsRealValue.get(dto.getCurP()).toString()); |
| | | } |
| | | if (pointsRealValue.get(dto.getCurQ()) != null) { |
| | | dto.setCurQ(pointsRealValue.get(dto.getCurQ()).toString()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return success(result); |
| | | } |
| | | |
| | | @GetMapping("/capacitor-status/list") |
| | |
| | | return success(ConvertUtils.sourceToTarget(list, PowerControlMainDTO.class)); |
| | | } |
| | | |
| | | @PostMapping("/control-main/update") |
| | | @Operation(summary = "功率因数-管控变电站修改上下限") |
| | | public CommonResult<Boolean> updatePowerControlMain(@RequestBody PowerControlMainDTO dto) { |
| | | if (StringUtils.isBlank(dto.getId())) { |
| | | return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); |
| | | } |
| | | PowerControlMainEntity entity = new PowerControlMainEntity(); |
| | | entity.setId(dto.getId()); |
| | | entity.setLimitH(dto.getLimitH()); |
| | | entity.setLimitL(dto.getLimitL()); |
| | | powerControlMainService.update(entity); |
| | | return success(true); |
| | | } |
| | | |
| | | @GetMapping("/control-det/list") |
| | | @Operation(summary = "功率因数-管控功率因数详情") |
| | | public CommonResult<List<PowerControlDetDTO>> getPowerControlDetList(@RequestParam Map<String, Object> params) { |
| | | List<PowerControlDetDTO> result = new ArrayList<>(); |
| | | String name = (String)params.get("name"); |
| | | String name = (String) params.get("name"); |
| | | if (StringUtils.isBlank(name)) { |
| | | return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST); |
| | | } |