diff --git a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceSpecParamController.java b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceSpecParamController.java new file mode 100644 index 0000000..9bbb0fa --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceSpecParamController.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 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 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 list(@RequestParam String deviceInfoId) { + if (StringUtils.isEmpty(deviceInfoId)) { + throw new BaseException("设备id不能为空"); + } + return ApiResponse.success(deviceSpecParamService.findByDeviceId(deviceInfoId)); + } + +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java new file mode 100644 index 0000000..eb49296 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceSpecParam.java @@ -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); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceSpecParamRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceSpecParamRepository.java new file mode 100644 index 0000000..47f2dba --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceSpecParamRepository.java @@ -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, JpaSpecificationExecutor { + + /** + * 获取数据最大值 + * + * @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 findByDeviceInfoId(String deviceInfoId); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceSpecParamService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceSpecParamService.java new file mode 100644 index 0000000..ae12244 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceSpecParamService.java @@ -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 findByDeviceId(String deviceInfoId); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceSpecParamDto.java b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceSpecParamDto.java new file mode 100644 index 0000000..2cdac2a --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceSpecParamDto.java @@ -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); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceSpecParamImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceSpecParamImpl.java new file mode 100644 index 0000000..f711343 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceSpecParamImpl.java @@ -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 findByDeviceId(String deviceInfoId) { + List deviceSpecParamList = deviceSpecParamRepository.findByDeviceInfoId(deviceInfoId); + return deviceSpecParamMapper.toDto(deviceSpecParamList); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeviceSpecParamMapper.java b/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeviceSpecParamMapper.java new file mode 100644 index 0000000..8e651b1 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeviceSpecParamMapper.java @@ -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 { +}