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 a43baf2..6f13e91 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 @@ -130,4 +130,6 @@ public interface IApiService AjaxResult selectMydoJobByTrayCodeAndEntranceId(HashMap paramMap); AjaxResult allotSpace(JobParam jobParam); + + AjaxResult JobFinish(Map param); } 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 23f7dea..87e90ea 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 @@ -138,6 +138,10 @@ public class ApiServiceImpl implements IApiService { } + + + + /** * 处理agv状态返回 * @@ -332,6 +336,7 @@ public class ApiServiceImpl implements IApiService { @Override public AjaxResult createInMydoJob(Map param) { + // 访问请求路径,生成入库作业 ,如果生成返回信息 RequestLog requestLog = requestLogService.getRequestLog(CREATE_IN_MYDO_JOB_URL, "入库请求生成作业", JSONUtil.toJsonStr(param)); if ("1".equals(requestLog.getIsSuccessful())) { InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class); @@ -366,7 +371,23 @@ public class ApiServiceImpl implements IApiService { @Override public AjaxResult receiveInMydoJob(ReceiveJob receiveInJob) { - return null; + MydoJob mydoJob = new MydoJob(); + mydoJob.setJobId(receiveInJob.getJobId()); + mydoJob.setTaskNo(receiveInJob.getTaskNo()); + mydoJob.setCargoSpaceId(receiveInJob.getCargoSpaceId()); + mydoJob.setExitId(receiveInJob.getExitId()); + mydoJob.setInOrOut(receiveInJob.getInOrOut()); + mydoJob.setStatus("1"); + mydoJob.setTrayCode(receiveInJob.getTrayCode()); + mydoJob.setRoadwayId(receiveInJob.getRoadwayId()); + mydoJob.setCreateTime(DateUtils.getNowDate()); + mydoJob.setExecutionPhase("0"); + int i = mydoJobService.insertMydoJob(mydoJob); + if (i > 0) { + return AjaxResult.success(); + }else{ + return AjaxResult.error(); + } } @Override @@ -396,4 +417,17 @@ public class ApiServiceImpl implements IApiService { public AjaxResult allotSpace(JobParam jobParam) { return null; } + + @Override + public AjaxResult JobFinish(Map param) { + RequestLog requestLog = requestLogService.getRequestLog(JOB_FINISH_URL, "入库出任务过账", JSONUtil.toJsonStr(param)); + if ("1".equals(requestLog.getIsSuccessful())) { + InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class); + return AjaxResult.success(bean.getData()); + } else { + return AjaxResult.error(); + } + + + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/RoadCacheServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/RoadCacheServiceImpl.java index 6bb2169..62b70fb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/RoadCacheServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/bas/srgvmap/service/impl/RoadCacheServiceImpl.java @@ -41,7 +41,7 @@ public class RoadCacheServiceImpl implements RoadCacheService { for (WcsSrgvMap wcsSrgvMap : wcsSrgvMaps) { maps.put(wcsSrgvMap.getSiteId(), wcsSrgvMap); } - param.setAxy("7,7"); + param.setAxy("11,9"); List tsjMap = wcsSrgvMapMapper.selectWcsSrgvMapList(param); for (WcsSrgvMap wcsSrgvMap : tsjMap) { maps.put("tsj",wcsSrgvMap); @@ -59,10 +59,13 @@ public class RoadCacheServiceImpl implements RoadCacheService { //3.锁定离线小车当前位置 lockedOfflineCarCurrSite(maps, deviceSrgv); - int[][] mapsInt = new int[29][11]; + int[][] mapsInt = new int[50][50]; for (String site : maps.keySet()) { WcsSrgvMap wcsSrgvMap = maps.get(site); mapsInt[wcsSrgvMap.getX()][wcsSrgvMap.getY()] = wcsSrgvMap.getValue(); + if (wcsSrgvMap.getAxy().equals("11,8")){ + System.err.println(wcsSrgvMap.getValue()); + } } return mapsInt; } 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 1b0b92a..70e6681 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 @@ -86,4 +86,8 @@ public class DeviceSsj extends BaseEntity + + + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/controller/JobCallBackController.java b/ruoyi-admin/src/main/java/com/ruoyi/job/controller/JobCallBackController.java index 7759fc1..2a8e464 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/job/controller/JobCallBackController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/job/controller/JobCallBackController.java @@ -104,7 +104,7 @@ public class JobCallBackController extends BaseController return toAjax(jobCallBackService.deleteJobCallBackByIds(ids)); } - //@Scheduled(fixedDelay=1500) + @Scheduled(fixedDelay=1500) public void jobCallBack() { jobCallBackService.jobCallBack(); } 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 2c2d4d3..b01e2fb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -71,8 +71,13 @@ public class ScheduleThread { //读取信息初始化 plcReadInit(); //调度初始化 + + scheduleInit(); log.info("调度服务执行成功"); +// startAllThread(); +// startAllThread2(); + } /** @@ -114,8 +119,8 @@ public class ScheduleThread { ssjList.put(deviceSsj.getDeviceCode(), deviceSsj); } - //plc输送机读取线程 - PlcSsjRead plcSsjRead = new PlcSsjRead(ssjList, new PlcConnectInfo("127.0.0.1", 102)); +// plc输送机读取线程 + PlcSsjRead plcSsjRead = new PlcSsjRead(ssjList, new PlcConnectInfo("192.168.200.41", 102)); Thread plcSsjReadThread = new Thread(plcSsjRead); plcSsjReadCustomThread = new CustomThread(plcSsjReadThread, plcSsjRead); @@ -151,7 +156,7 @@ public class ScheduleThread { for (DeviceTsj deviceTsj : deviceTsjs) { tsjList.put(deviceTsj.getId().toString(), deviceTsj); } - PlcTsjRead plcTsjRead = new PlcTsjRead(tsjList,new PlcConnectInfo("127.0.0.1", 102)); + PlcTsjRead plcTsjRead = new PlcTsjRead(tsjList,new PlcConnectInfo("192.168.200.41", 102)); Thread plcTsjReadThread = new Thread(plcTsjRead); plcTsjReadCustomThread = new CustomThread<>(plcTsjReadThread, plcTsjRead); @@ -161,7 +166,7 @@ public class ScheduleThread { for (DeviceCdz deviceCdz : deviceCdzs) { cdzList.put(deviceCdz.getId().toString(), deviceCdz); } - PlcCdzRead plcCdzRead = new PlcCdzRead(cdzList,new PlcConnectInfo("127.0.0.1", 102)); + PlcCdzRead plcCdzRead = new PlcCdzRead(cdzList,new PlcConnectInfo("192.168.200.41", 102)); Thread plcCdzReadThread = new Thread(plcCdzRead); plcCdzReadCustomThread = new CustomThread<>(plcCdzReadThread, plcCdzRead); @@ -187,10 +192,10 @@ public class ScheduleThread { */ public void startAllThread2() { monitoringCustomThread.thread.start(); - //ssjThreadCustomThread.thread.start(); - //tsjThreadCustomThread.thread.start(); - //sRgvThreadCustomThread.thread.start(); - //cdzThreadCustomThread.thread.start(); + ssjThreadCustomThread.thread.start(); + tsjThreadCustomThread.thread.start(); + sRgvThreadCustomThread.thread.start(); + cdzThreadCustomThread.thread.start(); isRun2 = true; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java index 1b6b291..60c4a99 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/srgv/PlcSrgvRead.java @@ -7,6 +7,7 @@ import HslCommunication.Core.Types.OperateResult; import HslCommunication.Core.Types.OperateResultExOne; import HslCommunication.ModBus.ModbusTcpNet; import cn.hutool.core.convert.Convert; +import com.alibaba.druid.support.spring.stat.annotation.Stat; import com.ruoyi.common.domain.PlcConnectInfo; import com.ruoyi.device.srgv.domain.DeviceSrgv; import lombok.extern.slf4j.Slf4j; @@ -17,7 +18,7 @@ import java.util.concurrent.ConcurrentHashMap; public class PlcSrgvRead implements Runnable { public static ConcurrentHashMap deviceSrgvMap; - private ModbusTcpNet modbusTcpNet; + private ModbusTcpNet modbusTcpNet; public IReadWriteNet readWriteNet = null; public volatile boolean isRun = true; private final String ip; @@ -34,18 +35,18 @@ public class PlcSrgvRead implements Runnable { this.station = (byte) 1; } - public static boolean Write(String address, int[] value){ - - //OperateResult write = modbusTcpNet.Write(address, value); - return true; + + public synchronized boolean Write(String address, int[] value) { + OperateResult write = modbusTcpNet.Write(address, value); + return write.IsSuccess; } - public static boolean Write(String address, short[] value){ + public synchronized boolean Write(String address, short[] value) { - //OperateResult write = modbusTcpNet.Write(address, value); - return true; + OperateResult write = modbusTcpNet.Write(address, value); + return write.IsSuccess; } @@ -88,19 +89,31 @@ public class PlcSrgvRead implements Runnable { //单字 private void setValueByByte1(byte[] content, DeviceSrgv agvData) { +// agvData.setTaskType(0); agvData.setTaskType(Convert.toInt(byteTransform.TransInt16(content, 0))); +// agvData.setBattery(0); agvData.setBattery(Convert.toInt(byteTransform.TransInt16(content, 2))); +// agvData.setWorkMode(0); agvData.setWorkMode(Convert.toInt(byteTransform.TransInt16(content, 4))); +// agvData.setAlarm(0); agvData.setAlarm(Convert.toInt(byteTransform.TransInt16(content, 6))); +// agvData.setStatus(0); agvData.setStatus(Convert.toInt(byteTransform.TransInt16(content, 8))); //接收完成标志 // agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 10))); +// agvData.setFinish(0); agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 12))); +// agvData.setChargeFlag(0); agvData.setChargeFlag(Convert.toInt(byteTransform.TransInt16(content, 14))); +// agvData.setWorkPhase(0); agvData.setWorkPhase(Convert.toInt(byteTransform.TransInt16(content, 16))); +// agvData.setAllowSend(0); agvData.setAllowSend(Convert.toInt(byteTransform.TransInt16(content, 18))); +// agvData.setSsjRequest(0); agvData.setSsjRequest(Convert.toInt(byteTransform.TransInt16(content, 20))); +// agvData.setSpare2("0"); agvData.setSpare2(String.valueOf(Convert.toInt(byteTransform.TransInt16(content, 22)))); +// agvData.setChangeLayer(0); agvData.setChangeLayer(Convert.toInt(byteTransform.TransInt16(content, 24)));//换层标志 } @@ -108,12 +121,16 @@ public class PlcSrgvRead implements Runnable { private void setValueByByte2(byte[] content, DeviceSrgv agvData) { byteTransform.setDataFormat(DataFormat.CDAB); // TODO 注意双字反转 +// agvData.setTaskNo(0); agvData.setTaskNo(byteTransform.TransInt32(content, 0)); //log.info("=====小车{}读取到SRGV任务号:{}=======",agvData.getDeviceId(), agvData.getTaskNo()); +// agvData.setSrcSite("000000"); agvData.setSrcSite(String.format("%06d", byteTransform.TransInt32(content, 4))); //log.info("=====小车{}读取到SRGV源站点:{}=======",agvData.getDeviceId(), agvData.getSrcSite()); +// agvData.setTarSite("000000"); agvData.setTarSite(String.format("%06d", byteTransform.TransInt32(content, 8))); //log.info("=====小车{}读取到SRGV目标站点:{}=======",agvData.getDeviceId(), agvData.getTarSite()); +// agvData.setCurrSite("000000"); agvData.setCurrSite(String.format("%06d", byteTransform.TransInt32(content, 12))); //log.info("=====小车{}读取到SRGV当前站点:{}=======",agvData.getDeviceId(), agvData.getCurrSite()); @@ -124,6 +141,7 @@ public class PlcSrgvRead implements Runnable { public void ConnectServer() { modbusTcpNet = new ModbusTcpNet();//创建一个Modbus对象 + log.info("创建连接对象,IP{}", this.ip); try { modbusTcpNet.setIpAddress(this.ip); modbusTcpNet.setPort(this.port); 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 17eb3e7..458e775 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 @@ -57,12 +57,15 @@ public class PlcSsjRead implements Runnable { DeviceSsj ssjDevice = deviceSsjMap.get(ssjCode); switch (ssjDevice.getType()) { case "1": + // 地堆输送机 readPlcRoadWaySsj(ssjDevice); break; - case "2": + case "3": + // 链条输送机 readPlcInOutSsj(ssjDevice); break; - case "3": + case "2": + // 线体到位输送机 readPlcOtherSsj(ssjDevice); break; } @@ -89,13 +92,13 @@ public class PlcSsjRead implements Runnable { * @param ssjDevice */ private void readPlcOtherSsj(DeviceSsj ssjDevice) { - OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("20")); + OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("10")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); - ssjDevice.setKx(ParseUtil.optInt(0, ddsx1)); - ssjDevice.setDw(ParseUtil.optInt(2, ddsx1)); - ssjDevice.setTaskNo(ParseUtil.optDInt(6, ddsx1)); + ssjDevice.setKx(ParseUtil.optInt(4, ddsx1)); + ssjDevice.setDw(ParseUtil.optInt(6, ddsx1)); + ssjDevice.setTaskNo(ParseUtil.optDInt(0, ddsx1)); } } @@ -105,14 +108,16 @@ public class PlcSsjRead implements Runnable { * @param ssjDevice */ private void readPlcRoadWaySsj(DeviceSsj ssjDevice) { - OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("20")); + OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("10")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); - ssjDevice.setKx(ParseUtil.optInt(0, ddsx1)); - ssjDevice.setDw(ParseUtil.optInt(2, ddsx1)); - ssjDevice.setRkqq(ParseUtil.optInt(4, ddsx1)); - ssjDevice.setTaskNo(ParseUtil.optDInt(6, ddsx1)); +// ssjDevice.setRkqq(ParseUtil.optInt(0, ddsx1)); + ssjDevice.setTaskNo(ParseUtil.optDInt(0, ddsx1)); + ssjDevice.setKx(ParseUtil.optInt(4, ddsx1)); + ssjDevice.setDw(ParseUtil.optInt(6, ddsx1)); +// ssjDevice.setTrayCode(ParseUtil.optString(14, 12, ddsx1)); +// ssjDevice.setModel(ParseUtil.optInt(28, ddsx1)); } } @@ -122,15 +127,17 @@ public class PlcSsjRead implements Runnable { * @param ssjDevice */ private void readPlcInOutSsj(DeviceSsj ssjDevice) { - OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("20")); + OperateResultExOne read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("22")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); - ssjDevice.setKx(ParseUtil.optInt(0, ddsx1)); - ssjDevice.setDw(ParseUtil.optInt(2, ddsx1)); - ssjDevice.setException(ParseUtil.optInt(4, ddsx1)); - ssjDevice.setAllowPut(ParseUtil.optInt(6, ddsx1)); - ssjDevice.setTaskNo(ParseUtil.optDInt(8, ddsx1)); + ssjDevice.setTaskNo(ParseUtil.optDInt(2, ddsx1)); + ssjDevice.setRkqq(ParseUtil.optInt(0, ddsx1)); + + ssjDevice.setTrayCode(ParseUtil.optString(8, 8, ddsx1)); +// ssjDevice.setKx(ParseUtil.optInt(4, ddsx1)); +// ssjDevice.setDw(ParseUtil.optInt(6, ddsx1)); + } } @@ -150,8 +157,8 @@ public class PlcSsjRead implements Runnable { ssjDevice.setTraySize(ParseUtil.optInt(6, ddsx1)); ssjDevice.setTaskNo(ParseUtil.optDInt(8, ddsx1)); - String trayCodeReadAddress=""; - switch (ssjDevice.getDeviceCode()){ + String trayCodeReadAddress = ""; + switch (ssjDevice.getDeviceCode()) { case "G1005": trayCodeReadAddress = "DB502.0"; break; @@ -163,7 +170,7 @@ public class PlcSsjRead implements Runnable { break; } OperateResultExOne trayCodeRead = readWriteNet.Read(trayCodeReadAddress, Short.parseShort("220")); - if (trayCodeRead.IsSuccess){ + if (trayCodeRead.IsSuccess) { byte[] content = trayCodeRead.Content; //去除bytes中 ssjDevice.setTrayCode(ParseUtil.filterAndConvert(trayCodeRead.Content)); @@ -172,7 +179,6 @@ public class PlcSsjRead implements Runnable { } - void ConnectServer() { siemensS7Net = new SiemensS7Net(SiemensPLCS.S1500); try { @@ -218,18 +224,16 @@ public class PlcSsjRead implements Runnable { setIsConnect(false); } - public static int writeToSsj(String address, String taskNo, int qx , int completed) { + public static int writeToSsj(String address, String taskNo, int qx, int completed) { int jym = Tools.getJYM(Integer.parseInt(taskNo), qx, completed); - SendData taskNoSendData = new SendData(Tools.INT, taskNo); + SendData taskNoSendData = new SendData(Tools.DINT, taskNo); SendData qxSendData = new SendData(Tools.INT, qx); SendData completedSendData = new SendData(Tools.INT, completed); - SendData jymSendData = new SendData(Tools.INT, jym); + SendData jymSendData = new SendData(Tools.DINT, jym); byte[] bytes = Tools.sendData(taskNoSendData, qxSendData, completedSendData, jymSendData); return PlcSsjRead.WriteToSSJ(address, bytes); } - - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java index 3ebfd2f..b0cd5e1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/tsj/PlcTsjRead.java @@ -68,21 +68,21 @@ public class PlcTsjRead implements Runnable { } private void plcRead(DeviceTsj tsjDevice) { - OperateResultExOne read2 = readWriteNet.Read(tsjDevice.getPlcDbReadAddress(), Short.parseShort("48")); + OperateResultExOne read2 = readWriteNet.Read(tsjDevice.getPlcDbReadAddress(), Short.parseShort("22")); String ddsx1 = "0"; if (read2.IsSuccess) { ddsx1 = SoftBasic.ByteToHexString(read2.Content); - tsjDevice.setCzfs(ParseUtil.optInt(2, ddsx1)); - tsjDevice.setSbzt(ParseUtil.optInt(4, ddsx1)); - tsjDevice.setRwh(Convert.toLong(ParseUtil.optDInt(6, ddsx1))); - tsjDevice.setDqcs(ParseUtil.optInt(10, ddsx1)); - tsjDevice.setJdbz(ParseUtil.optInt(12, ddsx1)); - tsjDevice.setYph(ParseUtil.optInt(14, ddsx1)); - tsjDevice.setYch(ParseUtil.optInt(16, ddsx1)); - tsjDevice.setMbph(ParseUtil.optInt(18, ddsx1)); - tsjDevice.setMbch(ParseUtil.optInt(20, ddsx1)); - tsjDevice.setYxxf(ParseUtil.optInt(22, ddsx1)); - tsjDevice.setXtxh(ParseUtil.optInt(24, ddsx1)); + tsjDevice.setCzfs(ParseUtil.optInt(8, ddsx1)); + tsjDevice.setSbzt(ParseUtil.optInt(8, ddsx1)); + tsjDevice.setRwh((long) ParseUtil.optDInt(0, ddsx1)); + tsjDevice.setDqcs(ParseUtil.optInt(14, ddsx1)); + tsjDevice.setJdbz(ParseUtil.optInt(4, ddsx1)); + tsjDevice.setHczt(ParseUtil.optInt(6, ddsx1)); +// tsjDevice.setYch(ParseUtil.optInt(16, ddsx1)); +// tsjDevice.setMbph(ParseUtil.optInt(18, ddsx1)); +// tsjDevice.setMbch(ParseUtil.optInt(20, ddsx1)); + tsjDevice.setYxxf(ParseUtil.optInt(16, ddsx1)); + tsjDevice.setSpare1(ParseUtil.optInt(10, ddsx1)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java index afb61b8..a9b218c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/srgv/BaseSRgvThread.java @@ -5,20 +5,27 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; +import com.ruoyi.api.domain.RequestLog; +import com.ruoyi.api.service.IApiService; import com.ruoyi.bas.port.service.IWcsPortService; import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap; import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService; import com.ruoyi.bas.srgvmap.service.RoadCacheService; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.domain.CustomThread; import com.ruoyi.common.domain.SendData2; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.device.srgv.domain.DeviceSrgv; import com.ruoyi.job.charg.domain.SrgvChargingJob; import com.ruoyi.job.charg.service.ISrgvChargingJobService; +import com.ruoyi.job.domain.JobCallBack; import com.ruoyi.job.domain.MydoJob; import com.ruoyi.job.service.IMydoJobService; +import com.ruoyi.job.service.impl.JobCallBackServiceImpl; import com.ruoyi.queue.srgv.domain.WcsSrgvQueue; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService; import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService; +import com.ruoyi.schedule.ScheduleThread; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder; import lombok.extern.slf4j.Slf4j; @@ -50,7 +57,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { public IWcsSrgvMapService wcsSrgvMapService; public RoadCacheService roadCacheService; - + private IApiService apiService; + private JobCallBackServiceImpl jobCallBackService; public void init() { sRgvCodeList = new HashMap<>(); @@ -67,6 +75,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { mydoJobService = SpringUtils.getBean(IMydoJobService.class); wcsSrgvMapService = SpringUtils.getBean(IWcsSrgvMapService.class); roadCacheService = SpringUtils.getBean(RoadCacheService.class); + apiService = SpringUtils.getBean(IApiService.class); + jobCallBackService = SpringUtils.getBean(JobCallBackServiceImpl.class); } @Override @@ -83,15 +93,15 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { if (ObjUtil.isNotNull(PlcSrgvRead.deviceSrgvMap.get(code))) { DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(code); - + // 小车任务下发 完成 sRgvTask(deviceSrgv); - + // 入库队列 createCarInQueue(); - + // 出库队列 createCarOutQueue(); - + // 充电任务 inCharging(deviceSrgv); - + // 充电完成调离 outCharging(deviceSrgv); } else { @@ -202,7 +212,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { if (wcsSrgvQueue1 == null) { ConcurrentHashMap deviceSrgvMap = PlcSrgvRead.deviceSrgvMap; List deviceSrgvList = deviceSrgvMap.values().stream() - .filter(deviceSrgv -> deviceSrgv.getWorkMode() == 4) + .filter(deviceSrgv -> deviceSrgv.getWorkMode() == 5) .sorted((d1, d2) -> Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - d2.getCurrFloor()) - Math.abs(Integer.parseInt(mydoJob1.getTheFloor()) - d1.getCurrFloor())) .collect(Collectors.toList()); @@ -233,15 +243,16 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); //取货地址 String cargoPickSite = wcsSrgvMaps.get(0).getSiteId(); - - if (deviceSrgv.getCurrFloor().equals(wcsSrgvMaps.get(0).getTheLayer())) { + Integer currFloor = deviceSrgv.getCurrFloor(); + Integer theLayer = wcsSrgvMaps.get(0).getPlcLayer(); + if (Objects.equals(deviceSrgv.getCurrFloor(), wcsSrgvMaps.get(0).getPlcLayer())) { //终点是巷道口到位输送线 endSite = cargoPickSite; - if(cargoPickSite.equals(deviceSrgv.getCurrSite())){ - issued="1"; - executionStatus="3"; + if (cargoPickSite.equals(deviceSrgv.getCurrSite())) { + issued = "1"; + executionStatus = "3"; } - } else{ + } else { //终点是提升机 endSite = "tsj"; } @@ -251,20 +262,20 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { String cargoPlaceSite = wcsSrgvMaps1.get(0).getSiteId(); List sameSiteDevices = deviceSrgvMap.values().stream() - .filter(d -> d.getWorkMode() == 4 + .filter(d -> d.getWorkMode() == 5 && d.getStatus() == 1 && d.getCurrSite().equals(cargoPlaceSite)) .collect(Collectors.toList()); - if(!sameSiteDevices.isEmpty() &&!Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){ + if (!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())) { WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap(); wcsSrgvMap3.setRemark("cache"); List wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3); - for(WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3){ + for (WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3) { //deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象 - if(deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) { + if (deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) { //生成小车到缓存点队列 WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString()); - WcsSrgvQueue wcsSrgvQueue=new WcsSrgvQueue(); + WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMap4.getSiteId()); List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueue); if (wcsSrgvQueue5 == null && wcsSrgvQueues.isEmpty()) { @@ -294,7 +305,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } - //生成小车取货队列 + //生成小车取货队列 WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); wcsSrgvQueue.setGuid(UUID.randomUUID().toString()); wcsSrgvQueue.setTaskNo(mydoJob1.getTaskNo()); @@ -343,7 +354,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { ConcurrentHashMap deviceSrgvMap = PlcSrgvRead.deviceSrgvMap; List deviceSrgvList = deviceSrgvMap.values().stream() - .filter(deviceSrgv -> deviceSrgv.getWorkMode() == 4) + .filter(deviceSrgv -> deviceSrgv.getWorkMode() == 5) + .filter(deviceSrgv -> deviceSrgv.getCurrFloor() > 0) .sorted((d1, d2) -> d2.getCurrFloor().compareTo(d1.getCurrFloor())) .collect(Collectors.toList()); if (!deviceSrgvList.isEmpty()) { @@ -373,7 +385,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); wcsSrgvMap.setRemark(mydoJob1.getEntranceId()); if (StrUtil.isEmpty(wcsSrgvMap.getRemark())) { - log.error("入库任务号:{} 入库入口ID为空" , mydoJob1.getTaskNo()); + log.error("入库任务号:{} 入库入口ID为空", mydoJob1.getTaskNo()); return; } List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); @@ -394,17 +406,17 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { //筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象,并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象 List sameSiteDevices = deviceSrgvMap.values().stream() - .filter(d -> d.getWorkMode() == 4 + .filter(d -> d.getWorkMode() == 5 && d.getStatus() == 1 && d.getCurrSite().equals(cargoPickSite)) .collect(Collectors.toList()); - if(!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())){ + if (!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())) { WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap(); wcsSrgvMap3.setRemark("cache"); List wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3); - for(WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3){ + for (WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3) { //deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象 - if(deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) { + if (deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) { WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString()); WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMap4.getSiteId()); @@ -438,8 +450,6 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } - - //生成小车取货队列 WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue(); wcsSrgvQueue.setGuid(UUID.randomUUID().toString()); @@ -484,7 +494,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } for (WcsSrgvQueue wcsSrgvQueue : wcsSrgvQueues) { String agvId = wcsSrgvQueue.getAgvId(); - if (agvId.equals(Convert.toStr(deviceSrgv.getDeviceId())) && deviceSrgv.getWorkMode() == 4 && deviceSrgv.getAllowSend() == 1) { + if (agvId.equals(Convert.toStr(deviceSrgv.getDeviceId())) && deviceSrgv.getWorkMode() == 5 && deviceSrgv.getAllowSend() == 1) { String startSite = wcsSrgvQueue.getStartSite(); String endSite = wcsSrgvQueue.getEndSite(); String currSite = deviceSrgv.getCurrSite(); @@ -511,7 +521,14 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { Integer floor = deviceSrgv.getCurrFloor(); //获取当前地图 Map arrByRoadSite = roadCacheService.getArrByRoadSite(floor); - + if ((wcsSrgvQueue.getDefault02().equals("1") || wcsSrgvQueue.getDefault02().equals("2") || wcsSrgvQueue.getDefault02().equals("4")) && wcsSrgvQueue.getTheFloor().equals("1") && !wcsSrgvQueue.getEndSite().equals("tsj")) { + //如果是1层 锁定提升机站点 + if (CollUtil.isNotEmpty(arrByRoadSite) && arrByRoadSite.values().iterator().next().getZ() == 1) { + if (arrByRoadSite.containsKey("080501")) { + arrByRoadSite.get("080501").setValue(0); + } + } + } //处理地图 int[][] emptyMap = roadCacheService.handleMap(arrByRoadSite, deviceSrgv); @@ -521,8 +538,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { //判断是否能规划出最短路径 if (shortestPath == null || shortestPath.isEmpty()) { //判断是否是1层 空车取货 或者 满车放货 - if (floor==1){ - if ("2".equals(wcsSrgvQueue.getDefault02()) && "tsj".equals(wcsSrgvQueue.getStartSite()) && wcsSrgvQueue.getEndSite().equals(wcsSrgvQueue.getCargoPlaceSite())){ + if (floor == 1) { + + if ("2".equals(wcsSrgvQueue.getDefault02()) && "tsj".equals(wcsSrgvQueue.getStartSite()) && wcsSrgvQueue.getEndSite().equals(wcsSrgvQueue.getCargoPlaceSite())) { //1层满车放货 //修改终点到出库缓存点 WcsSrgvMap wcsSrgvMapParam = new WcsSrgvMap(); @@ -534,12 +552,12 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { currentSRgvSite.add(PlcSrgvRead.deviceSrgvMap.get(srgvCode).getCurrSite()); } cacheSite.removeAll(currentSRgvSite); - if (CollUtil.isNotEmpty(cacheSite)){ + if (CollUtil.isNotEmpty(cacheSite)) { for (String cache : cacheSite) { WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue(); wcsSrgvQueueParam.setEndSite(cache); List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam); - if (CollUtil.isEmpty(wcsSrgvQueues)){ + if (CollUtil.isEmpty(wcsSrgvQueues)) { wcsSrgvQueue.setEndSite(cacheSite.get(0)); wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue); break; @@ -548,7 +566,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } } - if ("4".equals(wcsSrgvQueue.getDefault02()) && "tsj".equals(wcsSrgvQueue.getStartSite()) && wcsSrgvQueue.getEndSite().equals(wcsSrgvQueue.getCargoPickSite())){ + if ("4".equals(wcsSrgvQueue.getDefault02()) && "tsj".equals(wcsSrgvQueue.getStartSite()) && wcsSrgvQueue.getEndSite().equals(wcsSrgvQueue.getCargoPickSite())) { //1层空车取货 //修改终点到避让点 WcsSrgvMap wcsSrgvMapParam = new WcsSrgvMap(); @@ -560,21 +578,19 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { currentSRgvSite.add(PlcSrgvRead.deviceSrgvMap.get(srgvCode).getCurrSite()); } cacheSite.removeAll(currentSRgvSite); - if (CollUtil.isNotEmpty(cacheSite)){ + if (CollUtil.isNotEmpty(cacheSite)) { for (String cache : cacheSite) { WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue(); wcsSrgvQueueParam.setEndSite(cache); List wcsSrgvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueParam); - if (CollUtil.isEmpty(wcsSrgvQueues)){ + if (CollUtil.isEmpty(wcsSrgvQueues)) { wcsSrgvQueue.setEndSite(cacheSite.get(0)); wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue); break; } } - } } - } return false; } @@ -617,17 +633,22 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } } } - + if (("tsj").equals(endSite)) { + endSite = "09050" + wcsSrgvQueue.getTheFloor(); + } +// if (("tsj").equals(startSite)) { +// endSite = "09050" + wcsSrgvQueue.getTheFloor(); +// } List sendDataList = new ArrayList<>(); if (!trun.isEmpty()) { SendData2 path = new SendData2(); - path.setAddress("4000");//地址 + path.setAddress("4004");//地址 path.setData(startSite + "," + endSite + "," + turnBuilder); path.setType(2); sendDataList.add(path); } else { SendData2 path = new SendData2(); - path.setAddress("4000");//地址 + path.setAddress("4004");//地址 path.setData(startSite + "," + endSite); path.setType(2); sendDataList.add(path); @@ -635,33 +656,40 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { //任务号、原、目标数据转换 - String siteId = wcsSrgvQueue.getTaskNo() + "1";//+ "," + startSite + "," + endSite; + String siteId = wcsSrgvQueue.getTaskNo();//+ "," + startSite + "," + endSite; SendData2 site = new SendData2(); - site.setAddress("4400"); + site.setAddress("4000"); site.setData(siteId); site.setType(2); sendDataList.add(site); //任务类型转换 SendData2 taskType = new SendData2(); - taskType.setAddress("2200"); - taskType.setData(wcsSrgvQueue.getTaskType()); + taskType.setAddress("4002"); + taskType.setData(wcsSrgvQueue.getDefault02()); taskType.setType(1); sendDataList.add(taskType); //下发标志转换 SendData2 flag = new SendData2(); - flag.setAddress("2202"); + flag.setAddress("4021"); flag.setData("1"); flag.setType(1); sendDataList.add(flag); //下发数据 - boolean b = true;// sendCarTask(sendDataList, deviceSrgv); + boolean b = sendCarTask(sendDataList, deviceSrgv); if (b) { wcsSrgvQueue.setPathInfo(pathBuilder.toString()); wcsSrgvQueue.setTrunPath(turnBuilder.toString()); + wcsSrgvQueue.setIssued("1"); + wcsSrgvQueue.setExecutionStatus("3"); wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue); + MydoJob mydoJob = new MydoJob(); + mydoJob.setTaskNo(wcsSrgvQueue.getTaskNo()); + mydoJob.setExecutionPhase("3"); + mydoJob.setStatus("3"); + mydoJobService.updateMydoJob(mydoJob); return true; } else { log.error("小车下发失败 taskNo:{}", wcsSrgvQueue.getTaskNo()); @@ -698,7 +726,28 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { private boolean sendCarTask(List sendDataList, DeviceSrgv deviceSrgv) { boolean b = true; - + ScheduleThread scheduleThread = SpringUtils.getBean(ScheduleThread.class); + CustomThread ct = null; + Integer deviceId = deviceSrgv.getDeviceId(); + if (deviceId != null) { + switch (deviceId) { + case 1: + ct = scheduleThread.plcSrgvReadCustomThread1; + break; + case 2: + ct = scheduleThread.plcSrgvReadCustomThread2; + break; + case 3: + ct = scheduleThread.plcSrgvReadCustomThread3; + break; + default: + break; + } + } + PlcSrgvRead plcReader = ct != null ? (PlcSrgvRead) ct.getRunnable() : null; + if (plcReader == null) { + return false; + } for (SendData2 sendData : sendDataList) { String address = sendData.getAddress(); String data = sendData.getData();// @@ -713,7 +762,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { .map(String::trim) .mapToInt(Integer::parseInt) .toArray(); - boolean write = PlcSrgvRead.Write(address, intData); + boolean write = plcReader.Write(address, intData); if (!write) { b = false; @@ -735,7 +784,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { } } - boolean write = PlcSrgvRead.Write(address, shortData); + boolean write = plcReader.Write(address, shortData); if (!write) { b = false; @@ -757,7 +806,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { */ private void completeCarTask(DeviceSrgv deviceSrgv) { //联机自动 - if (deviceSrgv.getWorkMode() == 4) { + if (deviceSrgv.getWorkMode() == 5) { if (deviceSrgv.getStatus() == 1) { WcsSrgvQueue param = new WcsSrgvQueue(); param.setAgvId(Convert.toStr(deviceSrgv.getDeviceId())); @@ -767,14 +816,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { List wcsSagvQueues = wcsSagvQueueMapper.selectWcsSrgvQueueList(param);//查询到达目标的 if (CollUtil.isNotEmpty(wcsSagvQueues)) { WcsSrgvQueue wcsSrgvQueue = wcsSagvQueues.get(0); - - /* - * 1、不处理终点是提升机站点的四向车 - * 2、处理终点不是提升机站点的 - * */ - finishTaskByQueue(deviceSrgv.getCurrSite(), wcsSrgvQueue); - } } } @@ -790,47 +832,43 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { private void finishTaskByQueue(String currSite, WcsSrgvQueue wcsSrgvQueue) { - //当前在终点 + // 如果当前在终点 if (Objects.equals(currSite, wcsSrgvQueue.getEndSite())) { String taskType = wcsSrgvQueue.getTaskType(); String cargoPickSite = wcsSrgvQueue.getCargoPickSite(); String cargoPlaceSite = wcsSrgvQueue.getCargoPlaceSite(); WcsSrgvMap wcsSrgvMap = new WcsSrgvMap(); + wcsSrgvMap.setRemark("outCache"); List wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap); - - if(wcsSrgvMaps.stream().anyMatch(wcsSrgvMap1 -> wcsSrgvMap1.getSiteId().equals(currSite))){ + //当前路径地图map中如果存在小车的站点,返回true + if (wcsSrgvMaps.stream().anyMatch(wcsSrgvMap1 -> wcsSrgvMap1.getSiteId().equals(currSite))) { //生成小车从避让点到放货/取货位置,如果是空车就到取货位置,如果是满车就到放货位置 - wcsSrgvQueue.setExecutionStatus("4"); - wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); - wcsSrgvQueue.setIssued("0"); - wcsSrgvQueue.setExecutionStatus("1"); - wcsSrgvQueue.setStartSite(currSite); - if("1".equals(taskType)){ - wcsSrgvQueue.setEndSite(cargoPickSite); - }else if("2".equals(taskType)){ - wcsSrgvQueue.setEndSite(cargoPlaceSite); - } - wcsSrgvQueue.setTheFloor("1"); - wcsSrgvQueue.setDefault07("1"); - wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue); - return; - +// wcsSrgvQueue.setExecutionStatus("4"); +// wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); +// wcsSrgvQueue.setIssued("0"); +// wcsSrgvQueue.setExecutionStatus("1"); +// wcsSrgvQueue.setStartSite(currSite); +// if ("1".equals(taskType)) { +// wcsSrgvQueue.setEndSite(cargoPickSite); +// } else if ("2".equals(taskType)) { +// wcsSrgvQueue.setEndSite(cargoPlaceSite); +// } +// wcsSrgvQueue.setTheFloor("1"); +// wcsSrgvQueue.setDefault07("1"); +// wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue); +// return; } - - - //空车现在位置是取货位置(移库取货,入库取货,出库取货),满车现在是放货位置 + //空车任务 且当前车的位置和取货位置相同 if ("1".equals(taskType) && cargoPickSite.equals(currSite)) { - //修改队列起终点,下发类型,重新下发。怎么区分重新下发的类型是移库还是入库,还有可能是出库取货--》判断取货位置是否为入库点 - //判断放货位置是否同一层,修改队列原层目标层,起终点 - //查询放货位置层数 WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite); WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite); String endSite = ""; String xfType = ""; - + // 取货点地图和放货点地图不为空 if (wcsSrgvMapq != null && wcsSrgvMapf != null) { + if (Objects.equals(wcsSrgvMapq.getTheLayer(), wcsSrgvMapf.getTheLayer())) { //如果是同层,终点为放货点 endSite = cargoPlaceSite; @@ -848,6 +886,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { xfType = "7";//移库 } } + // 更新目标点,修改执行队列 wcsSrgvQueue.setExecutionStatus("4"); wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo()); wcsSrgvQueue.setStartSite(currSite); @@ -857,17 +896,36 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface { wcsSrgvQueue.setDefault07(wcsSrgvMapf.getTheLayer().toString()); wcsSrgvQueue.setIssued("0"); wcsSrgvQueue.setExecutionStatus("1"); + wcsSrgvQueue.setTaskType("2"); wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue); } - + // 入库任务 原地址和目标地址不同,且小车当前地址和放货地址相同处理入库任务执行队列 } else if ("2".equals(taskType) && cargoPlaceSite.equals(currSite)) { - //判断对列的任务类型 + //判断对列的任务类型 当前只限于处理出库任务执行队列 switch (wcsSrgvQueue.getDefault02()) { case "1"://入库,插库存, - //请求wms生成库存 - + //请求wms生成库存 插入回传表 + MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(wcsSrgvQueue.getTaskNo())); + if (mydoJob != null) { + JobCallBack jobCallBack = new JobCallBack(); + jobCallBack.setType(wcsSrgvQueue.getDefault02()); + jobCallBack.setMydojobId(mydoJob.getJobId()); + jobCallBack.setStatus("0"); + jobCallBack.setTaskNo(Convert.toLong(mydoJob.getTaskNo())); + jobCallBack.setCreateTime(new Date()); + jobCallBackService.insertJobCallBack(jobCallBack); + mydoJobService.deleteMydoJobByJobId(mydoJob.getJobId()); + } break; + + case "2": + MydoJob mydoJobOut = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(wcsSrgvQueue.getTaskNo())); + if (mydoJobOut != null) { + mydoJobService.deleteMydoJobByJobId(mydoJobOut.getJobId()); + } + + case "7"://移库,变动库存 break; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java index 9851315..653d895 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/SsjThread.java @@ -124,7 +124,7 @@ public class SsjThread implements Runnable { } void inDispatch1(DeviceSsj deviceSsj) { - if (deviceSsj.getDw() == 1 && StrUtil.isNotBlank(deviceSsj.getTrayCode())) { + if (deviceSsj.getRkqq() == 1 && StrUtil.isNotBlank(deviceSsj.getTrayCode())) { //todo 查是否为入库模式,不是退回,是否超重 HashMap map = new HashMap<>(); map.put("trayCode", deviceSsj.getTrayCode()); @@ -136,23 +136,29 @@ public class SsjThread implements Runnable { mydoJob.setStatus("1"); mydoJob.setExecutionPhase("1"); mydoJob.setCreateTime(new Date()); - if("GS1002".equals(deviceSsj.getDeviceCode())) { + if ("GS1002".equals(deviceSsj.getDeviceCode())) { mydoJob.setEntranceId("L1004"); - }else{ + } else { mydoJob.setEntranceId("L1005"); } - + // 插入入库作业,并且根据作业直接下发 ,下发完毕直接修改执行阶段 + MydoJob mydoJob1 = new MydoJob(); + mydoJob1.setTrayCode(mydoJob.getTaskNo()); + List mydoJobs = mydoJobService.selectMydoJobList(mydoJob1); + if (mydoJobs.size() > 0) { + return; + } mydoJobService.insertMydoJob(mydoJob); int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1); if (i == 1) { mydoJob.setStatus("3"); mydoJobService.updateMydoJob(mydoJob); - log.info(deviceSsj.getDeviceCode()+"输送机下发任务号成功:{}", mydoJob.getTaskNo()); + log.info(deviceSsj.getDeviceCode() + "输送机下发任务号成功:{}", mydoJob.getTaskNo()); } } else { - int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), "0", 2,1); + int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), "0", 2, 1); if (i == 1) { - log.info(deviceSsj.getDeviceCode()+"未查到该托盘码作业,下发退回,去向2"); + log.info(deviceSsj.getDeviceCode() + "未查到该托盘码作业,下发退回,去向2"); } } @@ -162,13 +168,13 @@ public class SsjThread implements Runnable { } - void inDispatch2(DeviceSsj deviceSsj){ - if(deviceSsj.getDw() == 1 && deviceSsj.getTaskNo()>1000){ + void inDispatch2(DeviceSsj deviceSsj) { + if (deviceSsj.getDw() == 1 && deviceSsj.getTaskNo() > 1000) { MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo((long) deviceSsj.getTaskNo()); - if(mydoJob!=null){ + if (mydoJob != null) { mydoJob.setExecutionPhase("2"); - mydoJobService.updateMydoJob(mydoJob); + mydoJobService.updateMydoJob(mydoJob); } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java index 454bb08..f4090db 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/tsj/TsjThread.java @@ -23,6 +23,7 @@ import com.ruoyi.queue.tsj.domain.TsjDeviceExecutionQueueFinish; import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueFinishService; import com.ruoyi.queue.tsj.service.ITsjDeviceExecutionQueueService; import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead; +import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import com.ruoyi.schedule.plcRead.tsj.PlcTsjRead; import com.ruoyi.schedule.plcRead.util.Tools; import lombok.extern.slf4j.Slf4j; @@ -88,8 +89,13 @@ public class TsjThread implements Runnable { * * */ if (czfs == 2 && sbzt == 2 && jdbz == 4 && rwh > 999) { - createSRgvQueue(rwh); + createSRgvQueue(rwh, tsj); } + // 提升机取货中 说明对齐当前要取货层 开始给小车下发 + if (czfs == 2 && sbzt == 2 && jdbz == 2 && rwh > 999) { + createSRgvQueueTsjQd(rwh, tsj); + } + /* * 2、任务完成 * @@ -111,9 +117,39 @@ public class TsjThread implements Runnable { } - private void createSRgvQueue(Long rwh) { + // 下发提升机启动 + private void createSRgvQueueTsjQd(Long rwh, DeviceTsj tsj) { + for (String sRgv : PlcSrgvRead.deviceSrgvMap.keySet()) { + DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(sRgv); + if (deviceSrgv.getCurrSite().equals("09050" + deviceSrgv.getCurrFloor()) && deviceSrgv.getWorkMode() == 5 && deviceSrgv.getStatus() == 2 && tsj.getHczt() == 1) { + + SendData rwlxSendData = new SendData(Tools.INT, 1); + DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(Convert.toStr(1)); + byte[] bytes = Tools.sendData(rwlxSendData); + int i = PlcTsjRead.WriteToTSJ("DB602.56", bytes); + } + } + + } + // 下发提升机完成 + private void createSRgvQueueTsjFinish(Long rwh, DeviceTsj tsj) { + for (String sRgv : PlcSrgvRead.deviceSrgvMap.keySet()) { + DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(sRgv); + if (deviceSrgv.getCurrSite().equals("09050" + deviceSrgv.getCurrFloor()) && deviceSrgv.getWorkMode() == 5 && deviceSrgv.getStatus() == 2 && tsj.getHczt() == 1) { + + SendData rwlxSendData = new SendData(Tools.INT, 1); + DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(Convert.toStr(1)); + byte[] bytes = Tools.sendData(rwlxSendData); + int i = PlcTsjRead.WriteToTSJ("DB602.58", bytes); + } + } + + } + + private void createSRgvQueue(Long rwh, DeviceTsj tsj) { WcsSrgvQueue sRgvQueueParam = new WcsSrgvQueue(); sRgvQueueParam.setTaskNo(Convert.toStr(rwh)); + sRgvQueueParam.setEndSite(Convert.toStr("tsj")); List wcsSrgvQueues = wcsSrgvQueueService.selectWcsSrgvQueueList(sRgvQueueParam); if (CollUtil.isEmpty(wcsSrgvQueues)) { return; @@ -131,12 +167,14 @@ public class TsjThread implements Runnable { case "1": //入库 //满车 - startSite = "tsj"; +// startSite="tsj"; + startSite = "09050" + tsj.getDqcs(); endSite = wcsSrgvQueue.getCargoPlaceSite(); break; case "2": //出库 - startSite = "tsj"; +// startSite="tsj"; + startSite = "09050" + tsj.getDqcs(); endSite = wcsSrgvQueue.getCargoPlaceSite(); break; case "3": @@ -159,7 +197,7 @@ public class TsjThread implements Runnable { break; } - if (StrUtil.isNotEmpty(startSite) && StrUtil.isNotEmpty(endSite)){ + if (StrUtil.isNotEmpty(startSite) && StrUtil.isNotEmpty(endSite)) { wcsSrgvQueue.setStartSite(startSite); wcsSrgvQueue.setEndSite(endSite); @@ -174,7 +212,7 @@ public class TsjThread implements Runnable { private void createQueue(DeviceTsj tsj) { for (String sRgv : PlcSrgvRead.deviceSrgvMap.keySet()) { DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(sRgv); - if (deviceSrgv.getSsjRequest()==1 && deviceSrgv.getTaskNo()>0){ + if (deviceSrgv.getSpare2().equals("1") && deviceSrgv.getTaskNo() > 0) { //请求进入输送机 WcsSrgvQueue sRgvQueueParam = new WcsSrgvQueue(); sRgvQueueParam.setAgvId(Convert.toStr(deviceSrgv.getDeviceId())); @@ -182,29 +220,30 @@ public class TsjThread implements Runnable { List wcsSrgvQueues = wcsSrgvQueueService.selectWcsSrgvQueueList(sRgvQueueParam); if (CollUtil.isNotEmpty(wcsSrgvQueues)) { TsjDeviceExecutionQueue tsjDeviceExecutionQueueByRwh = tsjDeviceExecutionQueueService.selectTsjDeviceExecutionQueueByRwh(Convert.toLong(deviceSrgv.getTaskNo())); - if (tsjDeviceExecutionQueueByRwh == null){ + if (tsjDeviceExecutionQueueByRwh == null) { WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueues.get(0); String strFloor = wcsSrgvQueue.getTheFloor(); String tarFloor = wcsSrgvQueue.getDefault07(); - if (!Convert.toStr(tsj.getDqcs()).equals(strFloor)) { - //提升机层数和取车任务层数不一致 - //todo 判断目标楼层存在不存在其他小车 - TsjDeviceExecutionQueue tsjDeviceExecutionQueue = new TsjDeviceExecutionQueue(); - tsjDeviceExecutionQueue.setGuid(IdUtil.simpleUUID()); - tsjDeviceExecutionQueue.setDeviceId(tsj.getId()); - tsjDeviceExecutionQueue.setDeviceName(tsj.getName()); - tsjDeviceExecutionQueue.setTaskNo(Convert.toLong(deviceSrgv.getTaskNo())); - tsjDeviceExecutionQueue.setSrcRow("0"); - tsjDeviceExecutionQueue.setSrcLayer(strFloor); - tsjDeviceExecutionQueue.setTarRow("0"); - tsjDeviceExecutionQueue.setTarLayer(tarFloor); - tsjDeviceExecutionQueue.setSendType("1"); - tsjDeviceExecutionQueue.setCreateDate(DateUtil.formatDateTime(new Date())); - tsjDeviceExecutionQueue.setSpare1(Convert.toStr(deviceSrgv.getDeviceId())); - tsjDeviceExecutionQueue.setTaskType("1"); - tsjDeviceExecutionQueue.setRwlx("1"); - tsjDeviceExecutionQueueService.insertTsjDeviceExecutionQueue(tsjDeviceExecutionQueue); - } +// if (!Convert.toStr(tsj.getDqcs()).equals(strFloor)) { + //提升机层数和取车任务层数不一致 + //todo 判断目标楼层存在不存在其他小车 + TsjDeviceExecutionQueue tsjDeviceExecutionQueue = new TsjDeviceExecutionQueue(); + tsjDeviceExecutionQueue.setGuid(IdUtil.simpleUUID()); + tsjDeviceExecutionQueue.setDeviceId(tsj.getId()); + tsjDeviceExecutionQueue.setDeviceName(tsj.getName()); + tsjDeviceExecutionQueue.setTaskNo(Convert.toLong(deviceSrgv.getTaskNo())); + tsjDeviceExecutionQueue.setSrcRow("0"); + tsjDeviceExecutionQueue.setSrcLayer(strFloor); + tsjDeviceExecutionQueue.setTarRow("0"); + tsjDeviceExecutionQueue.setTarLayer(tarFloor); + tsjDeviceExecutionQueue.setSendType("1"); + tsjDeviceExecutionQueue.setCreateDate(DateUtil.formatDateTime(new Date())); + tsjDeviceExecutionQueue.setSpare1(Convert.toStr(deviceSrgv.getDeviceId())); + tsjDeviceExecutionQueue.setTaskType("1"); + tsjDeviceExecutionQueue.setSendFlag("0"); + tsjDeviceExecutionQueue.setRwlx("1"); + tsjDeviceExecutionQueueService.insertTsjDeviceExecutionQueue(tsjDeviceExecutionQueue); +// } } } @@ -213,32 +252,34 @@ public class TsjThread implements Runnable { } private void sendTsj() { - List tsjDeviceExecutionQueues = tsjDeviceExecutionQueueService.selectTsjDeviceExecutionQueueList(new TsjDeviceExecutionQueue()); + TsjDeviceExecutionQueue tsjDeviceExecutionQueue1 = new TsjDeviceExecutionQueue(); + tsjDeviceExecutionQueue1.setSendFlag("0"); + List tsjDeviceExecutionQueues = tsjDeviceExecutionQueueService.selectTsjDeviceExecutionQueueList(tsjDeviceExecutionQueue1); if (CollUtil.isNotEmpty(tsjDeviceExecutionQueues)) { TsjDeviceExecutionQueue tsjDeviceExecutionQueue = tsjDeviceExecutionQueues.get(0); - //提升机移动到小车楼层 需要判断目标楼层入库点位小车是否到位 - WcsPort param = new WcsPort(); - param.setPortType("1"); - param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); - param.setStatus("1"); - param.setSpare2("1"); - List wcsInPorts = wcsPortService.selectWcsPortList(param); - if (CollUtil.isEmpty(wcsInPorts)) { - log.info("提升机任务[{}]下发 目标楼层[{}]入库点位空闲 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); - return; - } - //提升机承载小车到目标楼层 需要判断目标楼层出库点位是否空闲 - WcsPort param1 = new WcsPort(); - param1.setPortType("1"); - param1.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); - param1.setStatus("0"); - param1.setSpare2("1"); - List wcsOutPorts = wcsPortService.selectWcsPortList(param1); - if (CollUtil.isEmpty(wcsOutPorts)) { - log.info("提升机任务[{}]下发 目标楼层[{}]出库点位占用 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); - return; - } +// //提升机移动到小车楼层 需要判断目标楼层入库点位小车是否到位 +// WcsPort param = new WcsPort(); +// param.setPortType("1"); +// param.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); +// param.setStatus("1"); +// param.setSpare2("1"); +// List wcsInPorts = wcsPortService.selectWcsPortList(param); +// if (CollUtil.isEmpty(wcsInPorts)) { +// log.info("提升机任务[{}]下发 目标楼层[{}]入库点位空闲 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); +// return; +// } +// //提升机承载小车到目标楼层 需要判断目标楼层出库点位是否空闲 +// WcsPort param1 = new WcsPort(); +// param1.setPortType("1"); +// param1.setPortRegion(tsjDeviceExecutionQueue.getTarLayer()); +// param1.setStatus("0"); +// param1.setSpare2("1"); +// List wcsOutPorts = wcsPortService.selectWcsPortList(param1); +// if (CollUtil.isEmpty(wcsOutPorts)) { +// log.info("提升机任务[{}]下发 目标楼层[{}]出库点位占用 无法下发提升机任务", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getTarLayer()); +// return; +// } writeToTsj(tsjDeviceExecutionQueues.get(0)); log.info("提升机任务下发 taskNo{} 任务类型:{}", tsjDeviceExecutionQueue.getTaskNo(), tsjDeviceExecutionQueue.getRwlx()); @@ -251,22 +292,58 @@ public class TsjThread implements Runnable { * @param tsjDeviceExecutionQueue */ private void writeToTsj(TsjDeviceExecutionQueue tsjDeviceExecutionQueue) { - SendData taskNoSendData = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTaskNo())); - SendData srcRow = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getSrcRow())); - SendData srcLayer = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getSrcLayer())); - SendData tarRow = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTarRow())); - SendData tarLayer = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTarLayer())); - SendData sendType = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getSendType())); +// SendData taskNoSendData = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTaskNo())); +// SendData rwlxSendData = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getRwlx())); +// SendData srcLayer = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getSrcLayer())); +// SendData tarLayer = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTarLayer())); +// SendData completedSendData = new SendData(Tools.INT, 1); +// int jym = Tools.getJYM(taskNoSendData.getNum2(), srcLayer.getNum2(), tarLayer.getNum2(), completedSendData.getNum2(), rwlxSendData.getNum2()); +// SendData jymSendData = new SendData(Tools.INT, jym); +// byte[] bytes = Tools.sendData(taskNoSendData, srcLayer, tarLayer, completedSendData, jymSendData); +// DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(Convert.toStr(tsjDeviceExecutionQueue.getDeviceId())); +// if (ObjUtil.isNotNull(deviceTsj)) { +// PlcTsjRead.WriteToTSJ(deviceTsj.getPlcDbWriteAddress(), bytes); +// } + + + int jym = Tools.getJYM(Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getTaskNo())), Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getRwlx())), Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getSrcLayer())), Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getTarLayer())), 1); + SendData taskNoSendData = new SendData(Tools.DINT, Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getTaskNo()))); + SendData rwlxSendData = new SendData(Tools.INT, Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getRwlx()))); + SendData srcLayer = new SendData(Tools.INT, Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getSrcLayer()))); + SendData tarLayer = new SendData(Tools.INT, Integer.parseInt(String.valueOf(tsjDeviceExecutionQueue.getTarLayer()))); + SendData completedSendData = new SendData(Tools.INT, 1); - int jym = Tools.getJYM(taskNoSendData.getNum2(), srcRow.getNum2(), srcLayer.getNum2(), tarRow.getNum2(), tarLayer.getNum2(), sendType.getNum2(), completedSendData.getNum2()); SendData jymSendData = new SendData(Tools.INT, jym); - byte[] bytes = Tools.sendData(taskNoSendData, srcRow, srcLayer, tarRow, tarLayer, sendType, completedSendData, jymSendData); + byte[] bytes = Tools.sendData(taskNoSendData, rwlxSendData, srcLayer, tarLayer, completedSendData, jymSendData); + DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(Convert.toStr(tsjDeviceExecutionQueue.getDeviceId())); + int i = PlcTsjRead.WriteToTSJ(deviceTsj.getPlcDbWriteAddress(), bytes); + if (i > 0) { + tsjDeviceExecutionQueue.setSendFlag("1"); + tsjDeviceExecutionQueueService.updateTsjDeviceExecutionQueue(tsjDeviceExecutionQueue); + } + + } + + + private void writeToTsjWC(TsjDeviceExecutionQueue tsjDeviceExecutionQueue) { + SendData taskNoSendData = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTaskNo())); + SendData rwlxSendData = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getRwlx())); +// SendData srcRow = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getSrcRow())); + SendData srcLayer = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getSrcLayer())); +// SendData tarRow = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTarRow())); + SendData tarLayer = new SendData(Tools.INT, Convert.toInt(tsjDeviceExecutionQueue.getTarLayer())); + + SendData completedSendData = new SendData(Tools.INT, 1); + int jym = Tools.getJYM(taskNoSendData.getNum2(), srcLayer.getNum2(), tarLayer.getNum2(), completedSendData.getNum2(), rwlxSendData.getNum2()); + SendData jymSendData = new SendData(Tools.INT, jym); + byte[] bytes = Tools.sendData(taskNoSendData, srcLayer, tarLayer, completedSendData, jymSendData); DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(Convert.toStr(tsjDeviceExecutionQueue.getDeviceId())); if (ObjUtil.isNotNull(deviceTsj)) { PlcTsjRead.WriteToTSJ(deviceTsj.getPlcDbWriteAddress(), bytes); } } + private void finishTask(Long taskNo) { //根据任务号查询队列 修改执行状态 diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index a5250a3..79ad5bb 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -6,9 +6,9 @@ spring: druid: #主数据信息 master: - url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT546-wcs; + url: jdbc:sqlserver://127.0.0.1:1433;databaseName=FT546-WCS; username: sa - password: Flrd0914. + password: 123456 # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 1cf735d..4720c99 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -68,7 +68,7 @@ spring: # redis 配置 redis: # 地址 - host: 172.16.2.170 + host: 127.0.0.1 # 端口,默认为6379 port: 6379 # 数据库索引 diff --git a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml index 3a0e734..dde4598 100644 --- a/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/job/MydoJobMapper.xml @@ -67,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"