From ae778084c47b42b57566e77295c7afffbd979d61 Mon Sep 17 00:00:00 2001 From: liuhanqing Date: Fri, 4 Jul 2025 10:16:18 +0800 Subject: [PATCH] =?UTF-8?q?wcs=E8=B0=83=E5=BA=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/service/impl/ApiServiceImpl.java | 1 - .../ssj/controller/DeviceSsjController.java | 104 +++++++++++ .../ruoyi/device/ssj/domain/DeviceSsj.java | 172 ++++++++++++++++++ .../device/ssj/mapper/DeviceSsjMapper.java | 61 +++++++ .../device/ssj/service/IDeviceSsjService.java | 61 +++++++ .../service/impl/DeviceSsjServiceImpl.java | 95 ++++++++++ .../com/ruoyi/schedule/ScheduleThread.java | 15 +- .../ruoyi/schedule/plcRead/ssj/PlcRead.java | 80 ++++---- .../ssj/domain/{SsjDevice.java => Ssj.java} | 2 +- .../scheduleTask/ssj/InSsjThread.java | 23 ++- .../scheduleTask/ssj/OutSsjThread.java | 18 +- .../scheduleTask/ssj/PickSsjTread.java | 18 +- .../mapper/device/DeviceSsjMapper.xml | 115 ++++++++++++ 13 files changed, 704 insertions(+), 61 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/device/ssj/controller/DeviceSsjController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/device/ssj/domain/DeviceSsj.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/device/ssj/mapper/DeviceSsjMapper.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/IDeviceSsjService.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/impl/DeviceSsjServiceImpl.java rename ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/domain/{SsjDevice.java => Ssj.java} (96%) create mode 100644 ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml 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 a373aec..a90ee4c 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 @@ -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; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/controller/DeviceSsjController.java b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/controller/DeviceSsjController.java new file mode 100644 index 0000000..231ada4 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/controller/DeviceSsjController.java @@ -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 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 list = deviceSsjService.selectDeviceSsjList(deviceSsj); + ExcelUtil util = new ExcelUtil(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)); + } +} 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 new file mode 100644 index 0000000..2bd96f4 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/domain/DeviceSsj.java @@ -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; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/mapper/DeviceSsjMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/mapper/DeviceSsjMapper.java new file mode 100644 index 0000000..2fbe26f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/mapper/DeviceSsjMapper.java @@ -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 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); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/IDeviceSsjService.java b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/IDeviceSsjService.java new file mode 100644 index 0000000..8a000e4 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/IDeviceSsjService.java @@ -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 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); +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/impl/DeviceSsjServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/impl/DeviceSsjServiceImpl.java new file mode 100644 index 0000000..d3f2513 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/device/ssj/service/impl/DeviceSsjServiceImpl.java @@ -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 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); + } +} 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 1669ff9..2765717 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/ScheduleThread.java @@ -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); - ConcurrentHashMaplist = new ConcurrentHashMap<>(); + ConcurrentHashMaplist = new ConcurrentHashMap<>(); //获取要去取的输送机 - - + List 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); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java index 15127c6..06af88a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/PlcRead.java @@ -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 deviceMap; + public static ConcurrentHashMap 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 deviceMap, PlcConnectInfo plcConnectInfo) { + public PlcRead(ConcurrentHashMap 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 read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18")); + private void readPlcOtherSsj(DeviceSsj ssjDevice) { + OperateResultExOne 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 read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18")); + private void readPlcInSsj(DeviceSsj ssjDevice) { + OperateResultExOne 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 read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18")); + private void readPlcPickSsj(DeviceSsj ssjDevice) { + OperateResultExOne 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 read2 = readWriteNet.Read(ssjDevice.getPlcReadAddress(), Short.parseShort("18")); + private void readPlcOutSsj(DeviceSsj ssjDevice) { + OperateResultExOne 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)); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/domain/SsjDevice.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/domain/Ssj.java similarity index 96% rename from ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/domain/SsjDevice.java rename to ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/domain/Ssj.java index 8f18003..3211d8a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/domain/SsjDevice.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/plcRead/ssj/domain/Ssj.java @@ -7,7 +7,7 @@ import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor -public class SsjDevice { +public class Ssj { private String deviceCode; private String plcReadAddress; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/InSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/InSsjThread.java index 6abbb05..ec51086 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/InSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/InSsjThread.java @@ -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 deviceMap; + public ConcurrentHashMap 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(); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/OutSsjThread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/OutSsjThread.java index 286b9e0..80d346d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/OutSsjThread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/OutSsjThread.java @@ -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> deviceMap; + public ConcurrentHashMap 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()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PickSsjTread.java b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PickSsjTread.java index b0e5317..15b4b49 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PickSsjTread.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/schedule/scheduleTask/ssj/PickSsjTread.java @@ -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> deviceMap; + public ConcurrentHashMap 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"); diff --git a/ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml b/ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml new file mode 100644 index 0000000..f353205 --- /dev/null +++ b/ruoyi-admin/src/main/resources/mapper/device/DeviceSsjMapper.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + select id, device_code , name , type, ip_address, plc_db_read_address, is_active, create_time, plc_db_write_address, rkqq, kx, dw, tray_code, task_no from device_ssj + + + + + + + + insert into device_ssj + + device_code , + name , + type, + ip_address, + plc_db_read_address, + is_active, + create_time, + plc_db_write_address, + rkqq, + kx, + dw, + tray_code, + task_no, + + + #{deviceCode }, + #{name }, + #{type}, + #{ipAddress}, + #{plcDbReadAddress}, + #{isActive}, + #{createTime}, + #{plcDbWriteAddress}, + #{rkqq}, + #{kx}, + #{dw}, + #{trayCode}, + #{taskNo}, + + + + + update device_ssj + + device_code = #{deviceCode }, + name = #{name }, + type = #{type}, + ip_address = #{ipAddress}, + plc_db_read_address = #{plcDbReadAddress}, + is_active = #{isActive}, + create_time = #{createTime}, + plc_db_write_address = #{plcDbWriteAddress}, + rkqq = #{rkqq}, + kx = #{kx}, + dw = #{dw}, + tray_code = #{trayCode}, + task_no = #{taskNo}, + + where id = #{id} + + + + delete from device_ssj where id = #{id} + + + + delete from device_ssj where id in + + #{id} + + + \ No newline at end of file