@ -12,11 +12,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service ;
import java.math.BigDecimal ;
import java.util.Date ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
import java.util.* ;
import java.util.stream.Collectors ;
import java.util.stream.Stream ;
@Service
public class SecondWmsBoardServiceImpl implements SecondWmsBorderService {
@ -62,16 +60,32 @@ public class SecondWmsBoardServiceImpl implements SecondWmsBorderService {
public List < WmsProductInstock > inAndOutStockInfo ( ) {
List < WmsProductInstock > instocks = wmsProductStockMapper . selectInStock ( ) ;
List < WmsProductOutstock > outstocks = wmsProductStockMapper . selectOutStock ( ) ;
Map < Date , List < WmsProductOutstock > > map = outstocks . stream ( ) . collect ( Collectors . groupingBy ( WmsProductOutstock : : getDay ) ) ;
for ( WmsProductInstock instock : instocks ) {
if ( map ! = null & & map . keySet ( ) . size ( ) > 0 ) {
WmsProductOutstock wmsProductOutstock = map . get ( instock . getDay ( ) ) . get ( 0 ) ;
instock . setOutStockAmount ( wmsProductOutstock . getOutstockQty ( ) ) ;
} else {
instock . setOutStockAmount ( new BigDecimal ( 0 ) ) ;
Map < Date , List < WmsProductInstock > > instocksMap = instocks . stream ( ) . collect ( Collectors . groupingBy ( WmsProductInstock : : getDay ) ) ;
Map < Date , List < WmsProductOutstock > > outstocksMap = outstocks . stream ( ) . collect ( Collectors . groupingBy ( WmsProductOutstock : : getDay ) ) ;
Set < Date > dateSet = Stream . concat ( instocksMap . keySet ( ) . stream ( ) , outstocksMap . keySet ( ) . stream ( ) )
. collect ( Collectors . toCollection ( TreeSet : : new ) ) ;
List < WmsProductInstock > returnInstocks = new ArrayList < > ( ) ;
for ( Date date : dateSet ) {
WmsProductInstock returnInstock = new WmsProductInstock ( ) ;
returnInstock . setDay ( date ) ;
if ( instocksMap ! = null ) {
List < WmsProductInstock > wmsProductInstocks = instocksMap . get ( date ) ;
if ( wmsProductInstocks ! = null & & ! wmsProductInstocks . isEmpty ( ) ) {
returnInstock . setInstockAmount ( wmsProductInstocks . get ( 0 ) . getInstockAmount ( ) ) ;
}
}
return instocks ;
if ( outstocksMap ! = null ) {
List < WmsProductOutstock > wmsProductOutstocks = outstocksMap . get ( date ) ;
if ( wmsProductOutstocks ! = null & & ! wmsProductOutstocks . isEmpty ( ) ) {
returnInstock . setOutStockAmount ( wmsProductOutstocks . get ( 0 ) . getOutstockQty ( ) ) ;
}
}
returnInstocks . add ( returnInstock ) ;
}
return returnInstocks ;
}
@Override
@ -81,13 +95,13 @@ public class SecondWmsBoardServiceImpl implements SecondWmsBorderService {
@Override
public Map < String , BigDecimal > locationCount ( ) {
int availibleLocation = wmsProductStockMapper . selectAvailibleLocation ( ) ;
int toatlLocation = wmsProductStockMapper . selectTotalLocation ( ) ;
int availibleLocation = wmsProductStockMapper . selectAvailibleLocation ( ) ; //可用库位数量
int toatlLocation = wmsProductStockMapper . selectTotalLocation ( ) ; //获取总库位数量
int opplyLocation = wmsProductStockMapper . selectOpplyLocation ( ) ;
HashMap < String , BigDecimal > result = new HashMap < > ( ) ;
BigDecimal bigDecimal = new BigDecimal ( toatlLocation ) ;
BigDecimal availibleRate = new BigDecimal ( availibleLocation ) . divide ( bigDecimal , 2 , BigDecimal . ROUND_HALF_UP ) ;
BigDecimal opplyRate = new BigDecimal ( opplyLocation ) . divide ( bigDecimal , 2 , BigDecimal . ROUND_HALF_UP ) ;
BigDecimal availibleRate = new BigDecimal ( availibleLocation ) . divide ( bigDecimal , 2 , BigDecimal . ROUND_HALF_UP ) ; //可用库位占比
BigDecimal opplyRate = new BigDecimal ( opplyLocation ) . divide ( bigDecimal , 2 , BigDecimal . ROUND_HALF_UP ) ; //库存占用总库位的占用率
result . put ( "availibleRate" , availibleRate ) ;
result . put ( "opplyRate" , opplyRate ) ;
return result ;