Browse Source

库房管理

master
刘力 3 years ago
parent
commit
d5d7f5456a
  1. 2
      archives/src/main/java/com/storeroom/modules/dictionary/controller/ArchivesTypeController.java
  2. 72
      storeroom/src/main/java/com/storeroom/modules/device/controller/StoreroomController.java
  3. 190
      storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java
  4. 30
      storeroom/src/main/java/com/storeroom/modules/device/domain/Storeroom.java
  5. 6
      storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java
  6. 11
      storeroom/src/main/java/com/storeroom/modules/device/repository/StoreroomRepository.java
  7. 32
      storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java
  8. 44
      storeroom/src/main/java/com/storeroom/modules/device/service/dto/StoreroomDto.java
  9. 85
      storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java
  10. 12
      storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/StoreroomMapper.java
  11. 6
      system/pom.xml

2
archives/src/main/java/com/storeroom/modules/dictionary/controller/ArchivesTypeController.java

@ -52,7 +52,7 @@ public class ArchivesTypeController {
@ApiOperation("创建门类")
@AnonymousPostMapping("create")
//TODO:权限未添加
public ApiResponse<Object> save(@RequestBody ArchivesTypeDTO archivesTypeDTO) {
public ApiResponse<Object> create(@RequestBody ArchivesTypeDTO archivesTypeDTO) {
if (!StringUtils.isEmpty(archivesTypeDTO.getId())) {
throw new BaseException("id不为空");
}

72
storeroom/src/main/java/com/storeroom/modules/device/controller/StoreroomController.java

@ -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());
}
}

190
storeroom/src/main/java/com/storeroom/modules/device/domain/DeviceInfo.java

@ -5,13 +5,13 @@ 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.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Dictionary;
import java.util.Objects;
@Entity
@ -20,90 +20,100 @@ import java.util.Objects;
@Table(name = "device_info")
public class DeviceInfo 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;
@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;
@Column(name = "device_ip")
@ApiModelProperty(value = "设备接口ip")
private String deviceIp;
@Column(name = "device_port")
@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;
@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(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);
}
@Override
public int hashCode() {
return Objects.hash(id, tid, deviceTypeId, supplierId, deviceName, deviceIp, devicePort, deviceAccount, devicePassword, deviceState, deviceId, cupboardNo, rowNo, columnRowNo, partNo, isLinkage, isCallback, isNotice);
}
@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(targetEntity = Storeroom.class)
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "storeroom_id", referencedColumnName = "id")
@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;
@Column(name = "device_ip")
@ApiModelProperty(value = "设备接口ip")
private String deviceIp;
@Column(name = "device_port")
@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);
}
@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);
}
}

30
storeroom/src/main/java/com/storeroom/modules/device/domain/Storeroom.java

@ -1,17 +1,17 @@
package com.storeroom.modules.device.domain;
import com.alibaba.fastjson.annotation.JSONField;
import com.storeroom.base.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
@ -19,6 +19,7 @@ import java.util.Objects;
@Getter
@Setter
@Table(name = "storeroom")
@Accessors(chain = true)
public class Storeroom extends BaseEntity implements Serializable {
@Id
@ -27,32 +28,43 @@ public class Storeroom extends BaseEntity implements Serializable {
@ApiModelProperty(value = "库房id", hidden = true)
private String id;
@Column(name = "pid")
@ApiModelProperty(value = "父级id")
private String pid;
@Column(name = "name")
@ApiModelProperty(value = "库房名称")
@JSONField(ordinal = 1)
private String name;
@Column(name = "pid")
@ApiModelProperty(value = "父级id")
@JSONField(ordinal = 2)
private String pid;
@Column(name = "remark")
@ApiModelProperty(value = "备注")
@JSONField(ordinal = 3)
private String remark;
@Column(name = "sort")
@ApiModelProperty(value = "排序")
@JSONField(ordinal = 4)
private Integer sort;
@Transient
@JSONField(ordinal = 5)
private List<Storeroom> children;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Storeroom storeroom = (Storeroom) o;
return Objects.equals(id, storeroom.id) && Objects.equals(pid, storeroom.pid) && Objects.equals(name, storeroom.name) && Objects.equals(remark, storeroom.remark) && Objects.equals(sort, storeroom.sort);
return Objects.equals(id, storeroom.id) && Objects.equals(name, storeroom.name) && Objects.equals(pid, storeroom.pid) && Objects.equals(remark, storeroom.remark) && Objects.equals(sort, storeroom.sort) && Objects.equals(children, storeroom.children);
}
@Override
public int hashCode() {
return Objects.hash(id, pid, name, remark, sort);
return Objects.hash(id, name, pid, remark, sort, children);
}
}

6
storeroom/src/main/java/com/storeroom/modules/device/repository/DeviceInfoRepository.java

@ -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);
}

11
storeroom/src/main/java/com/storeroom/modules/device/repository/StoreroomRepository.java

@ -5,5 +5,16 @@ 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 StoreroomRepository extends JpaRepository<Storeroom,String>, JpaSpecificationExecutor<Storeroom> {
/**
* 根据名称查询
* @param name
* @return
*/
List<Storeroom> findByName(String name);
}

32
storeroom/src/main/java/com/storeroom/modules/device/service/StoreroomService.java

@ -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();
}

44
storeroom/src/main/java/com/storeroom/modules/device/service/dto/StoreroomDto.java

@ -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);
}
}

85
storeroom/src/main/java/com/storeroom/modules/device/service/impl/StoreroomImpl.java

@ -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());
}
}

12
storeroom/src/main/java/com/storeroom/modules/device/service/mapstruct/StoreroomMapper.java

@ -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> {
}

6
system/pom.xml

@ -85,6 +85,12 @@
<artifactId>archives</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.storeroom</groupId>
<artifactId>storeroom</artifactId>
<version>1.0</version>
</dependency>
</dependencies>

Loading…
Cancel
Save