设备类型管理
This commit is contained in:
@ -4,14 +4,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.fuyuanshen.common.core.domain.PageResult;
|
import com.fuyuanshen.common.core.domain.PageResult;
|
||||||
import com.fuyuanshen.common.core.domain.ResponseVO;
|
import com.fuyuanshen.common.core.domain.ResponseVO;
|
||||||
import com.fuyuanshen.equipment.domain.DeviceType;
|
import com.fuyuanshen.equipment.domain.DeviceType;
|
||||||
|
import com.fuyuanshen.equipment.domain.form.DeviceTypeForm;
|
||||||
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
||||||
import com.fuyuanshen.equipment.service.DeviceTypeService;
|
import com.fuyuanshen.equipment.service.DeviceTypeService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@ -59,7 +58,7 @@ public class DeviceTypeController {
|
|||||||
// @Log("修改设备类型")
|
// @Log("修改设备类型")
|
||||||
@Operation(summary = "修改设备类型")
|
@Operation(summary = "修改设备类型")
|
||||||
@PutMapping(value = "/update")
|
@PutMapping(value = "/update")
|
||||||
public ResponseVO<Object> updateDeviceType(@Validated @RequestBody DeviceType resources) {
|
public ResponseVO<Object> updateDeviceType(@Validated @RequestBody DeviceTypeForm resources) {
|
||||||
deviceTypeService.update(resources);
|
deviceTypeService.update(resources);
|
||||||
return ResponseVO.success(null);
|
return ResponseVO.success(null);
|
||||||
}
|
}
|
||||||
@ -68,17 +67,16 @@ public class DeviceTypeController {
|
|||||||
// @Log("删除设备类型")
|
// @Log("删除设备类型")
|
||||||
@Operation(summary = "删除设备类型")
|
@Operation(summary = "删除设备类型")
|
||||||
@DeleteMapping(value = "/delete")
|
@DeleteMapping(value = "/delete")
|
||||||
public ResponseEntity<Object> deleteDeviceType(@Parameter(name = "传ID数组[]") @RequestBody List<Long> ids) {
|
public ResponseVO<Object> deleteDeviceType(@Parameter(name = "传ID数组[]") @RequestBody List<Long> ids) {
|
||||||
deviceTypeService.deleteAll(ids);
|
deviceTypeService.deleteAll(ids);
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return ResponseVO.success("删除成功!!!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping(value = "/communicationMode")
|
@GetMapping(value = "/communicationMode")
|
||||||
@Operation(summary = "获取设备类型通讯方式")
|
@Operation(summary = "获取设备类型通讯方式")
|
||||||
public ResponseVO<DeviceType> getCommunicationMode(@Parameter(name = "设备类型ID", required = true) Long id) {
|
public ResponseVO<DeviceType> getCommunicationMode(@Parameter(name = "设备类型ID", required = true) Long id) {
|
||||||
return ResponseVO.success(deviceTypeService.getById(id));
|
return ResponseVO.success(deviceTypeService.getCommunicationMode(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.fuyuanshen.equipment.domain.form;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.bean.copier.CopyOptions;
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fuyuanshen.common.tenant.core.TenantEntity;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Description: 设备类型
|
||||||
|
* @Author: WY
|
||||||
|
* @Date: 2025/5/14
|
||||||
|
**/
|
||||||
|
@Data
|
||||||
|
public class DeviceTypeForm {
|
||||||
|
|
||||||
|
@Schema(name = "ID", hidden = true)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(name = "类型名称", required = true)
|
||||||
|
private String typeName;
|
||||||
|
|
||||||
|
@Schema(name = "是否支持蓝牙")
|
||||||
|
private Boolean isSupportBle;
|
||||||
|
|
||||||
|
@Schema(name = "定位方式", example = "0:无;1:GPS;2:基站;3:wifi;4:北斗")
|
||||||
|
private String locateMode;
|
||||||
|
|
||||||
|
@Schema(name = "联网方式", example = "0:无;1:4G;2:WIFI")
|
||||||
|
private String networkWay;
|
||||||
|
|
||||||
|
@Schema(name = "通讯方式", example = "0:4G;1:蓝牙")
|
||||||
|
private String communicationMode;
|
||||||
|
|
||||||
|
}
|
@ -4,6 +4,7 @@ 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.equipment.domain.DeviceType;
|
import com.fuyuanshen.equipment.domain.DeviceType;
|
||||||
|
import com.fuyuanshen.equipment.domain.form.DeviceTypeForm;
|
||||||
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -51,7 +52,7 @@ public interface DeviceTypeService extends IService<DeviceType> {
|
|||||||
*
|
*
|
||||||
* @param resources /
|
* @param resources /
|
||||||
*/
|
*/
|
||||||
void update(DeviceType resources);
|
void update(DeviceTypeForm resources);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多选删除
|
* 多选删除
|
||||||
@ -60,4 +61,11 @@ public interface DeviceTypeService extends IService<DeviceType> {
|
|||||||
*/
|
*/
|
||||||
void deleteAll(List<Long> ids);
|
void deleteAll(List<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取设备类型通讯方式
|
||||||
|
*
|
||||||
|
* @param id /
|
||||||
|
* @return DeviceTypeDto
|
||||||
|
*/
|
||||||
|
DeviceType getCommunicationMode(Long id);
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ 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.PageResult;
|
import com.fuyuanshen.common.core.domain.PageResult;
|
||||||
import com.fuyuanshen.common.core.utils.PageUtil;
|
import com.fuyuanshen.common.core.utils.PageUtil;
|
||||||
|
import com.fuyuanshen.common.satoken.utils.LoginHelper;
|
||||||
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.form.DeviceForm;
|
import com.fuyuanshen.equipment.domain.form.DeviceForm;
|
||||||
@ -56,6 +57,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> impleme
|
|||||||
@Override
|
@Override
|
||||||
public PageResult<Device> queryAll(DeviceQueryCriteria criteria, Page<Object> page) throws IOException {
|
public PageResult<Device> queryAll(DeviceQueryCriteria criteria, Page<Object> page) throws IOException {
|
||||||
|
|
||||||
|
criteria.setCustomerId(LoginHelper.getUserId());
|
||||||
IPage<Device> devices = deviceMapper.findAll(criteria, page);
|
IPage<Device> devices = deviceMapper.findAll(criteria, page);
|
||||||
|
|
||||||
List<Device> records = devices.getRecords();
|
List<Device> records = devices.getRecords();
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
package com.fuyuanshen.equipment.service.impl;
|
package com.fuyuanshen.equipment.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
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.PageResult;
|
import com.fuyuanshen.common.core.domain.PageResult;
|
||||||
import com.fuyuanshen.common.core.utils.PageUtil;
|
import com.fuyuanshen.common.core.utils.PageUtil;
|
||||||
import com.fuyuanshen.common.satoken.utils.LoginHelper;
|
import com.fuyuanshen.common.satoken.utils.LoginHelper;
|
||||||
import com.fuyuanshen.equipment.domain.DeviceType;
|
import com.fuyuanshen.equipment.domain.DeviceType;
|
||||||
|
import com.fuyuanshen.equipment.domain.form.DeviceTypeForm;
|
||||||
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
import com.fuyuanshen.equipment.domain.query.DeviceTypeQueryCriteria;
|
||||||
import com.fuyuanshen.equipment.mapper.DeviceMapper;
|
import com.fuyuanshen.equipment.mapper.DeviceMapper;
|
||||||
import com.fuyuanshen.equipment.mapper.DeviceTypeMapper;
|
import com.fuyuanshen.equipment.mapper.DeviceTypeMapper;
|
||||||
@ -14,7 +16,9 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description:
|
* @Description:
|
||||||
@ -38,6 +42,7 @@ public class DeviceTypeServiceImpl extends ServiceImpl<DeviceTypeMapper, DeviceT
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PageResult<DeviceType> queryAll(DeviceTypeQueryCriteria criteria, Page<Object> page) {
|
public PageResult<DeviceType> queryAll(DeviceTypeQueryCriteria criteria, Page<Object> page) {
|
||||||
|
criteria.setCustomerId(LoginHelper.getUserId());
|
||||||
return PageUtil.toPage(deviceTypeMapper.findAll(criteria, page));
|
return PageUtil.toPage(deviceTypeMapper.findAll(criteria, page));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,8 +89,18 @@ public class DeviceTypeServiceImpl extends ServiceImpl<DeviceTypeMapper, DeviceT
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(DeviceType resources) {
|
public void update(DeviceTypeForm resources) {
|
||||||
deviceTypeMapper.updateById(resources);
|
DeviceType deviceType = deviceTypeMapper.selectById(resources.getId());
|
||||||
|
if (deviceType == null) {
|
||||||
|
throw new RuntimeException("设备类型不存在");
|
||||||
|
}
|
||||||
|
if (!Objects.equals(deviceType.getCustomerId(), LoginHelper.getUserId())) {
|
||||||
|
throw new RuntimeException("无权修改该设备类型");
|
||||||
|
}
|
||||||
|
// if (deviceMapper.countByTypeId(resources.getId()) > 0)
|
||||||
|
// throw new RuntimeException("该设备类型已被使用,无法删除");
|
||||||
|
BeanUtil.copyProperties(resources, deviceType);
|
||||||
|
deviceTypeMapper.updateById(deviceType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -97,8 +112,41 @@ public class DeviceTypeServiceImpl extends ServiceImpl<DeviceTypeMapper, DeviceT
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void deleteAll(List<Long> ids) {
|
public void deleteAll(List<Long> ids) {
|
||||||
|
|
||||||
|
List<Long> invalidIds = new ArrayList<>();
|
||||||
|
|
||||||
|
for (Long id : ids) {
|
||||||
|
DeviceType deviceType = deviceTypeMapper.selectById(id);
|
||||||
|
if (deviceType == null || !Objects.equals(deviceType.getCustomerId(), LoginHelper.getUserId())) {
|
||||||
|
invalidIds.add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!invalidIds.isEmpty()) {
|
||||||
|
throw new RuntimeException("以下设备类型无法删除(ID 不存在或无权限): " + invalidIds);
|
||||||
|
}
|
||||||
|
|
||||||
deviceTypeMapper.deleteByIds(ids);
|
deviceTypeMapper.deleteByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取设备类型通讯方式
|
||||||
|
*
|
||||||
|
* @param id /
|
||||||
|
* @return DeviceTypeDto
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public DeviceType getCommunicationMode(Long id) {
|
||||||
|
DeviceType deviceType = deviceTypeMapper.selectById(id);
|
||||||
|
if (deviceType == null) {
|
||||||
|
throw new RuntimeException("设备类型不存在");
|
||||||
|
}
|
||||||
|
if (!Objects.equals(deviceType.getCustomerId(), LoginHelper.getUserId())) {
|
||||||
|
throw new RuntimeException("无权获取该设备类型通讯方式");
|
||||||
|
}
|
||||||
|
return deviceType;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,11 +28,8 @@
|
|||||||
<if test="criteria.typeName != null and criteria.typeName.trim() != ''">
|
<if test="criteria.typeName != null and criteria.typeName.trim() != ''">
|
||||||
and dt.type_name like concat('%', TRIM(#{criteria.typeName}), '%')
|
and dt.type_name like concat('%', TRIM(#{criteria.typeName}), '%')
|
||||||
</if>
|
</if>
|
||||||
<if test="criteria.tenantId != null">
|
<if test="criteria.customerId != null">
|
||||||
and dt.tenant_id = #{criteria.tenantId}
|
and dt.owner_customer_id = #{criteria.customerId}
|
||||||
</if>
|
|
||||||
<if test="criteria.createBy != null">
|
|
||||||
and dt.create_by = #{criteria.createBy}
|
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
ORDER BY dt.create_time DESC
|
ORDER BY dt.create_time DESC
|
||||||
|
Reference in New Issue
Block a user