ctu入库相关流程修改

This commit is contained in:
liuhanqing
2025-07-07 15:32:57 +08:00
parent 07b3d4f0a4
commit e6b5bd67ba
8 changed files with 205 additions and 199 deletions

View File

@@ -21,6 +21,13 @@ import java.util.List;
*/ */
public interface IApiService public interface IApiService
{ {
/**
* 请求入库
* @param mydoJob
* @return 返回入库口位置
*/
public MydoJob requestEnter(MydoJob mydoJob);
/** /**
* 获取任务列表 * 获取任务列表
* @param mydoJob * @param mydoJob

View File

@@ -47,6 +47,14 @@ public class ApiServiceImpl implements IApiService {
private IAgvQueueService agvQueueService; private IAgvQueueService agvQueueService;
@Override
public MydoJob requestEnter(MydoJob mydoJob) {
RequestLog requestLog = requestLogService.getRequestLog(GET_MYDOJOB_URL, "请求入库", JSONUtil.toJsonStr(mydoJob));
String responseBody = requestLog.getResponseBody();
InterfaceReceive bean = JSONUtil.toBean(responseBody, InterfaceReceive.class);
return JSONUtil.toBean(JSONUtil.toJsonStr(bean.getData()), MydoJob.class);
}
@Override @Override
public List<MydoJob> getMydoJobList(MydoJob mydoJob) { public List<MydoJob> getMydoJobList(MydoJob mydoJob) {
RequestLog requestLog = requestLogService.getRequestLog(GET_MYDOJOB_URL, "获取任务", JSONUtil.toJsonStr(mydoJob)); RequestLog requestLog = requestLogService.getRequestLog(GET_MYDOJOB_URL, "获取任务", JSONUtil.toJsonStr(mydoJob));

View File

@@ -17,7 +17,7 @@ public class ThreadOperationController {
private ScheduleThread scheduleThread; private ScheduleThread scheduleThread;
/** /**
* 开启线程 * 开启plc读取线程
* *
* @return * @return
*/ */
@@ -28,6 +28,18 @@ public class ThreadOperationController {
return AjaxResult.success(); return AjaxResult.success();
} }
/**
* 开启调度线程
*
* @return
*/
@RequestMapping("/startAllThread2")
//@PreAuthorize("@ss.hasPermi('device:operation:start')")
public AjaxResult startAllThread2() {
scheduleThread.startAllThread2();
return AjaxResult.success();
}
/** /**
* 关闭线程 * 关闭线程
* *

View File

@@ -1,5 +1,8 @@
package com.ruoyi.device.ssj.domain; package com.ruoyi.device.ssj.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
@@ -11,6 +14,9 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author ruoyi * @author ruoyi
* @date 2025-07-04 * @date 2025-07-04
*/ */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DeviceSsj extends BaseEntity public class DeviceSsj extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -48,15 +54,15 @@ public class DeviceSsj extends BaseEntity
/** 入库请求 */ /** 入库请求 */
@Excel(name = "入库请求") @Excel(name = "入库请求")
private Integer rkqq; private int rkqq;
/** 空闲 */ /** 空闲 */
@Excel(name = "空闲") @Excel(name = "空闲")
private Integer kx; private int kx;
/** 到位 */ /** 到位 */
@Excel(name = "到位") @Excel(name = "到位")
private Integer dw; private int dw;
/** 条码 */ /** 条码 */
@Excel(name = "条码") @Excel(name = "条码")
@@ -64,109 +70,7 @@ public class DeviceSsj extends BaseEntity
/** 任务号 */ /** 任务号 */
@Excel(name = "任务号") @Excel(name = "任务号")
private Integer taskNo; private int taskNo;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDeviceCode() {
return deviceCode;
}
public void setDeviceCode(String deviceCode) {
this.deviceCode = deviceCode;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getIpAddress() {
return ipAddress;
}
public void setIpAddress(String ipAddress) {
this.ipAddress = ipAddress;
}
public String getPlcDbReadAddress() {
return plcDbReadAddress;
}
public void setPlcDbReadAddress(String plcDbReadAddress) {
this.plcDbReadAddress = plcDbReadAddress;
}
public String getIsActive() {
return isActive;
}
public void setIsActive(String isActive) {
this.isActive = isActive;
}
public String getPlcDbWriteAddress() {
return plcDbWriteAddress;
}
public void setPlcDbWriteAddress(String plcDbWriteAddress) {
this.plcDbWriteAddress = plcDbWriteAddress;
}
public Integer getRkqq() {
return rkqq;
}
public void setRkqq(Integer rkqq) {
this.rkqq = rkqq;
}
public Integer getKx() {
return kx;
}
public void setKx(Integer kx) {
this.kx = kx;
}
public Integer getDw() {
return dw;
}
public void setDw(Integer dw) {
this.dw = dw;
}
public String getTrayCode() {
return trayCode;
}
public void setTrayCode(String trayCode) {
this.trayCode = trayCode;
}
public Integer getTaskNo() {
return taskNo;
}
public void setTaskNo(Integer taskNo) {
this.taskNo = taskNo;
}
} }

