瀏覽代碼

控制额定功率

shiyue 1 年之前
父節點
當前提交
5e8e7bcb5f

+ 1 - 0
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windenginegroup/WindEngineGroupCreateDto.java

@@ -46,6 +46,7 @@ public class WindEngineGroupCreateDto {
      * 额定容量
      */
     @ApiModelProperty("额定容量")
+    @NotNull(message = "额定容量不能为空")
     private Double ratedCapacity;
     /**
      * 海拔高度

+ 2 - 1
energy-manage-service/src/main/java/com/energy/manage/service/domain/dto/windenginegroup/WindEngineGroupUpdateDto.java

@@ -33,13 +33,14 @@ public class WindEngineGroupUpdateDto {
     /**
      * 机型编号uuid
      */
-    @NotEmpty(message = "机型编号不能为空")
+    @NotNull(message = "机型编号不能为空")
     @ApiModelProperty("机型编号uuid")
     private String millTypeCode;
     /**
      * 额定容量
      */
     @ApiModelProperty("额定容量")
+    @NotNull(message = "额定容量不能为空")
     private Double ratedCapacity;
     /**
      * 海拔高度

+ 43 - 2
energy-manage-service/src/main/java/com/energy/manage/service/service/windenginegroup/impl/WindEngineGroupServiceImpl.java

@@ -1,6 +1,7 @@
 package com.energy.manage.service.service.windenginegroup.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.alibaba.excel.EasyExcel;
 import com.energy.manage.common.base.BaseServiceImpl;
 import com.energy.manage.common.base.Page;
@@ -39,6 +40,7 @@ import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 import tk.mybatis.mapper.entity.Example;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -182,7 +184,7 @@ public class WindEngineGroupServiceImpl extends BaseServiceImpl<WindEngineGroupP
         Example.Criteria criteria = queryExample.createCriteria();
         criteria.andEqualTo("engineCode", windEngineGroupCodeDto.getEngineCode());
 
-        if (windEngineGroupMapper.updateByExampleSelective(po,queryExample) <= 0) {
+        if (windEngineGroupMapper.updateByExampleSelective(po, queryExample) <= 0) {
             return false;
         }
 
@@ -222,12 +224,51 @@ public class WindEngineGroupServiceImpl extends BaseServiceImpl<WindEngineGroupP
 
     @Override
     public boolean updateWindEngineGroup(WindEngineGroupUpdateDto windEngineGroupUpdateDto) {
+
         WindEngineGroupPO po = new WindEngineGroupPO();
         BeanUtil.copyProperties(windEngineGroupUpdateDto, po);
         Example queryExample = new Example(WindEngineGroupPO.class);
         Example.Criteria criteria = queryExample.createCriteria();
         criteria.andEqualTo("engineCode", windEngineGroupUpdateDto.getEngineCode());
-        return windEngineGroupMapper.updateByExampleSelective(po, queryExample) > 0;
+
+        // 查询当前风机信息
+        WindEngineGroupPO windEngineGroupPO = new WindEngineGroupPO();
+        windEngineGroupPO.setEngineCode(windEngineGroupUpdateDto.getEngineCode());
+        WindEngineGroupPO windEngineGroup = windEngineGroupMapper.selectOne(windEngineGroupPO);
+
+        if (windEngineGroupMapper.updateByExampleSelective(po, queryExample) <= 0) {
+            return false;
+        }
+
+        // 处理总额定功率
+        outerLoop:
+        if (windEngineGroup.getRatedCapacity().doubleValue() == windEngineGroupUpdateDto.getRatedCapacity().doubleValue()) {
+            return true;
+        } else {
+            WindFieldCodeDto windFieldCodeDto = new WindFieldCodeDto();
+            windFieldCodeDto.setFieldCode(windEngineGroup.getFieldCode());
+            WindFieldVo windFieldVo = windFieldService.getWindFieldVo(windFieldCodeDto);
+            if (windFieldVo == null) {
+                break outerLoop;
+            }
+            WindFieldUpdateDto windFieldUpdateDto = new WindFieldUpdateDto();
+            windFieldUpdateDto.setFieldCode(windFieldCodeDto.getFieldCode());
+            double value = windFieldVo.getRatedCapacityNumber() == null ? 0 : windFieldVo.getRatedCapacityNumber().doubleValue();
+            if (windEngineGroup.getRatedCapacity().doubleValue() < windEngineGroupUpdateDto.getRatedCapacity().doubleValue()) {
+                double less = NumberUtil.round(windEngineGroupUpdateDto.getRatedCapacity().doubleValue() - windEngineGroup.getRatedCapacity().doubleValue(),2).doubleValue();
+                windFieldUpdateDto.setRatedCapacityNumber(value + less);
+                windFieldService.updateWindField(windFieldUpdateDto);
+            }
+            if (windEngineGroup.getRatedCapacity().doubleValue() > windEngineGroupUpdateDto.getRatedCapacity().doubleValue()) {
+                double greater =  NumberUtil.round(windEngineGroup.getRatedCapacity().doubleValue() - windEngineGroupUpdateDto.getRatedCapacity().doubleValue(),2).doubleValue();
+                if (value > windEngineGroup.getRatedCapacity()) {
+                    windFieldUpdateDto.setRatedCapacityNumber(value - greater);
+                    windFieldService.updateWindField(windFieldUpdateDto);
+                }
+            }
+        }
+
+        return true;
     }
 
     @Override