现场调试修改 入库 出库 放货目标有货

This commit is contained in:
liuhanqing
2025-12-26 13:22:48 +08:00
parent 2eadf27295
commit 86673312ed
20 changed files with 289 additions and 340 deletions

View File

@@ -16,5 +16,6 @@ public class ReceiveJob {
private String inOrOut; private String inOrOut;
private String jobId; private String jobId;
private String roadwayId; private String roadwayId;
private String warehouseId;
} }

View File

@@ -355,6 +355,7 @@ public class ApiServiceImpl implements IApiService {
mydoJob.setRoadwayId(receiveOutJob.getRoadwayId()); mydoJob.setRoadwayId(receiveOutJob.getRoadwayId());
mydoJob.setCreateTime(DateUtils.getNowDate()); mydoJob.setCreateTime(DateUtils.getNowDate());
mydoJob.setExecutionPhase("0"); mydoJob.setExecutionPhase("0");
mydoJob.setWarehouseId(receiveOutJob.getWarehouseId());
int i = mydoJobService.insertMydoJob(mydoJob); int i = mydoJobService.insertMydoJob(mydoJob);
if (i > 0) { if (i > 0) {
return AjaxResult.success(); return AjaxResult.success();

View File

@@ -1,5 +1,8 @@
package com.ruoyi.bas.cargospace.domain; package com.ruoyi.bas.cargospace.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
@@ -11,6 +14,9 @@ import com.ruoyi.common.core.domain.BaseEntity;
* @author ruoyi * @author ruoyi
* @date 2025-09-23 * @date 2025-09-23
*/ */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BasCargoSpace extends BaseEntity public class BasCargoSpace extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -44,15 +50,15 @@ public class BasCargoSpace extends BaseEntity
/** 排(不允许为空) */ /** 排(不允许为空) */
@Excel(name = "排", readConverterExp = "不=允许为空") @Excel(name = "排", readConverterExp = "不=允许为空")
private Long thePlatoon; private Integer thePlatoon;
/** 列(不允许为空) */ /** 列(不允许为空) */
@Excel(name = "列", readConverterExp = "不=允许为空") @Excel(name = "列", readConverterExp = "不=允许为空")
private Long theColumn; private Integer theColumn;
/** 层(不允许为空) */ /** 层(不允许为空) */
@Excel(name = "层", readConverterExp = "不=允许为空") @Excel(name = "层", readConverterExp = "不=允许为空")
private Long theFloor; private Integer theFloor;
/** 货位状态1空2满 3入库分配 4出库分配 5入库盘点 6出库盘点 */ /** 货位状态1空2满 3入库分配 4出库分配 5入库盘点 6出库盘点 */
@Excel(name = "货位状态1空2满 3入库分配 4出库分配 5入库盘点 6出库盘点") @Excel(name = "货位状态1空2满 3入库分配 4出库分配 5入库盘点 6出库盘点")
@@ -96,229 +102,4 @@ Y锁、N开 */
@Excel(name = "wms货位id") @Excel(name = "wms货位id")
private String wmsCargoSpaceId; private String wmsCargoSpaceId;
public void setCargoSpaceId(String cargoSpaceId)
{
this.cargoSpaceId = cargoSpaceId;
}
public String getCargoSpaceId()
{
return cargoSpaceId;
}
public void setWarehouseId(String warehouseId)
{
this.warehouseId = warehouseId;
}
public String getWarehouseId()
{
return warehouseId;
}
public void setRoadwayId(String roadwayId)
{
this.roadwayId = roadwayId;
}
public String getRoadwayId()
{
return roadwayId;
}
public void setCargoAreaId(String cargoAreaId)
{
this.cargoAreaId = cargoAreaId;
}
public String getCargoAreaId()
{
return cargoAreaId;
}
public void setTheType(String theType)
{
this.theType = theType;
}
public String getTheType()
{
return theType;
}
public void setTheTypeName(String theTypeName)
{
this.theTypeName = theTypeName;
}
public String getTheTypeName()
{
return theTypeName;
}
public void setCargoSpaceName(String cargoSpaceName)
{
this.cargoSpaceName = cargoSpaceName;
}
public String getCargoSpaceName()
{
return cargoSpaceName;
}
public void setThePlatoon(Long thePlatoon)
{
this.thePlatoon = thePlatoon;
}
public Long getThePlatoon()
{
return thePlatoon;
}
public void setTheColumn(Long theColumn)
{
this.theColumn = theColumn;
}
public Long getTheColumn()
{
return theColumn;
}
public void setTheFloor(Long theFloor)
{
this.theFloor = theFloor;
}
public Long getTheFloor()
{
return theFloor;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
public void setLocked(String locked)
{
this.locked = locked;
}
public String getLocked()
{
return locked;
}
public void setTrayCode(String trayCode)
{
this.trayCode = trayCode;
}
public String getTrayCode()
{
return trayCode;
}
public void setCargoHight(String cargoHight)
{
this.cargoHight = cargoHight;
}
public String getCargoHight()
{
return cargoHight;
}
public void setIssDouble(String issDouble)
{
this.issDouble = issDouble;
}
public String getIssDouble()
{
return issDouble;
}
public void setGroupCodingNo(String groupCodingNo)
{
this.groupCodingNo = groupCodingNo;
}
public String getGroupCodingNo()
{
return groupCodingNo;
}
public void setGroupCoding(String groupCoding)
{
this.groupCoding = groupCoding;
}
public String getGroupCoding()
{
return groupCoding;
}
public void setCargoSpaceLogo(String cargoSpaceLogo)
{
this.cargoSpaceLogo = cargoSpaceLogo;
}
public String getCargoSpaceLogo()
{
return cargoSpaceLogo;
}
public void setThisCargoArea(String thisCargoArea)
{
this.thisCargoArea = thisCargoArea;
}
public String getThisCargoArea()
{
return thisCargoArea;
}
public void setWmsCargoSpaceId(String wmsCargoSpaceId)
{
this.wmsCargoSpaceId = wmsCargoSpaceId;
}
public String getWmsCargoSpaceId()
{
return wmsCargoSpaceId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("cargoSpaceId", getCargoSpaceId())
.append("warehouseId", getWarehouseId())
.append("roadwayId", getRoadwayId())
.append("cargoAreaId", getCargoAreaId())
.append("theType", getTheType())
.append("theTypeName", getTheTypeName())
.append("cargoSpaceName", getCargoSpaceName())
.append("thePlatoon", getThePlatoon())
.append("theColumn", getTheColumn())
.append("theFloor", getTheFloor())
.append("status", getStatus())
.append("locked", getLocked())
.append("trayCode", getTrayCode())
.append("cargoHight", getCargoHight())
.append("issDouble", getIssDouble())
.append("groupCodingNo", getGroupCodingNo())
.append("groupCoding", getGroupCoding())
.append("cargoSpaceLogo", getCargoSpaceLogo())
.append("thisCargoArea", getThisCargoArea())
.append("wmsCargoSpaceId", getWmsCargoSpaceId())
.toString();
}
} }

View File

@@ -24,6 +24,9 @@ public class Constant {
public static final int ROADWAY_ID_01 = 1; public static final int ROADWAY_ID_01 = 1;
public static final int ROADWAY_ID_02 = 2; public static final int ROADWAY_ID_02 = 2;
public static final int ROADWAY_ID_03 = 3; public static final int ROADWAY_ID_03 = 3;
public static final int ROADWAY_ID_04 = 4;
public static final int ROADWAY_ID_05 = 5;
public static final int ROADWAY_ID_06 = 6;
} }

View File

@@ -11,5 +11,8 @@ public class TaskType {
public static final int DDJ_RWLX_2 = 2; public static final int DDJ_RWLX_2 = 2;
//出库 //出库
public static final int DDJ_RWLX_3 = 3; public static final int DDJ_RWLX_3 = 3;
//入库 未扫码或者无该任务回滚
public static final int DDJ_RWLX_4 = 4;
} }

