diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java index 2282aa24..1f0df626 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ApiServiceImpl.java @@ -281,7 +281,14 @@ public class ApiServiceImpl implements IApiService { agvQueue.setPositionCode1(code1); agvQueue.setPositionCode2(code2); 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.setCtnrNum("0"); agvQueue.setTaskMode("0"); @@ -321,7 +328,7 @@ public class ApiServiceImpl implements IApiService { continueTaskRequest.setReqCode(IdUtil.fastSimpleUUID()); continueTaskRequest.setReqTime(DateUtil.formatDateTime(DateUtil.date())); 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())) { return AjaxResult.success(); } else { @@ -420,7 +427,7 @@ public class ApiServiceImpl implements IApiService { // paramMap.put("binName", agvQueue.getPositionCode2()); 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())) { log.info("站点:"+agvQueue.getPositionCode2()+"{}AGV容器解绑成功!"); return AjaxResult.success(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java index f868fe4a..403eec80 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2InOutSsjThread.java @@ -14,16 +14,13 @@ import com.ruoyi.job.service.IMydoJobService; import com.ruoyi.queue.agv.domain.AgvQueue; import com.ruoyi.queue.agv.service.IAgvQueueService; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; -import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; 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.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.setStatus("7"); //end //todo 与agv对点 @@ -138,7 +135,11 @@ public class Floor2InOutSsjThread implements Runnable { if (!agvQueues.isEmpty()) { //解绑AGV容器 apiService.deleteAgvTray(agvQueues.get(0)); - sleep(10000); + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } if("L1001".equals(inSsjDevice.getDeviceCode())) { int i = writeToSsj("DB802.100", agvQueues.get(0).getWmsTaskNo(), 2,Integer.parseInt(agvQueues.get(0).getCtnrCode())); if (i == 1) { @@ -211,8 +212,9 @@ public class Floor2InOutSsjThread implements Runnable { MydoJob mydoJob = new MydoJob(); mydoJob.setInOrOut("1"); // mydoJob.setStatus("1"); - String[] split = ssjDevice.getTrayCode().split(" "); - String serial = split[2].substring(7); + String trayCode = ssjDevice.getTrayCode(); + //String[] split = trayCode.split("\\s+"); + String serial = findFirst(PATTERNS.get("SERIAL"), trayCode); mydoJob.setTrayCode(serial); mydoJob.setEntranceId(ssjDevice.getDeviceCode()); List mydoJobs = mydoJobService.selectMydoJobList(mydoJob); @@ -300,4 +302,25 @@ public class Floor2InOutSsjThread implements Runnable { } } } + + private static final Map PATTERNS = createPatterns(); + private static Map createPatterns() { + Map 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; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java index 79c55803..b47aa4c1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/LineSsjThread.java @@ -19,10 +19,9 @@ import com.ruoyi.schedule.plcRead.util.Tools; import lombok.extern.slf4j.Slf4j; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static com.ruoyi.common.TaskStatusCode.*; import static com.ruoyi.schedule.plcRead.ssj.PlcSsjRead.*; @@ -99,8 +98,10 @@ public class LineSsjThread implements Runnable { //查作业,入如果已经有了,直接下发输送线 MydoJob mydoJob = new MydoJob(); mydoJob.setInOrOut("1"); - String[] split = SsjDevice.getTrayCode().split(" "); - String serial = split[2].substring(7); + String trayCode = SsjDevice.getTrayCode(); + //String[] split = trayCode.split("\\s+"); + String serial = findFirst(PATTERNS.get("SERIAL"), trayCode); + mydoJob.setTrayCode(serial); mydoJob.setEntranceId("G1005"); mydoJob.setFlag("0"); @@ -184,7 +185,6 @@ public class LineSsjThread implements Runnable { List mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob); if (!mydoJobs.isEmpty()) { mydoJob = mydoJobs.get(0); - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1); if (i == 1) { mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ); @@ -270,14 +270,14 @@ public class LineSsjThread implements Runnable { agvQueueService.updateAgvQueue(agvQueue); } } - if("0".equals(agvQueue.getStatus())){ + if ("0".equals(agvQueue.getStatus())) { apiService.requestAgvQueue(agvQueue); } } else { if ("1".equals(mydoJob.getStatus())) { HashMap paramMap = new HashMap<>(); paramMap.put("trayCode", mydoJob.getTrayCode()); - paramMap.put("taskCode",mydoJob.getJobId()); + paramMap.put("taskCode", mydoJob.getJobId()); //todo 与agv对点 paramMap.put("startPoint", "G1005"); paramMap.put("endPoint", deviceCode); @@ -305,17 +305,18 @@ public class LineSsjThread implements Runnable { agvQueueService.updateAgvQueue(agvQueue); } } - if("0".equals(agvQueue.getStatus())){ + if ("0".equals(agvQueue.getStatus())) { apiService.requestAgvQueue(agvQueue); } - }else{ + } else { HashMap paramMap = new HashMap<>(); - String[] split = SsjDevice.getTrayCode().split(" "); - String serial = split[2].substring(7); + String trayCode = SsjDevice.getTrayCode(); + //String[] split = trayCode.split("\\s+"); + String serial = findFirst(PATTERNS.get("SERIAL"), trayCode); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); String taskCode = "BY" + sdf.format(new Date()); paramMap.put("trayCode", serial); - paramMap.put("taskCode",taskCode); + paramMap.put("taskCode", taskCode); //todo 与agv对点 paramMap.put("startPoint", "G1005"); paramMap.put("endPoint", ""); @@ -373,4 +374,27 @@ public class LineSsjThread implements Runnable { } } } + + private static final Map PATTERNS = createPatterns(); + + private static Map createPatterns() { + Map 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; + } }