输送线
This commit is contained in:
@@ -19,6 +19,10 @@ public interface WcsSrgvQueueMapper
|
||||
*/
|
||||
public WcsSrgvQueue selectWcsSrgvQueueByGuid(String guid);
|
||||
|
||||
|
||||
public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo);
|
||||
|
||||
|
||||
/**
|
||||
* 查询四向小车任务队列列表
|
||||
*
|
||||
|
||||
@@ -19,6 +19,10 @@ public interface IWcsSrgvQueueService
|
||||
*/
|
||||
public WcsSrgvQueue selectWcsSrgvQueueByGuid(String guid);
|
||||
|
||||
|
||||
public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo);
|
||||
|
||||
|
||||
/**
|
||||
* 查询四向小车任务队列列表
|
||||
*
|
||||
|
||||
@@ -31,6 +31,12 @@ public class WcsSrgvQueueServiceImpl implements IWcsSrgvQueueService
|
||||
return wcsSrgvQueueMapper.selectWcsSrgvQueueByGuid(guid);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public WcsSrgvQueue selectWcsSrgvQueueByTaskNo(String taskNo) {
|
||||
return wcsSrgvQueueMapper.selectWcsSrgvQueueByTaskNo(taskNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询四向小车任务队列列表
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user