View File

@@ -92,15 +92,15 @@ public class MsgDdj extends BaseEntity
/** 备用字段1 */ /** 备用字段1 */
@Excel(name = "备用字段1") @Excel(name = "备用字段1")
private Integer spare1; private String spare1;
/** 备用字段2 */ /** 备用字段2 */
@Excel(name = "备用字段2") @Excel(name = "备用字段2")
private Integer spare2; private String spare2;
/** 备用字段3 */ /** 备用字段3 */
@Excel(name = "备用字段3") @Excel(name = "备用字段3")
private Integer spare3; private String spare3;
private String trayCode; private String trayCode;

View File

@@ -9,7 +9,7 @@ import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.device.ssj.service.IDeviceSsjService; import com.ruoyi.device.ssj.service.IDeviceSsjService;
import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead; import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead; import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
import com.ruoyi.schedule.scheduleTask.ddj.impl.Ddj1Thread; import com.ruoyi.schedule.scheduleTask.ddj.impl.*;
import com.ruoyi.schedule.scheduleTask.monit.MonitoringThread; import com.ruoyi.schedule.scheduleTask.monit.MonitoringThread;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -34,11 +34,11 @@ public class ScheduleThread {
public CustomThread<MonitoringThread> monitoringCustomThread; public CustomThread<MonitoringThread> monitoringCustomThread;
public CustomThread<Ddj1Thread> ddj1CustomThread; public CustomThread<Ddj1Thread> ddj1CustomThread;
/*public CustomThread<Ddj2Thread> ddj2CustomThread; public CustomThread<Ddj2Thread> ddj2CustomThread;
public CustomThread<Ddj3Thread> ddj3CustomThread; public CustomThread<Ddj3Thread> ddj3CustomThread;
public CustomThread<Ddj4Thread> ddj4CustomThread; public CustomThread<Ddj4Thread> ddj4CustomThread;
public CustomThread<Ddj5Thread> ddj5CustomThread; public CustomThread<Ddj5Thread> ddj5CustomThread;
public CustomThread<Ddj6Thread> ddj6CustomThread;*/ public CustomThread<Ddj6Thread> ddj6CustomThread;
@Autowired @Autowired
private IDeviceSsjService deviceSsjService; private IDeviceSsjService deviceSsjService;
@Autowired @Autowired
@@ -66,8 +66,8 @@ public class ScheduleThread {
private void scheduleInit() { private void scheduleInit() {
MonitoringThread monitoringThread = new MonitoringThread(); MonitoringThread monitoringThread = new MonitoringThread();
monitoringCustomThread = new CustomThread<MonitoringThread>(new Thread(monitoringThread), monitoringThread); monitoringCustomThread = new CustomThread<MonitoringThread>(new Thread(monitoringThread), monitoringThread);
Ddj1Thread ddj1Thread = new Ddj1Thread(); Ddj4Thread ddj4Thread = new Ddj4Thread(plcDdj4ReadCustomThread.runnable);
ddj1CustomThread = new CustomThread<>(new Thread(ddj1Thread), ddj1Thread); ddj4CustomThread = new CustomThread<>(new Thread(ddj4Thread), ddj4Thread);
/*Ddj2Thread ddj2Thread = new Ddj2Thread(); /*Ddj2Thread ddj2Thread = new Ddj2Thread();
ddj2CustomThread = new CustomThread<>(new Thread(ddj2Thread), ddj2Thread); ddj2CustomThread = new CustomThread<>(new Thread(ddj2Thread), ddj2Thread);
Ddj3Thread ddj3Thread = new Ddj3Thread(); Ddj3Thread ddj3Thread = new Ddj3Thread();
@@ -88,12 +88,13 @@ public class ScheduleThread {
//获取要去取的输送机 //获取要去取的输送机
List<DeviceSsj> deviceSsjs = deviceSsjService.selectDeviceSsjList(new DeviceSsj()); List<DeviceSsj> deviceSsjs = deviceSsjService.selectDeviceSsjList(new DeviceSsj());
for (DeviceSsj deviceSsj : deviceSsjs) { for (DeviceSsj deviceSsj : deviceSsjs) {
deviceSsj.setTaskNo(0);
ssjList.put(deviceSsj.getDeviceCode(), deviceSsj); ssjList.put(deviceSsj.getDeviceCode(), deviceSsj);
} }
String ipAddress = deviceSsjs.get(0).getIpAddress(); String ipAddress = deviceSsjs.get(0).getIpAddress();
String[] split = ipAddress.split(":"); String[] split = ipAddress.split(":");
String ip = split[0]; String ip = "192.168.56.80";
int port = Convert.toInt(split[1]); int port = 102;
//plc输送机读取线程 //plc输送机读取线程
PlcSsjRead plcSsjRead = new PlcSsjRead(ssjList, new PlcConnectInfo(ip, port)); PlcSsjRead plcSsjRead = new PlcSsjRead(ssjList, new PlcConnectInfo(ip, port));
Thread plcSsjReadThread = new Thread(plcSsjRead); Thread plcSsjReadThread = new Thread(plcSsjRead);
@@ -104,6 +105,7 @@ public class ScheduleThread {
List<MsgDdj> msgDdjs = msgDdjService.selectMsgDdjList(new MsgDdj()); List<MsgDdj> msgDdjs = msgDdjService.selectMsgDdjList(new MsgDdj());
for (MsgDdj msgDdj : msgDdjs) { for (MsgDdj msgDdj : msgDdjs) {
msgDdj.setPlcDbReadAddress(msgDdj.getPlcDbReadAddress()); msgDdj.setPlcDbReadAddress(msgDdj.getPlcDbReadAddress());
msgDdj.setTrayCode("00000000");
PlcDdjRead plcDdjRead = new PlcDdjRead(msgDdj, new PlcConnectInfo(msgDdj.getIp(), Convert.toInt(msgDdj.getPort()))); PlcDdjRead plcDdjRead = new PlcDdjRead(msgDdj, new PlcConnectInfo(msgDdj.getIp(), Convert.toInt(msgDdj.getPort())));
switch (msgDdj.getId()){ switch (msgDdj.getId()){
case 1: case 1:
@@ -141,12 +143,12 @@ public class ScheduleThread {
*/ */
public void startAllThread() { public void startAllThread() {
plcSsjReadCustomThread.getThread().start(); plcSsjReadCustomThread.getThread().start();
plcDdj1ReadCustomThread.getThread().start(); plcDdj4ReadCustomThread.getThread().start();
plcDdj2ReadCustomThread.getThread().start(); /*plcDdj2ReadCustomThread.getThread().start();
plcDdj3ReadCustomThread.getThread().start(); plcDdj3ReadCustomThread.getThread().start();
plcDdj4ReadCustomThread.getThread().start(); plcDdj4ReadCustomThread.getThread().start();
plcDdj5ReadCustomThread.getThread().start(); plcDdj5ReadCustomThread.getThread().start();
plcDdj6ReadCustomThread.getThread().start(); plcDdj6ReadCustomThread.getThread().start();*/
isRun = true; isRun = true;
} }
@@ -155,7 +157,7 @@ public class ScheduleThread {
*/ */
public void startAllThread2() { public void startAllThread2() {
monitoringCustomThread.thread.start(); monitoringCustomThread.thread.start();
ddj1CustomThread.thread.start(); ddj4CustomThread.thread.start();
/*ddj2CustomThread.thread.start(); /*ddj2CustomThread.thread.start();
ddj3CustomThread.thread.start(); ddj3CustomThread.thread.start();
ddj4CustomThread.thread.start(); ddj4CustomThread.thread.start();

View File

@@ -22,7 +22,7 @@ public class PlcDdjRead extends Thread {
public volatile boolean isRun = true; public volatile boolean isRun = true;
public SiemensS7Net siemensS7Net = null; public SiemensS7Net siemensS7Net = null;
public static IReadWriteNet readWriteNet = null; public IReadWriteNet readWriteNet = null;
private final String ip; private final String ip;
private final int port; private final int port;
private boolean success = false; private boolean success = false;
@@ -35,14 +35,6 @@ public class PlcDdjRead extends Thread {
this.port = plcConnectInfo.getPort(); this.port = plcConnectInfo.getPort();
} }
public static int WriteToSSJ(String address, byte[] data) {
int a = 0;
if (readWriteNet != null) {
a = HslRead.WriteResultRender(readWriteNet.Write(address, data), address);
}
return a;
}
@Override @Override
public void run() { public void run() {
while (isRun) { while (isRun) {
@@ -63,7 +55,7 @@ public class PlcDdjRead extends Thread {
} }
private void readPlcDdj(MsgDdj msgDdj) { private void readPlcDdj(MsgDdj msgDdj) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(msgDdj.getPlcDbReadAddress(), Convert.toShort("38")); OperateResultExOne<byte[]> read2 = readWriteNet.Read(msgDdj.getPlcDbReadAddress(), Convert.toShort("40"));
String ddsx = "0"; String ddsx = "0";
if (read2.IsSuccess) { if (read2.IsSuccess) {
ddsx = SoftBasic.ByteToHexString(read2.Content); ddsx = SoftBasic.ByteToHexString(read2.Content);
@@ -80,7 +72,10 @@ public class PlcDdjRead extends Thread {
msgDdj.setMbch(ParseUtil.optInt(22, ddsx)); msgDdj.setMbch(ParseUtil.optInt(22, ddsx));
msgDdj.setYxxf(ParseUtil.optInt(24, ddsx)); msgDdj.setYxxf(ParseUtil.optInt(24, ddsx));
msgDdj.setXtxh(ParseUtil.optInt(26, ddsx)); msgDdj.setXtxh(ParseUtil.optInt(26, ddsx));
msgDdj.setTrayCode(ParseUtil.optString(30,4,ddsx)); String trayCode = ParseUtil.optString(32, 8, ddsx);
if (! "11111111".equals(trayCode) && !"00000000".equals(trayCode)){
msgDdj.setTrayCode(trayCode);
}
} }
} }
@@ -130,11 +125,27 @@ public class PlcDdjRead extends Thread {
setIsConnect(false); setIsConnect(false);
} }
public static int WriteToDDJ(String address, byte[] data) { public int WriteToDDJ(String address, byte[] data) {
int a = 0; int a = 0;
if (readWriteNet != null) { if (readWriteNet != null) {
a = HslRead.WriteResultRender(readWriteNet.Write(address, data), address); a = HslRead.WriteResultRender(readWriteNet.Write(address, data), address);
} }
return a; return a;
} }
public static void main(String[] args) {
SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1500);
try {
siemensS7Net.setIpAddress("192.168.56.51");
siemensS7Net.setPort(102);
siemensS7Net.setRack((byte) 0);
siemensS7Net.setSlot((byte) 1);
OperateResult connect = siemensS7Net.ConnectServer();
if (connect.IsSuccess) {
System.out.println("连接成功");
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
} }

View File

@@ -22,6 +22,7 @@ import com.ruoyi.queue.ddj.domain.DdjDeviceExecutionQueue;
import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueFinishService; import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueFinishService;
import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueService; import com.ruoyi.queue.ddj.service.IDdjDeviceExecutionQueueService;
import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead; import com.ruoyi.schedule.plcRead.ddj.PlcDdjRead;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
import com.ruoyi.schedule.plcRead.util.Tools; import com.ruoyi.schedule.plcRead.util.Tools;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -42,13 +43,18 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
private IMydoJobService mydoJobService; private IMydoJobService mydoJobService;
private IBasCargoSpaceService basCargoSpaceService; private IBasCargoSpaceService basCargoSpaceService;
public Map<String, List<Integer>> roadwayMap = new HashMap<>(); public Map<String, List<Integer>> roadwayMap = new HashMap<>();
private PlcDdjRead plcDdjRead;
public BaseDdjThread(PlcDdjRead plcDdjRead) {
this.plcDdjRead = plcDdjRead;
}
public Map<String,Integer> roadwayRollback = new HashMap<>(); public Map<String,Integer> roadwayRollback = new HashMap<>();
public boolean isRun = true; public boolean isRun = true;
@Override @Override
public abstract HashMap<String, Object> getParamMap(String trayCode,Integer height); public abstract HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight);
@Override @Override
@@ -72,7 +78,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
try { try {
if (ObjUtil.isNotNull(msgDdj)) { if (ObjUtil.isNotNull(msgDdj)) {
MsgDdj currentMsgDdj = msgDdjService.selectMsgDdjById(Convert.toLong(msgDdj.getId())); MsgDdj currentMsgDdj = msgDdjService.selectMsgDdjById(Convert.toLong(msgDdj.getId()));
if (0 == currentMsgDdj.getSpare1()) { if ("0".equals(currentMsgDdj.getSpare1())) {
generateInBoundPickQueue(msgDdj); generateInBoundPickQueue(msgDdj);
generateInBoundLoadQueue(msgDdj); generateInBoundLoadQueue(msgDdj);
generateOutBoundQueue(msgDdj); generateOutBoundQueue(msgDdj);
@@ -109,24 +115,24 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
switch (exitId) { switch (exitId) {
case "1": case "1":
List<DeviceSsj> outSsj1 = ssjList.get("outSsj1"); List<DeviceSsj> outSsj1 = ssjList.get("outSsj1");
if (outSsj1.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getModel() == 2)) { if (outSsj1.stream().allMatch(ssj -> ssj.getKx() == 1 )) {
outSsj = outSsj1.get(0).getDeviceCode(); outSsj = outSsj1.get(0).getDeviceCode();
break; break;
} }
List<DeviceSsj> outSsj2 = ssjList.get("outSsj2"); List<DeviceSsj> outSsj2 = ssjList.get("outSsj2");
if (outSsj2.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getModel() == 2)) { if (outSsj2.stream().allMatch(ssj -> ssj.getKx() == 1)) {
outSsj = outSsj2.get(0).getDeviceCode(); outSsj = outSsj2.get(0).getDeviceCode();
break; break;
} }
break; break;
case "2": case "2":
List<DeviceSsj> outSsj3 = ssjList.get("outSsj3"); List<DeviceSsj> outSsj3 = ssjList.get("outSsj3");
if (outSsj3.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getModel() == 2)) { if (outSsj3.stream().allMatch(ssj -> ssj.getKx() == 1 )) {
outSsj = outSsj3.get(0).getDeviceCode(); outSsj = outSsj3.get(0).getDeviceCode();
break; break;
} }
List<DeviceSsj> outSsj4 = ssjList.get("outSsj4"); List<DeviceSsj> outSsj4 = ssjList.get("outSsj4");
if (outSsj4.stream().allMatch(ssj -> ssj.getKx() == 1 && ssj.getModel() == 2)) { if (outSsj4.stream().allMatch(ssj -> ssj.getKx() == 1 )) {
outSsj = outSsj4.get(0).getDeviceCode(); outSsj = outSsj4.get(0).getDeviceCode();
break; break;
} }
@@ -140,6 +146,24 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(outJob.getTaskNo()), ddj.getId()); DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(outJob.getTaskNo()), ddj.getId());
if (ObjUtil.isNull(ddjQueue)) { if (ObjUtil.isNull(ddjQueue)) {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID());
ddjDeviceExecutionQueue.setRwh(Convert.toLong(outJob.getTaskNo()));
ddjDeviceExecutionQueue.setDevName(ddj.getName());
ddjDeviceExecutionQueue.setDevId(ddj.getId());
ddjDeviceExecutionQueue.setRwzt(0);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByCargoSpaceId(outJob.getCargoSpaceId());
ddjDeviceExecutionQueue.setYph(basCargoSpace.getThePlatoon());
ddjDeviceExecutionQueue.setYlh(basCargoSpace.getTheColumn());
ddjDeviceExecutionQueue.setYch(basCargoSpace.getTheFloor());
List<Integer> integers = roadwayMap.get(outSsj);
ddjDeviceExecutionQueue.setMbph(integers.get(0));
ddjDeviceExecutionQueue.setMblh(integers.get(1));
ddjDeviceExecutionQueue.setMbch(integers.get(2));
ddjDeviceExecutionQueue.setDdjxf("0");
ddjDeviceExecutionQueue.setMlfs(5);
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3);
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
outJob.setStatus("3"); outJob.setStatus("3");
outJob.setStartTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); outJob.setStartTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
@@ -161,7 +185,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
* 创建入库放货队列 * 创建入库放货队列
*/ */
private void generateInBoundLoadQueue(MsgDdj ddj) { private void generateInBoundLoadQueue(MsgDdj ddj) {
if (ddj.getCzfs() == 5 && ddj.getSbzt() == 3 && ddj.getYxxf() == 1) { if (ddj.getCzfs() == 5 && ddj.getSbzt() == 0 && ddj.getHczt()==1 && ddj.getYxxf() == 1) {
//允许下发 联机 有货待机 //允许下发 联机 有货待机
if (ddj.getTrayCode() != null && StrUtil.isNotEmpty(ddj.getTrayCode().trim())) { if (ddj.getTrayCode() != null && StrUtil.isNotEmpty(ddj.getTrayCode().trim())) {
MydoJob param = new MydoJob(); MydoJob param = new MydoJob();
@@ -169,17 +193,24 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(param); List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(param);
MydoJob inJob = null; MydoJob inJob = null;
if (CollUtil.isEmpty(mydoJobs)) { if (CollUtil.isEmpty(mydoJobs)) {
//获取高度spare2 和 重量spare3
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(ddj.getRwh(), ddj.getId());
if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)){
//请求wms获取任务 并生成队列 //请求wms获取任务 并生成队列
AjaxResult result = apiService.selectMydoJobByTrayCodeAndEntranceId(getParamMap(ddj.getTrayCode(),ddj.getHeight())); AjaxResult result = apiService.selectMydoJobByTrayCodeAndEntranceId(getParamMap(ddj.getTrayCode(),Convert.toInt(ddjDeviceExecutionQueue.getSpare2()),Convert.toDouble(ddjDeviceExecutionQueue.getSpare3())));
if (result.isSuccess()) { if (result.isSuccess()) {
inJob = BeanUtil.toBean(result.get("data"), MydoJob.class); inJob = BeanUtil.toBean(result.get("data"), MydoJob.class);
inJob.setStatus(TASK_STATUS_CREATE); inJob.setStatus(TASK_STATUS_CREATE);
inJob.setExecutionPhase(TASK_EP_ROADWAY_SSJ); inJob.setExecutionPhase(TASK_EP_ROADWAY_SSJ);
inJob.setRoadwayId(Convert.toStr(ddj.getId())); inJob.setRoadwayId(Convert.toStr(ddj.getId()));
inJob.setFaultFlag("0");
mydoJobService.insertMydoJob(inJob); mydoJobService.insertMydoJob(inJob);
} else { } else {
createRollbackQueue(ddj,2);
log.error(result.get("msg").toString()); log.error(result.get("msg").toString());
} }
}
} else { } else {
inJob = mydoJobs.get(0); inJob = mydoJobs.get(0);
} }
@@ -189,6 +220,8 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
if (ObjUtil.isNull(ddjQueue)) { if (ObjUtil.isNull(ddjQueue)) {
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(inJob.getCargoSpaceId()); BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(inJob.getCargoSpaceId());
if (ObjUtil.isNotNull(basCargoSpace)) { if (ObjUtil.isNotNull(basCargoSpace)) {
ddjTaskFinish(ddj.getRwh(), ddj.getId(),2);
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID());
ddjDeviceExecutionQueue.setRwh(Convert.toLong(inJob.getTaskNo())); ddjDeviceExecutionQueue.setRwh(Convert.toLong(inJob.getTaskNo()));
@@ -204,7 +237,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
ddjDeviceExecutionQueue.setDdjxf("0"); ddjDeviceExecutionQueue.setDdjxf("0");
ddjDeviceExecutionQueue.setMlfs(5); ddjDeviceExecutionQueue.setMlfs(5);
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_3); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2);
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
inJob.setStatus("3"); inJob.setStatus("3");
@@ -219,9 +252,17 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
} }
} }
} else { } else {
Integer mbph = ddj.getMbph(); createRollbackQueue(ddj,1);
Integer mblh = ddj.getMblh(); }
Integer mbch = ddj.getMbch(); }
}
private void createRollbackQueue(MsgDdj ddj,int type) {
DdjDeviceExecutionQueue pickQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(ddj.getRwh(), ddj.getId());
if (pickQueue != null){
Integer mbph = pickQueue.getYph();
Integer mblh = pickQueue.getYlh();
Integer mbch = pickQueue.getYch();
String road = ""; String road = "";
for (String roadway : roadwayMap.keySet()) { for (String roadway : roadwayMap.keySet()) {
List<Integer> integers = roadwayMap.get(roadway); List<Integer> integers = roadwayMap.get(roadway);
@@ -234,11 +275,19 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
log.error("未找到回滚任务号 p:{} l:{} c:{}",mbph,mblh,mbch); log.error("未找到回滚任务号 p:{} l:{} c:{}",mbph,mblh,mbch);
return; return;
} }
DeviceSsj roadWay = PlcSsjRead.deviceSsjMap.get(road);
if (roadWay.getKx()==1){
long rwh = roadwayRollback.get(road); long rwh = roadwayRollback.get(road);
log.info("扫码失败,放回原位 排:{} 列:{} 层:{} 任务号:{}", mbph, mblh, mbch, rwh); log.info("扫码失败,放回原位 排:{} 列:{} 层:{} 任务号:{}", mbph, mblh, mbch, rwh);
DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, ddj.getId()); DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, ddj.getId());
if (ObjUtil.isNull(ddjQueue)) { if (ObjUtil.isNull(ddjQueue)) {
ddjTaskFinish(ddj.getRwh(), ddj.getId(),2);
if (type == 2){
rwh = rwh+100;
}
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID()); ddjDeviceExecutionQueue.setUuid(IdUtil.simpleUUID());
ddjDeviceExecutionQueue.setRwh(rwh); ddjDeviceExecutionQueue.setRwh(rwh);
@@ -254,14 +303,16 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
ddjDeviceExecutionQueue.setDdjxf("0"); ddjDeviceExecutionQueue.setDdjxf("0");
ddjDeviceExecutionQueue.setMlfs(5); ddjDeviceExecutionQueue.setMlfs(5);
ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setScsj(DateUtil.formatDateTime(DateUtil.date()));
ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_2); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_4);
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
} }
} }
}
}else {
log.error("未找到回滚任务号 rwh{}",ddj.getRwh());
} }
}
/** /**
@@ -270,7 +321,9 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
private void generateInBoundPickQueue(MsgDdj ddj) { private void generateInBoundPickQueue(MsgDdj ddj) {
List<DeviceSsj> roadSsjList = ssjList.get("roadSsjList"); List<DeviceSsj> roadSsjList = ssjList.get("roadSsjList");
for (DeviceSsj ssj : roadSsjList) { for (DeviceSsj ssj : roadSsjList) {
if (ssj.getDw() == 1 && ssj.getTaskNo() > 0 && ssj.getHeight() > 0 && ssj.getRkqq()==1) { //todo 连接称重 并保存数据
double weight = 0;
if (ssj.getTaskNo() > 0 && ssj.getHeight() > 0 && ssj.getRkqq() == 1) {
DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(ssj.getTaskNo()), ddj.getId()); DdjDeviceExecutionQueue ddjQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(Convert.toLong(ssj.getTaskNo()), ddj.getId());
if (ObjUtil.isNull(ddjQueue)) { if (ObjUtil.isNull(ddjQueue)) {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = new DdjDeviceExecutionQueue();
@@ -279,19 +332,20 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
ddjDeviceExecutionQueue.setDevName(ddj.getName()); ddjDeviceExecutionQueue.setDevName(ddj.getName());
ddjDeviceExecutionQueue.setDevId(ddj.getId()); ddjDeviceExecutionQueue.setDevId(ddj.getId());
ddjDeviceExecutionQueue.setRwzt(0); ddjDeviceExecutionQueue.setRwzt(0);
ddjDeviceExecutionQueue.setYph(0); ddjDeviceExecutionQueue.setMbph(1);
ddjDeviceExecutionQueue.setYlh(0); ddjDeviceExecutionQueue.setMblh(1);
ddjDeviceExecutionQueue.setYch(0); ddjDeviceExecutionQueue.setMbch(1);
List<Integer> integers = roadwayMap.get(ssj.getDeviceCode()); List<Integer> integers = roadwayMap.get(ssj.getDeviceCode());
ddjDeviceExecutionQueue.setMbph(integers.get(0)); ddjDeviceExecutionQueue.setYph(integers.get(0));
ddjDeviceExecutionQueue.setMblh(integers.get(1)); ddjDeviceExecutionQueue.setYlh(integers.get(1));
ddjDeviceExecutionQueue.setMbch(integers.get(2)); ddjDeviceExecutionQueue.setYch(integers.get(2));
ddjDeviceExecutionQueue.setDdjxf("0"); ddjDeviceExecutionQueue.setDdjxf("0");
ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1); ddjDeviceExecutionQueue.setRwlx(DDJ_RWLX_1);
ddjDeviceExecutionQueue.setScsj(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss")); ddjDeviceExecutionQueue.setScsj(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
ddjDeviceExecutionQueue.setMlfs(3); ddjDeviceExecutionQueue.setMlfs(3);
ddjDeviceExecutionQueue.setSpare1("0"); ddjDeviceExecutionQueue.setSpare1("0");
ddjDeviceExecutionQueue.setSpare2(Convert.toStr(ssj.getHeight())); ddjDeviceExecutionQueue.setSpare2(Convert.toStr(ssj.getHeight()));
ddjDeviceExecutionQueue.setSpare3(Convert.toStr(weight));
ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); ddjDeviceExecutionQueueService.insertDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
} }
} }
@@ -314,8 +368,11 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
if (ObjUtil.isNotNull(mydoJob)){ if (ObjUtil.isNotNull(mydoJob)){
//回传完成信号 //回传完成信号
ddjTaskFinish(rwh, ddj.getId(),1); ddjTaskFinish(rwh, ddj.getId(),1);
ddj.setHeight(Convert.toInt(ddjDeviceExecutionQueue.getSpare2()));
} }
}else if (ddjDeviceExecutionQueue.getRwlx()==1 && ddj.getHczt() == 1){
ddj.setHeight(Convert.toInt(ddjDeviceExecutionQueue.getSpare2()));
}else if (ddjDeviceExecutionQueue.getRwlx() == 4){
ddjTaskFinish(rwh, ddj.getId(),2);
} }
} }
} }
@@ -360,10 +417,15 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
if ("0".equals(mydoJob.getFaultFlag()) && "1".equals(ddjDeviceExecutionQueue.getSpare1())) { if ("0".equals(mydoJob.getFaultFlag()) && "1".equals(ddjDeviceExecutionQueue.getSpare1())) {
mydoJob.setStatus("1"); mydoJob.setStatus("1");
mydoJobService.updateMydoJob(mydoJob); mydoJobService.updateMydoJob(mydoJob);
AjaxResult ajaxResult = apiService.reAssign(new JobParam(rwh.toString(), null, null)); AjaxResult ajaxResult = apiService.reAssign(new JobParam(mydoJob.getJobId(), ddj.getTrayCode(), ddjDeviceExecutionQueue.getRwh().toString()));
if (ajaxResult.isSuccess()) { if (ajaxResult.isSuccess()) {
mydoJob = mydoJobService.selectMydoJobByTaskNo(rwh);
mydoJob.setFaultFlag("2"); mydoJob.setFaultFlag("2");
mydoJobService.updateMydoJob(mydoJob); mydoJobService.updateMydoJob(mydoJob);
BasCargoSpace basCargoSpace = basCargoSpaceService.selectBasCargoSpaceByWmsCargoSpaceId(mydoJob.getCargoSpaceId());
ddjDeviceExecutionQueue.setMbph(basCargoSpace.getThePlatoon());
ddjDeviceExecutionQueue.setMblh(basCargoSpace.getTheColumn());
ddjDeviceExecutionQueue.setMbch(basCargoSpace.getTheFloor());
ddjDeviceExecutionQueue.setSpare1("0"); ddjDeviceExecutionQueue.setSpare1("0");
ddjDeviceExecutionQueueService.updateDdjDeviceExecutionQueue(ddjDeviceExecutionQueue); ddjDeviceExecutionQueueService.updateDdjDeviceExecutionQueue(ddjDeviceExecutionQueue);
} }
@@ -401,7 +463,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, ddj.getId()); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueByRwh(rwh, ddj.getId());
if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) { if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) {
//重新下发堆垛机任务 //重新下发堆垛机任务
int i = issuedDDJTask(ddj.getId(), ddjDeviceExecutionQueue); int i = issuedDDJTask(ddj, ddjDeviceExecutionQueue);
if (i == 1) { if (i == 1) {
//更新开始时间,修改ddjxf为已下发1 //更新开始时间,修改ddjxf为已下发1
ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date()));
@@ -420,17 +482,18 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
if (ddj.getYxxf() == 1 && ddj.getCzfs() == 5) { if (ddj.getYxxf() == 1 && ddj.getCzfs() == 5) {
DdjDeviceExecutionQueue ddjDeviceExecutionRunningQueueParam = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionRunningQueueParam = new DdjDeviceExecutionQueue();
ddjDeviceExecutionRunningQueueParam.setDdjxf("1"); ddjDeviceExecutionRunningQueueParam.setDdjxf("1");
List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues1 = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionRunningQueueParam); List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues1 = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionRunningQueueParam);
if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues1)){ if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues1)){
log.info("正在执行任务 {}", ddjDeviceExecutionQueues1.get(0).getRwh()); log.info("正在执行任务 {}", ddjDeviceExecutionQueues1.get(0).getRwh());
return; return;
} }
if (ddj.getSbzt() == 0) { if (ddj.getSbzt() == 0 && ddj.getHczt() == 0) {
//无货待机 只查询入库取货扫码或者出库队列 //无货待机 只查询入库取货扫码或者出库队列
ArrayList<Integer> rwlxList = new ArrayList<>(); ArrayList<Integer> rwlxList = new ArrayList<>();
rwlxList.add(1); rwlxList.add(DDJ_RWLX_1);
rwlxList.add(3); rwlxList.add(DDJ_RWLX_3);
DdjDeviceExecutionQueue ddjDeviceExecutionQueueParam = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueueParam = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueueParam.setDdjxf("0"); ddjDeviceExecutionQueueParam.setDdjxf("0");
ddjDeviceExecutionQueueParam.setDevId(ddj.getId()); ddjDeviceExecutionQueueParam.setDevId(ddj.getId());
@@ -438,7 +501,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionQueueParam); List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionQueueParam);
if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues)) { if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues)) {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueues.get(0); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueues.get(0);
int i = issuedDDJTask(ddj.getId(), ddjDeviceExecutionQueue); int i = issuedDDJTask(ddj, ddjDeviceExecutionQueue);
if (i == 1) { if (i == 1) {
//更新开始时间,修改ddjxf为已下发1 //更新开始时间,修改ddjxf为已下发1
ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date()));
@@ -449,16 +512,19 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
log.error("托盘堆垛机下发任务失败!!!!!!!"); log.error("托盘堆垛机下发任务失败!!!!!!!");
} }
} }
} else if (ddj.getSbzt() == 3) { } else if (ddj.getSbzt() == 0 && ddj.getHczt() == 1) {
//有货待机 只查询入库放货队列 //有货待机 只查询入库放货队列和 无任务 未扫码回滚 队列
DdjDeviceExecutionQueue ddjDeviceExecutionQueueParam = new DdjDeviceExecutionQueue(); DdjDeviceExecutionQueue ddjDeviceExecutionQueueParam = new DdjDeviceExecutionQueue();
ddjDeviceExecutionQueueParam.setDdjxf("0"); ddjDeviceExecutionQueueParam.setDdjxf("0");
ddjDeviceExecutionQueueParam.setDevId(ddj.getId()); ddjDeviceExecutionQueueParam.setDevId(ddj.getId());
ddjDeviceExecutionQueueParam.setRwlx(2); ArrayList<Integer> rwlxList = new ArrayList<>();
rwlxList.add(DDJ_RWLX_2);
rwlxList.add(DDJ_RWLX_4);
ddjDeviceExecutionQueueParam.setRwlxList(rwlxList);
List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionQueueParam); List<DdjDeviceExecutionQueue> ddjDeviceExecutionQueues = ddjDeviceExecutionQueueService.selectDdjDeviceExecutionQueueList(ddjDeviceExecutionQueueParam);
if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues)) { if (CollUtil.isNotEmpty(ddjDeviceExecutionQueues)) {
DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueues.get(0); DdjDeviceExecutionQueue ddjDeviceExecutionQueue = ddjDeviceExecutionQueues.get(0);
int i = issuedDDJTask(ddj.getId(), ddjDeviceExecutionQueue); int i = issuedDDJTask(ddj, ddjDeviceExecutionQueue);
if (i == 1) { if (i == 1) {
//更新开始时间,修改ddjxf为已下发1 //更新开始时间,修改ddjxf为已下发1
ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date())); ddjDeviceExecutionQueue.setXfsj(DateUtil.formatDateTime(DateUtil.date()));
@@ -501,7 +567,7 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
* *
* @param queue 堆垛机执行的队列 * @param queue 堆垛机执行的队列
*/ */
private int issuedDDJTask(Integer devId, DdjDeviceExecutionQueue queue) { private int issuedDDJTask(MsgDdj ddj, DdjDeviceExecutionQueue queue) {
int taskNo = Convert.toInt(queue.getRwh()); int taskNo = Convert.toInt(queue.getRwh());
int yph = Convert.toInt(queue.getYph()); int yph = Convert.toInt(queue.getYph());
int ylh = Convert.toInt(queue.getYlh()); int ylh = Convert.toInt(queue.getYlh());
@@ -509,21 +575,11 @@ public abstract class BaseDdjThread implements Runnable, DdjThreadInterface {
int mbph = Convert.toInt(queue.getMbph()); int mbph = Convert.toInt(queue.getMbph());
int mblh = Convert.toInt(queue.getMblh()); int mblh = Convert.toInt(queue.getMblh());
int mbch = Convert.toInt(queue.getMbch()); int mbch = Convert.toInt(queue.getMbch());
int mlfs; int mlfs = queue.getMlfs();
if (queue.getRwlx() == 1 || queue.getRwlx() == 3) {
mlfs = 5;
} else if (queue.getRwlx() == 2) {
mlfs = 4;
} else {
throw new RuntimeException("任务类型错误");
}
int xfwc = 1; int xfwc = 1;
int jym = Tools.getJYM(taskNo, yph, ylh, ych, mbph, mblh, mbch, mlfs, xfwc); int jym = Tools.getJYM(taskNo, yph, ylh, ych, mbph, mblh, mbch, mlfs);
byte[] sendData = Tools.sendDataToDevice(taskNo, null, yph, ylh, ych, mbph, mblh, mbch, mlfs, xfwc, jym); byte[] sendData = Tools.sendDataToDevice(taskNo, null, yph, ylh, ych, mbph, mblh, mbch, mlfs, xfwc, jym);
if (devId == 1) { return plcDdjRead.WriteToDDJ("DB61.0", sendData);
return PlcDdjRead.WriteToDDJ("DB61.0", sendData);
} else {
return PlcDdjRead.WriteToDDJ("DB61.0", sendData);
}
} }
} }

