2026.3.18

This commit is contained in:
1009473166@qq.com
2026-03-18 14:22:57 +08:00
parent 24fb696a67
commit 24eaaa2823
13 changed files with 120 additions and 33 deletions

View File

@@ -1,5 +1,6 @@
package com.ruoyi;
import com.ruoyi.schedule.ScheduleThread;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -7,6 +8,8 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.Resource;
/**
* 启动程序
*
@@ -17,6 +20,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync
public class RuoYiApplication
{
public static void main(String[] args)
{
// System.setProperty("spring.devtools.restart.enabled", "false");

View File

@@ -2,7 +2,6 @@ package com.ruoyi.queue.srgv.mapper;
import java.util.List;
import com.ruoyi.queue.srgv.domain.WcsSrgvQueue;
import org.apache.ibatis.annotations.Param;
/**
* 四向小车任务队列Mapper接口
@@ -10,11 +9,10 @@ import org.apache.ibatis.annotations.Param;
* @author ruoyi
* @date 2025-11-21
*/
public interface WcsSrgvQueueMapper
{
public interface WcsSrgvQueueMapper {
/**
* 查询四向小车任务队列
*
*
* @param guid 四向小车任务队列主键
* @return 四向小车任务队列
*/
@@ -29,12 +27,9 @@ public interface WcsSrgvQueueMapper
public WcsSrgvQueue selectWcsSrgvQueueByFloor(String theFloor);
/**
* 查询四向小车任务队列列表
*
*
* @param wcsSrgvQueue 四向小车任务队列
* @return 四向小车任务队列集合
*/
@@ -42,7 +37,7 @@ public interface WcsSrgvQueueMapper
/**
* 新增四向小车任务队列
*
*
* @param wcsSrgvQueue 四向小车任务队列
* @return 结果
*/
@@ -50,7 +45,7 @@ public interface WcsSrgvQueueMapper
/**
* 修改四向小车任务队列
*
*
* @param wcsSrgvQueue 四向小车任务队列
* @return 结果
*/
@@ -58,7 +53,7 @@ public interface WcsSrgvQueueMapper
/**
* 删除四向小车任务队列
*
*
* @param guid 四向小车任务队列主键
* @return 结果
*/
@@ -66,7 +61,7 @@ public interface WcsSrgvQueueMapper
/**
* 批量删除四向小车任务队列
*
*
* @param guids 需要删除的数据主键集合
* @return 结果
*/
@@ -77,4 +72,7 @@ public interface WcsSrgvQueueMapper
Integer selectTsj();
Integer selectByCaogoPlaceSite(String siteId);
Integer selectByEndSite();
}

View File

@@ -83,4 +83,6 @@ public interface IWcsSrgvQueueService
Integer selectTsj();
Integer selectByCaogoPlaceSite(String siteId);
Integer selectByEndSite();
}

View File

