123
This commit is contained in:
@@ -3,12 +3,10 @@ package com.ruoyi.api.controller;
|
|||||||
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
||||||
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
||||||
import com.ruoyi.api.service.IApiService;
|
import com.ruoyi.api.service.IApiService;
|
||||||
|
import com.ruoyi.bas.port.service.IWcsPortService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/wcs2Wms/api")
|
@RequestMapping("/wcs2Wms/api")
|
||||||
@@ -16,6 +14,8 @@ public class Wcs2WmsController {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IApiService apiService;
|
private IApiService apiService;
|
||||||
|
@Autowired
|
||||||
|
private IWcsPortService wcsPortService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 接收出库任务
|
* 接收出库任务
|
||||||
@@ -52,5 +52,15 @@ public class Wcs2WmsController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询缓存点
|
||||||
|
* @param jobParam
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/selectWcsPort")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult selectWcsPort(@RequestBody JobParam jobParam) {
|
||||||
|
return apiService.selectWcsPort(jobParam);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,6 +100,8 @@ public interface IApiService
|
|||||||
*/
|
*/
|
||||||
AjaxResult cancelMydoJob(JobParam jobParam);
|
AjaxResult cancelMydoJob(JobParam jobParam);
|
||||||
|
|
||||||
|
AjaxResult selectWcsPort(JobParam jobParam);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.PositionCodeData;
|
|||||||
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
||||||
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
|
||||||
import com.ruoyi.api.service.IApiService;
|
import com.ruoyi.api.service.IApiService;
|
||||||
|
import com.ruoyi.bas.port.domain.WcsPort;
|
||||||
|
import com.ruoyi.bas.port.service.IWcsPortService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.DateUtils;
|
||||||
import com.ruoyi.job.domain.MydoJob;
|
import com.ruoyi.job.domain.MydoJob;
|
||||||
@@ -51,6 +53,8 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
private IAgvQueueService agvQueueService;
|
private IAgvQueueService agvQueueService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IMydoJobService mydoJobService;
|
private IMydoJobService mydoJobService;
|
||||||
|
@Autowired
|
||||||
|
private IWcsPortService wcsPortService;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -169,9 +173,23 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
log.info("【AGV请求放货】任务号:{}", request.getTaskCode());
|
log.info("【AGV请求放货】任务号:{}", request.getTaskCode());
|
||||||
break;
|
break;
|
||||||
case "end":
|
case "end":
|
||||||
|
|
||||||
agvQueue.setStatus("7");
|
agvQueue.setStatus("7");
|
||||||
agvQueueService.updateAgvQueue(agvQueue);
|
agvQueueService.updateAgvQueue(agvQueue);
|
||||||
log.info("【AGV任务结束】任务号:{}", request.getTaskCode());
|
log.info("【AGV任务结束】任务号:{}", request.getTaskCode());
|
||||||
|
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(new WcsPort());
|
||||||
|
// 查询agvQueue中的positionCode2的值是否在wcsPorts列表中存在
|
||||||
|
boolean isPositionValid = wcsPorts.stream()
|
||||||
|
.anyMatch(port -> port.getPortCode().equals(agvQueue.getPositionCode2()));
|
||||||
|
if (isPositionValid) {
|
||||||
|
agvQueueService.insertHistory(agvQueue.getReqCode());
|
||||||
|
agvQueueService.deleteAgvQueueByReqCode(agvQueue.getReqCode());
|
||||||
|
WcsPort wcsPort = new WcsPort();
|
||||||
|
wcsPort.setPortCode(agvQueue.getPositionCode2());
|
||||||
|
wcsPort.setStatus("2");
|
||||||
|
wcsPortService.updateWcsPort(wcsPort);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
log.info("未知方法");
|
log.info("未知方法");
|
||||||
@@ -311,7 +329,7 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) {
|
public GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) {
|
||||||
//todo 请求ctu
|
|
||||||
GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest();
|
GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest();
|
||||||
genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode());
|
genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode());
|
||||||
genAgvSchedulingTaskRequest.setTaskMode("0");
|
genAgvSchedulingTaskRequest.setTaskMode("0");
|
||||||
@@ -391,4 +409,10 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
return AjaxResult.error();
|
return AjaxResult.error();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AjaxResult selectWcsPort(JobParam jobParam) {
|
||||||
|
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(new WcsPort());
|
||||||
|
return AjaxResult.success(wcsPorts);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ public class TaskStatusCode {
|
|||||||
/**
|
/**
|
||||||
* 任务执行阶段 AGV
|
* 任务执行阶段 AGV
|
||||||
*/
|
*/
|
||||||
public static final String TASK_EP_AGV = "1";
|
public static final String TASK_EP_AGV = "2";
|
||||||
/**
|
/**
|
||||||
* 任务执行阶段 入口输送机
|
* 任务执行阶段 入口输送机
|
||||||
*/
|
*/
|
||||||
public static final String TASK_EP_SSJ = "2";
|
public static final String TASK_EP_SSJ = "3";
|
||||||
/**
|
/**
|
||||||
* 任务执行阶段 巷道口
|
* 任务执行阶段 巷道口
|
||||||
*/
|
*/
|
||||||
@@ -49,6 +49,8 @@ public class TaskStatusCode {
|
|||||||
/**
|
/**
|
||||||
* 任务执行阶段 回传wms完成
|
* 任务执行阶段 回传wms完成
|
||||||
*/
|
*/
|
||||||
public static final String TASK_EP_WMS_FINISH = "5";
|
public static final String TASK_EP_WMS_FINISH = "6";
|
||||||
|
|
||||||
|
public static final String TASK_EP_LINE_SSJ = "1";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.ruoyi.schedule.scheduleTask.ssj.floor2;
|
package com.ruoyi.schedule.scheduleTask.ssj.floor2;
|
||||||
|
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.ruoyi.api.service.IApiService;
|
import com.ruoyi.api.service.IApiService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||||
@@ -19,6 +21,7 @@ import java.util.Date;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.ruoyi.common.TaskStatusCode.TASK_EP_LINE_SSJ;
|
||||||
import static com.ruoyi.common.TaskStatusCode.TASK_EP_SSJ;
|
import static com.ruoyi.common.TaskStatusCode.TASK_EP_SSJ;
|
||||||
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj;
|
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj;
|
||||||
|
|
||||||
@@ -44,6 +47,9 @@ public class Floor2InOutSsjThread implements Runnable {
|
|||||||
ssjCodes.add("L1011");
|
ssjCodes.add("L1011");
|
||||||
ssjCodes.add("L1012");
|
ssjCodes.add("L1012");
|
||||||
ssjCodeList.put("inout", ssjCodes);
|
ssjCodeList.put("inout", ssjCodes);
|
||||||
|
ssjCodes.add("L1001");
|
||||||
|
ssjCodes.add("L1003");
|
||||||
|
ssjCodeList.put("sm", ssjCodes);
|
||||||
apiService = SpringUtils.getBean(IApiService.class);
|
apiService = SpringUtils.getBean(IApiService.class);
|
||||||
agvQueueService = SpringUtils.getBean(IAgvQueueService.class);
|
agvQueueService = SpringUtils.getBean(IAgvQueueService.class);
|
||||||
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
|
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
|
||||||
@@ -59,7 +65,7 @@ public class Floor2InOutSsjThread implements Runnable {
|
|||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case "inout":
|
case "inout":
|
||||||
//生产线入库
|
//入库口
|
||||||
for (String ssjCode : ssjCodeList.get(type)) {
|
for (String ssjCode : ssjCodeList.get(type)) {
|
||||||
try {
|
try {
|
||||||
if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) {
|
if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) {
|
||||||
@@ -73,6 +79,17 @@ public class Floor2InOutSsjThread implements Runnable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "sm":
|
||||||
|
//入库扫码
|
||||||
|
for (String ssjCode : ssjCodeList.get(type)) {
|
||||||
|
try {
|
||||||
|
if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) {
|
||||||
|
inDispatch1(PlcSsjRead.deviceSsjMap.get(ssjCode));
|
||||||
|
} else {
|
||||||
|
log.error("设备不存在 ssjCode{}", ssjCode);
|
||||||
|
}
|
||||||
|
} catch (RuntimeException e) {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
@@ -90,16 +107,17 @@ public class Floor2InOutSsjThread implements Runnable {
|
|||||||
if (inSsjDevice.getKx() == 1) {
|
if (inSsjDevice.getKx() == 1) {
|
||||||
AgvQueue agvQueue = new AgvQueue();
|
AgvQueue agvQueue = new AgvQueue();
|
||||||
agvQueue.setStatus("5");//请求放货
|
agvQueue.setStatus("5");//请求放货
|
||||||
|
//todo 与agv对点
|
||||||
agvQueue.setPositionCode2(inSsjDevice.getDeviceCode());
|
agvQueue.setPositionCode2(inSsjDevice.getDeviceCode());
|
||||||
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueue);
|
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueue);
|
||||||
//不允许放货
|
//不允许放货 等着
|
||||||
if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 0) {
|
// if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 0) {
|
||||||
//如果有这个输送机口的agv队列并请求放货(状态为6)
|
//如果有这个输送机口的agv队列并请求放货(状态为6)
|
||||||
int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(agvQueues.get(0).getCtnrType()),1);
|
// int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(agvQueues.get(0).getCtnrType()),1);
|
||||||
if (i == 1) {
|
// if (i == 1) {
|
||||||
log.info(inSsjDevice.getDeviceCode() + "输送机下发请求放货成功");
|
// log.info(inSsjDevice.getDeviceCode() + "输送机下发请求放货异常成功");
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
//允许放货
|
//允许放货
|
||||||
if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 1) {
|
if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 1) {
|
||||||
log.info("设备:{} 位置:{} 任务号:{} 请求放货成功", inSsjDevice.getDeviceCode(), "输送线", agvQueues.get(0).getTaskCode());
|
log.info("设备:{} 位置:{} 任务号:{} 请求放货成功", inSsjDevice.getDeviceCode(), "输送线", agvQueues.get(0).getTaskCode());
|
||||||
@@ -115,6 +133,7 @@ public class Floor2InOutSsjThread implements Runnable {
|
|||||||
if (inSsjDevice.getKx() == 0 && inSsjDevice.getTaskNo() == 0) {
|
if (inSsjDevice.getKx() == 0 && inSsjDevice.getTaskNo() == 0) {
|
||||||
AgvQueue agvQueue = new AgvQueue();
|
AgvQueue agvQueue = new AgvQueue();
|
||||||
agvQueue.setStatus("7"); //end
|
agvQueue.setStatus("7"); //end
|
||||||
|
//todo 与agv对点
|
||||||
agvQueue.setPositionCode2(inSsjDevice.getDeviceCode());
|
agvQueue.setPositionCode2(inSsjDevice.getDeviceCode());
|
||||||
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueue);
|
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(agvQueue);
|
||||||
if (!agvQueues.isEmpty()) {
|
if (!agvQueues.isEmpty()) {
|
||||||
@@ -148,6 +167,73 @@ public class Floor2InOutSsjThread implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void inDispatch1(DeviceSsj ssjDevice) {
|
||||||
|
//有入库请求就肯定是电气的任务号的作业,如果有正执行的出库作业退回
|
||||||
|
if(StrUtil.isNotBlank(ssjDevice.getTrayCode()) && ssjDevice.getRkqq()==1 && ssjDevice.getTaskNo()<=1000){
|
||||||
|
|
||||||
|
MydoJob mydoJobParam = new MydoJob();
|
||||||
|
mydoJobParam.setInOut("2");
|
||||||
|
mydoJobParam.setStatus("3");
|
||||||
|
mydoJobParam.setExitId(ssjDevice.getDeviceCode());
|
||||||
|
List<MydoJob> outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam);
|
||||||
|
if(!outMydoJobList.isEmpty()){
|
||||||
|
//todo 去向不明朗
|
||||||
|
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"0",2,2);
|
||||||
|
if (i == 1) {
|
||||||
|
log.info(ssjDevice.getDeviceCode()+"有正执行的出库作业退回" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MydoJob mydoJob = new MydoJob();
|
||||||
|
mydoJob.setInOrOut("1");
|
||||||
|
// mydoJob.setStatus("1");
|
||||||
|
mydoJob.setEntranceId(ssjDevice.getDeviceCode());
|
||||||
|
// mydoJob.setExecutionPhase("0");
|
||||||
|
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
|
||||||
|
if(!mydoJobs.isEmpty()){
|
||||||
|
MydoJob mydoJob1 = mydoJobs.get(0);
|
||||||
|
if(mydoJob1.getStatus().equals("1") && mydoJob1.getExecutionPhase().equals("0")){
|
||||||
|
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob1.getTaskNo(),1,1);
|
||||||
|
if (i == 1) {
|
||||||
|
mydoJob1.setExecutionPhase(TASK_EP_SSJ);
|
||||||
|
mydoJob1.setStatus("3");
|
||||||
|
mydoJobService.updateMydoJob(mydoJob1);
|
||||||
|
log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob1.getTaskNo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
|
map.put("trayCode",ssjDevice.getTrayCode());
|
||||||
|
map.put("entranceId",ssjDevice.getDeviceCode());
|
||||||
|
AjaxResult ajaxResult = apiService.selectMydoJobByTrayCodeAndEntranceId(map);
|
||||||
|
if(ajaxResult.isSuccess()){
|
||||||
|
MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class) ;
|
||||||
|
mydoJob2.setStatus("1");
|
||||||
|
mydoJob2.setExecutionPhase("0");
|
||||||
|
mydoJob2.setCreateTime(new Date());
|
||||||
|
mydoJobService.insertMydoJob(mydoJob2);
|
||||||
|
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1);
|
||||||
|
if (i == 1) {
|
||||||
|
mydoJob2.setExecutionPhase(TASK_EP_SSJ);
|
||||||
|
mydoJobService.updateMydoJob(mydoJob2);
|
||||||
|
log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:{}" , mydoJob2.getTaskNo());
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//todo 去向不明朗
|
||||||
|
int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"0",2,2);
|
||||||
|
if (i == 1) {
|
||||||
|
log.info(ssjDevice.getDeviceCode()+"输送机没取到作业下发输送线" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.convert.Convert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.ruoyi.api.service.IApiService;
|
import com.ruoyi.api.service.IApiService;
|
||||||
|
import com.ruoyi.bas.port.domain.WcsPort;
|
||||||
|
import com.ruoyi.bas.port.service.IWcsPortService;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.domain.SendData;
|
import com.ruoyi.common.domain.SendData;
|
||||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||||
@@ -22,6 +24,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.ruoyi.common.TaskStatusCode.TASK_EP_AGV;
|
import static com.ruoyi.common.TaskStatusCode.TASK_EP_AGV;
|
||||||
|
import static com.ruoyi.common.TaskStatusCode.TASK_EP_LINE_SSJ;
|
||||||
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.deviceSsjMap;
|
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.deviceSsjMap;
|
||||||
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj;
|
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj;
|
||||||
|
|
||||||
@@ -36,6 +39,7 @@ public class LineSsjThread implements Runnable {
|
|||||||
private IApiService apiService;
|
private IApiService apiService;
|
||||||
private IAgvQueueService agvQueueService;
|
private IAgvQueueService agvQueueService;
|
||||||
private IMydoJobService mydoJobService;
|
private IMydoJobService mydoJobService;
|
||||||
|
private IWcsPortService wcsPortService;
|
||||||
|
|
||||||
public boolean isRun = true;
|
public boolean isRun = true;
|
||||||
|
|
||||||
@@ -48,6 +52,7 @@ public class LineSsjThread implements Runnable {
|
|||||||
apiService = SpringUtils.getBean(IApiService.class);
|
apiService = SpringUtils.getBean(IApiService.class);
|
||||||
agvQueueService = SpringUtils.getBean(IAgvQueueService.class);
|
agvQueueService = SpringUtils.getBean(IAgvQueueService.class);
|
||||||
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
|
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
|
||||||
|
wcsPortService = SpringUtils.getBean(IWcsPortService.class);
|
||||||
log.info("初始化服务 {},{}", apiService, agvQueueService);
|
log.info("初始化服务 {},{}", apiService, agvQueueService);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,6 +80,7 @@ public class LineSsjThread implements Runnable {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(1500);
|
Thread.sleep(1500);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
@@ -93,21 +99,22 @@ public class LineSsjThread implements Runnable {
|
|||||||
//查作业,入如果已经有了,直接下发输送线
|
//查作业,入如果已经有了,直接下发输送线
|
||||||
MydoJob mydoJob = new MydoJob();
|
MydoJob mydoJob = new MydoJob();
|
||||||
mydoJob.setInOrOut("1");
|
mydoJob.setInOrOut("1");
|
||||||
mydoJob.setStatus("1");
|
// mydoJob.setStatus("1");
|
||||||
mydoJob.setEntranceId("G1005");
|
mydoJob.setEntranceId("G1005");
|
||||||
mydoJob.setExecutionPhase("0");
|
// mydoJob.setExecutionPhase("0");
|
||||||
List<MydoJob> mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob);
|
List<MydoJob> mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob);
|
||||||
//有作业,下发输送机任务号,覆盖任务号
|
//有作业,下发输送机任务号,覆盖任务号
|
||||||
if (!mydoJobs.isEmpty()) {
|
if (!mydoJobs.isEmpty()) {
|
||||||
|
//永远有且只有一条
|
||||||
mydoJob = mydoJobs.get(0);
|
mydoJob = mydoJobs.get(0);
|
||||||
|
if(mydoJob.getStatus().equals("1")&& mydoJob.getExecutionPhase().equals("0")) {
|
||||||
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1);
|
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
mydoJob.setExecutionPhase(TASK_EP_AGV);
|
mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ);
|
||||||
mydoJobService.updateMydoJob(mydoJob);
|
mydoJobService.updateMydoJob(mydoJob);
|
||||||
log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo());
|
log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -124,11 +131,10 @@ public class LineSsjThread implements Runnable {
|
|||||||
mydoJob2.setStatus("1");
|
mydoJob2.setStatus("1");
|
||||||
mydoJob2.setExecutionPhase("0");
|
mydoJob2.setExecutionPhase("0");
|
||||||
mydoJob2.setCreateTime(new Date());
|
mydoJob2.setCreateTime(new Date());
|
||||||
|
|
||||||
mydoJobService.insertMydoJob(mydoJob2);
|
mydoJobService.insertMydoJob(mydoJob2);
|
||||||
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1);
|
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
mydoJob2.setExecutionPhase(TASK_EP_AGV);
|
mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ);
|
||||||
mydoJobService.updateMydoJob(mydoJob2);
|
mydoJobService.updateMydoJob(mydoJob2);
|
||||||
log.info("G1005产线输送机下发任务号成功:{}" , mydoJob2.getTaskNo());
|
log.info("G1005产线输送机下发任务号成功:{}" , mydoJob2.getTaskNo());
|
||||||
}
|
}
|
||||||
@@ -140,6 +146,12 @@ public class LineSsjThread implements Runnable {
|
|||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
log.info("G1005产线输送机下发错误信息成功");
|
log.info("G1005产线输送机下发错误信息成功");
|
||||||
}
|
}
|
||||||
|
//7是报工单失败,不处理
|
||||||
|
if(!"7".equals(Integer.parseInt(ajaxResult.get("code").toString()))){
|
||||||
|
createMoveToPort(SsjDevice);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,18 +165,20 @@ public class LineSsjThread implements Runnable {
|
|||||||
//查wcs有没作业,有下发给输送机任务号,覆盖任务号
|
//查wcs有没作业,有下发给输送机任务号,覆盖任务号
|
||||||
MydoJob mydoJob = new MydoJob();
|
MydoJob mydoJob = new MydoJob();
|
||||||
mydoJob.setInOrOut("1");
|
mydoJob.setInOrOut("1");
|
||||||
mydoJob.setStatus("1");
|
// mydoJob.setStatus("1");
|
||||||
mydoJob.setEntranceId("G1005");
|
mydoJob.setEntranceId("G1005");
|
||||||
mydoJob.setExecutionPhase("0");
|
// mydoJob.setExecutionPhase("0");
|
||||||
List<MydoJob> mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob);
|
List<MydoJob> mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob);
|
||||||
if (!mydoJobs.isEmpty()) {
|
if (!mydoJobs.isEmpty()) {
|
||||||
mydoJob = mydoJobs.get(0);
|
mydoJob = mydoJobs.get(0);
|
||||||
|
if(mydoJob.getStatus().equals("1") && mydoJob.getExecutionPhase().equals("0")) {
|
||||||
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1);
|
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
mydoJob.setExecutionPhase(TASK_EP_AGV);
|
mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ);
|
||||||
mydoJobService.updateMydoJob(mydoJob);
|
mydoJobService.updateMydoJob(mydoJob);
|
||||||
log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo());
|
log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
//没有,请求错误接口,找作业,返回成功,//拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号,shibai...
|
//没有,请求错误接口,找作业,返回成功,//拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号,shibai...
|
||||||
HashMap<String, Object> paramMap = new HashMap<>();
|
HashMap<String, Object> paramMap = new HashMap<>();
|
||||||
@@ -175,7 +189,7 @@ public class LineSsjThread implements Runnable {
|
|||||||
mydoJobService.insertMydoJob(mydoJob2);
|
mydoJobService.insertMydoJob(mydoJob2);
|
||||||
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1);
|
int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
mydoJob2.setExecutionPhase(TASK_EP_AGV);
|
mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ);
|
||||||
mydoJobService.updateMydoJob(mydoJob2);
|
mydoJobService.updateMydoJob(mydoJob2);
|
||||||
log.info("G1005产线输送机下发任务号成功:" + mydoJob2.getTaskNo());
|
log.info("G1005产线输送机下发任务号成功:" + mydoJob2.getTaskNo());
|
||||||
}
|
}
|
||||||
@@ -187,6 +201,10 @@ public class LineSsjThread implements Runnable {
|
|||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
log.info("G1005产线输送机下发错误信息成功");
|
log.info("G1005产线输送机下发错误信息成功");
|
||||||
}
|
}
|
||||||
|
//7是报工单失败,不处理
|
||||||
|
if(!"7".equals(Integer.parseInt(ajaxResult.get("code").toString()))){
|
||||||
|
createMoveToPort(SsjDevice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,9 +219,9 @@ public class LineSsjThread implements Runnable {
|
|||||||
String deviceCode = "";
|
String deviceCode = "";
|
||||||
if (mydoJob != null) {
|
if (mydoJob != null) {
|
||||||
if ("1".equals(mydoJob.getRoadwayId())) {
|
if ("1".equals(mydoJob.getRoadwayId())) {
|
||||||
deviceCode = "L1011";
|
deviceCode = "L1001";
|
||||||
} else {
|
} else {
|
||||||
deviceCode = "L1012";
|
deviceCode = "L1003";
|
||||||
}
|
}
|
||||||
int kx = deviceSsjMap.get(deviceCode).getKx();
|
int kx = deviceSsjMap.get(deviceCode).getKx();
|
||||||
MydoJob mydoJobParam = new MydoJob();
|
MydoJob mydoJobParam = new MydoJob();
|
||||||
@@ -228,8 +246,9 @@ public class LineSsjThread implements Runnable {
|
|||||||
}else {
|
}else {
|
||||||
if ("1".equals(mydoJob.getStatus())){
|
if ("1".equals(mydoJob.getStatus())){
|
||||||
HashMap<String, String> paramMap = new HashMap<>();
|
HashMap<String, String> paramMap = new HashMap<>();
|
||||||
paramMap.put("trayCode", mydoJob.getTrayCode());
|
// paramMap.put("trayCode", mydoJob.getTrayCode());
|
||||||
paramMap.put("taskNo", mydoJob.getJobId());
|
paramMap.put("taskNo", mydoJob.getJobId());
|
||||||
|
//todo 与agv对点
|
||||||
paramMap.put("startPoint", "G1005");
|
paramMap.put("startPoint", "G1005");
|
||||||
paramMap.put("endPoint", deviceCode);
|
paramMap.put("endPoint", deviceCode);
|
||||||
paramMap.put("traySize",String.valueOf(SsjDevice.getTraySize()));
|
paramMap.put("traySize",String.valueOf(SsjDevice.getTraySize()));
|
||||||
@@ -253,6 +272,40 @@ public class LineSsjThread implements Runnable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void createMoveToPort(DeviceSsj SsjDevice){
|
||||||
|
WcsPort wcsPort = new WcsPort();
|
||||||
|
wcsPort.setStatus("1");
|
||||||
|
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(wcsPort);
|
||||||
|
List<AgvQueue> agvQueues = agvQueueService.selectAgvQueueList(new AgvQueue());
|
||||||
|
//检查agvQueues中是否有任何一个positionCode2是wcsPorts中的portCode
|
||||||
|
boolean hasMatchingPort = agvQueues.stream()
|
||||||
|
.map(AgvQueue::getPositionCode2)
|
||||||
|
.anyMatch(positionCode2 -> wcsPorts.stream()
|
||||||
|
.map(WcsPort::getPortCode)
|
||||||
|
.anyMatch(portCode -> portCode.equals(positionCode2)));
|
||||||
|
|
||||||
|
if(hasMatchingPort==false){
|
||||||
|
|
||||||
|
if(!wcsPorts.isEmpty()){
|
||||||
|
HashMap<String, String> map = new HashMap<>();
|
||||||
|
// map.put("trayCode", mydoJob.getTrayCode());
|
||||||
|
map.put("taskNo", StrUtil.uuid());
|
||||||
|
//todo 与agv对点
|
||||||
|
map.put("startPoint", "G1005");
|
||||||
|
map.put("endPoint", wcsPorts.get(0).getPortCode());
|
||||||
|
map.put("traySize",String.valueOf(SsjDevice.getTraySize()));
|
||||||
|
// map.put("wmsTaskNo", mydoJob.getTaskNo());
|
||||||
|
AjaxResult ajaxResult1 = apiService.receiveAgvMoveJob(map);
|
||||||
|
if(ajaxResult1.isSuccess()){
|
||||||
|
log.info("G1005产线生成作业失败,AGV下发搬运至缓存点任务成功:{}" , ajaxResult1.get("data"));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="spare3 != null">spare3 = #{spare3},</if>
|
<if test="spare3 != null">spare3 = #{spare3},</if>
|
||||||
<if test="status != null">status = #{status},</if>
|
<if test="status != null">status = #{status},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where port_code = #{portCode}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<delete id="deleteWcsPortById" parameterType="Long">
|
<delete id="deleteWcsPortById" parameterType="Long">
|
||||||
|
|||||||
Reference in New Issue
Block a user