View File

@@ -5,6 +5,8 @@ import com.ruoyi.device.ssj.service.IDeviceSsjService;
import com.ruoyi.schedule.plcRead.ssj.domain.PlcConnectInfo; import com.ruoyi.schedule.plcRead.ssj.domain.PlcConnectInfo;
import com.ruoyi.schedule.plcRead.ssj.PlcRead; import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.CustomThread; import com.ruoyi.schedule.plcRead.ssj.domain.CustomThread;
import com.ruoyi.schedule.scheduleTask.ssj.bs.BsInSsjThread;
import com.ruoyi.schedule.scheduleTask.ssj.js.JsInSsjThread;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -19,6 +21,9 @@ public class ScheduleThread {
@Autowired @Autowired
private IDeviceSsjService deviceSsjService; private IDeviceSsjService deviceSsjService;
public CustomThread bsInSsjThread;
public CustomThread jsInSsjThread;
/** /**
* 项目初始化启动 * 项目初始化启动
*/ */
@@ -37,6 +42,12 @@ public class ScheduleThread {
PlcRead plcRead = new PlcRead(list,ssjPlcConnectInfo); PlcRead plcRead = new PlcRead(list,ssjPlcConnectInfo);
Thread plcReadThread = new Thread(plcRead); Thread plcReadThread = new Thread(plcRead);
customThread = new CustomThread(plcReadThread, plcRead); customThread = new CustomThread(plcReadThread, plcRead);
//调度初始化
BsInSsjThread bsInSsjThread1 = new BsInSsjThread();
bsInSsjThread = new CustomThread(new Thread(bsInSsjThread1),bsInSsjThread1);
JsInSsjThread jsInSsjThread1 = new JsInSsjThread();
jsInSsjThread = new CustomThread(new Thread(jsInSsjThread1),bsInSsjThread1);
} }
/** /**
@@ -46,6 +57,11 @@ public class ScheduleThread {
customThread.getThread().start(); customThread.getThread().start();
} }
public void startAllThread2() {
bsInSsjThread.getThread().start();
jsInSsjThread.getThread().start();
}
/** /**
* 停止线程 * 停止线程
*/ */

View File

