|
|
@ -389,31 +389,31 @@ public class SaleShipmentMainServiceImpl implements SaleShipmentMainService { |
|
|
|
QueryWrapper<BalanceDO> balanceDOQueryWrapper = new QueryWrapper<>(); |
|
|
|
balanceDOQueryWrapper.eq("item_code",saleShipmentDetailDO.getItemCode()); |
|
|
|
balanceDOQueryWrapper.eq("location_code",saleShipmentDetailDO.getFromLocationCode()); |
|
|
|
balanceDOQueryWrapper.eq("inventory_status",saleShipmentDetailDO.getInventoryStatus()); |
|
|
|
balanceDOQueryWrapper.eq("inventory_status","OK"); |
|
|
|
List<BalanceDO> balanceDOS = balanceMapper.selectList(balanceDOQueryWrapper); |
|
|
|
if(balanceDOS.size() == 0){ |
|
|
|
BalanceDO balanceDO = new BalanceDO(); |
|
|
|
balanceDO.setItemCode(saleShipmentDetailDO.getItemCode()); |
|
|
|
balanceDO.setLocationCode(saleShipmentDetailDO.getFromLocationCode()); |
|
|
|
balanceDO.setInventoryStatus(saleShipmentDetailDO.getInventoryStatus()); |
|
|
|
balanceDO.setQty(saleShipmentDetailDO.getQty()); |
|
|
|
BalanceDO balanceDONew = new BalanceDO(); |
|
|
|
balanceDONew.setItemCode(saleShipmentDetailDO.getItemCode()); |
|
|
|
balanceDONew.setLocationCode(saleShipmentDetailDO.getFromLocationCode()); |
|
|
|
balanceDONew.setInventoryStatus(saleShipmentDetailDO.getInventoryStatus()); |
|
|
|
balanceDONew.setQty(saleShipmentDetailDO.getQty()); |
|
|
|
LocationDO locationDO = locationService.selectLocation(saleShipmentDetailDO.getFromLocationCode()); |
|
|
|
if(locationDO != null) { |
|
|
|
balanceDO.setAreaCode(locationDO.getAreaCode()); |
|
|
|
balanceDO.setLocationGroupCode(locationDO.getLocationGroupCode()); |
|
|
|
balanceDO.setWarehouseCode(locationDO.getWarehouseCode()); |
|
|
|
balanceDONew.setAreaCode(locationDO.getAreaCode()); |
|
|
|
balanceDONew.setLocationGroupCode(locationDO.getLocationGroupCode()); |
|
|
|
balanceDONew.setWarehouseCode(locationDO.getWarehouseCode()); |
|
|
|
} |
|
|
|
String key = balanceDO.getItemCode()+"#"+balanceDO.getLocationCode(); |
|
|
|
String key = balanceDONew.getItemCode()+"#"+balanceDONew.getLocationCode(); |
|
|
|
if(balanceMap.containsKey(key)){ |
|
|
|
List<BalanceDO> balanceDOList = balanceMap.get(key); |
|
|
|
balanceDOList.add(balanceDO); |
|
|
|
balanceDOList.add(balanceDONew); |
|
|
|
balanceMap.put(key,balanceDOList); |
|
|
|
}else { |
|
|
|
List<BalanceDO> balanceDOList = new ArrayList<>(); |
|
|
|
balanceDOList.add(balanceDO); |
|
|
|
balanceDOList.add(balanceDONew); |
|
|
|
balanceMap.put(key,balanceDOList); |
|
|
|
} |
|
|
|
balanceList.add(balanceDO); |
|
|
|
balanceList.add(balanceDONew); |
|
|
|
}else { |
|
|
|
for(BalanceDO balanceDO:balanceDOS){ |
|
|
|
String key = balanceDO.getItemCode()+"#"+balanceDO.getLocationCode(); |
|
|
@ -426,8 +426,8 @@ public class SaleShipmentMainServiceImpl implements SaleShipmentMainService { |
|
|
|
balanceDOList.add(balanceDO); |
|
|
|
balanceMap.put(key,balanceDOList); |
|
|
|
} |
|
|
|
balanceList.add(balanceDO); |
|
|
|
} |
|
|
|
balanceList.add(balanceDOS.get(0)); |
|
|
|
} |
|
|
|
} |
|
|
|
// List<BalanceDO> balanceList = balanceService.selectByBusinessType(mainDO.getBusinessType(), itemCodeSet, new ArrayList<String>(Arrays.asList("OK")), locationCodes);
|
|
|
@ -568,7 +568,7 @@ public class SaleShipmentMainServiceImpl implements SaleShipmentMainService { |
|
|
|
}else { |
|
|
|
diffeBalance = bo.getQty().subtract(transactionCreateReqVO.getQty()); |
|
|
|
} |
|
|
|
if (diffeBalance.compareTo(BigDecimal.ZERO) >= 0) { |
|
|
|
if (diffeBalance.compareTo(BigDecimal.ZERO) >= 0 && recordDetailDO.getQty().compareTo(BigDecimal.ZERO) >= 0) { |
|
|
|
transactionCreateReqVO.setBatch(bo.getBatch()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
recordDetailDO.setBatch(bo.getBatch()); |
|
|
@ -576,14 +576,25 @@ public class SaleShipmentMainServiceImpl implements SaleShipmentMainService { |
|
|
|
bo.setQty(diffeBalance); |
|
|
|
balanceMap.put(key,qtylist); |
|
|
|
break; |
|
|
|
} else if (diffeBalance.compareTo(BigDecimal.ZERO) < 0) { |
|
|
|
} else if (diffeBalance.compareTo(BigDecimal.ZERO) >= 0 && recordDetailDO.getQty().compareTo(BigDecimal.ZERO) < 0) { |
|
|
|
transactionCreateReqVO.setBatch(bo.getBatch()); |
|
|
|
transactionCreateReqVO.setQty(recordDetailDO.getQty().abs()); |
|
|
|
TransactiontypeDO inTransactiontypeDO = jobUtils.selectDocumentFromTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
transactionCreateReqVO.setInventoryAction(inTransactiontypeDO.getInventoryAction()); |
|
|
|
transactionCreateReqVO.setTransactionType(businesstypeDO.getInTransactionType()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO); |
|
|
|
recordDetailDO.setBatch(bo.getBatch()); |
|
|
|
recordDetailDOList.add(recordDetailDO); |
|
|
|
bo.setQty(diffeBalance); |
|
|
|
balanceMap.put(key,qtylist); |
|
|
|
break; |
|
|
|
}else if (diffeBalance.compareTo(BigDecimal.ZERO) < 0) { |
|
|
|
TransactionCreateReqVO transactionCreateReqVO1 = new TransactionCreateReqVO(); |
|
|
|
BeanUtils.copyProperties(transactionCreateReqVO, transactionCreateReqVO1); |
|
|
|
transactionCreateReqVO1.setBatch(bo.getBatch()); |
|
|
|
transactionCreateReqVO1.setQty(bo.getQty()); |
|
|
|
transactionCreateReqVOList.add(transactionCreateReqVO1); |
|
|
|
transactionCreateReqVO.setQty(transactionCreateReqVO.getQty().subtract(bo.getQty())); |
|
|
|
|
|
|
|
SaleShipmentDetailRecordDO recordDetailDO1 = new SaleShipmentDetailRecordDO(); |
|
|
|
BeanUtils.copyProperties(recordDetailDO, recordDetailDO1); |
|
|
|
recordDetailDO1.setBatch(bo.getBatch()); |
|
|
|