@@ -131,6 +131,28 @@ public class WcsSrgvQueueServiceImpl implements IWcsSrgvQueueService
return wcsSrgvQueueMapper.selectByCaogoPlaceSite(siteId);
}
@Override
public String selectMinCountJob( List<String> outModelSSJ) {
return wcsSrgvQueueMapper.selectMinCountJob(outModelSSJ) ;
}
@Override
public Integer selectTsj() {
return wcsSrgvQueueMapper.selectTsj();
}
@Override
public Integer selectByCaogoPlaceSite(String siteId) {
return wcsSrgvQueueMapper.selectByCaogoPlaceSite(siteId);
}
@Override
public Integer selectByEndSite() {
return wcsSrgvQueueMapper.selectByEndSite();
}
@Override
public WcsSrgvQueue insertHistory(String taskNo) {
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueueMapper.selectWcsSrgvQueueByTaskNo(taskNo);

View File

@@ -79,6 +79,12 @@ public class PlcSrgvRead implements Runnable {
if (read1.IsSuccess) {
setValueByByte1(read1.Content, deviceSrgv);
}
OperateResultExOne<byte[]> read5 = modbusTcpNet.Read("4081", (short) 2);//2400-2414
if (read5.IsSuccess) {
setValueByByte5(read1.Content, deviceSrgv);
}
//读取二段任务 小车是否接收完成1段作业
OperateResultExOne<byte[]> read3 = modbusTcpNet.Read("1000", (short) 2);//2400-2414
if (read3.IsSuccess) {
@@ -111,7 +117,7 @@ public class PlcSrgvRead implements Runnable {
// agvData.setStatus(0);
agvData.setStatus(Convert.toInt(byteTransform.TransInt16(content, 8)));
//载货标志
agvData.setCargoFlag(Convert.toInt(byteTransform.TransInt16(content, 13)));
// agvData.setCargoFlag(Convert.toInt(byteTransform.TransInt32(content[1], 13)));
//接收完成标志
// agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 10)));
// agvData.setFinish(0);
@@ -131,6 +137,15 @@ public class PlcSrgvRead implements Runnable {
}
private void setValueByByte5(byte[] content, DeviceSrgv agvData) {
int cargoFlag = content[27] & 0xFF;
agvData.setCargoFlag(cargoFlag);
}
//单字
private void setValueByByte3(byte[] content, DeviceSrgv agvData) {
// agvData.setTaskType(0);

View File

@@ -68,6 +68,10 @@ public class PlcSsjRead implements Runnable {
// 线体到位输送机
readPlcOtherSsj(ssjDevice);
break;
case "4":
// 线体到位输送机
readPlcInDwSsj(ssjDevice);
break;
}
}
@@ -86,6 +90,18 @@ public class PlcSsjRead implements Runnable {
}
}
private void readPlcInDwSsj(DeviceSsj ssjDevice) {
OperateResultExOne<byte[]> read2 = readWriteNet.Read(ssjDevice.getPlcDbReadAddress(), Short.parseShort("10"));
String ddsx1 = "0";
if (read2.IsSuccess) {
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
ssjDevice.setKx(ParseUtil.optInt(4, ddsx1));
ssjDevice.setDw(ParseUtil.optInt(6, ddsx1));
ssjDevice.setTaskNo(ParseUtil.optDInt(0, ddsx1));
}
}
/**
* 其他输送机
*

View File

@@ -37,6 +37,7 @@ public class CdzThread implements Runnable {
private final Integer LITTLE_BETTERY = 40;
private final Integer MIDDLE_BETTERY = 70;
private final Integer MAX_BETTERY = 90;
private final Integer JOB_BETTERY=50;
private ISrgvChargingJobService chargingJobService;
private IDeviceCdzService deviceCdzService;
private IDeviceSrgvService deviceSrgvService;
@@ -139,7 +140,7 @@ public class CdzThread implements Runnable {
List<DeviceCdz> deviceCdzdd = deviceCdzService.selectDeviceCdzHasSRgvList();
for (DeviceCdz deviceCdz : deviceCdzdd) {
DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1());
if (((deviceSrgv.getBattery() >= MIDDLE_BETTERY && count > 0) || deviceSrgv.getBattery() >= MAX_BETTERY)
if (((deviceSrgv.getBattery() >= JOB_BETTERY && count > 0) || deviceSrgv.getBattery() >= MAX_BETTERY)
&& deviceSrgv.getWorkMode() == 5
&& deviceSrgv.getChargeFlag() == 2 && deviceCdz.getStatus() == 1) {
createChargingOutJob(PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1()), deviceCdz);

View File

@@ -338,9 +338,11 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
}
if (deviceSrgv != null) {
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString());
WcsSrgvQueue wcsSrgvQueue4 = wcsSagvQueueMapper.selectWcsSrgvQueueByFloor(mydoJob1.getTheFloor());
// WcsSrgvQueue wcsSrgvQueue4 = wcsSagvQueueMapper.selectWcsSrgvQueueByFloor(mydoJob1.getTheFloor());
if (wcsSrgvQueue2 == null && deviceSrgv.getStatus() == 1 && wcsSrgvQueue4 == null) {
if (wcsSrgvQueue2 == null && deviceSrgv.getStatus() == 1
// && wcsSrgvQueue4 == null
) {
//查询小车是否为取货楼层
String endSite = "";
String issued = "0";
@@ -1416,13 +1418,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
//不同层,终点为提升机
endSite = "tsj";
}
// 如果终点是提升机需要判断是否有其他任务也是提升机的 这个时候先停一下
// if (endSite.equals("tsj")) {
// Integer count = wcsSagvQueueMapper.selectTsj();
// if (count > 0) {
// return;
// }
// }
if ("L1004".equals(wcsSrgvMapq.getRemark()) || "L1005".equals(wcsSrgvMapq.getRemark())) {
xfType = "1";//入库
@@ -1517,7 +1513,26 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
{
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
}
// 如果是空车且 任务是点到点并且目标点是“070301”
}else if ("1".equals(taskType)&&wcsSrgvQueue.getDefault02().equals("4")&&wcsSrgvQueue.getEndSite().equals("070301")){
String endSite = "";
String xfType = "";
WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
// 取货点地图和放货点地图不为空
if (wcsSrgvMapq != null && wcsSrgvMapf != null) {
//如果是同层,终点为取货点
endSite = cargoPickSite;
// 更新目标点,修改执行队列
wcsSrgvQueue.setEndSite(endSite);
wcsSrgvQueue.setDefault02("4");
wcsSrgvQueue.setIssued("0");
wcsSrgvQueue.setExecutionStatus("1");
wcsSrgvQueue.setTaskType("1");
}
wcsSrgvQueue.setStartSite(currSite);
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue);
}
//更新小车待机时间

View File

@@ -27,7 +27,9 @@ import com.ruoyi.schedule.plcRead.util.Tools;
import lombok.extern.slf4j.Slf4j;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
public class TsjThread implements Runnable {
@@ -212,8 +214,16 @@ public class TsjThread implements Runnable {
WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
if (wcsSrgvMapq != null && wcsSrgvMapf != null) {
Integer count = wcsSrgvQueueService.selectByEndSite();
List<DeviceSrgv> collect = PlcSrgvRead.deviceSrgvMap.values().stream().filter(d ->
d.getCurrSite().equals(cargoPickSite))
.collect(Collectors.toList());
if (count > 0 || !collect.isEmpty()) {
wcsSrgvQueue.setEndSite("070301");
} else {
wcsSrgvQueue.setEndSite(cargoPickSite);
}
wcsSrgvQueue.setEndSite(cargoPickSite);
wcsSrgvQueue.setDefault02("4");
wcsSrgvQueue.setTheFloor(wcsSrgvMapq.getTheLayer().toString());
wcsSrgvQueue.setDefault07(wcsSrgvMapf.getTheLayer().toString());

View File

@@ -80,7 +80,7 @@ public class GetDeviceSrgvMap {
AgvDto dto = new AgvDto();
dto.setId(d.getDeviceId() == null ? "" : String.format("%04d", d.getDeviceId()));
dto.setTaskNo(d.getTaskNo() == null ? "" : String.valueOf(d.getTaskNo()));
dto.setIsThere((d.getWorkPhase() >= 3 && d.getWorkPhase() < 6 ? "1" : "0"));
dto.setIsThere(d.getCargoFlag()==256?"1":"0");
Integer wp = d.getWorkPhase();
String status = "0";
if (wp != null) {

View File

@@ -101,14 +101,10 @@ public class GetDeviceSsjMap {
dto.setAlarmMsg(DictUtils.getDictLabel("ssj_ex", String.valueOf(d.getException())));
dto.setKX(String.valueOf(d.getKx()));
if (!dto.getTaskNo().equals("0")){
if (dto.getRotationDirection().equals("1")){
dto.setDW(String.valueOf(d.getDw()));
if (dto.getKX().equals("0")){
dto.setDW("1");
}else {
if (dto.getKX().equals("0")){
dto.setDW("1");
}else {
dto.setDW("0");
}
dto.setDW("0");
}
}else {
dto.setDW("0");

View File

@@ -96,6 +96,7 @@ public class Wcs2wmsgetEmptyCargoSpace {
dto.setTrayCode(getText(node, "trayCode"));
dto.setProductCode(getText(node, "productCode"));
dto.setProductName(getText(node, "productName"));
dto.setCargoSpaceId(getText(node, "cargoSpaceId"));
return dto;
}
@@ -125,5 +126,6 @@ public class Wcs2wmsgetEmptyCargoSpace {
private String trayCode;
private String productCode;
private String productName;
private String cargoSpaceId;
}
}

View File

@@ -222,4 +222,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select count(1) from wcs_srgv_queue where cargo_place_site=#{siteId}
</select>
<select id="selectByEndSite" resultType="java.lang.Integer" >
select count(1) from wcs_srgv_queue where end_site='070101' or end_site ='050101'
</select>
</mapper>