输送线

This commit is contained in:
张怡蓉
2025-11-25 13:55:21 +08:00
parent f167b97879
commit 150af6a5f8
6 changed files with 127 additions and 5 deletions

View File

@@ -19,6 +19,10 @@ public interface WcsSrgvQueueMapper
*/
public WcsSrgvQueue selectWcsSrgvQueueByGuid(String guid);
public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo);
/**
* 查询四向小车任务队列列表
*

View File

@@ -19,6 +19,10 @@ public interface IWcsSrgvQueueService
*/
public WcsSrgvQueue selectWcsSrgvQueueByGuid(String guid);
public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo);
/**
* 查询四向小车任务队列列表
*

View File

@@ -31,6 +31,12 @@ public class WcsSrgvQueueServiceImpl implements IWcsSrgvQueueService
return wcsSrgvQueueMapper.selectWcsSrgvQueueByGuid(guid);
}
@Override
public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo) {
return wcsSrgvQueueMapper.selectWcsSrgvQueueByTaskNo(taskNo);
}
/**
* 查询四向小车任务队列列表
*

View File

@@ -9,18 +9,24 @@ import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.ruoyi.bas.port.domain.WcsPort;
import com.ruoyi.bas.port.service.IWcsPortService;
import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService;
import com.ruoyi.common.domain.SendData2;
import com.ruoyi.device.srgv.domain.DeviceSrgv;
import com.ruoyi.job.charg.domain.SrgvChargingJob;
import com.ruoyi.job.charg.service.ISrgvChargingJobService;
import com.ruoyi.job.domain.MydoJob;
import com.ruoyi.job.service.IMydoJobService;
import com.ruoyi.queue.srgv.domain.WcsSrgvQueue;
import com.ruoyi.queue.srgv.domain.WcsSrgvQueueFinish;
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueFinishService;
import com.ruoyi.queue.srgv.service.IWcsSrgvQueueService;
import com.ruoyi.schedule.plcRead.srgv.PlcSrgvRead;
import com.ruoyi.schedule.plcRead.srgv.roadUtil.PathFinder;
import com.ruoyi.schedule.plcRead.ssj.PlcSsjRead;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import java.util.HashMap;
@@ -44,6 +50,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
public ISrgvChargingJobService srgvChargingJobMapper;
public IMydoJobService mydoJobService;
public IWcsSrgvMapService wcsSrgvMapService;
public void init() {
@@ -68,7 +78,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
sRgvTask(deviceSrgv, i);
}
createCarInQueue();
createCarInQueue(deviceSrgv);
createCarOutQueue();
@@ -81,9 +91,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
}
}
for(String code:ssjCodeList.keySet()){
}
try {
Thread.sleep(1500);
@@ -121,8 +129,70 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
/**
* 生成入库小车队列
*/
private void createCarInQueue() {
private void createCarInQueue(DeviceSrgv deviceSrgv) {
MydoJob mydoJob = new MydoJob();
mydoJob.setExecutionPhase("2");
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobList(mydoJob);
if(!mydoJobs.isEmpty()){
MydoJob mydoJob1 = mydoJobs.get(0);
// 查询是否有已下发的该任务号队列
WcsSrgvQueue wcsSrgvQueue1 = wcsSagvQueueMapper.selectWcsSrgvQueueByTaskNo(mydoJob1.getTaskNo());
if(wcsSrgvQueue1==null){
//查询1楼是否有空闲联机自动的小车,且1楼小车不在入库站点
String endSite="";
String xfType="";
WcsPort wcsPort = new WcsPort();
wcsPort.setPortType("4");
wcsPort.setPortRegion("1");
wcsPort.setPortCode(mydoJob1.getEntranceId());
List<WcsPort> wcsPorts = wcsPortService.selectWcsPortList(wcsPort);
//取货地址
String cargoPickSite=wcsPorts.get(0).getSpare4();
if(deviceSrgv.getCurrFloor()==1 && deviceSrgv.getWorkMode()==4 && deviceSrgv.getStatus()==1 && !cargoPickSite.equals(deviceSrgv.getCurrSite())){
//终点是巷道口到位输送线
endSite=cargoPickSite;
xfType="4";
}else if(deviceSrgv.getCurrFloor()!=1 && deviceSrgv.getWorkMode()==4 && deviceSrgv.getStatus()==1){
//终点是提升机口
WcsPort wcsPort1 = new WcsPort();
wcsPort1.setPortType("1");
wcsPort1.setPortRegion(deviceSrgv.getCurrFloor().toString());
List<WcsPort> wcsPorts1 = wcsPortService.selectWcsPortList(wcsPort1);
endSite=wcsPorts1.get(0).getSpare4();
xfType="8";
}else{
return;
}
//生成小车取货队列
WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
wcsSrgvQueue.setGuid(UUID.randomUUID().toString());
wcsSrgvQueue.setTaskNo(mydoJob1.getTaskNo());
wcsSrgvQueue.setTaskType("1");
wcsSrgvQueue.setPriority(Long.parseLong("2"));
wcsSrgvQueue.setCargo("1");
wcsSrgvQueue.setIssued("0");
wcsSrgvQueue.setExecutionStatus("1");
wcsSrgvQueue.setCargoPickSite(cargoPickSite);
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap();
wcsSrgvMap.setCargoSpaceId(mydoJob1.getCargoSpaceId());
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap);
wcsSrgvQueue.setCargoPlaceSite(wcsSrgvMaps.get(0).getSiteId());
wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite());
wcsSrgvQueue.setEndSite(endSite);
wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString());
wcsSrgvQueue.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
wcsSrgvQueue.setAgvId(deviceSrgv.getDeviceId().toString());
wcsSrgvQueue.setDefault02(xfType);
wcsSrgvQueue.setDefault07("1");
wcsSagvQueueMapper.insertWcsSrgvQueue(wcsSrgvQueue);
}
}
}

