@@ -12,6 +12,8 @@ import com.ruoyi.bas.srgvmap.service.RoadCacheService;
import com.ruoyi.common.domain.SendData2 ;
import com.ruoyi.common.utils.spring.SpringUtils ;
import com.ruoyi.device.srgv.domain.DeviceSrgv ;
import com.ruoyi.device.srgv.service.IDeviceSrgvService ;
import com.ruoyi.device.tsj.domain.DeviceTsj ;
import com.ruoyi.job.charg.domain.SrgvChargingJob ;
import com.ruoyi.job.charg.service.ISrgvChargingJobService ;
import com.ruoyi.job.domain.MydoJob ;
@@ -19,8 +21,11 @@ import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.queue.srgv.domain.WcsSrgvQueue ;
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService ;
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService ;
import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueue ;
import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService ;
import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead ;
import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder ;
import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead ;
import lombok.extern.slf4j.Slf4j ;
import java.text.SimpleDateFormat ;
@@ -51,6 +56,11 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
public RoadCacheService roadCacheService ;
public ITsjDeviceExecutionQueueService tsjDeviceExecutionQueueService ;
public IDeviceSrgvService deviceSrgvService ;
public void init ( ) {
sRgvCodeList = new HashMap < > ( ) ;
@@ -86,9 +96,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
sRgvTask ( deviceSrgv ) ;
createCarIn Queue ( ) ;
createCarQueue ( deviceSrgv ) ;
createCarOutQueue ( ) ;
inCharging ( deviceSrgv ) ;
@@ -186,289 +195,208 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
}
/**
* 生成出库小车队列
*/
private void createCarOutQueue ( ) {
MydoJob mydoJob = new MydoJob ( ) ;
mydoJob . setInOut ( " 2 " ) ;
mydoJob . setExecutionPhase ( " 0 " ) ;
mydoJob . setStatus ( " 1 " ) ;
List < MydoJob > mydoJobs = mydoJobService . selectInOrOutMydoJobList ( mydoJob ) ;
if ( ! mydoJobs . isEmpty ( ) ) {
MydoJob mydoJob1 = mydoJobs . get ( 0 ) ;
// 查询是否有已下发的该任务号队列
WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper . selectWcsSrgvQueueByTaskNo ( mydoJob1 . getTaskNo ( ) ) ;
if ( wcsSrgvQueue1 = = null ) {
ConcurrentHashMap < String , DeviceSrgv > deviceSrgvMap = PlcSrgvRead . deviceSrgvMap ;
List < DeviceSrgv > deviceSrgvList = deviceSrgvMap . values ( ) . stream ( )
. filter ( deviceSrgv - > deviceSrgv . getWorkMode ( ) = = 4 )
. sorted ( ( d1 , d2 ) - > Math . abs ( Integer . parseInt ( mydoJob1 . getTheFloor ( ) ) - d2 . getCurrFloor ( ) )
- Math . abs ( Integer . parseInt ( mydoJob1 . getTheFloor ( ) ) - d1 . getCurrFloor ( ) ) )
. collect ( Collectors . toList ( ) ) ;
if ( ! deviceSrgvList . isEmpty ( ) ) {
DeviceSrgv deviceSrgv = null ;
for ( DeviceSrgv deviceSrgv1 : deviceSrgvList ) {
//优先出库层,如果没有优先邻近层
if ( deviceSrgv1 . getCurrFloor ( ) . toString ( ) . equals ( mydoJob1 . getTheFloor ( ) ) ) {
deviceSrgv = deviceSrgv1 ;
break ;
} else if ( deviceSrgv = = null | | ( Math . abs ( Integer . parseInt ( mydoJob1 . getTheFloor ( ) ) - deviceSrgv1 . getCurrFloor ( ) ) ) < ( Math . abs ( Integer . parseInt ( mydoJob1 . getTheFloor ( ) ) - deviceSrgv . getCurrFloor ( ) ) ) ) {
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper . selectWcsSrgvQueueByAgvId ( deviceSrgv1 . getDeviceId ( ) . toString ( ) ) ;
if ( deviceSrgv1 . getStatus ( ) = = 1 & & wcsSrgvQueue2 = = null ) {
deviceSrgv = deviceSrgv1 ;
break ;
}
}
}
if ( deviceSrgv ! = null ) {
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper . selectWcsSrgvQueueByAgvId ( deviceSrgv . getDeviceId ( ) . toString ( ) ) ;
if ( wcsSrgvQueue2 = = null & & deviceSrgv . getStatus ( ) = = 1 ) {
//查询小车是否为取货楼层
String endSite = " " ;
String issued = " 0 " ;
String executionStatus = " 1 " ;
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap ( ) ;
wcsSrgvMap . setCargoSpaceId ( mydoJob1 . getCargoSpaceId ( ) ) ;
List < WcsSrgvMap > wcsSrgvMaps = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap ) ;
//取货地址
String cargoPickSite = wcsSrgvMaps . get ( 0 ) . getSiteId ( ) ;
if ( deviceSrgv . getCurrFloor ( ) . equals ( wcsSrgvMaps . get ( 0 ) . getTheLayer ( ) ) ) {
//终点是巷道口到位输送线
endSite = cargoPickSite ;
if ( cargoPickSite . equals ( deviceSrgv . getCurrSite ( ) ) ) {
issued = " 1 " ;
executionStatus = " 3 " ;
}
} else {
//终点是提升机
endSite = " tsj " ;
}
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap ( ) ;
wcsSrgvMap1 . setRemark ( mydoJob1 . getExitId ( ) ) ;
List < WcsSrgvMap > wcsSrgvMaps1 = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap1 ) ;
String cargoPlaceSite = wcsSrgvMaps1 . get ( 0 ) . getSiteId ( ) ;
List < DeviceSrgv > sameSiteDevices = deviceSrgvMap . values ( ) . stream ( )
. filter ( d - > d . getWorkMode ( ) = = 4
& & d . getStatus ( ) = = 1
& & d . getCurrSite ( ) . equals ( cargoPlaceSite ) )
. collect ( Collectors . toList ( ) ) ;
if ( ! sameSiteDevices . isEmpty ( ) & & ! Objects . equals ( sameSiteDevices . get ( 0 ) . getDeviceId ( ) , deviceSrgv . getDeviceId ( ) ) ) {
WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap ( ) ;
wcsSrgvMap3 . setRemark ( " cache " ) ;
List < WcsSrgvMap > wcsSrgvMaps3 = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap3 ) ;
for ( WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3 ) {
//deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象
if ( deviceSrgvMap . values ( ) . stream ( ) . noneMatch ( d - > d . getCurrSite ( ) . equals ( wcsSrgvMap4 . getSiteId ( ) ) ) ) {
//生成小车到缓存点队列
WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper . selectWcsSrgvQueueByAgvId ( sameSiteDevices . get ( 0 ) . getDeviceId ( ) . toString ( ) ) ;
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue ( ) ;
wcsSrgvQueue . setCargoPlaceSite ( wcsSrgvMap4 . getSiteId ( ) ) ;
List < WcsSrgvQueue > wcsSrgvQueues = wcsSagvQueueMapper . selectWcsSrgvQueueList ( wcsSrgvQueue ) ;
if ( wcsSrgvQueue5 = = null & & wcsSrgvQueues . isEmpty ( ) ) {
WcsSrgvQueue wcsSrgvQueue3 = new WcsSrgvQueue ( ) ;
wcsSrgvQueue3 . setGuid ( UUID . randomUUID ( ) . toString ( ) ) ;
wcsSrgvQueue3 . setTaskNo ( " 9999 " ) ;
wcsSrgvQueue3 . setTaskType ( " 1 " ) ;
wcsSrgvQueue3 . setPriority ( Long . parseLong ( " 2 " ) ) ;
wcsSrgvQueue3 . setCargo ( " 1 " ) ;
wcsSrgvQueue3 . setIssued ( issued ) ;
wcsSrgvQueue3 . setExecutionStatus ( executionStatus ) ;
wcsSrgvQueue3 . setCargoPickSite ( cargoPickSite ) ;
wcsSrgvQueue3 . setCargoPlaceSite ( wcsSrgvMap4 . getSiteId ( ) ) ;
wcsSrgvQueue3 . setStartSite ( sameSiteDevices . get ( 0 ) . getCurrSite ( ) ) ;
wcsSrgvQueue3 . setEndSite ( wcsSrgvMap4 . getSiteId ( ) ) ;
wcsSrgvQueue3 . setTheFloor ( sameSiteDevices . get ( 0 ) . getCurrFloor ( ) . toString ( ) ) ;
wcsSrgvQueue3 . setCreateDate ( new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " ) . format ( new Date ( ) ) ) ;
wcsSrgvQueue3 . setAgvId ( sameSiteDevices . get ( 0 ) . getDeviceId ( ) . toString ( ) ) ;
wcsSrgvQueue3 . setDefault02 ( " 4 " ) ;
wcsSrgvQueue3 . setDefault07 ( sameSiteDevices . get ( 0 ) . getCurrFloor ( ) . toString ( ) ) ;
wcsSagvQueueMapper . insertWcsSrgvQueue ( wcsSrgvQueue3 ) ;
}
}
}
}
//生成小车取货队列
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue ( ) ;
wcsSrgvQueue . setGuid ( UUID . randomUUID ( ) . toString ( ) ) ;
wcsSrgvQueue . setTaskNo ( mydoJob1 . getTaskNo ( ) ) ;
wcsSrgvQueue . setTaskType ( " 1 " ) ;
wcsSrgvQueue . setPriority ( Long . parseLong ( " 2 " ) ) ;
wcsSrgvQueue . setCargo ( " 1 " ) ;
wcsSrgvQueue . setIssued ( issued ) ;
wcsSrgvQueue . setExecutionStatus ( executionStatus ) ;
wcsSrgvQueue . setCargoPickSite ( cargoPickSite ) ;
wcsSrgvQueue . setCargoPlaceSite ( cargoPlaceSite ) ;
wcsSrgvQueue . setStartSite ( deviceSrgv . getCurrSite ( ) ) ;
wcsSrgvQueue . setEndSite ( endSite ) ;
wcsSrgvQueue . setTheFloor ( deviceSrgv . getCurrFloor ( ) . toString ( ) ) ;
wcsSrgvQueue . setCreateDate ( new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " ) . format ( new Date ( ) ) ) ;
wcsSrgvQueue . setAgvId ( deviceSrgv . getDeviceId ( ) . toString ( ) ) ;
wcsSrgvQueue . setDefault02 ( " 4 " ) ;
wcsSrgvQueue . setDefault07 ( " 1 " ) ;
wcsSagvQueueMapper . insertWcsSrgvQueue ( wcsSrgvQueue ) ;
}
}
}
}
}
}
/**
* 生成入库小车队列
*/
private void createCarIn Queue ( ) {
MydoJob mydoJob = new MydoJob ( ) ;
mydoJob . setExecutionPhase ( " 2 " ) ;
mydoJob . setInOut ( " 1 " ) ;
List < MydoJob > mydoJobs = mydoJobService . selectInOrOutMydoJobList ( mydoJob ) ;
if ( ! mydoJobs . isEmpty ( ) ) {
MydoJob mydoJob1 = mydoJobs . get ( 0 ) ;
// 查询是否有已下发的该任务号队列
WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper . selectWcsSrgvQueueByTaskNo ( mydoJob1 . getTaskNo ( ) ) ;
private void createCarQueue ( DeviceSrgv deviceSrgv ) {
if ( wcsSrgvQueue1 = = null ) {
ConcurrentHashMap < String , DeviceSrgv > deviceSrgvMap = PlcSrgvRead . deviceSrgvMap ;
if ( deviceSrgv . getWorkMode ( ) = = 4 & & deviceSrgv . getStatus ( ) = = 1 ) {
WcsSrgvQueue wcsSrgvQueue = wcsSagvQueueMapper . selectWcsSrgvQueueByAgvId ( deviceSrgv . getDeviceId ( ) . toString ( ) ) ;
List < DeviceSrgv > deviceSrgvList = deviceSrgvMap . values ( ) . stream ( )
. filter ( deviceSrgv - > deviceSrgv . getWorkMode ( ) = = 4 )
. sorted ( ( d1 , d2 ) - > d2 . getCurrFloor ( ) . compareTo ( d1 . getCurrFloor ( ) ) )
. collect ( Collectors . toList ( ) ) ;
if ( ! deviceSrgvList . isEmpty ( ) ) {
DeviceSrgv deviceSrgv = null ;
for ( DeviceSrgv deviceSrgv1 : deviceSrgvList ) {
if ( deviceSrgv1 . getCurrFloor ( ) . toString ( ) . equals ( mydoJob1 . g etTheFloor ( ) ) ) {
deviceSrgv = deviceSrgv1 ;
break ; // 找到了相同楼层的直接选它
} else {
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper . selectWcsSrgvQueueByAgvId ( deviceSrgv1 . getDeviceId ( ) . toString ( ) ) ;
if ( deviceSrgv1 . getStatus ( ) = = 1 & & wcsSrgvQueue2 = = null ) {
deviceSrgv = deviceSrgv1 ; // 更新为更小楼层的小车
break ;
}
if ( wcsSrgvQueue = = null ) {
//找小车当前层作业,生成队列
//如果没有当前层作业,就找最近层换层作业,生成队列
MydoJob mydoJob1 = new MydoJob ( ) ;
mydoJob1 . setTheFloor ( deviceSrgv . getCurrFloor ( ) . toString ( ) ) ;
mydoJob1 . setInOut ( " 1 " ) ;
mydoJob1 . s etStatus ( " 3 " ) ;
// todo 定提升机到达阶段
mydoJob1 . setExecutionPhase ( " 3 " ) ;
List < MydoJob > mydoJobs = mydoJobService . selectMydoJobList ( mydoJob1 ) ;
if ( ! mydoJobs . isEmpty ( ) ) {
//生成了从小车现在位置到提升机接货的队列
createCarQueue ( mydoJobs . get ( 0 ) , deviceSrgv , " 4 " , " 0 " ) ;
} else {
MydoJob mydoJob = new MydoJob ( ) ;
mydoJob . setInOut ( " 2 " ) ;
mydoJob . setStatus ( " 1 " ) ;
mydoJob . setTheFloor ( deviceSrgv . getCurrFloor ( ) . toString ( ) ) ;
List < MydoJob > mydoJobs1 = mydoJobService . selectMydoJobList ( mydoJob ) ;
//当前层出库作业
if ( ! mydoJobs1 . isEmpty ( ) ) {
//找最外层作业存储过程
HashMap < String , Object > map = new HashMap < > ( ) ;
map . put ( " v_layer " , deviceSrgv . getCurrFloor ( ) ) ;
mydoJobService . selectMydoJobOutside ( map ) ;
String jobId = map . get ( " v_job_ids " ) . toString ( ) ;
MydoJob mydoJob2 = mydoJobService . selectMydoJobByJobId ( jobId ) ;
//判断小车当前点是否是出库作业货位点,如果不是,就生成队列{},如果是生成已下发队列
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap ( ) ;
wcsSrgvMap . setCargoSpaceId ( mydoJob2 . getCargoSpaceId ( ) ) ;
List < WcsSrgvMap > wcsSrgvMaps = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap ) ;
if ( ! deviceSrgv . getCurrSite ( ) . equals ( wcsSrgvMaps . get ( 0 ) . getSiteId ( ) ) ) {
createCarQueue ( mydoJob2 , deviceSrgv , " 4 " , " 0 " ) ;
} else {
createCarQueue ( mydoJob2 , deviceSrgv , " 4 " , " 1 " ) ;
}
} else {
//别的层的出库作业和入库作业
ArrayList < MydoJob > mydoJobs2 = new ArrayList < > ( ) ;
MydoJob mydoJob2 = new MydoJob ( ) ;
mydoJob2 . setInOut ( " 2 " ) ;
mydoJob2 . setStatus ( " 1 " ) ;
List < MydoJob > mydoJobs3 = mydoJobService . selectMydoJobList ( mydoJob2 ) ;
MydoJob mydoJob3 = new MydoJob ( ) ;
mydoJob3 . setStatus ( " 3 " ) ;
mydoJob3 . setInOut ( " 1 " ) ;
//todo 输送机阶段
mydoJob3 . setExecutionPhase ( " 1 " ) ;
List < MydoJob > mydoJobs4 = mydoJobService . selectMydoJobList ( mydoJob3 ) ;
mydoJobs2 . addAll ( mydoJobs3 ) ;
mydoJobs2 . addAll ( mydoJobs4 ) ;
//判断那层没有小车,并且没有要去那层的小车队列,查监控表
//生成换层任务
MydoJob job = mydoJobs2 . get ( 0 ) ;
DeviceSrgv deviceSrgv1 = new DeviceSrgv ( ) ;
deviceSrgv1 . setCurrFloor ( Convert . toInt ( job . getTheFloor ( ) ) ) ;
List < DeviceSrgv > srgvs = deviceSrgvService . selectDeviceSrgvList ( deviceSrgv1 ) ;
//这个作业的目标层没有小车
if ( srgvs . isEmpty ( ) ) {
WcsSrgvQueue wcsSrgvQueue1 = new WcsSrgvQueue ( ) ;
wcsSrgvQueue1 . setDefault07 ( job . getTheFloor ( ) ) ;
// wcsSrgvQueue1.setTaskType("3");
List < WcsSrgvQueue > wcsSrgvQueues = wcsSagvQueueMapper . selectWcsSrgvQueueList ( wcsSrgvQueue1 ) ;
if ( wcsSrgvQueues . isEmpty ( ) ) {
//生成换层任务
createCarQueue ( mydoJob2 , deviceSrgv , " 8 " , " 0 " ) ;
}
}
}
if ( deviceSrgv ! = null ) {
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper . selectWcsSrgvQueueByAgvId ( deviceSrgv . getDeviceId ( ) . toString ( ) ) ;
if ( wcsSrgvQueue2 = = null & & deviceSrgv . getStatus ( ) = = 1 ) {
//查询小车是否为1楼,且1楼小车不在入库站点
String endSite = " " ;
String issued = " 0 " ;
String executionStatus = " 1 " ;
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap ( ) ;
wcsSrgvMap . setRemark ( mydoJob1 . getEntranceId ( ) ) ;
if ( StrUtil . isEmpty ( wcsSrgvMap . getRemark ( ) ) ) {
log . error ( " 入库任务号:{} 入库入口ID为空 " , mydoJob1 . getTaskNo ( ) ) ;
return ;
}
List < WcsSrgvMap > wcsSrgvMaps = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap ) ;
//取货地址
String cargoPickSite = wcsSrgvMaps . get ( 0 ) . getSiteId ( ) ;
if ( deviceSrgv . getCurrFloor ( ) = = 1 ) {
endSite = cargoPickSite ;
if ( cargoPickSite . equals ( deviceSrgv . getCurrSite ( ) ) ) {
// 小车已在取货点
issued = " 1 " ;
executionStatus = " 3 " ;
}
} else {
// 小车不在1楼
endSite = " tsj " ;
}
//筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象, 并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象
List < DeviceSrgv > sameSiteDevices = deviceSrgvMap . values ( ) . stream ( )
. filter ( d - > d . getWorkMode ( ) = = 4
& & d . getStatus ( ) = = 1
& & d . getCurrSite ( ) . equals ( cargoPickSite ) )
. collect ( Collectors . toList ( ) ) ;
if ( ! sameSiteDevices . isEmpty ( ) & & ! Objects . equals ( sameSiteDevices . get ( 0 ) . getDeviceId ( ) , deviceSrgv . getDeviceId ( ) ) ) {
WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap ( ) ;
wcsSrgvMap3 . setRemark ( " cache " ) ;
List < WcsSrgvMap > wcsSrgvMaps3 = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap3 ) ;
for ( WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3 ) {
//deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象
if ( deviceSrgvMap . values ( ) . stream ( ) . noneMatch ( d - > d . getCurrSite ( ) . equals ( wcsSrgvMap4 . getSiteId ( ) ) ) ) {
WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper . selectWcsSrgvQueueByAgvId ( sameSiteDevices . get ( 0 ) . getDeviceId ( ) . toString ( ) ) ;
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue ( ) ;
wcsSrgvQueue . setCargoPlaceSite ( wcsSrgvMap4 . getSiteId ( ) ) ;
List < WcsSrgvQueue > wcsSrgvQueues = wcsSagvQueueMapper . selectWcsSrgvQueueList ( wcsSrgvQueue ) ;
if ( wcsSrgvQueue5 = = null & & wcsSrgvQueues . isEmpty ( ) ) {
//生成占位小车到缓存点队列
WcsSrgvQueue wcsSrgvQueue3 = new WcsSrgvQueue ( ) ;
wcsSrgvQueue3 . setGuid ( UUID . randomUUID ( ) . toString ( ) ) ;
wcsSrgvQueue3 . setTaskNo ( mydoJob1 . getTaskNo ( ) ) ;
wcsSrgvQueue3 . setTaskType ( " 1 " ) ;
wcsSrgvQueue3 . setPriority ( Long . parseLong ( " 2 " ) ) ;
wcsSrgvQueue3 . setCargo ( " 1 " ) ;
wcsSrgvQueue3 . setIssued ( issued ) ;
wcsSrgvQueue3 . setExecutionStatus ( executionStatus ) ;
wcsSrgvQueue3 . setCargoPickSite ( cargoPickSite ) ;
wcsSrgvQueue3 . setCargoPlaceSite ( wcsSrgvMap4 . getSiteId ( ) ) ;
wcsSrgvQueue3 . setStartSite ( sameSiteDevices . get ( 0 ) . getCurrSite ( ) ) ;
wcsSrgvQueue3 . setEndSite ( wcsSrgvMap4 . getSiteId ( ) ) ;
wcsSrgvQueue3 . setTheFloor ( sameSiteDevices . get ( 0 ) . getCurrFloor ( ) . toString ( ) ) ;
wcsSrgvQueue3 . setCreateDate ( new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " ) . format ( new Date ( ) ) ) ;
wcsSrgvQueue3 . setAgvId ( sameSiteDevices . get ( 0 ) . getDeviceId ( ) . toString ( ) ) ;
wcsSrgvQueue3 . setDefault02 ( " 4 " ) ;
wcsSrgvQueue3 . setDefault07 ( sameSiteDevices . get ( 0 ) . getCurrFloor ( ) . toString ( ) ) ;
wcsSagvQueueMapper . insertWcsSrgvQueue ( wcsSrgvQueue3 ) ;
return ;
}
}
}
}
}
} else {
if ( " 1 " . equals ( wcsSrgvQueue . getIssued ( ) ) ) {
MydoJob mydoJob = mydoJobService . selectMydoJobByTaskNo ( Convert . toLong ( wcsSrgvQueue . getTaskNo ( ) ) ) ;
if ( deviceSrgv . getCurrSite ( ) . equals ( wcsSrgvQueue . getEndSite ( ) ) & & wcsSrgvQueue . getTaskType ( ) . equals ( " 1 " ) ) {
// todo 通知wms入库完成 完成队列 完成作业
wcsSagvQueueMapper . insertHistory ( wcsSrgvQueue . getTaskNo ( ) ) ;
wcsSagvQueueMapper . deleteWcsSrgvQueueByGuid ( wcsSrgvQueue . getGuid ( ) ) ;
mydoJobService . insertHistory ( mydoJob . getJobId ( ) ) ;
mydoJobService . deleteMydoJobByJobId ( mydoJob . getJobId ( ) ) ;
} else if ( deviceSrgv . getCurrSite ( ) . equals ( wcsSrgvQueue . getDefault03 ( ) ) & & wcsSrgvQueue . getTaskType ( ) . equals ( " 2 " ) ) {
//完成队列 更新作业阶段
wcsSagvQueueMapper . insertHistory ( wcsSrgvQueue . getTaskNo ( ) ) ;
wcsSagvQueueMapper . deleteWcsSrgvQueueByGuid ( wcsSrgvQueue . getGuid ( ) ) ;
//提升机修改阶段
// mydoJob.setExecutionPhase("");
// mydoJobService.updateMydoJob(mydoJob);
} else if ( deviceSrgv . getCurrSite ( ) . equals ( wcsSrgvQueue . getDefault03 ( ) ) & & wcsSrgvQueue . getTaskType ( ) . equals ( " 4 " ) ) {
//根据任务类型 ,生成队列
if ( Convert . toInt ( mydoJob . getInOrOut ( ) ) < 20 ) {
wcsSagvQueueMapper . insertHistory ( wcsSrgvQueue . getTaskNo ( ) ) ;
wcsSagvQueueMapper . deleteWcsSrgvQueueByGuid ( wcsSrgvQueue . getGuid ( ) ) ;
//生成小车取货队列
WcsSrgvQueue wcsSr gvQueue = new W csSrgvQueue( ) ;
wcsSr gvQueue. setGuid ( UUID . randomUUID ( ) . toString ( ) ) ;
wcsSrgvQueue . setTaskNo ( mydoJob1 . getTaskNo ( ) ) ;
wcsSrgvQueue . setTaskType ( " 1 " ) ;
wcsSrgvQueue . setPriority ( Long . parseLong ( " 2 " ) ) ;
wcsSrgvQueue . setCargo ( " 1 " ) ;
wcsSrgvQueue . setIssued ( issued ) ;
wcsSrgvQueue . setExecutionStatus ( executionStatus ) ;
wcsSrgvQueue . setCargoPickSite ( cargoPickSite ) ;
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap ( ) ;
wcsSrgvMap1 . setCargoSpaceId ( mydoJob1 . getCargoSpaceId ( ) ) ;
List < WcsSrgvMap > wcsSrgvMaps1 = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap1 ) ;
wcsSrgvQueue . setCargoPlaceSite ( wcsSrgvMaps1 . get ( 0 ) . getSiteId ( ) ) ;
wcsSrgvQueue . setStartSite ( deviceSrgv . getCurrSite ( ) ) ;
wcsSrgvQueue . setEndSite ( endSite ) ;
wcsSrgvQueue . setTheFloor ( deviceSrgv . getCurrFloor ( ) . toString ( ) ) ;
wcsSrgvQueue . setCreateDate ( new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " ) . format ( new Date ( ) ) ) ;
wcsSrgvQueue . setAgvId ( deviceSrgv . getDeviceId ( ) . toString ( ) ) ;
wcsSrgvQueue . setDefault02 ( " 4 " ) ;
wcsSrgvQueue . setDefault07 ( " 1 " ) ;
wcsSagvQueueMapper . insertWcsSrgvQueue ( wcsSrgvQueue ) ;
createCarQueue ( mydoJob , deviceSrgv , " 1 " , " 0 " ) ;
} else {
wcsSa gvQueueMapper . insertHistory ( w csSrgvQueue. getTaskNo ( ) ) ;
wcsSa gvQueueMapper . deleteWcsSrgvQueueByGuid ( wcsSrgvQueue . getGuid ( ) ) ;
createCarQueue ( mydoJob , deviceSrgv , " 2 " , " 0 " ) ;
}
} else if ( deviceSrgv . getCurrSite ( ) . equals ( wcsSrgvQueue . getDefault03 ( ) ) & & wcsSrgvQueue . getTaskType ( ) . equals ( " 8 " ) ) {
wcsSagvQueueMapper . insertHistory ( wcsSrgvQueue . getTaskNo ( ) ) ;
wcsSagvQueueMapper . deleteWcsSrgvQueueByGuid ( wcsSrgvQueue . getGuid ( ) ) ;
} else if ( deviceSrgv . getCurrSite ( ) . equals ( wcsSrgvQueue . getEndSite ( ) ) & & wcsSrgvQueue . getTaskType ( ) . equals ( " 3 " ) ) {
//充电任务
wcsSagvQueueMapper . insertHistory ( wcsSrgvQueue . getTaskNo ( ) ) ;
wcsSagvQueueMapper . deleteWcsSrgvQueueByGuid ( wcsSrgvQueue . getGuid ( ) ) ;
}
}
}
// }
}
}
private void createCarQueue ( MydoJob mydoJob1 , DeviceSrgv deviceSrgv , String taskType , String issued ) {
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue ( ) ;
wcsSrgvQueue . setGuid ( UUID . randomUUID ( ) . toString ( ) ) ;
wcsSrgvQueue . setTaskNo ( mydoJob1 . getTaskNo ( ) ) ;
wcsSrgvQueue . setTaskType ( taskType ) ;
wcsSrgvQueue . setPriority ( Long . parseLong ( " 2 " ) ) ;
// wcsSrgvQueue.setCargo("1");
wcsSrgvQueue . setIssued ( issued ) ;
wcsSrgvQueue . setExecutionStatus ( " 1 " ) ;
// wcsSrgvQueue.setCargoPlaceSite("tsj");
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap ( ) ;
wcsSrgvMap1 . setTheRow ( 4 ) ;
wcsSrgvMap1 . setTheColumn ( 5 ) ;
wcsSrgvMap1 . setTheLayer ( Convert . toInt ( mydoJob1 . getTheFloor ( ) ) ) ;
List < WcsSrgvMap > wcsSrgvMaps1 = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap1 ) ;
if ( Integer . parseInt ( mydoJob1 . getInOrOut ( ) ) < 20 & & " 4 " . equals ( taskType ) ) {
wcsSrgvQueue . setStartSite ( deviceSrgv . getCurrSite ( ) ) ;
wcsSrgvQueue . setEndSite ( " tsj " ) ;
//每一层的停靠点
wcsSrgvQueue . setDefault03 ( wcsSrgvMaps1 . get ( 0 ) . getSiteId ( ) ) ;
}
else if ( Integer . parseInt ( mydoJob1 . getInOrOut ( ) ) < 20 & & " 1 " . equals ( taskType ) ) {
wcsSrgvQueue . setStartSite ( " tsj " ) ;
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap ( ) ;
wcsSrgvMap . setCargoSpaceId ( mydoJob1 . getCargoSpaceId ( ) ) ;
List < WcsSrgvMap > wcsSrgvMaps = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap ) ;
wcsSrgvQueue . setEndSite ( wcsSrgvMaps . get ( 0 ) . getSiteId ( ) ) ;
//每一层的停靠点
wcsSrgvQueue . setDefault03 ( wcsSrgvMaps1 . get ( 0 ) . getSiteId ( ) ) ;
}
else if ( Integer . parseInt ( mydoJob1 . getInOrOut ( ) ) > = 20 & & " 4 " . equals ( taskType ) ) {
wcsSrgvQueue . setStartSite ( deviceSrgv . getCurrSite ( ) ) ;
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap ( ) ;
wcsSrgvMap . setCargoSpaceId ( mydoJob1 . getCargoSpaceId ( ) ) ;
List < WcsSrgvMap > wcsSrgvMaps = wcsSrgvMapService . selectWcsSrgvMapList ( wcsSrgvMap ) ;
wcsSrgvQueue . setEndSite ( wcsSrgvMaps . get ( 0 ) . getSiteId ( ) ) ;
//每一层的停靠点
wcsSrgvQueue . setDefault03 ( wcsSrgvMaps1 . get ( 0 ) . getSiteId ( ) ) ;
}
else if ( Integer . parseInt ( mydoJob1 . getInOrOut ( ) ) > = 20 & & " 2 " . equals ( taskType ) ) {
wcsSrgvQueue . setStartSite ( deviceSrgv . getCurrSite ( ) ) ;
wcsSrgvQueue . setEndSite ( " tsj " ) ;
//每一层的停靠点
wcsSrgvQueue . setDefault03 ( wcsSrgvMaps1 . get ( 0 ) . getSiteId ( ) ) ;
}
else if ( " 8 " . equals ( taskType ) ) {
wcsSrgvQueue . setStartSite ( deviceSrgv . getCurrSite ( ) ) ;
wcsSrgvQueue . setEndSite ( " tsj " ) ;
wcsSrgvQueue . setDefault03 ( wcsSrgvMaps1 . get ( 0 ) . getSiteId ( ) ) ;
}
wcsSrgvQueue . setTheFloor ( deviceSrgv . getCurrFloor ( ) . toString ( ) ) ;
wcsSrgvQueue . setCreateDate ( new SimpleDateFormat ( " yyyy-MM-dd HH:mm:ss " ) . format ( new Date ( ) ) ) ;
wcsSrgvQueue . setAgvId ( deviceSrgv . getDeviceId ( ) . toString ( ) ) ;
wcsSrgvQueue . setDefault02 ( taskType ) ;
wcsSrgvQueue . setDefault07 ( mydoJob1 . getTheFloor ( ) ) ;
wcsSagvQueueMapper . insertWcsSrgvQueue ( wcsSrgvQueue ) ;
}
/**