wcs调度修改

This commit is contained in:
liuhanqing
2025-07-04 10:16:18 +08:00
parent cee863a6e9
commit ae778084c4
13 changed files with 704 additions and 61 deletions

View File

@@ -22,7 +22,6 @@ import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.device.agv.domain.AgvQueue;
import com.ruoyi.device.agv.service.IAgvQueueService;
import com.ruoyi.schedule.plcRead.ssj.domain.SsjDevice;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

View File

@@ -0,0 +1,104 @@
package com.ruoyi.device.ssj.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.device.ssj.service.IDeviceSsjService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 输送机Controller
*
* @author ruoyi
* @date 2025-07-04
*/
@RestController
@RequestMapping("/device/ssj")
public class DeviceSsjController extends BaseController
{
@Autowired
private IDeviceSsjService deviceSsjService;
/**
* 查询输送机列表
*/
@PreAuthorize("@ss.hasPermi('device:ssj:list')")
@GetMapping("/list")
public TableDataInfo list(DeviceSsj deviceSsj)
{
startPage();
List<DeviceSsj> list = deviceSsjService.selectDeviceSsjList(deviceSsj);
return getDataTable(list);
}
/**
* 导出输送机列表
*/
@PreAuthorize("@ss.hasPermi('device:ssj:export')")
@Log(title = "输送机", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, DeviceSsj deviceSsj)
{
List<DeviceSsj> list = deviceSsjService.selectDeviceSsjList(deviceSsj);
ExcelUtil<DeviceSsj> util = new ExcelUtil<DeviceSsj>(DeviceSsj.class);
util.exportExcel(response, list, "输送机数据");
}
/**
* 获取输送机详细信息
*/
@PreAuthorize("@ss.hasPermi('device:ssj:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(deviceSsjService.selectDeviceSsjById(id));
}
/**
* 新增输送机
*/
@PreAuthorize("@ss.hasPermi('device:ssj:add')")
@Log(title = "输送机", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody DeviceSsj deviceSsj)
{
return toAjax(deviceSsjService.insertDeviceSsj(deviceSsj));
}
/**
* 修改输送机
*/
@PreAuthorize("@ss.hasPermi('device:ssj:edit')")
@Log(title = "输送机", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody DeviceSsj deviceSsj)
{
return toAjax(deviceSsjService.updateDeviceSsj(deviceSsj));
}
/**
* 删除输送机
*/
@PreAuthorize("@ss.hasPermi('device:ssj:remove')")
@Log(title = "输送机", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(deviceSsjService.deleteDeviceSsjByIds(ids));
}
}

View File