View File

@@ -11,7 +11,7 @@ public interface DdjThreadInterface {
* @param trayCode 托盘代码 * @param trayCode 托盘代码
* @return 参数映射 * @return 参数映射
*/ */
HashMap<String, Object> getParamMap(String trayCode,Integer height); HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight);
/** /**
* 获取出库任务参数 * 获取出库任务参数

View File

@@ -21,6 +21,10 @@ public class Ddj1Thread extends BaseDdjThread {
public volatile boolean isRun = true; public volatile boolean isRun = true;
public Ddj1Thread(PlcDdjRead plcDdjRead) {
super(plcDdjRead);
}
@Override @Override
public void init() { public void init() {
@@ -50,8 +54,8 @@ public class Ddj1Thread extends BaseDdjThread {
ssjList.put("outSsj4", outSsj4); ssjList.put("outSsj4", outSsj4);
//初始化巷道口 排 列 层 //初始化巷道口 排 列 层
roadwayMap.put("L2001", Arrays.asList(1, 1, 1)); roadwayMap.put("L2001", Arrays.asList(1, 0, 1));
roadwayMap.put("L2002", Arrays.asList(2, 1, 1)); roadwayMap.put("L2002", Arrays.asList(2, 0, 1));
roadwayMap.put("L2007", Arrays.asList(1, 22, 1)); roadwayMap.put("L2007", Arrays.asList(1, 22, 1));
roadwayMap.put("L2008", Arrays.asList(2, 22, 1)); roadwayMap.put("L2008", Arrays.asList(2, 22, 1));
roadwayRollback.put("L2001", 80); roadwayRollback.put("L2001", 80);
@@ -64,11 +68,13 @@ public class Ddj1Thread extends BaseDdjThread {
} }
@Override @Override
public HashMap<String, Object> getParamMap(String trayCode,Integer height) { public HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight) {
HashMap<String, Object> paramMap = new HashMap<>(); HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("trayCode", trayCode); paramMap.put("trayCode", trayCode);
paramMap.put("warehouseId",WAREHOUSE_01); paramMap.put("warehouseId",WAREHOUSE_01);
paramMap.put("roadwayId",ROADWAY_ID_01); paramMap.put("roadwayId",ROADWAY_ID_01);
paramMap.put("height",height);
paramMap.put("weight",weight);
return paramMap; return paramMap;
} }
@@ -77,6 +83,7 @@ public class Ddj1Thread extends BaseDdjThread {
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setWarehouseId(WAREHOUSE_01); mydoJob.setWarehouseId(WAREHOUSE_01);
mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_01)); mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_01));
mydoJob.setStatus("1");
return mydoJob; return mydoJob;
} }

View File

@@ -18,6 +18,10 @@ import static com.ruoyi.common.Constant.*;
@Slf4j @Slf4j
public class Ddj2Thread extends BaseDdjThread { public class Ddj2Thread extends BaseDdjThread {
public Ddj2Thread(PlcDdjRead plcDdjRead) {
super(plcDdjRead);
}
@Override @Override
public void init() { public void init() {
super.init(); super.init();
@@ -60,11 +64,13 @@ public class Ddj2Thread extends BaseDdjThread {
} }
@Override @Override
public HashMap<String, Object> getParamMap(String trayCode,Integer height) { public HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight) {
HashMap<String, Object> paramMap = new HashMap<>(); HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("trayCode", trayCode); paramMap.put("trayCode", trayCode);
paramMap.put("warehouseId",WAREHOUSE_01); paramMap.put("warehouseId",WAREHOUSE_01);
paramMap.put("roadwayId",ROADWAY_ID_02); paramMap.put("roadwayId",ROADWAY_ID_02);
paramMap.put("height",height);
paramMap.put("weight",weight);
return paramMap; return paramMap;
} }
@@ -74,6 +80,8 @@ public class Ddj2Thread extends BaseDdjThread {
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setWarehouseId(WAREHOUSE_01); mydoJob.setWarehouseId(WAREHOUSE_01);
mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_02)); mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_02));
mydoJob.setStatus("1");
return mydoJob; return mydoJob;
} }

View File

@@ -18,6 +18,10 @@ import static com.ruoyi.common.Constant.*;
@Slf4j @Slf4j
public class Ddj3Thread extends BaseDdjThread { public class Ddj3Thread extends BaseDdjThread {
public Ddj3Thread(PlcDdjRead plcDdjRead) {
super(plcDdjRead);
}
@Override @Override
public void init() { public void init() {
super.init(); super.init();
@@ -60,11 +64,13 @@ public class Ddj3Thread extends BaseDdjThread {
} }
@Override @Override
public HashMap<String, Object> getParamMap(String trayCode,Integer height) { public HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight) {
HashMap<String, Object> paramMap = new HashMap<>(); HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("trayCode", trayCode); paramMap.put("trayCode", trayCode);
paramMap.put("warehouseId",WAREHOUSE_01); paramMap.put("warehouseId",WAREHOUSE_01);
paramMap.put("roadwayId",ROADWAY_ID_03); paramMap.put("roadwayId",ROADWAY_ID_03);
paramMap.put("height",height);
paramMap.put("weight",weight);
return paramMap; return paramMap;
} }
@@ -74,6 +80,8 @@ public class Ddj3Thread extends BaseDdjThread {
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setWarehouseId(WAREHOUSE_01); mydoJob.setWarehouseId(WAREHOUSE_01);
mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_03)); mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_03));
mydoJob.setStatus("1");
return mydoJob; return mydoJob;
} }

View File

@@ -18,6 +18,10 @@ import static com.ruoyi.common.Constant.*;
@Slf4j @Slf4j
public class Ddj4Thread extends BaseDdjThread { public class Ddj4Thread extends BaseDdjThread {
public Ddj4Thread(PlcDdjRead plcDdjRead) {
super(plcDdjRead);
}
@Override @Override
public void init() { public void init() {
super.init(); super.init();
@@ -38,8 +42,8 @@ public class Ddj4Thread extends BaseDdjThread {
ssjList.put("outSsj2", outSsj2); ssjList.put("outSsj2", outSsj2);
//初始化巷道口 排 列 层 //初始化巷道口 排 列 层
roadwayMap.put("L1001", Arrays.asList(1, 1, 1)); roadwayMap.put("L1001", Arrays.asList(1, 0, 1));
roadwayMap.put("L1002", Arrays.asList(2, 1, 1)); roadwayMap.put("L1002", Arrays.asList(2, 0, 1));
roadwayRollback.put("L1001", 92); roadwayRollback.put("L1001", 92);
roadwayRollback.put("L1002", 93); roadwayRollback.put("L1002", 93);
@@ -49,11 +53,13 @@ public class Ddj4Thread extends BaseDdjThread {
@Override @Override
public HashMap<String, Object> getParamMap(String trayCode,Integer height) { public HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight) {
HashMap<String, Object> paramMap = new HashMap<>(); HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("trayCode", trayCode); paramMap.put("trayCode", trayCode);
paramMap.put("warehouseId",WAREHOUSE_02); paramMap.put("warehouseId",WAREHOUSE_02);
paramMap.put("roadwayId",ROADWAY_ID_01); paramMap.put("roadwayId",ROADWAY_ID_04);
paramMap.put("height",height);
paramMap.put("weight",weight);
return paramMap; return paramMap;
} }
@@ -61,7 +67,9 @@ public class Ddj4Thread extends BaseDdjThread {
public MydoJob getOutJobParam() { public MydoJob getOutJobParam() {
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setWarehouseId(WAREHOUSE_02); mydoJob.setWarehouseId(WAREHOUSE_02);
mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_01)); mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_04));
mydoJob.setStatus("1");
return mydoJob; return mydoJob;
} }

View File

@@ -18,6 +18,10 @@ import static com.ruoyi.common.Constant.*;
@Slf4j @Slf4j
public class Ddj5Thread extends BaseDdjThread { public class Ddj5Thread extends BaseDdjThread {
public Ddj5Thread(PlcDdjRead plcDdjRead) {
super(plcDdjRead);
}
@Override @Override
public void init() { public void init() {
super.init(); super.init();
@@ -47,11 +51,13 @@ public class Ddj5Thread extends BaseDdjThread {
} }
@Override @Override
public HashMap<String, Object> getParamMap(String trayCode,Integer height) { public HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight) {
HashMap<String, Object> paramMap = new HashMap<>(); HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("trayCode", trayCode); paramMap.put("trayCode", trayCode);
paramMap.put("warehouseId",WAREHOUSE_02); paramMap.put("warehouseId",WAREHOUSE_02);
paramMap.put("roadwayId",ROADWAY_ID_02); paramMap.put("roadwayId",ROADWAY_ID_02);
paramMap.put("height",height);
paramMap.put("weight",weight);
return paramMap; return paramMap;
} }
@@ -60,6 +66,8 @@ public class Ddj5Thread extends BaseDdjThread {
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setWarehouseId(WAREHOUSE_02); mydoJob.setWarehouseId(WAREHOUSE_02);
mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_02)); mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_02));
mydoJob.setStatus("1");
return mydoJob; return mydoJob;
} }

View File

@@ -18,6 +18,10 @@ import static com.ruoyi.common.Constant.*;
@Slf4j @Slf4j
public class Ddj6Thread extends BaseDdjThread { public class Ddj6Thread extends BaseDdjThread {
public Ddj6Thread(PlcDdjRead plcDdjRead) {
super(plcDdjRead);
}
@Override @Override
public void init() { public void init() {
super.init(); super.init();
@@ -48,11 +52,14 @@ public class Ddj6Thread extends BaseDdjThread {
@Override @Override
public HashMap<String, Object> getParamMap(String trayCode,Integer height) { public HashMap<String, Object> getParamMap(String trayCode,Integer height,double weight) {
HashMap<String, Object> paramMap = new HashMap<>(); HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("trayCode", trayCode); paramMap.put("trayCode", trayCode);
paramMap.put("warehouseId",WAREHOUSE_02); paramMap.put("warehouseId",WAREHOUSE_02);
paramMap.put("roadwayId",ROADWAY_ID_03); paramMap.put("roadwayId",ROADWAY_ID_03);
paramMap.put("height",height);
paramMap.put("weight",weight);
return paramMap; return paramMap;
} }
@@ -61,6 +68,8 @@ public class Ddj6Thread extends BaseDdjThread {
MydoJob mydoJob = new MydoJob(); MydoJob mydoJob = new MydoJob();
mydoJob.setWarehouseId(WAREHOUSE_02); mydoJob.setWarehouseId(WAREHOUSE_02);
mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_03)); mydoJob.setRoadwayId(String.valueOf(ROADWAY_ID_03));
mydoJob.setStatus("1");
return mydoJob; return mydoJob;
} }

View File

@@ -0,0 +1,43 @@
package com.ruoyi.schedule.util;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class CheckWeight {
public String sendWeight(String ip, int por) {
String zhi = "e9";
try (
Socket socket = new Socket(ip, por);
InputStream is = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(is);
) {
Thread.sleep(1000);
char[] charArray = new char[8];
System.out.println("开始读取");
int readLength = inputStreamReader.read(charArray);
System.out.println("readLength:" + readLength);
if (readLength != -1) {
String newString = new String(charArray, 0, readLength);
newString = newString.replaceAll("\r|\n", "");
if (newString.length() == 8 && !newString.equals("=0000000")) {
newString = newString.substring(1, 8);
newString = newString.replaceAll("^(0+)", "");
zhi = newString;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return zhi;
}
public static void main(String[] args) {
CheckWeight checkWeight = new CheckWeight();
System.out.println(checkWeight.sendWeight("192.168.56.101", 4001));
}
}

View File

@@ -6,7 +6,7 @@ spring:
druid: druid:
#主数据信息 #主数据信息
master: master:
url: jdbc:sqlserver://172.16.2.170:1433;databaseName=FT541-wcs; url: jdbc:sqlserver://127.0.0.1:1433;databaseName=FT541-wcs;
username: sa username: sa
password: Flrd0914. password: Flrd0914.
# 从库数据源 # 从库数据源

View File

@@ -68,11 +68,11 @@ spring:
# redis 配置 # redis 配置
redis: redis:
# 地址 # 地址
host: 172.16.2.170 host: 127.0.0.1
# 端口,默认为6379 # 端口,默认为6379
port: 6379 port: 6379
# 数据库索引 # 数据库索引
database: 1 database: 2
# 密码 # 密码
password: 123456 password: 123456
# 连接超时时间 # 连接超时时间

View File

@@ -111,7 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="height != null">height = #{height},</if> <if test="height != null">height = #{height},</if>
<if test="sbzt != null">status = #{sbzt},</if> <if test="sbzt != null">status = #{sbzt},</if>
<if test="jxdw != null">jxdw = #{jxdw},</if> <if test="jxdw != null">jxdw = #{jxdw},</if>
<if test="spare1 != null">by = #{spare1},</if> <if test="spare1 != null">spare1 = #{spare1},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>