This commit is contained in:
张怡蓉
2025-12-05 15:46:31 +08:00
parent 67ff3cb533
commit 5b13c88b16
5 changed files with 218 additions and 263 deletions

View File

@@ -81,4 +81,6 @@ public interface MydoJobMapper
List<MydoJob> selectMydoJobFinishList(MydoJob mydoJob);
MydoJob selectRunningMydoJobByExitList(@Param("exitList") List<String> exitList);
void selectMydoJobOutside(HashMap<String, Object> map);
}

View File

@@ -1,5 +1,6 @@
package com.ruoyi.job.service;
import java.util.HashMap;
import java.util.List;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -29,6 +30,8 @@ public interface IMydoJobService
*/
public List<MydoJob> selectMydoJobList(MydoJob mydoJob);
public List<MydoJob> selectNotThisFloorMydoJobList(MydoJob mydoJob);
/**
* 新增作业信息
*
@@ -80,4 +83,8 @@ public interface IMydoJobService
MydoJob selectRunningMydoJobByExitList(List<String> strings);
AjaxResult manualCallback(String jobId);
void selectMydoJobOutside(HashMap<String,Object> map);
}

View File

@@ -49,6 +49,11 @@ public class MydoJobServiceImpl implements IMydoJobService
return mydoJobMapper.selectMydoJobList(mydoJob);
}
@Override
public List<MydoJob> selectNotThisFloorMydoJobList(MydoJob mydoJob) {
return null;
}
/**
* 新增作业信息
*
@@ -173,4 +178,9 @@ public class MydoJobServiceImpl implements IMydoJobService
}
return AjaxResult.error("手动回调失败");
}
@Override
public void selectMydoJobOutside(HashMap<String, Object> map) {
mydoJobMapper.selectMydoJobOutside(map);
}
}

View File

@@ -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);
createCarInQueue();
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 createCarInQueue() {
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.getTheFloor())) {
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.setStatus("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 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);
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 {
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
wcsSagvQueueMapper.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);
}
/**

View File

@@ -239,4 +239,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and status = 3
order by priority desc,create_time
</select>
<select id="selectMydoJobOutside" parameterType="java.util.Map" statementType="CALLABLE">
{call proc_find_outside(
#{v_layer,jdbcType=INTEGER,mode=IN},
#{v_job_ids,jdbcType=VARCHAR,mode=OUT}
)}
</select>
</mapper>