Browse Source

Merge remote-tracking branch 'origin/master' into prod

tanbin 1 year ago
parent
commit
46d36b5b30

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

@@ -448,12 +448,12 @@ public class MercMiniDeviceController {
             return R.fail("您输入的授权码有误或者无效!");
         }
         //验证通过,缓存去掉授权码,并更新状态
-        Long mercId = MercAuthUtils.getMercId();
+//        Long mercId = MercAuthUtils.getMercId();
         DeviceBluetoothAuth deviceBluetoothAuth = deviceBluetoothAuthService.getOne(Wrappers.<DeviceBluetoothAuth>lambdaQuery()
-                .eq(DeviceBluetoothAuth::getDeviceId, deviceId)
-                .eq(DeviceBluetoothAuth::getAuthCode, authCode)
-                .eq(DeviceBluetoothAuth::getMercId, mercId)
-                .eq(DeviceBluetoothAuth::getUseStatus, DeviceAuthCodeUseStatus.UN_USED.getCode())
+                        .eq(DeviceBluetoothAuth::getDeviceId, deviceId)
+                        .eq(DeviceBluetoothAuth::getAuthCode, authCode)
+//                .eq(DeviceBluetoothAuth::getMercId, mercId)
+                        .eq(DeviceBluetoothAuth::getUseStatus, DeviceAuthCodeUseStatus.UN_USED.getCode())
         );
         if (deviceBluetoothAuth == null) {
             return R.fail("您输入的授权码无效!");

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

@@ -36,6 +36,23 @@ public interface DeviceSimMapper extends BaseMapper<DeviceSim> {
      */
     int pageCount(@Param("queryPage") DeviceSimDto.PageCount queryPage);
 
+    /**
+     * 数量查询
+     *
+     * @param queryPage
+     * @return
+     */
+    int pageCount2(@Param("queryPage") DeviceSimDto.PageCount queryPage);
+
+    /**
+     * 分页查询
+     *
+     * @param page
+     * @param queryPage
+     * @return
+     */
+    IPage<DeviceSimDto.PageVo> page2(IPage page, @Param("queryPage") DeviceSimDto.Page queryPage);
+
     /**
      * 全量查询
      *
@@ -44,6 +61,14 @@ public interface DeviceSimMapper extends BaseMapper<DeviceSim> {
      */
     List<DeviceSimDto.PageVo> page(@Param("queryPage") DeviceSimDto.Page queryPage);
 
+    /**
+     * 全量查询
+     *
+     * @param queryPage
+     * @return
+     */
+    List<DeviceSimDto.PageVo> page2(@Param("queryPage") DeviceSimDto.Page queryPage);
+
     /**
      * 管流量卡过期
      *

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

@@ -2,6 +2,7 @@
 <!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="device_id" property="deviceId"/>
         <result column="sim_iccid" property="simIccid"/>
         <association property="deviceInfo" javaType="com.xy.dto.DeviceInfoDto$Vo">
             <id column="device_id" property="deviceId"/>
@@ -40,6 +41,61 @@
         </association>
     </resultMap>
 
+    <select id="page2" resultMap="queryPageMap">
+        select
+        di.*,
+        ds.net_state,
+        dsys.sim_iccid, dsys.sim_iccid as id, dsys.sim_isp as type
+        from device_sysinfo dsys
+        join device_info di on(dsys.device_id = di.device_id)
+        join device_status ds on (di.device_id = ds.device_id)
+        where
+        dsys.sim_iccid is not null and di.active_state = 1
+        and NOT EXISTS (
+            SELECT 1
+            FROM device_sim dsim
+            WHERE dsim.id = dsys.sim_iccid
+        )
+        <if test="queryPage.simId != null and queryPage.simId != ''">
+            and dsim.id = #{queryPage.simId}
+        </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>
+        <if test="queryPage.batchNo != null and queryPage.batchNo != ''">
+            and dsim.batch_no = #{queryPage.batchNo}
+        </if>
+    </select>
+
+    <select id="pageCount2" resultType="int">
+        select count(*)
+        from device_sysinfo dsys
+        join device_info di on(dsys.device_id = di.device_id)
+        join device_status ds on (di.device_id = ds.device_id)
+        where
+        dsys.sim_iccid is not null and di.active_state = 1
+        and NOT EXISTS (
+            SELECT 1
+            FROM device_sim dsim
+            WHERE dsim.id = dsys.sim_iccid
+        )
+        <if test="queryPage.simId != null and queryPage.simId != ''">
+            and dsim.id = #{queryPage.simId}
+        </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>
+        <if test="queryPage.batchNo != null and queryPage.batchNo != ''">
+            and dsim.batch_no = #{queryPage.batchNo}
+        </if>
+    </select>
+
     <select id="page" resultMap="queryPageMap">
         SELECT
         di.*,

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

@@ -502,8 +502,8 @@ public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceD
                 .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(DateUtil.format(queryDate, DatePattern.NORM_DATETIME_PATTERN))));
-        vo.setActiveNum(activeNum);
+        //Integer activeNum = R.feignCheckData(ordersService.deviceActiveCount(new CountDto.MercCountDTO().setStartTime(DateUtil.format(queryDate, DatePattern.NORM_DATETIME_PATTERN))));
+        //vo.setActiveNum(activeNum);
         //设备管理费
         Long debtNum = deviceChargingService.count(Wrappers.<DeviceCharging>lambdaQuery().lt(DeviceCharging::getTimeout, DateUtil.now()));
         vo.setDebtNum(debtNum);

+ 65 - 5
device-api-service/src/main/java/com/xy/service/DeviceMqttConsumerImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DatePattern;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.BooleanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
@@ -232,7 +233,7 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
                 Long minuteNum = config.getMinuteNum();
                 Integer faultLevel = config.getFaultLevel();
                 Long monitorId = config.getMonitorId();
-                Boolean toAfterSale = config.getToAfterSale();
+                Boolean toAfterSale = BooleanUtil.isTrue(config.getToAfterSale());
                 // 获取当前时间
                 Date now = DateUtil.date();
 
@@ -266,10 +267,9 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
                         }
                         //累加次数
                         deviceFaultInfo.setEventNum(deviceFaultInfo.getEventNum() + 1).setMonitorId(monitorId);
-
                         deviceFaultInfoService.updateById(deviceFaultInfo);
                     } else {
-                        deviceFaultInfoService.save(new DeviceFaultInfo()
+                        deviceFaultInfo = new DeviceFaultInfo()
                                 .setMercId(mercId)
                                 .setDeviceId(deviceId)
                                 .setDescribes(msg)
@@ -277,10 +277,14 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
                                 .setEventCode(code)
                                 .setEventNum(count.intValue())
                                 .setMonitorId(monitorId)
-                                .setToAfterSale(toAfterSale)
-                        );
+                                .setToAfterSale(toAfterSale);
+                        deviceFaultInfoService.save(deviceFaultInfo);
                         deviceInfoService.updateById(new DeviceInfo().setDeviceId(deviceId).setFaultLevel(faultLevel));
                     }
+                    //给售后推送故障信息
+                    if (toAfterSale.booleanValue()) {
+                        deviceFaultPushMsg(deviceEventMsg);
+                    }
                     //已按最大故障级别排序,所以满足条件就退出循环
                     break;
                 }
@@ -290,6 +294,62 @@ public class DeviceMqttConsumerImpl implements DeviceMqttConsumer {
         }
     }
 
+    /**
+     * 故障推送给所有售后
+     *
+     * @param deviceEventMsg
+     */
+    public void deviceFaultPushMsg(DeviceEventMsgDto.Vo deviceEventMsg) {
+        if (deviceEventMsg != null) {
+            Long deviceId = deviceEventMsg.getDeviceId();
+            Long mercId = deviceEventMsg.getMercId();
+            LocalDateTime createTime = deviceEventMsg.getCreateTime();
+            String msg = deviceEventMsg.getMsg();
+            Long configId = MsgConfigId.DEVICE_EXCEPTION.getId();
+            MsgConfigDto.Vo msgConfig = R.feignCheckData(msgSendApiService.getMsgConfig(new MsgConfigDto.Vo().setId(configId)));
+            List<MsgConfigTestDto.BizParam> bizParams = R.feignCheckData(msgSendApiService.getBizParamByMsgConfig(new MsgConfigTestDto.MsgConfig().setConfigId(configId)));
+            if (CollUtil.isNotEmpty(bizParams) && msgConfig != null) {
+                List<MsgConfigTestDto.BizData> bizDataList = BeanUtil.copyToList(bizParams, MsgConfigTestDto.BizData.class);
+                List<MsgConfigTestDto.BizData> sendList = new ArrayList<>();
+                DeviceInfo deviceInfo = deviceInfoService.getById(deviceId);
+                String deviceName = deviceInfo.getDeviceName();
+                if (StrUtil.isEmpty(deviceName)) {
+                    deviceName = deviceId + "";
+                } else {
+                    deviceName = deviceName + "(" + deviceId + ")";
+                }
+                //TODO 获取售后及售后创建的角色用户
+                UserInfoDto.SaleBackUsersVO saleBackUsersVO = R.feignCheckData(userInfoService.getSaleBackUsers());
+                List<String> mpOpenIds = saleBackUsersVO.getMpOpenIds();
+                if (CollUtil.isNotEmpty(mpOpenIds)) {
+                    Set<String> mpIds = new HashSet<>(mpOpenIds);
+                    for (MsgConfigTestDto.BizData b : bizDataList) {
+                        String channelType = b.getChannelType();
+                        if (Integer.valueOf(channelType).intValue() == ChannelType.OFFICIAL_ACCOUNT.getCode().intValue()) {
+                            //微信公众号
+                            //扩展参数
+                            MsgConfigTestDto.BizExtraParam bizExtraParam = new MsgConfigTestDto.BizExtraParam();
+                            Map<String, Object> params = MapUtil.newHashMap();
+                            params.put("keyword1", deviceName);
+                            params.put("keyword2", msg);
+                            params.put("keyword3", DateUtil.format(createTime, DatePattern.NORM_DATETIME_PATTERN));
+
+                            //商户管理员发
+                            b.setReceivers(mpIds);
+                            b.setTemplateParams(params);
+                            b.setExtraParam(bizExtraParam);
+                            sendList.add(b);
+                        }
+                    }
+                }
+                //是否可推送条件
+                if (CollUtil.isNotEmpty(sendList)) {
+                    msgSendApiService.sendByMsgConfig(new MsgConfigTestDto.SendByMsgConfig().setConfigId(configId).setBizDataList(sendList));
+                }
+            }
+        }
+    }
+
 
     /**
      * 设备联网状态

+ 44 - 7
device-api-service/src/main/java/com/xy/service/DeviceSimServiceImpl.java

@@ -7,6 +7,7 @@ import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.read.listener.ReadListener;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yitter.idgen.YitIdHelper;
 import com.xy.collections.list.JArrayList;
@@ -72,6 +73,14 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
 
     private FileConfig fileConfig;
 
+
+    @PostMapping("countWaitHandle")
+    @ApiOperation("抄送流量卡-运营首页概况")
+    public R<Long> countWaitHandle() {
+        long count = count(Wrappers.<DeviceSim>lambdaQuery().eq(DeviceSim::getWaitHandle, true));
+        return R.ok(count);
+    }
+
     @Override
     @ApiOperation("购买")
     public R pay(DeviceSimDto.Pay pay) {
@@ -178,6 +187,23 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
         return R.ok(toPageBean(iPage));
     }
 
+    @PostMapping("pageByNotInit")
+    @ApiOperation("未初始化分页查询")
+    public R<PageBean<DeviceSimDto.PageVo>> pageByNotInit(@RequestBody DeviceSimDto.Page page) {
+        Map<String, SysDictRedis> simConfig = SysDictUtils.get(EnumSimConfig.Code.CODE.getCode());
+        IPage<DeviceSimDto.PageVo> iPage = baseMapper.page2(toIPage(page.getPage()), page);
+        List<DeviceSimDto.PageVo> records = iPage.getRecords();
+        if (Emptys.check(records)) {
+            String name = simConfig.get(EnumSimConfig.name.getCode()).getValue();
+            Integer money = Integer.valueOf(simConfig.get(EnumSimConfig.money.getCode()).getValue());
+            records.forEach(record -> {
+                //封装计费标准
+                record.setChargingName(name).setChargingMoney(money);
+            });
+        }
+        return R.ok(toPageBean(iPage));
+    }
+
     @PostMapping("pageCount")
     @ApiOperation("分页数量查询")
     public R<DeviceSimDto.PageCountVo> pageCount(@RequestBody @Validated DeviceSimDto.PageCount pageCount) {
@@ -186,7 +212,7 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
         String theTime = DataTime.getStringAround(0, 0, value, 0, 0, 0);
         //并行数据
         DeviceSimDto.PageCountVo pageCountVo = new DeviceSimDto.PageCountVo();
-        ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, 5)
+        ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.DEVICE_COMMON_POLL, 6)
                 .execute(() -> {
                     //全部
                     DeviceSimDto.PageCount paramsObj = Beans.copy(DeviceSimDto.PageCount.class, pageCount);
@@ -225,6 +251,12 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
                     int count = baseMapper.pageCount(paramsObj);
                     pageCountVo.setIsNotActivate(count);
                 })
+                .execute(() -> {
+                    //未初始化
+                    DeviceSimDto.PageCount paramsObj = Beans.copy(DeviceSimDto.PageCount.class, pageCount);
+                    int count = baseMapper.pageCount2(paramsObj);
+                    pageCountVo.setNotInitCount(count);
+                })
                 .end();
         return R.ok(pageCountVo);
     }
@@ -239,11 +271,16 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
         ExcelUtils.SheetAndData<UploadSim> sheetAndData = ExcelUtils.create(path, UploadSim.class);
         sheetAndData.sheet("流量卡数据", () -> {
             //生成导出数据
-            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);
-            download.setThisTime(LocalDateTime.now()).setTheTime(DataTime.toLocal(theTime));
-            List<DeviceSimDto.PageVo> pageVos = baseMapper.page(download);
+            List<DeviceSimDto.PageVo> pageVos;
+            if (download.getIsNotInit()) {
+                pageVos = baseMapper.page2(download);
+            } else {
+                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);
+                download.setThisTime(LocalDateTime.now()).setTheTime(DataTime.toLocal(theTime));
+                pageVos = baseMapper.page(download);
+            }
             List<UploadSim> uploadSims = new ArrayList<>();
             pageVos.forEach(pageVo -> {
                 UploadSim uploadSim = new UploadSim();
@@ -405,4 +442,4 @@ public class DeviceSimServiceImpl extends ServiceImpl<DeviceSimMapper, DeviceSim
         private String isTest;
 
     }
-}
+}

+ 9 - 0
device-api/src/main/java/com/xy/dto/DeviceSimDto.java

@@ -154,6 +154,10 @@ public class DeviceSimDto {
 
         @ApiModelProperty(value = "更新批次号")
         private String updateBatchNo;
+
+
+        @ApiModelProperty(value = "未初始化导出")
+        private Boolean isNotInit = false;
     }
 
     @Data
@@ -291,6 +295,8 @@ public class DeviceSimDto {
 
         @ApiModelProperty(value = "系统表流量卡号")
         private String simIccid;
+
+        private Long deviceId;
     }
 
     @Data
@@ -314,5 +320,8 @@ public class DeviceSimDto {
 
         @ApiModelProperty(value = "待处理条数")
         private int waitHandleCount;
+
+        @ApiModelProperty(value = "未初始化条数")
+        private int notInitCount;
     }
 }