MesServiceImpl.java
5.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package com.huaheng.api.mes.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.mes.domain.MaterialInfo;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.location.service.LocationService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader;
import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class MesServiceImpl implements MesService{
@Resource
private InventoryHeaderService inventoryHeaderService;
@Resource
private MaterialService materialService;
@Resource
private ZoneService zoneService;
@Resource
private LocationService locationService;
@Resource
private InventoryDetailService inventoryDetailService;
@Override
public AjaxResult searchInventory(String materialCode) {
String warehouseCode = QuantityConstant.DEFAULT_WAREHOUSE;
Material material = materialService.findAllByCode(materialCode, warehouseCode);
if(material == null){
return AjaxResult.error("物料编码错误,系统找不到该物料");
}
List<InventoryHeader> inventoryHeaders = inventoryHeaderService.selectInventoryHeaderByMaterialCodeAndWarehouseCode(materialCode, warehouseCode);
if(inventoryHeaders==null){
return AjaxResult.success(Collections.emptyList());
}
return AjaxResult.success(inventoryHeaders);
}
@Override
public AjaxResult searchLocations(String area) {
String warehouseCode = QuantityConstant.DEFAULT_WAREHOUSE;
LambdaQueryWrapper<Zone> zoneLambdaQueryWrapper = Wrappers.lambdaQuery();
zoneLambdaQueryWrapper.in(Zone::getArea, area);
Zone zone = zoneService.getOne(zoneLambdaQueryWrapper);
String type = zone.getCode();
/* 查询库位信息*/
AjaxResult ajaxResult = locationService.selectLocationByLocationTypeAndWarehouseCode(type, warehouseCode);
if(ajaxResult.hasErr()){
return ajaxResult;
}
List<Location> locations = (List<Location>)ajaxResult.getData();
List<Location> locationList = new ArrayList<>();
/* 查询库存明细*/
List<InventoryDetail> inventoryDetailList = inventoryDetailService.selectInventoryDetailByWarehouse(warehouseCode);
for (Location location1 : locations) {
List<InventoryDetail> inventoryDetails = inventoryDetailList.stream().filter(inventoryDetail1 ->
inventoryDetail1.getLocationCode().equals(location1.getCode())).collect(Collectors.toList());
List<MaterialInfo> materialInfos = getMaterialInfo(inventoryDetails);
int materialInfoSize = materialInfos.size();
String containerCode = location1.getContainerCode();
String status = location1.getStatus();
if(QuantityConstant.STATUS_LOCATION_EMPTY.equals(status)){
if(StringUtils.isNotEmpty(containerCode)){
if(materialInfoSize > 0){
location1.setContainerStatus(QuantityConstant.STATUS_CONTAINER_SOME);
}else if(materialInfoSize == 0){
location1.setContainerStatus(QuantityConstant.STATUS_CONTAINER_EMPTY);
}
}
}
if(QuantityConstant.STATUS_LOCATION_LOCK.equals(status)){
if(StringUtils.isNotEmpty(containerCode)){
location1.setContainerStatus(QuantityConstant.STATUS_CONTAINER_LOCK);
}
}
location1.setMaterialInfos(materialInfos);
locationList.add(location1);
}
return AjaxResult.success(locationList);
}
private List<MaterialInfo> getMaterialInfo(List<InventoryDetail> inventoryDetails){
List<MaterialInfo> materialInfos = new ArrayList<>();
if(inventoryDetails== null || inventoryDetails.size()==0){
return materialInfos;
}
for (InventoryDetail inventoryDetail : inventoryDetails) {
MaterialInfo info = new MaterialInfo();
info.setMaterialCode(inventoryDetail.getMaterialCode());
info.setMaterialName(inventoryDetail.getMaterialName());
info.setMaterialUnit(inventoryDetail.getMaterialUnit());
info.setQty(inventoryDetail.getQty());
info.setBatch(inventoryDetail.getBatch());
info.setTaskQty(inventoryDetail.getTaskQty());
materialInfos.add(info);
}
return materialInfos;
}
}