7 changed files with 277 additions and 0 deletions
-
59storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceSpecParamController.java
-
60storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java
-
29storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceSpecParamRepository.java
-
29storeroom/src/main/java/com/storeroom/modules/device/service/DeviceSpecParamService.java
-
40storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceSpecParamDto.java
-
49storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceSpecParamImpl.java
-
11storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeviceSpecParamMapper.java
@ -0,0 +1,59 @@ |
|||
package com.storeroom.modules.device.controller; |
|||
|
|||
|
|||
import com.storeroom.annotaion.rest.AnonymousDeleteMapping; |
|||
import com.storeroom.annotaion.rest.AnonymousGetMapping; |
|||
import com.storeroom.annotaion.rest.AnonymousPostMapping; |
|||
import com.storeroom.exception.BaseException; |
|||
import com.storeroom.modules.device.service.DeviceSpecParamService; |
|||
import com.storeroom.modules.device.service.dto.DeviceInfoDto; |
|||
import com.storeroom.modules.device.service.dto.DeviceSpecParamDto; |
|||
import com.storeroom.utils.ApiResponse; |
|||
import com.storeroom.utils.StringUtils; |
|||
import com.storeroom.utils.enums.ResponseStatus; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.web.bind.annotation.RequestBody; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestParam; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
@RestController |
|||
@RequiredArgsConstructor |
|||
@Api(tags = "设备参数绑定") |
|||
@RequestMapping("/api/spec/") |
|||
public class DeviceSpecParamController { |
|||
|
|||
private final DeviceSpecParamService deviceSpecParamService; |
|||
|
|||
@ApiOperation("绑定参数") |
|||
@AnonymousPostMapping("bind") |
|||
public ApiResponse<Object> create(@RequestBody DeviceSpecParamDto deviceSpecParamDto) { |
|||
if (!StringUtils.isEmpty(deviceSpecParamDto.getId())) { |
|||
throw new BaseException("id不为空"); |
|||
} |
|||
deviceSpecParamService.bind(deviceSpecParamDto); |
|||
return ApiResponse.success(ResponseStatus.SUCCESS); |
|||
} |
|||
|
|||
@ApiOperation("删除参数") |
|||
@AnonymousDeleteMapping("delete") |
|||
public ApiResponse<Object> delete(@RequestParam String id) { |
|||
if (StringUtils.isEmpty(id)) { |
|||
throw new BaseException("id不能为空"); |
|||
} |
|||
deviceSpecParamService.delete(id); |
|||
return ApiResponse.success(ResponseStatus.SUCCESS); |
|||
} |
|||
|
|||
@ApiOperation("查询参数") |
|||
@AnonymousGetMapping("list") |
|||
public ApiResponse<Object> list(@RequestParam String deviceInfoId) { |
|||
if (StringUtils.isEmpty(deviceInfoId)) { |
|||
throw new BaseException("设备id不能为空"); |
|||
} |
|||
return ApiResponse.success(deviceSpecParamService.findByDeviceId(deviceInfoId)); |
|||
} |
|||
|
|||
} |
@ -0,0 +1,60 @@ |
|||
package com.storeroom.modules.device.domain; |
|||
|
|||
import com.alibaba.fastjson.annotation.JSONField; |
|||
import com.storeroom.base.BaseEntity; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Getter; |
|||
import lombok.Setter; |
|||
|
|||
import javax.persistence.*; |
|||
import javax.validation.constraints.NotNull; |
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
|
|||
@Entity |
|||
@Getter |
|||
@Setter |
|||
@Table(name = "device_spec_param") |
|||
public class DeviceSpecParam extends BaseEntity implements Serializable { |
|||
|
|||
@Id |
|||
@Column(name = "id") |
|||
@NotNull(groups = Update.class) |
|||
@ApiModelProperty(value = "ID", hidden = true) |
|||
private String id; |
|||
|
|||
@ManyToOne |
|||
@JoinColumn(name = "device_info_id",referencedColumnName = "id") |
|||
@ApiModelProperty(value = "设备信息id") |
|||
private DeviceInfo deviceInfoId; |
|||
|
|||
@Column(name = "param_id") |
|||
@ApiModelProperty(value = "参数id") |
|||
private String paramId; |
|||
|
|||
|
|||
@Column(name = "param_name") |
|||
@ApiModelProperty(value = "参数名称") |
|||
private String paramName; |
|||
|
|||
@Column(name = "unit") |
|||
@ApiModelProperty(value = "值单位") |
|||
private String unit; |
|||
|
|||
@Column(name = "sequence") |
|||
@ApiModelProperty(value = "序号") |
|||
private Integer sequence; |
|||
|
|||
@Override |
|||
public boolean equals(Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
DeviceSpecParam that = (DeviceSpecParam) o; |
|||
return Objects.equals(id, that.id) && Objects.equals(deviceInfoId, that.deviceInfoId) && Objects.equals(paramId, that.paramId) && Objects.equals(paramName, that.paramName) && Objects.equals(unit, that.unit) && Objects.equals(sequence, that.sequence); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(id, deviceInfoId, paramId, paramName, unit, sequence); |
|||
} |
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.storeroom.modules.device.repository; |
|||
|
|||
import com.storeroom.modules.device.domain.DeviceInfo; |
|||
import com.storeroom.modules.device.domain.DeviceSpecParam; |
|||
import org.springframework.data.jpa.repository.JpaRepository; |
|||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; |
|||
import org.springframework.data.jpa.repository.Query; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
public interface DeviceSpecParamRepository extends JpaRepository<DeviceSpecParam, String>, JpaSpecificationExecutor<DeviceSpecParam> { |
|||
|
|||
/** |
|||
* 获取数据最大值 |
|||
* |
|||
* @return |
|||
*/ |
|||
@Query(value = "SELECT MAX(sequence) AS maxsque FROM device_spec_param WHERE device_info_id =''", nativeQuery = true) |
|||
Integer findByMax(String deviceInfoId); |
|||
|
|||
/** |
|||
* 根据设备id查询 |
|||
* @param deviceInfoId |
|||
* @return |
|||
*/ |
|||
@Query(value = "SELECT * FROM device_spec_param WHERE device_info_id =?1", nativeQuery = true) |
|||
List<DeviceSpecParam> findByDeviceInfoId(String deviceInfoId); |
|||
} |
@ -0,0 +1,29 @@ |
|||
package com.storeroom.modules.device.service; |
|||
|
|||
import com.storeroom.modules.device.service.dto.DeviceSpecParamDto; |
|||
|
|||
import java.util.List; |
|||
|
|||
public interface DeviceSpecParamService { |
|||
|
|||
|
|||
/** |
|||
* 绑定参数 |
|||
*/ |
|||
void bind(DeviceSpecParamDto deviceSpecParamDto); |
|||
|
|||
|
|||
/** |
|||
* 删除参数 |
|||
* @param id 参数id |
|||
*/ |
|||
void delete(String id); |
|||
|
|||
|
|||
/** |
|||
* 通过设备信息id 查询绑定参数列表 |
|||
* @param deviceInfoId |
|||
* @return |
|||
*/ |
|||
List<DeviceSpecParamDto> findByDeviceId(String deviceInfoId); |
|||
} |
@ -0,0 +1,40 @@ |
|||
package com.storeroom.modules.device.service.dto; |
|||
|
|||
import com.alibaba.fastjson.annotation.JSONField; |
|||
import com.storeroom.base.BaseDTO; |
|||
import com.storeroom.modules.device.domain.DeviceInfo; |
|||
import lombok.Getter; |
|||
import lombok.Setter; |
|||
|
|||
import java.io.Serializable; |
|||
import java.util.Objects; |
|||
|
|||
@Getter |
|||
@Setter |
|||
public class DeviceSpecParamDto extends BaseDTO implements Serializable { |
|||
|
|||
private String id; |
|||
|
|||
private DeviceInfo deviceInfoId; |
|||
|
|||
private String paramId; |
|||
|
|||
private String paramName; |
|||
|
|||
private String unit; |
|||
|
|||
private Integer sequence; |
|||
|
|||
@Override |
|||
public boolean equals(Object o) { |
|||
if (this == o) return true; |
|||
if (o == null || getClass() != o.getClass()) return false; |
|||
DeviceSpecParamDto that = (DeviceSpecParamDto) o; |
|||
return Objects.equals(id, that.id) && Objects.equals(deviceInfoId, that.deviceInfoId) && Objects.equals(paramId, that.paramId) && Objects.equals(paramName, that.paramName) && Objects.equals(unit, that.unit) && Objects.equals(sequence, that.sequence); |
|||
} |
|||
|
|||
@Override |
|||
public int hashCode() { |
|||
return Objects.hash(id, deviceInfoId, paramId, paramName, unit, sequence); |
|||
} |
|||
} |
@ -0,0 +1,49 @@ |
|||
package com.storeroom.modules.device.service.impl; |
|||
|
|||
import com.storeroom.modules.device.domain.DeviceSpecParam; |
|||
import com.storeroom.modules.device.repository.DeviceSpecParamRepository; |
|||
import com.storeroom.modules.device.service.DeviceSpecParamService; |
|||
import com.storeroom.modules.device.service.dto.DeviceSpecParamDto; |
|||
import com.storeroom.modules.device.service.mapstruct.DeviceSpecParamMapper; |
|||
import com.storeroom.utils.NanoIdUtils; |
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.util.ObjectUtils; |
|||
|
|||
import java.util.List; |
|||
|
|||
|
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class DeviceSpecParamImpl implements DeviceSpecParamService { |
|||
|
|||
|
|||
private final DeviceSpecParamRepository deviceSpecParamRepository; |
|||
private final DeviceSpecParamMapper deviceSpecParamMapper; |
|||
|
|||
|
|||
@Override |
|||
public void bind(DeviceSpecParamDto deviceSpecParamDto) { |
|||
DeviceSpecParam deviceSpecParam = deviceSpecParamMapper.toEntity(deviceSpecParamDto); |
|||
|
|||
Integer num = deviceSpecParamRepository.findByMax(deviceSpecParam.getDeviceInfoId().getId()); |
|||
if (ObjectUtils.isEmpty(num)) { |
|||
deviceSpecParam.setSequence(1); |
|||
} else { |
|||
deviceSpecParam.setSequence(num + 1); |
|||
} |
|||
deviceSpecParam.setId(NanoIdUtils.randomNanoId()); |
|||
deviceSpecParamRepository.save(deviceSpecParam); |
|||
} |
|||
|
|||
@Override |
|||
public void delete(String id) { |
|||
deviceSpecParamRepository.deleteById(id); |
|||
} |
|||
|
|||
@Override |
|||
public List<DeviceSpecParamDto> findByDeviceId(String deviceInfoId) { |
|||
List<DeviceSpecParam> deviceSpecParamList = deviceSpecParamRepository.findByDeviceInfoId(deviceInfoId); |
|||
return deviceSpecParamMapper.toDto(deviceSpecParamList); |
|||
} |
|||
} |
@ -0,0 +1,11 @@ |
|||
package com.storeroom.modules.device.service.mapstruct; |
|||
|
|||
import com.storeroom.base.BaseMapper; |
|||
import com.storeroom.modules.device.domain.DeviceSpecParam; |
|||
import com.storeroom.modules.device.service.dto.DeviceSpecParamDto; |
|||
import org.mapstruct.Mapper; |
|||
import org.mapstruct.ReportingPolicy; |
|||
|
|||
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) |
|||
public interface DeviceSpecParamMapper extends BaseMapper<DeviceSpecParamDto, DeviceSpecParam> { |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue