Selaa lähdekoodia

流量卡查询重写

李进 1 vuosi sitten
vanhempi
commit
7fa28e2874

+ 8 - 0
device-api-service/src/main/java/com/xy/mapper/DeviceSimMapper.java

@@ -28,6 +28,14 @@ public interface DeviceSimMapper extends BaseMapper<DeviceSim> {
      */
     IPage<DeviceSimDto.PageVo> page(IPage page, @Param("queryPage") DeviceSimDto.Page queryPage);
 
+    /**
+     * 数量查询
+     *
+     * @param queryPage
+     * @return
+     */
+    int pageCount(@Param("queryPage") DeviceSimDto.PageCount queryPage);
+
     /**
      * 全量查询
      *

+ 78 - 17
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceSimMapper.xml

@@ -31,37 +31,41 @@
         </association>
         <association property="sim" javaType="com.xy.dto.DeviceSimDto$Vo">
             <id column="id" property="id"/>
-            <result column="type" property="type" />
-            <result column="activate_time" property="activateTime" />
-            <result column="timeout" property="timeout" />
-            <result column="last_renewal_time" property="lastRenewalTime" />
+            <result column="type" property="type"/>
+            <result column="activate_time" property="activateTime"/>
+            <result column="timeout" property="timeout"/>
+            <result column="last_renewal_time" property="lastRenewalTime"/>
+            <result column="dsim_create_time" property="createTime"/>
         </association>
     </resultMap>
 
     <select id="page" resultMap="queryPageMap">
         select di.*,
         ds.net_state,
-        dsim.id, dsim.type, dsim.activate_time, dsim.timeout, dsim.last_renewal_time,
+        dsim.id, dsim.type, dsim.activate_time, dsim.timeout, dsim.last_renewal_time, dsim.create_time as dsim_create_time,
         dsys.sim_iccid
         from device_info di
         join device_status ds on (di.device_id = ds.device_id)
         join device_sysinfo dsys on(di.device_id = dsys.device_id)
-        <if test="queryPage.isActivate == null or queryPage.isActivate == false">
-            left join device_sim dsim on(dsim.id = dsys.sim_iccid)
+        <if test="queryPage.isBind == false">
+            right join device_sim dsim on(dsim.id = dsys.sim_iccid)
         </if>
-        <if test="queryPage.isActivate != null and queryPage.isActivate == true">
+        <if test="queryPage.isBind == true">
             join device_sim dsim on(dsim.id = dsys.sim_iccid)
         </if>
         where
-        dsys.sim_iccid is not null
-        <if test="queryPage.isActivate != null and queryPage.isActivate == false">
-            and dsim.id is null
+        1 = 1
+        <if test="queryPage.isBind == false">
+            and di.device_id is null
         </if>
-        <if test="queryPage.mercId != null">
-            and di.merc_id = #{queryPage.mercId}
-        </if>
-        <if test="queryPage.deviceId != null">
-            and di.device_id = #{queryPage.deviceId}
+        <if test="queryPage.isBind == true">
+            and dsys.sim_iccid is not null
+            <if test="queryPage.mercId != null">
+                and di.merc_id = #{queryPage.mercId}
+            </if>
+            <if test="queryPage.deviceId != null">
+                and di.device_id = #{queryPage.deviceId}
+            </if>
         </if>
         <if test="queryPage.simId != null and queryPage.simId != ''">
             and dsim.id = #{queryPage.simId}
@@ -76,15 +80,72 @@
                 and dsim.timeout &lt;= #{queryPage.thisTime}
             </if>
         </if>
+        <if test="queryPage.isActivate != null">
+            <if test="queryPage.isActivate == true">
+                and dsim.activate_time is not null
+            </if>
+            <if test="queryPage.isActivate == false">
+                and dsim.activate_time is null
+            </if>
+        </if>
         order by dsim.timeout asc
     </select>
 
+    <select id="pageCount" resultType="int">
+        select count(*)
+        from device_info di
+        join device_status ds on (di.device_id = ds.device_id)
+        join device_sysinfo dsys on(di.device_id = dsys.device_id)
+        <if test="queryPage.isBind == false">
+            right join device_sim dsim on(dsim.id = dsys.sim_iccid)
+        </if>
+        <if test="queryPage.isBind == true">
+            join device_sim dsim on(dsim.id = dsys.sim_iccid)
+        </if>
+        where
+        1 = 1
+        <if test="queryPage.isBind == false">
+            and di.device_id is null
+        </if>
+        <if test="queryPage.isBind == true">
+            and dsys.sim_iccid is not null
+            <if test="queryPage.mercId != null">
+                and di.merc_id = #{queryPage.mercId}
+            </if>
+            <if test="queryPage.deviceId != null">
+                and di.device_id = #{queryPage.deviceId}
+            </if>
+        </if>
+        <if test="queryPage.simId != null and queryPage.simId != ''">
+            and dsim.id = #{queryPage.simId}
+        </if>
+        <if test="queryPage.chargingStatus != null and queryPage.chargingStatus != ''">
+            <!-- 即将过期 -->
+            <if test="queryPage.chargingStatus == 1">
+                and dsim.timeout >= #{queryPage.thisTime} and dsim.timeout &lt;= #{queryPage.theTime}
+            </if>
+            <!-- 已过期 -->
+            <if test="queryPage.chargingStatus == 2">
+                and dsim.timeout &lt;= #{queryPage.thisTime}
+            </if>
+        </if>
+        <if test="queryPage.isActivate != null">
+            <if test="queryPage.isActivate == true">
+                and dsim.activate_time is not null
+            </if>
+            <if test="queryPage.isActivate == false">
+                and dsim.activate_time is null
+            </if>
+        </if>
+    </select>
+
     <select id="deviceSimTimeout" resultType="java.lang.Long">
         select merc_id
         from device_sysinfo dsi
         join device_info di on(dsi.device_id = di.device_id)
         join device_sim dsim on(dsi.sim_iccid = dsim.id)
-        left join merc_msg_info mmi on(di.merc_id = mmi.merc_id and mmi.create_time >= #{query.mmiTime} and mmi.type = 2 and mmi.work_type = #{query.workType})
+        left join merc_msg_info mmi on(di.merc_id = mmi.merc_id and mmi.create_time >= #{query.mmiTime} and mmi.type = 2
+        and mmi.work_type = #{query.workType})
         where
         mmi.id is null
         <if test="query.begin != null">

+ 48 - 1
device-api-service/src/main/java/com/xy/service/DeviceSimServiceImpl.java

@@ -30,6 +30,7 @@ import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -124,7 +125,7 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
 
     @PostMapping("page")
     @ApiOperation("分页查询")
-    public R<PageBean<DeviceSimDto.PageVo>> page(@RequestBody DeviceSimDto.Page page) {
+    public R<PageBean<DeviceSimDto.PageVo>> page(@RequestBody @Validated DeviceSimDto.Page page) {
         Map<String, SysDictRedis> simConfig = SysDictUtils.get(EnumSimConfig.Code.CODE.getCode());
         Integer value = Integer.valueOf(simConfig.get(EnumSimConfig.N_200.getCode()).getValue());
         String theTime = DataTime.getStringAround(0, 0, value, 0, 0, 0);
@@ -155,6 +156,51 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
         return R.ok(toPageBean(iPage));
     }
 
+    @PostMapping("pageCount")
+    @ApiOperation("分页数量查询")
+    public R<DeviceSimDto.PageCountVo> pageCount(@RequestBody @Validated DeviceSimDto.PageCount pageCount) {
+        Map<String, SysDictRedis> simConfig = SysDictUtils.get(EnumSimConfig.Code.CODE.getCode());
+        Integer value = Integer.valueOf(simConfig.get(EnumSimConfig.N_200.getCode()).getValue());
+        String theTime = DataTime.getStringAround(0, 0, value, 0, 0, 0);
+        //并行数据
+        DeviceSimDto.PageCountVo pageCountVo = new DeviceSimDto.PageCountVo();
+        ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, 4)
+                .execute(() -> {
+                    //即将过期
+                    DeviceSimDto.PageCount paramsObj = Beans.copy(DeviceSimDto.PageCount.class, pageCount)
+                            .setChargingStatus(1)
+                            .setThisTime(LocalDateTime.now())
+                            .setTheTime(DataTime.toLocal(theTime));
+                    int count = baseMapper.pageCount(paramsObj);
+                    pageCountVo.setBeTimeoutCount(count);
+                })
+                .execute(() -> {
+                    //已过期
+                    DeviceSimDto.PageCount paramsObj = Beans.copy(DeviceSimDto.PageCount.class, pageCount)
+                            .setChargingStatus(2)
+                            .setThisTime(LocalDateTime.now())
+                            .setTheTime(DataTime.toLocal(theTime));
+                    int count = baseMapper.pageCount(paramsObj);
+                    pageCountVo.setTimeoutCount(count);
+                })
+                .execute(() -> {
+                    //已激活
+                    DeviceSimDto.PageCount paramsObj = Beans.copy(DeviceSimDto.PageCount.class, pageCount)
+                            .setIsActivate(true);
+                    int count = baseMapper.pageCount(paramsObj);
+                    pageCountVo.setIsActivate(count);
+                })
+                .execute(() -> {
+                    //未激活
+                    DeviceSimDto.PageCount paramsObj = Beans.copy(DeviceSimDto.PageCount.class, pageCount)
+                            .setIsActivate(false);
+                    int count = baseMapper.pageCount(paramsObj);
+                    pageCountVo.setIsNotActivate(count);
+                })
+                .end();
+        return R.ok(pageCountVo);
+    }
+
     @SneakyThrows
     @ApiOperation("导出流量卡数据")
     @PostMapping("download")
@@ -244,6 +290,7 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
                 }
                 DeviceSim deviceSim = new DeviceSim()
                         .setId(uploadSim.getSimId().trim().replace("\"", "").replace("'", ""))
+                        .setType(uploadSim.getType())
                         .setActivateTime(DataTime.toLocal(uploadSim.getActivateTime()))
                         .setTimeout(DataTime.toLocal(uploadSim.getTimeout()))
                         .setCreateTime(now)

+ 52 - 1
device-api/src/main/java/com/xy/dto/DeviceSimDto.java

@@ -73,6 +73,10 @@ public class DeviceSimDto {
     @Accessors(chain = true)
     public static class Page {
 
+        @NotNull(message = "isBind不能为空")
+        @ApiModelProperty("是否绑定")
+        private Boolean isBind;
+
         @ApiModelProperty("分页对象")
         private PageBean page;
 
@@ -88,14 +92,44 @@ public class DeviceSimDto {
         @ApiModelProperty("状态类型 字典=device_charging_query_type")
         private Integer chargingStatus;
 
+        @ApiModelProperty("是否激活")
+        private Boolean isActivate;
+
         @ApiModelProperty(hidden = true)
         private LocalDateTime thisTime;
 
         @ApiModelProperty(hidden = true)
         private LocalDateTime theTime;
+    }
 
-        @ApiModelProperty("是否激活")
+    @Data
+    @Accessors(chain = true)
+    public static class PageCount {
+
+        @NotNull(message = "isBind不能为空")
+        @ApiModelProperty("是否绑定")
+        private Boolean isBind;
+
+        @ApiModelProperty("流量卡id")
+        private String simId;
+
+        @ApiModelProperty("设备id")
+        private Long deviceId;
+
+        @ApiModelProperty("商户id")
+        private Long mercId;
+
+        @ApiModelProperty(value = "状态类型", hidden = true)
+        private Integer chargingStatus;
+
+        @ApiModelProperty(value = "是否激活", hidden = true)
         private Boolean isActivate;
+
+        @ApiModelProperty(hidden = true)
+        private LocalDateTime thisTime;
+
+        @ApiModelProperty(hidden = true)
+        private LocalDateTime theTime;
     }
 
     @Data
@@ -151,4 +185,21 @@ public class DeviceSimDto {
         @ApiModelProperty(value = "系统表流量卡号")
         private String simIccid;
     }
+
+    @Data
+    @Accessors(chain = true)
+    public static class PageCountVo {
+
+        @ApiModelProperty(value = "即将到期条数")
+        private int beTimeoutCount;
+
+        @ApiModelProperty(value = "到期条数")
+        private int timeoutCount;
+
+        @ApiModelProperty(value = "已激活条数")
+        private int isActivate;
+
+        @ApiModelProperty(value = "未激活条数")
+        private int isNotActivate;
+    }
 }