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