Эх сурвалжийг харах

商户设备在线数统计

hechunping 2 жил өмнө
parent
commit
f26e09ae8c

+ 1 - 0
device-api-service/src/main/java/com/xy/mapper/DeviceInfoMapper.java

@@ -36,4 +36,5 @@ public interface DeviceInfoMapper extends BaseMapper<DeviceInfo> {
      */
     List<DeviceInfoDto.MercHomeCountVO> merHomeCountList(@Param("query") DeviceInfoDto.MercHomeQueryDTO queryDTO);
 
+    List<DeviceInfoDto.NetStateCount> netStateCount(@Param("mercId") Long mercId);
 }

+ 21 - 16
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -75,37 +75,42 @@ import static com.xy.utils.PlusBeans.*;
 @Api(tags = "设备-信息")
 public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceInfo> implements DeviceInfoService {
 
+    /**
+     * 质检商户code
+     */
+    public static final String QA_MERC_CODE = "10001";
     private final MercFeignService mercFeignService;
     private final DeviceSysinfoServiceImpl deviceSysinfoService;
-
     private final DeviceStatusServiceImpl deviceStatusService;
-
     private final DeviceRegisterServiceImpl deviceRegisterService;
-
     private final DeviceEventMsgServiceImpl deviceEventMsgService;
-
     private final DeviceDataServiceImpl deviceDataService;
-
     private final DeviceTempRecordsServiceImpl deviceTempRecordsService;
-
     private final DeviceNetRecordServiceImpl deviceNetRecordService;
-
     private final GoodsDeviceService goodsDeviceService;
-
     private final FileExportService fileExportService;
-
     private final RedisService<String> redisService;
-
     private final GoodsService goodsService;
-
     private final OrderRefundService refundService;
-
     private final String keyPrefix = "device:history:";
-    /**
-     * 质检商户code
-     */
-    public static final String QA_MERC_CODE = "10001";
 
+    @Override
+    @ApiOperation("设备在线数查询")
+    public R<DeviceInfoDto.NetStateCountVo> netStateCount(DeviceInfoDto.NetStateCountDto dto) {
+        List<DeviceInfoDto.NetStateCount> netStateCountList = baseMapper.netStateCount(dto.getMercId());
+        Integer count = 0;
+        DeviceInfoDto.NetStateCountVo vo = new DeviceInfoDto.NetStateCountVo();
+        for (DeviceInfoDto.NetStateCount i : netStateCountList) {
+            count += i.getCount();
+            if ("1".equals(i.getNetState())) {
+                vo.setOnLineCount(i.getCount());
+            } else if ("2".equals(i.getNetState())) {
+                vo.setOffLineCount(i.getCount());
+            }
+        }
+        vo.setCount(count);
+        return R.ok(vo);
+    }
 
     @Override
     @ApiOperation("分页")

+ 115 - 61
device-api-service/src/main/resources/mapper/DeviceInfoMapper.xml

@@ -86,59 +86,98 @@
 
     <!-- 分页查询 -->
     <select id="queryPage" resultMap="queryPageMap">
-        select
-        info.*,
-        dr.register_num, dr.device_sn as dr_device_sn, dr.device_pc, dr.asset_no, dr.create_time as
-        dr_create_time, dr.create_user,
-        sysinfo.device_sn as sysinfo_device_sn, sysinfo.android_start_app_version, sysinfo.android_version,
-        sysinfo.android_root_state, sysinfo.android_model, sysinfo.sys_launcher,
-        sysinfo.sys_timezone, sysinfo.sys_datetimeauto, sysinfo.sys_timezhoneauto, sysinfo.app_upm_version,
-        sysinfo.app_downm_version, sysinfo.sim_iccid, sysinfo.sim_isp,
-        sysinfo.sim_company, sysinfo.disk_space, sysinfo.memery_space, sysinfo.create_time as sysinfo_create_time,
-        status.sys_start_time, status.sys_cur_time, status.sys_power, status.wifi_open, status.blooth_open,
-        status.net_state, status.net_type, status.net_dbm, status.door_state_l,
-        status.door_state_r, status.lock_state_l, status.lock_state_r, status.temp_value, status.temp_state,
-        status.voice_volume, status.light_main, status.light_second, status.disk_space as status_disk_space,
-        status.disk_remain_space, status.memery_remain_space, status.camera_l_main_state,
-        status.camera_l_second_state, status.camera_r_main_state, status.camera_r_second_state,
-        status.device_state_l, status.device_state_r, status.update_time as status_update_time,
-        status.stock, status.after_fill_stock, status.stock_status,
-        mp.place_name,
-        ml.line_name as place_line_name,
-        sr.name as district_name
+        select info.*,
+               dr.register_num,
+               dr.device_sn        as dr_device_sn,
+               dr.device_pc,
+               dr.asset_no,
+               dr.create_time      as
+                                      dr_create_time,
+               dr.create_user,
+               sysinfo.device_sn   as sysinfo_device_sn,
+               sysinfo.android_start_app_version,
+               sysinfo.android_version,
+               sysinfo.android_root_state,
+               sysinfo.android_model,
+               sysinfo.sys_launcher,
+               sysinfo.sys_timezone,
+               sysinfo.sys_datetimeauto,
+               sysinfo.sys_timezhoneauto,
+               sysinfo.app_upm_version,
+               sysinfo.app_downm_version,
+               sysinfo.sim_iccid,
+               sysinfo.sim_isp,
+               sysinfo.sim_company,
+               sysinfo.disk_space,
+               sysinfo.memery_space,
+               sysinfo.create_time as sysinfo_create_time,
+               status.sys_start_time,
+               status.sys_cur_time,
+               status.sys_power,
+               status.wifi_open,
+               status.blooth_open,
+               status.net_state,
+               status.net_type,
+               status.net_dbm,
+               status.door_state_l,
+               status.door_state_r,
+               status.lock_state_l,
+               status.lock_state_r,
+               status.temp_value,
+               status.temp_state,
+               status.voice_volume,
+               status.light_main,
+               status.light_second,
+               status.disk_space   as status_disk_space,
+               status.disk_remain_space,
+               status.memery_remain_space,
+               status.camera_l_main_state,
+               status.camera_l_second_state,
+               status.camera_r_main_state,
+               status.camera_r_second_state,
+               status.device_state_l,
+               status.device_state_r,
+               status.update_time  as status_update_time,
+               status.stock,
+               status.after_fill_stock,
+               status.stock_status,
+               mp.place_name,
+               ml.line_name        as place_line_name,
+               sr.name             as district_name
         <if test="queryPage.lon != null and queryPage.lon != ''">
-            ,ROUND(
-            6378.138 * 2 * ASIN(
-            SQRT(
-            POW(
-            SIN(
-            (
-            #{queryPage.lat} * PI() / 180 - info.lat * PI() / 180
-            ) / 2
-            ),
-            2
-            ) + COS(#{queryPage.lat} * PI() / 180) * COS(info.lat * PI() / 180) * POW(
-            SIN(
-            (
-            #{queryPage.lon} * PI() / 180 - info.lon * PI() / 180
-            ) / 2
-            ),
-            2
-            )
-            )
-            ) * 1000
-            ) AS m
+            ,
+                ROUND(
+                            6378.138 * 2 * ASIN(
+                                SQRT(
+                                            POW(
+                                                    SIN(
+                                                                (
+                                                                    #{queryPage.lat} * PI() / 180 - info.lat * PI() / 180
+                                                                    ) / 2
+                                                        ),
+                                                    2
+                                                ) +
+                                            COS(#{queryPage.lat} * PI() / 180) * COS(info.lat * PI() / 180) * POW(
+                                                    SIN(
+                                                                (
+                                                                    #{queryPage.lon} * PI() / 180 - info.lon * PI() / 180
+                                                                    ) / 2
+                                                        ),
+                                                    2
+                                                )
+                                    )
+                            ) * 1000
+                    ) AS m
         </if>
         from device_info info
-        join device_sysinfo sysinfo on(info.device_id = sysinfo.device_id)
-        join device_status status on(info.device_id = status.device_id)
-        join device_register dr on(info.device_id = dr.device_id)
-        left join merc mr on(info.merc_id = mr.id)
-        left join merc_place mp on(info.place_id = mp.id)
-        left join merc_line ml on(info.place_line_id = ml.id)
-        left join sys_region sr on(info.district_id = sr.id)
-        where
-        1 = 1
+                 join device_sysinfo sysinfo on (info.device_id = sysinfo.device_id)
+                 join device_status status on (info.device_id = status.device_id)
+                 join device_register dr on (info.device_id = dr.device_id)
+                 left join merc mr on (info.merc_id = mr.id)
+                 left join merc_place mp on (info.place_id = mp.id)
+                 left join merc_line ml on (info.place_line_id = ml.id)
+                 left join sys_region sr on (info.district_id = sr.id)
+        where 1 = 1
 
         <if test="queryPage.isBindMerc != null">
             <choose>
@@ -155,9 +194,10 @@
         </if>
         <if test="queryPage.deviceIdName != null and queryPage.deviceIdName != ''">
             and (
-            LOCATE(#{queryPage.deviceIdName}, info.device_id) > 0 or LOCATE(#{queryPage.deviceIdName}, info.device_name)
-            > 0
-            )
+                        LOCATE(#{queryPage.deviceIdName}, info.device_id) > 0 or
+                        LOCATE(#{queryPage.deviceIdName}, info.device_name)
+                            > 0
+                )
         </if>
         <if test="queryPage.deviceId != null">
             and LOCATE(#{queryPage.deviceId}, info.device_id) > 0
@@ -174,9 +214,10 @@
         </if>
         <if test="queryPage.no != null and queryPage.no != ''">
             and (
-            LOCATE(#{queryPage.no}, info.merc_device_code) > 0 or LOCATE(#{queryPage.no}, sysinfo.device_sn) > 0 or
-            LOCATE(#{queryPage.no}, sysinfo.sim_iccid) > 0
-            )
+                        LOCATE(#{queryPage.no}, info.merc_device_code) > 0 or
+                        LOCATE(#{queryPage.no}, sysinfo.device_sn) > 0 or
+                        LOCATE(#{queryPage.no}, sysinfo.sim_iccid) > 0
+                )
         </if>
         <if test="queryPage.activeState != null">
             and info.active_state = #{queryPage.activeState}
@@ -207,9 +248,10 @@
         </if>
         <if test="queryPage.merc != null and queryPage.merc != ''">
             and (
-            info.merc_id = #{queryPage.merc} or info.merc_code = #{queryPage.merc} or LOCATE(#{queryPage.merc}, mr.name)
-            > 0
-            )
+                        info.merc_id = #{queryPage.merc} or info.merc_code = #{queryPage.merc} or
+                        LOCATE(#{queryPage.merc}, mr.name)
+                            > 0
+                )
         </if>
         <if test="queryPage.placeId != null">
             and info.place_id = #{queryPage.placeId}
@@ -258,11 +300,11 @@
 
     <!--  小程序首页设备列表线路分组  -->
     <select id="merHomeCountList" resultType="com.xy.dto.DeviceInfoDto$MercHomeCountVO">
-        select count(*) deviceNum, IFNULL(place_line_id,-1) placeLineId
+        select count(*) deviceNum, IFNULL(place_line_id, -1) placeLineId
         from device_info
 
         <where>
-            active_state='1'
+            active_state = '1'
             <if test="query.mercId != null">
                 and merc_id = #{query.mercId}
             </if>
@@ -275,4 +317,16 @@
         </where>
         group by place_line_id
     </select>
+    <select id="netStateCount" resultType="com.xy.dto.DeviceInfoDto$NetStateCount">
+        SELECT net_state, count(*) as count
+        FROM device_info d
+                 LEFT JOIN device_status s ON s.device_id = d.device_id
+        <where>
+            active_state = '1'
+            <if test="mercId != null">
+                and merc_id = #{mercId}
+            </if>
+        </where>
+        GROUP BY net_state
+    </select>
 </mapper>

+ 27 - 0
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -38,6 +38,33 @@ public class DeviceInfoDto {
      */
     public final static String CLEAR = "clear";
 
+    @Data
+    @Accessors(chain = true)
+    public static class NetStateCount {
+        @ApiModelProperty("网络状态")
+        private String netState;
+
+        @ApiModelProperty("数量")
+        private Integer count;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class NetStateCountDto {
+        @ApiModelProperty("商户ID")
+        private Long mercId;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class NetStateCountVo {
+        @ApiModelProperty("总数")
+        private Integer count = 0;
+        @ApiModelProperty("在线数")
+        private Integer onLineCount = 0;
+        @ApiModelProperty("离线数")
+        private Integer offLineCount = 0;
+    }
     @Data
     @Accessors(chain = true)
     public static class Obj {

+ 2 - 0
device-api/src/main/java/com/xy/service/DeviceInfoService.java

@@ -23,6 +23,8 @@ import java.util.Map;
 @RestMappingController("device-info")
 public interface DeviceInfoService {
 
+    @PostMapping("netStateCount")
+    R<DeviceInfoDto.NetStateCountVo> netStateCount(@RequestBody DeviceInfoDto.NetStateCountDto dto);
     /**
      * 查询对象
      *