@@ -132,7 +132,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
lock . unlock ( ) ;
}
}
log . info ( " 一楼装箱区点位二次分配接口请求返回结果: --------------------------------------------- " + result ) ;
log . info ( " 一楼装箱区点位二次分配" + taskCode + " --------------------------------------------- " + result ) ;
return result ;
}
@@ -144,6 +144,8 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
* @return 新的点位
*/
private String getNewPoint ( String taskCode , String actionType ) {
BstIvtPackageinfoivt newPoint ;
String taskPointType = null ;
//执行中的任务
SchBaseTask baseTask = taskService . getOne ( new LambdaQueryWrapper < SchBaseTask > ( )
. eq ( SchBaseTask : : getTask_code , taskCode )
@@ -158,19 +160,17 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
if ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货分配 " ) . equals ( actionType ) ) {
return baseTask . getPoint_code1 ( ) ;
}
// else if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货分配").equals(actionType)) {
//else if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货分配").equals(actionType)) {
//return baseTask.getPoint_code2();
// }
//}
}
}
BstIvtPackageinfoivt newPoint ;
String t askPointType = null ;
//检查是否满足二次分配条件
checkTaskInfo ( b aseTask ) ;
//空载具缓存位特殊二次分配逻辑:先判断是否有执行中的行架任务或补空载具任务,如未完成,不分配点位
if ( baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(管制区->空载具缓存位) " ) ) | |
baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(待检区->空载具缓存位) " ) )
) {
//检查是否满足二次分配条件
checkTaskInfo ( baseTask ) ;
newPoint = checkIvtSBlock ( baseTask ) ;
} else {
if ( baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 满轴缓存位->待检区 " ) ) ) {
@@ -179,22 +179,28 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
}
newPoint = getBstIvtPackageinfoivt ( actionType , taskPointType , baseTask ) ;
}
if ( StringUtils . isNotBlank ( newPoint . getPoint_code ( ) ) ) {
//更新任务起点或终点
if ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货分配 " ) . equals ( actionType ) ) {
baseTask . setPoint_code1 ( newPoint . getPoint_code ( ) ) ;
if ( StringUtils . isNotBlank ( newPoint . getContainer_name ( ) ) ) {
//更新子卷号
baseTask . setVehicle_code ( newPoint . getContainer_name ( ) ) ;
//分配的点位
if ( newPoint ! = null ) {
if ( StringUtils . isNotBlank ( newPoint . getPoint_code ( ) ) ) {
//更新任务起点或终点
if ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货分配 " ) . equals ( actionType ) ) {
baseTask . setPoint_code1 ( newPoint . getPoint_code ( ) ) ;
if ( StringUtils . isNotBlank ( newPoint . getContainer_name ( ) ) ) {
//更新子卷号
baseTask . setVehicle_code ( newPoint . getContainer_name ( ) ) ;
}
} else if ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 放货分配 " ) . equals ( actionType ) ) {
baseTask . setPoint_code2 ( newPoint . getPoint_code ( ) ) ;
}
} else if ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 放货分配 " ) . equals ( actionType ) ) {
baseTask . setPoint_code2 ( newPoint . getPoint_code ( ) ) ;
//标记二次分配已分配过点位
baseTask . setResponse_param ( IOSEnum . IS_NOTANDYES . code ( " 是 " ) ) ;
taskService . updateById ( baseTask ) ;
log . info ( " 一楼装箱区二次分配 " + taskCode + " ,接口返回最新点位:--------------------------------------------- " + newPoint . getPoint_code ( ) ) ;
return newPoint . getPoint_code ( ) ;
} else {
log . info ( " 一楼装箱区二次分配 " + taskCode + " ,分配失败,暂无点位资源或点位外层有载具阻挡! " ) ;
throw new BadRequestException ( " 一楼装箱区二次分配 " + taskCode + " ,分配失败,暂无点位资源或点位外层有载具阻挡! " ) ;
}
//标记二次分配已分配过点位
baseTask . setResponse_param ( IOSEnum . IS_NOTANDYES . code ( " 是 " ) ) ;
taskService . updateById ( baseTask ) ;
log . info ( " 一楼装箱区二次分配 " + taskCode + " ,接口返回最新点位:--------------------------------------------- " + newPoint . getPoint_code ( ) ) ;
return newPoint . getPoint_code ( ) ;
} else {
log . info ( " 一楼装箱区二次分配 " + taskCode + " ,分配失败,暂无点位资源或点位外层有载具阻挡! " ) ;
throw new BadRequestException ( " 一楼装箱区二次分配 " + taskCode + " ,分配失败,暂无点位资源或点位外层有载具阻挡! " ) ;
@@ -213,6 +219,8 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
*/
@Override
public List < BstIvtPackageinfoivt > checkEndPointTask ( String ivtType , String ivtStatus , String pointCode , String sortType , String taskType ) {
List < SchBaseTask > taskList ;
Set < String > pointSets ;
List < BstIvtPackageinfoivt > returList = new ArrayList < > ( ) ;
List < BstIvtPackageinfoivt > packageinfoivtList = getBstIvtPackageinfoivts ( ivtType , ivtStatus , sortType ) ;
Set < String > pointIds = packageinfoivtList . stream ( )
@@ -224,8 +232,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
if ( pointCode = = null ) {
return packageinfoivtList ;
}
List < SchBaseTask > taskList ;
Set < String > pointSets ;
if ( pointCode . equals ( PackageInfoIvtEnum . TASK_POINT_TYPE . code ( " 取货任务 " ) ) | | pointCode . equals ( PackageInfoIvtEnum . TASK_POINT_TYPE . code ( " 放货任务 " ) ) ) {
taskList = bstIvtPackageinfoivtMapper . getTaskList ( pointIds , pointIds , null , null ) ;
} else if ( pointCode . equals ( PackageInfoIvtEnum . TASK_POINT_TYPE . code ( " 取货分配 " ) ) ) {
@@ -233,7 +239,9 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
} else if ( pointCode . equals ( PackageInfoIvtEnum . TASK_POINT_TYPE . code ( " 放货分配 " ) ) ) {
taskList = bstIvtPackageinfoivtMapper . getTaskList ( pointIds , pointIds , null , pointIds ) ;
} else if ( pointCode . equals ( PackageInfoIvtEnum . TASK_POINT_TYPE . code ( " 四个点任务分配 " ) ) ) {
taskList = bstIvtPackageinfoivtMapper. getTaskList( pointIds, null , null , null ) ;
// taskList = bstIvtPackageinfoivtMapper. getTaskList( pointIds, null, null, null) ;
//四个点任务取货分配条件为取货完成信号即刻更新库存,所以不判断是否有起点任务
taskList = new ArrayList < > ( ) ;
} else if ( pointCode . equals ( PackageInfoIvtEnum . TASK_POINT_TYPE . code ( " 四个点任务放货 " ) ) ) {
taskList = bstIvtPackageinfoivtMapper . getTaskList ( pointIds , null , pointIds , null ) ;
} else if ( pointCode . equals ( PackageInfoIvtEnum . TASK_POINT_TYPE . code ( " 空载具放货 " ) ) ) {
@@ -331,7 +339,10 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
* 获取没有阻挡的点位
*/
private List < BstIvtPackageinfoivt > getNoBlockIvt ( String pointCode , List < SchBaseTask > taskList , List < BstIvtPackageinfoivt > ivtList ) {
Set < String > taskPointSet = taskList . stream ( ) . map ( SchBaseTask : : getPoint_code2 ) . filter ( pointCode2 - > ! pointCode2 . equals ( " ZXQ_01_1 " ) ) . collect ( Collectors . toSet ( ) ) ;
Set < String > taskPointSet = null ;
if ( CollectionUtils . isEmpty ( taskList ) ) {
taskPointSet = taskList . stream ( ) . map ( SchBaseTask : : getPoint_code2 ) . filter ( pointCode2 - > ! pointCode2 . equals ( " ZXQ_01_1 " ) ) . collect ( Collectors . toSet ( ) ) ;
}
List < BstIvtPackageinfoivt > pointList = new ArrayList < > ( ) ;
//存在补空载具任务已分配却未完成的任务
if ( CollectionUtils . isEmpty ( taskPointSet ) ) {
@@ -353,47 +364,73 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
}
/**
* 检查是 否满足二次 分配条件
* 校验各类型的取放货分配 否满足分配条件
*/
private void checkTaskInfo ( SchBaseTask baseTask ) {
List < SchBaseTask > taskList1 = taskService . list ( new LambdaQueryWrapper < SchBaseTask > ( )
. lt ( SchB aseTask: : getTask_status , TaskStatusEnum . FINISHED . getC ode( ) )
. eq ( SchBaseTask : : getIs_delete , IOSEnum . IS_NOTANDYES . code ( " 否 " ) )
. and (
r - > r . eq ( SchBaseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(管制区->空载具缓存位) " ) )
. or ( )
. eq ( SchBaseTask : : getTask_typ e , PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(待检区->空载具缓存位) " )
) ) ) ;
if ( CollectionUtils . isNotEmpty ( taskList1 ) ) {
List < SchBaseTask > taskList3 = taskList1 . stream ( ) . filter ( r - > StringUtils . isNotBlank ( r . getResponse_param ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( taskList3 . size ( ) = = 1 ) {
//校验已分配的补空载具任务是否为当前请求的任务,是可重新分配,否不允许重新分配
if ( ! taskList3 . get ( 0 ) . getTask_code ( ) . equals ( baseTask . getTask_code ( ) ) ) {
log . info ( " 一楼装箱区二次分配 " + taskList3 . get ( 0 ) . getTask_code ( ) + " ,分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区二次分配 " + taskList3 . get ( 0 ) . getTask_code ( ) + " ,分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查! " ) ;
//补空载具放货任务
if ( b aseTask. getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . c ode( " 补空(管制区->空载具缓存位) " ) ) | |
baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(待检区->空载具缓存位) " ) )
) {
List < SchBaseTask > taskList = taskService . list ( new LambdaQueryWrapper < SchBaseTask > ( )
. lt ( SchBaseTask : : getTask_status , TaskStatusEnum . FINISHED . getCode ( ) )
. eq ( SchBaseTask : : getIs_delet e , IOSEnum . IS_NOTANDYES . code ( " 否 " ) )
. and (
r - > r . eq ( SchBaseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(管制区->空载具缓存位) " ) )
. or ( )
. eq ( SchBaseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(待检区->空载具缓存位) " ) )
. or ( )
. eq ( SchBaseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 输送线四个点任务 " ) )
. or ( )
. eq ( SchBaseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 放空(空载具缓存位->输送线) " ) )
) ) ;
//是否有执行中已分配补空载具任务
List < SchBaseTask > taskList1 = taskList . stream ( ) . filter ( r - > r . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(管制区->空载具缓存位) " ) ) | | r . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 补空(待检区->空载具缓存位) " ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isNotEmpty ( taskList1 ) ) {
List < SchBaseTask > taskList2 = taskList1 . stream ( ) . filter ( r - > StringUtils . isNotBlank ( r . getResponse_param ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( taskList2 . size ( ) = = 1 ) {
//校验已分配的补空载具任务是否为当前请求的任务,是可重新分配,否不允许重新分配
if ( ! taskList2 . get ( 0 ) . getTask_code ( ) . equals ( baseTask . getTask_code ( ) ) ) {
log . info ( " 一楼装箱区放货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的补空载具任务编号为: " + taskList2 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区放货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的补空载具任务编号为: " + taskList2 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
}
} else if ( taskList2 . size ( ) > 1 ) {
log . info ( " 一楼装箱区放货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的补空载具任务编号为: " + taskList2 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区放货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的补空载具任务编号为: " + taskList2 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
}
} else if ( taskList3 . size ( ) > 1 ) {
log . info ( " 一楼装箱区二次分配 " + taskList3 . get ( 0 ) . getTask_code ( ) + " ,分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区二次分配: " + taskList3 . get ( 0 ) . getTask_code ( ) + " ,分配失败,存在多个或上一个已分配的补空载具任务未完成,请检查! " ) ;
}
}
//是否有执行中的行架任务,有等待取空载具任务完成再分配
List < SchBaseTask > taskList2 = taskService . l ist ( new LambdaQueryWrapper < SchBaseTask > ( )
. lt ( SchBaseTask : : getTask_status , TaskStatusEnum . FINISHED . getCode ( ) )
. eq ( SchBaseTask : : getIs_delete , IOSEnum . IS_NOTANDYES . code ( " 否 " ) )
. and (
r - > r . eq ( SchBaseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 输送线四个点任务 " ) )
. or ( )
. eq ( SchB aseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 放空(空载具缓存位->输送线) " )
) ) ) ;
if ( CollectionUtils . isNotEmpty ( taskList2 ) ) {
if ( StringUtils . isBlank ( taskList2 . get ( 0 ) . getRequest_param ( ) ) ) {
log . info ( " 一楼装箱区二次分配 " + taskList2 . get ( 0 ) . getTask_code ( ) + " ,分配失败,请等待桁架任务取空载具动作执行完成 " ) ;
throw new BadRequestException ( " 一楼装箱区二次分配 " + taskList2 . get ( 0 ) . getTask_code ( ) + " ,分配失败,请等待桁架任务取空载具动作执行完成 " ) ;
} else {
if ( ! taskList2 . ge t( 0 ) . getRequest_param ( ) . equals ( PackageInfoIvtEnum . TASK_ACTION_TYPE . c ode( " 取货完成 " ) ) ) {
log . info ( " 一楼装箱区二次分配 " + taskList2 . get ( 0 ) . getTask_code ( ) + " ,分配失败,请等待桁架任务取空载具动作执行完成 " ) ;
throw new BadRequestException ( " 一楼装箱区二次分配 " + taskList2 . get ( 0 ) . getTask_code ( ) + " ,分配失败,请等待桁架任务取空载具动作执行完成 " ) ;
//是否有执行中的行架任务,有等待取空载具任务完成再分配
List < SchBaseTask > taskList3 = taskList . stream ( ) . filter ( r - > r . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 输送线四个点任务 " ) ) | | r . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 放空(空载具缓存位->输送线) " ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isNotEmpty ( taskList3 ) ) {
if ( StringUtils . isBlank ( taskList3 . get ( 0 ) . getRequest_param ( ) ) ) {
log . info ( " 一楼装箱区放货分配 " + baseTask . getTask_code ( ) + " ,分配失败,请等待桁架任务编号为: " + taskList3 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区放货分配 " + baseTask . getTask_code ( ) + " ,分配失败,请等待桁架任务编号为: " + taskList3 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
} else {
if ( ! taskList3 . get ( 0 ) . getRequest_param ( ) . equals ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货完成 " ) ) ) {
log . info ( " 一楼装箱区放货分配 " + b aseTask . getTask_code ( ) + " ,分配失败,请等待桁架任务编号为: " + taskList3 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区放货分配 " + baseTask . getTask_code ( ) + " ,分配失败,请等待桁架任务编号为: " + taskList3 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
}
}
}
} else if ( baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 满轴缓存位->待检区 " ) ) ) {
List < SchBaseTask > taskList = taskService . list ( new LambdaQueryWrapper < SchBaseTask > ( )
. l t( SchBaseTask : : getTask_status , TaskStatusEnum . FINISHED . getC ode( ) )
. eq ( SchBaseTask : : getIs_delete , IOSEnum . IS_NOTANDYES . code ( " 否 " ) )
. eq ( SchBaseTask : : getTask_type , PackageInfoIvtEnum . TASK_TYPE . code ( " 满轴缓存位->待检区 " ) ) ) ;
//满轴缓存位->待检区agv任务如果分配了起点, 是否发送取货完成信息, 否, 则需等待此任务发送取货完成信号才能分配第2个任务的起点
List < SchBaseTask > taskList1 = taskList . stream ( ) . filter ( r - > StringUtils . isNotBlank ( r . getResponse_param ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isNotEmpty ( taskList1 ) ) {
//多个已分配的未完成的取满轴任务,需要全部取货完成才能继续分配
List < SchBaseTask > taskList2 = taskList1 . stream ( ) . filter ( r - > StringUtils . isBlank ( r . getRequest_param ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isNotEmpty ( taskList2 ) ) {
log . info ( " 一楼装箱区取货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的取满轴任务编号为: " + taskList2 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区取货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的取满轴任务编号为: " + taskList2 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
}
List < SchBaseTask > taskList3 = taskList1 . stream ( ) . filter ( r - > StringUtils . isNotBlank ( r . getRequest_param ( ) ) ) . collect ( Collectors . toList ( ) ) ;
if ( CollectionUtils . isNotEmpty ( taskList3 ) ) {
if ( taskList3 . stream ( ) . anyMatch ( r - > ! r . getRequest_param ( ) . equals ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货完成 " ) ) ) ) {
log . info ( " 一楼装箱区取货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的取满轴任务编号为: " + taskList3 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
throw new BadRequestException ( " 一楼装箱区取货分配 " + baseTask . getTask_code ( ) + " ,分配失败,存在已分配的取满轴任务编号为: " + taskList3 . get ( 0 ) . getTask_code ( ) + " 的任务未完成,请检查! " ) ;
}
}
}
}
@@ -402,8 +439,12 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
/**
* 根据点位类型查询库存
*
* @param ivtType 点位类型
* @param ivtStatus 库存状态
* @param sortType 排序
*/
private List < BstIvtPackageinfoivt > getBstIvtPackageinfoivts ( String ivtType , String ivtStatus , String sortType ) {
public List < BstIvtPackageinfoivt > getBstIvtPackageinfoivts ( String ivtType , String ivtStatus , String sortType ) {
LambdaQueryWrapper < BstIvtPackageinfoivt > queryWrapper = new LambdaQueryWrapper < BstIvtPackageinfoivt > ( )
. eq ( BstIvtPackageinfoivt : : getIs_used , PackageInfoIvtEnum . IS_USED . code ( " 启用 " ) )
. eq ( BstIvtPackageinfoivt : : getPoint_status , ivtType ) ;
@@ -468,23 +509,27 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
String pointCode ;
//取满轴
if ( baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 满轴缓存位->待检区 " ) ) ) {
//过滤未二次分配的任务
if ( StringUtils . isBlank ( baseTask . getResponse_param ( ) ) ) {
throw new BadRequestException ( " 该任务任务号为: " + baseTask . getTask_code ( ) + " ,起点未进行二次分配! " ) ;
}
List < BstIvtPackageinfoivt > ivtList = packageinfoivtService . list ( new LambdaQueryWrapper < BstIvtPackageinfoivt > ( )
. eq ( BstIvtPackageinfoivt : : getIs_used , PackageInfoIvtEnum . IS_USED . code ( " 启用 " ) )
. eq ( BstIvtPackageinfoivt : : getPoint_code , baseTask . getPoint_code1 ( ) ) ) ;
if ( CollectionUtils . isEmpty ( ivtList ) ) {
throw new BadRequestException ( " 任务编号为: " + baseTask . getTask_code ( ) + " 取货完成的目标点位不存在! " ) ;
throw new BadRequestException ( " 任务编号为: " + baseTask . getTask_code ( ) + " agv 取货完成的目标点位不存在!" ) ;
}
//只有子卷号相同才能清除库存
if ( baseTask . getVehicle_code ( ) . equals ( ivtList . get ( 0 ) . getContainer_name ( ) ) ) {
upDateIvtOrTask ( baseTask , baseTask . getPoint_code1 ( ) , false );
upDateIvtOrTask ( baseTask , baseTask . getPoint_code1 ( ) ) ;
}
} else if ( baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 输送线四个点任务 " ) ) | | baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 放空(空载具缓存位->输送线) " ) ) ) {
pointCode = baseTask . getTask_type ( ) . equals ( PackageInfoIvtEnum . TASK_TYPE . code ( " 输送线四个点任务 " ) ) ? baseTask . getPoint_code3 ( ) : baseTask . getPoint_code1 ( ) ;
if ( StringUtils . isBlank ( baseTask . getRequest_param ( ) ) ) {
upDateIvtOrTask ( baseTask , pointCode , true );
upDateIvtOrTask ( baseTask , pointCode ) ;
} else if ( StringUtils . isNotBlank ( baseTask . getRequest_param ( ) ) ) {
if ( ! baseTask . getRequest_param ( ) . equals ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货完成 " ) ) ) {
upDateIvtOrTask ( baseTask , pointCode , true );
upDateIvtOrTask ( baseTask , pointCode ) ;
}
}
}
@@ -503,7 +548,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
. set ( " container_name " , baseTask . getVehicle_code ( ) )
. set ( " ivt_status " , PackageInfoIvtEnum . IVT_STATUS . code ( " 有子卷 " ) )
. eq ( " point_code " , baseTask . getPoint_code2 ( ) ) ) ;
log . info ( " 一楼装箱区二次分配的任务编号为: " + baseTask . getTask_code ( ) + " ,放货完成执行成功,放货信息:点位: " + baseTask . getPoint_code2 ( ) + " 子卷号为: " + baseTask . getVehicle_code ( ) ) ;
log . info ( " 一楼装箱区二次放货 分配 " + baseTask . getTask_code ( ) + " ,放货完成执行成功,放货信息:点位: " + baseTask . getPoint_code2 ( ) + " 子卷号为: " + baseTask . getVehicle_code ( ) ) ;
} else {
throw new BadRequestException ( " 该点位已有库存! " ) ;
}
@@ -514,21 +559,20 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
/**
* 取货完成更新点位或任务标识
*/
private void upDateIvtOrTask ( SchBaseTask baseTask , String pointCode , boolean isUpDateTask ) {
private void upDateIvtOrTask ( SchBaseTask baseTask , String pointCode ) {
UpdateWrapper < BstIvtPackageinfoivt > updateWrapper = new UpdateWrapper < > ( ) ;
updateWrapper . eq ( " point_code " , pointCode ) ;
updateWrapper . set ( " ivt_status " , " 0 " ) ;
updateWrapper . set ( " container_name " , null ) ;
// 清空起点库存状态
//清空起点库存状态
bstIvtPackageinfoivtMapper . update ( null , updateWrapper ) ;
if ( isUpDateTask ) {
//标记桁架任务 取空载具完成
UpdateWrapper < SchBaseTask > updateWrapper1 = new UpdateWrapper < > ( ) ;
updateWrapper1 . eq ( " task_id " , baseTask . getTask_id ( ) ) ;
updateWrapper1 . set ( " request_param " , PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货完成 " ) ) ;
taskService . update ( updateWrapper1 ) ;
}
log . info ( " 一楼装箱区二次分配的任务编号为: " + baseTask . getTask_code ( ) + " ,取货完成执行成功,取货信息:点位: " + pointCode + " 子卷号为: " + baseTask . getVehicle_code ( ) ) ;
log . info ( " 一楼装箱区二次分配清空起点库存 " + baseTask . getTask_code ( ) + " ,执行成功,点位: " + pointCode + " 子卷号: " + baseTask . getVehicle_code ( ) ) ;
//标记取满轴或 取空载具完成
UpdateWrapper < SchBaseTask > updateWrapper1 = new UpdateWrapper < > ( ) ;
updateWrapper1 . eq ( " task_id " , baseTask . getTask_id ( ) ) ;
updateWrapper1 . set ( " request_param " , PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货完成 " ) ) ;
taskService . update ( updateWrapper1 ) ;
log . info ( " 一楼装箱区二次分配取货完成 " + baseTask . getTask_code ( ) + " ,取货完成执行成功,点位: " + pointCode + " 子卷号: " + baseTask . getVehicle_code ( ) ) ;
}
/**
@@ -537,8 +581,8 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
* @param baseTask 任务信息
*/
private BstIvtPackageinfoivt getBstIvtPackageinfoivt ( String actionType , String taskPointType , SchBaseTask baseTask ) {
BstIvtPackageinfoivt newPoint ;
String targetPoint = " " ;
BstIvtPackageinfoivt newPoint = null ;
String targetPoint = " " ;
//1取货任务2放货任务
LambdaQueryWrapper < BstIvtPackageinfoivt > queryWrapper = new LambdaQueryWrapper < > ( ) ;
if ( PackageInfoIvtEnum . TASK_ACTION_TYPE . code ( " 取货分配 " ) . equals ( actionType ) ) {
@@ -552,6 +596,10 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
targetPoint = taskPointType ;
}
BstIvtPackageinfoivt bstIvtPackageinfoivt = bstIvtPackageinfoivtMapper . selectOne ( queryWrapper ) ;
//无库存点位
if ( bstIvtPackageinfoivt = = null ) {
return newPoint ;
}
//根据任务类型返回点位分配规则
BstIvtPackageinfoivt ivtInfo = getIvtInfoFromRegion ( baseTask . getTask_type ( ) , actionType ) ;
List < BstIvtPackageinfoivt > newPointList = packageinfoivtService . checkEndPointTask ( bstIvtPackageinfoivt . getPoint_status ( ) , ivtInfo . getIvt_status ( ) , targetPoint , ivtInfo . getSort_seq ( ) . toString ( ) , " " ) ;