Commit 9d1e0a8c LN

增加StorageController

1 个父辈 89c27dc1
package com.neotel.smfcore.core.storage.rest;
import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.core.storage.rest.dto.StorageDto;
import com.neotel.smfcore.core.storage.rest.mapstruct.StorageMapper;
import com.neotel.smfcore.core.storage.rest.query.StorageQueryCriteria;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Slf4j
@RestController
@RequiredArgsConstructor
@Api(tags = "料仓管理")
@RequestMapping("api/storage")
public class StorageController {
@Autowired
private final IStorageManager storageManager;
@Autowired
private final StorageMapper storageMapper;
@ApiOperation("查询料仓")
@GetMapping
@PreAuthorize("@el.check('storage:list')")
public PageData<StorageDto> query(StorageQueryCriteria criteria, Pageable pageable){
Query query= QueryHelp.getQuery(criteria);
PageData<Storage> pages=storageManager.findByPage(query,pageable);
List<StorageDto> StorageDtos=storageMapper.toDto(pages.getContent());
return new PageData(StorageDtos,pages.getTotalElements());
}
@ApiOperation("新增料仓")
@PostMapping
@PreAuthorize("@el.check('storage:add')")
public ResponseEntity<Object> create(@Validated @RequestBody StorageDto resources) {
Storage Storage=storageMapper.toEntity(resources);
storageManager.saveStorage(Storage);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@ApiOperation("修改料仓")
@PutMapping
@PreAuthorize("@el.check('storage:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody StorageDto resources) {
Storage Storage=storageMapper.toEntity(resources);
if (Storage.getId() == null) {
throw new BadRequestException("修改条码:ID不能为空");
}
storageManager.saveStorage(Storage);
return new ResponseEntity<>(HttpStatus.OK);
}
@ApiOperation("删除料仓")
@DeleteMapping
@PreAuthorize("@el.check('storage:del')")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
List<Storage> storages = new ArrayList<Storage>();
for (String id : ids) {
if (id == null) {
throw new BadRequestException("删除料仓:ID不能为空");
}else{
throw new BadRequestException("删除料仓:暂未开放");
}
}
return new ResponseEntity<>(HttpStatus.OK);
}
}
package com.neotel.smfcore.core.storage.rest.dto;
import com.neotel.smfcore.core.storage.bean.UsageItem;
import com.neotel.smfcore.core.storage.enums.COMPATIBLE_TYPE;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Getter
@Setter
public class StorageDto implements Serializable {
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("程序路径")
private String sourcePath;
@ApiModelProperty("料仓CID")
private String cid;
private int totalSlots;
private int emptySlots;
@ApiModelProperty("兼容类型:完全匹配,完全兼容,同尺寸兼容")
private COMPATIBLE_TYPE compatibleType = COMPATIBLE_TYPE.EXACT_MATCH;
@ApiModelProperty("料仓类型:单台自动料仓,手动料仓流水线料仓")
private String type = DeviceType.AUTO.name();
//包含料仓 Box数量
@ApiModelProperty("包含料仓 Box数量")
private Integer boxCount=1;
public Integer getBoxCount() {
if (boxCount == null){
boxCount = 1;
}
return boxCount;
}
@ApiModelProperty("使用情况")
private Map<String, UsageItem> usageMap = new ConcurrentHashMap<>();
@ApiModelProperty("是否可用")
private boolean available = true;
@ApiModelProperty("分组")
private String groupId = "";
}
package com.neotel.smfcore.core.storage.rest.mapstruct;
import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.core.storage.rest.dto.StorageDto;
import com.neotel.smfcore.core.storage.service.po.Storage;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring" ,unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface StorageMapper extends BaseMapper<StorageDto, Storage> {
}
package com.neotel.smfcore.core.storage.rest.query;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class StorageQueryCriteria {
@QueryCondition(blurry = "name,cid")
private String blurry;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> createDate;
@QueryCondition
private String name;
@QueryCondition
private String cid;
@QueryCondition
private String type;
}
...@@ -7,4 +7,6 @@ import java.util.List; ...@@ -7,4 +7,6 @@ import java.util.List;
public interface IStorageManager extends IBaseManager<Storage> { public interface IStorageManager extends IBaseManager<Storage> {
List<Storage> findAll(); List<Storage> findAll();
void saveStorage(Storage storage);
} }
package com.neotel.smfcore.core.storage.service.manager.impl; package com.neotel.smfcore.core.storage.service.manager.impl;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.BadRequestException;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.storage.service.dao.IStorageDao; import com.neotel.smfcore.core.storage.service.dao.IStorageDao;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager; import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
...@@ -49,4 +50,23 @@ public class StorageManagerImpl implements IStorageManager { ...@@ -49,4 +50,23 @@ public class StorageManagerImpl implements IStorageManager {
public List<Storage> findAll(){ public List<Storage> findAll(){
return storageDao.findAll(); return storageDao.findAll();
} }
@Override
public void saveStorage(Storage storage) {
if(storage.getName()==null){
throw new BadRequestException("料仓名称不能为空");
} if(storage.getCid()==null){
throw new BadRequestException("料仓编号不能为空");
} if(storage.getType()==null){
throw new BadRequestException("料仓类型不能为空");
} if(storage.getCompatibleType()==null){
throw new BadRequestException("料仓兼容性不能为空");
}
if(storage.getSourcePath()==null){
storage.setSourcePath("");
}
storageDao.save(storage);
}
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!