@@ -38,6 +38,7 @@ import org.nl.system.service.notice.ISysNoticeService;
import org.nl.system.service.param.ISysParamService ;
import org.nl.system.service.param.dao.Param ;
import org.nl.wms.ext.acs.service.WmsToAcsService ;
import org.nl.wms.sch.manage.TaskStatusEnum ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.stereotype.Component ;
import org.springframework.transaction.annotation.Transactional ;
@@ -126,9 +127,8 @@ public class AutoCallAirShaftTask extends Prun {
*/
@Transactional ( rollbackFor = Exception . class )
public void doCallShaft ( Param isOnlyPulling , Param tzDay , Param tzArea , Param useXn , Param max_qzz_num ) {
//查询套轴缓存位:点位启用、有子卷、气胀轴字段不为空、且无未完成的任务
//(1) 查询套轴缓存位:点位启用、有子卷、气胀轴字段不为空、且无未完成的任务
List < CutpointAirShhaftDto > notTaskPoints = bcutpointivtService . getAreaNotTaskPointByTcQzzPoint ( " " ) ;
//(1)若有拔轴任务,则会执行本段代码
//对满足的需拔轴子卷遍历下发任务,同时每次拔轴下发前判断是否有可以接续的套轴计划
for ( int i = 0 ; i < notTaskPoints . size ( ) ; i + + ) {
//获取需拔轴子卷信息
@@ -317,9 +317,9 @@ public class AutoCallAirShaftTask extends Prun {
//计划中需要的气胀轴代数
String qzz_generation = planDto . getQzz_generation ( ) ;
String product_area = " " ;
if ( StrUtil . equals ( qzz_generation , " 4 " ) ) {
if ( StrUtil . equals ( qzz_generation , SlitterConstant . SLITTER_PLAN_FOUR ) ) {
product_area = " A1 " ;
} else if ( StrUtil . equals ( qzz_generation , " 5 " ) ) {
} else if ( StrUtil . equals ( qzz_generation , SlitterConstant . SLITTER_PLAN_FIVE ) ) {
product_area = " B1 " ;
}
@@ -376,43 +376,53 @@ public class AutoCallAirShaftTask extends Prun {
}
//(3)套轴区自动移出空盘
//判断是否有可移出空盘:有库存、已启用、且属于套轴区点位
LambdaQueryWrapper < BstIvtStockingivt > stockL am = new LambdaQueryWrapper < > ( ) ;
stockL am. eq ( BstIvtStockingivt : : getIvt_status , SlitterConstant . SLITTER_YES )
. eq ( BstIvtStockingivt : : getIs_used , SlitterConstant . SLITTER_YES )
. eq ( BstIvtStockingivt : : getPoint_type , " 2 " ) ;
List < BstIvtStockingivt > stockList = stockingivtService . list ( stockLam ) ;
for ( int i = 0 ; i < stockList . size ( ) ; i + + ) {
BstIvtStockingivt stockNow = stockList . ge t( i ) ;
//载具号
String vehicleCode = stockNow . getVehicle_code ( ) ;
//点位号
String point_code = stockNow . getPoint_code ( ) ;
//判断是否有自动移出托盘的任务下发,如果有则跳过代码
LambdaQueryWrapper < SchBaseTask > l am = new LambdaQueryWrapper < > ( ) ;
l am. eq ( SchBaseTask : : getHandle_class , StockAreaSendVehicleTask . class )
. n e( SchBaseTask : : getTask_status , TaskStatusEnum . FINISHED . getCode ( ) )
. n e( SchBaseTask : : getTask_status , TaskStatusEnum . CANCEL . getCode ( ) )
. eq ( SchBaseTask : : getIs_delete , " 0 " )
. orderByAsc ( SchBaseTask : : getTask_code ) ;
List < SchBaseTask > tasks = taskService . lis t( lam ) ;
if ( tasks . size ( ) < = 0 ) {
//判断是否有可移出空盘:有库存、已启用、且属于套轴区点位
LambdaQueryWrapper < BstIvtStockingivt > stockLam = new LambdaQueryWrapper < > ( ) ;
stockLam . eq ( B stIvtStockingivt : : getIvt_status , SlitterConstant . SLITTER_YES )
. eq ( BstIvtStockingivt : : getIs_used , SlitterConstant . SLITTER_YES )
. eq ( BstIvtStockingivt : : getPoint_type , " 2 " ) ;
List < BstIvtStockingivt > stockList = stockingivtService . list ( stockLam ) ;
for ( int i = 0 ; i < stockList . size ( ) ; i + + ) {
BstIvtStockingivt stockNow = stockList . get ( i ) ;
//载具号
String vehicleCode = stockNow . getVehicle_code ( ) ;
//点位号
String point_code = stockNow . getPoint_code ( ) ;
// 如果qty=0, 创建AGV送空任务, ( 新的task_type 010816) 、后期优化可以新增诺宝取货完成提前释放货位, 任务状态变成071
List < MdPbPapervehicle > papers = papervehicleService . list ( new LambdaQueryWrapper < MdPbPapervehicle > ( )
. eq ( MdPbPapervehicle : : getVehicle_code , vehicleCode )
. ne ( MdPbPapervehicle : : getQty , 0 ) ) ;
if ( papers . size ( ) < = 0 ) {
// 搬走
List < SchBaseTask > unFinishtasks = taskService . checkHaveTask ( point_code ) ;
if ( CollectionUtil . isEmpty ( unFinishtasks ) ) {
// 查找一个没有任务的空位
List < BstIvtStockingivt > list = stockingivtService . getEmptyPointNotTask ( " 3 " ) ;
if ( list . size ( ) = = 0 ) {
log . warn ( " 备货区找不到空位置搬运! " ) ;
// 如果qty=0, 创建AGV送空任务, ( 新的task_type 010816) 、后期优化可以新增诺宝取货完成提前释放货位, 任务状态变成071
List < MdPbPapervehicle > papers = papervehicleService . list ( new LambdaQueryWrapper < MdPbPapervehicle > ( )
. eq ( MdPbPapervehicle : : getVehicle_code , vehicleCode )
. ne ( MdPbPapervehicle : : getQty , 0 ) ) ;
if ( papers . size ( ) < = 0 ) {
// 搬走
List < SchBaseTask > unFinishtasks = taskService . checkHaveTask ( point_code ) ;
if ( CollectionUtil . isEmpty ( unFinishtasks ) ) {
// 查找一个没有任务的空位
List < BstIvtStockingivt > list = stockingivtService . getEmptyPointNotTask ( " 3 " ) ;
if ( list . size ( ) = = 0 ) {
log . warn ( " 备货区找不到空位置搬运! " ) ;
break ;
}
BstIvtStockingivt moveEmptyPoint = list . get ( 0 ) ;
JSONObject moveTaskParam = new JSONObject ( ) ;
moveTaskParam . put ( " point_code1 " , point_code ) ;
moveTaskParam . put ( " point_code2 " , moveEmptyPoint . getPoint_code ( ) ) ;
moveTaskParam . put ( " vehicle_code " , vehicleCode ) ;
moveTaskParam . put ( " task_type " , SlitterEnum . TASK_TYPE . code ( " 备货区单独送空载具 " ) ) ;
moveTaskParam . put ( " product_area " , SlitterConstant . SLITTER_TASK_AREA ) ;
stockAreaSendVehicleTask . createTask ( moveTaskParam ) ;
//下发一个就行
break ;
}
BstIvtStockingivt moveEmptyPoint = list . get ( 0 ) ;
JSONObject moveTaskParam = new JSONObject ( ) ;
moveTaskParam . put ( " point_code1 " , point_code ) ;
moveTaskParam . put ( " point_code2 " , moveEmptyPoint . getPoint_code ( ) ) ;
moveTaskParam . put ( " vehicle_code " , vehicleCode ) ;
moveTaskParam . put ( " task_type " , SlitterEnum . TASK_TYPE . code ( " 备货区单独送空载具 " ) ) ;
moveTaskParam . put ( " product_area " , SlitterConstant . SLITTER_TASK_AREA ) ;
stockAreaSendVehicleTask . createTask ( moveTaskParam ) ;
//下发一个就行
break ;
}
}
}
@@ -698,7 +708,7 @@ public class AutoCallAirShaftTask extends Prun {
return true ;
}
// 3.2 判断是否有单独拉出去的任务,有的话直接拉过来。
List < BstIvtStockingivt > stockingivts = stockingivtService . getMoveTaskPoints ( ) ;
List < BstIvtStockingivt > stockingivts = stockingivtService . getMoveTaskPoints ( SlitterEnum . TASK_TYPE . code ( " 备货区单独送空载具 " ) ) ;
if ( CollectionUtil . isNotEmpty ( stockingivts ) ) {
BstIvtStockingivt bstIvtStockingivt = stockingivts . get ( 0 ) ;
// 直接搬过来即可
@@ -715,6 +725,18 @@ public class AutoCallAirShaftTask extends Prun {
stockAreaCallTubeTask . createTask ( param ) ;
return true ;
}
//判断是否有自动移出托盘的任务下发,如果有则跳过代码
LambdaQueryWrapper < SchBaseTask > lam = new LambdaQueryWrapper < > ( ) ;
lam . eq ( SchBaseTask : : getTask_type , SlitterEnum . TASK_TYPE . code ( " 备货区送载具 " ) )
. ne ( SchBaseTask : : getTask_status , TaskStatusEnum . FINISHED . getCode ( ) )
. ne ( SchBaseTask : : getTask_status , TaskStatusEnum . CANCEL . getCode ( ) )
. eq ( SchBaseTask : : getIs_delete , " 0 " )
. orderByAsc ( SchBaseTask : : getTask_code ) ;
List < SchBaseTask > tasks = taskService . list ( lam ) ;
if ( tasks . size ( ) > = 0 ) {
log . info ( " 已经有移出托盘的任务,不允许再次下发: " + tasks . toString ( ) ) ;
return false ;
}
// 查找一个没有任务的空位
List < BstIvtStockingivt > list = stockingivtService . getEmptyPointNotTask ( " 3 " ) ;
if ( list . size ( ) = = 0 ) {