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 63b3e9f..578dca1 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 @@ -76,8 +76,15 @@ public class ApiServiceImpl implements IApiService { @Override public GenAgvSchedulingTaskResponse genAgvSchedulingTask(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest) { - RequestLog requestLog = requestLogService.getRequestLog(GEN_AGV_SCHEDULING_TASK, JSONUtil.toJsonStr(genAgvSchedulingTaskRequest), "生成AGV任务"); - return BeanUtil.toBean(requestLog.getResponseBody(), GenAgvSchedulingTaskResponse.class); + RequestLog requestLog = requestLogService.getRequestLog(GEN_AGV_SCHEDULING_TASK, "生成AGV任务", JSONUtil.toJsonStr(genAgvSchedulingTaskRequest)); + if(requestLog.getIsSuccessful().equals("1")){ + return BeanUtil.toBean(requestLog.getResponseBody(), GenAgvSchedulingTaskResponse.class); + }else { + GenAgvSchedulingTaskResponse response = new GenAgvSchedulingTaskResponse(); + response.setCode(500); + response.setMessage("请求失败"); + return BeanUtil.toBean(requestLog.getResponseBody(), GenAgvSchedulingTaskResponse.class); + } } @Override @@ -232,11 +239,16 @@ public class ApiServiceImpl implements IApiService { public AjaxResult receiveOutMydoJob(MydoJob mydoJob) { AgvQueue agvQueue = new AgvQueue(); String reqCode = IdUtil.fastSimpleUUID(); + String taskCode = IdUtil.fastSimpleUUID(); agvQueue.setReqCode(reqCode); agvQueue.setReqTime(DateUtil.formatDateTime(DateUtil.date())); agvQueue.setAgvType("CTU"); agvQueue.setPositionCode1(mydoJob.getCargoSpaceId()); agvQueue.setPositionCode2(mydoJob.getExitId()); + agvQueue.setTaskCode(taskCode); + agvQueue.setWmsTaskType("2"); + agvQueue.setWmsTraycode(mydoJob.getTrayCode()); + agvQueue.setWmsTaskNo(mydoJob.getTaskNo()); int i = agvQueueService.insertAgvQueue(agvQueue); if (i > 0) { log.info("向AGV下任务成功"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java index 72cc161..b0db99c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -77,14 +77,15 @@ public class ScheduleThread { public void startAllThread2() { //臂式入库线程调度 bsInSsjThread.getThread().start(); + //臂式出库线程调度 + bsOutSsjThread.getThread().start(); + //臂式出库到位线程调度-wms电子屏交互 + bsPickSsjThread.getThread().start(); //剪式入库线程调度 //jsInSsjThread.getThread().start(); - //臂式出库线程调度 - //bsOutSsjThread.getThread().start(); //剪式出库线程调度 //jsOutSsjThread.getThread().start(); - //臂式出库到位线程调度-wms电子屏交互 - //bsPickSsjThread.getThread().start(); + //剪上出库到位线程调度-wms电子屏交互 //jsPickSsjThread.getThread().start(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java index 095d605..c8aaa5c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java @@ -57,357 +57,357 @@ public class PlcRead implements Runnable { case "G5011": // 处理 G5011 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5012": // 处理 G5012 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5016": // 处理 G5016 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5017": // 处理 G5017 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5002": // 处理 G5002 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5003": // 处理 G5003 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5007": // 处理 G5007 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5008": // 处理 G5008 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3011": // 处理 G3011 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3012": // 处理 G3012 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4007": // 处理 G4007 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4008": // 处理 G4008 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4016": // 处理 G4016 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4017": // 处理 G4017 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4011": // 处理 G4011 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4012": // 处理 G4012 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4002": // 处理 G4002 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4003": // 处理 G4003 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3002": // 处理 G3002 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3003": // 处理 G3003 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2002": // 处理 G2002 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2003": // 处理 G2003 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1011": // 处理 G1011 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3016": // 处理 G3016 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3017": // 处理 G3017 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3007": // 处理 G3007 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3008": // 处理 G3008 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1007": // 处理 G1007 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1008": // 处理 G1008 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1005": // 处理 G1005 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1001": // 处理 G1001 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1002": // 处理 G1002 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2010": // 处理 G2010 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2011": // 处理 G2011 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1003": // 处理 G1003 - readAddress = "DB501.0"; - writeAddress = ""; + readAddress = "DB501." + baseOffset; + writeAddress = "DB502." + baseOffset; break; case "G1009": // 处理 G1009 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2012": // 处理 G2012 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3009": // 处理 G3009 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3018": // 处理 G3018 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4009": // 处理 G4009 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4018": // 处理 G4018 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5009": // 处理 G5009 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5018": // 处理 G5018 readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5013": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5014": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5015": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5004": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5005": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5006": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4013": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4014": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4015": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4004": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4005": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4006": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1012": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3004": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3005": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3006": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3013": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3014": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3015": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1006": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2004": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2005": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2006": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2007": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2008": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2009": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1004": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G1010": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G2001": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3001": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G3010": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4001": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G4010": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5001": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; case "G5010": readAddress = "DB501." + baseOffset; - writeAddress = ""; + writeAddress = "DB502." + baseOffset; break; default: continue; @@ -453,7 +453,7 @@ public class PlcRead implements Runnable { * @param ssjDevice */ private void readPlcOtherSsj(DeviceSsj ssjDevice) { - OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24")); + OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("20")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); @@ -471,7 +471,7 @@ public class PlcRead implements Runnable { * @param ssjDevice */ private void readPlcInSsj(DeviceSsj ssjDevice) { - OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24")); + OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("20")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); @@ -489,7 +489,7 @@ public class PlcRead implements Runnable { * @param ssjDevice */ private void readPlcPickSsj(DeviceSsj ssjDevice) { - OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24")); + OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("20")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); @@ -507,7 +507,7 @@ public class PlcRead implements Runnable { * @param ssjDevice */ private void readPlcOutSsj(DeviceSsj ssjDevice) { - OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("24")); + OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("20")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/ParseUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/ParseUtil.java index 79aa855..538a840 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/ParseUtil.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/ParseUtil.java @@ -46,7 +46,7 @@ public class ParseUtil { */ public static String optString(int start, String data) { - byte[] bytes = SoftBasic.HexStringToBytes(data.substring(start * 2, (start + 12) * 2)); + byte[] bytes = SoftBasic.HexStringToBytes(data.substring(start * 2, (start + 7) * 2)); return Tools.bytetostringtool(bytes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java index 4e1a205..d48210a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsInSsjThread.java @@ -109,23 +109,23 @@ public class BsInSsjThread implements Runnable { * @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 agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam); - if (CollUtil.isEmpty(agvQueues)) { + + //判断是否生成队列 + AgvQueue agvQueueParam = new AgvQueue(); + agvQueueParam.setPositionCode1(lljCode); + agvQueueParam.setStatus("0"); + List agvQueues = agvQueueService.selectAgvQueueList(agvQueueParam); + if (CollUtil.isEmpty(agvQueues)){ + //查询流利架未开始的作业 + MydoJob mydoJobParam = new MydoJob(); + mydoJobParam.setStatus("1"); + mydoJobParam.setEntranceId(lljCode); + MydoJob mydoJob = apiService.requestEnter(mydoJobParam); + if (ObjUtil.isNotNull(mydoJob)) { //生成agv队列 AgvQueue agvQueue = createAgvQueue(lljCode, mydoJob); //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -136,15 +136,17 @@ public class BsInSsjThread implements Runnable { mydoJob.setExecutionPhase("6"); apiService.updateMydoJob(mydoJob); } + } else { + if (ObjUtil.isNull(mydoJob)) { + log.info("无入库库作业 lljCode:{}", lljCode); + } + if ("3".equals(mydoJob.getStatus())) { + log.info("入库库作业已下发 taskNo:{}", mydoJob.getTaskNo()); + } } - } else { - if (ObjUtil.isNull(mydoJob)) { - log.info("无入库库作业 lljCode:{}", lljCode); - } - if ("6".equals(mydoJob.getExecutionPhase())) { - log.info("入库库作业已下发 taskNo:{}", mydoJob.getTaskNo()); - } + } + } /** @@ -172,7 +174,7 @@ public class BsInSsjThread implements Runnable { //生成agv队列 AgvQueue agvQueue = createAgvQueue(inSsjDevice.getDeviceCode(), mydoJob); //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue( agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -183,6 +185,19 @@ public class BsInSsjThread implements Runnable { } } + }else { + AgvQueue agvQueue = agvQueues.get(0); + if ("0".equals(agvQueue.getStatus())){ + //请求任务生成 + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); + //修改wms任务状态 + if (genAgvSchedulingTaskResponse.getCode() == 0) { + //修改ctu执行状态 + agvQueue.setStatus("1"); + agvQueueService.updateAgvQueue(agvQueue); + log.info("向CTU下入库库作业"); + } + } } } } @@ -223,10 +238,9 @@ public class BsInSsjThread implements Runnable { /** * 请求海康生成agv任务,并修改wms任务状态 * - * @param mydoJob * @param agvQueue */ - private GenAgvSchedulingTaskResponse requestAgvQueue(MydoJob mydoJob, AgvQueue agvQueue) { + private GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) { //todo 请求ctu GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest(); genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode()); @@ -236,8 +250,7 @@ public class BsInSsjThread implements Runnable { genAgvSchedulingTaskRequest.setCtnrCode("0"); genAgvSchedulingTaskRequest.setCtnrNum("0"); genAgvSchedulingTaskRequest.setTaskMode("0"); - genAgvSchedulingTaskRequest.setTaskCode(mydoJob.getTaskNo()); - genAgvSchedulingTaskRequest.setGroupId(mydoJob.getTaskNo()); + genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getWmsTaskNo()); genAgvSchedulingTaskRequest.setAgvTyp("CTU"); genAgvSchedulingTaskRequest.setPositionSelStrategy("0"); genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getTaskCode()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java index f07b321..8595321 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsOutSsjThread.java @@ -75,7 +75,7 @@ public class BsOutSsjThread implements Runnable { //流利架出口 for (String ssjCode : ssjCodeList.get(type)) { try { - fluentOutDispatch(ssjCode); + //fluentOutDispatch(ssjCode); }catch (Exception e){ log.error(e.getMessage(), e); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsPickSsjTread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsPickSsjTread.java index 1e03ce3..ad03b3c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsPickSsjTread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/bs/BsPickSsjTread.java @@ -3,6 +3,8 @@ package com.ruoyi.schedule.scheduleTask.ssj.bs; import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; import com.ruoyi.api.domain.RequestLog; +import com.ruoyi.bas.port.domain.WcsPort; +import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.device.agv.service.IAgvQueueService; import com.ruoyi.common.core.text.Convert; @@ -31,6 +33,7 @@ public class BsPickSsjTread implements Runnable{ private IApiService apiService; private IAgvQueueService agvQueueService; + private IWcsPortService wcsPortService; public boolean isRun = true; @@ -38,13 +41,14 @@ public class BsPickSsjTread implements Runnable{ public void init() { ssjCodeList = new HashMap<>(); ArrayList ssjCodes = new ArrayList<>(); - ssjCodes.add("G1004"); - ssjCodes.add("G1010"); + ssjCodes.add("G1006"); + ssjCodes.add("G1012"); ssjCodeList.put("pick", ssjCodes); apiService = SpringUtils.getBean(IApiService.class); agvQueueService = SpringUtils.getBean(IAgvQueueService.class); + wcsPortService = SpringUtils.getBean(IWcsPortService.class); } @@ -72,11 +76,44 @@ public class BsPickSsjTread implements Runnable{ } public void pickDispatch(DeviceSsj pickSsjDevice) { - if (pickSsjDevice.getDw() == 1 && pickSsjDevice.getTaskNo() > 0){ - Map param = new HashMap<>(); - param.put("taskNo", pickSsjDevice.getTaskNo()); - param.put("wmsType", "2"); - RequestLog requestLog = apiService.finishMydoJob(AGV_FINISH_URL, "出库任务到达拣选口", param); + if (pickSsjDevice.getDw() == 1 && pickSsjDevice.getTaskNo() > 0) { + WcsPort wcsPortParam = new WcsPort(); + wcsPortParam.setPortCode(pickSsjDevice.getDeviceCode()); + wcsPortParam.setPortType("1"); + List wcsPorts = wcsPortService.selectWcsPortList(wcsPortParam); + if (CollUtil.isNotEmpty(wcsPorts)){ + WcsPort wcsPort = wcsPorts.get(0); + if ("0".equals(wcsPort.getStatus())){ + Map param = new HashMap<>(); + param.put("taskNo", pickSsjDevice.getTaskNo()); + param.put("wmsType", "2"); + param.put("pickSsj", pickSsjDevice.getDeviceCode()); + RequestLog requestLog = apiService.finishMydoJob(AGV_FINISH_URL, "出库任务到达拣选口", param); + if ("1".equals(requestLog.getIsSuccessful())){ + wcsPort.setStatus("1"); + wcsPortService.updateWcsPort(wcsPort); + }else { + log.error("任务失败{}", requestLog.getErrorDetails()); + } + } + } + + + } + + if (pickSsjDevice.getKx() == 1 && pickSsjDevice.getTaskNo() == 0){ + WcsPort wcsPortParam = new WcsPort(); + wcsPortParam.setPortCode(pickSsjDevice.getDeviceCode()); + wcsPortParam.setPortType("1"); + List wcsPorts = wcsPortService.selectWcsPortList(wcsPortParam); + if (CollUtil.isNotEmpty(wcsPorts)){ + WcsPort wcsPort = wcsPorts.get(0); + if ("1".equals(wcsPort.getStatus())){ + wcsPort.setStatus("0"); + wcsPortService.updateWcsPort(wcsPort); + } + + } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java index 5ebed3d..14a624e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsInSsjThread.java @@ -107,7 +107,7 @@ public class JsInSsjThread implements Runnable { //生成agv队列 AgvQueue agvQueue = createAgvQueue(inSsjDevice.getDeviceCode(), mydoJob); //请求任务生成 - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(mydoJob, agvQueue); + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); //修改wms任务状态 if (genAgvSchedulingTaskResponse.getCode() == 0) { //修改ctu执行状态 @@ -118,6 +118,19 @@ public class JsInSsjThread implements Runnable { } } + }else { + AgvQueue agvQueue = agvQueues.get(0); + if ("0".equals(agvQueue.getStatus())){ + //请求任务生成 + GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); + //修改wms任务状态 + if (genAgvSchedulingTaskResponse.getCode() == 0) { + //修改ctu执行状态 + agvQueue.setStatus("1"); + agvQueueService.updateAgvQueue(agvQueue); + log.info("向CTU下入库库作业"); + } + } } } } @@ -158,10 +171,9 @@ public class JsInSsjThread implements Runnable { /** * 请求海康生成agv任务,并修改wms任务状态 * - * @param mydoJob * @param agvQueue */ - private GenAgvSchedulingTaskResponse requestAgvQueue(MydoJob mydoJob, AgvQueue agvQueue) { + private GenAgvSchedulingTaskResponse requestAgvQueue(AgvQueue agvQueue) { //todo 请求ctu GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest(); genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode()); @@ -171,10 +183,10 @@ public class JsInSsjThread implements Runnable { genAgvSchedulingTaskRequest.setCtnrCode("0"); genAgvSchedulingTaskRequest.setCtnrNum("0"); genAgvSchedulingTaskRequest.setTaskMode("0"); - genAgvSchedulingTaskRequest.setTaskCode(mydoJob.getTaskNo()); - genAgvSchedulingTaskRequest.setGroupId(mydoJob.getTaskNo()); + genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getWmsTaskNo()); genAgvSchedulingTaskRequest.setAgvTyp("CTU"); genAgvSchedulingTaskRequest.setPositionSelStrategy("0"); + genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getTaskCode()); return apiService.genAgvSchedulingTask(genAgvSchedulingTaskRequest); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsOutSsjThread.java index bc48825..8cdc95c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsOutSsjThread.java @@ -91,48 +91,27 @@ public class JsOutSsjThread implements Runnable{ * @param outSsjDevice */ public void ssjOutDispatch(DeviceSsj outSsjDevice) { - //查询对应的作业 请求ctu生成对应任务单执行 - AgvQueue agvQueue = new AgvQueue(); - agvQueue.setPositionCode2(outSsjDevice.getDeviceCode()); - agvQueue.setStatus("0"); - List agvQueueList = agvQueueService.selectAgvQueueList(agvQueue); - if (CollUtil.isNotEmpty(agvQueueList)){ - for (AgvQueue queue : agvQueueList) { - MydoJob mydoJobParam = new MydoJob(); - mydoJobParam.setTaskNo(queue.getWmsTaskNo()); - mydoJobParam.setTrayCode(queue.getWmsTraycode()); - mydoJobParam.setCargoSpaceId(queue.getPositionCode1()); - List mydoJobList = apiService.getMydoJobList(mydoJobParam); - if (CollUtil.isNotEmpty(mydoJobList)){ - MydoJob mydoJob = mydoJobList.get(0); - requestAgvQueue(mydoJob, queue); - }else { - log.info("队列 agvCode {},无对应出库作业", agvQueue.getReqCode()); - } - } - }else { - log.info("ssjCode:{},没有待下发的出库任务", outSsjDevice.getDeviceCode()); - } - - //输送线出库 if (outSsjDevice.getKx()==1){ - AgvQueue agvQueue1 = new AgvQueue(); - agvQueue1.setPositionCode2(outSsjDevice.getDeviceCode()); - agvQueue1.setRequest("1"); - List agvQueueList1 = agvQueueService.selectAgvQueueList(agvQueue1); - if (CollUtil.isNotEmpty(agvQueueList1)){ - for (AgvQueue queue : agvQueueList1) { - if ("1".equals(queue.getRequest())){ - //todo 放入继续任务的参数 - ContinueTaskRequest continueTaskRequest = new ContinueTaskRequest(); - ContinueTaskResponse continueTaskResponse = apiService.continueTask(continueTaskRequest); - if (continueTaskResponse.getCode()==0){ - //更新任务单状态 - agvQueue1.setRequest("2"); - agvQueueService.updateAgvQueue(agvQueue1); - } + //查询对应的作业 + AgvQueue agvQueue = new AgvQueue(); + agvQueue.setPositionCode2(outSsjDevice.getDeviceCode()); + agvQueue.setStatus("0"); + List agvQueueList = agvQueueService.selectAgvQueueList(agvQueue); + if (CollUtil.isNotEmpty(agvQueueList)){ + for (AgvQueue queue : agvQueueList) { + MydoJob mydoJobParam = new MydoJob(); + mydoJobParam.setTaskNo(queue.getWmsTaskNo()); + mydoJobParam.setTrayCode(queue.getWmsTraycode()); + List mydoJobList = apiService.getMydoJobList(mydoJobParam); + if (CollUtil.isNotEmpty(mydoJobList)){ + MydoJob mydoJob = mydoJobList.get(0); + requestAgvQueue(mydoJob, queue); + }else { + log.info("队列 agvCode {},无对应出库作业", agvQueue.getReqCode()); } } + }else { + log.info("ssjCode:{},没有待下发的出库任务", outSsjDevice.getDeviceCode()); } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsPickSsjTread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsPickSsjTread.java index 6d7146e..e7eddfd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsPickSsjTread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/js/JsPickSsjTread.java @@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil; import com.ruoyi.api.domain.RequestLog; import com.ruoyi.api.domain.wcs2wms.MydoJob; 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.text.Convert; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.device.agv.service.IAgvQueueService; @@ -30,6 +32,8 @@ public class JsPickSsjTread implements Runnable { private IApiService apiService; private IAgvQueueService agvQueueService; + private IWcsPortService wcsPortService; + public boolean isRun = true; @@ -54,6 +58,8 @@ public class JsPickSsjTread implements Runnable { apiService = SpringUtils.getBean(IApiService.class); agvQueueService = SpringUtils.getBean(IAgvQueueService.class); + wcsPortService = SpringUtils.getBean(IWcsPortService.class); + } @@ -81,11 +87,44 @@ public class JsPickSsjTread implements Runnable { } public void pickDispatch(DeviceSsj pickSsjDevice) { - if (pickSsjDevice.getDw() == 1 && pickSsjDevice.getTaskNo() > 0){ - Map param = new HashMap<>(); - param.put("taskNo", pickSsjDevice.getTaskNo()); - param.put("wmsType", "2"); - RequestLog requestLog = apiService.finishMydoJob(AGV_FINISH_URL, "出库任务到达拣选口", param); + if (pickSsjDevice.getDw() == 1 && pickSsjDevice.getTaskNo() > 0) { + WcsPort wcsPortParam = new WcsPort(); + wcsPortParam.setPortCode(pickSsjDevice.getDeviceCode()); + wcsPortParam.setPortType("1"); + List wcsPorts = wcsPortService.selectWcsPortList(wcsPortParam); + if (CollUtil.isNotEmpty(wcsPorts)){ + WcsPort wcsPort = wcsPorts.get(0); + if ("0".equals(wcsPort.getStatus())){ + Map param = new HashMap<>(); + param.put("taskNo", pickSsjDevice.getTaskNo()); + param.put("wmsType", "2"); + param.put("pickSsj", pickSsjDevice.getDeviceCode()); + RequestLog requestLog = apiService.finishMydoJob(AGV_FINISH_URL, "出库任务到达拣选口", param); + if ("1".equals(requestLog.getIsSuccessful())){ + wcsPort.setStatus("1"); + wcsPortService.updateWcsPort(wcsPort); + }else { + log.error("任务失败{}", requestLog.getErrorDetails()); + } + } + } + + + } + + if (pickSsjDevice.getKx() == 1 && pickSsjDevice.getTaskNo() == 0){ + WcsPort wcsPortParam = new WcsPort(); + wcsPortParam.setPortCode(pickSsjDevice.getDeviceCode()); + wcsPortParam.setPortType("1"); + List wcsPorts = wcsPortService.selectWcsPortList(wcsPortParam); + if (CollUtil.isNotEmpty(wcsPorts)){ + WcsPort wcsPort = wcsPorts.get(0); + if ("1".equals(wcsPort.getStatus())){ + wcsPort.setStatus("0"); + wcsPortService.updateWcsPort(wcsPort); + } + + } } } diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index c1adda4..55cbf34 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -1,8 +1,8 @@ { - "name": "ruoyi", + "name": "FLRD", "version": "3.8.9", - "description": "若依管理系统", - "author": "若依", + "description": "FORTUCKY WCS SYSTEM", + "author": "FLRD", "license": "MIT", "scripts": { "dev": "vue-cli-service serve",