View File

@@ -42,6 +42,10 @@ public class SsjThread implements Runnable {
ssjCodes1.add("GS1002");
ssjCodes1.add("GS1007");
ssjCodeList.put("in", ssjCodes1);
ArrayList<String> ssjCodes2 = new ArrayList<>();
ssjCodes2.add("L1004");
ssjCodes2.add("L1005");
ssjCodeList.put("road", ssjCodes2);
mydoJobService = SpringUtils.getBean(IMydoJobService.class);
jobCallBackService = SpringUtils.getBean(IJobCallBackService.class);
apiService = SpringUtils.getBean(IApiService.class);
@@ -81,6 +85,18 @@ public class SsjThread implements Runnable {
}
break;
case "road":
for (String ssjCode : ssjCodeList.get("road")) {
try {
if (PlcSsjRead.deviceSsjMap.containsKey(ssjCode)) {
inDispatch2(PlcSsjRead.deviceSsjMap.get(ssjCode));
} else {
log.error("设备不存在 ssjCode{}", ssjCode);
}
} catch (RuntimeException e) {
log.error(e.getMessage(), e);
}
}
}
}
}
@@ -118,8 +134,13 @@ public class SsjThread implements Runnable {
//拿到正常作业,插到wcs作业表,下发给输送机任务号,覆盖任务号
MydoJob mydoJob = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class);
mydoJob.setStatus("1");
mydoJob.setExecutionPhase("0");
mydoJob.setExecutionPhase("1");
mydoJob.setCreateTime(new Date());
if("GS1002".equals(deviceSsj.getDeviceCode())) {
mydoJob.setEntranceId("GS1002");
}else{
mydoJob.setEntranceId("GS1007");
}
mydoJobService.insertMydoJob(mydoJob);
int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), mydoJob.getTaskNo(), 1, 1);
@@ -138,4 +159,15 @@ public class SsjThread implements Runnable {
}
}
void inDispatch2(DeviceSsj deviceSsj){
if(deviceSsj.getDw() == 1 && deviceSsj.getTaskNo()>1000){
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo((long) deviceSsj.getTaskNo());
if(mydoJob!=null){
mydoJob.setExecutionPhase("2");
mydoJobService.updateMydoJob(mydoJob);
}
}
}
}

View File

@@ -73,6 +73,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where guid = #{guid}
</select>
<select id="selectWcsSrgvQueueByTaskNo" parameterType="String" resultMap="WcsSrgvQueueResult">
<include refid="selectWcsSrgvQueueVo"/>
where task_no = #{taskNo}
</select>
<insert id="insertWcsSrgvQueue" parameterType="WcsSrgvQueue">
insert into wcs_srgv_queue
<trim prefix="(" suffix=")" suffixOverrides=",">
@@ -175,4 +180,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{guid}
</foreach>
</delete>
</mapper>