Browse Source

设备管理费修改

李进 2 năm trước cách đây
mục cha
commit
939a7c389e

+ 12 - 0
device-api-service/src/main/java/com/xy/mapper/DeviceChargingMapper.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.DeviceChargingDto;
 import com.xy.entity.DeviceCharging;
+import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
 /**
@@ -21,4 +24,13 @@ public interface DeviceChargingMapper extends BaseMapper<DeviceCharging> {
      */
     @Select("update device_charging set charging_x = charging_x - 1 where charging_x > 0")
     int updateChargingX();
+
+    /**
+     * 分页查询
+     *
+     * @param page
+     * @param queryPage
+     * @return
+     */
+    IPage<DeviceChargingDto.PageVo> page(IPage page, @Param("queryPage") DeviceChargingDto.Page queryPage);
 }

+ 37 - 0
device-api-service/src/main/java/com/xy/service/DeviceChargingHistoryServiceImpl.java

@@ -1,12 +1,31 @@
 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.xy.collections.list.JArrayList;
+import com.xy.collections.list.JList;
+import com.xy.collections.map.JMap;
+import com.xy.dto.DeviceChargingHistoryDto;
+import com.xy.dto.DeviceInfoDto;
 import com.xy.entity.DeviceChargingHistory;
+import com.xy.entity.DeviceInfo;
 import com.xy.mapper.DeviceChargingHistoryMapper;
