From c03b371e3287b7d26d099870bc7d9da72f3b4b4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=8A=9B?= Date: Wed, 6 Jul 2022 15:58:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=86=E9=9B=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/storeroom/config/CallbackEnum.java | 24 +++++++++ .../com/storeroom/config/LinkageEnum.java | 24 +++++++++ .../controller/DeseCabinetController.java | 50 +++++++++++++++++++ .../modules/device/domain/DeseCabinet.java | 11 ++-- .../device/domain/DeviceArchivesTag.java | 10 ++-- .../device/service/DeseCabinetService.java | 26 ++++++++++ .../device/service/dto/DeseCabinetDto.java | 6 +-- .../device/service/dto/DeviceInfoDto.java | 2 +- .../device/service/impl/DenseCabinetImpl.java | 50 ++++++++++++++++++- 9 files changed, 185 insertions(+), 18 deletions(-) create mode 100644 storeroom/src/main/java/com/storeroom/config/CallbackEnum.java create mode 100644 storeroom/src/main/java/com/storeroom/config/LinkageEnum.java create mode 100644 storeroom/src/main/java/com/storeroom/modules/device/controller/DeseCabinetController.java create mode 100644 storeroom/src/main/java/com/storeroom/modules/device/service/DeseCabinetService.java diff --git a/storeroom/src/main/java/com/storeroom/config/CallbackEnum.java b/storeroom/src/main/java/com/storeroom/config/CallbackEnum.java new file mode 100644 index 0000000..336a3a4 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/config/CallbackEnum.java @@ -0,0 +1,24 @@ +package com.storeroom.config; + + +import lombok.Getter; + +/** + * 回调确认 + */ +@Getter +public enum CallbackEnum { + + LEND(1, "借出"), + BORROW(2, "归还"), + INBOUND(3, "入库"), + OUTBOUND(4, "出库"); + + private final Integer code; + private final String msg; + + CallbackEnum(Integer code, String msg) { + this.code = code; + this.msg = msg; + } +} diff --git a/storeroom/src/main/java/com/storeroom/config/LinkageEnum.java b/storeroom/src/main/java/com/storeroom/config/LinkageEnum.java new file mode 100644 index 0000000..89e2232 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/config/LinkageEnum.java @@ -0,0 +1,24 @@ +package com.storeroom.config; + + +import lombok.Getter; + +/** + * 联动操作 + */ +@Getter +public enum LinkageEnum { + + LEND(1, "借出"), + BORROW(2, "归还"), + INBOUND(3, "入库"), + OUTBOUND(4, "出库"); + + private final Integer code; + private final String msg; + + LinkageEnum(Integer code, String msg) { + this.code = code; + this.msg = msg; + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeseCabinetController.java b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeseCabinetController.java new file mode 100644 index 0000000..8140fac --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeseCabinetController.java @@ -0,0 +1,50 @@ +package com.storeroom.modules.device.controller; + + +import com.storeroom.annotaion.rest.AnonymousPostMapping; +import com.storeroom.exception.BaseException; +import com.storeroom.modules.device.service.DeseCabinetService; +import com.storeroom.modules.device.service.DeviceService; +import com.storeroom.modules.device.service.dto.DeseCabinetDto; +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.RestController; + +@RestController +@RequiredArgsConstructor +@Api(tags = "密集架控制器") +@RequestMapping("/api/desecabinet/") +public class DeseCabinetController { + + + private final DeseCabinetService deseCabinetService; + + @ApiOperation("新增密集架") + @AnonymousPostMapping("create") + public ApiResponse create(@RequestBody DeseCabinetDto deseCabinetDto) { + if (!StringUtils.isEmpty(deseCabinetDto.getId())) { + throw new BaseException("id不为空"); + } + if (deseCabinetDto.getAreaNo() != null + && deseCabinetDto.getRowNo() != null + && deseCabinetDto.getSumColumnNo() != null + && deseCabinetDto.getFirstColumnNo() != null + && deseCabinetDto.getPartNo() != null + && StringUtils.isEmpty(deseCabinetDto.getDeviceInfo().getDeviceName()) + && StringUtils.isEmpty(deseCabinetDto.getDeviceInfo().getStoreroomId().getId()) + && StringUtils.isEmpty(deseCabinetDto.getDeviceInfo().getDeviceIp()) + && deseCabinetDto.getDeviceInfo().getDevicePort() != null + ) { + throw new BaseException("必填字段不能为空"); + } + deseCabinetService.create(deseCabinetDto); + return ApiResponse.success(ResponseStatus.SUCCESS); + } + +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeseCabinet.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeseCabinet.java index 84ad8a1..e57da65 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeseCabinet.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeseCabinet.java @@ -27,14 +27,11 @@ public class DeseCabinet extends BaseEntity implements Serializable { @ApiModelProperty(value = "ID", hidden = true) private String id; - @OneToOne - @JoinColumn(name = "device_info_id") + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "device_info_id",referencedColumnName = "id") @ApiModelProperty(value = "设备信息") private DeviceInfo deviceInfo; - @Column(name = "tid") - @ApiModelProperty(value = "设备标签") - private String tid; @Column(name = "storeroom_code") @ApiModelProperty(value = "库房代码") @@ -82,11 +79,11 @@ public class DeseCabinet extends BaseEntity implements Serializable { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; DeseCabinet that = (DeseCabinet) o; - return Objects.equals(id, that.id) && Objects.equals(deviceInfo, that.deviceInfo) && Objects.equals(tid, that.tid) && Objects.equals(storeroomCode, that.storeroomCode) && Objects.equals(deviceId, that.deviceId) && Objects.equals(rowNo, that.rowNo) && Objects.equals(areaNo, that.areaNo) && Objects.equals(sumColumnNo, that.sumColumnNo) && Objects.equals(firstColumnNo, that.firstColumnNo) && Objects.equals(partNo, that.partNo) && Objects.equals(isLinkage, that.isLinkage) && Objects.equals(isCallback, that.isCallback) && Objects.equals(isNotice, that.isNotice); + return Objects.equals(id, that.id) && Objects.equals(deviceInfo, that.deviceInfo) && Objects.equals(storeroomCode, that.storeroomCode) && Objects.equals(deviceId, that.deviceId) && Objects.equals(rowNo, that.rowNo) && Objects.equals(areaNo, that.areaNo) && Objects.equals(sumColumnNo, that.sumColumnNo) && Objects.equals(firstColumnNo, that.firstColumnNo) && Objects.equals(partNo, that.partNo) && Objects.equals(isLinkage, that.isLinkage) && Objects.equals(isCallback, that.isCallback) && Objects.equals(isNotice, that.isNotice); } @Override public int hashCode() { - return Objects.hash(id, deviceInfo, tid, storeroomCode, deviceId, rowNo, areaNo, sumColumnNo, firstColumnNo, partNo, isLinkage, isCallback, isNotice); + return Objects.hash(id, deviceInfo, storeroomCode, deviceId, rowNo, areaNo, sumColumnNo, firstColumnNo, partNo, isLinkage, isCallback, isNotice); } } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceArchivesTag.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceArchivesTag.java index 1ebcf2b..783dd46 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceArchivesTag.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceArchivesTag.java @@ -4,6 +4,8 @@ import com.storeroom.base.BaseEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; +import org.hibernate.annotations.NotFound; +import org.hibernate.annotations.NotFoundAction; import javax.persistence.*; import javax.validation.constraints.NotNull; @@ -25,10 +27,10 @@ public class DeviceArchivesTag extends BaseEntity implements Serializable { @ApiModelProperty(value = "标签id") private String tid; - @ManyToOne - @JoinColumn(name = "deviceinfo_id") - @ApiModelProperty(value = "设备id") - private DeviceInfo deviceInfoId; + + @Column(name = "device_info_id") + @ApiModelProperty(value = "设备信息id") + private String deviceInfoId; @Column(name = "position") @ApiModelProperty(name = "层架位和柜架位") diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeseCabinetService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeseCabinetService.java new file mode 100644 index 0000000..54a0f0b --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeseCabinetService.java @@ -0,0 +1,26 @@ +package com.storeroom.modules.device.service; + +import com.storeroom.modules.device.service.dto.DeseCabinetDto; + +public interface DeseCabinetService { + /** + * 设备新增 + */ + void create(DeseCabinetDto deseCabinetDto); + + /** + * 设备修改 + */ + void update(DeseCabinetDto deseCabinetDto); + + /** + * 删除 + */ + void delete(String id); + + /** + * 获取状态 + * @return / + */ + Boolean getState(); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeseCabinetDto.java b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeseCabinetDto.java index 514701a..0df2261 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeseCabinetDto.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeseCabinetDto.java @@ -19,8 +19,6 @@ public class DeseCabinetDto extends BaseDTO implements Serializable { private DeviceInfoDto deviceInfo; - private String tid; - private String storeroomCode; private String deviceId; @@ -46,11 +44,11 @@ public class DeseCabinetDto extends BaseDTO implements Serializable { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; DeseCabinetDto that = (DeseCabinetDto) o; - return Objects.equals(id, that.id) && Objects.equals(deviceInfo, that.deviceInfo) && Objects.equals(tid, that.tid) && Objects.equals(storeroomCode, that.storeroomCode) && Objects.equals(deviceId, that.deviceId) && Objects.equals(rowNo, that.rowNo) && Objects.equals(areaNo, that.areaNo) && Objects.equals(sumColumnNo, that.sumColumnNo) && Objects.equals(firstColumnNo, that.firstColumnNo) && Objects.equals(partNo, that.partNo) && Objects.equals(isLinkage, that.isLinkage) && Objects.equals(isCallback, that.isCallback) && Objects.equals(isNotice, that.isNotice); + return Objects.equals(id, that.id) && Objects.equals(deviceInfo, that.deviceInfo) && Objects.equals(storeroomCode, that.storeroomCode) && Objects.equals(deviceId, that.deviceId) && Objects.equals(rowNo, that.rowNo) && Objects.equals(areaNo, that.areaNo) && Objects.equals(sumColumnNo, that.sumColumnNo) && Objects.equals(firstColumnNo, that.firstColumnNo) && Objects.equals(partNo, that.partNo) && Objects.equals(isLinkage, that.isLinkage) && Objects.equals(isCallback, that.isCallback) && Objects.equals(isNotice, that.isNotice); } @Override public int hashCode() { - return Objects.hash(id, deviceInfo, tid, storeroomCode, deviceId, rowNo, areaNo, sumColumnNo, firstColumnNo, partNo, isLinkage, isCallback, isNotice); + return Objects.hash(id, deviceInfo, storeroomCode, deviceId, rowNo, areaNo, sumColumnNo, firstColumnNo, partNo, isLinkage, isCallback, isNotice); } } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceInfoDto.java b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceInfoDto.java index a030ac6..90ab115 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceInfoDto.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceInfoDto.java @@ -1,7 +1,7 @@ package com.storeroom.modules.device.service.dto; import com.storeroom.base.BaseDTO; -import com.storeroom.modules.device.domain.DeviceInfo; + import com.storeroom.modules.device.domain.Storeroom; import com.storeroom.modules.device.domain.Supplier; import lombok.Getter; diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DenseCabinetImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DenseCabinetImpl.java index 4effe0c..2d9223b 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DenseCabinetImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DenseCabinetImpl.java @@ -2,40 +2,86 @@ package com.storeroom.modules.device.service.impl; import com.storeroom.exception.BaseException; import com.storeroom.modules.device.domain.DeseCabinet; +import com.storeroom.modules.device.domain.DeviceArchivesTag; import com.storeroom.modules.device.domain.DeviceInfo; import com.storeroom.modules.device.repository.DeseCabinetRepository; +import com.storeroom.modules.device.repository.DeviceArchivesTagRepository; import com.storeroom.modules.device.repository.DeviceInfoRepository; -import com.storeroom.modules.device.service.DeviceService; +import com.storeroom.modules.device.service.DeseCabinetService; import com.storeroom.modules.device.service.dto.DeseCabinetDto; import com.storeroom.modules.device.service.mapstruct.DeseCabinetMapper; import com.storeroom.utils.NanoIdUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; +import java.util.concurrent.ThreadLocalRandom; + @Service @RequiredArgsConstructor -public class DenseCabinetImpl implements DeviceService { +public class DenseCabinetImpl implements DeseCabinetService { private final DeseCabinetRepository deseCabinetRepository; private final DeviceInfoRepository deviceInfoRepository; + private final DeviceArchivesTagRepository deviceArchivesTagRepository; private final DeseCabinetMapper deseCabinetMapper; @Override + @Transactional public void create(DeseCabinetDto deseCabinetDto) { + //转换密集架实体 DeseCabinet deseCabinet = deseCabinetMapper.toEntity(deseCabinetDto); + //根据IP和端口号查询设备 DeviceInfo deviceInfo = deviceInfoRepository.findByDeviceIpAndDevicePort(deseCabinetDto.getDeviceInfo().getDeviceIp(), deseCabinetDto.getDeviceInfo().getDevicePort()); + //判断设备同一IP和端口下是否重复 if (!ObjectUtils.isEmpty(deviceInfo)) { throw new BaseException("同一IP和端口号下不能重复添加设备"); } + //创建设备信息id deseCabinet.getDeviceInfo().setId(NanoIdUtils.randomNanoId()); + //创建密集架id deseCabinet.setId(NanoIdUtils.randomNanoId()); + //生成架位 + String position = new StringBuilder() + .append(deseCabinet.getAreaNo()) + .append("-") + .append(deseCabinet.getFirstColumnNo()) + .append("-") + .append(deseCabinet.getPartNo()) + .append("-") + .append(deseCabinet.getRowNo()) + .append("-") + .append(GenerateNum()) + .toString(); + + + DeviceArchivesTag deviceArchivesTag = new DeviceArchivesTag(); + //生成架位标签表id + deviceArchivesTag.setId(NanoIdUtils.randomNanoId()); + deviceArchivesTag.setPosition(position); + deviceArchivesTag.setDeviceInfoId(deseCabinet.getDeviceInfo().getId()); + //保存架位标签 + deviceArchivesTagRepository.save(deviceArchivesTag); + //保存密集架 deseCabinetRepository.save(deseCabinet); } + + /** + * 生成架位左右位置 + * + * @return + */ + private String GenerateNum() { + ThreadLocalRandom tlr = ThreadLocalRandom.current(); + return String.valueOf(tlr.nextInt(1, 2)); + } + + @Override public void update(DeseCabinetDto deseCabinetDto) {