Ver Fonte

综合展示-二供排行

wangyangyang há 4 anos atrás
pai
commit
29f89413f4

+ 23 - 9
sms_water/src/main/java/com/huaxu/controller/ComDisplayController.java

@@ -1,23 +1,18 @@
 package com.huaxu.controller;
 
-import com.huaxu.dto.ComUsageDto;
-import com.huaxu.dto.DeviceDto;
-import com.huaxu.dto.SceneDeviceAttributeDto;
-import com.huaxu.dto.SceneUsageDto;
+import com.huaxu.dto.*;
 import com.huaxu.dto.generalView.WaterSupplyChart;
 import com.huaxu.entity.MonitorDataEntity;
 import com.huaxu.entity.MonitorDataValueEntity;
 import com.huaxu.entity.SceneEntity;
 import com.huaxu.model.AjaxMessage;
 import com.huaxu.model.ResultStatus;
-import com.huaxu.service.DeviceService;
-import com.huaxu.service.MonitorDataReportService;
-import com.huaxu.service.MonitorInfoService;
-import com.huaxu.service.SceneService;
+import com.huaxu.service.*;
 import com.huaxu.util.ByteArrayUtils;
 import com.huaxu.util.RedisUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -44,6 +39,8 @@ public class ComDisplayController {
     private SceneService sceneService;
     @Autowired
     private MonitorInfoService monitorInfoService;
+    @Autowired
+    private OnlineMonitorService onlineMonitorService;
 
     @RequestMapping(value = "waterSupplyCharts", method = RequestMethod.GET)
     @ApiOperation(value = "制水电耗对比曲线图")
@@ -121,5 +118,22 @@ public class ComDisplayController {
         }
         return new AjaxMessage<>(ResultStatus.OK, sceneUsageDto);
     }
-
+    @RequestMapping(value="selectMapForCompany" , method = RequestMethod.GET)
+    @ApiOperation(value = "二供供水排行--分公司")
+    public AjaxMessage<List<MonitorDataCollectDto>> selectMapForCompany(@RequestParam(required = true) Integer companyOrgId) {
+        MonitorDataCollectDto monitorDataCollectDto = new MonitorDataCollectDto();
+        monitorDataCollectDto.setSceneTypeName("泵站");
+        monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(Long.valueOf(companyOrgId)));
+        List<MonitorDataCollectDto> result = onlineMonitorService.selectMapSuspension(monitorDataCollectDto);
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+    @RequestMapping(value="selectMapForWholeCompany" , method = RequestMethod.GET)
+    @ApiOperation(value = "二供供水排行--总公司")
+    public AjaxMessage<List<SecDataCollectDto>> selectMapForWholeCompany() {
+        MonitorDataCollectDto monitorDataCollectDto = new MonitorDataCollectDto();
+        monitorDataCollectDto.setSceneTypeName("泵站");
+        monitorDataCollectDto.setSceneIds(sceneService.findByParentIdsByCom(null));
+        List<SecDataCollectDto> result = onlineMonitorService.selectMapForWholeCompany(monitorDataCollectDto);
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
 }

+ 4 - 0
sms_water/src/main/java/com/huaxu/dto/MonitorDataCollectDto.java

@@ -25,6 +25,10 @@ public class MonitorDataCollectDto {
 
     private static final long serialVersionUID = -3866939316262264972L;
 
+    /** 所属公司 */
+    @ApiModelProperty(value = "所属公司")
+    private Long companyOrgId;
+
     @ApiModelProperty("所属场景id")
     private Long sceneId;
 

+ 19 - 0
sms_water/src/main/java/com/huaxu/dto/SecDataCollectDto.java

@@ -0,0 +1,19 @@
+package com.huaxu.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huaxu.common.converter.Double3Serializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel("监测数据集合")
+@Data
+public class SecDataCollectDto {
+    @ApiModelProperty("公司名称")
+    private String comName;
+    @ApiModelProperty("泵站个数")
+    private Integer count;
+    @JsonSerialize(using = Double3Serializer.class)
+    @ApiModelProperty("今日供水量or今日出水量")
+    private Double yieldWaterUsage;
+}

+ 7 - 0
sms_water/src/main/java/com/huaxu/service/OnlineMonitorService.java

@@ -88,4 +88,11 @@ public interface OnlineMonitorService {
      * @return
      */
     DispatchSummaryDto statsDispatchSummary(MonitorDataCollectDto monitorDataCollectDto);
+
+    /**
+     * 查询供水排行
+     * @param monitorDataCollectDto
+     * @return
+     */
+    List<SecDataCollectDto> selectMapForWholeCompany(MonitorDataCollectDto monitorDataCollectDto);
 }

+ 20 - 1
sms_water/src/main/java/com/huaxu/service/SceneService.java

@@ -239,7 +239,26 @@ public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
         }
         return longs;
     }
-
+    /**
+     * 根据父级ID查询所有子节点及本身
+     */
+    public List<Long> findByParentIdsByCom(Long id) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        SceneEntity scene = new SceneEntity();
+        scene.setTenantId(currentUser.getTenantId());
+        scene.setStatus(1);
+        scene.setCompanyOrgId(id);
+        scene.setProgramItems(currentUser.getProgramItemList());
+        scene.setUserType(currentUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        scene.setPermissonType(currentUser.getPermissonType());
+        List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
+        List<Long> longs = newArrayList();
+        for (SceneEntity item : list) {
+            longs.add(item.getId());
+        }
+        return longs;
+    }
     /**
      * 修改根居ID
      */

+ 55 - 0
sms_water/src/main/java/com/huaxu/service/impl/OnlineMonitorImpl.java

@@ -11,6 +11,7 @@ import com.huaxu.model.Pagination;
 import com.huaxu.service.DeviceAttributeSpecsService;
 import com.huaxu.service.OnlineMonitorService;
 import com.huaxu.util.ByteArrayUtils;
+import com.huaxu.util.OrgInfoUtil;
 import com.huaxu.util.RedisUtil;
 import com.huaxu.util.UserUtil;
 import io.swagger.annotations.ApiModelProperty;
@@ -37,6 +38,8 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
     private DeviceAttributeSpecsService deviceAttributeSpecsService;
     @Autowired
     private RedisUtil redisUtil;
+    @Autowired
+    private OrgInfoUtil orgInfoUtil;
     /**
      * 查询实时报警信息
      * @return
@@ -442,6 +445,58 @@ public class OnlineMonitorImpl implements OnlineMonitorService {
 
         return result;
     }
+
+    @Override
+    public List<SecDataCollectDto> selectMapForWholeCompany(MonitorDataCollectDto monitorDataCollectDto) {
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        monitorDataCollectDto.setTenantId(loginUser.getTenantId());
+        monitorDataCollectDto.setProgramItems(loginUser.getProgramItemList());
+        monitorDataCollectDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        monitorDataCollectDto.setPermissonType(loginUser.getPermissonType());
+        monitorDataCollectDto.setType(3);
+        List<MonitorDataCollectDto> result=onlineMonitorMapper.selectMapSuspension(monitorDataCollectDto);
+        List<SecDataCollectDto> secDataCollectDtos = new ArrayList<>();
+        if(!StringUtils.isEmpty(monitorDataCollectDto.getSceneTypeName()))
+        {
+            monitorDataCollectDto.setType(1);
+            List<MonitorDataCollectDto> calculateRes=onlineMonitorMapper.selectSceneParam(monitorDataCollectDto);
+            GetCalMonitorData(result,calculateRes);
+            Map<Long,SecDataCollectDto> map = new HashMap<>();
+            // 按公司进行汇总
+            for(MonitorDataCollectDto item : result) {
+                if (!map.containsKey(item.getCompanyOrgId())) {
+                    SecDataCollectDto secDataCollectDto = new SecDataCollectDto();
+                    secDataCollectDto.setYieldWaterUsage(item.getYieldWaterUsage());
+                    secDataCollectDto.setCount(1);
+                    //secDataCollectDto.setComName(orgInfoUtil.getOrgName(item.getCompanyOrgId().intValue()));
+                    map.put(item.getCompanyOrgId(), secDataCollectDto);
+                } else {
+                    Double yieldWaterUsage = map.get(item.getCompanyOrgId()).getYieldWaterUsage() != null ? map.get(item.getCompanyOrgId()).getYieldWaterUsage() : 0d;
+                    Integer count = map.get(item.getCompanyOrgId()).getCount() != null ? map.get(item.getCompanyOrgId()).getCount() : 1;
+                    map.get(item.getCompanyOrgId()).setYieldWaterUsage(yieldWaterUsage + (item.getYieldWaterUsage()!=null?item.getYieldWaterUsage():0));
+                    map.get(item.getCompanyOrgId()).setCount(count + 1);
+                }
+            }
+            for (SecDataCollectDto value : map.values()) {
+                secDataCollectDtos.add(value);
+            }
+            //按水量倒序排序 如果是水源按照取水量排序,其他按照供水量
+            secDataCollectDtos.sort(new Comparator<SecDataCollectDto>() {
+                @Override
+                public int compare(SecDataCollectDto o1, SecDataCollectDto o2) {
+                    Double d1= monitorDataCollectDto.getSceneTypeName().equals("水源")?(o1.getYieldWaterUsage()==null?0d:o1.getYieldWaterUsage()):(o1.getYieldWaterUsage()==null?0d:o1.getYieldWaterUsage());
+                    Double d2= monitorDataCollectDto.getSceneTypeName().equals("水源")?(o2.getYieldWaterUsage()==null?0d:o2.getYieldWaterUsage()):(o2.getYieldWaterUsage()==null?0d:o2.getYieldWaterUsage());
+                    if(d1>d2){
+                        return -1;
+                    }
+                    return 0;
+                }
+            });
+        }
+        return secDataCollectDtos;
+    }
+
     /**
      * 获取在线数据及计算数据
      */

+ 2 - 1
sms_water/src/main/resources/mapper/OnlineMonitorMapper.xml

@@ -177,7 +177,8 @@
     <!--查询地图悬浮数据-->
     <select id="selectMapSuspension" resultMap="monitorDataMap">
         select
-        <include refid="Base_Column_List"/>,if (t7.alarm_count>0, 1, 0) scene_state
+        <include refid="Base_Column_List"/>,if (t7.alarm_count>0, 1, 0) scene_state,
+        t1.COMPANY_ORG_ID as "companyOrgId"
         from sms_scene t1
         <include refid="sceneDeviceJoins"/>
         <include refid="sceneAlarmJoins"/>

+ 1 - 0
sms_water/src/main/resources/mapper/SceneMapper.xml

@@ -139,6 +139,7 @@
         <include refid="deviceJoins"/>
         <where>
             a.status=1
+            <if test="scene.companyOrgId != null ">and a.COMPANY_ORG_ID=#{scene.companyOrgId}</if>
             <if test="scene.tenantId != null  and scene.tenantId != ''">and a.tenant_id = #{scene.tenantId}</if>
             <if test="scene.parentSceneIds != null ">and a.parent_scene_ids LIKE #{scene.parentSceneIds}</if>
             <if test="scene.userType!=null and scene.userType!=-999 and scene.userType!=-9999 and  scene.programItems != null and scene.programItems.size() > 0">