diff --git a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java index 1c33f03..f5a1e7a 100644 --- a/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java +++ b/archives/src/main/java/com/storeroom/modules/dictionary/service/impl/ArchivesDictionaryImpl.java @@ -14,6 +14,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.Set; @@ -50,6 +51,7 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService { ArchivesDictionaryDTO dto = archivesDictionaryMapper.toDto(item); dtoList.add(dto); }); + dtoList.sort(Comparator.comparing(ArchivesDictionaryDTO::getIsSequence)); return dtoList; } @@ -161,7 +163,7 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService { @Override public void createListDisplay(Set archivesDisplaySmallDTO) { - archivesDisplaySmallDTO.forEach(item->{ + archivesDisplaySmallDTO.forEach(item -> { ArchivesDictionary archivesDictionary = archivesDictionaryRepository.findById(item.getId()).orElseGet(ArchivesDictionary::new); if (archivesDictionary != null) { if (archivesDictionary.getDisplayOrder() == null) { @@ -220,8 +222,8 @@ public class ArchivesDictionaryImpl implements ArchivesDictionaryService { } @Override - public void updateIsDisplayFormat(String id,Boolean isDisplayformat) { - ArchivesDictionary ad=archivesDictionaryRepository.findById(id).orElseGet(ArchivesDictionary::new); + public void updateIsDisplayFormat(String id, Boolean isDisplayformat) { + ArchivesDictionary ad = archivesDictionaryRepository.findById(id).orElseGet(ArchivesDictionary::new); ad.setIsDisplayformat(isDisplayformat); archivesDictionaryRepository.save(ad); } 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 new file mode 100644 index 0000000..84ad8a1 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeseCabinet.java @@ -0,0 +1,92 @@ +package com.storeroom.modules.device.domain; + + +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 = "dese_cabinet") +public class DeseCabinet extends BaseEntity implements Serializable { + + + @Id + @Column(name = "id") + @NotNull(groups = Update.class) + @ApiModelProperty(value = "ID", hidden = true) + private String id; + + @OneToOne + @JoinColumn(name = "device_info_id") + @ApiModelProperty(value = "设备信息") + private DeviceInfo deviceInfo; + + @Column(name = "tid") + @ApiModelProperty(value = "设备标签") + private String tid; + + @Column(name = "storeroom_code") + @ApiModelProperty(value = "库房代码") + private String storeroomCode; + + @Column(name = "device_id") + @ApiModelProperty(value = "设备id") + private String deviceId; + + @Column(name = "row_No") + @ApiModelProperty(value = "层数") + private Integer rowNo; + + @Column(name = "area_No") + @ApiModelProperty(value = "区号") + private Integer areaNo; + + @Column(name = "sum_column_No") + @ApiModelProperty(value = "总列数") + private Integer sumColumnNo; + + @Column(name = "first_column_No") + @ApiModelProperty(value = "起始列号") + private Integer firstColumnNo; + + @Column(name = "part_No") + @ApiModelProperty(value = "节数") + private Integer partNo; + + @Column(name = "is_linkage") + @ApiModelProperty(value = "联动操作") + private Integer isLinkage; + + @Column(name = "is_callback") + @ApiModelProperty(value = "回调确认") + private Integer isCallback; + + + @Column(name = "is_notice") + @ApiModelProperty(value = "下发通知") + private Integer isNotice; + + @Override + public boolean equals(Object o) { + 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); + } + + @Override + public int hashCode() { + return Objects.hash(id, deviceInfo, tid, 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 new file mode 100644 index 0000000..1ebcf2b --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceArchivesTag.java @@ -0,0 +1,50 @@ +package com.storeroom.modules.device.domain; + +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 +public class DeviceArchivesTag extends BaseEntity implements Serializable { + + @Id + @Column(name = "id") + @NotNull(groups = Update.class) + @ApiModelProperty(value = "ID", hidden = true) + private String id; + + @Column(name = "tid") + @ApiModelProperty(value = "标签id") + private String tid; + + @ManyToOne + @JoinColumn(name = "deviceinfo_id") + @ApiModelProperty(value = "设备id") + private DeviceInfo deviceInfoId; + + @Column(name = "position") + @ApiModelProperty(name = "层架位和柜架位") + private String position; + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DeviceArchivesTag that = (DeviceArchivesTag) o; + return Objects.equals(id, that.id) && Objects.equals(tid, that.tid) && Objects.equals(deviceInfoId, that.deviceInfoId) && Objects.equals(position, that.position); + } + + @Override + public int hashCode() { + return Objects.hash(id, tid, deviceInfoId, position); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java index 28958e4..1b4fe86 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java @@ -11,7 +11,6 @@ import org.hibernate.annotations.NotFoundAction; import javax.persistence.*; import javax.validation.constraints.NotNull; import java.io.Serializable; -import java.util.Dictionary; import java.util.Objects; @Entity @@ -26,9 +25,11 @@ public class DeviceInfo extends BaseEntity implements Serializable { @ApiModelProperty(value = "ID", hidden = true) private String id; - @Column(name = "tid") - @ApiModelProperty(value = "标签id") - private String tid; + @ManyToOne + @JoinColumn(name = "supplier_id",referencedColumnName = "id") + @NotFound(action= NotFoundAction.IGNORE) + @ApiModelProperty(value = "设备供应商id") + private Supplier supplierId; @ManyToOne(targetEntity = Storeroom.class) @NotFound(action = NotFoundAction.IGNORE) @@ -36,14 +37,6 @@ public class DeviceInfo extends BaseEntity implements Serializable { @ApiModelProperty(value = "库房id") private Storeroom storeroomId; - @Column(name = "device_type_id") - @ApiModelProperty(value = "设备类型id") - private String deviceTypeId; - - @Column(name = "supplier_id") - @ApiModelProperty(value = "设备供应商id") - private String supplierId; - @Column(name = "device_name") @ApiModelProperty(value = "设备名称") private String deviceName; @@ -56,64 +49,25 @@ public class DeviceInfo extends BaseEntity implements Serializable { @ApiModelProperty(value = "设备端口") private Integer devicePort; - @Column(name = "device_account") - @ApiModelProperty(value = "设备账号") - private String deviceAccount; - - @Column(name = "device_password") - @ApiModelProperty(value = "设备密码") - private String devicePassword; - @Column(name = "device_state") @ApiModelProperty(value = "设备状态") private Integer deviceState; - @Column(name = "device_id") - @ApiModelProperty(value = "设备id") - private String deviceId; - - @Column(name = "cupboard_No") - @ApiModelProperty(value = "设备柜号") - private Integer cupboardNo; - - @Column(name = "row_No") - @ApiModelProperty(value = "设备柜号") - private Integer rowNo; - - @Column(name = "column_row_No") - @ApiModelProperty(value = "设备每列层号") - private Integer columnRowNo; - - @Column(name = "part_No") - @ApiModelProperty(value = "节数") - private Integer partNo; - - @Column(name = "is_linkage") - @ApiModelProperty(value = "联动操作") - private Integer isLinkage; - - @Column(name = "is_callback") - @ApiModelProperty(value = "回调确认") - private Integer isCallback; - - @Column(name = "is_notice") - @ApiModelProperty(value = "下发通知") - private Integer isNotice; - @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; DeviceInfo that = (DeviceInfo) o; - return Objects.equals(id, that.id) && Objects.equals(tid, that.tid) && Objects.equals(storeroomId, that.storeroomId) && Objects.equals(deviceTypeId, that.deviceTypeId) && Objects.equals(supplierId, that.supplierId) && Objects.equals(deviceName, that.deviceName) && Objects.equals(deviceIp, that.deviceIp) && Objects.equals(devicePort, that.devicePort) && Objects.equals(deviceAccount, that.deviceAccount) && Objects.equals(devicePassword, that.devicePassword) && Objects.equals(deviceState, that.deviceState) && Objects.equals(deviceId, that.deviceId) && Objects.equals(cupboardNo, that.cupboardNo) && Objects.equals(rowNo, that.rowNo) && Objects.equals(columnRowNo, that.columnRowNo) && Objects.equals(partNo, that.partNo) && Objects.equals(isLinkage, that.isLinkage) && Objects.equals(isCallback, that.isCallback) && Objects.equals(isNotice, that.isNotice) && Objects.equals(sequence, that.sequence); + return Objects.equals(id, that.id) && Objects.equals(supplierId, that.supplierId) && Objects.equals(storeroomId, that.storeroomId) && Objects.equals(deviceName, that.deviceName) && Objects.equals(deviceIp, that.deviceIp) && Objects.equals(devicePort, that.devicePort) && Objects.equals(deviceState, that.deviceState) && Objects.equals(sequence, that.sequence); } @Override public int hashCode() { - return Objects.hash(id, tid, storeroomId, deviceTypeId, supplierId, deviceName, deviceIp, devicePort, deviceAccount, devicePassword, deviceState, deviceId, cupboardNo, rowNo, columnRowNo, partNo, isLinkage, isCallback, isNotice, sequence); + return Objects.hash(id, supplierId, storeroomId, deviceName, deviceIp, devicePort, deviceState, sequence); } } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeseCabinetRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeseCabinetRepository.java new file mode 100644 index 0000000..c16d2f4 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeseCabinetRepository.java @@ -0,0 +1,11 @@ +package com.storeroom.modules.device.repository; + +import com.storeroom.modules.device.domain.DeseCabinet; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface DeseCabinetRepository extends JpaRepository, JpaSpecificationExecutor { + + + +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java new file mode 100644 index 0000000..dfc2739 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceArchivesTagRepository.java @@ -0,0 +1,8 @@ +package com.storeroom.modules.device.repository; + +import com.storeroom.modules.device.domain.DeviceArchivesTag; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface DeviceArchivesTagRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java index 4225012..189d478 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java @@ -11,4 +11,12 @@ public interface DeviceInfoRepository extends JpaRepository, List findByStoreroomId(Storeroom storeroomId); + + /** + * 根据ip 端口号 查询 + * @param ip + * @param port + * @return + */ + DeviceInfo findByDeviceIpAndDevicePort(String ip,Integer port); } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java new file mode 100644 index 0000000..380a901 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java @@ -0,0 +1,28 @@ +package com.storeroom.modules.device.service; + +import com.storeroom.modules.device.service.dto.DeseCabinetDto; + +public interface DeviceService { + + /** + * 设备新增 + */ + 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 new file mode 100644 index 0000000..514701a --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeseCabinetDto.java @@ -0,0 +1,56 @@ +package com.storeroom.modules.device.service.dto; + +import com.storeroom.base.BaseDTO; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Objects; + + +/** + * 密集架DTO + */ +@Getter +@Setter +public class DeseCabinetDto extends BaseDTO implements Serializable { + + private String id; + + private DeviceInfoDto deviceInfo; + + private String tid; + + private String storeroomCode; + + private String deviceId; + + private Integer rowNo; + + private Integer areaNo; + + private Integer sumColumnNo; + + private Integer firstColumnNo; + + private Integer partNo; + + private Integer isLinkage; + + private Integer isCallback; + + private Integer isNotice; + + @Override + public boolean equals(Object o) { + 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); + } + + @Override + public int hashCode() { + return Objects.hash(id, deviceInfo, tid, 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 new file mode 100644 index 0000000..a030ac6 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/DeviceInfoDto.java @@ -0,0 +1,46 @@ +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; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Objects; + + +@Getter +@Setter +public class DeviceInfoDto extends BaseDTO implements Serializable { + + private String id; + + private Supplier supplierId; + + private Storeroom storeroomId; + + private String deviceName; + + private String deviceIp; + + private Integer devicePort; + + private Integer deviceState; + + private Integer sequence; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + DeviceInfoDto that = (DeviceInfoDto) o; + return Objects.equals(id, that.id) && Objects.equals(supplierId, that.supplierId) && Objects.equals(storeroomId, that.storeroomId) && Objects.equals(deviceName, that.deviceName) && Objects.equals(deviceIp, that.deviceIp) && Objects.equals(devicePort, that.devicePort) && Objects.equals(deviceState, that.deviceState) && Objects.equals(sequence, that.sequence); + } + + @Override + public int hashCode() { + return Objects.hash(id, supplierId, storeroomId, deviceName, deviceIp, devicePort, deviceState, sequence); + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/dto/SupplierDto.java b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/SupplierDto.java new file mode 100644 index 0000000..1676d9d --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/dto/SupplierDto.java @@ -0,0 +1,37 @@ +package com.storeroom.modules.device.service.dto; + + +import com.storeroom.base.BaseDTO; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Objects; + +@Getter +@Setter +public class SupplierDto extends BaseDTO implements Serializable { + + private String id; + + private String name; + + private String remark; + + private String phone; + + private String deviceModel; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + SupplierDto that = (SupplierDto) o; + return Objects.equals(id, that.id) && Objects.equals(name, that.name) && Objects.equals(remark, that.remark) && Objects.equals(phone, that.phone) && Objects.equals(deviceModel, that.deviceModel); + } + + @Override + public int hashCode() { + return Objects.hash(id, name, remark, phone, deviceModel); + } +} 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 new file mode 100644 index 0000000..4effe0c --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DenseCabinetImpl.java @@ -0,0 +1,60 @@ +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.DeviceInfo; +import com.storeroom.modules.device.repository.DeseCabinetRepository; +import com.storeroom.modules.device.repository.DeviceInfoRepository; +import com.storeroom.modules.device.service.DeviceService; +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.util.ObjectUtils; + + +@Service +@RequiredArgsConstructor +public class DenseCabinetImpl implements DeviceService { + + private final DeseCabinetRepository deseCabinetRepository; + private final DeviceInfoRepository deviceInfoRepository; + private final DeseCabinetMapper deseCabinetMapper; + + + @Override + public void create(DeseCabinetDto deseCabinetDto) { + + DeseCabinet deseCabinet = deseCabinetMapper.toEntity(deseCabinetDto); + DeviceInfo deviceInfo = deviceInfoRepository.findByDeviceIpAndDevicePort(deseCabinetDto.getDeviceInfo().getDeviceIp(), deseCabinetDto.getDeviceInfo().getDevicePort()); + if (!ObjectUtils.isEmpty(deviceInfo)) { + throw new BaseException("同一IP和端口号下不能重复添加设备"); + } + deseCabinet.getDeviceInfo().setId(NanoIdUtils.randomNanoId()); + deseCabinet.setId(NanoIdUtils.randomNanoId()); + deseCabinetRepository.save(deseCabinet); + } + + @Override + public void update(DeseCabinetDto deseCabinetDto) { + + } + + @Override + public void delete(String id) { + + } + + @Override + public Boolean getState() { + return null; + } + + /** + * 生成层位 + */ + public void createLayer() { + + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeseCabinetMapper.java b/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeseCabinetMapper.java new file mode 100644 index 0000000..c7e5a1e --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeseCabinetMapper.java @@ -0,0 +1,11 @@ +package com.storeroom.modules.device.service.mapstruct; + +import com.storeroom.base.BaseMapper; +import com.storeroom.modules.device.domain.DeseCabinet; +import com.storeroom.modules.device.service.dto.DeseCabinetDto; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface DeseCabinetMapper extends BaseMapper { +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeviceInfoMapper.java b/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeviceInfoMapper.java new file mode 100644 index 0000000..859ac86 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/DeviceInfoMapper.java @@ -0,0 +1,11 @@ +package com.storeroom.modules.device.service.mapstruct; + +import com.storeroom.base.BaseMapper; +import com.storeroom.modules.device.domain.DeviceInfo; +import com.storeroom.modules.device.service.dto.DeviceInfoDto; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface DeviceInfoMapper extends BaseMapper { +}