Bladeren bron

流量卡计费

李进 1 jaar geleden
bovenliggende
commit
e74fa64ba0

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

@@ -1,7 +1,10 @@
 package com.xy.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.xy.dto.DeviceSimDto;
 import com.xy.entity.DeviceSim;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +16,12 @@ import com.xy.entity.DeviceSim;
  */
 public interface DeviceSimMapper extends BaseMapper<DeviceSim> {
 
+    /**
+     * 分页查询
+     *
+     * @param page
+     * @param queryPage
+     * @return
+     */
+    IPage<DeviceSimDto.PageVo> page(IPage page, @Param("queryPage") DeviceSimDto.Page queryPage);
 }

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

@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xy.mapper.DeviceSimMapper">
+
+    <resultMap id="queryPageMap" type="com.xy.dto.DeviceSimDto$PageVo">
+        <association property="deviceInfo" javaType="com.xy.dto.DeviceInfoDto$Vo">
+            <id column="device_id" property="deviceId"/>
+            <result column="device_name" property="deviceName"/>
+            <result column="lon" property="lon"/>
+            <result column="lat" property="lat"/>
+            <result column="device_type" property="deviceType"/>
+            <result column="merc_device_code" property="mercDeviceCode"/>
+            <result column="merc_id" property="mercId"/>
+            <result column="merc_code" property="mercCode"/>
+            <result column="place_id" property="placeId"/>
+            <result column="place_line_id" property="placeLineId"/>
+            <result column="district_id" property="districtId"/>
+            <result column="active_state" property="activeState"/>
+            <result column="active_time" property="activeTime"/>
+            <result column="busy_state" property="busyState"/>
+            <result column="show_status" property="showStatus"/>
+            <result column="freeze_status" property="freezeStatus"/>
+            <result column="device_img" property="deviceImg"/>
+            <result column="update_time" property="updateTime"/>
+            <result column="merc_name" property="mercName"/>
+            <result column="create_time" property="createTime"/>
+            <association property="deviceStatus" javaType="com.xy.dto.DeviceStatusDto$Vo">
+                <result column="net_state" property="netState"/>
+            </association>
+        </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" />
+        </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
+        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)
+        join device_sim dsim on(dsim.id = dsys.sim_iccid)
+        where
+        1 = 1
+        <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 test="queryPage.chargingStatus != null and queryPage.chargingStatus != ''">
+            <!-- 即将过期 -->
+            <if test="queryPage.chargingStatus == 1">
+                and dsim.timeout >= #{queryPage.thisTime} and dc.timeout &lt;= #{queryPage.theTime}
+            </if>
+            <!-- 已过期 -->
+            <if test="queryPage.chargingStatus == 2">
+                and dsim.timeout &lt;= #{queryPage.thisTime}
+            </if>
+        </if>
+        order by dsim.timeout asc
+    </select>
+</mapper>

+ 36 - 3
device-api-service/src/main/java/com/xy/service/DeviceSimServiceImpl.java

@@ -1,27 +1,34 @@
 package com.xy.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yitter.idgen.YitIdHelper;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.list.JList;
 import com.xy.collections.map.JMap;
+import com.xy.device.EnumDeviceCharging;
+import com.xy.device.EnumSimConfig;
+import com.xy.dto.DeviceChargingDto;
 import com.xy.dto.DeviceSimDto;
 import com.xy.entity.DeviceSim;
 import com.xy.entity.DeviceSimCharge;
 import com.xy.mapper.DeviceSimMapper;
-import com.xy.utils.DataTime;
-import com.xy.utils.Emptys;
-import com.xy.utils.R;
+import com.xy.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
+
 
 /**
  * <p>
@@ -87,4 +94,30 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
         updateBatchById(deviceSims);
         return R.ok();
     }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<DeviceSimDto.PageVo>> page(@RequestBody DeviceSimDto.Page page) {
+        Integer value = SysDictUtils.getValue(EnumSimConfig.Code.CODE.getCode(), EnumSimConfig.N_200.getCode(), Integer.class);
+        String theTime = DataTime.getStringAround(0, 0, value, 0, 0, 0);
+        page.setThisTime(LocalDateTime.now()).setTheTime(DataTime.toLocal(theTime));
+        IPage<DeviceSimDto.PageVo> iPage = baseMapper.page(toIPage(page.getPage()), page);
+        List<DeviceSimDto.PageVo> records = iPage.getRecords();
+        if (Emptys.check(records)) {
+            //封装过期状态说明
+            records.forEach(record -> {
+                String timeoutStatus;
+                DeviceSimDto.Vo sim = record.getSim();
+                LocalDateTime timeout = sim.getTimeout();
+                long s = DataTime.diff(page.getThisTime(), timeout, "s");
+                if (s <= 0) {
+                    timeoutStatus = "欠费(" + (~(s / 86400 - 1)) + "天)";
+                } else {
+                    timeoutStatus = s <= value * 86400 ? "即将到期(" + s / 86400 + "天)" : "正常(" + s / 86400 + "天)";
+                }
+                record.getSim().setTimeoutStatus(timeoutStatus);
+            });
+        }
+        return R.ok(toPageBean(iPage));
+    }
 }

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

@@ -1,6 +1,7 @@
 package com.xy.dto;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xy.utils.PageBean;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
@@ -68,6 +69,26 @@ public class DeviceSimDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class Page {
+
+        @ApiModelProperty("分页对象")
+        private PageBean page;
+
+        @ApiModelProperty("流量卡id")
+        private String simId;
+
+        @ApiModelProperty("状态类型 字典=device_charging_query_type")
+        private Integer chargingStatus;
+
+        @ApiModelProperty(hidden = true)
+        private LocalDateTime thisTime;
+
+        @ApiModelProperty(hidden = true)
+        private LocalDateTime theTime;
+    }
+
     @Data
     @Accessors(chain = true)
     public static class Vo {
@@ -98,7 +119,24 @@ public class DeviceSimDto {
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
         private LocalDateTime updateTime;
 
-
+        @ApiModelProperty(value = "过期状态说明")
+        private String timeoutStatus;
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class PageVo {
+
+        @ApiModelProperty(value = "流量卡信息")
+        private Vo sim;
+
+        @ApiModelProperty(value = "设备信息")
+        private DeviceInfoDto.Vo deviceInfo;
+
+        @ApiModelProperty(value = "计费标准金额/年")
+        private Integer chargingMoney;
+
+        @ApiModelProperty(value = "计费标准说明")
+        private String chargingName;
+    }
 }