15 changed files with 469 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||||
|
package org.dromara.sample.manage.mapper; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
import org.dromara.sample.manage.model.dto.DeviceProDTO; |
||||
|
import org.dromara.sample.manage.model.dto.DeviceQrtzDTO; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceProEntity; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @auther yq |
||||
|
* @data 2025/3/20 |
||||
|
*/ |
||||
|
public interface IDeviceProMapper extends BaseMapper<DeviceProEntity> { |
||||
|
|
||||
|
List<DeviceProEntity> listDeviceProEntityMap(Page page, @Param("condition") DeviceProDTO deviceProDTO); |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
package org.dromara.sample.manage.mapper; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceProEntity; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceProUserEntity; |
||||
|
|
||||
|
/** |
||||
|
* @auther yq |
||||
|
* @data 2025/3/20 |
||||
|
*/ |
||||
|
public interface IDeviceProUserMapper extends BaseMapper<DeviceProUserEntity> { |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,47 @@ |
|||||
|
package org.dromara.sample.manage.model.dto; |
||||
|
|
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Builder; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceQrtzDateEntity; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceQrtzFileEntity; |
||||
|
|
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* @auther yq |
||||
|
* @data 2025/3/20 |
||||
|
*/ |
||||
|
@Data |
||||
|
@Builder |
||||
|
@AllArgsConstructor |
||||
|
@NoArgsConstructor |
||||
|
public class DeviceProDTO { |
||||
|
/** |
||||
|
机场sn |
||||
|
*/ |
||||
|
private String deviceSn; |
||||
|
|
||||
|
/** |
||||
|
机场名称 |
||||
|
*/ |
||||
|
private String deviceName; |
||||
|
|
||||
|
/** |
||||
|
机场昵称 |
||||
|
*/ |
||||
|
private String nickname; |
||||
|
|
||||
|
/** |
||||
|
分配人员姓名 |
||||
|
*/ |
||||
|
private String realname; |
||||
|
|
||||
|
/** |
||||
|
分配人员 |
||||
|
*/ |
||||
|
private Integer userId; |
||||
|
} |
@ -0,0 +1,51 @@ |
|||||
|
package org.dromara.sample.manage.model.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Builder; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.time.LocalDateTime; |
||||
|
import java.util.ArrayList; |
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
|
||||
|
/** |
||||
|
* The entity class of the device |
||||
|
* |
||||
|
* @author sean.zhou |
||||
|
* @version 0.1 |
||||
|
* @date 2021/11/10 |
||||
|
*/ |
||||
|
@Data |
||||
|
@Builder |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
@TableName(value = "manage_device_pro") |
||||
|
public class DeviceProEntity extends BaseEntity implements Serializable { |
||||
|
|
||||
|
@TableId(type = IdType.AUTO) |
||||
|
private Integer id; |
||||
|
|
||||
|
@TableField(value = "pro_name") |
||||
|
private String proName; |
||||
|
|
||||
|
@TableField(value = "bind_code") |
||||
|
private String bindCode; |
||||
|
|
||||
|
@TableField(value = "bind_type") |
||||
|
private Integer bindType; |
||||
|
|
||||
|
@TableField(value = "workspace_id") |
||||
|
private Integer workspaceId; |
||||
|
|
||||
|
@TableField(exist = false) |
||||
|
private List<DeviceProUserEntity> deviceProUserEntityList = new ArrayList<>(); |
||||
|
|
||||
|
@TableField(exist = false) |
||||
|
private List<DeviceEntity> deviceEntityList = new ArrayList<>(); |
||||
|
|
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
package org.dromara.sample.manage.model.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||
|
import com.baomidou.mybatisplus.annotation.TableField; |
||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import lombok.AllArgsConstructor; |
||||
|
import lombok.Builder; |
||||
|
import lombok.Data; |
||||
|
import lombok.NoArgsConstructor; |
||||
|
import org.dromara.common.mybatis.core.domain.BaseEntity; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* The entity class of the device |
||||
|
* |
||||
|
* @author sean.zhou |
||||
|
* @version 0.1 |
||||
|
* @date 2021/11/10 |
||||
|
*/ |
||||
|
@Data |
||||
|
@Builder |
||||
|
@NoArgsConstructor |
||||
|
@AllArgsConstructor |
||||
|
@TableName(value = "manage_device_pro_user") |
||||
|
public class DeviceProUserEntity extends BaseEntity implements Serializable { |
||||
|
|
||||
|
@TableId(type = IdType.AUTO) |
||||
|
private Integer id; |
||||
|
|
||||
|
@TableField(value = "pro_id") |
||||
|
private Integer proId; |
||||
|
|
||||
|
@TableField(value = "user_id") |
||||
|
private String userId; |
||||
|
|
||||
|
@TableField(value = "realname") |
||||
|
private String realname; |
||||
|
|
||||
|
} |
@ -0,0 +1,37 @@ |
|||||
|
package org.dromara.sample.manage.service; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
|
import com.fasterxml.jackson.databind.JsonNode; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum; |
||||
|
import org.dromara.common.sdk.cloudapi.device.DeviceOsdHost; |
||||
|
import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum; |
||||
|
import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum; |
||||
|
import org.dromara.common.sdk.common.HttpResultResponse; |
||||
|
import org.dromara.common.sdk.common.PaginationData; |
||||
|
import org.dromara.common.sdk.config.version.GatewayManager; |
||||
|
import org.dromara.common.websocket.dto.BizCodeEnum; |
||||
|
import org.dromara.sample.manage.model.dto.DeviceDTO; |
||||
|
import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO; |
||||
|
import org.dromara.sample.manage.model.dto.DeviceProDTO; |
||||
|
import org.dromara.sample.manage.model.dto.TopologyDeviceDTO; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceProEntity; |
||||
|
import org.dromara.sample.manage.model.param.DeviceQueryParam; |
||||
|
|
||||
|
import java.util.Collection; |
||||
|
import java.util.List; |
||||
|
import java.util.Optional; |
||||
|
|
||||
|
/** |
||||
|
* @author sean.zhou |
||||
|
* @date 2021/11/10 |
||||
|
* @version 0.1 |
||||
|
*/ |
||||
|
public interface IDeviceProService { |
||||
|
|
||||
|
List<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO); |
||||
|
|
||||
|
Boolean saveAndUpdate(DeviceProEntity deviceProEntity); |
||||
|
|
||||
|
Boolean deleteIds(Collection<Long> ids); |
||||
|
} |
@ -0,0 +1,28 @@ |
|||||
|
package org.dromara.sample.manage.service; |
||||
|
|
||||
|
import com.fasterxml.jackson.databind.JsonNode; |
||||
|
import org.dromara.common.sdk.cloudapi.device.ControlSourceEnum; |
||||
|
import org.dromara.common.sdk.cloudapi.device.DeviceOsdHost; |
||||
|
import org.dromara.common.sdk.cloudapi.device.DockModeCodeEnum; |
||||
|
import org.dromara.common.sdk.cloudapi.device.DroneModeCodeEnum; |
||||
|
import org.dromara.common.sdk.common.HttpResultResponse; |
||||
|
import org.dromara.common.sdk.common.PaginationData; |
||||
|
import org.dromara.common.sdk.config.version.GatewayManager; |
||||
|
import org.dromara.common.websocket.dto.BizCodeEnum; |
||||
|
import org.dromara.sample.manage.model.dto.DeviceDTO; |
||||
|
import org.dromara.sample.manage.model.dto.DeviceFirmwareUpgradeDTO; |
||||
|
import org.dromara.sample.manage.model.dto.TopologyDeviceDTO; |
||||
|
import org.dromara.sample.manage.model.param.DeviceQueryParam; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Optional; |
||||
|
|
||||
|
/** |
||||
|
* @author sean.zhou |
||||
|
* @date 2021/11/10 |
||||
|
* @version 0.1 |
||||
|
*/ |
||||
|
public interface IDeviceProUserService { |
||||
|
|
||||
|
|
||||
|
} |
@ -0,0 +1,131 @@ |
|||||
|
package org.dromara.sample.manage.service.impl; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
|
import com.fasterxml.jackson.databind.JsonNode; |
||||
|
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.dromara.common.satoken.utils.LoginHelper; |
||||
|
import org.dromara.common.sdk.cloudapi.device.*; |
||||
|
import org.dromara.common.sdk.cloudapi.firmware.*; |
||||
|
import org.dromara.common.sdk.cloudapi.firmware.api.AbstractFirmwareService; |
||||
|
import org.dromara.common.sdk.cloudapi.property.api.AbstractPropertyService; |
||||
|
import org.dromara.common.sdk.cloudapi.tsa.DeviceIconUrl; |
||||
|
import org.dromara.common.sdk.cloudapi.tsa.TopologyDeviceModel; |
||||
|
import org.dromara.common.sdk.common.*; |
||||
|
import org.dromara.common.sdk.config.version.GatewayManager; |
||||
|
import org.dromara.common.sdk.exception.CloudSDKException; |
||||
|
import org.dromara.common.sdk.mqtt.IMqttTopicService; |
||||
|
import org.dromara.common.sdk.mqtt.MqttGatewayPublish; |
||||
|
import org.dromara.common.sdk.mqtt.events.EventsSubscribe; |
||||
|
import org.dromara.common.sdk.mqtt.osd.OsdSubscribe; |
||||
|
import org.dromara.common.sdk.mqtt.property.PropertySetReplyResultEnum; |
||||
|
import org.dromara.common.sdk.mqtt.property.PropertySetSubscribe; |
||||
|
import org.dromara.common.sdk.mqtt.requests.RequestsSubscribe; |
||||
|
import org.dromara.common.sdk.mqtt.services.ServicesReplyData; |
||||
|
import org.dromara.common.sdk.mqtt.services.ServicesSubscribe; |
||||
|
import org.dromara.common.sdk.mqtt.services.TopicServicesResponse; |
||||
|
import org.dromara.common.sdk.mqtt.state.StateSubscribe; |
||||
|
import org.dromara.common.sdk.mqtt.status.StatusSubscribe; |
||||
|
import org.dromara.common.websocket.dto.BizCodeEnum; |
||||
|
import org.dromara.sample.common.error.CommonErrorEnum; |
||||
|
import org.dromara.sample.component.mqtt.model.EventsReceiver; |
||||
|
import org.dromara.sample.control.model.enums.DroneAuthorityEnum; |
||||
|
import org.dromara.sample.manage.mapper.IDeviceMapper; |
||||
|
import org.dromara.sample.manage.mapper.IDeviceProMapper; |
||||
|
import org.dromara.sample.manage.mapper.IDeviceProUserMapper; |
||||
|
import org.dromara.sample.manage.mapper.IDeviceQrtzMapper; |
||||
|
import org.dromara.sample.manage.model.dto.*; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceEntity; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceProEntity; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceProUserEntity; |
||||
|
import org.dromara.sample.manage.model.entity.DeviceQrtzDateEntity; |
||||
|
import org.dromara.sample.manage.model.enums.DeviceFirmwareStatusEnum; |
||||
|
import org.dromara.sample.manage.model.enums.PropertySetFieldEnum; |
||||
|
import org.dromara.sample.manage.model.enums.UserTypeEnum; |
||||
|
import org.dromara.sample.manage.model.param.DeviceQueryParam; |
||||
|
import org.dromara.sample.manage.model.receiver.BasicDeviceProperty; |
||||
|
import org.dromara.sample.manage.service.*; |
||||
|
import org.dromara.sample.websocket.service.IWebSocketMessageService; |
||||
|
import org.dromara.system.api.model.LoginUser; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
import org.springframework.util.CollectionUtils; |
||||
|
import org.springframework.util.StringUtils; |
||||
|
|
||||
|
import java.time.LocalDateTime; |
||||
|
import java.util.Collection; |
||||
|
import java.util.Date; |
||||
|
import java.util.List; |
||||
|
import java.util.Optional; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
* @author sean.zhou |
||||
|
* @version 0.1 |
||||
|
* @date 2021/11/10 |
||||
|
*/ |
||||
|
@Service |
||||
|
@Slf4j |
||||
|
@Transactional |
||||
|
public class DeviceProServiceImpl implements IDeviceProService { |
||||
|
@Autowired |
||||
|
private IDeviceProMapper deviceProMapper; |
||||
|
|
||||
|
@Autowired |
||||
|
private IDeviceMapper deviceMapper; |
||||
|
|
||||
|
@Autowired |
||||
|
private IDeviceProUserMapper deviceProUserMapper; |
||||
|
|
||||
|
@Override |
||||
|
public List<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { |
||||
|
return deviceProMapper.listDeviceProEntityMap(page,deviceProDTO); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public Boolean saveAndUpdate(DeviceProEntity entity) { |
||||
|
boolean flag = true; |
||||
|
//项目信息
|
||||
|
if(entity.getId() != null){ |
||||
|
flag = deviceProMapper.updateById(entity) > 0 ; |
||||
|
}else { |
||||
|
LoginUser loginUser = LoginHelper.getLoginUser(); |
||||
|
entity.setCreateBy(loginUser.getUserId()); |
||||
|
entity.setCreateTime(new Date()); |
||||
|
entity.setCreateDept(loginUser.getDeptId()); |
||||
|
flag = deviceProMapper.insert(entity) > 0; |
||||
|
} |
||||
|
//设备项目绑定
|
||||
|
if(entity.getDeviceEntityList().size() >= 0 && flag == true){ |
||||
|
for (DeviceEntity deviceEntity : deviceMapper.selectList(new QueryWrapper<DeviceEntity>().eq("pro_id", entity.getId()))) { |
||||
|
deviceMapper.updatePor(deviceEntity.getId(),null); |
||||
|
} |
||||
|
entity.getDeviceEntityList().stream().forEach(itme->{ |
||||
|
itme.setProId(entity.getId()); |
||||
|
}); |
||||
|
flag = deviceMapper.updateById(entity.getDeviceEntityList(),100).size() > 0;; |
||||
|
} |
||||
|
//设备项目绑定
|
||||
|
if(entity.getDeviceProUserEntityList().size() >= 0 && flag == true){ |
||||
|
deviceProUserMapper.delete(new QueryWrapper<DeviceProUserEntity>().eq("pro_id",entity.getId())); |
||||
|
entity.getDeviceProUserEntityList().stream().forEach(itme->{ |
||||
|
itme.setProId(entity.getId()); |
||||
|
}); |
||||
|
flag = deviceProUserMapper.insert(entity.getDeviceProUserEntityList(),100).size() > 0; |
||||
|
} |
||||
|
return flag; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public Boolean deleteIds(Collection<Long> ids) { |
||||
|
for (Long proId : ids) { |
||||
|
deviceProMapper.delete(new QueryWrapper<DeviceProEntity>().eq("id",proId)); |
||||
|
} |
||||
|
return deviceProMapper.deleteBatchIds(ids)>0; |
||||
|
} |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
<?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="org.dromara.sample.manage.mapper.IDeviceProUserMapper"> |
||||
|
|
||||
|
|
||||
|
</mapper> |
@ -0,0 +1,11 @@ |
|||||
|
<?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="org.dromara.sample.manage.mapper.IDeviceMapper"> |
||||
|
|
||||
|
|
||||
|
<update id="updatePor"> |
||||
|
update manage_device set pro_id =#{proId} where id=#{id} |
||||
|
</update> |
||||
|
</mapper> |
@ -0,0 +1,56 @@ |
|||||
|
<?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="org.dromara.sample.manage.mapper.IDeviceProMapper"> |
||||
|
<resultMap id="listDeviceProEntityMap" type="org.dromara.sample.manage.model.entity.DeviceProEntity"> |
||||
|
<result column="id" property="id" jdbcType="VARCHAR"/> |
||||
|
<result column="pro_name" property="proName" jdbcType="VARCHAR"/> |
||||
|
<result column="bind_code" property="bindCode" jdbcType="VARCHAR"/> |
||||
|
<result column="bind_type" property="bindType" jdbcType="VARCHAR"/> |
||||
|
<result column="workspace_id" property="workspaceId" jdbcType="VARCHAR"/> |
||||
|
<collection property="deviceProUserEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceProUserEntity"> |
||||
|
<result column="pro_user_id" property="id"/> |
||||
|
<result column="pro_id" property="proId"/> |
||||
|
<result column="user_id" property="userId"/> |
||||
|
<result column="realname" property="realname"/> |
||||
|
</collection> |
||||
|
<collection property="deviceEntityList" ofType="org.dromara.sample.manage.model.entity.DeviceEntity"> |
||||
|
<result column="device_id" property="id"/> |
||||
|
<result column="device_sn" property="deviceSn"/> |
||||
|
<result column="device_name" property="deviceName"/> |
||||
|
<result column="device_type" property="deviceType"/> |
||||
|
<result column="sub_type" property="subType"/> |
||||
|
<result column="domain" property="domain"/> |
||||
|
<result column="nickname" property="nickname"/> |
||||
|
<result column="child_sn" property="childSn"/> |
||||
|
</collection> |
||||
|
</resultMap> |
||||
|
<select id="listDeviceProEntityMap" resultMap="listDeviceProEntityMap"> |
||||
|
SELECT |
||||
|
dp.*,dpu.pro_user_id,dpu.pro_id,dpu.user_id,dpu.realname,d.device_id,d.device_sn,d.device_name,d.device_type,d.sub_type,d.domain,d.nickname,d.child_sn |
||||
|
FROM |
||||
|
manage_device_pro dp |
||||
|
LEFT JOIN ON manage_device d ON dp.id = dp.pro_id |
||||
|
LEFT JOIN ON manage_device_pro_user dpu ON dp.id = dpu.pro_id |
||||
|
<where> |
||||
|
dp.id = pro_id |
||||
|
</where> |
||||
|
<if test="condition.deviceSn != null and condition.deviceSn != ''"> |
||||
|
or device_sn like concat(concat('%',#{condition.deviceSn}),'%') |
||||
|
</if> |
||||
|
<if test="condition.deviceName != null and condition.deviceName != ''"> |
||||
|
or device_name like concat(concat('%',#{condition.deviceName}),'%') |
||||
|
</if> |
||||
|
<if test="condition.nickname != null and condition.nickname != ''"> |
||||
|
or nickname like concat(concat('%',#{condition.nickname}),'%') |
||||
|
</if> |
||||
|
<if test="condition.realname != null and condition.realname != ''"> |
||||
|
or realname like concat(concat('%',#{condition.realname}),'%') |
||||
|
</if> |
||||
|
<if test="condition.userId != null and condition.userId != ''"> |
||||
|
or user_id = #{condition.userId} |
||||
|
</if> |
||||
|
) |
||||
|
</select> |
||||
|
</mapper> |
Loading…
Reference in new issue