+import com.xy.utils.Emptys;
+import com.xy.utils.PageBean;
+import com.xy.utils.PlusBeans;
+import com.xy.utils.R;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 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 java.util.List;
+
+import static com.xy.utils.PlusBeans.*;
 
 /**
  * <p>
@@ -21,4 +40,22 @@ import org.springframework.stereotype.Service;
 @Api(tags = "设备计费历史表")
 public class DeviceChargingHistoryServiceImpl extends ServiceImpl<DeviceChargingHistoryMapper, DeviceChargingHistory> implements DeviceChargingHistoryService {
 
+    private DeviceInfoServiceImpl deviceInfoService;
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<DeviceChargingHistoryDto.PageVo>> page(@RequestBody @Validated DeviceChargingHistoryDto.Page page) {
+        //查询设备计费历史
+        LambdaQueryWrapper<DeviceChargingHistory> lambdaQueryWrapper = new LambdaQueryWrapper<DeviceChargingHistory>().eq(DeviceChargingHistory::getDeviceId, page.getDeviceId());
+        IPage<DeviceChargingHistory> iPage = page(PlusBeans.toIPage(page.getPage()), lambdaQueryWrapper);
+        PageBean<DeviceChargingHistoryDto.PageVo> pageVoPageBean = toPageBean(DeviceChargingHistoryDto.PageVo.class, iPage);
+        List<DeviceChargingHistoryDto.PageVo> records = pageVoPageBean.getRecords();
+        if (!Emptys.check(records)) {
+            return R.ok(pageVoPageBean);
+        }
+        //查询设备信息
+        DeviceInfoDto.Vo deviceInfo = deviceInfoService.obj(new DeviceInfoDto.Obj().setDeviceId(page.getDeviceId())).getData();
+        records.forEach(pageVo -> pageVo.setDeviceInfo(deviceInfo));
+        return R.ok(pageVoPageBean);
+    }
 }

+ 48 - 3
device-api-service/src/main/java/com/xy/service/DeviceChargingServiceImpl.java

@@ -1,11 +1,18 @@
 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.xy.dto.DeviceChargingDto;
+import com.xy.dto.DeviceChargingHistoryDto;
+import com.xy.dto.DeviceInfoDto;
 import com.xy.entity.DeviceCharging;
+import com.xy.entity.DeviceChargingHistory;
+import com.xy.entity.SysDictRedis;
 import com.xy.job.DeviceChargingJob;
 import com.xy.mapper.DeviceChargingMapper;
-import com.xy.utils.R;
+import com.xy.utils.*;
+import com.xy.utils.enums.DictEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -15,8 +22,10 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
-import javax.validation.constraints.NotEmpty;
 import java.util.List;
+import java.util.Map;
+
+import static com.xy.utils.PlusBeans.*;
 
 
 /**
@@ -34,11 +43,47 @@ public class DeviceChargingServiceImpl extends ServiceImpl<DeviceChargingMapper,
 
     private DeviceChargingJob deviceChargingJob;
 
-    @ApiOperation("手动计费")
+    private DeviceChargingHistoryServiceImpl deviceChargingHistoryService;
+
     @PostMapping("charging")
+    @ApiOperation("手动计费")
     public R charging(@RequestBody @Validated DeviceChargingDto.Charging charging) {
         List<Long> deviceIds = charging.getDeviceIds();
         deviceChargingJob.deviceCharging(1, deviceIds.size(), deviceIds);
         return R.ok();
     }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<DeviceChargingDto.PageVo>> page(@RequestBody DeviceChargingDto.Page page) {
+        IPage<DeviceChargingDto.PageVo> iPage = baseMapper.page(toIPage(page.getPage()), page);
+        List<DeviceChargingDto.PageVo> records = iPage.getRecords();
+        if (Emptys.check(records)) {
+            Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get(DictEnum.DEVICE_CHARGING.getKey());
+            for (DeviceChargingDto.PageVo record : records) {
+                DeviceInfoDto.Vo deviceInfo = record.getDeviceInfo();
+                //封装最新计费历史信息
+                LambdaQueryWrapper<DeviceChargingHistory> lambdaQueryWrapper = new LambdaQueryWrapper<DeviceChargingHistory>()
+                        .eq(DeviceChargingHistory::getDeviceId, deviceInfo.getDeviceId())
+                        .orderByDesc(DeviceChargingHistory::getCreateTime)
+                        .last("limit 1");
+                DeviceChargingHistory deviceChargingHistory = deviceChargingHistoryService.getOne(lambdaQueryWrapper);
+                if (deviceChargingHistory != null) {
+                    record.setDeviceChargingHistory(copy(DeviceChargingHistoryDto.Vo.class, deviceChargingHistory));
+                }
+                //封装计费标准金额
+                SysDictRedis sysDictRedis = stringSysDictRedisMap.get(deviceInfo.getDeviceType().toString());
+                if (sysDictRedis != null) {
+                    record.setChargingMoney(Integer.valueOf(sysDictRedis.getValue()));
+                }
+                //封装缴费状态
+                DeviceChargingDto.Vo deviceCharging = record.getDeviceCharging();
+                if (deviceCharging != null) {
+                    int contrast = DataTime.stringContrast(DataTime.toString(page.getThisTime()), DataTime.toString(deviceCharging.getTimeout()));
+                    record.setChargingStatus(contrast < 0);
+                }
+            }
+        }
+        return R.ok(toPageBean(iPage));
+    }
 }

+ 59 - 0
device-api-service/src/main/resources/mapper/DeviceChargingMapper.xml

@@ -0,0 +1,59 @@
+<?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.DeviceChargingMapper">
+
+    <resultMap id="queryPageMap" type="com.xy.dto.DeviceChargingDto$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>
+        <association property="deviceCharging" javaType="com.xy.dto.DeviceChargingDto$Vo">
+            <result column="charging_sum_money" property="chargingSumMoney" />
+            <result column="charging_x" property="chargingX" />
+            <result column="timeout" property="timeout" />
+            <result column="charging_create_time" property="createTime" />
+        </association>
+    </resultMap>
+
+    <select id="page" resultMap="queryPageMap">
+        select di.*,
+        dc.charging_sum_money, dc.charging_x, dc.timeout, dc.create_time as charging_create_time
+        from device_info di
+        join device_charging dc on(di.device_id = dc.device_id)
+        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">
+            <if test="queryPage.chargingStatus == true">
+                and dc.timeout &lt;= #{queryPage.thisTime}
+            </if>
+            <if test="queryPage.chargingStatus == false">
+                and dc.timeout >= #{queryPage.thisTime}
+            </if>
+        </if>
+        order by dc.timeout asc
+    </select>
+</mapper>

+ 40 - 0
device-api/src/main/java/com/xy/dto/DeviceChargingDto.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;
@@ -28,6 +29,25 @@ public class DeviceChargingDto {
         private List<Long> deviceIds;
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class Page {
+
+        @ApiModelProperty("分页对象")
+        private PageBean page;
+
+        @ApiModelProperty("商户id")
+        private Long mercId;
+
+        @ApiModelProperty("设备id")
+        private Long deviceId;
+
+        @ApiModelProperty("缴费状态 true=已缴费 false=欠费")
+        private Boolean chargingStatus;
+
+        @ApiModelProperty(value = "当前系统时间", hidden = true)
+        private LocalDateTime thisTime = LocalDateTime.now();
+    }
 
     @Data
     @Accessors(chain = true)
@@ -52,4 +72,24 @@ public class DeviceChargingDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class PageVo {
+
+        @ApiModelProperty(value = "计费信息")
+        private Vo deviceCharging;
+
+        @ApiModelProperty(value = "最新计费历史信息")
+        private DeviceChargingHistoryDto.Vo deviceChargingHistory;
+
+        @ApiModelProperty(value = "设备信息")
+        private DeviceInfoDto.Vo deviceInfo;
+
+        @ApiModelProperty(value = "计费标准金额/年")
+        private Integer chargingMoney;
+
+        @ApiModelProperty("缴费状态 true=已缴费 false=欠费")
+        private Boolean chargingStatus;
+    }
+
 }

+ 21 - 0
device-api/src/main/java/com/xy/dto/DeviceChargingHistoryDto.java

@@ -1,9 +1,11 @@
 package com.xy.dto;
 
+import com.xy.utils.PageBean;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import javax.validation.constraints.NotNull;
 import java.time.LocalDateTime;
 
 /**
@@ -40,4 +42,23 @@ public class DeviceChargingHistoryDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class Page {
+
+        @ApiModelProperty("分页对象")
+        private PageBean page;
+
+        @NotNull(message = "deviceId不能为空")
+        @ApiModelProperty("设备id")
+        private Long deviceId;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class PageVo extends Vo {
+
+        @ApiModelProperty(value = "设备信息")
+        private DeviceInfoDto.Vo deviceInfo;
+    }
 }