@ -27,6 +27,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page ;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity ;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient ;
import com.logpm.distribution.bean.Resp ;
import com.logpm.distribution.dto.DistributionStockListDTO ;
import com.logpm.distribution.dto.DistrilbutionBillLadingDTO ;
import com.logpm.distribution.dto.app.BillLadingAppDTO ;
@ -61,6 +62,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service ;
import org.springframework.transaction.annotation.Transactional ;
import java.io.Serializable ;
import java.math.BigDecimal ;
import java.text.SimpleDateFormat ;
import java.util.* ;
@ -486,52 +488,67 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
@Override
public IPage < DistrilbutionBillLadingAppVO > pageListApp ( IPage < Object > page , BillLadingAppDTO billLadingAppDTO ) {
IPage < DistrilbutionBillLadingAppVO > pageList = baseMapper . pageListApp ( page , billLadingAppDTO ) ;
List < DistrilbutionBillLadingAppVO > records = pageList . getRecords ( ) ;
for ( DistrilbutionBillLadingAppVO vo : records ) {
//有可能存在多个订单所以需要拆分
String stockArticleId = vo . getStockArticleId ( ) ;
Integer orderNum = 0 ;
Integer planNum = 0 ;
Integer signedNum = 0 ;
String [ ] split = stockArticleId . split ( "," ) ;
for ( String s : split ) {
if ( StringUtil . isBlank ( s ) ) {
continue ;
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient . getMyCurrentWarehouse ( ) ;
if ( ObjectUtils . isNotNull ( myCurrentWarehouse ) ) {
billLadingAppDTO . setWarehouseId ( myCurrentWarehouse . getId ( ) ) ; //仓库ID
if ( ObjectUtils . isNotNull ( billLadingAppDTO . getPickUpTimeStart ( ) ) & & ObjectUtils . isNotNull ( billLadingAppDTO . getPickUpTimeEnd ( ) ) ) {
billLadingAppDTO . setPickUpTimeStart ( billLadingAppDTO . getPickUpTimeStart ( ) + " 00:00:00" ) ;
billLadingAppDTO . setPickUpTimeEnd ( billLadingAppDTO . getPickUpTimeEnd ( ) + " 23:59:59" ) ;
}
IPage < DistrilbutionBillLadingAppVO > pageList = baseMapper . pageListApp ( page , billLadingAppDTO ) ;
List < DistrilbutionBillLadingAppVO > records = pageList . getRecords ( ) ;
for ( DistrilbutionBillLadingAppVO vo : records ) {
//有可能存在多个订单所以需要拆分
String stockArticleId = vo . getStockArticleId ( ) ;
Integer orderNum = 0 ;
Integer planNum = 0 ;
Integer signedNum = 0 ;
Integer inventoryNub = 0 ; //库存品
String [ ] split = stockArticleId . split ( "," ) ;
for ( String s : split ) {
if ( StringUtil . isBlank ( s ) ) {
continue ;
}
orderNum + + ;
QueryWrapper < DistributionParcelListEntity > queryWrapper = new QueryWrapper < > ( ) ;
queryWrapper . eq ( "stock_article_id" , Long . parseLong ( s ) )
. eq ( "is_deleted" , 0 ) ;
List < DistributionParcelListEntity > list = distributionParcelListService . list ( queryWrapper ) ;
int pn = list . size ( ) ;
planNum = planNum + pn ;
//通过订单id查询扫描表中有多少数据
QueryWrapper < DistributionBillLadingScanEntity > qw = new QueryWrapper < > ( ) ;
qw . eq ( "stock_article_id" , Long . parseLong ( s ) )
. eq ( "is_deleted" , 0 ) ;
List < DistributionBillLadingScanEntity > ls = distributionBillLadingScanService . list ( qw ) ;
int sn = ls . size ( ) ;
signedNum = signedNum + sn ;
}
//查询库存品的件数量
DistributionDeliveryDetailsVO list = distributionDeliveryDetailsService . oneListNum ( vo . getBillLadingId ( ) ) ;
if ( ObjectUtils . isNotNull ( list ) ) {
inventoryNub + = list . getWholeNum ( ) ;
// planNum += list.getWholeNum();
signedNum + = list . getEsauNum ( ) ;
vo . setInventoryNum ( list . getWholeNum ( ) ) ;
} else {
vo . setInventoryNum ( 0 ) ;
}
orderNum + + ;
QueryWrapper < DistributionParcelListEntity > queryWrapper = new QueryWrapper < > ( ) ;
queryWrapper . eq ( "stock_article_id" , Long . parseLong ( s ) )
. eq ( "is_deleted" , 0 ) ;
List < DistributionParcelListEntity > list = distributionParcelListService . list ( queryWrapper ) ;
int pn = list . size ( ) ;
planNum = planNum + pn ;
//通过订单id查询扫描表中有多少数据
QueryWrapper < DistributionBillLadingScanEntity > qw = new QueryWrapper < > ( ) ;
qw . eq ( "stock_article_id" , Long . parseLong ( s ) )
. eq ( "is_deleted" , 0 ) ;
List < DistributionBillLadingScanEntity > ls = distributionBillLadingScanService . list ( qw ) ;
int sn = ls . size ( ) ;
signedNum = signedNum + sn ;
vo . setOrderNum ( orderNum ) ;
vo . setPlanNum ( planNum ) ;
vo . setSignedNum ( signedNum ) ;
vo . setInventoryNub ( inventoryNub ) ;
}
//查询库存品的件数量
DistributionDeliveryDetailsVO list = distributionDeliveryDetailsService . oneListNum ( vo . getBillLadingId ( ) ) ;
if ( ObjectUtils . isNotNull ( list ) ) {
pageList . setRecords ( records ) ;
planNum + = list . getWholeNum ( ) ;
signedNum + = list . getEsauNum ( ) ;
vo . setInventoryNum ( list . getWholeNum ( ) ) ;
} else {
vo . setInventoryNum ( 0 ) ;
}
vo . setOrderNum ( orderNum ) ;
vo . setPlanNum ( planNum ) ;
vo . setSignedNum ( signedNum ) ;
return pageList ;
} else {
log . warn ( "#####仓库信息数据未查询处理" ) ;
return null ;
}
pageList . setRecords ( records ) ;
return pageList ;
}
@Override
@ -630,9 +647,14 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
signedNum + = list2 . size ( ) ;
}
planNum + = list . stream ( ) . mapToInt ( DistributionDeliveryDetailsEntity : : getQuantity ) . sum ( ) ;
// planNum += list.stream().mapToInt(DistributionDeliveryDetailsEntity::getQuantity).sum();
DistrilbutionAppBillLadingOrderMainVO mainVO = new DistrilbutionAppBillLadingOrderMainVO ( ) ;
mainVO . setOrderNum ( orderNum ) ;
if ( list . size ( ) > 0 ) {
mainVO . setInventoryNub ( list . stream ( ) . mapToInt ( DistributionDeliveryDetailsEntity : : getQuantity ) . sum ( ) ) ;
} else {
mainVO . setInventoryNub ( 0 ) ;
}
mainVO . setPlanNum ( planNum ) ;
mainVO . setSignedNum ( signedNum ) ;
mainVO . setCompleteNum ( conpleteNum ) ;
@ -912,13 +934,17 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
* /
@Override
@Transactional ( rollbackFor = Exception . class )
public R getScan ( Map < String , Object > distrilbutionBillLading ) {
public Resp getScan ( Map < String , Object > distrilbutionBillLading ) {
Object billLadingId = distrilbutionBillLading . get ( "id" ) ; //提货ID
Object coding = distrilbutionBillLading . get ( "coding" ) ; //包条码
Object type = distrilbutionBillLading . get ( "type" ) ; //类型 2 订单 1 库存品
if ( Func . isNull ( billLadingId ) | | Func . isNull ( coding ) | | Func . isNull ( type ) ) {
return R . fail ( 3000 , "参数不完整,你干啥呢!!" ) ;
return ( Resp ) R . fail ( 3000 , "参数不完整,你干啥呢!!" ) ;
} else {
DistrilbutionBillLadingEntity billLadingEntity1 = baseMapper . selectById ( ( Serializable ) billLadingId ) ;
if ( ObjectUtils . isNotNull ( billLadingEntity1 ) & & billLadingEntity1 . getConditions ( ) . equals ( "20" ) ) {
return Resp . scanFail ( "任务已完成!" , "任务已完成!" ) ;
}
//查询是否签收
List < DistributionBillLadingScanEntity > list3 = distributionBillLadingScanService . list ( Wrappers . < DistributionBillLadingScanEntity > query ( ) . lambda ( )
. eq ( DistributionBillLadingScanEntity : : getBillLadingId , billLadingId )
@ -926,7 +952,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
. eq ( DistributionBillLadingScanEntity : : getPacketBarCode , coding )
) ;
if ( list3 . size ( ) > 0 ) {
return R . fail ( 3001 , "已签收!" ) ;
return Resp . scanFail ( "已签收!" , "已签收!" ) ;
}
//添加扫描记录
@ -947,13 +973,16 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
//修改完成状态
distributionAsyncService . getInventoryOrderSelfPickup ( inventoryAppVO . getLdddId ( ) ) ;
}
if ( list . size ( ) > inventoryAppVO . getQuantity ( ) ) {
return Resp . scanFail ( "已完成!" , "已完成!!" ) ;
}
//修改库存品签收
distributionAsyncService . getInventorySelfPickup ( inventoryAppVO . getStockArticleId ( ) ) ;
distributionBillLadingScan . setPacketBarCode ( ( String ) coding ) ;
distributionBillLadingScan . setStockListId ( inventoryAppVO . getStockListId ( ) ) ;
distributionBillLadingScanService . save ( distributionBillLadingScan ) ;
} else {
return R . fail ( 3000 , "包件信息不存在" ) ;
return Resp . scanFail ( "包件信息不存在" , "包件信息不存在" ) ;
}
} else {
//查询订单存在吗
@ -961,7 +990,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
. eq ( DistrilbutionBillStockEntity : : getBillLadingId , billLadingId )
) ;
if ( list . size ( ) < 1 ) {
return R . fail ( 3000 , "当前提货任务,订单不存在!" ) ;
return Resp . scanFail ( "当前提货任务,订单不存在!" , "当前提货任务,订单不存在!" ) ;
} else {
AtomicBoolean n = new AtomicBoolean ( false ) ;
list . forEach ( so - > {
@ -981,7 +1010,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
. eq ( DistributionBillLadingScanEntity : : getMaterialType , "2" )
. eq ( DistributionBillLadingScanEntity : : getBillLadingId , billLadingId )
) ;
//判断当前签收数
//判断当前签收数 修改订单和备货订单状态
if ( one . getTotalNumber ( ) . equals ( list2 . size ( ) + 1 ) ) {
DistrilbutionBillStockEntity one1 = distrilbutionBillStockService . getOne ( Wrappers . < DistrilbutionBillStockEntity > query ( ) . lambda ( )
@ -989,7 +1018,9 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
. eq ( DistrilbutionBillStockEntity : : getStockArticleId , one . getId ( ) )
. eq ( DistrilbutionBillStockEntity : : getConditions , "1" )
) ;
//修改订单状态
distributionAsyncService . getOrderSelfPickup ( list1 . get ( 0 ) . getId ( ) ) ;
//修改备货订单状态
distributionAsyncService . getBillStock ( one1 . getId ( ) ) ;
}
//修改包件状态
@ -1005,28 +1036,31 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
if ( n . get ( ) ) {
distributionBillLadingScanService . save ( distributionBillLadingScan ) ;
} else {
return R . fail ( 3000 , "当前订单,包件不存在!!" ) ;
return Resp . scanFail ( "当前订单,包件不存在!!" , "当前订单,包件不存在!!" ) ;
}
}
}
//判断当前自提任务完成没有
//查询订单数
List < DistrilbutionBillStockEntity > list = distrilbutionBillStockService . list ( Wrappers . < DistrilbutionBillStockEntity > query ( ) . lambda ( )
. eq ( DistrilbutionBillStockEntity : : getBillLadingId , billLadingId )
) ;
//查询库存品数
List < DistributionDeliveryDetailsEntity > list1 = distributionDeliveryDetailsService . list ( Wrappers . < DistributionDeliveryDetailsEntity > query ( ) . lambda ( )
. eq ( DistributionDeliveryDetailsEntity : : getBillLadingId , billLadingId )
) ;
long count = list . stream ( ) . filter ( e - > e . getConditions ( ) . equals ( "2" ) ) . count ( ) ;
long count2 = list1 . stream ( ) . filter ( e - > e . getConditions ( ) . equals ( "2" ) ) . count ( ) ;
long count = list . stream ( ) . filter ( e - > e . getConditions ( ) . equals ( "2" ) ) . count ( ) ; // 订 已签收的数
long count2 = list1 . stream ( ) . filter ( e - > e . getConditions ( ) . equals ( "2" ) ) . count ( ) ; // 库 已签收的数
if ( Integer . parseInt ( String . valueOf ( count ) ) = = list . size ( ) & & Integer . parseInt ( String . valueOf ( count2 ) ) = = list1 . size ( ) ) {
//修改提货任务状态
DistrilbutionBillLadingEntity billLadingEntity = new DistrilbutionBillLadingEntity ( ) ;
billLadingEntity . setId ( ( Long ) billLadingId ) ;
billLadingEntity . setConsignee ( "2" ) ;
String bill = ( String ) billLadingId ;
billLadingEntity . setId ( Long . valueOf ( bill ) ) ;
billLadingEntity . setConditions ( "20" ) ;
baseMapper . updateById ( billLadingEntity ) ;
}
return R . fail ( 200 , "签收成功" ) ;
return Resp . scanFail ( "签收成功" , "签收成功" ) ;
}
}