11 changed files with 390 additions and 100 deletions
-
2archives/src/main/java/com/storeroom/modules/dictionary/controller/ArchivesTypeController.java
-
72storeroom/src/main/java/com/storeroom/modules/device/controller/StoreroomController.java
-
190storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java
-
30storeroom/src/main/java/com/storeroom/modules/device/domain/Storeroom.java
-
6storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java
-
11storeroom/src/main/java/com/storeroom/modules/device/repository/StoreroomRepository.java
-
32storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java
-
44storeroom/src/main/java/com/storeroom/modules/device/service/dto/StoreroomDto.java
-
85storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java
-
12storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/StoreroomMapper.java
-
6system/pom.xml
@ -0,0 +1,72 @@ |
|||||
|
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.annotaion.rest.AnonymousPutMapping; |
||||
|
import com.storeroom.exception.BaseException; |
||||
|
import com.storeroom.modules.device.service.StoreroomService; |
||||
|
import com.storeroom.modules.device.service.dto.StoreroomDto; |
||||
|
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/storeroom/") |
||||
|
public class StoreroomController { |
||||
|
|
||||
|
private final StoreroomService storeroomService; |
||||
|
|
||||
|
|
||||
|
@ApiOperation("新增库房") |
||||
|
@AnonymousPostMapping("create") |
||||
|
public ApiResponse<Object> create(@RequestBody StoreroomDto storeroomDto) { |
||||
|
if (!StringUtils.isEmpty(storeroomDto.getId())) { |
||||
|
throw new BaseException("id不为空"); |
||||
|
} |
||||
|
if (StringUtils.isEmpty(storeroomDto.getName())) { |
||||
|
throw new BaseException("名称不能为空"); |
||||
|
} |
||||
|
storeroomService.create(storeroomDto); |
||||
|
return ApiResponse.success(ResponseStatus.SUCCESS); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("删除库房") |
||||
|
@AnonymousDeleteMapping("delete") |
||||
|
public ApiResponse<Object> delete(@RequestParam String id) { |
||||
|
if (StringUtils.isEmpty(id)) { |
||||
|
throw new BaseException("id不能为空"); |
||||
|
} |
||||
|
storeroomService.delete(id); |
||||
|
return ApiResponse.success(ResponseStatus.SUCCESS); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("修改库房") |
||||
|
@AnonymousPutMapping("update") |
||||
|
public ApiResponse<Object> update(@RequestBody StoreroomDto storeroomDto) { |
||||
|
if (StringUtils.isEmpty(storeroomDto.getId())) { |
||||
|
throw new BaseException("id不为空"); |
||||
|
} |
||||
|
if (StringUtils.isEmpty(storeroomDto.getName())) { |
||||
|
throw new BaseException("名称不能为空"); |
||||
|
} |
||||
|
storeroomService.update(storeroomDto); |
||||
|
return ApiResponse.success(ResponseStatus.SUCCESS); |
||||
|
} |
||||
|
|
||||
|
@ApiOperation("获取库房菜单") |
||||
|
@AnonymousGetMapping("tree") |
||||
|
public ApiResponse<Object> getTree(){ |
||||
|
return ApiResponse.success(storeroomService.buildTree()); |
||||
|
} |
||||
|
} |
@ -1,8 +1,14 @@ |
|||||
package com.storeroom.modules.device.repository; |
package com.storeroom.modules.device.repository; |
||||
|
|
||||
import com.storeroom.modules.device.domain.DeviceInfo; |
import com.storeroom.modules.device.domain.DeviceInfo; |
||||
|
import com.storeroom.modules.device.domain.Storeroom; |
||||
import org.springframework.data.jpa.repository.JpaRepository; |
import org.springframework.data.jpa.repository.JpaRepository; |
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; |
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
public interface DeviceInfoRepository extends JpaRepository<DeviceInfo,String>, JpaSpecificationExecutor<DeviceInfo> { |
public interface DeviceInfoRepository extends JpaRepository<DeviceInfo,String>, JpaSpecificationExecutor<DeviceInfo> { |
||||
|
|
||||
|
|
||||
|
List<DeviceInfo> findByStoreroomId(Storeroom storeroomId); |
||||
} |
} |
@ -0,0 +1,32 @@ |
|||||
|
package com.storeroom.modules.device.service; |
||||
|
|
||||
|
import com.storeroom.modules.device.domain.Storeroom; |
||||
|
import com.storeroom.modules.device.service.dto.StoreroomDto; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
public interface StoreroomService { |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 创建库房 |
||||
|
*/ |
||||
|
void create(StoreroomDto storeroomDto); |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 删除 库房 |
||||
|
* @param id |
||||
|
*/ |
||||
|
void delete(String id); |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 修改库房 |
||||
|
* @param storeroomDto |
||||
|
* @return |
||||
|
*/ |
||||
|
void update(StoreroomDto storeroomDto); |
||||
|
|
||||
|
List<Storeroom> buildTree(); |
||||
|
} |
@ -0,0 +1,44 @@ |
|||||
|
package com.storeroom.modules.device.service.dto; |
||||
|
|
||||
|
|
||||
|
import com.storeroom.base.BaseDTO; |
||||
|
import com.storeroom.modules.device.domain.Storeroom; |
||||
|
import lombok.Getter; |
||||
|
import lombok.Setter; |
||||
|
|
||||
|
import javax.validation.constraints.NotNull; |
||||
|
import java.io.Serializable; |
||||
|
import java.util.List; |
||||
|
import java.util.Objects; |
||||
|
|
||||
|
@Getter |
||||
|
@Setter |
||||
|
public class StoreroomDto extends BaseDTO implements Serializable { |
||||
|
|
||||
|
|
||||
|
private String id; |
||||
|
|
||||
|
private String pid; |
||||
|
|
||||
|
@NotNull(message = "库房名称不能为空") |
||||
|
private String name; |
||||
|
|
||||
|
private String remark; |
||||
|
|
||||
|
private Integer sort; |
||||
|
|
||||
|
private List<StoreroomDto> children; |
||||
|
|
||||
|
@Override |
||||
|
public boolean equals(Object o) { |
||||
|
if (this == o) return true; |
||||
|
if (o == null || getClass() != o.getClass()) return false; |
||||
|
StoreroomDto that = (StoreroomDto) o; |
||||
|
return Objects.equals(id, that.id) && Objects.equals(pid, that.pid) && Objects.equals(name, that.name) && Objects.equals(remark, that.remark) && Objects.equals(sort, that.sort) && Objects.equals(children, that.children); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public int hashCode() { |
||||
|
return Objects.hash(id, pid, name, remark, sort, children); |
||||
|
} |
||||
|
} |
@ -0,0 +1,85 @@ |
|||||
|
package com.storeroom.modules.device.service.impl; |
||||
|
|
||||
|
import com.storeroom.exception.BaseException; |
||||
|
import com.storeroom.modules.device.domain.Storeroom; |
||||
|
import com.storeroom.modules.device.repository.DeviceInfoRepository; |
||||
|
import com.storeroom.modules.device.repository.StoreroomRepository; |
||||
|
import com.storeroom.modules.device.service.StoreroomService; |
||||
|
import com.storeroom.modules.device.service.dto.StoreroomDto; |
||||
|
import com.storeroom.modules.device.service.mapstruct.StoreroomMapper; |
||||
|
import com.storeroom.utils.NanoIdUtils; |
||||
|
import com.storeroom.utils.ValidationUtil; |
||||
|
import lombok.RequiredArgsConstructor; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
import org.springframework.util.ObjectUtils; |
||||
|
|
||||
|
import java.util.Comparator; |
||||
|
import java.util.List; |
||||
|
import java.util.Objects; |
||||
|
import java.util.stream.Collectors; |
||||
|
|
||||
|
|
||||
|
@Service |
||||
|
@RequiredArgsConstructor |
||||
|
public class StoreroomImpl implements StoreroomService { |
||||
|
|
||||
|
private final StoreroomRepository storeroomRepository; |
||||
|
private final StoreroomMapper storeroomMapper; |
||||
|
private final DeviceInfoRepository deviceInfoRepository; |
||||
|
|
||||
|
@Override |
||||
|
public void create(StoreroomDto storeroomDto) { |
||||
|
Storeroom storeroom = storeroomMapper.toEntity(storeroomDto); |
||||
|
List<Storeroom> storeroom1 = storeroomRepository.findByName(storeroom.getName()); |
||||
|
if (Objects.requireNonNull(storeroom1).size() != 0) { |
||||
|
throw new BaseException("名称不能重复"); |
||||
|
} |
||||
|
storeroom.setId(NanoIdUtils.randomNanoId()); |
||||
|
storeroomRepository.save(storeroom); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void delete(String id) { |
||||
|
Storeroom storeroom = storeroomRepository.findById(id).orElseGet(Storeroom::new); |
||||
|
Object obj = deviceInfoRepository.findByStoreroomId(storeroom); |
||||
|
if (!ObjectUtils.isEmpty(obj)) { |
||||
|
throw new BaseException("该库房已绑定设备,无法删除"); |
||||
|
} |
||||
|
storeroomRepository.deleteById(id); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
public void update(StoreroomDto storeroomDto) { |
||||
|
Storeroom storeroom = storeroomMapper.toEntity(storeroomDto); |
||||
|
Storeroom storeroom1 = storeroomRepository.findById(storeroom.getId()).orElseGet(Storeroom::new); |
||||
|
List<Storeroom> storeroom2 = storeroomRepository.findByName(storeroom.getName()); |
||||
|
if (storeroom2.size() != 0) { |
||||
|
throw new BaseException("名称不能重复"); |
||||
|
} |
||||
|
ValidationUtil.isNull(storeroom1.getId(), "Storeroom", "id", storeroom.getId()); |
||||
|
|
||||
|
storeroom1.setPid(storeroom.getPid()); |
||||
|
storeroom1.setRemark(storeroom.getRemark()); |
||||
|
storeroom1.setName(storeroom.getName()); |
||||
|
storeroom1.setSort(storeroom.getSort()); |
||||
|
storeroomRepository.save(storeroom1); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public List<Storeroom> buildTree() { |
||||
|
List<Storeroom> list = storeroomRepository.findAll(); |
||||
|
|
||||
|
return list.stream().filter(item -> item.getPid().equals("0")) |
||||
|
.map(item -> item.setChildren(getChildren(item.getId(), list))) |
||||
|
.collect(Collectors.toList()); |
||||
|
} |
||||
|
|
||||
|
private List<Storeroom> getChildren(String id, List<Storeroom> list) { |
||||
|
return list.stream().filter(item -> item.getPid().equals(id)) |
||||
|
.map(item -> item.setChildren(getChildren(item.getId(), list))) |
||||
|
.collect(Collectors.toList()); |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,12 @@ |
|||||
|
package com.storeroom.modules.device.service.mapstruct; |
||||
|
|
||||
|
|
||||
|
import com.storeroom.base.BaseMapper; |
||||
|
import com.storeroom.modules.device.domain.Storeroom; |
||||
|
import com.storeroom.modules.device.service.dto.StoreroomDto; |
||||
|
import org.mapstruct.Mapper; |
||||
|
import org.mapstruct.ReportingPolicy; |
||||
|
|
||||
|
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) |
||||
|
public interface StoreroomMapper extends BaseMapper<StoreroomDto, Storeroom> { |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue