Selaa lähdekoodia

Merge branch 'master' into prod

lijin 1 vuosi sitten
vanhempi
commit
25085fbc57

+ 1 - 1
device-api-service-merc-mini/src/main/java/com/xy/controller/MercMiniDeviceController.java

@@ -352,7 +352,7 @@ public class MercMiniDeviceController {
     @PostMapping("updateInfo")
     public R updateInfo(@RequestBody @Validated MercMiniDeviceDto.UpdateInfo dto) {
         DeviceInfo deviceInfo = deviceInfoService.getById(dto.getDeviceId());
-        if (!Emptys.check(deviceInfo) || Objects.equals(deviceInfo.getDeviceId(), MercAuthUtils.getMercId())) {
+        if (!Emptys.check(deviceInfo) || !Objects.equals(deviceInfo.getMercId(), MercAuthUtils.getMercId())) {
             return R.fail("设备不存在");
         }
         DeviceInfoDto.Update update = copy(DeviceInfoDto.Update.class, dto);

+ 34 - 15
device-api-service/src/main/java/com/xy/mapper/mapper/DeviceSimMapper.xml

@@ -1,7 +1,6 @@
 <?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">
         <result column="sim_iccid" property="simIccid"/>
         <association property="deviceInfo" javaType="com.xy.dto.DeviceInfoDto$Vo">
@@ -45,7 +44,8 @@
         SELECT
         di.*,
         ds.net_state,
-        dsim.id, dsim.type, dsim.activate_time, dsim.timeout, dsim.last_renewal_time, dsim.create_time as dsim_create_time, dsim.is_test, dsim.wait_handle,
+        dsim.id, dsim.type, dsim.activate_time, dsim.timeout, dsim.last_renewal_time, dsim.create_time as
+        dsim_create_time, dsim.is_test, dsim.wait_handle,
         dsys.sim_iccid
         FROM
         device_sim dsim
@@ -56,16 +56,16 @@
         1 = 1
         <if test="queryPage.isBind == false">
             AND NOT EXISTS (
-                SELECT 1
-                FROM device_sysinfo dsys
-                WHERE dsim.id = dsys.sim_iccid
+            SELECT 1
+            FROM device_sysinfo dsys
+            WHERE dsim.id = dsys.sim_iccid
             )
         </if>
         <if test="queryPage.isBind == true">
             AND EXISTS (
-                SELECT 1
-                FROM device_sysinfo dsys
-                WHERE dsim.id = dsys.sim_iccid
+            SELECT 1
+            FROM device_sysinfo dsys
+            WHERE dsim.id = dsys.sim_iccid
             )
             <if test="queryPage.mercId != null">
                 and di.merc_id = #{queryPage.mercId}
@@ -169,9 +169,10 @@
         join device_sim dsim on(dsi.sim_iccid = dsim.id)
         where
         NOT EXISTS (
-            SELECT 1
-            FROM merc_msg_info mmi
-            WHERE di.merc_id = mmi.merc_id and mmi.create_time >= #{query.mmiTime} and mmi.type = 2 and mmi.work_type = #{query.workType}
+        SELECT 1
+        FROM merc_msg_info mmi
+        WHERE di.merc_id = mmi.merc_id and mmi.create_time >= #{query.mmiTime} and mmi.type = 2 and mmi.work_type =
+        #{query.workType}
         )
         <if test="query.begin != null">
             and dsim.timeout >= #{query.begin}
@@ -186,16 +187,34 @@
         select
         (select count(*)
         from device_info di
-				join device_sysinfo ds on(di.device_id = ds.device_id)
+        join device_sysinfo ds on(di.device_id = ds.device_id)
         join device_sim dsim on(ds.sim_iccid = dsim.id)
         where
-        di.merc_id = #{query.mercId} and dsim.timeout >= #{query.begin1} and dsim.timeout &lt;= #{query.end1}) as beTimeoutCout,
+        dsim.timeout >= #{query.begin1} and dsim.timeout &lt;= #{query.end1}
+        <if test="query.mercId != null">
+            and di.merc_id = #{query.mercId}
+        </if>
+        ) as beTimeoutCout,
         (select count(*)
         from device_info di
-				join device_sysinfo ds on(di.device_id = ds.device_id)
+        join device_sysinfo ds on(di.device_id = ds.device_id)
         join device_sim dsim on(ds.sim_iccid = dsim.id)
         where
-        di.merc_id = #{query.mercId} and dsim.timeout &lt;= #{query.end2}) as timeoutCout
+        dsim.timeout &lt;= #{query.end2}
+        <if test="query.mercId != null">
+            and di.merc_id = #{query.mercId}
+        </if>
+        ) as timeoutCout,
+        (select count(*)
+        from device_info di
+        join device_sysinfo ds on(di.device_id = ds.device_id)
+        join device_sim dsim on(ds.sim_iccid = dsim.id)
+        <where>
+            <if test="query.mercId != null">
+                and di.merc_id = #{query.mercId}
+            </if>
+        </where>
+        ) as totalNum
         from dual
     </select>
 </mapper>

+ 43 - 6
device-api-service/src/main/java/com/xy/service/DeviceDataServiceImpl.java

@@ -2,23 +2,23 @@ package com.xy.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.map.JConcurrentHashMap;
 import com.xy.collections.map.JHashMap;
 import com.xy.collections.map.JMap;
+import com.xy.device.EnumDeviceActiveStatus;
+import com.xy.device.EnumDeviceBusyStatus;
 import com.xy.device.EnumDeviceDataType;
 import com.xy.device.EnumDeviceOnlineStatus;
-import com.xy.dto.DeviceDataDto;
-import com.xy.dto.DeviceInfoDto;
-import com.xy.entity.DeviceData;
-import com.xy.entity.DeviceInfo;
-import com.xy.entity.DeviceStatus;
-import com.xy.entity.SysDictRedis;
+import com.xy.dto.*;
+import com.xy.entity.*;
 import com.xy.mapper.DeviceDataMapper;
 import com.xy.utils.*;
 import io.swagger.annotations.Api;
@@ -34,6 +34,7 @@ import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -58,6 +59,8 @@ public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceD
 
     private final DeviceInfoServiceImpl deviceInfoService;
     private final DeviceStatusServiceImpl deviceStatusService;
+    private final OrdersService ordersService;
+    private final DeviceChargingServiceImpl deviceChargingService;
 
     /**
      * 设备统计
@@ -468,4 +471,38 @@ public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceD
             return R.ok();
         }
     }
+
+
+    @ApiOperation("设备统计-运营概况")
+    @PostMapping("countDevice")
+    R<DeviceDataDto.CountVO> countDevice(@RequestBody DeviceDataDto.CountDTO dto) {
+        DeviceDataDto.CountVO vo = new DeviceDataDto.CountVO();
+        Integer timeType = dto.getTimeType();
+        int day = 0;
+        if (timeType == 1) {
+            //天
+            day = 1;
+        } else if (timeType == 2) {
+            //周
+            day = 7;
+        } else if (timeType == 3) {
+            //月
+            day = 30;
+        }
+        Date now = DateUtil.date();
+        Date queryDate = DateUtil.offsetDay(now, -day);
+        //新增
+        Long newAdd = deviceInfoService.count(Wrappers.<DeviceInfo>lambdaQuery()
+                .ge(DeviceInfo::getCreateTime, queryDate).eq(DeviceInfo::getActiveState, EnumDeviceActiveStatus.N_1.getCode()));
+        vo.setNewNum(newAdd.intValue());
+        //活跃 产生订单的
+        Integer activeNum = R.feignCheckData(ordersService.deviceActiveCount(new CountDto.MercCountDTO().setStartTime(queryDate)));
+        vo.setActiveNum(activeNum);
+        //设备管理费
+        Long debtNum = deviceChargingService.count(Wrappers.<DeviceCharging>lambdaQuery().lt(DeviceCharging::getTimeout, DateUtil.now()));
+        vo.setDebtNum(debtNum);
+        Long outOfServiceNum = deviceInfoService.count(Wrappers.<DeviceInfo>lambdaQuery().eq(DeviceInfo::getBusyState, EnumDeviceBusyStatus.N_2.getCode()));
+        vo.setOutOfServiceNum(outOfServiceNum.intValue());
+        return R.ok(vo);
+    }
 }

+ 29 - 0
device-api-service/src/main/java/com/xy/service/factory/device/impl/alipay/AliPayOpenDeviceFatoryImpl.java

@@ -58,6 +58,8 @@ public class AliPayOpenDeviceFatoryImpl implements DeviceFactory, SpiDeviceServi
 
     private DeviceMqttSendService deviceMqttSendService;
 
+    private DeviceTempSetServiceImpl deviceTempSetService;
+
     @Override
     public R save(DeviceRegisterDto.Save save) {
         R r = openDeviceFactoryImpl.save(save);
@@ -134,6 +136,33 @@ public class AliPayOpenDeviceFatoryImpl implements DeviceFactory, SpiDeviceServi
                     //温度设置
                     Integer value = data.getInt("target");
                     alipayDeviceService.setAttributes(new DeviceSetAttr().setTerminalId(terminalId).setType("TEMP").setValue(String.valueOf(value)));
+                    //写入记录
+                    try {
+                        DeviceTempSetDto.Save save = new DeviceTempSetDto.Save()
+                                .setDeviceId(commandMqtt.getDeviceId())
+                                .setWorkMode(data.getStr("workModel"))
+                                .setTempValue(data.getInt("target"))
+                                .setTempValue1(data.getInt("target1"))
+                                .setTempValue2(data.getInt("target2"))
+                                .setTempValue3(data.getInt("target3"))
+                                .setJob1StartTime(data.getInt("start1"))
+                                .setJob1EndTime(data.getInt("end1"))
+                                .setJob2StartTime(data.getInt("start2"))
+                                .setJob2EndTime(data.getInt("end2"))
+                                .setJob3StartTime(data.getInt("start3"))
+                                .setJob3EndTime(data.getInt("end3"));
+                        String warningLow = data.getStr("warningLow");
+                        String warningHigh = data.getStr("warningHigh");
+                        if (!warningLow.equals("$warningLow$")) {
+                            save.setWarningLow(Integer.valueOf(warningLow));
+                        }
+                        if (!warningHigh.equals("$warningHigh$")) {
+                            save.setWarningHigh(Integer.valueOf(warningHigh));
+                        }
+                        deviceTempSetService.save(save);
+                    } catch (Exception e) {
+                        log.error("异常{}", templet);
+                    }
                 }
             }
         });

+ 29 - 0
device-api/src/main/java/com/xy/dto/DeviceDataDto.java

@@ -24,6 +24,35 @@ import java.util.List;
  * @since 2023-01-11
  */
 public class DeviceDataDto {
+    @Data
+    @Accessors(chain = true)
+    public static class CountDTO {
+
+        @ApiModelProperty(value = "天=1,周=2,月=3")
+        private Integer timeType;
+
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class CountVO {
+        @ApiModelProperty(value = "新增")
+        private Integer newNum;
+
+
+        @ApiModelProperty(value = "活跃数")
+        private Integer activeNum;
+
+
+        @ApiModelProperty(value = "欠费")
+        private long debtNum;
+
+
+        @ApiModelProperty(value = "停运数量")
+        private Integer outOfServiceNum;
+
+    }
 
     @Data
     @Accessors(chain = true)

+ 0 - 2
device-api/src/main/java/com/xy/dto/DeviceFaultMonitorConfigDto.java

@@ -80,8 +80,6 @@ public class DeviceFaultMonitorConfigDto {
 
         @ApiModelProperty(value = "是否转售后")
         private Boolean toAfterSale;
-
-
     }
 
 }

+ 7 - 4
device-api/src/main/java/com/xy/dto/DeviceSimDto.java

@@ -160,7 +160,7 @@ public class DeviceSimDto {
     @Accessors(chain = true)
     public static class DeviceSimTimeoutCount {
 
-        @NotNull(message = "mercId不能为空")
+
         @ApiModelProperty(value = "商户id")
         private Long mercId;
 
@@ -183,6 +183,9 @@ public class DeviceSimDto {
 
         @ApiModelProperty(value = "欠费条数")
         private Integer timeoutCout;
+
+        @ApiModelProperty(value = "总数")
+        private Integer totalNum;
     }
 
     @Data
@@ -215,15 +218,15 @@ public class DeviceSimDto {
         private Boolean isTest;
 
         public LocalDateTime getActivateTime() {
-            return activateTime == null ? null : activateTime.atTime(0,0,0);
+            return activateTime == null ? null : activateTime.atTime(0, 0, 0);
         }
 
         public LocalDateTime getTimeout() {
-            return timeout == null ? null : timeout.atTime(0,0,0);
+            return timeout == null ? null : timeout.atTime(0, 0, 0);
         }
 
         public LocalDateTime getLastRenewalTime() {
-            return lastRenewalTime == null ? null : lastRenewalTime.atTime(0,0,0);
+            return lastRenewalTime == null ? null : lastRenewalTime.atTime(0, 0, 0);
         }
     }