Compare commits
2 Commits
d301e9da3c
...
b26cb873b5
Author | SHA1 | Date | |
---|---|---|---|
b26cb873b5 | |||
43f6f2ca0b |
@ -0,0 +1,52 @@
|
|||||||
|
package com.fuyuanshen.app.controller;
|
||||||
|
|
||||||
|
import com.fuyuanshen.common.core.domain.R;
|
||||||
|
import com.fuyuanshen.common.mybatis.core.page.PageQuery;
|
||||||
|
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import com.fuyuanshen.common.web.core.BaseController;
|
||||||
|
import com.fuyuanshen.equipment.domain.dto.AppDeviceBo;
|
||||||
|
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
|
||||||
|
import com.fuyuanshen.equipment.domain.vo.AppDeviceVo;
|
||||||
|
import com.fuyuanshen.equipment.service.DeviceService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.apache.ibatis.annotations.Delete;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APP 设备信息管理
|
||||||
|
*/
|
||||||
|
@Validated
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/app/device")
|
||||||
|
public class AppDeviceController extends BaseController {
|
||||||
|
|
||||||
|
private final DeviceService deviceService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询文件列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/list")
|
||||||
|
public TableDataInfo<AppDeviceVo> list(DeviceQueryCriteria bo, PageQuery pageQuery) {
|
||||||
|
|
||||||
|
return deviceService.queryAppDeviceList(bo,pageQuery);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定设备
|
||||||
|
*/
|
||||||
|
@PostMapping("/bind")
|
||||||
|
public R<Void> bind(@RequestBody AppDeviceBo bo) {
|
||||||
|
return toAjax(deviceService.bindDevice(bo));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 解绑设备
|
||||||
|
*/
|
||||||
|
@Delete("/unBind")
|
||||||
|
public R<Void> unBind(Long id) {
|
||||||
|
return toAjax(deviceService.unBindDevice(id));
|
||||||
|
}
|
||||||
|
}
|
@ -1,58 +0,0 @@
|
|||||||
package com.fuyuanshen.app.service;
|
|
||||||
|
|
||||||
import cn.dev33.satoken.exception.NotLoginException;
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import com.fuyuanshen.app.domain.bo.AppUserBo;
|
|
||||||
import com.fuyuanshen.app.domain.vo.AppRoleVo;
|
|
||||||
import com.fuyuanshen.app.domain.vo.AppUserVo;
|
|
||||||
import com.fuyuanshen.app.domain.vo.DeviceVo;
|
|
||||||
import com.fuyuanshen.common.core.constant.Constants;
|
|
||||||
import com.fuyuanshen.common.core.constant.SystemConstants;
|
|
||||||
import com.fuyuanshen.common.core.constant.TenantConstants;
|
|
||||||
import com.fuyuanshen.common.core.domain.dto.RoleDTO;
|
|
||||||
import com.fuyuanshen.common.core.domain.model.AppLoginUser;
|
|
||||||
import com.fuyuanshen.common.core.domain.model.LoginUser;
|
|
||||||
import com.fuyuanshen.common.core.enums.LoginType;
|
|
||||||
import com.fuyuanshen.common.core.exception.user.UserException;
|
|
||||||
import com.fuyuanshen.common.core.utils.MessageUtils;
|
|
||||||
import com.fuyuanshen.common.core.utils.ServletUtils;
|
|
||||||
import com.fuyuanshen.common.core.utils.SpringUtils;
|
|
||||||
import com.fuyuanshen.common.core.utils.StringUtils;
|
|
||||||
import com.fuyuanshen.common.log.event.LogininforEvent;
|
|
||||||
import com.fuyuanshen.common.mybatis.core.page.PageQuery;
|
|
||||||
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
|
|
||||||
import com.fuyuanshen.common.redis.utils.RedisUtils;
|
|
||||||
import com.fuyuanshen.common.satoken.utils.LoginHelper;
|
|
||||||
import com.fuyuanshen.common.tenant.exception.TenantException;
|
|
||||||
import com.fuyuanshen.common.tenant.helper.TenantHelper;
|
|
||||||
import com.fuyuanshen.system.domain.vo.SysTenantVo;
|
|
||||||
import com.fuyuanshen.system.service.ISysTenantService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 登录校验方法
|
|
||||||
*
|
|
||||||
* @author Lion Li
|
|
||||||
*/
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Slf4j
|
|
||||||
@Service
|
|
||||||
public class DeviceService {
|
|
||||||
|
|
||||||
|
|
||||||
public TableDataInfo<DeviceVo> queryPageList(AppUserBo bo, PageQuery pageQuery) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
@ -300,8 +300,8 @@ file:
|
|||||||
# MQTT配置
|
# MQTT配置
|
||||||
mqtt:
|
mqtt:
|
||||||
username: admin
|
username: admin
|
||||||
password: fys123456
|
password: #YtvpSfCNG
|
||||||
url: tcp://47.107.152.87:1883
|
url: tcp://47.120.79.150:2883
|
||||||
subClientId: fys_subClient_01
|
subClientId: fys_subClient_01
|
||||||
subTopic: worker/alert/#,worker/location/#
|
subTopic: worker/alert/#,worker/location/#
|
||||||
pubTopic: worker/location
|
pubTopic: worker/location
|
||||||
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.fuyuanshen.equipment.domain.dto;
|
||||||
|
|
||||||
|
import com.fuyuanshen.common.core.validate.EditGroup;
|
||||||
|
import com.fuyuanshen.common.mybatis.core.domain.BaseEntity;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定设备参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AppDeviceBo {
|
||||||
|
/**
|
||||||
|
* 设备IMEI
|
||||||
|
*/
|
||||||
|
private String deviceImei;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备MAC
|
||||||
|
*/
|
||||||
|
private String deviceMac;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通讯方式 0:4G; 1:蓝牙
|
||||||
|
*/
|
||||||
|
@NotNull(message = "通讯方式不能为空", groups = { EditGroup.class })
|
||||||
|
private Integer communicationMode;
|
||||||
|
|
||||||
|
}
|
@ -63,4 +63,6 @@ public class DeviceQueryCriteria extends BaseEntity {
|
|||||||
@Schema(name = "通讯方式", example = "0:4G;1:蓝牙")
|
@Schema(name = "通讯方式", example = "0:4G;1:蓝牙")
|
||||||
private Integer communicationMode;
|
private Integer communicationMode;
|
||||||
|
|
||||||
|
/* app绑定用户id */
|
||||||
|
private Long bindingUserId;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.fuyuanshen.equipment.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AppDeviceVo {
|
||||||
|
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备名称
|
||||||
|
*/
|
||||||
|
private String deviceName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备IMEI
|
||||||
|
*/
|
||||||
|
private String deviceImei;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备MAC
|
||||||
|
*/
|
||||||
|
private String deviceMac;
|
||||||
|
}
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.fuyuanshen.equipment.domain.Device;
|
import com.fuyuanshen.equipment.domain.Device;
|
||||||
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
|
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
|
||||||
|
import com.fuyuanshen.equipment.domain.vo.AppDeviceVo;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ public interface DeviceMapper extends BaseMapper<Device> {
|
|||||||
|
|
||||||
List<Device> findAllDevices(@Param("criteria") DeviceQueryCriteria criteria);
|
List<Device> findAllDevices(@Param("criteria") DeviceQueryCriteria criteria);
|
||||||
|
|
||||||
|
Page<AppDeviceVo> queryAppDeviceList(Page<AppDeviceVo> page,@Param("criteria") DeviceQueryCriteria criteria);
|
||||||
/**
|
/**
|
||||||
* 获取分配设备的客户
|
* 获取分配设备的客户
|
||||||
*
|
*
|
||||||
|
@ -3,10 +3,13 @@ package com.fuyuanshen.equipment.service;
|
|||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.fuyuanshen.common.core.domain.PageResult;
|
import com.fuyuanshen.common.core.domain.PageResult;
|
||||||
|
import com.fuyuanshen.common.mybatis.core.page.PageQuery;
|
||||||
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
|
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
|
||||||
import com.fuyuanshen.equipment.domain.Device;
|
import com.fuyuanshen.equipment.domain.Device;
|
||||||
|
import com.fuyuanshen.equipment.domain.dto.AppDeviceBo;
|
||||||
import com.fuyuanshen.equipment.domain.form.DeviceForm;
|
import com.fuyuanshen.equipment.domain.form.DeviceForm;
|
||||||
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
|
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
|
||||||
|
import com.fuyuanshen.equipment.domain.vo.AppDeviceVo;
|
||||||
import com.fuyuanshen.equipment.domain.vo.CustomerVo;
|
import com.fuyuanshen.equipment.domain.vo.CustomerVo;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@ -81,4 +84,10 @@ public interface DeviceService extends IService<Device> {
|
|||||||
* @param deviceForm
|
* @param deviceForm
|
||||||
*/
|
*/
|
||||||
void unbindDevice(DeviceForm deviceForm);
|
void unbindDevice(DeviceForm deviceForm);
|
||||||
|
|
||||||
|
TableDataInfo<AppDeviceVo> queryAppDeviceList(DeviceQueryCriteria bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
int bindDevice(AppDeviceBo bo);
|
||||||
|
|
||||||
|
int unBindDevice(Long id);
|
||||||
}
|
}
|
||||||
|
@ -2,21 +2,30 @@ package com.fuyuanshen.equipment.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.lang.generator.SnowflakeGenerator;
|
import cn.hutool.core.lang.generator.SnowflakeGenerator;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.fuyuanshen.common.core.domain.model.LoginUser;
|
import com.fuyuanshen.common.core.domain.model.LoginUser;
|
||||||
|
import com.fuyuanshen.common.mybatis.core.page.PageQuery;
|
||||||
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
|
import com.fuyuanshen.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import com.fuyuanshen.common.satoken.utils.AppLoginHelper;
|
||||||
import com.fuyuanshen.common.satoken.utils.LoginHelper;
|
import com.fuyuanshen.common.satoken.utils.LoginHelper;
|
||||||
import com.fuyuanshen.customer.domain.Customer;
|
import com.fuyuanshen.customer.domain.Customer;
|
||||||
import com.fuyuanshen.customer.mapper.CustomerMapper;
|
import com.fuyuanshen.customer.mapper.CustomerMapper;
|
||||||
import com.fuyuanshen.equipment.constants.DeviceConstants;
|
import com.fuyuanshen.equipment.constants.DeviceConstants;
|
||||||
import com.fuyuanshen.equipment.domain.Device;
|
import com.fuyuanshen.equipment.domain.Device;
|
||||||
import com.fuyuanshen.equipment.domain.DeviceType;
|
import com.fuyuanshen.equipment.domain.DeviceType;
|
||||||
|
import com.fuyuanshen.equipment.domain.dto.AppDeviceBo;
|
||||||
import com.fuyuanshen.equipment.domain.form.DeviceForm;
|
import com.fuyuanshen.equipment.domain.form.DeviceForm;
|
||||||
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
|
import com.fuyuanshen.equipment.domain.query.DeviceQueryCriteria;
|
||||||
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
||||||
|
import com.fuyuanshen.equipment.domain.vo.AppDeviceVo;
|
||||||
import com.fuyuanshen.equipment.domain.vo.CustomerVo;
|
import com.fuyuanshen.equipment.domain.vo.CustomerVo;
|
||||||
|
import com.fuyuanshen.equipment.enums.BindingStatusEnum;
|
||||||
|
import com.fuyuanshen.equipment.enums.CommunicationModeEnum;
|
||||||
import com.fuyuanshen.equipment.enums.DeviceStatusEnum;
|
import com.fuyuanshen.equipment.enums.DeviceStatusEnum;
|
||||||
import com.fuyuanshen.equipment.mapper.DeviceMapper;
|
import com.fuyuanshen.equipment.mapper.DeviceMapper;
|
||||||
import com.fuyuanshen.equipment.mapper.DeviceTypeMapper;
|
import com.fuyuanshen.equipment.mapper.DeviceTypeMapper;
|
||||||
@ -435,5 +444,72 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<AppDeviceVo> queryAppDeviceList(DeviceQueryCriteria bo, PageQuery pageQuery) {
|
||||||
|
Long userId = AppLoginHelper.getUserId();
|
||||||
|
bo.setBindingUserId(userId);
|
||||||
|
Page<AppDeviceVo> result = baseMapper.queryAppDeviceList(pageQuery.build(), bo);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int bindDevice(AppDeviceBo bo) {
|
||||||
|
Integer mode = bo.getCommunicationMode();
|
||||||
|
Long userId = AppLoginHelper.getUserId();
|
||||||
|
if(mode == CommunicationModeEnum.FOUR_G.getValue()){
|
||||||
|
|
||||||
|
String deviceImei = bo.getDeviceImei();
|
||||||
|
QueryWrapper<Device> qw = new QueryWrapper<Device>()
|
||||||
|
.eq("device_imei", deviceImei);
|
||||||
|
List<Device> devices = baseMapper.selectList(qw);
|
||||||
|
if(devices.isEmpty()){
|
||||||
|
throw new RuntimeException("请先将设备入库!!!");
|
||||||
|
}
|
||||||
|
Device device = devices.get(0);
|
||||||
|
if(device.getBindingStatus()!=null && device.getBindingStatus() == BindingStatusEnum.BOUND.getCode()){
|
||||||
|
throw new RuntimeException("设备已绑定");
|
||||||
|
}
|
||||||
|
UpdateWrapper<Device> deviceUpdateWrapper = new UpdateWrapper<>();
|
||||||
|
deviceUpdateWrapper.eq("id", device.getId())
|
||||||
|
.set("binding_status", BindingStatusEnum.BOUND.getCode())
|
||||||
|
.set("binding_user_id",userId);;
|
||||||
|
|
||||||
|
return baseMapper.update(null, deviceUpdateWrapper);
|
||||||
|
}else if(mode == CommunicationModeEnum.BLUETOOTH.getValue()){
|
||||||
|
String deviceMac = bo.getDeviceMac();
|
||||||
|
QueryWrapper<Device> qw = new QueryWrapper<Device>()
|
||||||
|
.eq("device_mac", deviceMac);
|
||||||
|
List<Device> devices = baseMapper.selectList(qw);
|
||||||
|
if(devices.isEmpty()){
|
||||||
|
throw new RuntimeException("请先将设备入库!!!");
|
||||||
|
}
|
||||||
|
Device device = devices.get(0);
|
||||||
|
if(device.getBindingStatus() != null && device.getBindingStatus() == BindingStatusEnum.BOUND.getCode()){
|
||||||
|
throw new RuntimeException("设备已绑定");
|
||||||
|
}
|
||||||
|
UpdateWrapper<Device> deviceUpdateWrapper = new UpdateWrapper<>();
|
||||||
|
deviceUpdateWrapper.eq("id", device.getId())
|
||||||
|
.set("binding_status", BindingStatusEnum.BOUND.getCode())
|
||||||
|
.set("binding_user_id",userId);
|
||||||
|
return baseMapper.update(null, qw);
|
||||||
|
}else{
|
||||||
|
throw new RuntimeException("通讯方式错误");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int unBindDevice(Long id) {
|
||||||
|
Device device = baseMapper.selectById(id);
|
||||||
|
if(device == null){
|
||||||
|
throw new RuntimeException("请先将设备入库!!!");
|
||||||
|
}
|
||||||
|
DeviceType deviceType = deviceTypeMapper.selectById(device.getDeviceType());
|
||||||
|
String mode = deviceType.getCommunicationMode();
|
||||||
|
UpdateWrapper<Device> deviceUpdateWrapper = new UpdateWrapper<>();
|
||||||
|
deviceUpdateWrapper.eq("id", device.getId())
|
||||||
|
.set("binding_status", BindingStatusEnum.UNBOUND.getCode());
|
||||||
|
return baseMapper.update(null, deviceUpdateWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -93,6 +93,15 @@
|
|||||||
</where>
|
</where>
|
||||||
order by d.id desc
|
order by d.id desc
|
||||||
</select>
|
</select>
|
||||||
|
<select id="queryAppDeviceList" resultType="com.fuyuanshen.equipment.domain.vo.AppDeviceVo">
|
||||||
|
select
|
||||||
|
d.id, d.device_name, d.device_pic, d.device_mac, d.device_sn,
|
||||||
|
d.device_status, d.create_time, d.update_time, d.longitude, d.latitude,
|
||||||
|
d.customer_id, d.current_owner_id, d.original_owner_id, d.customer_name,
|
||||||
|
d.device_imei, d.tenant_id
|
||||||
|
from device d
|
||||||
|
where d.binding_user_id = #{criteria.bindingUserId}
|
||||||
|
</select>
|
||||||
|
|
||||||
<!-- 获取分配设备的客户 -->
|
<!-- 获取分配设备的客户 -->
|
||||||
<select id="getAssignCustomer" resultType="com.fuyuanshen.equipment.domain.Device">
|
<select id="getAssignCustomer" resultType="com.fuyuanshen.equipment.domain.Device">
|
||||||
|
Reference in New Issue
Block a user