|
@@ -42,10 +42,7 @@ import org.springframework.util.Assert;
|
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
|
|
@@ -99,7 +96,6 @@ public class WmsDocOrderSubService {
|
|
|
wmsDocOrderDetails.setOrderNo(orderNo);
|
|
|
wmsDocOrderDetails.setLineStatus(Constant.ORDER_STS.STS00.getValue());
|
|
|
List<WmsDocOrderDetails> list = iWmsDocOrderDetailsService.selectWmsDocOrderDetailsList(wmsDocOrderDetails);
|
|
|
- //IllegalArgumentException NPE RuntimeException;
|
|
|
// 查询出库单头
|
|
|
WmsDocOrderHeader wmsDocOrderHeader = iWmsDocOrderHeaderService.selectWmsDocOrderHeaderByOrderNo(orderNo);
|
|
|
|
|
@@ -116,12 +112,13 @@ public class WmsDocOrderSubService {
|
|
|
//重新筛选库存
|
|
|
// baseLocationLotattVOS1 = filterInv(baseLocationLotattVOS, orderNo);
|
|
|
|
|
|
- if(1==1) throw new RuntimeException("test");
|
|
|
boolean con = true;
|
|
|
//机械手应拆袋数
|
|
|
int allocateQuantities = 0;
|
|
|
//出库单对应袋数
|
|
|
- int orderNum = list.get(0).getQtyOrderedEach().intValue();
|
|
|
+ int orderNum = list.get(0).getQtyOrdered().intValue();
|
|
|
+ //分配数量
|
|
|
+ List<OutTaskForm.Dest> destList = Lists.newArrayList();
|
|
|
for (BaseLocationLotattDTO baseLocationLotatt : filteredLocationLotattList) {
|
|
|
|
|
|
|
|
@@ -158,21 +155,25 @@ public class WmsDocOrderSubService {
|
|
|
outTaskForm.setMaterial(Integer.valueOf(baseSku.getDesc2()));
|
|
|
outTaskForm.setTotal(qty.intValue());
|
|
|
outTaskForm.setDocNo(orderNo);
|
|
|
- if (Integer.valueOf(baseSku.getSkuType()) ==2){
|
|
|
+ if (Integer.valueOf(baseSku.getSkuType()) == 2){
|
|
|
List<OutTaskForm.Dest> dests = new ArrayList<>();
|
|
|
OutTaskForm.Dest dest = new OutTaskForm.Dest();
|
|
|
dest.setDest(Integer.parseInt(wmsDocOrderHeader.getSoReference3()));
|
|
|
- if (orderNum <= qty.intValue()) {
|
|
|
+ if (orderNum < qty.intValue()) {
|
|
|
allocateQuantities = orderNum;
|
|
|
dest.setNum(allocateQuantities);
|
|
|
- } else if (orderNum > qty.intValue()) {
|
|
|
+ invLotLocIdService.updateInvLotLocId(locationId, new BigDecimal(allocateQuantities));
|
|
|
+ } else {
|
|
|
allocateQuantities = qty.intValue();
|
|
|
orderNum = orderNum - qty.intValue();
|
|
|
dest.setNum(allocateQuantities);
|
|
|
+ invLotLocIdService.updateInvLotLocId(locationId, new BigDecimal(allocateQuantities));
|
|
|
}
|
|
|
dests.add(dest);
|
|
|
+ destList.add(dest);
|
|
|
outTaskForm.setDests(dests);
|
|
|
}
|
|
|
+
|
|
|
log.info("WmsDocOrderSubService - initOrderDetails is ready out task to Wcs ......");
|
|
|
WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsOutTask(outTaskForm);
|
|
|
if (!wcsResponseVo.isSuccess()) {
|
|
@@ -182,12 +183,15 @@ public class WmsDocOrderSubService {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
+ int totalQtyAllocated = destList.stream().filter(item -> ObjectUtil.isNotNull(item.getNum()))
|
|
|
+ .mapToInt(OutTaskForm.Dest::getNum).sum();
|
|
|
+
|
|
|
if (con == true) {
|
|
|
// 修改 明细行状态为10
|
|
|
WmsDocOrderDetails wmsDocOrderDetail = list.get(0);
|
|
|
wmsDocOrderDetail.setLineStatus(Constant.ORDER_STS.STS10.getValue());
|
|
|
- wmsDocOrderDetail.setQtyAllocated(wmsDocOrderDetail.getQtyOrderedEach());
|
|
|
- wmsDocOrderDetail.setQtyAllocatedEach(wmsDocOrderDetail.getQtyOrderedEach());
|
|
|
+ wmsDocOrderDetail.setQtyAllocated(new BigDecimal(totalQtyAllocated));
|
|
|
+ wmsDocOrderDetail.setQtyAllocatedEach(new BigDecimal(totalQtyAllocated));
|
|
|
iWmsDocOrderDetailsService.updateWmsDocOrderDetails(list.get(0));
|
|
|
// 修改 单头10
|
|
|
wmsDocOrderHeader.setRemark("");
|
|
@@ -260,12 +264,10 @@ public class WmsDocOrderSubService {
|
|
|
List<Long> middleLeftSubList = ListUtil.sub(partitionLocationIdList, Constants.START_VALUE, locationIndex + 1);
|
|
|
List<Long> middleLeftLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, middleLeftSubList,
|
|
|
baseLocationLotattList, quantity);
|
|
|
- System.err.println(JSONObject.toJSONString(middleLeftLocationIdList));
|
|
|
|
|
|
List<Long> middleRightSubList = ListUtil.reverse(ListUtil.sub(partitionLocationIdList, locationIndex, partitionLocationIdList.size()));
|
|
|
List<Long> middleRightLocationIdList = checkLocationIdList(locationInfo.getId(), sourceInvLotLocIdList, middleRightSubList,
|
|
|
baseLocationLotattList, quantity);
|
|
|
- System.err.println(JSONObject.toJSONString(middleRightLocationIdList));
|
|
|
|
|
|
if(CollectionUtil.isEmpty(middleLeftLocationIdList)
|
|
|
&& CollectionUtil.isEmpty(middleRightLocationIdList)) continue;
|
|
@@ -290,7 +292,6 @@ public class WmsDocOrderSubService {
|
|
|
|
|
|
baseLocationLotattList = baseLocationLotattList.stream()
|
|
|
.filter(item -> !CollectionUtil.contains(finalLeftLocationIdList, item.getId())).collect(Collectors.toList());
|
|
|
- System.err.println(JSONObject.toJSONString(finalLeftLocationIdList));
|
|
|
selectedLocationIdList.addAll(finalLeftLocationIdList);
|
|
|
if(CompareUtil.compare(quantity, BigDecimal.ZERO) <= 0) break;
|
|
|
}
|
|
@@ -313,7 +314,10 @@ public class WmsDocOrderSubService {
|
|
|
}
|
|
|
}
|
|
|
log.info("current selectedLocationIdList info is {}", JSONObject.toJSONString(selectedLocationIdList));
|
|
|
- return copyLocationLotattList.stream().filter(item -> CollectionUtil.contains(selectedLocationIdList, item.getId())).collect(Collectors.toList());
|
|
|
+ return selectedLocationIdList.stream()
|
|
|
+ .map(item ->
|
|
|
+ copyLocationLotattList.stream().filter(element -> CompareUtil.compare(item, element.getId()) == 0).findFirst().orElse(null)
|
|
|
+ ).filter(item -> ObjectUtil.isNotNull(item)).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
private BigDecimal compareCount(BigDecimal middleLeftCount, BigDecimal middleRightCount) {
|