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; |
|||
|
|||
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.JpaSpecificationExecutor; |
|||
|
|||
import java.util.List; |
|||
|
|||
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