Browse Source

根据数据权限获取设备数量

hym 3 năm trước cách đây
mục cha
commit
13b7d9344a

+ 7 - 0
smart-city-platform/src/main/java/com/bz/smart_city/controller/PlatformApiController.java

@@ -66,6 +66,13 @@ public class PlatformApiController {
         List<Map<String,Object>> result=platformAapiService.getDeviceStatus(args);
         return new AjaxMessage<>(ResultStatus.OK,result);
     }
+    @GetMapping  ("/getDeviceStatistics")
+    @ApiOperation(value = "设备数量统计")
+    public AjaxMessage getDeviceStatistics () {
+        Map<String,Object> args=new HashMap<>();
+        List<Map<String,Object>> result=platformAapiService.getDeviceStatistics(args);
+        return new AjaxMessage<>(ResultStatus.OK,result);
+    }
 
     @GetMapping  ("/testKafka")
     public void testKafka(String meterNo,String meterStatus){

+ 3 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dao/DeviceMapper.java

@@ -178,5 +178,8 @@ public interface DeviceMapper {
 
     void updateMeterNo(@Param("meterNo") String meterNo, @Param("meterCode") String meterCode,
                        @Param("customerId")int customerId);
+
+    long statisticsEquipmentTotal(@Param("programItems") List<ProgramItemDto> programItems);
+
 }
 

+ 6 - 4
smart-city-platform/src/main/java/com/bz/smart_city/dao/UserMapper.java

@@ -1,11 +1,9 @@
 package com.bz.smart_city.dao;
 
+import com.bz.smart_city.dto.ProgramItemDto;
 import com.bz.smart_city.dto.UserRoleDto;
 import com.bz.smart_city.dto.UserTypeDto;
-import com.bz.smart_city.entity.ConfigPlatformUser;
-import com.bz.smart_city.entity.Person;
-import com.bz.smart_city.entity.Role;
-import com.bz.smart_city.entity.User;
+import com.bz.smart_city.entity.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -79,5 +77,9 @@ public interface UserMapper {
     int bindUniqId(@Param("phone") String phone,@Param("uniqId")  String uniqId);
 
     ConfigPlatformUser findPlatformUserConfig(@Param("tenantId") String tenantId);
+
+
+
+    List<ProgramItemDto> findTenantAuthority();
 }
 

+ 4 - 1
smart-city-platform/src/main/java/com/bz/smart_city/dto/ProgramItemDto.java

@@ -13,7 +13,10 @@ public class ProgramItemDto {
 
     @ApiModelProperty(value = "维度id值")
     private int dimensionValue;
-
+    @ApiModelProperty(value = "维度代码")
+    private String dimensionCode;
     @ApiModelProperty(value = "生效维度ID集合")
     private String dimensionName;
+    @ApiModelProperty(value = "租户id")
+    private String tenantId;
 }

+ 3 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/PlatformAapiService.java

@@ -14,4 +14,7 @@ public interface PlatformAapiService {
 
 
     List<Map<String, Object>> getDeviceStatus(Map<String, Object> args);
+
+
+    List<Map<String, Object>> getDeviceStatistics(Map<String, Object> args);
 }

+ 28 - 8
smart-city-platform/src/main/java/com/bz/smart_city/service/sync/PlatformAapiServiceImpl.java

@@ -3,11 +3,11 @@ package com.bz.smart_city.service.sync;
 import com.bz.smart_city.dao.CustomerMapper;
 import com.bz.smart_city.dao.DeviceMapper;
 import com.bz.smart_city.dao.OperatingValveRecordMapper;
+import com.bz.smart_city.dao.UserMapper;
 import com.bz.smart_city.dao.assistant.InstallListMapper;
 import com.bz.smart_city.dao.assistant.InstallPlanMapper;
-import com.bz.smart_city.entity.Customer;
-import com.bz.smart_city.entity.Device;
-import com.bz.smart_city.entity.OperatingValveRecord;
+import com.bz.smart_city.dto.ProgramItemDto;
+import com.bz.smart_city.entity.*;
 import com.bz.smart_city.entity.assistant.InstallPlan;
 import com.bz.smart_city.service.DeviceService;
 import com.bz.smart_city.service.PlatformAapiService;
@@ -15,10 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Service
 public class PlatformAapiServiceImpl implements PlatformAapiService {
@@ -32,6 +30,8 @@ public class PlatformAapiServiceImpl implements PlatformAapiService {
     private OperatingValveRecordMapper operatingValveRecordMapper;
     @Autowired
     private InstallListMapper installListMapper;
+    @Autowired
+    private UserMapper userMapper;
     @Override
     public void updateMeterNo(String meterNo, String meterCode, String customerNo) {
         Customer customer = customerMapper.findBySiteIdAndCustomerNo(null, customerNo);
@@ -80,10 +80,30 @@ public class PlatformAapiServiceImpl implements PlatformAapiService {
     public  List<Map<String, Object>> getDeviceStatus(Map<String, Object> args) {
         String customerNo= (String) args.get("customerNo");
         List<String>electronicMeterNos= (List<String>) args.get("electronicMeterNos");
-        List<Map<String,Object>> result=operatingValveRecordMapper.getDeviceStatus(electronicMeterNos,customerNo);
+        ;
+        return operatingValveRecordMapper.getDeviceStatus(electronicMeterNos,customerNo);
+    }
+
+    @Override
+    public List<Map<String, Object>> getDeviceStatistics(Map<String, Object> args) {
+        List<ProgramItemDto>programItemDtos = userMapper.findTenantAuthority();
+        List<Map<String, Object>>result=new ArrayList<>();
+        Map<String, List<ProgramItemDto>> detailmap = programItemDtos.stream()
+                .collect(Collectors.groupingBy(d -> d.getTenantId() ));
+        Iterator<Map.Entry<String, List<ProgramItemDto>>> iterator = detailmap.entrySet().iterator();
+        while (iterator.hasNext()){
+            Map<String, Object>countInfo=new HashMap<>();
+            Map.Entry<String, List<ProgramItemDto>> next = iterator.next();
+            long count=deviceMapper.statisticsEquipmentTotal(next.getValue());
+            countInfo.put("tenantId",next.getKey());
+            countInfo.put("userMeterCount",count);
+            result.add(countInfo);
+        }
+        // ;
         return result;
     }
 
+
     private Device getDevice(String meterNo, String customerNo){
         Device device=null;
         List<String>fileNo=new ArrayList<>();

+ 12 - 0
smart-city-platform/src/main/resources/mapper/DeviceMapper.xml

@@ -1217,6 +1217,18 @@
         and sil.metercode in
             <foreach collection="fileNo" item="item" open="(" separator="," close=")">#{item}</foreach>
     </select>
+    <select id="statisticsEquipmentTotal" resultType="java.lang.Long">
+        select count(*)
+        from sc_device sd
+
+        left join sc_device_dimension sdd on (sdd.device_id = sd.id and sdd.status = 1)
+        where sd.status = 1
+        <if test="programItems != null and programItems.size() != 0"> and
+            <foreach collection="programItems" item="item" open="(" separator=" or " close=")">
+                sdd.${item.dimensionCode} = #{item.dimensionValue}
+            </foreach>
+        </if>
+    </select>
     <update id="updateMeterNo">
         update sc_device set metercode=#{meterNo}
         where metercode=#{meterNo} and customer_id=#{customerId}

+ 10 - 0
smart-city-platform/src/main/resources/mapper/UserMapper.xml

@@ -535,6 +535,16 @@
     <select id="findPlatformUserConfig" resultType="com.bz.smart_city.entity.ConfigPlatformUser">
         select * from sc_config_platform_user where tenant_id=#{tenantId}
     </select>
+    <select id="findTenantAuthority" resultType="com.bz.smart_city.dto.ProgramItemDto">
+        select
+            spi.id,
+            spi.dimension_id,
+            spi.dimension_code,
+            spi.dimension_value, a.tenant_id from
+            sc_program_item spi join sc_config_platform_user a
+            on (spi.status=1 and spi.program_id=a.program_id)
+
+    </select>
 
 
 </mapper>