Commit 5d02a7f6 LN

增加库存查询功能

1 个父辈 39524d6c
package com.neotel.smfcore.core.report;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.report.bean.ChartItem;
import com.neotel.smfcore.core.report.rest.dto.ChartItemDto;
import com.neotel.smfcore.core.report.rest.dto.InoutDataDto;
import com.neotel.smfcore.core.report.rest.dto.InventoryBoxDto;
import com.neotel.smfcore.core.report.rest.dto.InventoryGroupDto;
import com.neotel.smfcore.core.report.rest.mapstruct.ChartItemMapper;
import com.neotel.smfcore.core.report.rest.query.ReportQuery;
import com.neotel.smfcore.core.storage.bean.UsageItem;
import com.neotel.smfcore.core.storage.service.manager.IStorageManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.security.service.manager.IGroupManager;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Group;
import com.neotel.smfcore.security.service.po.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
......@@ -31,10 +40,19 @@ public class ReportController {
@Autowired
private ChartItemMapper chartItemMapper;
@Autowired
private IUserManager userManager;
@Autowired
private IGroupManager groupManager;
@Autowired
DataCache dataCache;
@ApiOperation("获取出入库数据")
@GetMapping(value = "/inOutData")
@PreAuthorize("@el.check('inOutData')")
public InoutDataDto showChart(ReportQuery query) {
public InoutDataDto inOutData(ReportQuery query) {
Date startDay = query.getUpdateDate().getFrom();
Date endDay = query.getUpdateDate().getTo();
......@@ -62,4 +80,47 @@ public class ReportController {
}
return dto;
}
@ApiOperation("获取库存数据")
@GetMapping(value = "/inventory")
@PreAuthorize("@el.check('inventory')")
public List<InventoryGroupDto> inventory() {
String userId = SecurityUtils.getCurrentUserId();
User user = userManager.get(userId);
Set<String> mygroups = user.getGroups();
mygroups.add("");
ArrayList<InventoryGroupDto> groupDtos = new ArrayList<>();
for (String groupid : mygroups) {
Group group = groupManager.get(groupid);
if (group == null) {
if (groupid.equals("")) {
group = Group.defaulGroup();
} else {
continue;
}
}
List<InventoryBoxDto> boxDtos = new ArrayList<>();
List<String> cidList = dataCache.getCidsByGroupId(groupid, false);
for (String cid : cidList) {
Storage storage = dataCache.getStorage(cid);
if (storage == null) {
continue;
}
int posCount=0;
int usePosCount=0;
for(UsageItem item : storage.getUsageMap().values()){
posCount+=item.getTotalCount();
usePosCount+=item.getUsedCount();
}
InventoryBoxDto boxDto = new InventoryBoxDto(storage.getId(), storage.getName(), storage.getCid(),storage.getType(), storage.getUsageMap(),posCount,usePosCount);
boxDtos.add(boxDto);
}
if (boxDtos.size() > 0) {
InventoryGroupDto groupDto = new InventoryGroupDto(group.getId(), group.getGroupName(), boxDtos);
groupDtos.add(groupDto);
}
}
return groupDtos;
}
}
package com.neotel.smfcore.core.report.rest.dto;
import com.neotel.smfcore.core.storage.bean.UsageItem;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InventoryBoxDto implements Serializable {
@ApiModelProperty("ID")
private String id;
@ApiModelProperty("名称")
private String name;
@ApiModelProperty("CID")
private String cid;
@ApiModelProperty("料仓类型")
private String type = DeviceType.AUTO.name();
@ApiModelProperty("使用情况")
private Map<String, UsageItem> usageMap = new ConcurrentHashMap<>();
@ApiModelProperty("总库位数量")
private Integer totalPosCount;
@ApiModelProperty("已使用库位数量")
private Integer usedPosCount;
}
package com.neotel.smfcore.core.report.rest.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class InventoryGroupDto implements Serializable {
@ApiModelProperty("ID")
private String groupId;
@ApiModelProperty("组名称")
private String groupName;
@ApiModelProperty("料仓列表")
private List<InventoryBoxDto> boxList;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!