输送线

This commit is contained in:
张怡蓉
2025-11-24 09:01:15 +08:00
parent 16a7f1e37d
commit 7e2d63a0cd

View File

@@ -23,6 +23,9 @@ import lombok.extern.slf4j.Slf4j;
import java.util.*;
import java.util.stream.Collectors;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
@Slf4j
public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
@@ -49,9 +52,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
init();
while (isRun) {
for (String type : sRgvCodeList.keySet()) {
for (String code : sRgvCodeList.keySet()) {
for (DeviceSrgv deviceSrgv : sRgvCodeList.get(type)) {
for (DeviceSrgv deviceSrgv : sRgvCodeList.get(code)) {
try {
if (ObjUtil.isNotNull(deviceSrgv)) {
//循环所有楼层
@@ -195,7 +198,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
wcsSagvQueueMapper.insertWcsSrgvQueue(wsq);
}
}
}
}
@@ -766,8 +769,13 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
/**
* 小车完成队列
*/
private void completeCarTask(DeviceSrgv deviceSrgv,int floor) {
if (deviceSrgv.getWorkMode()==5){
private void completeCarTask(DeviceSrgv deviceSrgv, int floor) {
//小车联机
if (deviceSrgv.getWorkMode() == 5) {
int agvId = deviceSrgv.getDeviceId();
String currSite = deviceSrgv.getCurrSite();
int status = deviceSrgv.getStatus();
//22到达充电位置 23到达换层目标
if (deviceSrgv.getStatus() == 1 || (deviceSrgv.getStatus() == 2 && (deviceSrgv.getWorkPhase() == 22 || deviceSrgv.getWorkPhase() == 23))) {
WcsSrgvQueue param = new WcsSrgvQueue();
@@ -812,14 +820,149 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
* @return
*/
private boolean finishTaskByQueue(String currSite, WcsSrgvQueue wcsSrgvQueue, int floor) {
if (currSite.equals(wcsSrgvQueue.getEndSite())){
//当前在放货站点
WcsPort param = new WcsPort();
param.setPortCode(currSite);
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(param);
if (CollUtil.isNotEmpty(wcsPorts)){
int result = 0;
//当前在放货站点
if(Objects.equals(currSite,wcsSrgvQueue.getEndSite())){
//如果,放货站点是提升机,记录提升机中转点
WcsPort wcsPort=new WcsPort();
wcsPort.setSpare4(currSite);
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(wcsPort);
if(!wcsPorts.isEmpty()){
for(WcsPort wcsPort1:wcsPorts){
//出库任务、移库出库任务
WcsPort wcsPort2 = new WcsPort();
wcsPort2.setId(wcsPort1.getId());
wcsPort2.setStatus("1");//占用
wcsPort2.setSpare1(wcsSrgvQueue.getTaskNo());//任务号
wcsPort2.setSpare5("2");//出库 默认
//换层移库的货
if("11".equals(wcsSrgvQueue.getDefault05()) || "21".equals(wcsSrgvQueue.getDefault05())){
//11代表换层移库的货
wcsPort2.setSpare5("4");//换层
// wcsPort2.setProductType("1");
}
if("12".equals(wcsSrgvQueue.getDefault05())){
//12代表换层移库的托盘
wcsPort2.setSpare5("4");//换层
// wcsTransitPoint1.setProductType("2");
}
}
}
// WcsTransitPoint wcsTransitPoint = new WcsTransitPoint();
// wcsTransitPoint.setDeviceSite(currSite);
// List<WcsTransitPoint> wcsTransitPoints = transitPointMapper.selectWcsTransitPointList(wcsTransitPoint);
// if(wcsTransitPoints.size()>0){
//
// for (WcsTransitPoint transitPoint : wcsTransitPoints) {
//
// //出库任务、移库出库任务
//
// WcsTransitPoint wcsTransitPoint1 = new WcsTransitPoint();
// wcsTransitPoint1.setGuid(transitPoint.getGuid());
// wcsTransitPoint1.setStatus("1");
// wcsTransitPoint1.setTaskNo(sagvQueue.getTaskNo());
// wcsTransitPoint1.setTaskType("2");//出库 默认
//
// //换层移库的货
// if("11".equals(sagvQueue.getDefault05()) || "21".equals(sagvQueue.getDefault05())){
// //11代表换层移库的货
// wcsTransitPoint1.setTaskType("4");//换层
// wcsTransitPoint1.setProductType("1");
// }
// if("12".equals(sagvQueue.getDefault05())){
// //12代表换层移库的托盘
// wcsTransitPoint1.setTaskType("4");//换层
// wcsTransitPoint1.setProductType("2");
// }
// wcsTransitPoint1.setMsg("3");
// int i = transitPointMapper.updateWcsTransitPoint(wcsTransitPoint1);
// result = result+i;
// }
// }else {
//
// String rgvTaskType = sagvQueue.getDefault02();//1入;2出;3充电;4点到点;7移库;8换层
// if(Objects.equals(rgvTaskType,"4")){
// String default05 = sagvQueue.getDefault05();
// //点到点任务处理
// if((default05!=null) && !Objects.equals("13",default05)){
// //生成新任务
// WcsSagvQueue wsq = new WcsSagvQueue();
// wsq.setGuid(IdUtil.fastSimpleUUID());
// wsq.setTaskNo(sagvQueue.getDefault04());
// wsq.setTaskType("2");//载货
// wsq.setPriority(10);
// wsq.setCargo("2");//出库
// wsq.setIssued("0");
// wsq.setPathInfo(null);
// wsq.setExecutionStatus("1");
// wsq.setCargoPickSite(sagvQueue.getCargoPickSite());
// //String cargoPlaceSite = sagvQueue.getCargoPlaceSite();
// //String tarEndSite = sagvQueue.getUpDownSite() != null ? sagvQueue.getUpDownSite() : cargoPlaceSite;
// wsq.setCargoPlaceSite(sagvQueue.getCargoPlaceSite());
// wsq.setStartSite(sagvQueue.getCargoPickSite());
// wsq.setEndSite(sagvQueue.getCargoPlaceSite());
// wsq.setTheFloor(floor+"");
// wsq.setTrunPath(null);
// wsq.setUpDownSite(sagvQueue.getCargoPlaceSite());
// wsq.setCreateDate(DateUtil.now());
// wsq.setAgvId(sagvQueue.getAgvId());
//
// String default051 = sagvQueue.getDefault05();
// if("7".equals(default051)){
// wsq.setCargo("3");//移库
// }
// wsq.setDefault02(default051);//2出库 7移库 4点到点
// if("11".equals(default051) || "12".equals(default051)){
// wsq.setDefault02("2");//出库
// wsq.setDefault05(default051);
// }
// //判断取货站点是否是当前站点
//
// int i = wcsSagvQueueMapper.insertWcsSagvQueue(wsq);
// result = result +i;
//
// //更新作业
// WcsJob wcsJob = new WcsJob();
// wcsJob.setTaskNo(sagvQueue.getDefault04());
// wcsJob.setTaskStatus("2");//待执行的
// wcsJob.setExePhase("21");//允许下发到wms
// wcsJob.setStartDate(DateUtil.now());
// wcsJobMapper.updateWcsJobByTask(wcsJob);
//
// }else if(Objects.equals("13",default05)){
// //是车点到点,任务,删除作业
// wcsJobMapper.deleteWcsJobByTask(sagvQueue.getTaskNo());
// result = result+1;
// }else{
// result = result+1;
// }
// }else {
// //是入库、其他
// WcsJob wcsJob = new WcsJob();
// wcsJob.setTaskNo(sagvQueue.getTaskNo());
// List<WcsJob> wcsJobs = wcsJobMapper.selectWcsJobList(wcsJob);
// if(wcsJobs.size()>0){
// //完成作业
// for (WcsJob job : wcsJobs) {
// WcsJob wcsJob1 = new WcsJob();
// wcsJob1.setGuid(job.getGuid());
// wcsJob1.setTaskStatus("4");
// wcsJob1.setExePhase("21");//允许发送WMS
// int i = wcsJobMapper.updateWcsJob(wcsJob1);
// result = result+i;
// }
// }else {
// result = result+1;
// }
// }
// }
}
return false;
}
@@ -829,11 +972,15 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
* @param deviceSrgv
*/
private void resQueue(DeviceSrgv deviceSrgv, int floor) {
//任务号
int taskNo = deviceSrgv.getTaskNo();
//当前站点
String currSite = deviceSrgv.getCurrSite();
//小车编码
Integer deviceId = deviceSrgv.getDeviceId();
if (taskNo>999 && !"000000".equals(currSite)){
//如果已下发并且小车已离开起点,证明已下发成功,更改队列信息为已下发,更新开始时间
if (taskNo > 999 && !"000000".equals(currSite)) {
//查到该任务号未下发的该队列
WcsSrgvQueue param = new WcsSrgvQueue();
param.setTheFloor(Convert.toStr(floor));
param.setTaskNo(Convert.toStr(taskNo));