diff --git a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java index 0d376ac..a59dff7 100644 --- a/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java +++ b/archives/src/main/java/com/storeroom/modules/archives/repository/ArchivesCaseRepository.java @@ -15,7 +15,7 @@ import java.util.Set; public interface ArchivesCaseRepository extends JpaRepository{ - @Query("from ArchivesCase where id = ?1") + @Query("from ArchivesCases where id = ?1") ArchivesCase findCaseById(String caseId); @Query(nativeQuery = true, @@ -60,7 +60,7 @@ public interface ArchivesCaseRepository extends JpaRepository findCaseName(List caseIds); @Query(nativeQuery = true, @@ -69,11 +69,11 @@ public interface ArchivesCaseRepository extends JpaRepository deviceId); @Modifying - @Query(value = "update ArchivesCase set tid = null where tid = ?1") + @Query(value = "update ArchivesCases set tid = null where tid = ?1") void unbindTag(String tid); @Modifying - @Query(value = "update ArchivesCase set tid = ?1 where id = ?2 ") + @Query(value = "update ArchivesCases set tid = ?1 where id = ?2 ") Integer bindTag(String tid,String archivesId); @Modifying diff --git a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java index 71f6376..d3d5d13 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java @@ -1,20 +1,28 @@ package com.storeroom.modules.device.controller; +import com.storeroom.annotaion.rest.AnonymousDeleteMapping; import com.storeroom.annotaion.rest.AnonymousGetMapping; import com.storeroom.exception.BaseException; +import com.storeroom.modules.device.service.ArchivesCasesService; import com.storeroom.modules.device.service.DeviceService; import com.storeroom.modules.device.service.OperatingStateService; 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.data.domain.Pageable; +import org.springframework.util.ObjectUtils; +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; +import java.util.List; +import java.util.Set; + @RestController @RequiredArgsConstructor @Api(tags = "设备管理") @@ -23,6 +31,7 @@ public class DeviceController { private final DeviceService deviceService; private final OperatingStateService operatingStateService; + private final ArchivesCasesService archivesCaseService; @ApiOperation("通过id获取设备列表") @@ -60,4 +69,17 @@ public class DeviceController { } return ApiResponse.success(operatingStateService.findById(deviceInfoId)); } + + @ApiOperation("通过id删除设备") + @AnonymousDeleteMapping("delete") + public ApiResponse delete(@RequestBody Set deviceInfoId) { + if (ObjectUtils.isEmpty(deviceInfoId)) { + throw new BaseException("设备id不能为空"); + } + if (!archivesCaseService.isHaveArchives(deviceInfoId)) { + throw new BaseException("设备不允许删除"); + } + deviceService.Delete(deviceInfoId); + return ApiResponse.success(ResponseStatus.SUCCESS); + } } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/domain/ArchivesCases.java b/storeroom/src/main/java/com/storeroom/modules/device/domain/ArchivesCases.java new file mode 100644 index 0000000..ee087e0 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/domain/ArchivesCases.java @@ -0,0 +1,65 @@ +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.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.sql.Timestamp; + +@Entity +@Getter +@Setter +@Table(name = "archives_case") +public class ArchivesCases extends BaseEntity implements Serializable { + + @Id + @Column(name = "id") + private String id; + + @Column(name = "case_name") + @ApiModelProperty(value = "盒名称") + private String caseName; + + @Column(name = "case_type") + @ApiModelProperty(value = "盒类别 0.未定义 1.文件 2.案卷") + private Integer caseType; + + @Column(name = "tid") + @ApiModelProperty(value = "盒标签") + private String tid; + + @Column(name = "barcode") + @ApiModelProperty(value = "条形码") + private String barcode; + + @Column(name = "shelf_id") + @ApiModelProperty(value = "层架位id") + private String shelfId; + + @Column(name = "folder_location") + @ApiModelProperty(value = "存放位置") + private String folderLocation; + + @Column(name = "folder_location_details") + @ApiModelProperty(value = "存放具体位置") + private String folderLocationDetails; + + @Column(name = "deposit_num") + @ApiModelProperty(value = "存放数量") + private Integer depositNum; + + @Column(name = "storage_type") + @ApiModelProperty(value = "入库状态 0.未入 1.待入 2.已入 3.待出") + private Integer storageType; + + @Column(name = "storage_time") + @ApiModelProperty(value = "入库时间") + private Timestamp storageTime; + +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/repository/ArchivesCasesRepository.java b/storeroom/src/main/java/com/storeroom/modules/device/repository/ArchivesCasesRepository.java new file mode 100644 index 0000000..34b1d1e --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/repository/ArchivesCasesRepository.java @@ -0,0 +1,17 @@ +package com.storeroom.modules.device.repository; + + +import com.storeroom.modules.device.domain.ArchivesCases; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; +import java.util.Set; + +public interface ArchivesCasesRepository extends JpaRepository{ + + @Query(nativeQuery = true, + value = "select count(1) from archives_case ace where ace.shelf_id in " + + "(select id from device_archives_tag dat where dat.device_info_id in (?1)) ") + Integer isHaveArchives(Set deviceId); +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/ArchivesCasesService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/ArchivesCasesService.java new file mode 100644 index 0000000..28a897a --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/ArchivesCasesService.java @@ -0,0 +1,15 @@ +package com.storeroom.modules.device.service; + + + +import java.util.List; +import java.util.Set; + +public interface ArchivesCasesService { + + + //设备删除 设备内是否有档案 + Boolean isHaveArchives(Set deviceId); + + +} 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 index 6b66628..aa5b36d 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java @@ -7,6 +7,7 @@ import com.storeroom.modules.device.service.dto.DeviceTypeDto; import org.springframework.data.domain.Pageable; import java.util.List; +import java.util.Set; public interface DeviceService { @@ -118,12 +119,16 @@ public interface DeviceService { /** * 根据id 查询设备信息 * - * @param id + * @param id / * @return */ DeviceInfoDto findById(String id); - //获取储存设备列表 + /** + * 获取设备列表无条件 + * @param pageable / + * @return + */ Object queryStorageDeviceAll(Pageable pageable); /** @@ -132,6 +137,10 @@ public interface DeviceService { */ List getDeviceTypeAll(); - + /** + * 删除设备 + * @param deviceInfoId / + */ + void Delete(Set deviceInfoId); } diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/ArchivesCasesServiceImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/ArchivesCasesServiceImpl.java new file mode 100644 index 0000000..3d17288 --- /dev/null +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/ArchivesCasesServiceImpl.java @@ -0,0 +1,25 @@ +package com.storeroom.modules.device.service.impl; + + + +import com.storeroom.modules.device.repository.ArchivesCasesRepository; +import com.storeroom.modules.device.service.ArchivesCasesService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + + +import java.util.Set; + + +@Service +@RequiredArgsConstructor +public class ArchivesCasesServiceImpl implements ArchivesCasesService { + + private final ArchivesCasesRepository archivesCaseRepository; + + @Override + public Boolean isHaveArchives(Set deviceId) { + Integer count = archivesCaseRepository.isHaveArchives(deviceId); + return count <= 0; + } +} diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java index 70a8fd1..541805a 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java @@ -11,6 +11,8 @@ import com.storeroom.modules.device.service.mapstruct.DeviceTypeMapper; import com.storeroom.service.ApiService; import com.storeroom.utils.*; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import org.apache.http.HttpResponse; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -18,7 +20,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; +import java.util.HashMap; import java.util.List; +import java.util.Set; import java.util.concurrent.ThreadLocalRandom; @@ -181,6 +185,7 @@ public class DeviceImpl implements DeviceService { } @Override + @Transactional(rollbackFor = Exception.class) public void createRotaryCabinet(DeviceInfoDto deviceInfoDto) { List rotaryCabinetList = deviceInfoRepository.findByDeviceIpAndDevicePort(deviceInfoDto.getDeviceIp(), deviceInfoDto.getDevicePort()); if (!ObjectUtils.isEmpty(rotaryCabinetList)) { @@ -243,6 +248,7 @@ public class DeviceImpl implements DeviceService { } @Override + @Transactional(rollbackFor = Exception.class) public void createCamera(DeviceInfoDto deviceInfoDto) { List deviceInfoList = deviceInfoRepository.findByDeviceIpAndDevicePortAndVideoRouteAndDeviceTypeId(deviceInfoDto.getDeviceIp(), deviceInfoDto.getDevicePort(), @@ -262,6 +268,7 @@ public class DeviceImpl implements DeviceService { } @Override + @Transactional(rollbackFor = Exception.class) public void updateCamera(DeviceInfoDto deviceInfoDto) { List deviceInfoList = deviceInfoRepository.findByDeviceIpAndDevicePortAndVideoRouteAndDeviceTypeId(deviceInfoDto.getDeviceIp(), deviceInfoDto.getDevicePort(), @@ -284,6 +291,7 @@ public class DeviceImpl implements DeviceService { } @Override + @Transactional(rollbackFor = Exception.class) public void createInsideDevices(DeviceInfoDto deviceInfoDto) { List deviceInfoList = deviceInfoRepository.findByDeviceIpAndDevicePortAndDeviceId(deviceInfoDto.getDeviceIp(), deviceInfoDto.getDevicePort(), deviceInfoDto.getDeviceId()); if (!ObjectUtils.isEmpty(deviceInfoList)) { @@ -301,6 +309,7 @@ public class DeviceImpl implements DeviceService { } @Override + @Transactional(rollbackFor = Exception.class) public void updateInsideDevices(DeviceInfoDto deviceInfoDto) { List deviceInfoList = deviceInfoRepository.findByDeviceIpAndDevicePortAndDeviceId(deviceInfoDto.getDeviceIp(), deviceInfoDto.getDevicePort(), deviceInfoDto.getDeviceId()); if (!ObjectUtils.isEmpty(deviceInfoList)) { @@ -316,6 +325,7 @@ public class DeviceImpl implements DeviceService { } @Override + @Transactional(rollbackFor = Exception.class) public void createOutsideDevices(DeviceInfoDto deviceInfoDto) { List deviceInfoList = deviceInfoRepository.findByDeviceIdAndDeviceTypeId(deviceInfoDto.getDeviceId(), deviceInfoDto.getDeviceTypeId()); if (deviceInfoList.size() != 0) { @@ -332,6 +342,7 @@ public class DeviceImpl implements DeviceService { } @Override + @Transactional(rollbackFor = Exception.class) public void updateOutsideDevices(DeviceInfoDto deviceInfoDto) { DeviceInfo deviceInfo = deviceInfoMapper.toEntity(deviceInfoDto); @@ -362,6 +373,13 @@ public class DeviceImpl implements DeviceService { } + @Override + @Transactional(rollbackFor = Exception.class) + public void Delete(Set deviceInfoId) { + deviceInfoRepository.deleteAllById(deviceInfoId); + } + + /** * 生成架位左右位置 *