From 2b6065d72f2a4a2c1c161bbf232d306b07c467db Mon Sep 17 00:00:00 2001 From: zj Date: Sun, 4 Jan 2026 08:39:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/api/controller/AgvController.java | 26 +++ .../api/controller/ScreenController.java | 157 ++++++++++++++---- .../ruoyi/api/domain/wcs2wms/ReceiveJob.java | 2 +- .../com/ruoyi/api/service/IApiService.java | 2 + .../api/service/impl/ApiServiceImpl.java | 68 +++++--- .../service/impl/RequestLogServiceImpl.java | 2 +- .../main/java/com/ruoyi/common/Constant.java | 11 +- .../ruoyi/device/ssj/domain/DeviceSsj.java | 2 + .../com/ruoyi/job/mapper/MydoJobMapper.java | 4 + .../ruoyi/job/service/IMydoJobService.java | 4 + .../job/service/impl/MydoJobServiceImpl.java | 12 ++ .../queue/agv/mapper/AgvQueueMapper.java | 3 + .../queue/agv/service/IAgvQueueService.java | 2 + .../agv/service/impl/AgvQueueServiceImpl.java | 5 + .../com/ruoyi/schedule/ScheduleThread.java | 91 +++++++++- .../schedule/plcRead/ddj/PlcDdj1Read.java | 2 +- .../schedule/plcRead/ddj/PlcDdj2Read.java | 2 +- .../schedule/plcRead/ssj/PlcSsjRead.java | 38 +++-- .../ruoyi/schedule/plcRead/util/Tools.java | 12 +- .../ddj/{Ddj1Thread.java => DdjThread.java} | 4 +- .../ssj/floor1/Floor1BothWayInSsjThread.java | 49 +++--- .../ssj/floor1/Floor1BothWayOutSsjThread.java | 1 + .../ssj/floor2/Floor2InOutSsjThread.java | 55 ++++-- .../ssj/floor2/Floor2RoadWaySsjThread.java | 72 ++++---- .../ssj/floor2/LineSsjThread.java | 142 +++++++++------- .../src/main/resources/application-druid.yml | 2 +- .../src/main/resources/application.yml | 4 +- .../mapper/device/AgvQueueMapper.xml | 5 + .../mapper/device/DeviceSsjMapper.xml | 1 + .../resources/mapper/job/MydoJobMapper.xml | 31 +++- ruoyi-ui/vue.config.js | 6 +- 31 files changed, 592 insertions(+), 225 deletions(-) rename ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/{Ddj1Thread.java => DdjThread.java} (99%) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java index 5c8f84c..7568926 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/AgvController.java @@ -5,6 +5,8 @@ import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse; import com.ruoyi.api.service.IApiService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.queue.agv.domain.AgvQueue; +import com.ruoyi.queue.agv.service.IAgvQueueService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -22,6 +24,8 @@ public class AgvController extends BaseController { @Autowired private IApiService apiService; + @Autowired + private IAgvQueueService agvQueueService; /** * agv执行状态返回接口 @@ -50,4 +54,26 @@ public class AgvController extends BaseController { return apiService.receiveAgvMoveJob(param); } + @PostMapping("/deleteAgvTray") + public AjaxResult deleteAgvTray(@RequestBody Map param) { + AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(param.get("taskCode")); + if(agvQueue==null){ + return AjaxResult.error("AGV任务队列不存在!"); + }else{ + return apiService.deleteAgvTray(agvQueue); + } + + } + + @PostMapping("/continueTask") + public AjaxResult continueTask(@RequestBody Map param) { + AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(param.get("taskCode")); + if(agvQueue==null){ + return AjaxResult.error("AGV任务队列不存在!"); + }else{ + return apiService.continueTask(agvQueue); + } + + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ScreenController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ScreenController.java index 83d8e10..e8e8d15 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ScreenController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ScreenController.java @@ -20,49 +20,49 @@ import com.ruoyi.job.service.IMydoJobService; /** * 大屏接口Controller - * + * * @author ruoyi */ @Anonymous @RestController @RequestMapping("/api/screen") public class ScreenController extends BaseController { - + @Autowired private IDeviceSsjService deviceSsjService; - + @Autowired private IMydoJobService mydoJobService; - + // 定义各区域输送机编号数组 private static final Map> AREA_SSJ_CODES = new HashMap<>(); - + // 静态初始化输送机编号数组 static { // 1区域输送机编号 AREA_SSJ_CODES.put(1, Arrays.asList( - "L2007","L2008","L2005","L2006","L2013" + "L2007", "L2008", "L2005", "L2006", "L2013" )); - + // 2区域输送机编号 AREA_SSJ_CODES.put(2, Arrays.asList( - "L2003","L2004","L2012","L2001","L2002" + "L2003", "L2004", "L2012", "L2001", "L2002" )); - + // 3区域输送机编号 AREA_SSJ_CODES.put(3, Arrays.asList( - "L1001","L1002","L1011" + "L1001", "L1002", "L1011" )); - + // 4区域输送机编号 AREA_SSJ_CODES.put(4, Arrays.asList( - "L1003","L1004","L1012" + "L1003", "L1004", "L1012" )); } - + /** * 根据区域编号查询输送机列表 - * + * * @param areaNum 区域编号(1-4) * @return 输送机数据列表 */ @@ -71,54 +71,155 @@ public class ScreenController extends BaseController { if (areaNum < 1 || areaNum > 4) { return AjaxResult.error("区域编号必须在1-4之间"); } - + // 获取该区域的输送机编号数组 List ssjCodes = AREA_SSJ_CODES.get(areaNum); if (ssjCodes == null || ssjCodes.isEmpty()) { return AjaxResult.error("未找到该区域的输送机编号配置"); } - + // 查询所有输送机 List allSsjList = deviceSsjService.selectDeviceSsjList(null); - + // 根据编号数组筛选输送机 List filteredList = allSsjList.stream() .filter(ssj -> ssj.getDeviceCode() != null && ssjCodes.contains(ssj.getDeviceCode().trim())) .collect(Collectors.toList()); - + // 转换为前端需要的数据格式 List> resultList = new ArrayList<>(); // 创建作业信息列表 List jobList = new ArrayList<>(); - + for (DeviceSsj ssj : filteredList) { Map map = new HashMap<>(); map.put("id", ssj.getDeviceCode()); map.put("name", ssj.getName()); - map.put("kx", String.valueOf(ssj.getKx())); - map.put("dw", String.valueOf(ssj.getDw())); - map.put("sbzt", ssj.getException()); + map.put("kx", getSsjKx(ssj.getKx())); + map.put("dw", getSsjDw(ssj.getDw())); + map.put("sbzt", getSSzt(ssj.getSszt())); // map.put("trayCode", ssj.getTrayCode()); map.put("allowPut", String.valueOf(ssj.getAllowPut())); map.put("traySize", String.valueOf(ssj.getTraySize())); - map.put("exception", String.valueOf(ssj.getException())); + map.put("exception", getSSzt(ssj.getSszt())); map.put("taskNo", ssj.getTaskNo()); resultList.add(map); - + // 如果taskNo大于0,查询对应的作业信息 - if (ssj.getTaskNo()> 0) { - MydoJob job = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(ssj.getTaskNo())); + if (ssj.getTaskNo() > 0) { + MydoJob job = mydoJobService.selectJobByTaskNo(String.valueOf(ssj.getTaskNo())); if (job != null) { + if("1".equals(job.getInOrOut())){ + job.setInOrOut("生产入库"); + job.setExitId(job.getEntranceId()); + }else if("2".equals(job.getInOrOut())){ + job.setInOrOut("退货入库"); + job.setExitId(job.getEntranceId()); + }else if("3".equals(job.getInOrOut())){ + job.setInOrOut("其他入库"); + job.setExitId(job.getEntranceId()); + }else if("5".equals(job.getInOrOut())){ + job.setInOrOut("盘点入库"); + job.setExitId(job.getEntranceId()); + }else if("21".equals(job.getInOrOut())){ + job.setInOrOut("物资出库"); + }else if("26".equals(job.getInOrOut())){ + job.setInOrOut("盘点出库"); + } + + jobList.add(job); } } } - + // 返回结果包含data和job两个字段 Map result = new HashMap<>(); result.put("ssj", resultList); result.put("job", jobList); - + return AjaxResult.success(result); } + + private String getSsjDw(int dw) { + if(dw == 1){ + return "到位"; + }else{ + return "未到位"; + } + } + + private String getSsjKx(int kx) { + if(kx == 1){ + return "空闲"; + }else{ + return "不空闲"; + } + } + + private String getSSzt(int sszt) { + String msg = ""; + switch (sszt) { + case 1: + msg = "手动"; + break; + case 2: + msg = "自动"; + break; + case 3: + msg = "运行"; + break; + case 4: + msg = "输送超时"; + break; + case 5: + msg = "断路器跳闸"; + break; + case 6: + msg = "变频器报警"; + break; + case 7: + msg = "开关任务异常"; + break; + case 8: + msg = "急停"; + break; + case 9: + msg = "输送超界"; + break; + } + return msg; + } + + private String getBjxx(int bjxx) { + String msg = ""; + switch (bjxx) { + case 1: + msg = "前超长"; + break; + case 2: + msg = "后超长"; + break; + case 3: + msg = "左超宽"; + break; + case 4: + msg = "右超宽"; + break; + case 5: + msg = "超高"; + break; + case 6: + msg = "无任务"; + break; + case 7: + msg = "未扫到条码"; + break; + case 8: + msg = "称重异常"; + break; + } + return msg; + } + } \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java index a8d968a..7299670 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/domain/wcs2wms/ReceiveJob.java @@ -16,5 +16,5 @@ public class ReceiveJob { private String inOrOut; private String jobId; private String roadwayId; - + private String departmentId; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java index c72310f..3fca0f3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/IApiService.java @@ -134,4 +134,6 @@ public interface IApiService AjaxResult receiveInMydoJob(ReceiveJob receiveInJob); AjaxResult selectMydoJobByTrayCodeAndEntranceId(HashMap paramMap); + + AjaxResult deleteAgvTray(AgvQueue agvQueue); } 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 d3ce02e..e3685a2 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 @@ -5,6 +5,7 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSON; import com.ruoyi.api.domain.InterfaceReceive; import com.ruoyi.api.domain.RequestLog; import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest; @@ -73,15 +74,17 @@ public class ApiServiceImpl implements IApiService { public GenAgvSchedulingTaskResponse genAgvSchedulingTask(GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest) { RequestLog requestLog = requestLogService.getRequestLog(GEN_AGV_SCHEDULING_TASK, "生成AGV任务", JSONUtil.toJsonStr(genAgvSchedulingTaskRequest)); if ("1".equals(requestLog.getIsSuccessful())) { - return BeanUtil.toBean(requestLog.getResponseBody(), GenAgvSchedulingTaskResponse.class); + AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(genAgvSchedulingTaskRequest.getTaskCode()); + if(agvQueue != null){ + agvQueue.setStatus("1"); + agvQueueService.updateAgvQueue(agvQueue); + } + return JSON.parseObject(requestLog.getResponseBody(), GenAgvSchedulingTaskResponse.class); } else { //todo 需要调试 GenAgvSchedulingTaskResponse response = new GenAgvSchedulingTaskResponse(); response.setCode(500); response.setMessage("请求失败"); - //todo 需要调试小车请求 - response.setCode(0); - response.setMessage("模拟测试"); return response; } } @@ -125,13 +128,16 @@ public class ApiServiceImpl implements IApiService { String endPoint = param.get("endPoint"); String traySize = param.get("traySize"); String wmsTaskNo = param.get("wmsTaskNo"); - - AgvQueue agvQueue = createAgvQueue(startPoint, endPoint, param.get("trayCode"), param.get("taskNo"), "1", traySize, wmsTaskNo); - GenAgvSchedulingTaskResponse genAgvSchedulingTaskResponse = requestAgvQueue(agvQueue); - if (genAgvSchedulingTaskResponse.getCode() == 0) { - return AjaxResult.success(); + GenAgvSchedulingTaskResponse response = new GenAgvSchedulingTaskResponse(); + AgvQueue queue = agvQueueService.selectAgvQueueByTaskCode(param.get("taskCode")); + if(queue == null){ + AgvQueue agvQueue = createAgvQueue(startPoint, endPoint, param.get("trayCode"), param.get("taskCode"), "1", traySize, wmsTaskNo); + response = requestAgvQueue(agvQueue); + if (response.getCode() == 0) { + return AjaxResult.success(); + } } - return AjaxResult.error(genAgvSchedulingTaskResponse.getMessage()); + return AjaxResult.error(response.getMessage()); } @@ -158,7 +164,7 @@ public class ApiServiceImpl implements IApiService { String method = request.getMethod(); switch (method) { case "applyin": - agvQueue.setStatus("1"); + agvQueue.setStatus("2"); agvQueueService.updateAgvQueue(agvQueue); log.info("【AGV请求取货】任务号:{}", request.getTaskCode()); break; @@ -178,7 +184,6 @@ public class ApiServiceImpl implements IApiService { log.info("【AGV请求放货】任务号:{}", request.getTaskCode()); break; case "end": - agvQueue.setStatus("7"); agvQueueService.updateAgvQueue(agvQueue); log.info("【AGV任务结束】任务号:{}", request.getTaskCode()); @@ -256,7 +261,7 @@ public class ApiServiceImpl implements IApiService { /** - * 生成agv队列 + * 生成agv队列----临时修改起终点 * * @param code1 起点 * @param code2 终点 @@ -270,14 +275,13 @@ public class ApiServiceImpl implements IApiService { //生成ctu执行队列 AgvQueue agvQueue = new AgvQueue(); String reqCode = IdUtil.fastSimpleUUID(); -// String taskCode = IdUtil.fastSimpleUUID(); agvQueue.setReqCode(reqCode); agvQueue.setReqTime(DateUtil.formatDateTime(DateUtil.date())); agvQueue.setAgvType("AGV"); agvQueue.setPositionCode1(code1); agvQueue.setPositionCode2(code2); - agvQueue.setTaskType("F01"); - agvQueue.setCtnrType(traySize); + agvQueue.setTaskType("A24"); + agvQueue.setCtnrType("1"); agvQueue.setCtnrCode("0"); agvQueue.setCtnrNum("0"); agvQueue.setTaskMode("0"); @@ -337,18 +341,13 @@ public class ApiServiceImpl implements IApiService { GenAgvSchedulingTaskRequest genAgvSchedulingTaskRequest = new GenAgvSchedulingTaskRequest(); genAgvSchedulingTaskRequest.setReqCode(agvQueue.getReqCode()); - genAgvSchedulingTaskRequest.setTaskMode("0"); genAgvSchedulingTaskRequest.setPriority("10"); - genAgvSchedulingTaskRequest.setTaskTyp("F01"); - genAgvSchedulingTaskRequest.setCtnrCode("0"); - genAgvSchedulingTaskRequest.setCtnrNum("0"); - genAgvSchedulingTaskRequest.setTaskMode("0"); + genAgvSchedulingTaskRequest.setTaskTyp(agvQueue.getTaskType()); + genAgvSchedulingTaskRequest.setCtnrTyp(agvQueue.getCtnrType()); genAgvSchedulingTaskRequest.setTaskCode(agvQueue.getTaskCode()); - genAgvSchedulingTaskRequest.setAgvTyp("AGV"); - genAgvSchedulingTaskRequest.setPositionSelStrategy("0"); List positionCodePath = new ArrayList<>(); - positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode1(), "0")); - positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode2(), "0")); + positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode1(), "05")); + positionCodePath.add(new PositionCodeData(agvQueue.getPositionCode2(), "05")); genAgvSchedulingTaskRequest.setPositionCodePath(positionCodePath); return genAgvSchedulingTask(genAgvSchedulingTaskRequest); } @@ -378,6 +377,7 @@ public class ApiServiceImpl implements IApiService { mydoJob.setRoadwayId(receiveOutJob.getRoadwayId()); mydoJob.setCreateTime(DateUtils.getNowDate()); mydoJob.setExecutionPhase(TASK_EP_CREATE); + mydoJob.setTraySize(receiveOutJob.getDepartmentId()); int i = mydoJobService.insertMydoJob(mydoJob); if (i > 0) { return AjaxResult.success(); @@ -403,6 +403,24 @@ public class ApiServiceImpl implements IApiService { } } + @Override + public AjaxResult deleteAgvTray(AgvQueue agvQueue) { + Map paramMap = new HashMap<>(); + paramMap.put("reqCode", IdUtil.fastSimpleUUID()); + paramMap.put("ctnrTyp", agvQueue.getCtnrType()); + paramMap.put("binName", agvQueue.getPositionCode2()); + paramMap.put("indBind", "0"); + + RequestLog requestLog = requestLogService.getRequestLog(DELETE_BIN_URL, "AGV解绑容器", JSONUtil.toJsonStr(paramMap)); + if ("1".equals(requestLog.getIsSuccessful())) { + log.info("站点:"+agvQueue.getPositionCode2()+"{}AGV容器解绑成功!"); + return AjaxResult.success(); + } else { + log.info("站点:"+agvQueue.getPositionCode2()+"{}AGV容器解绑失败!"); + return AjaxResult.error(); + } + } + @Override public AjaxResult selectMydoJobByNoTrayCode(Map param) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/RequestLogServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/RequestLogServiceImpl.java index adf18de..06dcf3e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/RequestLogServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/RequestLogServiceImpl.java @@ -131,7 +131,7 @@ public class RequestLogServiceImpl implements IRequestLogService String resStr = HttpUtil.post(url, param); requestLog.setResponseBody(resStr); InterfaceReceive bean = JSONUtil.toBean(resStr, InterfaceReceive.class); - if (bean.getCode() == 200) { + if (bean.getCode() == 0) { requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss")); requestLog.setResponseStatus("1"); requestLog.setDuration(Convert.toStr(DateUtil.between(requestTime, responseTime, DateUnit.MS))); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java index fc610f9..951ec87 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/common/Constant.java @@ -3,14 +3,15 @@ package com.ruoyi.common; public class Constant { - public static final String WMS_BASE_URL = "http://localhost:8082/api2wms/"; - public static final String RCS_BASE_URL = "http://127.0.0.1:8081/rcms-dps/rest/"; + public static final String WMS_BASE_URL = "http://192.168.58.10:8082/api2wms/"; + public static final String RCS_BASE_URL = "http://192.168.58.101:8182/rcms/services/rest/hikRpcService/"; + public static final String GEN_AGV_SCHEDULING_TASK = RCS_BASE_URL+"genAgvSchedulingTask"; + public static final String CANCEL_TASK_URL = RCS_BASE_URL+"cancelTask"; + public static final String CONTINUE_TASK_URL = RCS_BASE_URL+"continueTask"; + public static final String DELETE_BIN_URL = RCS_BASE_URL+"bindCtnrAndBin"; public static final String JOB_FINISH_URL = WMS_BASE_URL+"jobFinish"; - public static final String CONTINUE_TASK_URL = RCS_BASE_URL+"continueTask"; - public static final String CANCEL_TASK_URL = RCS_BASE_URL+"queryAgvStatus";; - public static final String GEN_AGV_SCHEDULING_TASK = RCS_BASE_URL+"genAgvSchedulingTask";; public static final String CREATE_IN_MYDO_JOB_URL = WMS_BASE_URL+"requestEnterByTrayCode"; public static final String REQUEST_MYDO_JOB_URL = WMS_BASE_URL+"requestByNoTrayCode"; public static final String RE_ASSIGN_URL = WMS_BASE_URL+"reAssign"; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/domain/DeviceSsj.java b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/domain/DeviceSsj.java index 35ba3ee..d77944f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/domain/DeviceSsj.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/domain/DeviceSsj.java @@ -85,4 +85,6 @@ public class DeviceSsj extends BaseEntity private int sszt; + private int taskNo2; + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java index 76aaa74..17a14fd 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mapper/MydoJobMapper.java @@ -81,4 +81,8 @@ public interface MydoJobMapper List selectMydoJobFinishList(MydoJob mydoJob); MydoJob selectRunningMydoJobByExitList(@Param("exitList") List exitList); + + List getInJobByEntrance(@Param("exitList") List exitList); + + MydoJob selectJobByTaskNo(String taskNo); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java index 94f7050..65cd564 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/IMydoJobService.java @@ -76,4 +76,8 @@ public interface IMydoJobService List selectMydoJobFinishList(MydoJob mydoJob); MydoJob selectRunningMydoJobByExitList(List strings); + + List getInJobByEntrance(List exitList); + + MydoJob selectJobByTaskNo(String taskNo); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java index cad2dbc..37c2a05 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/service/impl/MydoJobServiceImpl.java @@ -1,5 +1,6 @@ package com.ruoyi.job.service.impl; +import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -157,4 +158,15 @@ public class MydoJobServiceImpl implements IMydoJobService public MydoJob selectRunningMydoJobByExitList(List exitList) { return mydoJobMapper.selectRunningMydoJobByExitList(exitList); } + + @Override + public List getInJobByEntrance(List exitList) { + return mydoJobMapper.getInJobByEntrance(exitList); + } + + @Override + public MydoJob selectJobByTaskNo(String taskNo) { + return mydoJobMapper.selectJobByTaskNo(taskNo); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/mapper/AgvQueueMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/mapper/AgvQueueMapper.java index 7cedfad..fff6580 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/mapper/AgvQueueMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/mapper/AgvQueueMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.queue.agv.mapper; import java.util.List; import com.ruoyi.queue.agv.domain.AgvQueue; +import org.springframework.data.repository.query.Param; /** * AGV任务队列Mapper接口 @@ -67,4 +68,6 @@ public interface AgvQueueMapper AgvQueue selectAgvQueueByTaskCode(String taskCode); void insertHistory(String reqCode); + + AgvQueue selectAgvQueueByWmsTask(@Param("wmsTaskNo") int wmsTaskNo); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/IAgvQueueService.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/IAgvQueueService.java index 0e565c1..d6177ca 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/IAgvQueueService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/IAgvQueueService.java @@ -71,4 +71,6 @@ public interface IAgvQueueService * @param reqCode */ void insertHistory(String reqCode); + + AgvQueue selectAgvQueueByWmsTask(int taskNo); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/impl/AgvQueueServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/impl/AgvQueueServiceImpl.java index df2bc6f..d62f8ac 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/impl/AgvQueueServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/queue/agv/service/impl/AgvQueueServiceImpl.java @@ -100,4 +100,9 @@ public class AgvQueueServiceImpl implements IAgvQueueService public void insertHistory(String reqCode) { agvQueueMapper.insertHistory(reqCode); } + + @Override + public AgvQueue selectAgvQueueByWmsTask(int wmsTaskNo) { + return agvQueueMapper.selectAgvQueueByWmsTask(wmsTaskNo); + } } 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 806fb1d..82131cf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -10,7 +10,7 @@ import com.ruoyi.schedule.plcRead.ddj.PlcDdj1Read; import com.ruoyi.schedule.plcRead.ddj.PlcDdj2Read; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import com.ruoyi.common.domain.CustomThread; -import com.ruoyi.schedule.scheduleTask.ddj.Ddj1Thread; +import com.ruoyi.schedule.scheduleTask.ddj.DdjThread; import com.ruoyi.schedule.scheduleTask.monit.MonitoringThread; import com.ruoyi.schedule.scheduleTask.ssj.floor1.Floor1BothWayInSsjThread; import com.ruoyi.schedule.scheduleTask.ssj.floor1.Floor1BothWayOutSsjThread; @@ -23,6 +23,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.InetSocketAddress; +import java.net.Socket; import java.util.HashMap; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @@ -42,7 +48,7 @@ public class ScheduleThread { public CustomThread floor2OutSsjCustomThread; public CustomThread lineSsjCustomThread; public CustomThread monitoringCustomThread; - public CustomThread ddj1CustomThread; + public CustomThread ddj1CustomThread; @Autowired private IDeviceSsjService deviceSsjService; @Autowired @@ -89,8 +95,8 @@ public class ScheduleThread { Floor2RoadWaySsjThread floor2OutSsjThread = new Floor2RoadWaySsjThread(); floor2OutSsjCustomThread = new CustomThread(new Thread(floor2OutSsjThread), floor2OutSsjThread); - Ddj1Thread ddj1Thread = new Ddj1Thread(); - ddj1CustomThread = new CustomThread(new Thread(ddj1Thread), ddj1Thread); + DdjThread ddj1Thread = new DdjThread(); + ddj1CustomThread = new CustomThread(new Thread(ddj1Thread), ddj1Thread); } /** @@ -148,9 +154,9 @@ public class ScheduleThread { */ public void startAllThread2() { monitoringCustomThread.thread.start(); -// floor1BothWayInSsjCustomThread.thread.start(); -// floor1BothWayOutSsjCustomThread.thread.start(); -// floor1SingleSsjCustomThread.thread.start(); + floor1BothWayInSsjCustomThread.thread.start(); + floor1BothWayOutSsjCustomThread.thread.start(); + floor1SingleSsjCustomThread.thread.start(); floor2InSsjCustomThread.thread.start(); lineSsjCustomThread.thread.start(); floor2OutSsjCustomThread.thread.start(); @@ -194,4 +200,75 @@ public class ScheduleThread { map.put("isRun2",isRun2); return map; } + + public static void main(String[] args) { +// Socket socket = new Socket(); +// OutputStream out = null; +// InputStream in = null; +// try { +//// socket.connect(new InetSocketAddress("192.168.56.32", 2002), 1000); +//// in = socket.getInputStream(); +//// out = socket.getOutputStream(); +// +// } catch (IOException e) { +// throw new RuntimeException(e); +// } + +// String code = sendWeight("192.168.56.33", 2002); +// System.err.println(code); + String pp = "MODEL:EX-1203 COLOR:9005 SERIAL:QT25C1879 V:220 Hz:50 PH:1 N.W.:207kg G.W.:238kg @:9781C52TQ$S0T0T0T3T0U7T0$7005280MA0A@"; + String ss = "MODEL:TR-360 COLOR:7016 SERIAL:QT25C1899 V:380 Hz:50 PH:3 N.W.:231kg G.W.:261kg @:9981C52TQ$S0T0U5RDS2S3S6T0T3T0U7T0$4105230IF0A@"; + System.err.println(pp); + System.err.println(pp.length()); + System.err.println(ss.length()); + } + + public static String sendWeight(String ip, int por) { + + String zhi=""; + Socket socket = null; + OutputStream os = null; + InputStream is = null; + try { + //新建客户端并请求服务端的ip为localhost 端口为8088 + socket = new Socket(ip,por); +// System.out.println("socket end ="+System.currentTimeMillis()); + //休眠3秒 + Thread.sleep(1000); + char[] charArray = new char[500]; + //获取客户端发送的数据的输入流 + is = socket.getInputStream(); + //读取输入流 + InputStreamReader inputStreamReader = new InputStreamReader(is); +// System.out.println("read begin =" + System.currentTimeMillis()); + int readLength = inputStreamReader.read(charArray); + System.out.println("readLength:"+readLength); + if (readLength != -1) { + String newString = new String(charArray, 0, readLength); +// System.out.println("newString:"+newString+"长度"+newString.length()); +// newString=newString.replaceAll("\r|\n", ""); +// if(newString.length()==8&&!newString.equals("=0000000")){ +// newString=newString.substring(1,8); +// newString=newString.replaceAll("^(0+)", ""); +// zhi=newString; +// } + zhi = newString; + readLength = inputStreamReader.read(charArray); + } +// System.out.println("read end =" + System.currentTimeMillis()); + inputStreamReader.close(); + is.close(); + socket.close(); + } catch (Exception e) { + e.printStackTrace(); + try { + socket.close(); + is.close(); + os.close(); + } catch (IOException e1) + { e1.printStackTrace(); } + } + + return zhi; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj1Read.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj1Read.java index a38be0f..b9fba24 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj1Read.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj1Read.java @@ -39,7 +39,7 @@ public class PlcDdj1Read extends Thread { try { if (IsConnect()) { readPlcDdj(msgDdj); - Thread.sleep(1000); + Thread.sleep(800); } else { reConnect(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj2Read.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj2Read.java index 3d22f86..02dea53 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj2Read.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ddj/PlcDdj2Read.java @@ -39,7 +39,7 @@ public class PlcDdj2Read extends Thread { try { if (IsConnect()) { readPlcDdj(msgDdj); - Thread.sleep(1000); + Thread.sleep(800); } else { reConnect(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java index 96af18b..283b991 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcSsjRead.java @@ -66,7 +66,7 @@ public class PlcSsjRead implements Runnable { break; } } - Thread.sleep(1000); + Thread.sleep(800); } else { reConnect(); } @@ -156,27 +156,27 @@ public class PlcSsjRead implements Runnable { String allot=""; switch (ssjDevice.getDeviceCode()){ case "G1005": - trayCodeReadAddress = "DB5023.0"; - allot = "DB802.0"; + trayCodeReadAddress = "DB503.0"; + allot = "DB802.24"; break; case "L2004": - trayCodeReadAddress = "DB503.200"; + trayCodeReadAddress = "DB503.600"; break; case "L2006": - trayCodeReadAddress = "DB503.400"; + trayCodeReadAddress = "DB503.800"; break; case "L1001": - trayCodeReadAddress = "DB503.600"; - allot = "DB802.12"; + trayCodeReadAddress = "DB503.200"; + allot = "DB802.0"; break; case "L1003": - trayCodeReadAddress = "DB503.800"; - allot = "DB802.24"; + trayCodeReadAddress = "DB503.400"; + allot = "DB802.12"; break; } if(!"".equals(allot)){ - OperateResultExOne agvSsj = readWriteNet.Read(trayCodeReadAddress, Short.parseShort("12")); + OperateResultExOne agvSsj = readWriteNet.Read(allot, Short.parseShort("2")); if (agvSsj.IsSuccess){ //去除bytes中 ddsx1 = SoftBasic.ByteToHexString(agvSsj.Content); @@ -184,11 +184,27 @@ public class PlcSsjRead implements Runnable { } } if(!"".equals(trayCodeReadAddress)){ - OperateResultExOne trayCodeRead = readWriteNet.Read(trayCodeReadAddress, Short.parseShort("220")); + OperateResultExOne trayCodeRead = readWriteNet.Read(trayCodeReadAddress, Short.parseShort("200")); if (trayCodeRead.IsSuccess){ byte[] content = trayCodeRead.Content; //去除bytes中 ssjDevice.setTrayCode(ParseUtil.filterAndConvert(trayCodeRead.Content)); +// if("L2004".equals(ssjDevice.getDeviceCode())){ +// ssjDevice.setTrayCode("gMODEL:1 COLOR:1 SERIAL:2 V:1 Hz:1 PH:1 N.W.:1 G.W.:1 ITEM_CODE:12345 @:1$S0T0S1T0S1T0S1T0$40001015202@"); +// }else{ +// ssjDevice.setTrayCode("gMODEL:1 COLOR:1 SERIAL:1 V:1 Hz:1 PH:1 N.W.:1 G.W.:1 ITEM_CODE:123456 @:1$S0T0S1T0S1T0S1T0$40001015202@"); +// } + } + } + OperateResultExOne agvSsjTask = readWriteNet.Read("DB501.280", Short.parseShort("8")); + String ddsx2 = "0"; + if (agvSsjTask.IsSuccess) { + ddsx2 = SoftBasic.ByteToHexString(agvSsjTask.Content); + if("L1001".equals(ssjDevice.getDeviceCode())){ + ssjDevice.setTaskNo2(ParseUtil.optDInt(0, ddsx2)); + } + if("L1003".equals(ssjDevice.getDeviceCode())){ + ssjDevice.setTaskNo2(ParseUtil.optDInt(4, ddsx2)); } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/Tools.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/Tools.java index 060590b..42cac9f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/Tools.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/util/Tools.java @@ -23,7 +23,7 @@ public class Tools implements Serializable { public static void main(String[] arg) { int jym = getJYM(1, 2, 3); - System.out.println(jym); + //System.out.println(jym); } /*4、CRC-16校验码计算方法: @@ -58,7 +58,7 @@ public class Tools implements Serializable { for (int j = 0; j < 4; j++) { int s = j + i * 4; ints1[s] = son[j]; - System.out.println(Arrays.toString(ints1)); + //System.out.println(Arrays.toString(ints1)); } } int a = 0; @@ -225,10 +225,10 @@ public class Tools implements Serializable { ints[22] = binaryTints8(printBits(a23)); ints[23] = binaryTints8(printBits(a24)); ints[24] = binaryTints8(printBits(a25)); - for (int anInt : ints) { - System.out.print(anInt + " "); - } - System.out.println(); +// for (int anInt : ints) { +// System.out.print(anInt + " "); +// } +// System.out.println(); return BytesToInt(ints); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/Ddj1Thread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java similarity index 99% rename from ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/Ddj1Thread.java rename to ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java index f5c5646..ceaa633 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/Ddj1Thread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ddj/DdjThread.java @@ -27,7 +27,7 @@ import java.util.List; @Slf4j -public class Ddj1Thread implements Runnable { +public class DdjThread implements Runnable { public HashMap> ddjCodeList; @@ -133,7 +133,7 @@ public class Ddj1Thread implements Runnable { if ("0".equals(mydoJob.getFaultFlag()) && "1".equals(ddjDeviceExecutionQueue.getSpare1())) { mydoJob.setStatus("1"); mydoJobService.updateMydoJob(mydoJob); - AjaxResult ajaxResult = apiService.reAssign(new JobParam(rwh.toString(), null, null)); + AjaxResult ajaxResult = apiService.reAssign(new JobParam(mydoJob.getJobId(), null, null)); if (ajaxResult.isSuccess()){ mydoJob = mydoJobService.selectMydoJobByTaskNo(rwh); mydoJob.setFaultFlag("2"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java index efdefff..c96fa5b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayInSsjThread.java @@ -141,19 +141,23 @@ public class Floor1BothWayInSsjThread implements Runnable { } private void dispatch2(DeviceSsj ssj) { - if (ssj.getDw() == 1 && ssj.getTaskNo() > 0 && ssj.getTaskNo() < 1000 && ssj.getTraySize() != 0) { + if (ssj.getRkqq() == 1 && ssj.getTaskNo() > 0 && ssj.getTaskNo() < 1000 ) { //先检测有没有出库作业,有出库作业直接退回 MydoJob outMydoJob = mydoJobService.selectRunningMydoJobByExitList(Collections.singletonList(ssj.getDeviceCode())); - if (ObjUtil.isNotNull(outMydoJob) || StrUtil.isEmpty(ssj.getTrayCode())) { + // || StrUtil.isEmpty(ssj.getTrayCode()) + if (ObjUtil.isNotNull(outMydoJob)) { //下发去向 和任务号 - int i = writeToSsj(ssj.getPlcDbWriteAddress(), "0", 2, 1); + int i = writeToSsj(ssj.getPlcDbWriteAddress(), "99", 2, 2); if (i == 1) { - log.info("未检测到托盘码下发回退 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 1, ssj.getTrayCode()); + log.info("当前输送机有出库任务下发退回 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 2, ssj.getTrayCode()); } } else { if (StrUtil.isNotBlank(ssj.getTrayCode())) { MydoJob param = new MydoJob(); param.setEntranceId(ssj.getDeviceCode()); + String[] split = ssj.getTrayCode().split(" "); + String serial = split[2].substring(7); + param.setTrayCode(serial); List mydoJobs = mydoJobService.selectMydoJobList(param); MydoJob inJob = null; if (CollUtil.isNotEmpty(mydoJobs)) { @@ -162,7 +166,7 @@ public class Floor1BothWayInSsjThread implements Runnable { //根据托盘码请求入库作业 HashMap paramMap = new HashMap<>(); paramMap.put("trayCode", ssj.getTrayCode()); - paramMap.put("size", ssj.getTraySize()); + //paramMap.put("size", ssj.getTraySize()); paramMap.put("floor", "1"); paramMap.put("entranceId",ssj.getDeviceCode()); AjaxResult result = apiService.selectMydoJobByTrayCodeAndEntranceId(paramMap); @@ -170,9 +174,15 @@ public class Floor1BothWayInSsjThread implements Runnable { inJob = BeanUtil.toBean(result.get("data"), MydoJob.class); inJob.setStatus(TASK_STATUS_CREATE); inJob.setExecutionPhase(TASK_EP_CREATE); + inJob.setFaultFlag("0"); mydoJobService.insertMydoJob(inJob); - } else { - log.info("未检测到托盘码请求入库作业 rwh:{},trayCode:{}", ssj.getTaskNo(), ssj.getTrayCode()); + log.info("托盘码请求作业成功, rwh:{},trayCode:{}", ssj.getTaskNo(), ssj.getTrayCode()); + }else{ + //下发去向 和任务号 + int i = writeToSsj(ssj.getPlcDbWriteAddress(), "99", 2, 2); + if (i == 1) { + log.info("托盘码请求作业失败, rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 2, ssj.getTrayCode()); + } } } if (inJob != null) { @@ -184,7 +194,13 @@ public class Floor1BothWayInSsjThread implements Runnable { inJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); inJob.setTargetRoadwayId(Convert.toStr(1)); mydoJobService.updateMydoJob(inJob); - log.info("入库请求下发任务号加去向 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 1, ssj.getTrayCode()); + log.info("托盘码请求作业成功,下发任务号 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 1, ssj.getTrayCode()); + } + }else{ + //下发去向 和任务号 + int i = writeToSsj(ssj.getPlcDbWriteAddress(), "99", 2, 2); + if (i == 1) { + log.info("托盘码请求作业失败,下发回退 rwh:{},qx:{},trayCode:{}", ssj.getTaskNo(), 2, ssj.getTrayCode()); } } }else { @@ -204,42 +220,37 @@ public class Floor1BothWayInSsjThread implements Runnable { if (i == 1) { mydoJob.setExecutionPhase(TASK_EP_SSJ); mydoJobService.updateMydoJob(mydoJob); - log.info("{}已重复下发任务号{}:",ssj.getDeviceCode(),mydoJob.getTaskNo()); + log.info("{}无条码请求作业,二次下发任务号{}:",ssj.getDeviceCode(),mydoJob.getTaskNo()); } }else { //不存在扫不到托盘码的任务 HashMap paramMap = new HashMap<>(); - paramMap.put("size", ssj.getTraySize()); +// paramMap.put("size", ssj.getTraySize()); paramMap.put("entranceId",ssj.getDeviceCode()); AjaxResult ajaxResult = apiService.selectMydoJobByNoTrayCode(paramMap); if (ajaxResult.isSuccess()) { MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); mydoJob2.setExecutionPhase(TASK_EP_CREATE); + mydoJob2.setFaultFlag("0"); mydoJobService.insertMydoJob(mydoJob2); int i = writeToSsj(ssj.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); if (i == 1) { mydoJob2.setExecutionPhase(TASK_EP_SSJ); mydoJobService.updateMydoJob(mydoJob2); - log.info("{}已下发任务号{}:",ssj.getDeviceCode(),mydoJob2.getTaskNo()); + log.info("{}无条码请求作业成功,下发任务号{}:",ssj.getDeviceCode(),mydoJob2.getTaskNo()); } } else if (ajaxResult.isError()) { //超大,给plc下发错误信息,等待人工处理 //托盘大小对不上,给plc下发错误信息,等待人工处理 //码不对,给plc下发错误信息,等待人工处理 - int i = writeToSsj(ssj.getPlcDbWriteAddress(), "0", Integer.parseInt(ajaxResult.get("code").toString()), 2); + int i = writeToSsj(ssj.getPlcDbWriteAddress(), "99", Integer.parseInt(ajaxResult.get("code").toString()), 2); if (i == 1) { - log.info("{}下发错误信号{}:",ssj.getDeviceCode(),Integer.parseInt(ajaxResult.get("code").toString())); + log.info("{}无条码请求作业失败,下发退回{}:",ssj.getDeviceCode(),Integer.parseInt(ajaxResult.get("code").toString())); } } } } } - } - - } - - - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java index d4682b9..56680f6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor1/Floor1BothWayOutSsjThread.java @@ -107,6 +107,7 @@ public class Floor1BothWayOutSsjThread implements Runnable { private void dispatch1(List ssjList) { for (DeviceSsj ssj : ssjList) { + if (ssj.getDw()==1 && ssj.getTaskNo()>0){ MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Convert.toLong(ssj.getTaskNo())); if (ObjUtil.isNotNull(mydoJob) && mydoJob.getExecutionPhase().equals(TASK_EP_ROADWAY_SSJ)) { 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 f5ae91c..82712b2 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 @@ -75,10 +75,8 @@ public class Floor2InOutSsjThread implements Runnable { } catch (RuntimeException e) { log.error(e.getMessage(), e); } - } break; - } } try { @@ -102,15 +100,22 @@ public class Floor2InOutSsjThread implements Runnable { //不允许放货 等着 if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 0 && "L1001".equals(inSsjDevice.getDeviceCode())) { //下发输送线切换导向 DB未知 - int i = writeToSsjQH("inSsjDevice.getPlcDbWriteAddress()", Integer.parseInt(agvQueues.get(0).getCtnrType())); + int i = writeToSsjQH("DB802.106", Integer.parseInt(agvQueues.get(0).getCtnrType())); + if (i == 1) { + log.info("输送机{}下发切换导向{}成功", inSsjDevice.getDeviceCode(), agvQueues.get(0).getCtnrType()); + } + } + if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 0 && "L1003".equals(inSsjDevice.getDeviceCode())) { + //下发输送线切换导向 DB未知 + int i = writeToSsjQH("DB802.118", Integer.parseInt(agvQueues.get(0).getCtnrType())); if (i == 1) { log.info("输送机{}下发切换导向{}成功", inSsjDevice.getDeviceCode(), agvQueues.get(0).getCtnrType()); } } //允许放货 - if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 1) { - log.info("设备:{} 位置:{} 任务号:{} 请求放货成功", inSsjDevice.getDeviceCode(), "输送线", agvQueues.get(0).getTaskCode()); + if (!agvQueues.isEmpty() && inSsjDevice.getAllowPut() == 2) { + log.info("设备:{} 位置:{} 任务号:{} 请求放货成功", inSsjDevice.getDeviceCode(), "输送线", agvQueues.get(0).getWmsTaskNo()); AjaxResult ajaxResult = apiService.continueTask(agvQueues.get(0)); if (ajaxResult.isSuccess()) { log.info("下发agv允许放货成功" + agvQueues.get(0).getWmsTaskNo()); @@ -127,25 +132,37 @@ public class Floor2InOutSsjThread implements Runnable { agvQueue.setPositionCode2(inSsjDevice.getDeviceCode()); List agvQueues = agvQueueService.selectAgvQueueList(agvQueue); if (!agvQueues.isEmpty()) { - int i = writeToSsj(inSsjDevice.getPlcDbWriteAddress(), agvQueues.get(0).getWmsTaskNo(), 1,1); - if (i == 1) { - log.info("输送机{}下发任务号{}成功", inSsjDevice.getDeviceCode(), agvQueues.get(0).getWmsTaskNo()); + apiService.deleteAgvTray(agvQueues.get(0)); + if("L1001".equals(inSsjDevice.getDeviceCode())) { + int i = writeToSsj("DB802.100", agvQueues.get(0).getWmsTaskNo(), 2,Integer.parseInt(agvQueues.get(0).getCtnrType())); + if (i == 1) { + log.info("输送机{}AGV放货完成下发任务号{}成功", inSsjDevice.getDeviceCode(), agvQueues.get(0).getWmsTaskNo()); + } + } + if("L1003".equals(inSsjDevice.getDeviceCode())) { + int i = writeToSsj("DB802.112", agvQueues.get(0).getWmsTaskNo(), 2,Integer.parseInt(agvQueues.get(0).getCtnrType())); + if (i == 1) { + log.info("输送机{}AGV放货完成下发任务号{}成功", inSsjDevice.getDeviceCode(), agvQueues.get(0).getWmsTaskNo()); + + } } } } - if(inSsjDevice.getKx() == 0 && inSsjDevice.getTaskNo() > 0){ + if(inSsjDevice.getKx() == 0 && inSsjDevice.getTaskNo2() > 0){ AgvQueue agvQueue = new AgvQueue(); agvQueue.setStatus("7"); //end //todo 与agv对点 agvQueue.setPositionCode2(inSsjDevice.getDeviceCode()); List agvQueues = agvQueueService.selectAgvQueueList(agvQueue); - MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(agvQueues.get(0).getTaskCode()); - mydoJob.setExecutionPhase(TASK_EP_SSJ); - mydoJobService.updateMydoJob(mydoJob); - agvQueueService.insertHistory(agvQueues.get(0).getReqCode()); - agvQueueService.deleteAgvQueueByReqCode(agvQueues.get(0).getReqCode()); + if(agvQueues.size() > 0){ + MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(agvQueues.get(0).getTaskCode()); + mydoJob.setExecutionPhase(TASK_EP_SSJ); + mydoJobService.updateMydoJob(mydoJob); + agvQueueService.insertHistory(agvQueues.get(0).getReqCode()); + agvQueueService.deleteAgvQueueByReqCode(agvQueues.get(0).getReqCode()); + } } //出库到位 if (inSsjDevice.getDw() == 1 && inSsjDevice.getTaskNo() > 0) { @@ -178,7 +195,7 @@ public class Floor2InOutSsjThread implements Runnable { List outMydoJobList = mydoJobService.selectInOrOutMydoJobList(mydoJobParam); if(!outMydoJobList.isEmpty()){ //todo 去向不明朗 - int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"0",2,2); + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2); if (i == 1) { log.info(ssjDevice.getDeviceCode()+"有正执行的出库作业退回" ); } @@ -214,6 +231,7 @@ public class Floor2InOutSsjThread implements Runnable { mydoJob2.setStatus("1"); mydoJob2.setExecutionPhase(TASK_EP_CREATE); mydoJob2.setCreateTime(new Date()); + mydoJob2.setFaultFlag("0"); mydoJobService.insertMydoJob(mydoJob2); int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); if (i == 1) { @@ -224,7 +242,7 @@ public class Floor2InOutSsjThread implements Runnable { } }else{ //todo 去向不明朗 - int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"0",2,2); + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),"99",2,2); if (i == 1) { log.info(ssjDevice.getDeviceCode()+"输送机没取到作业下发输送线" ); } @@ -263,6 +281,7 @@ public class Floor2InOutSsjThread implements Runnable { mydoJob2.setStatus("1"); mydoJob2.setExecutionPhase(TASK_EP_CREATE); mydoJob2.setCreateTime(new Date()); + mydoJob2.setFaultFlag("0"); mydoJobService.insertMydoJob(mydoJob2); int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); if (i == 1) { @@ -272,9 +291,9 @@ public class Floor2InOutSsjThread implements Runnable { log.info(ssjDevice.getDeviceCode()+"输送机下发任务号成功:" + mydoJob2.getTaskNo()); } }else{ - int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(ajaxResult.get("code").toString()), 2); + int i = writeToSsj(ssjDevice.getPlcDbWriteAddress(), "99", Integer.parseInt(ajaxResult.get("code").toString()), 2); if (i == 1) { - log.info("G1005产线输送机下发错误信息成功"); + log.info(ssjDevice.getDeviceCode()+"输送机下发错误信息成功"); } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2RoadWaySsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2RoadWaySsjThread.java index 4be93da..dc66dce 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2RoadWaySsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/floor2/Floor2RoadWaySsjThread.java @@ -138,43 +138,49 @@ public class Floor2RoadWaySsjThread implements Runnable { if("L1004".equals(roadSsjDevice.getDeviceCode())){ exitList.add("l1003"); } - MydoJob mydoJob = mydoJobService.selectMydoJobByExitList(exitList); - if (ObjUtil.isNotNull(mydoJob)) { - BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); - if (ObjUtil.isNull(basCargoSpace)) { - log.error("货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId()); - } else { - //生成队列 - List list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2, Convert.toInt(mydoJob.getRoadwayId())); - List pclList = roadwayMap.get(roadSsjDevice.getDeviceCode()); - if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) { - DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); - ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); - ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo())); - ddjDeviceExecutionQueue.setDevName(mydoJob.getRoadwayId()); - ddjDeviceExecutionQueue.setDevId(Convert.toInt(mydoJob.getRoadwayId())); - ddjDeviceExecutionQueue.setRwzt(0); - ddjDeviceExecutionQueue.setYph(Convert.toInt(basCargoSpace.getThePlatoon())); - ddjDeviceExecutionQueue.setYlh(Convert.toInt(basCargoSpace.getTheColumn())); - ddjDeviceExecutionQueue.setYch(Convert.toInt(basCargoSpace.getTheFloor())); - ddjDeviceExecutionQueue.setMbph(pclList.get(0)); - ddjDeviceExecutionQueue.setMblh(pclList.get(1)); - ddjDeviceExecutionQueue.setMbch(pclList.get(2)); - ddjDeviceExecutionQueue.setDdjxf("0"); - ddjDeviceExecutionQueue.setMlfs(5); - ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize()); - ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); - ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1); - ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); + List inList = mydoJobService.getInJobByEntrance(exitList); + if(inList.size() == 0){ + MydoJob mydoJob = mydoJobService.selectMydoJobByExitList(exitList); + if (ObjUtil.isNotNull(mydoJob)) { + BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId()); + if (ObjUtil.isNull(basCargoSpace)) { + log.error("货位不存在 cargoSpaceId{}", mydoJob.getCargoSpaceId()); + } else { + //生成队列 + List list = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueListByRwlx(DDJ_RWLX_2, Convert.toInt(mydoJob.getRoadwayId())); + List pclList = roadwayMap.get(roadSsjDevice.getDeviceCode()); + if (CollUtil.isEmpty(list) && CollUtil.isNotEmpty(pclList)) { + DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); + ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); + ddjDeviceExecutionQueue.setRwh(Convert.toLong(mydoJob.getTaskNo())); + ddjDeviceExecutionQueue.setDevName(mydoJob.getRoadwayId()); + ddjDeviceExecutionQueue.setDevId(Convert.toInt(mydoJob.getRoadwayId())); + ddjDeviceExecutionQueue.setRwzt(0); + ddjDeviceExecutionQueue.setYph(Convert.toInt(basCargoSpace.getThePlatoon())); + ddjDeviceExecutionQueue.setYlh(Convert.toInt(basCargoSpace.getTheColumn())); + ddjDeviceExecutionQueue.setYch(Convert.toInt(basCargoSpace.getTheFloor())); + ddjDeviceExecutionQueue.setMbph(pclList.get(0)); + ddjDeviceExecutionQueue.setMblh(pclList.get(1)); + ddjDeviceExecutionQueue.setMbch(pclList.get(2)); + ddjDeviceExecutionQueue.setDdjxf("0"); + ddjDeviceExecutionQueue.setMlfs(5); + ddjDeviceExecutionQueue.setSpare1(mydoJob.getTraySize()); + ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); + ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1); + ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); - //修改作业状态 - mydoJob.setStatus(TASK_STATUS_RUNNING); - mydoJob.setExecutionPhase(TASK_EP_DDJ); - mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); - mydoJobService.updateMydoJob(mydoJob); + //修改作业状态 + mydoJob.setStatus(TASK_STATUS_RUNNING); + mydoJob.setExecutionPhase(TASK_EP_DDJ); + mydoJob.setStartTime(DateUtil.formatDateTime(DateUtil.date())); + mydoJobService.updateMydoJob(mydoJob); + } } } + }else{ + log.info("当前出口"+ exitList+"存在入库任务,无法出库!"); } + } } 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 1993cfe..1821f5c 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 @@ -24,8 +24,7 @@ import java.util.HashMap; import java.util.List; import static com.ruoyi.common.TaskStatusCode.*; -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.*; /** * 生产线输送机 @@ -92,7 +91,8 @@ public class LineSsjThread implements Runnable { public void inDispatch(DeviceSsj SsjDevice) { //如果到位,扫到条码,托盘大小,执行阶段卡控一下(下发输送机后改执行阶段) - if (SsjDevice.getDw() == 1 && StrUtil.isNotBlank(SsjDevice.getTrayCode()) && SsjDevice.getTraySize() != 0 && SsjDevice.getTaskNo() < 1000) { + if (SsjDevice.getRkqq() == 1 && StrUtil.isNotBlank(SsjDevice.getTrayCode()) + && SsjDevice.getTraySize() != 0 && SsjDevice.getTaskNo() < 1000) { log.info("设备:{} 位置:{} 条码:{} 托盘大小:{}", SsjDevice.getDeviceCode(), "产线到位", SsjDevice.getTrayCode(), SsjDevice.getTraySize()); //查作业,入如果已经有了,直接下发输送线 @@ -107,14 +107,14 @@ 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); - mydoJobService.updateMydoJob(mydoJob); - log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); - } + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), Integer.parseInt(mydoJob.getTraySize()), 1); + if (i == 1) { + mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ); + mydoJobService.updateMydoJob(mydoJob); + log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); + } } else { //请求wms生成入库作业 @@ -127,17 +127,18 @@ public class LineSsjThread implements Runnable { AjaxResult ajaxResult = apiService.createInMydoJob(paramMap); if (ajaxResult.isSuccess()) { //拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号 - MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class) ; + MydoJob mydoJob2 = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class); mydoJob2.setStatus("1"); mydoJob2.setExecutionPhase(TASK_EP_CREATE); mydoJob2.setCreateTime(new Date()); mydoJob2.setTraySize(Convert.toStr(SsjDevice.getTraySize())); + mydoJob2.setFaultFlag("0"); mydoJobService.insertMydoJob(mydoJob2); - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob2.getTaskNo(), Integer.parseInt(mydoJob2.getTraySize()), 1); if (i == 1) { mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ); mydoJobService.updateMydoJob(mydoJob2); - log.info("G1005产线输送机下发任务号成功:{}" , mydoJob2.getTaskNo()); + log.info("G1005产线输送机下发任务号成功:{}", mydoJob2.getTaskNo()); } } else { /** @@ -152,18 +153,24 @@ public class LineSsjThread implements Runnable { * 9, "创建工艺入库单失败!" */ //超大,给plc下发错误信息,AGV搬到缓存区 其余人工处理 - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), "0", (Integer) ajaxResult.get("code"), 2); - if (i == 1) { - log.info("G1005产线输送机下发错误信息成功"); - } - if((Integer) ajaxResult.get("code") == 5){ + if ((Integer) ajaxResult.get("code") == 5) { + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), "2222", 1, 1); + if (i == 1) { + log.info("G1005产线输送机下发错误信息成功"); + } createMoveToPort(SsjDevice); + } else { + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), "99", Integer.parseInt(ajaxResult.get("code").toString()), 2); + if (i == 1) { + log.info("G1005产线输送机下发错误信息成功"); + } } } } } - if (SsjDevice.getDw() == 1 && StrUtil.isBlank(SsjDevice.getTrayCode()) && SsjDevice.getTraySize() != 0 && SsjDevice.getTaskNo() < 1000) { + if (SsjDevice.getRkqq() == 1 && StrUtil.isBlank(SsjDevice.getTrayCode()) && + SsjDevice.getTraySize() != 0 && SsjDevice.getTaskNo() < 1000) { log.info("设备:{} 位置:{} 条码:{} 托盘大小:{}", SsjDevice.getDeviceCode(), "产线", SsjDevice.getTrayCode(), SsjDevice.getTraySize()); //查wcs有没作业,有下发给输送机任务号,覆盖任务号 @@ -177,11 +184,11 @@ public class LineSsjThread implements Runnable { 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); - mydoJobService.updateMydoJob(mydoJob); - log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1); + if (i == 1) { + mydoJob.setExecutionPhase(TASK_EP_LINE_SSJ); + mydoJobService.updateMydoJob(mydoJob); + log.info("G1005产线输送机下发任务号成功:" + mydoJob.getTaskNo()); } } else { @@ -196,8 +203,9 @@ public class LineSsjThread implements Runnable { mydoJob2.setExecutionPhase("0"); mydoJob2.setCreateTime(new Date()); mydoJob2.setTraySize(Convert.toStr(SsjDevice.getTraySize())); + mydoJob2.setFaultFlag("0"); mydoJobService.insertMydoJob(mydoJob2); - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(),mydoJob2.getTaskNo(),1,1); + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), mydoJob2.getTaskNo(), 1, 1); if (i == 1) { mydoJob2.setExecutionPhase(TASK_EP_LINE_SSJ); mydoJobService.updateMydoJob(mydoJob2); @@ -207,13 +215,18 @@ public class LineSsjThread implements Runnable { //超大,给plc下发错误信息,等待人工处理 //托盘大小对不上,给plc下发错误信息,等待人工处理 //码不对,给plc下发错误信息,等待人工处理 - int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), "0", Integer.parseInt(ajaxResult.get("code").toString()), 2); - if (i == 1) { - log.info("G1005产线输送机下发错误信息成功"); - } - //7是报工单失败,不处理 - if(!"9".equals(Integer.parseInt(ajaxResult.get("code").toString()))){ + + if ((Integer) ajaxResult.get("code") == 5) { + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), "2222", 1, 1); + if (i == 1) { + log.info("G1005产线输送机下发错误信息成功"); + } createMoveToPort(SsjDevice); + } else { + int i = writeToSsj(SsjDevice.getPlcDbWriteAddress(), "99", Integer.parseInt(ajaxResult.get("code").toString()), 2); + if (i == 1) { + log.info("G1005产线输送机下发错误信息成功"); + } } } } @@ -244,24 +257,27 @@ public class LineSsjThread implements Runnable { if (outMydoJobList.isEmpty() && kx == 1) { //查是否有队列,如果有了请求放货修改为允许放货 AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(mydoJob.getJobId()); - if (agvQueue != null){ - if ("3".equals(mydoJob.getStatus()) && "1".equals(agvQueue.getStatus()) && SsjDevice.getAllowPut() == 1){ + if (agvQueue != null) { + if ("3".equals(mydoJob.getStatus()) && "2".equals(agvQueue.getStatus()) && SsjDevice.getAllowPut() == 1) { AjaxResult ajaxResult = apiService.continueTask(agvQueue); if (ajaxResult.isSuccess()) { - log.info("给agv下发允许取货继续任务成功"+agvQueue.getWmsTaskNo()); + log.info("给agv下发允许取货继续任务成功" + agvQueue.getWmsTaskNo()); agvQueue.setStatus("2"); agvQueueService.updateAgvQueue(agvQueue); } } - }else { - if ("1".equals(mydoJob.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("taskNo", mydoJob.getJobId()); + paramMap.put("trayCode", mydoJob.getTrayCode()); + paramMap.put("taskCode",mydoJobParam.getJobId()); //todo 与agv对点 paramMap.put("startPoint", "G1005"); paramMap.put("endPoint", deviceCode); - paramMap.put("traySize",mydoJob.getTraySize()); + paramMap.put("traySize", mydoJob.getTraySize()); paramMap.put("wmsTaskNo", mydoJob.getTaskNo()); AjaxResult ajaxResult = apiService.receiveAgvMoveJob(paramMap); if (ajaxResult.isSuccess()) { @@ -272,17 +288,37 @@ public class LineSsjThread implements Runnable { } } } - - } - - } - + if (SsjDevice.getDw() == 1 && SsjDevice.getTaskNo() == 2222 && SsjDevice.getTraySize() == 4) { + AgvQueue agvQueue = agvQueueService.selectAgvQueueByWmsTask(SsjDevice.getTaskNo()); + if (agvQueue != null) { + if ("2".equals(agvQueue.getStatus()) && SsjDevice.getAllowPut() == 1) { + AjaxResult ajaxResult = apiService.continueTask(agvQueue); + if (ajaxResult.isSuccess()) { + log.info("给agv下发允许取货继续任务成功" + agvQueue.getWmsTaskNo()); + agvQueue.setStatus("2"); + agvQueueService.updateAgvQueue(agvQueue); + } + } + } + } + if (SsjDevice.getDw() == 0 && SsjDevice.getTaskNo() > 1000 && SsjDevice.getTraySize() > 0) { + AgvQueue agvQueue = agvQueueService.selectAgvQueueByWmsTask(SsjDevice.getTaskNo()); + if (agvQueue != null) { + if ("4".equals(agvQueue.getStatus())) { + int i = writeToSsjQH("DB802.122", 1); + if (i == 1) { + log.info("G1005产线输送机下发取货完成成功!"); + } + } + } + } } - void createMoveToPort(DeviceSsj SsjDevice){ + + void createMoveToPort(DeviceSsj SsjDevice) { WcsPort wcsPort = new WcsPort(); wcsPort.setStatus("1"); List wcsPorts = wcsPortService.selectWcsPortList(wcsPort); @@ -294,29 +330,23 @@ public class LineSsjThread implements Runnable { .map(WcsPort::getPortCode) .anyMatch(portCode -> portCode.equals(positionCode2))); - if(hasMatchingPort==false){ + if (hasMatchingPort == false) { - if(!wcsPorts.isEmpty()){ + if (!wcsPorts.isEmpty()) { HashMap 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("traySize", "5"); // map.put("wmsTaskNo", mydoJob.getTaskNo()); AjaxResult ajaxResult1 = apiService.receiveAgvMoveJob(map); - if(ajaxResult1.isSuccess()){ - log.info("G1005产线生成作业失败,AGV下发搬运至缓存点任务成功:{}" , ajaxResult1.get("data")); + if (ajaxResult1.isSuccess()) { + log.info("G1005产线生成作业失败,AGV下发搬运至缓存点任务成功:{}", ajaxResult1.get("data")); } } } } - - - - - - } diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index ffde47f..cf19924 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -9,7 +9,7 @@ spring: # url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT517-WCS; # username: sa # password: Flrd0914. - url: jdbc:sqlserver://192.168.56.212:1433;databaseName=FT517-wcs; + url: jdbc:sqlserver://192.168.58.10:1433;databaseName=FT517-wcs; username: sa password: www.123.com diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 2962353..3e2c2cd 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -16,7 +16,7 @@ ruoyi: # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 - port: 8081 + port: 8084 servlet: # 应用的访问路径 context-path: / @@ -68,7 +68,7 @@ spring: # redis 配置 redis: # 地址 - host: 192.168.56.212 + host: 192.168.58.10 # 端口,默认为6379 port: 6379 # 数据库索引 diff --git a/ruoyi-admin/src/main/resources/mapper/device/AgvQueueMapper.xml b/ruoyi-admin/src/main/resources/mapper/device/AgvQueueMapper.xml index a362e8b..9a4814b 100644 --- a/ruoyi-admin/src/main/resources/mapper/device/AgvQueueMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/device/AgvQueueMapper.xml @@ -62,6 +62,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where task_code = #{taskCode} + + insert into agv_queue diff --git a/ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml b/ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml index d9ee18c..768ae52 100644 --- a/ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml @@ -105,6 +105,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" exception = #{exception}, tray_size = #{traySize}, allow_put = #{allowPut}, + sszt = #{sszt}, where id = #{id} diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index dae3e0a..927a0f6 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -72,10 +72,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where job_id = #{jobId} - + select job_id, a.status, task_no, a.roadway_id, b.cargo_space_name as cargo_space_id, target_roadway_id, + target_cargo_space_id, priority, execution_phase, in_or_out, create_time, + start_time, finish_time, entrance_id, exit_id, a.warehouse_id, fault_flag, + flag,a.tray_code,tray_size + from mydo_job_wcs a,bas_cargo_space b + where a.cargo_space_id = b.cargo_space_id + and task_no = #{taskNo} + + + @@ -257,8 +268,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{item} - and in_or_out > 20 + and in_or_out > 20 and status = 3 order by priority desc,create_time + + diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index a1733b8..3a6c480 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -9,10 +9,10 @@ const CompressionPlugin = require('compression-webpack-plugin') const name = process.env.VUE_APP_TITLE || 'FORTUCKY WCS SYSTEM' // 网页标题 -const baseUrl = 'http://localhost:8081' // 后端接口地址(你的后端端口是8081) - -const port = process.env.port || process.env.npm_config_port || 80 // 前端端口 +const baseUrl = 'http://localhost:8084' // 后端接口地址(你的后端端口是8081) +// const port = process.env.port || process.env.npm_config_port || 80 // 前端端口 +const port = 8083 module.exports = { publicPath: process.env.NODE_ENV === "production" ? "/" : "/", outputDir: 'dist',