This commit is contained in:
zj
2026-01-15 14:09:46 +08:00
parent 91ea5339a5
commit 50534dc3be
3 changed files with 81 additions and 27 deletions

View File

@@ -281,7 +281,14 @@ public class ApiServiceImpl implements IApiService {
agvQueue.setPositionCode1(code1); agvQueue.setPositionCode1(code1);
agvQueue.setPositionCode2(code2); agvQueue.setPositionCode2(code2);
agvQueue.setTaskType("A22"); agvQueue.setTaskType("A22");
agvQueue.setCtnrType("1"); // agvQueue.setCtnrType("1");
//rcslite开启托盘自动调整位置后 - 测试一巷道放货区分托盘类型
if (traySize == "2" || traySize == "3") {
agvQueue.setCtnrType("3");
}else{
agvQueue.setCtnrType("1");
}
agvQueue.setCtnrCode(traySize); agvQueue.setCtnrCode(traySize);
agvQueue.setCtnrNum("0"); agvQueue.setCtnrNum("0");
agvQueue.setTaskMode("0"); agvQueue.setTaskMode("0");
@@ -321,7 +328,7 @@ public class ApiServiceImpl implements IApiService {
continueTaskRequest.setReqCode(IdUtil.fastSimpleUUID()); continueTaskRequest.setReqCode(IdUtil.fastSimpleUUID());
continueTaskRequest.setReqTime(DateUtil.formatDateTime(DateUtil.date())); continueTaskRequest.setReqTime(DateUtil.formatDateTime(DateUtil.date()));
continueTaskRequest.setTaskCode(agvQueue.getTaskCode()); continueTaskRequest.setTaskCode(agvQueue.getTaskCode());
RequestLog requestLog = requestLogService.getRequestLog(CONTINUE_TASK_URL, "继续执行任务", JSONUtil.toJsonStr(continueTaskRequest)); RequestLog requestLog = requestLogService.getRequestLog2(CONTINUE_TASK_URL, "继续执行任务", JSONUtil.toJsonStr(continueTaskRequest));
if ("1".equals(requestLog.getIsSuccessful())) { if ("1".equals(requestLog.getIsSuccessful())) {
return AjaxResult.success(); return AjaxResult.success();
} else { } else {
@@ -420,7 +427,7 @@ public class ApiServiceImpl implements IApiService {
// paramMap.put("binName", agvQueue.getPositionCode2()); // paramMap.put("binName", agvQueue.getPositionCode2());
paramMap.put("indBind", "0"); paramMap.put("indBind", "0");
RequestLog requestLog = requestLogService.getRequestLog(DELETE_BIN_URL, "AGV解绑容器", JSONUtil.toJsonStr(paramMap)); RequestLog requestLog = requestLogService.getRequestLog2(DELETE_BIN_URL, "AGV解绑容器", JSONUtil.toJsonStr(paramMap));
if ("1".equals(requestLog.getIsSuccessful())) { if ("1".equals(requestLog.getIsSuccessful())) {
log.info("站点:"+agvQueue.getPositionCode2()+"{}AGV容器解绑成功!"); log.info("站点:"+agvQueue.getPositionCode2()+"{}AGV容器解绑成功!");
return AjaxResult.success(); return AjaxResult.success();

View File

@@ -14,16 +14,13 @@ import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.queue.agv.domain.AgvQueue; import com.ruoyi.queue.agv.domain.AgvQueue;
import com.ruoyi.queue.agv.service.IAgvQueueService; import com.ruoyi.queue.agv.service.IAgvQueueService;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList; import java.util.*;
import java.util.Date; import java.util.regex.Matcher;
import java.util.HashMap; import java.util.regex.Pattern;
import java.util.List;
import static com.ruoyi.common.TaskStatusCode.*; import static com.ruoyi.common.TaskStatusCode.*;
import static com.ruoyi.common.utils.Threads.sleep;
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsj;
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsjQH; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.writeToSsjQH;
@@ -129,7 +126,7 @@ public class Floor2InOutSsjThread implements Runnable {
} }
} }
//入库下发输送线 //入库下发输送线
if (inSsjDevice.getKx() == 0 && inSsjDevice.getTaskNo() == 0) { if (inSsjDevice.getKx() == 0 && inSsjDevice.getTaskNo2() == 0) {
AgvQueue agvQueue = new AgvQueue(); AgvQueue agvQueue = new AgvQueue();
agvQueue.setStatus("7"); //end agvQueue.setStatus("7"); //end
//todo 与agv对点 //todo 与agv对点
@@ -138,7 +135,11 @@ public class Floor2InOutSsjThread implements Runnable {
if (!agvQueues.isEmpty()) { if (!agvQueues.isEmpty()) {
//解绑AGV容器 //解绑AGV容器
apiService.deleteAgvTray(agvQueues.get(0)); apiService.deleteAgvTray(agvQueues.get(0));
sleep(10000); try {
Thread.sleep(5000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
if("L1001".equals(inSsjDevice.getDeviceCode())) { if("L1001".equals(inSsjDevice.getDeviceCode())) {
int i = writeToSsj("DB802.100", agvQueues.get(0).getWmsTaskNo(), 2,Integer.parseInt(agvQueues.get(0).getCtnrCode())); int i = writeToSsj("DB802.100", agvQueues.get(0).getWmsTaskNo(), 2,Integer.parseInt(agvQueues.get(0).getCtnrCode()));
if (i == 1) { if (i == 1) {
@@ -211,8 +212,9 @@ public class Floor2InOutSsjThread implements Runnable {
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setInOrOut("1"); mydoJob.setInOrOut("1");
// mydoJob.setStatus("1"); // mydoJob.setStatus("1");
String[] split = ssjDevice.getTrayCode().split(" "); String trayCode = ssjDevice.getTrayCode();
String serial = split[2].substring(7); //String[] split = trayCode.split("\\s+");
String serial = findFirst(PATTERNS.get("SERIAL"), trayCode);
mydoJob.setTrayCode(serial); mydoJob.setTrayCode(serial);
mydoJob.setEntranceId(ssjDevice.getDeviceCode()); mydoJob.setEntranceId(ssjDevice.getDeviceCode());
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob); List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
@@ -300,4 +302,25 @@ public class Floor2InOutSsjThread implements Runnable {
} }
} }
} }
private static final Map<String, Pattern> PATTERNS = createPatterns();
private static Map<String, Pattern> createPatterns() {
Map<String, Pattern> map = new LinkedHashMap<>();
map.put("MODEL", Pattern.compile("MODEL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("COLOR", Pattern.compile("COLOR:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("SERIAL", Pattern.compile("SERIAL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("V", Pattern.compile("V:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("Hz", Pattern.compile("Hz:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("PH", Pattern.compile("PH:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("NW", Pattern.compile("N\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("GW", Pattern.compile("G\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("ITEM_CODE", Pattern.compile("ITEM_CODE:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("@", Pattern.compile("@:([^\\s]+)", Pattern.CASE_INSENSITIVE));
return map;
}
private static String findFirst(Pattern pattern, String input) {
if (pattern == null || input == null) return null;
Matcher m = pattern.matcher(input);
return m.find() ? m.group(1) : null;
}
} }

View File

@@ -19,10 +19,9 @@ import com.ruoyi.schedule.plcRead.util.Tools;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Date; import java.util.regex.Matcher;
import java.util.HashMap; import java.util.regex.Pattern;
import java.util.List;
import static com.ruoyi.common.TaskStatusCode.*; import static com.ruoyi.common.TaskStatusCode.*;
import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.*; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.*;
@@ -99,8 +98,10 @@ public class LineSsjThread implements Runnable {
//查作业,入如果已经有了,直接下发输送线 //查作业,入如果已经有了,直接下发输送线
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setInOrOut("1"); mydoJob.setInOrOut("1");
String[] split = SsjDevice.getTrayCode().split(" "); String trayCode = SsjDevice.getTrayCode();
String serial = split[2].substring(7); //String[] split = trayCode.split("\\s+");
String serial = findFirst(PATTERNS.get("SERIAL"), trayCode);
mydoJob.setTrayCode(serial); mydoJob.setTrayCode(serial);
mydoJob.setEntranceId("G1005"); mydoJob.setEntranceId("G1005");
mydoJob.setFlag("0"); mydoJob.setFlag("0");
@@ -184,7 +185,6 @@ public class LineSsjThread implements Runnable {
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);
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_LINE_SSJ); mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ);
@@ -270,14 +270,14 @@ public class LineSsjThread implements Runnable {
agvQueueService.updateAgvQueue(agvQueue); agvQueueService.updateAgvQueue(agvQueue);
} }
} }
if("0".equals(agvQueue.getStatus())){ if ("0".equals(agvQueue.getStatus())) {
apiService.requestAgvQueue(agvQueue); apiService.requestAgvQueue(agvQueue);
} }
} 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("taskCode",mydoJob.getJobId()); paramMap.put("taskCode", mydoJob.getJobId());
//todo 与agv对点 //todo 与agv对点
paramMap.put("startPoint", "G1005"); paramMap.put("startPoint", "G1005");
paramMap.put("endPoint", deviceCode); paramMap.put("endPoint", deviceCode);
@@ -305,17 +305,18 @@ public class LineSsjThread implements Runnable {
agvQueueService.updateAgvQueue(agvQueue); agvQueueService.updateAgvQueue(agvQueue);
} }
} }
if("0".equals(agvQueue.getStatus())){ if ("0".equals(agvQueue.getStatus())) {
apiService.requestAgvQueue(agvQueue); apiService.requestAgvQueue(agvQueue);
} }
}else{ } else {
HashMap<String, String> paramMap = new HashMap<>(); HashMap<String, String> paramMap = new HashMap<>();
String[] split = SsjDevice.getTrayCode().split(" "); String trayCode = SsjDevice.getTrayCode();
String serial = split[2].substring(7); //String[] split = trayCode.split("\\s+");
String serial = findFirst(PATTERNS.get("SERIAL"), trayCode);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String taskCode = "BY" + sdf.format(new Date()); String taskCode = "BY" + sdf.format(new Date());
paramMap.put("trayCode", serial); paramMap.put("trayCode", serial);
paramMap.put("taskCode",taskCode); paramMap.put("taskCode", taskCode);
//todo 与agv对点 //todo 与agv对点
paramMap.put("startPoint", "G1005"); paramMap.put("startPoint", "G1005");
paramMap.put("endPoint", ""); paramMap.put("endPoint", "");
@@ -373,4 +374,27 @@ public class LineSsjThread implements Runnable {
} }
} }
} }
private static final Map<String, Pattern> PATTERNS = createPatterns();
private static Map<String, Pattern> createPatterns() {
Map<String, Pattern> map = new LinkedHashMap<>();
map.put("MODEL", Pattern.compile("MODEL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("COLOR", Pattern.compile("COLOR:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("SERIAL", Pattern.compile("SERIAL:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("V", Pattern.compile("V:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("Hz", Pattern.compile("Hz:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("PH", Pattern.compile("PH:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("NW", Pattern.compile("N\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("GW", Pattern.compile("G\\.W\\.:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("ITEM_CODE", Pattern.compile("ITEM_CODE:([^\\s]+)", Pattern.CASE_INSENSITIVE));
map.put("@", Pattern.compile("@:([^\\s]+)", Pattern.CASE_INSENSITIVE));
return map;
}
private static String findFirst(Pattern pattern, String input) {
if (pattern == null || input == null) return null;
Matcher m = pattern.matcher(input);
return m.find() ? m.group(1) : null;
}
} }