@@ -0,0 +1,172 @@
package com.ruoyi.device.ssj.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 输送机对象 device_ssj
*
* @author ruoyi
* @date 2025-07-04
*/
public class DeviceSsj extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 设备唯一编码 */
@Excel(name = "设备唯一编码")
private String deviceCode ;
/** 设备名称 */
@Excel(name = "设备名称")
private String name ;
/** 类型 */
@Excel(name = "类型")
private String type;
/** 设备IP */
@Excel(name = "设备IP")
private String ipAddress;
/** PLC读取地址 */
@Excel(name = "PLC读取地址")
private String plcDbReadAddress;
/** 0-F 1-T */
@Excel(name = "0-F 1-T")
private String isActive;
/** PLC写入地址 */
@Excel(name = "PLC写入地址")
private String plcDbWriteAddress;
/** 入库请求 */
@Excel(name = "入库请求")
private Integer rkqq;
/** 空闲 */
@Excel(name = "空闲")
private Integer kx;
/** 到位 */
@Excel(name = "到位")
private Integer dw;
/** 条码 */
@Excel(name = "条码")
private String trayCode;
/** 任务号 */
@Excel(name = "任务号")
private Integer taskNo;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDeviceCode() {
return deviceCode;
}
public void setDeviceCode(String deviceCode) {
this.deviceCode = deviceCode;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getIpAddress() {
return ipAddress;
}
public void setIpAddress(String ipAddress) {
this.ipAddress = ipAddress;
}
public String getPlcDbReadAddress() {
return plcDbReadAddress;
}
public void setPlcDbReadAddress(String plcDbReadAddress) {
this.plcDbReadAddress = plcDbReadAddress;
}
public String getIsActive() {
return isActive;
}
public void setIsActive(String isActive) {
this.isActive = isActive;
}
public String getPlcDbWriteAddress() {
return plcDbWriteAddress;
}
public void setPlcDbWriteAddress(String plcDbWriteAddress) {
this.plcDbWriteAddress = plcDbWriteAddress;
}
public Integer getRkqq() {
return rkqq;
}
public void setRkqq(Integer rkqq) {
this.rkqq = rkqq;
}
public Integer getKx() {
return kx;
}
public void setKx(Integer kx) {
this.kx = kx;
}
public Integer getDw() {
return dw;
}
public void setDw(Integer dw) {
this.dw = dw;
}
public String getTrayCode() {
return trayCode;
}
public void setTrayCode(String trayCode) {
this.trayCode = trayCode;
}
public Integer getTaskNo() {
return taskNo;
}
public void setTaskNo(Integer taskNo) {
this.taskNo = taskNo;
}
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.device.ssj.mapper;
import java.util.List;
import com.ruoyi.device.ssj.domain.DeviceSsj;
/**
* 输送机Mapper接口
*
* @author ruoyi
* @date 2025-07-04
*/
public interface DeviceSsjMapper
{
/**
* 查询输送机
*
* @param id 输送机主键
* @return 输送机
*/
public DeviceSsj selectDeviceSsjById(Long id);
/**
* 查询输送机列表
*
* @param deviceSsj 输送机
* @return 输送机集合
*/
public List<DeviceSsj> selectDeviceSsjList(DeviceSsj deviceSsj);
/**
* 新增输送机
*
* @param deviceSsj 输送机
* @return 结果
*/
public int insertDeviceSsj(DeviceSsj deviceSsj);
/**
* 修改输送机
*
* @param deviceSsj 输送机
* @return 结果
*/
public int updateDeviceSsj(DeviceSsj deviceSsj);
/**
* 删除输送机
*
* @param id 输送机主键
* @return 结果
*/
public int deleteDeviceSsjById(Long id);
/**
* 批量删除输送机
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteDeviceSsjByIds(Long[] ids);
}

View File

@@ -0,0 +1,61 @@
package com.ruoyi.device.ssj.service;
import java.util.List;
import com.ruoyi.device.ssj.domain.DeviceSsj;
/**
* 输送机Service接口
*
* @author ruoyi
* @date 2025-07-04
*/
public interface IDeviceSsjService
{
/**
* 查询输送机
*
* @param id 输送机主键
* @return 输送机
*/
public DeviceSsj selectDeviceSsjById(Long id);
/**
* 查询输送机列表
*
* @param deviceSsj 输送机
* @return 输送机集合
*/
public List<DeviceSsj> selectDeviceSsjList(DeviceSsj deviceSsj);
/**
* 新增输送机
*
* @param deviceSsj 输送机
* @return 结果
*/
public int insertDeviceSsj(DeviceSsj deviceSsj);
/**
* 修改输送机
*
* @param deviceSsj 输送机
* @return 结果
*/
public int updateDeviceSsj(DeviceSsj deviceSsj);
/**
* 批量删除输送机
*
* @param ids 需要删除的输送机主键集合
* @return 结果
*/
public int deleteDeviceSsjByIds(Long[] ids);
/**
* 删除输送机信息
*
* @param id 输送机主键
* @return 结果
*/
public int deleteDeviceSsjById(Long id);
}

View File

@@ -0,0 +1,95 @@
package com.ruoyi.device.ssj.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.device.ssj.mapper.DeviceSsjMapper;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.device.ssj.service.IDeviceSsjService;
/**
* 输送机Service业务层处理
*
* @author ruoyi
* @date 2025-07-04
*/
@Service
public class DeviceSsjServiceImpl implements IDeviceSsjService
{
@Autowired
private DeviceSsjMapper deviceSsjMapper;
/**
* 查询输送机
*
* @param id 输送机主键
* @return 输送机
*/
@Override
public DeviceSsj selectDeviceSsjById(Long id)
{
return deviceSsjMapper.selectDeviceSsjById(id);
}
/**
* 查询输送机列表
*
* @param deviceSsj 输送机
* @return 输送机
*/
@Override
public List<DeviceSsj> selectDeviceSsjList(DeviceSsj deviceSsj)
{
return deviceSsjMapper.selectDeviceSsjList(deviceSsj);
}
/**
* 新增输送机
*
* @param deviceSsj 输送机
* @return 结果
*/
@Override
public int insertDeviceSsj(DeviceSsj deviceSsj)
{
deviceSsj.setCreateTime(DateUtils.getNowDate());
return deviceSsjMapper.insertDeviceSsj(deviceSsj);
}
/**
* 修改输送机
*
* @param deviceSsj 输送机
* @return 结果
*/
@Override
public int updateDeviceSsj(DeviceSsj deviceSsj)
{
return deviceSsjMapper.updateDeviceSsj(deviceSsj);
}
/**
* 批量删除输送机
*
* @param ids 需要删除的输送机主键
* @return 结果
*/
@Override
public int deleteDeviceSsjByIds(Long[] ids)
{
return deviceSsjMapper.deleteDeviceSsjByIds(ids);
}
/**
* 删除输送机信息
*
* @param id 输送机主键
* @return 结果
*/
@Override
public int deleteDeviceSsjById(Long id)
{
return deviceSsjMapper.deleteDeviceSsjById(id);
}
}

View File

@@ -1,9 +1,12 @@
package com.ruoyi.schedule;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.device.ssj.service.IDeviceSsjService;
import com.ruoyi.schedule.plcRead.ssj.domain.PlcConnectInfo;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.CustomThread;
import com.ruoyi.schedule.plcRead.ssj.domain.SsjDevice;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@@ -14,6 +17,8 @@ import java.util.concurrent.ConcurrentHashMap;
public class ScheduleThread {
public CustomThread customThread;
@Autowired
private IDeviceSsjService deviceSsjService;
/**
* 项目初始化启动
@@ -23,10 +28,12 @@ public class ScheduleThread {
String ip = "192.168.0.1";
int port = 80;
PlcConnectInfo ssjPlcConnectInfo = new PlcConnectInfo(ip, port);
ConcurrentHashMap<String, SsjDevice>list = new ConcurrentHashMap<>();
ConcurrentHashMap<String, DeviceSsj>list = new ConcurrentHashMap<>();
//获取要去取的输送机
List<DeviceSsj> deviceSsjs = deviceSsjService.selectDeviceSsjList(new DeviceSsj());
for (DeviceSsj deviceSsj : deviceSsjs) {
list.put(deviceSsj.getDeviceCode(),deviceSsj);
}
PlcRead plcRead = new PlcRead(list,ssjPlcConnectInfo);
Thread plcReadThread = new Thread(plcRead);

View File

@@ -6,9 +6,9 @@ import HslCommunication.Core.Types.OperateResult;
import HslCommunication.Core.Types.OperateResultExOne;
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import cn.hutool.core.collection.CollUtil;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.domain.PlcConnectInfo;
import com.ruoyi.schedule.plcRead.ssj.domain.SsjDevice;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import com.ruoyi.schedule.plcRead.util.ParseUtil;
import lombok.extern.slf4j.Slf4j;
@@ -18,7 +18,7 @@ import java.util.concurrent.ConcurrentHashMap;
@Slf4j
public class PlcRead implements Runnable {
public static ConcurrentHashMap<String, SsjDevice> deviceMap;
public static ConcurrentHashMap<String, DeviceSsj> deviceMap;
private volatile boolean running = true;
public SiemensS7Net siemensS7Net = null;
@@ -27,7 +27,7 @@ public class PlcRead implements Runnable {
private int port;
private boolean success = false;
public PlcRead(ConcurrentHashMap<String, SsjDevice> deviceMap, PlcConnectInfo plcConnectInfo) {
public PlcRead(ConcurrentHashMap<String, DeviceSsj> deviceMap, PlcConnectInfo plcConnectInfo) {
this.deviceMap = deviceMap;
this.ip = plcConnectInfo.getIp();
this.port = plcConnectInfo.getPort();
@@ -40,11 +40,11 @@ public class PlcRead implements Runnable {
if (IsConnect()) {
for (String ssjCode : deviceMap.keySet()) {
SsjDevice ssjDevice = deviceMap.get(ssjCode);
DeviceSsj ssjDevice = deviceMap.get(ssjCode);
String readAddress = "";
String writeAddress = "";
switch (ssjDevice.getDeviceCode()){
switch (ssjDevice.getDeviceCode()) {
case "G5011":
// 处理 G5011
readAddress = "";
@@ -404,6 +404,9 @@ public class PlcRead implements Runnable {
continue;
}
ssjDevice.setPlcDbReadAddress(readAddress);
ssjDevice.setPlcDbWriteAddress(writeAddress);
switch (ssjDevice.getType()) {
case "1":
readPlcOutSsj(ssjDevice);
@@ -439,18 +442,16 @@ public class PlcRead implements Runnable {
*
* @param ssjDevice
*/
private void readPlcOtherSsj(SsjDevice ssjDevice) {
ssjDevice.setPlcReadAddress(ssjDevice.getPlcReadAddress());
ssjDevice.setPlcWriteAddress(ssjDevice.getPlcWriteAddress());
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18"));
private void readPlcOtherSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setEmpty(ParseUtil.optInt(0,ddsx1));
ssjDevice.setInPlace(ParseUtil.optInt(1,ddsx1));
ssjDevice.setEntryRequest(ParseUtil.optInt(2,ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3,ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4,ddsx1));
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
}
}
@@ -459,18 +460,16 @@ public class PlcRead implements Runnable {
*
* @param ssjDevice
*/
private void readPlcInSsj(SsjDevice ssjDevice) {
ssjDevice.setPlcReadAddress(ssjDevice.getPlcReadAddress());
ssjDevice.setPlcWriteAddress(ssjDevice.getPlcWriteAddress());
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18"));
private void readPlcInSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setEmpty(ParseUtil.optInt(0,ddsx1));
ssjDevice.setInPlace(ParseUtil.optInt(1,ddsx1));
ssjDevice.setEntryRequest(ParseUtil.optInt(2,ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3,ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4,ddsx1));
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
}
}
@@ -479,37 +478,34 @@ public class PlcRead implements Runnable {
*
* @param ssjDevice
*/
private void readPlcPickSsj(SsjDevice ssjDevice) {
ssjDevice.setPlcReadAddress(ssjDevice.getPlcReadAddress());
ssjDevice.setPlcWriteAddress(ssjDevice.getPlcWriteAddress());
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18"));
private void readPlcPickSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setEmpty(ParseUtil.optInt(0,ddsx1));
ssjDevice.setInPlace(ParseUtil.optInt(1,ddsx1));
ssjDevice.setEntryRequest(ParseUtil.optInt(2,ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3,ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4,ddsx1));
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
}
}
/**
* 出库输送机
*
* @param ssjDevice
*/
private void readPlcOutSsj(SsjDevice ssjDevice) {
ssjDevice.setPlcReadAddress(ssjDevice.getPlcReadAddress());
ssjDevice.setPlcWriteAddress(ssjDevice.getPlcWriteAddress());
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18"));
private void readPlcOutSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("18"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setEmpty(ParseUtil.optInt(0,ddsx1));
ssjDevice.setInPlace(ParseUtil.optInt(1,ddsx1));
ssjDevice.setEntryRequest(ParseUtil.optInt(2,ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3,ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4,ddsx1));
ssjDevice.setKx(ParseUtil.optInt(0, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(1, ddsx1));
ssjDevice.setRkqq(ParseUtil.optInt(2, ddsx1));
ssjDevice.setTrayCode(ParseUtil.optString(3, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(4, ddsx1));
}
}

View File

@@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SsjDevice {
public class Ssj {
private String deviceCode;
private String plcReadAddress;

View File

@@ -10,7 +10,9 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse;
import com.ruoyi.api.domain.wcs2wms.MydoJob;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.schedule.plcRead.ssj.domain.SsjDevice;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -23,7 +25,7 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
public class InSsjThread {
public ConcurrentHashMap<String, SsjDevice> deviceMap;
public ConcurrentHashMap<String, DeviceSsj> deviceMap;
@Resource
private IApiService apiService;
@@ -31,9 +33,20 @@ public class InSsjThread {
private IAgvQueueService agvQueueService;
public void inDispatch(SsjDevice inSsjDevice) {
public void run(){
for (String ssjCode : PlcRead.deviceMap.keySet()) {
DeviceSsj deviceSsj = PlcRead.deviceMap.get(ssjCode);
if ("3".equals(deviceSsj.getType())){
inDispatch(deviceSsj);
}
}
}
public void inDispatch(DeviceSsj inSsjDevice) {
//如果入库请求1 并且 托盘码不为空
if (inSsjDevice.getEntryRequest() == 1 && StrUtil.isNotEmpty(inSsjDevice.getTrayCode())) {
if (inSsjDevice.getRkqq() == 1 && StrUtil.isNotEmpty(inSsjDevice.getTrayCode())) {
//根据入口,查询对应的入库作业
MydoJob mydoJobParam = new MydoJob();
//mydoJobParam.setEntranceId(inSsjDevice.getDeviceCode());
@@ -103,7 +116,7 @@ public class InSsjThread {
* @param mydoJob
* @return
*/
private AgvQueue createAgvQueue(SsjDevice ssjDevice, MydoJob mydoJob) {
private AgvQueue createAgvQueue(DeviceSsj ssjDevice, MydoJob mydoJob) {
//生成ctu执行队列
AgvQueue agvQueue = new AgvQueue();
String reqCode = IdUtil.fastSimpleUUID();

View File

@@ -7,7 +7,9 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRequest
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskResponse;
import com.ruoyi.api.domain.wcs2wms.MydoJob;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.schedule.plcRead.ssj.domain.SsjDevice;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -20,17 +22,25 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
public class OutSsjThread {
public ConcurrentHashMap<String, List<SsjDevice>> deviceMap;
public ConcurrentHashMap<String, DeviceSsj> deviceMap;
@Resource
private IApiService apiService;
@Resource
private IAgvQueueService agvQueueService;
public void run() {
for (String ssjCode : PlcRead.deviceMap.keySet()) {
DeviceSsj deviceSsj = PlcRead.deviceMap.get(ssjCode);
if ("1".equals(deviceSsj.getType())){
outDispatch(deviceSsj);
}
}
}
public void outDispatch(SsjDevice outSsjDevice) {
public void outDispatch(DeviceSsj outSsjDevice) {
//输送线出库
if (outSsjDevice.getEmpty()==1){
if (outSsjDevice.getKx()==1){
//查询对应的作业
AgvQueue agvQueue = new AgvQueue();
agvQueue.setPositionCode2(outSsjDevice.getDeviceCode());

View File

@@ -5,7 +5,9 @@ import com.ruoyi.device.agv.service.IAgvQueueService;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.api.domain.wcs2wms.MydoJob;
import com.ruoyi.api.service.IApiService;
import com.ruoyi.schedule.plcRead.ssj.domain.SsjDevice;
import com.ruoyi.device.ssj.domain.DeviceSsj;
import com.ruoyi.schedule.plcRead.ssj.PlcRead;
import com.ruoyi.schedule.plcRead.ssj.domain.Ssj;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -18,16 +20,24 @@ import java.util.concurrent.ConcurrentHashMap;
@Component
public class PickSsjTread {
public ConcurrentHashMap<String, List<SsjDevice>> deviceMap;
public ConcurrentHashMap<String, DeviceSsj> deviceMap;
@Resource
private IApiService apiService;
@Resource
private IAgvQueueService agvQueueService;
public void run(){
for (String ssjCode : PlcRead.deviceMap.keySet()) {
DeviceSsj deviceSsj = PlcRead.deviceMap.get(ssjCode);
if ("2".equals(deviceSsj.getType())){
pickDispatch(deviceSsj);
}
}
}
public void pickDispatch(SsjDevice pickSsjDevice) {
if (pickSsjDevice.getInPlace() == 1 && pickSsjDevice.getTaskNo() > 0){
public void pickDispatch(DeviceSsj pickSsjDevice) {
if (pickSsjDevice.getDw() == 1 && pickSsjDevice.getTaskNo() > 0){
Integer taskNo = pickSsjDevice.getTaskNo();
MydoJob mydoJobParam = new MydoJob();
mydoJobParam.setStatus("3");