@@ -3,11 +3,13 @@ package com.ruoyi.schedule.scheduleTask.ssj.bs;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest; import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest;
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse; import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse;
import com.ruoyi.api.domain.wcs2wms.MydoJob; import com.ruoyi.api.domain.wcs2wms.MydoJob;
import com.ruoyi.api.service.IApiService; import com.ruoyi.api.service.IApiService;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.agv.domain.AgvQueue; import com.ruoyi.device.agv.domain.AgvQueue;
import com.ruoyi.device.agv.service.IAgvQueueService; import com.ruoyi.device.agv.service.IAgvQueueService;
import com.ruoyi.device.ssj.domain.DeviceSsj; import com.ruoyi.device.ssj.domain.DeviceSsj;
@@ -23,58 +25,143 @@ import java.util.List;
@Slf4j @Slf4j
@Component public class BsInSsjThread implements Runnable {
public class BsInSsjThread {
public HashMap<String, List<String>> ssjCodeList; public HashMap<String, List<String>> ssjCodeList;
@Resource
private IApiService apiService; private IApiService apiService;
@Resource
private IAgvQueueService agvQueueService; private IAgvQueueService agvQueueService;
public boolean isRun = true;
@PostConstruct
public void init() { public void init() {
//todo 获取设备编码列表 //todo 获取设备编码列表
ssjCodeList = new HashMap<>(); ssjCodeList = new HashMap<>();
log.info("初始化臂式入库输送机");
//入库口
ArrayList<String> ssjCodes = new ArrayList<>(); ArrayList<String> ssjCodes = new ArrayList<>();
ssjCodes.add("G1003"); ssjCodes.add("G1003");
ssjCodes.add("G1009"); ssjCodes.add("G1009");
ssjCodeList.put("in", ssjCodes); ssjCodeList.put("in", ssjCodes);
//流利架
ArrayList<String> ssjCodes2 = new ArrayList<>();
ssjCodes2.add("LLJ1");
ssjCodes2.add("LLJ2");
ssjCodes2.add("LLJ3");
ssjCodes2.add("LLJ4");
ssjCodes2.add("LLJ5");
ssjCodeList.put("in2", ssjCodes2);
apiService = SpringUtils.getBean(IApiService.class);
agvQueueService = SpringUtils.getBean(IAgvQueueService.class);
log.info("初始化服务 {},{}", apiService, agvQueueService);
} }
@Override
public void run() { public void run() {
init();
while (isRun){
for (String type : ssjCodeList.keySet()) { for (String type : ssjCodeList.keySet()) {
if ("in".equals(type)) {
switch ( type){
case "in":
//正常入库
for (String ssjCode : ssjCodeList.get(type)) { for (String ssjCode : ssjCodeList.get(type)) {
try {
if (PlcRead.deviceMap.containsKey(ssjCode)) { if (PlcRead.deviceMap.containsKey(ssjCode)) {
inDispatch(PlcRead.deviceMap.get(ssjCode)); inDispatch(PlcRead.deviceMap.get(ssjCode));
} else { } else {
log.error("设备不存在 ssjCode{}", ssjCode); log.error("设备不存在 ssjCode{}", ssjCode);
} }
} catch (RuntimeException e) {
log.error(e.getMessage(),e);
}
}
break;
case "in2":
//流利架 空料箱入库
for (String lljCode : ssjCodeList.get(type)) {
try {
inLljDispatch(lljCode);
} catch (RuntimeException e) {
log.error(e.getMessage(),e);
}
}
break;
}
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
/**
* 流利架空料箱入库
* @param lljCode
*/
private void inLljDispatch(String lljCode) {
//查询流利架未开始的作业
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setStatus("1");
mydoJobParam.setEntranceId(lljCode);
MydoJob mydoJob = apiService.requestEnter(mydoJobParam);
if (ObjUtil.isNotNull(mydoJob) && !"6".equals(mydoJob.getExecutionPhase())) {
//判断是否生成队列
AgvQueue agvQueueParam = new AgvQueue();
agvQueueParam.setWmsTaskNo(mydoJob.getTaskNo());
agvQueueParam.setPositionCode1(lljCode);
agvQueueParam.setStatus("0");
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam);
if (CollUtil.isEmpty(agvQueues)) {
//生成agv队列
AgvQueue agvQueue = createAgvQueue(lljCode, mydoJob);
//请求任务生成
GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue);
//修改wms任务状态
if (genAgvSchedulingTaskResponse.getCode() == 0) {
//修改ctu执行状态
agvQueue.setStatus("1");
agvQueueService.updateAgvQueue(agvQueue);
log.info("向CTU下入库库作业");
//修改mydoJob执行阶段
mydoJob.setExecutionPhase("6");
apiService.updateMydoJob(mydoJob);
}
}
}else {
if (ObjUtil.isNull(mydoJob)){
log.info("无入库库作业 lljCode:{}", lljCode);
}
if ("6".equals(mydoJob.getExecutionPhase())) {
log.info("入库库作业已下发 taskNo:{}", mydoJob.getTaskNo());
} }
} }
} }
} /**
* 输送线入库
* @param inSsjDevice
*/
public void inDispatch(DeviceSsj inSsjDevice) { public void inDispatch(DeviceSsj inSsjDevice) {
//如果入库请求1 并且 托盘码不为空 //如果入库请求1 并且 托盘码不为空
if (inSsjDevice.getRkqq() == 1 && StrUtil.isNotEmpty(inSsjDevice.getTrayCode())) { if (inSsjDevice.getRkqq() == 1 && StrUtil.isNotEmpty(inSsjDevice.getTrayCode())) {
//根据入口,查询对应的入库作业 //根据入口,查询对应的入库作业
MydoJob mydoJobParam = new MydoJob(); MydoJob mydoJobParam = new MydoJob();
//mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
mydoJobParam.setStatus("1"); mydoJobParam.setStatus("1");
mydoJobParam.setTrayCode(inSsjDevice.getTrayCode()); mydoJobParam.setTrayCode(inSsjDevice.getTrayCode());
List<MydoJob> mydoJobs = apiService.getMydoJobList(mydoJobParam); MydoJob mydoJob = apiService.requestEnter(mydoJobParam);
if (CollUtil.isNotEmpty(mydoJobs)) { if (ObjUtil.isNotNull(mydoJob) && !"6".equals(mydoJob.getExecutionPhase())){
MydoJob mydoJob = mydoJobs.get(0); //通知wms 当前料箱的入库口
//修改mydojob入口
mydoJob.setEntranceId(inSsjDevice.getDeviceCode()); mydoJob.setEntranceId(inSsjDevice.getDeviceCode());
apiService.updateMydoJob(mydoJob); apiService.updateMydoJob(mydoJob);
//判断是否生成队列 //判断是否生成队列
AgvQueue agvQueueParam = new AgvQueue(); AgvQueue agvQueueParam = new AgvQueue();
agvQueueParam.setWmsTaskNo(mydoJob.getTaskNo()); agvQueueParam.setWmsTaskNo(mydoJob.getTaskNo());
@@ -83,21 +170,7 @@ public class BsInSsjThread {
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam); List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam);
if (CollUtil.isEmpty(agvQueues)) { if (CollUtil.isEmpty(agvQueues)) {
//生成agv队列 //生成agv队列
AgvQueue agvQueue = createAgvQueue(inSsjDevice, mydoJob); AgvQueue agvQueue = createAgvQueue(inSsjDevice.getDeviceCode(), mydoJob);
//请求任务生成
GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue);
//修改wms任务状态
if (genAgvSchedulingTaskResponse.getCode() == 0) {
//修改ctu执行状态
agvQueue.setStatus("1");
agvQueueService.updateAgvQueue(agvQueue);
log.info("向CTU下入库库作业");
//修改mydoJob执行阶段
mydoJob.setExecutionPhase("6");
apiService.updateMydoJob(mydoJob);
}
} else {
AgvQueue agvQueue = agvQueues.get(0);
//请求任务生成 //请求任务生成
GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue); GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue);
//修改wms任务状态 //修改wms任务状态
@@ -111,36 +184,27 @@ public class BsInSsjThread {
apiService.updateMydoJob(mydoJob); apiService.updateMydoJob(mydoJob);
} }
} }
} else {
mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
mydoJobParam.setStatus("3");
mydoJobParam.setTrayCode(inSsjDevice.getTrayCode());
mydoJobs = apiService.getMydoJobList(mydoJobParam);
if (CollUtil.isNotEmpty(mydoJobs)) {
log.info("trayCode:{} 入库作业正在执行中", inSsjDevice.getTrayCode());
} else {
log.info("trayCode:{} 无入库作业", inSsjDevice.getTrayCode());
}
} }
} }
} }
/** /**
* 生成入库AGV队列 * 生成入库AGV队列
* *
* @param ssjDevice * @param positionCode1
* @param mydoJob * @param mydoJob
* @return * @return
*/ */
private AgvQueue createAgvQueue(DeviceSsj ssjDevice, MydoJob mydoJob) { private AgvQueue createAgvQueue(String positionCode1, MydoJob mydoJob) {
//生成ctu执行队列 //生成ctu执行队列
AgvQueue agvQueue = new AgvQueue(); AgvQueue agvQueue = new AgvQueue();
String reqCode = IdUtil.fastSimpleUUID(); String reqCode = IdUtil.fastSimpleUUID();
agvQueue.setReqCode(reqCode); agvQueue.setReqCode(reqCode);
agvQueue.setReqTime(DateUtil.formatDateTime(DateUtil.date())); agvQueue.setReqTime(DateUtil.formatDateTime(DateUtil.date()));
agvQueue.setAgvType("CTU"); agvQueue.setAgvType("CTU");
agvQueue.setPositionCode1(mydoJob.getCargoSpaceId()); agvQueue.setPositionCode1(positionCode1);
agvQueue.setPositionCode2(ssjDevice.getDeviceCode()); agvQueue.setPositionCode2(mydoJob.getCargoSpaceId());
agvQueue.setTaskType("F01"); agvQueue.setTaskType("F01");
agvQueue.setCtnrType("0"); agvQueue.setCtnrType("0");
agvQueue.setCtnrCode("0"); agvQueue.setCtnrCode("0");

View File

@@ -3,7 +3,9 @@ package com.ruoyi.schedule.scheduleTask.ssj.js;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.device.agv.domain.AgvQueue; import com.ruoyi.device.agv.domain.AgvQueue;
import com.ruoyi.device.agv.service.IAgvQueueService; import com.ruoyi.device.agv.service.IAgvQueueService;
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest; import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest;
@@ -23,18 +25,16 @@ import java.util.List;
@Slf4j @Slf4j
@Component public class JsInSsjThread implements Runnable {
public class JsInSsjThread {
public HashMap<String, List<String>> ssjCodeList; public HashMap<String, List<String>> ssjCodeList;
@Resource
private IApiService apiService; private IApiService apiService;
@Resource
private IAgvQueueService agvQueueService; private IAgvQueueService agvQueueService;
public boolean isRun = true;
@PostConstruct
public void init() { public void init() {
//todo 获取设备编码列表 //todo 获取设备编码列表
ssjCodeList = new HashMap<>(); ssjCodeList = new HashMap<>();
@@ -47,18 +47,40 @@ public class JsInSsjThread {
ssjCodes.add("G5009"); ssjCodes.add("G5009");
ssjCodes.add("G5018"); ssjCodes.add("G5018");
ssjCodeList.put("in", ssjCodes); ssjCodeList.put("in", ssjCodes);
apiService = SpringUtils.getBean(IApiService.class);
agvQueueService = SpringUtils.getBean(IAgvQueueService.class);
log.info("初始化服务 {},{}", apiService, agvQueueService);
} }
@Override
public void run() { public void run() {
init();
while (isRun){
for (String type : ssjCodeList.keySet()) { for (String type : ssjCodeList.keySet()) {
if ("in".equals(type)) {
switch ( type){
case "in":
//正常入库 尾箱回流 物料入库 空料箱入库
for (String ssjCode : ssjCodeList.get(type)) { for (String ssjCode : ssjCodeList.get(type)) {
try {
if (PlcRead.deviceMap.containsKey(ssjCode)) { if (PlcRead.deviceMap.containsKey(ssjCode)) {
inDispatch(PlcRead.deviceMap.get(ssjCode)); inDispatch(PlcRead.deviceMap.get(ssjCode));
} else { } else {
log.error("设备不存在 ssjCode{}", ssjCode); log.error("设备不存在 ssjCode{}", ssjCode);
} }
} catch (RuntimeException e) {
log.error(e.getMessage(),e);
} }
}
break;
}
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} }
} }
@@ -70,16 +92,13 @@ public class JsInSsjThread {
if (inSsjDevice.getRkqq() == 1 && StrUtil.isNotEmpty(inSsjDevice.getTrayCode())) { if (inSsjDevice.getRkqq() == 1 && StrUtil.isNotEmpty(inSsjDevice.getTrayCode())) {
//根据入口,查询对应的入库作业 //根据入口,查询对应的入库作业
MydoJob mydoJobParam = new MydoJob(); MydoJob mydoJobParam = new MydoJob();
//mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
mydoJobParam.setStatus("1"); mydoJobParam.setStatus("1");
mydoJobParam.setTrayCode(inSsjDevice.getTrayCode()); mydoJobParam.setTrayCode(inSsjDevice.getTrayCode());
List<MydoJob> mydoJobs = apiService.getMydoJobList(mydoJobParam); MydoJob mydoJob = apiService.requestEnter(mydoJobParam);
if (CollUtil.isNotEmpty(mydoJobs)) { if (ObjUtil.isNotNull(mydoJob) && !"6".equals(mydoJob.getExecutionPhase())){
MydoJob mydoJob = mydoJobs.get(0); //通知wms 当前料箱的入库口
//修改mydojob入口
mydoJob.setEntranceId(inSsjDevice.getDeviceCode()); mydoJob.setEntranceId(inSsjDevice.getDeviceCode());
apiService.updateMydoJob(mydoJob); apiService.updateMydoJob(mydoJob);
//判断是否生成队列 //判断是否生成队列
AgvQueue agvQueueParam = new AgvQueue(); AgvQueue agvQueueParam = new AgvQueue();
agvQueueParam.setWmsTaskNo(mydoJob.getTaskNo()); agvQueueParam.setWmsTaskNo(mydoJob.getTaskNo());
@@ -101,32 +120,9 @@ public class JsInSsjThread {
mydoJob.setExecutionPhase("6"); mydoJob.setExecutionPhase("6");
apiService.updateMydoJob(mydoJob); apiService.updateMydoJob(mydoJob);
} }
} else {
AgvQueue agvQueue = agvQueues.get(0);
//请求任务生成
GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue);
//修改wms任务状态
if (genAgvSchedulingTaskResponse.getCode() == 0) {
//修改ctu执行状态
agvQueue.setStatus("1");
agvQueueService.updateAgvQueue(agvQueue);
log.info("向CTU下入库库作业");
//修改mydoJob执行阶段
mydoJob.setExecutionPhase("6");
apiService.updateMydoJob(mydoJob);
}
}
} else {
mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
mydoJobParam.setStatus("3");
mydoJobParam.setTrayCode(inSsjDevice.getTrayCode());
mydoJobs = apiService.getMydoJobList(mydoJobParam);
if (CollUtil.isNotEmpty(mydoJobs)) {
log.info("trayCode:{} 入库作业正在执行中", inSsjDevice.getTrayCode());
} else {
log.info("trayCode:{} 无入库作业", inSsjDevice.getTrayCode());
} }
} }
} }
} }

View File

@@ -50,7 +50,6 @@ public class JsPickSsjTread {
} }
@Scheduled(fixedDelay = 5000)
public void run(){ public void run(){
for (String type : ssjCodeList.keySet()) { for (String type : ssjCodeList.keySet()) {
if ("pick".equals(type)) { if ("pick".equals(type)) {