现场调度修改
This commit is contained in:
@@ -121,6 +121,10 @@ public interface IApiService
|
|||||||
*/
|
*/
|
||||||
public AjaxResult createInMydoJob(Map<String, Object> param);
|
public AjaxResult createInMydoJob(Map<String, Object> param);
|
||||||
|
|
||||||
|
public AjaxResult sendCargoSpace(Map<String, Object> param);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public AjaxResult selectMydoJobByNoTrayCode(Map<String, Object> param);
|
public AjaxResult selectMydoJobByNoTrayCode(Map<String, Object> param);
|
||||||
|
|
||||||
AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob);
|
AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob);
|
||||||
|
|||||||
@@ -347,6 +347,20 @@ public class ApiServiceImpl implements IApiService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AjaxResult sendCargoSpace(Map<String, Object> param) {
|
||||||
|
// 访问请求路径,生成入库作业 ,如果生成返回信息
|
||||||
|
RequestLog requestLog = requestLogService.getRequestLog(SEND_CARGOSPACE, "请求分配货位", JSONUtil.toJsonStr(param));
|
||||||
|
if ("1".equals(requestLog.getIsSuccessful())) {
|
||||||
|
InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class);
|
||||||
|
return AjaxResult.success(bean.getData());
|
||||||
|
} else {
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob) {
|
public AjaxResult receiveOutMydoJob(ReceiveJob receiveOutJob) {
|
||||||
MydoJob mydoJob = new MydoJob();
|
MydoJob mydoJob = new MydoJob();
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package com.ruoyi.bas.srgvmap.mapper;
|
package com.ruoyi.bas.srgvmap.mapper;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
|
import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 小车点位地图表Mapper接口
|
* 小车点位地图表Mapper接口
|
||||||
@@ -62,4 +64,8 @@ public interface WcsSrgvMapMapper
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteWcsSrgvMapByGuids(String[] guids);
|
public int deleteWcsSrgvMapByGuids(String[] guids);
|
||||||
|
|
||||||
|
List<WcsSrgvMap> selectNotInsite( @Param("cache") String cache,
|
||||||
|
@Param("floor") Integer floor,
|
||||||
|
@Param("sites") ArrayList<String> sites);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.ruoyi.bas.srgvmap.service;
|
package com.ruoyi.bas.srgvmap.service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
|
import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
|
||||||
|
|
||||||
@@ -62,4 +63,6 @@ public interface IWcsSrgvMapService
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteWcsSrgvMapByGuid(String guid);
|
public int deleteWcsSrgvMapByGuid(String guid);
|
||||||
|
|
||||||
|
List<WcsSrgvMap> selectNotInsite(String cache, Integer floor, ArrayList<String> sites);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ package com.ruoyi.bas.srgvmap.service;
|
|||||||
import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
|
import com.ruoyi.bas.srgvmap.domain.WcsSrgvMap;
|
||||||
import com.ruoyi.device.srgv.domain.DeviceSrgv;
|
import com.ruoyi.device.srgv.domain.DeviceSrgv;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public interface RoadCacheService {
|
public interface RoadCacheService {
|
||||||
@@ -18,11 +17,13 @@ public interface RoadCacheService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理地图
|
* 处理地图
|
||||||
|
*
|
||||||
* @param arrByRoadSite
|
* @param arrByRoadSite
|
||||||
* @param deviceSrgv
|
* @param deviceSrgv
|
||||||
|
* @param floor
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
int[][] handleMap(Map<String, WcsSrgvMap> arrByRoadSite, DeviceSrgv deviceSrgv);
|
int[][] handleMap(Map<String, WcsSrgvMap> arrByRoadSite, DeviceSrgv deviceSrgv, Integer floor);
|
||||||
/**
|
/**
|
||||||
* 根据x y z 获取指定位置的缓存
|
* 根据x y z 获取指定位置的缓存
|
||||||
* @param x
|
* @param x
|
||||||
|
|||||||
@@ -41,29 +41,27 @@ public class RoadCacheServiceImpl implements RoadCacheService {
|
|||||||
for (WcsSrgvMap wcsSrgvMap : wcsSrgvMaps) {
|
for (WcsSrgvMap wcsSrgvMap : wcsSrgvMaps) {
|
||||||
maps.put(wcsSrgvMap.getSiteId(), wcsSrgvMap);
|
maps.put(wcsSrgvMap.getSiteId(), wcsSrgvMap);
|
||||||
}
|
}
|
||||||
param.setAxy("11,9");
|
|
||||||
List<WcsSrgvMap> tsjMap = wcsSrgvMapMapper.selectWcsSrgvMapList(param);
|
|
||||||
for (WcsSrgvMap wcsSrgvMap : tsjMap) {
|
|
||||||
maps.put("tsj",wcsSrgvMap);
|
|
||||||
}
|
|
||||||
return maps;
|
return maps;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[][] handleMap(Map<String, WcsSrgvMap> maps, DeviceSrgv deviceSrgv) {
|
public int[][] handleMap(Map<String, WcsSrgvMap> maps, DeviceSrgv deviceSrgv, Integer floor) {
|
||||||
|
|
||||||
//1.锁定其他车任务路径
|
//1.锁定其他车任务路径
|
||||||
lockedOtherCarQueuePath(maps, deviceSrgv);
|
lockedOtherCarQueuePath(maps, deviceSrgv);
|
||||||
//2.锁定无任务小车当前位置
|
//2.锁定无任务小车当前位置
|
||||||
lockedOtherCarCurrSite(maps, deviceSrgv);
|
// lockedOtherCarCurrSite(maps, deviceSrgv);
|
||||||
//3.锁定离线小车当前位置
|
//3.锁定离线小车当前位置
|
||||||
lockedOfflineCarCurrSite(maps, deviceSrgv);
|
lockedOfflineCarCurrSite(maps, deviceSrgv);
|
||||||
|
maps.put("tsj", maps.get("07050" + floor));
|
||||||
|
//4.锁定满货位的位置 TODO 是否存在移库影响效率
|
||||||
int[][] mapsInt = new int[50][50];
|
int[][] mapsInt = new int[50][50];
|
||||||
for (String site : maps.keySet()) {
|
for (String site : maps.keySet()) {
|
||||||
WcsSrgvMap wcsSrgvMap = maps.get(site);
|
WcsSrgvMap wcsSrgvMap = maps.get(site);
|
||||||
mapsInt[wcsSrgvMap.getX()][wcsSrgvMap.getY()] = wcsSrgvMap.getValue();
|
mapsInt[wcsSrgvMap.getX()][wcsSrgvMap.getY()] = wcsSrgvMap.getValue();
|
||||||
if (wcsSrgvMap.getAxy().equals("11,8")){
|
|
||||||
|
if (wcsSrgvMap.getAxy().equals("11,9")) {
|
||||||
System.err.println(wcsSrgvMap.getValue());
|
System.err.println(wcsSrgvMap.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -77,7 +75,7 @@ public class RoadCacheServiceImpl implements RoadCacheService {
|
|||||||
param.setY(y);
|
param.setY(y);
|
||||||
param.setZ(z);
|
param.setZ(z);
|
||||||
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapMapper.selectWcsSrgvMapList(param);
|
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapMapper.selectWcsSrgvMapList(param);
|
||||||
if (CollUtil.isNotEmpty(wcsSrgvMaps)){
|
if (CollUtil.isNotEmpty(wcsSrgvMaps)) {
|
||||||
return wcsSrgvMaps.get(0);
|
return wcsSrgvMaps.get(0);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -142,14 +140,14 @@ public class RoadCacheServiceImpl implements RoadCacheService {
|
|||||||
//添加其他小车路径列表
|
//添加其他小车路径列表
|
||||||
HashSet<String> otherCarSiteList = new HashSet<>();
|
HashSet<String> otherCarSiteList = new HashSet<>();
|
||||||
for (WcsSrgvQueue wcsSrgvQueue : otherCarQueue) {
|
for (WcsSrgvQueue wcsSrgvQueue : otherCarQueue) {
|
||||||
if (wcsSrgvQueue.getPathInfo()!=null) {
|
if (wcsSrgvQueue.getPathInfo() != null) {
|
||||||
//根据小车当前点位去除已走路径
|
//根据小车当前点位去除已走路径
|
||||||
DeviceSrgv otherCarCurrStatus = deviceSrgvService.selectDeviceSrgvByGuid(wcsSrgvQueue.getAgvId());
|
DeviceSrgv otherCarCurrStatus = deviceSrgvService.selectDeviceSrgvByGuid(wcsSrgvQueue.getAgvId());
|
||||||
String currSite = otherCarCurrStatus.getCurrSite();
|
String currSite = otherCarCurrStatus.getCurrSite();
|
||||||
List<String> allSiteList = Arrays.asList(wcsSrgvQueue.getPathInfo().split(","));
|
List<String> allSiteList = Arrays.asList(wcsSrgvQueue.getPathInfo().split(","));
|
||||||
int i = allSiteList.indexOf(currSite);
|
int i = allSiteList.indexOf(currSite);
|
||||||
if (i==-1){
|
if (i == -1) {
|
||||||
i=0;
|
i = 0;
|
||||||
}
|
}
|
||||||
List<String> resultSiteList = allSiteList.subList(i, allSiteList.size());
|
List<String> resultSiteList = allSiteList.subList(i, allSiteList.size());
|
||||||
otherCarSiteList.addAll(resultSiteList);
|
otherCarSiteList.addAll(resultSiteList);
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.ruoyi.bas.srgvmap.service.impl;
|
package com.ruoyi.bas.srgvmap.service.impl;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.ruoyi.bas.srgvmap.mapper.WcsSrgvMapMapper;
|
import com.ruoyi.bas.srgvmap.mapper.WcsSrgvMapMapper;
|
||||||
@@ -14,8 +16,7 @@ import com.ruoyi.bas.srgvmap.service.IWcsSrgvMapService;
|
|||||||
* @date 2025-11-21
|
* @date 2025-11-21
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService
|
public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService {
|
||||||
{
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private WcsSrgvMapMapper wcsSrgvMapMapper;
|
private WcsSrgvMapMapper wcsSrgvMapMapper;
|
||||||
|
|
||||||
@@ -26,8 +27,7 @@ public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService
|
|||||||
* @return 小车点位地图表
|
* @return 小车点位地图表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public WcsSrgvMap selectWcsSrgvMapByGuid(String guid)
|
public WcsSrgvMap selectWcsSrgvMapByGuid(String guid) {
|
||||||
{
|
|
||||||
return wcsSrgvMapMapper.selectWcsSrgvMapByGuid(guid);
|
return wcsSrgvMapMapper.selectWcsSrgvMapByGuid(guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,8 +43,7 @@ public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService
|
|||||||
* @return 小车点位地图表
|
* @return 小车点位地图表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<WcsSrgvMap> selectWcsSrgvMapList(WcsSrgvMap wcsSrgvMap)
|
public List<WcsSrgvMap> selectWcsSrgvMapList(WcsSrgvMap wcsSrgvMap) {
|
||||||
{
|
|
||||||
return wcsSrgvMapMapper.selectWcsSrgvMapList(wcsSrgvMap);
|
return wcsSrgvMapMapper.selectWcsSrgvMapList(wcsSrgvMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,8 +54,7 @@ public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int insertWcsSrgvMap(WcsSrgvMap wcsSrgvMap)
|
public int insertWcsSrgvMap(WcsSrgvMap wcsSrgvMap) {
|
||||||
{
|
|
||||||
return wcsSrgvMapMapper.insertWcsSrgvMap(wcsSrgvMap);
|
return wcsSrgvMapMapper.insertWcsSrgvMap(wcsSrgvMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,8 +65,7 @@ public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int updateWcsSrgvMap(WcsSrgvMap wcsSrgvMap)
|
public int updateWcsSrgvMap(WcsSrgvMap wcsSrgvMap) {
|
||||||
{
|
|
||||||
return wcsSrgvMapMapper.updateWcsSrgvMap(wcsSrgvMap);
|
return wcsSrgvMapMapper.updateWcsSrgvMap(wcsSrgvMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,8 +76,7 @@ public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int deleteWcsSrgvMapByGuids(String[] guids)
|
public int deleteWcsSrgvMapByGuids(String[] guids) {
|
||||||
{
|
|
||||||
return wcsSrgvMapMapper.deleteWcsSrgvMapByGuids(guids);
|
return wcsSrgvMapMapper.deleteWcsSrgvMapByGuids(guids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,8 +87,12 @@ public class WcsSrgvMapServiceImpl implements IWcsSrgvMapService
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public int deleteWcsSrgvMapByGuid(String guid)
|
public int deleteWcsSrgvMapByGuid(String guid) {
|
||||||
{
|
|
||||||
return wcsSrgvMapMapper.deleteWcsSrgvMapByGuid(guid);
|
return wcsSrgvMapMapper.deleteWcsSrgvMapByGuid(guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WcsSrgvMap> selectNotInsite(String cache, Integer floor, ArrayList<String> sites) {
|
||||||
|
return wcsSrgvMapMapper.selectNotInsite(cache, floor, sites);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class Constant {
|
|||||||
public static final String CANCEL_TASK_URL = RCS_BASE_URL+"queryAgvStatus";;
|
public static final String CANCEL_TASK_URL = RCS_BASE_URL+"queryAgvStatus";;
|
||||||
public static final String GEN_AGV_SCHEDULING_TASK = RCS_BASE_URL+"genAgvSchedulingTask";;
|
public static final String GEN_AGV_SCHEDULING_TASK = RCS_BASE_URL+"genAgvSchedulingTask";;
|
||||||
public static final String CREATE_IN_MYDO_JOB_URL = WMS_BASE_URL+"requestEnterByTrayCode";
|
public static final String CREATE_IN_MYDO_JOB_URL = WMS_BASE_URL+"requestEnterByTrayCode";
|
||||||
|
public static final String SEND_CARGOSPACE = WMS_BASE_URL+"sendCargoSpace";
|
||||||
public static final String REQUEST_MYDO_JOB_URL = WMS_BASE_URL+"requestByNoTrayCode";
|
public static final String REQUEST_MYDO_JOB_URL = WMS_BASE_URL+"requestByNoTrayCode";
|
||||||
public static final String RE_ASSIGN_URL = WMS_BASE_URL+"reAssign";
|
public static final String RE_ASSIGN_URL = WMS_BASE_URL+"reAssign";
|
||||||
public static final String RE_MATERIAL_URL = WMS_BASE_URL+"reMaterial";
|
public static final String RE_MATERIAL_URL = WMS_BASE_URL+"reMaterial";
|
||||||
|
|||||||
@@ -68,4 +68,6 @@ public interface DeviceCdzMapper
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<DeviceCdz> selectDeviceCdzHasSRgvList();
|
List<DeviceCdz> selectDeviceCdzHasSRgvList();
|
||||||
|
|
||||||
|
void updateDeviceCdzSpare(DeviceCdz deviceCdz);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,4 +68,6 @@ public interface IDeviceCdzService
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<DeviceCdz> selectDeviceCdzHasSRgvList();
|
List<DeviceCdz> selectDeviceCdzHasSRgvList();
|
||||||
|
|
||||||
|
void updateDeviceCdzSpare(DeviceCdz deviceCdz);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,4 +100,9 @@ public class DeviceCdzServiceImpl implements IDeviceCdzService
|
|||||||
public List<DeviceCdz> selectDeviceCdzHasSRgvList() {
|
public List<DeviceCdz> selectDeviceCdzHasSRgvList() {
|
||||||
return deviceCdzMapper.selectDeviceCdzHasSRgvList();
|
return deviceCdzMapper.selectDeviceCdzHasSRgvList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateDeviceCdzSpare(DeviceCdz deviceCdz) {
|
||||||
|
deviceCdzMapper.updateDeviceCdzSpare(deviceCdz);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,4 +75,6 @@ public interface WcsSrgvQueueMapper
|
|||||||
String selectMinCountJob(@Param("list") List<String> outModelSSJ);
|
String selectMinCountJob(@Param("list") List<String> outModelSSJ);
|
||||||
|
|
||||||
Integer selectTsj();
|
Integer selectTsj();
|
||||||
|
|
||||||
|
Integer selectByCaogoPlaceSite(String siteId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,4 +81,6 @@ public interface IWcsSrgvQueueService
|
|||||||
String selectMinCountJob(List<String> outModelSSJ);
|
String selectMinCountJob(List<String> outModelSSJ);
|
||||||
|
|
||||||
Integer selectTsj();
|
Integer selectTsj();
|
||||||
|
|
||||||
|
Integer selectByCaogoPlaceSite(String siteId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,6 +126,11 @@ public class WcsSrgvQueueServiceImpl implements IWcsSrgvQueueService
|
|||||||
return wcsSrgvQueueMapper.selectTsj();
|
return wcsSrgvQueueMapper.selectTsj();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer selectByCaogoPlaceSite(String siteId) {
|
||||||
|
return wcsSrgvQueueMapper.selectByCaogoPlaceSite(siteId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WcsSrgvQueue insertHistory(String taskNo) {
|
public WcsSrgvQueue insertHistory(String taskNo) {
|
||||||
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueueMapper.selectWcsSrgvQueueByTaskNo(taskNo);
|
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueueMapper.selectWcsSrgvQueueByTaskNo(taskNo);
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ public class ScheduleThread {
|
|||||||
*/
|
*/
|
||||||
public void startAllThread() {
|
public void startAllThread() {
|
||||||
plcSsjReadCustomThread.getThread().start();
|
plcSsjReadCustomThread.getThread().start();
|
||||||
//plcSrgvReadCustomThread1.getThread().start();
|
plcSrgvReadCustomThread1.getThread().start();
|
||||||
plcSrgvReadCustomThread2.getThread().start();
|
plcSrgvReadCustomThread2.getThread().start();
|
||||||
plcSrgvReadCustomThread3.getThread().start();
|
plcSrgvReadCustomThread3.getThread().start();
|
||||||
plcTsjReadCustomThread.getThread().start();
|
plcTsjReadCustomThread.getThread().start();
|
||||||
|
|||||||
@@ -67,12 +67,12 @@ public class PlcCdzRead implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void plcRead(DeviceCdz deviceCdz) {
|
private void plcRead(DeviceCdz deviceCdz) {
|
||||||
OperateResultExOne<byte[]> read2 = readWriteNet.Read(deviceCdz.getPlcDbReadAddress(), Short.parseShort("4"));
|
OperateResultExOne<byte[]> read2 = readWriteNet.Read(deviceCdz.getPlcDbReadAddress(), Short.parseShort("2"));
|
||||||
String ddsx1 = "0";
|
String ddsx1 = "0";
|
||||||
if (read2.IsSuccess) {
|
if (read2.IsSuccess) {
|
||||||
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
|
ddsx1 = SoftBasic.ByteToHexString(read2.Content);
|
||||||
deviceCdz.setStatus(ParseUtil.optInt(0, ddsx1));
|
deviceCdz.setStatus(ParseUtil.optInt(0, ddsx1));
|
||||||
deviceCdz.setModel(ParseUtil.optInt(2, ddsx1));
|
// deviceCdz.setModel(ParseUtil.optInt(2, ddsx1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,8 @@ public class PlcSrgvRead implements Runnable {
|
|||||||
agvData.setAlarm(Convert.toInt(byteTransform.TransInt16(content, 6)));
|
agvData.setAlarm(Convert.toInt(byteTransform.TransInt16(content, 6)));
|
||||||
// agvData.setStatus(0);
|
// agvData.setStatus(0);
|
||||||
agvData.setStatus(Convert.toInt(byteTransform.TransInt16(content, 8)));
|
agvData.setStatus(Convert.toInt(byteTransform.TransInt16(content, 8)));
|
||||||
|
//载货标志
|
||||||
|
agvData.setCargoFlag(Convert.toInt(byteTransform.TransInt16(content, 13)));
|
||||||
//接收完成标志
|
//接收完成标志
|
||||||
// agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 10)));
|
// agvData.setFinish(Convert.toInt(byteTransform.TransInt16(content, 10)));
|
||||||
// agvData.setFinish(0);
|
// agvData.setFinish(0);
|
||||||
|
|||||||
@@ -198,6 +198,7 @@ public class PathFinder {
|
|||||||
if (gCost[endX][endY] == Integer.MAX_VALUE) {
|
if (gCost[endX][endY] == Integer.MAX_VALUE) {
|
||||||
List<int[]> path = new ArrayList<>();
|
List<int[]> path = new ArrayList<>();
|
||||||
path.add(new int[]{-1, -1});
|
path.add(new int[]{-1, -1});
|
||||||
|
|
||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ public class CdzThread implements Runnable {
|
|||||||
|
|
||||||
public boolean isRun = true;
|
public boolean isRun = true;
|
||||||
|
|
||||||
private final Integer LITTLE_BETTERY = 30;
|
private final Integer LITTLE_BETTERY = 40;
|
||||||
private final Integer MIDDLE_BETTERY = 60;
|
private final Integer MIDDLE_BETTERY = 70;
|
||||||
private final Integer MAX_BETTERY = 90;
|
private final Integer MAX_BETTERY = 90;
|
||||||
private ISrgvChargingJobService chargingJobService;
|
private ISrgvChargingJobService chargingJobService;
|
||||||
private IDeviceCdzService deviceCdzService;
|
private IDeviceCdzService deviceCdzService;
|
||||||
@@ -68,7 +68,7 @@ public class CdzThread implements Runnable {
|
|||||||
|
|
||||||
|
|
||||||
void dispatch() {
|
void dispatch() {
|
||||||
|
Integer count = mydoJobService.selectMydoJobCount();
|
||||||
//获取低电量小车
|
//获取低电量小车
|
||||||
List<DeviceSrgv> littleBatterySRgv = new ArrayList<>();
|
List<DeviceSrgv> littleBatterySRgv = new ArrayList<>();
|
||||||
//获取中电量小车
|
//获取中电量小车
|
||||||
@@ -78,7 +78,7 @@ public class CdzThread implements Runnable {
|
|||||||
if (deviceSrgv.getWorkMode() == 5 && deviceSrgv.getStatus() != 3 && deviceSrgv.getChargeFlag() != 2) {
|
if (deviceSrgv.getWorkMode() == 5 && deviceSrgv.getStatus() != 3 && deviceSrgv.getChargeFlag() != 2) {
|
||||||
if (deviceSrgv.getBattery() <= LITTLE_BETTERY) {
|
if (deviceSrgv.getBattery() <= LITTLE_BETTERY) {
|
||||||
littleBatterySRgv.add(deviceSrgv);
|
littleBatterySRgv.add(deviceSrgv);
|
||||||
} else if (deviceSrgv.getBattery() <= MIDDLE_BETTERY) {
|
} else if (deviceSrgv.getBattery() <= MIDDLE_BETTERY && count == 0) {
|
||||||
middleBatterySRgv.add(deviceSrgv);
|
middleBatterySRgv.add(deviceSrgv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -96,22 +96,20 @@ public class CdzThread implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//超过30分钟自动生成充电任务
|
//超过30分钟自动生成充电任务
|
||||||
List<DeviceSrgv> deviceSrgvs = deviceSrgvService.selectDeviceSrgvList(new DeviceSrgv());
|
// List<DeviceSrgv> deviceSrgvs = deviceSrgvService.selectDeviceSrgvList(new DeviceSrgv());
|
||||||
List<DeviceSrgv> timeOutSrgvList = deviceSrgvs.stream().filter(x -> DateUtil.between(DateUtil.parse(x.getLastTime()), DateUtil.date(), DateUnit.MINUTE) > 30).collect(Collectors.toList());
|
// List<DeviceSrgv> timeOutSrgvList = deviceSrgvs.stream().filter(x -> DateUtil.between(DateUtil.parse(x.getLastTime()), DateUtil.date(), DateUnit.MINUTE) > 30).collect(Collectors.toList());
|
||||||
if (CollUtil.isNotEmpty(timeOutSrgvList)) {
|
// if (CollUtil.isNotEmpty(timeOutSrgvList)) {
|
||||||
//生成充电任务
|
// //生成充电任务
|
||||||
createChargingInJob(timeOutSrgvList);
|
// createChargingInJob(timeOutSrgvList);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
//充电任务下发
|
//充电任务下发 查到充电任务并且充电桩未开启直接开启
|
||||||
SrgvChargingJob srgvChargingJobParam = new SrgvChargingJob();
|
SrgvChargingJob srgvChargingJobParam = new SrgvChargingJob();
|
||||||
srgvChargingJobParam.setChargingStatus("0");
|
srgvChargingJobParam.setChargingStatus("0");
|
||||||
srgvChargingJobParam.setJobType("1");
|
srgvChargingJobParam.setJobType("1");
|
||||||
srgvChargingJobParam.setJobStatus("3");
|
|
||||||
List<SrgvChargingJob> srgvChargingJobs = chargingJobService.selectSrgvChargingJobList(srgvChargingJobParam);
|
List<SrgvChargingJob> srgvChargingJobs = chargingJobService.selectSrgvChargingJobList(srgvChargingJobParam);
|
||||||
if (CollUtil.isNotEmpty(srgvChargingJobs)) {
|
if (CollUtil.isNotEmpty(srgvChargingJobs)) {
|
||||||
|
|
||||||
for (SrgvChargingJob srgvChargingJob : srgvChargingJobs) {
|
for (SrgvChargingJob srgvChargingJob : srgvChargingJobs) {
|
||||||
if ("0".equals(srgvChargingJob.getChargingStatus())) {
|
if ("0".equals(srgvChargingJob.getChargingStatus())) {
|
||||||
String chargingSite = srgvChargingJob.getChargingSite();
|
String chargingSite = srgvChargingJob.getChargingSite();
|
||||||
@@ -122,67 +120,39 @@ public class CdzThread implements Runnable {
|
|||||||
SendData qxSendData = new SendData(Tools.INT, 1);
|
SendData qxSendData = new SendData(Tools.INT, 1);
|
||||||
byte[] bytes = Tools.sendData(qxSendData);
|
byte[] bytes = Tools.sendData(qxSendData);
|
||||||
int i = PlcCdzRead.WriteToCdz(plcDbWriteAddress, bytes);
|
int i = PlcCdzRead.WriteToCdz(plcDbWriteAddress, bytes);
|
||||||
|
// 查到充电任务,并且充电桩未开启就直接开启
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
|
log.info("下发{" + deviceCdzs.get(0).getId() + "}号充电桩开启");
|
||||||
srgvChargingJob.setChargingStatus("2");
|
srgvChargingJob.setChargingStatus("2");
|
||||||
srgvChargingJob.setChargingDate(DateUtil.formatDateTime(DateUtil.date()));
|
srgvChargingJob.setChargingDate(DateUtil.formatDateTime(DateUtil.date()));
|
||||||
chargingJobService.updateSrgvChargingJob(srgvChargingJob);
|
chargingJobService.updateSrgvChargingJob(srgvChargingJob);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//生成断电任务 有任务且电量大于50 todo 代码无效
|
//生成断电任务 有任务且电量大于50
|
||||||
Integer count = mydoJobService.selectMydoJobCount();
|
|
||||||
List<DeviceCdz> deviceCdzdd = deviceCdzService.selectDeviceCdzHasSRgvList();
|
List<DeviceCdz> deviceCdzdd = deviceCdzService.selectDeviceCdzHasSRgvList();
|
||||||
for (DeviceCdz deviceCdz : deviceCdzdd) {
|
for (DeviceCdz deviceCdz : deviceCdzdd) {
|
||||||
if (PlcSrgvRead.deviceSrgvMap.containsKey(deviceCdz.getSpare1())
|
DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1());
|
||||||
&& ((PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1()).getBattery() >= MIDDLE_BETTERY && count > 0) || PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1()).getBattery() >= MAX_BETTERY)
|
if (((deviceSrgv.getBattery() >= MIDDLE_BETTERY && count > 0) || deviceSrgv.getBattery() >= MAX_BETTERY)
|
||||||
&& PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1()).getWorkMode() == 5
|
&& deviceSrgv.getWorkMode() == 5
|
||||||
&& PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1()).getChargeFlag() == 2 && deviceCdz.getStatus() == 1) {
|
&& deviceSrgv.getChargeFlag() == 2 && deviceCdz.getStatus() == 1) {
|
||||||
createChargingOutJob(PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1()), deviceCdz);
|
createChargingOutJob(PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1()), deviceCdz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// //生成断电任务 有任务且电量大于50 todo 代码无效
|
|
||||||
// WcsSrgvQueue wcsSrgvQueueParam = new WcsSrgvQueue();
|
|
||||||
// wcsSrgvQueueParam.setIssued("0");
|
|
||||||
// List<WcsSrgvQueue> wcsSrgvQueues = wcsSrgvQueueService.selectWcsSrgvQueueList(wcsSrgvQueueParam);
|
|
||||||
// if (CollUtil.isNotEmpty(wcsSrgvQueues)) {
|
|
||||||
// boolean existsKxSRgv = false;
|
|
||||||
// //判断有没有空闲小车
|
|
||||||
// for (DeviceSrgv x : PlcSrgvRead.deviceSrgvMap.values()) {
|
|
||||||
// if (x.getWorkMode() == 5 && x.getStatus() == 1) {
|
|
||||||
// existsKxSRgv = true;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (!existsKxSRgv) {
|
|
||||||
// List<DeviceCdz> deviceCdzs = deviceCdzService.selectDeviceCdzHasSRgvList();
|
|
||||||
// if (CollUtil.isNotEmpty(deviceCdzs)) {
|
|
||||||
// for (DeviceCdz deviceCdz : deviceCdzs) {
|
|
||||||
// if (PlcSrgvRead.deviceSrgvMap.containsKey(deviceCdz.getSpare1())) {
|
|
||||||
// DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(deviceCdz.getSpare1());
|
|
||||||
// if (deviceSrgv.getBattery() >= 50) {
|
|
||||||
// //生成断电任务
|
|
||||||
// createChargingOutJob(deviceSrgv, deviceCdz);
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
//断电任务下发
|
//断电任务下发
|
||||||
SrgvChargingJob srgvChargingJobDdParam = new SrgvChargingJob();
|
SrgvChargingJob srgvChargingJobDdParam = new SrgvChargingJob();
|
||||||
srgvChargingJobDdParam.setChargingStatus("0");
|
srgvChargingJobDdParam.setChargingStatus("0");
|
||||||
srgvChargingJobDdParam.setJobType("2");
|
srgvChargingJobDdParam.setJobType("2");
|
||||||
List<SrgvChargingJob> srgvChargingJobDds = chargingJobService.selectSrgvChargingJobList(srgvChargingJobDdParam);
|
List<SrgvChargingJob> srgvChargingJobDds = chargingJobService.selectSrgvChargingJobList(srgvChargingJobDdParam);
|
||||||
if (CollUtil.isNotEmpty(srgvChargingJobDds)) {
|
if (CollUtil.isNotEmpty(srgvChargingJobDds)) {
|
||||||
|
|
||||||
for (SrgvChargingJob srgvChargingJob : srgvChargingJobDds) {
|
for (SrgvChargingJob srgvChargingJob : srgvChargingJobDds) {
|
||||||
if ("0".equals(srgvChargingJob.getChargingStatus())) {
|
if ("0".equals(srgvChargingJob.getChargingStatus())) {
|
||||||
String chargingSite = srgvChargingJob.getChargingSite();
|
String chargingSite = srgvChargingJob.getChargingSite();
|
||||||
@@ -194,6 +164,7 @@ public class CdzThread implements Runnable {
|
|||||||
byte[] bytes = Tools.sendData(qxSendData);
|
byte[] bytes = Tools.sendData(qxSendData);
|
||||||
int i = PlcCdzRead.WriteToCdz(plcDbWriteAddress, bytes);
|
int i = PlcCdzRead.WriteToCdz(plcDbWriteAddress, bytes);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
|
log.info("下发{" + deviceCdzs.get(0).getId() + "}号充电桩关闭");
|
||||||
srgvChargingJob.setChargingStatus("1");
|
srgvChargingJob.setChargingStatus("1");
|
||||||
srgvChargingJob.setChargingDate(DateUtil.formatDateTime(DateUtil.date()));
|
srgvChargingJob.setChargingDate(DateUtil.formatDateTime(DateUtil.date()));
|
||||||
chargingJobService.updateSrgvChargingJob(srgvChargingJob);
|
chargingJobService.updateSrgvChargingJob(srgvChargingJob);
|
||||||
@@ -201,14 +172,11 @@ public class CdzThread implements Runnable {
|
|||||||
chargingJobService.insertHistory(srgvChargingJob.getGuid());
|
chargingJobService.insertHistory(srgvChargingJob.getGuid());
|
||||||
chargingJobService.deleteSrgvChargingJobByGuid(srgvChargingJob.getGuid());
|
chargingJobService.deleteSrgvChargingJobByGuid(srgvChargingJob.getGuid());
|
||||||
deviceCdzs.get(0).setSpare1(null);
|
deviceCdzs.get(0).setSpare1(null);
|
||||||
deviceCdzService.updateDeviceCdz(deviceCdzs.get(0));
|
deviceCdzService.updateDeviceCdzSpare(deviceCdzs.get(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -223,42 +191,43 @@ public class CdzThread implements Runnable {
|
|||||||
wcsChargingJob.setAgvId(deviceSrgv.getDeviceId().toString());
|
wcsChargingJob.setAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
List<SrgvChargingJob> srgvChargingJobs = chargingJobService.selectSrgvChargingJobList(wcsChargingJob);
|
List<SrgvChargingJob> srgvChargingJobs = chargingJobService.selectSrgvChargingJobList(wcsChargingJob);
|
||||||
if (CollUtil.isEmpty(srgvChargingJobs)) {
|
if (CollUtil.isEmpty(srgvChargingJobs)) {
|
||||||
List<DeviceCdz> cdzList = deviceCdzService.selectDeviceCdzListNoSRgvId();
|
DeviceCdz deviceCdz = deviceCdzService.selectDeviceCdzById(Long.valueOf(deviceSrgv.getDeviceId()));
|
||||||
if (CollUtil.isNotEmpty(cdzList)) {
|
// List<DeviceCdz> cdzList = deviceCdzService.selectDeviceCdzListNoSRgvId();
|
||||||
//寻找最接近的充电桩
|
// if (CollUtil.isNotEmpty(deviceCdz)) {
|
||||||
Integer floor = deviceSrgv.getCurrFloor();
|
//寻找最接近的充电桩
|
||||||
DeviceCdz cdz = null;
|
// Integer floor = deviceSrgv.getCurrFloor();
|
||||||
Optional<DeviceCdz> min = cdzList.stream().min((o1, o2) -> {
|
// DeviceCdz cdz = null;
|
||||||
Integer distance1 = Math.abs(o1.getSzcs());
|
// Optional<DeviceCdz> min = cdzList.stream().min((o1, o2) -> {
|
||||||
Integer distance2 = Math.abs(o2.getSzcs());
|
// Integer distance1 = Math.abs(o1.getSzcs());
|
||||||
return distance1 - distance2;
|
// Integer distance2 = Math.abs(o2.getSzcs());
|
||||||
});
|
// return distance1 - distance2;
|
||||||
if (min.isPresent()) {
|
// });
|
||||||
cdz = min.get();
|
// if (min.isPresent()) {
|
||||||
}
|
// cdz = min.get();
|
||||||
if (ObjUtil.isNotNull(cdz)) {
|
// }
|
||||||
//生成充电任务
|
if (ObjUtil.isNotNull(deviceCdz)) {
|
||||||
SrgvChargingJob srgvChargingJobParam = new SrgvChargingJob();
|
//生成充电任务
|
||||||
srgvChargingJobParam.setAgvId(deviceSrgv.getDeviceId().toString());
|
SrgvChargingJob srgvChargingJobParam = new SrgvChargingJob();
|
||||||
srgvChargingJobParam.setChargingSite("08020" + cdz.getSzcs());
|
srgvChargingJobParam.setAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
srgvChargingJobParam.setChargingId(cdz.getId().toString());
|
srgvChargingJobParam.setChargingSite("08020" + deviceCdz.getSzcs());
|
||||||
List<SrgvChargingJob> wcsChargingJobs = chargingJobService.selectSrgvChargingJobList(srgvChargingJobParam);
|
srgvChargingJobParam.setChargingId(deviceCdz.getId().toString());
|
||||||
if (CollUtil.isEmpty(wcsChargingJobs)) {
|
List<SrgvChargingJob> wcsChargingJobs = chargingJobService.selectSrgvChargingJobList(srgvChargingJobParam);
|
||||||
SrgvChargingJob scj = new SrgvChargingJob();
|
if (CollUtil.isEmpty(wcsChargingJobs)) {
|
||||||
scj.setGuid(IdUtil.fastSimpleUUID());
|
SrgvChargingJob scj = new SrgvChargingJob();
|
||||||
scj.setChargingSite(cdz.getSiteId());
|
scj.setGuid(IdUtil.fastSimpleUUID());
|
||||||
scj.setJobStatus("1");
|
scj.setChargingSite(deviceCdz.getSiteId());
|
||||||
scj.setChargingStatus("0");
|
scj.setJobStatus("1");
|
||||||
scj.setStartDate(DateUtil.now());
|
scj.setChargingStatus("0");
|
||||||
scj.setJobType("1");//到充电桩
|
scj.setStartDate(DateUtil.now());
|
||||||
scj.setAgvId(deviceSrgv.getDeviceId().toString());
|
scj.setJobType("1");//到充电桩
|
||||||
scj.setChargingId(cdz.getId().toString());
|
scj.setAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
chargingJobService.insertSrgvChargingJob(scj);
|
scj.setChargingId(deviceCdz.getId().toString());
|
||||||
cdz.setSpare1(deviceSrgv.getDeviceId().toString());
|
chargingJobService.insertSrgvChargingJob(scj);
|
||||||
deviceCdzService.updateDeviceCdz(cdz);
|
deviceCdz.setSpare1(deviceSrgv.getDeviceId().toString());
|
||||||
}
|
deviceCdzService.updateDeviceCdz(deviceCdz);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ public class MonitoringThread implements Runnable {
|
|||||||
for (String cdzCode : PlcCdzRead.deviceCdzMap.keySet()) {
|
for (String cdzCode : PlcCdzRead.deviceCdzMap.keySet()) {
|
||||||
DeviceCdz deviceCdz = PlcCdzRead.deviceCdzMap.get(cdzCode);
|
DeviceCdz deviceCdz = PlcCdzRead.deviceCdzMap.get(cdzCode);
|
||||||
deviceCdz.setSpare1(null);
|
deviceCdz.setSpare1(null);
|
||||||
|
deviceCdz.setModel(deviceCdz.getStatus());
|
||||||
deviceCdzService.updateDeviceCdz(deviceCdz);
|
deviceCdzService.updateDeviceCdz(deviceCdz);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -158,6 +158,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
param.setJobStatus("1");
|
param.setJobStatus("1");
|
||||||
param.setJobType("1");
|
param.setJobType("1");
|
||||||
param.setAgvId(deviceSrgv.getDeviceId().toString());
|
param.setAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
|
|
||||||
|
if (deviceSrgv != null && deviceSrgv.getWorkMode() != 5) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
List<SrgvChargingJob> srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param);
|
List<SrgvChargingJob> srgvChargingJobs = srgvChargingJobMapper.selectSrgvChargingJobList(param);
|
||||||
if (CollUtil.isNotEmpty(srgvChargingJobs)) {
|
if (CollUtil.isNotEmpty(srgvChargingJobs)) {
|
||||||
SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0);
|
SrgvChargingJob srgvChargingJob = srgvChargingJobs.get(0);
|
||||||
@@ -175,8 +179,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
wcsSrgvQueue.setCargo("0");
|
wcsSrgvQueue.setCargo("0");
|
||||||
wcsSrgvQueue.setIssued("0");
|
wcsSrgvQueue.setIssued("0");
|
||||||
wcsSrgvQueue.setExecutionStatus("1");
|
wcsSrgvQueue.setExecutionStatus("1");
|
||||||
wcsSrgvQueue.setCargoPickSite("");
|
wcsSrgvQueue.setCargoPickSite(deviceSrgv.getCurrSite());
|
||||||
wcsSrgvQueue.setCargoPlaceSite("");
|
wcsSrgvQueue.setCargoPlaceSite(chargingSite);
|
||||||
wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite());
|
wcsSrgvQueue.setStartSite(deviceSrgv.getCurrSite());
|
||||||
|
|
||||||
WcsSrgvMap wcsSrgvMap = wcsSrgvMapService.selectWcsSrgvMapBySiteId(chargingSite);
|
WcsSrgvMap wcsSrgvMap = wcsSrgvMapService.selectWcsSrgvMapBySiteId(chargingSite);
|
||||||
@@ -186,13 +190,17 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
} else {
|
} else {
|
||||||
wcsSrgvQueue.setEndSite("tsj");
|
wcsSrgvQueue.setEndSite("tsj");
|
||||||
wcsSrgvQueue.setDefault02("8");
|
wcsSrgvQueue.setDefault02("8");
|
||||||
// if (endSite.equals("tsj")){
|
|
||||||
Integer count = wcsSagvQueueMapper.selectTsj();
|
Integer count = wcsSagvQueueMapper.selectTsj();
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
// TODO 如果小车的当前点和小车的充电点位置一样,直接生成已经下发的队列 等着充电就可以
|
||||||
|
// if (deviceSrgv.getCurrSite().equals(chargingSite)) {
|
||||||
|
// wcsSrgvQueue.setIssued("1");
|
||||||
|
// wcsSrgvQueue.setExecutionStatus("3");
|
||||||
|
// }
|
||||||
wcsSrgvQueue.setTaskNo(String.valueOf(deviceSrgv.getDeviceId() + 500));
|
wcsSrgvQueue.setTaskNo(String.valueOf(deviceSrgv.getDeviceId() + 500));
|
||||||
wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString());
|
wcsSrgvQueue.setTheFloor(deviceSrgv.getCurrFloor().toString());
|
||||||
wcsSrgvQueue.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
wcsSrgvQueue.setCreateDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||||
@@ -222,11 +230,6 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
* 生成出库小车队列
|
* 生成出库小车队列
|
||||||
*/
|
*/
|
||||||
private void createCarOutQueue() {
|
private void createCarOutQueue() {
|
||||||
// MydoJob mydoJob = new MydoJob();
|
|
||||||
// mydoJob.setInOut("2");
|
|
||||||
// mydoJob.setExecutionPhase("0");
|
|
||||||
// mydoJob.setStatus("1");
|
|
||||||
// List<MydoJob> mydoJobs = mydoJobService.selectInOrOutMydoJobList(mydoJob);
|
|
||||||
|
|
||||||
|
|
||||||
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobOut();
|
List<MydoJob> mydoJobs = mydoJobService.selectMydoJobOut();
|
||||||
@@ -263,24 +266,63 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
String cargoPickSite = wcsSrgvMaps.get(0).getSiteId();
|
String cargoPickSite = wcsSrgvMaps.get(0).getSiteId();
|
||||||
//先找流程相等的小车
|
//先找流程相等的小车
|
||||||
List<DeviceSrgv> currentFloorCarList = deviceSrgvList.stream().filter(x -> x.getCurrFloor().toString().equals(mydoJob1.getTheFloor())).collect(Collectors.toList());
|
List<DeviceSrgv> currentFloorCarList = deviceSrgvList.stream().filter(x -> x.getCurrFloor().toString().equals(mydoJob1.getTheFloor())).collect(Collectors.toList());
|
||||||
int z = 100000;
|
// int z = 100000;
|
||||||
|
// for (DeviceSrgv srgv : currentFloorCarList) {
|
||||||
|
// // 坐标截取和转换(保留你的原有逻辑)
|
||||||
|
// Integer startX = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 0, 2));
|
||||||
|
// Integer endX = Convert.toInt(StrUtil.sub(cargoPickSite, 0, 2));
|
||||||
|
// Integer startY = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 2, 4));
|
||||||
|
// Integer endY = Convert.toInt(StrUtil.sub(cargoPickSite, 2, 4));
|
||||||
|
//
|
||||||
|
// // 计算当前小车到取货点的曼哈顿距离 TODO 先算Y 再算X 如果Y相等再算X
|
||||||
|
//// int tempZ = Math.abs(startX - endX) + Math.abs(startY - endY);
|
||||||
|
// int tempZ = Math.abs(startY - endY) != 0 ? Math.abs(startY - endY) : Math.abs(startX - endX);
|
||||||
|
//
|
||||||
|
// // 核心修正:只要当前tempZ比记录的最小z更小,就更新z和对应的小车
|
||||||
|
// if (tempZ < z) {
|
||||||
|
// z = tempZ; // 把z更新为当前更小的距离
|
||||||
|
// deviceSrgv = srgv; // 记录这个更近的小车
|
||||||
|
// log.info("楼层相等,找到更近小车 距离{} srgv:{}", tempZ, srgv);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
int minYDistance = 100000; // 记录最小的Y轴距离
|
||||||
|
int minXDistance = 100000; // 记录最小的X轴距离
|
||||||
|
DeviceSrgv bestSrgv = null; // 最终选中的最优小车
|
||||||
|
|
||||||
for (DeviceSrgv srgv : currentFloorCarList) {
|
for (DeviceSrgv srgv : currentFloorCarList) {
|
||||||
// 坐标截取和转换(保留你的原有逻辑)
|
// 坐标截取和转换(保留原有逻辑)
|
||||||
Integer startX = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 0, 2));
|
Integer startX = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 0, 2));
|
||||||
Integer endX = Convert.toInt(StrUtil.sub(cargoPickSite, 0, 2));
|
Integer endX = Convert.toInt(StrUtil.sub(cargoPickSite, 0, 2));
|
||||||
Integer startY = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 2, 4));
|
Integer startY = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 2, 4));
|
||||||
Integer endY = Convert.toInt(StrUtil.sub(cargoPickSite, 2, 4));
|
Integer endY = Convert.toInt(StrUtil.sub(cargoPickSite, 2, 4));
|
||||||
|
|
||||||
// 计算当前小车到取货点的曼哈顿距离
|
// 1. 计算当前小车到目标点的Y轴、X轴绝对距离
|
||||||
int tempZ = Math.abs(startX - endX) + Math.abs(startY - endY);
|
int currentYDistance = Math.abs(startY - endY);
|
||||||
|
int currentXDistance = Math.abs(startX - endX);
|
||||||
|
|
||||||
// 核心修正:只要当前tempZ比记录的最小z更小,就更新z和对应的小车
|
// 2. 核心逻辑:优先按Y轴排序,Y轴相同再按X轴排序
|
||||||
if (tempZ < z) {
|
if (currentYDistance < minYDistance) {
|
||||||
z = tempZ; // 把z更新为当前更小的距离
|
// 情况1:当前Y轴距离更小,直接更新最优解
|
||||||
deviceSrgv = srgv; // 记录这个更近的小车
|
minYDistance = currentYDistance;
|
||||||
log.info("楼层相等,找到更近小车 距离{} srgv:{}", tempZ, srgv);
|
minXDistance = currentXDistance;
|
||||||
|
bestSrgv = srgv;
|
||||||
|
log.info("楼层相等,找到更近小车(Y轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
||||||
|
} else if (currentYDistance == minYDistance) {
|
||||||
|
// 情况2:Y轴距离相同,比较X轴距离
|
||||||
|
if (currentXDistance < minXDistance) {
|
||||||
|
minXDistance = currentXDistance;
|
||||||
|
bestSrgv = srgv;
|
||||||
|
log.info("楼层相等,找到更近小车(X轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 最终选中的小车赋值给deviceSrgv(保持原有变量名兼容)
|
||||||
|
deviceSrgv = bestSrgv;
|
||||||
|
|
||||||
|
|
||||||
if (deviceSrgv == null) {
|
if (deviceSrgv == null) {
|
||||||
//如果未选择到小车,再找其他楼层的小车
|
//如果未选择到小车,再找其他楼层的小车
|
||||||
for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
||||||
@@ -326,12 +368,12 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
//终点是提升机
|
//终点是提升机
|
||||||
endSite = "tsj";
|
endSite = "tsj";
|
||||||
}
|
}
|
||||||
if (endSite.equals("tsj")) {
|
// if (endSite.equals("tsj")) {
|
||||||
Integer count = wcsSagvQueueMapper.selectTsj();
|
// Integer count = wcsSagvQueueMapper.selectTsj();
|
||||||
if (count > 0) {
|
// if (count > 0) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
mydoJob1.setExitId(null);
|
mydoJob1.setExitId(null);
|
||||||
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap();
|
WcsSrgvMap wcsSrgvMap1 = new WcsSrgvMap();
|
||||||
@@ -353,7 +395,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
ssj = "L1005";
|
ssj = "L1005";
|
||||||
}
|
}
|
||||||
Integer count = mydoJobService.selectExit(ssj);
|
Integer count = mydoJobService.selectExit(ssj);
|
||||||
if (count == 0) {
|
if (count >= 0 && count <= 1) {
|
||||||
mydoJob1.setExitId(ssj);
|
mydoJob1.setExitId(ssj);
|
||||||
mydoJobService.updateMydoJob(mydoJob1);
|
mydoJobService.updateMydoJob(mydoJob1);
|
||||||
outModelSSJ.add(s);
|
outModelSSJ.add(s);
|
||||||
@@ -501,28 +543,44 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
//取货地址
|
//取货地址
|
||||||
String cargoPickSite = wcsSrgvMaps.get(0).getSiteId();
|
String cargoPickSite = wcsSrgvMaps.get(0).getSiteId();
|
||||||
|
|
||||||
//先找流程相等的小车
|
//先找层数相等的小车
|
||||||
List<DeviceSrgv> currentFloorCarList = deviceSrgvList.stream().filter(x -> x.getCurrFloor().toString().equals(mydoJob1.getTheFloor())).collect(Collectors.toList());
|
List<DeviceSrgv> currentFloorCarList = deviceSrgvList.stream().filter(x -> x.getCurrFloor().toString().equals(mydoJob1.getTheFloor())).collect(Collectors.toList());
|
||||||
int z = 100000;
|
int minYDistance = 100000; // 记录最小的Y轴距离
|
||||||
|
int minXDistance = 100000; // 记录最小的X轴距离
|
||||||
|
DeviceSrgv bestSrgv = null; // 最终选中的最优小车
|
||||||
|
|
||||||
for (DeviceSrgv srgv : currentFloorCarList) {
|
for (DeviceSrgv srgv : currentFloorCarList) {
|
||||||
// 坐标截取和转换(保留你的原有逻辑)
|
// 坐标截取和转换(保留原有逻辑)
|
||||||
Integer startX = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 0, 2));
|
Integer startX = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 0, 2));
|
||||||
Integer endX = Convert.toInt(StrUtil.sub(cargoPickSite, 0, 2));
|
Integer endX = Convert.toInt(StrUtil.sub(cargoPickSite, 0, 2));
|
||||||
Integer startY = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 2, 4));
|
Integer startY = Convert.toInt(StrUtil.sub(srgv.getCurrSite(), 2, 4));
|
||||||
Integer endY = Convert.toInt(StrUtil.sub(cargoPickSite, 2, 4));
|
Integer endY = Convert.toInt(StrUtil.sub(cargoPickSite, 2, 4));
|
||||||
|
|
||||||
// 计算当前小车到取货点的曼哈顿距离
|
// 1. 计算当前小车到目标点的Y轴、X轴绝对距离
|
||||||
int tempZ = Math.abs(startX - endX) + Math.abs(startY - endY);
|
int currentYDistance = Math.abs(startY - endY);
|
||||||
|
int currentXDistance = Math.abs(startX - endX);
|
||||||
|
|
||||||
// 核心修正:只要当前tempZ比记录的最小z更小,就更新z和对应的小车
|
// 2. 核心逻辑:优先按Y轴排序,Y轴相同再按X轴排序
|
||||||
if (tempZ < z) {
|
if (currentYDistance < minYDistance) {
|
||||||
z = tempZ; // 把z更新为当前更小的距离
|
// 情况1:当前Y轴距离更小,直接更新最优解
|
||||||
deviceSrgv = srgv; // 记录这个更近的小车
|
minYDistance = currentYDistance;
|
||||||
log.info("楼层相等,找到更近小车 距离{} srgv:{}", tempZ, srgv);
|
minXDistance = currentXDistance;
|
||||||
|
bestSrgv = srgv;
|
||||||
|
log.info("楼层相等,找到更近小车(Y轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
||||||
|
} else if (currentYDistance == minYDistance) {
|
||||||
|
// 情况2:Y轴距离相同,比较X轴距离
|
||||||
|
if (currentXDistance < minXDistance) {
|
||||||
|
minXDistance = currentXDistance;
|
||||||
|
bestSrgv = srgv;
|
||||||
|
log.info("楼层相等,找到更近小车(X轴更优) Y距离{} X距离{} srgv:{}", currentYDistance, currentXDistance, srgv);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 最终选中的小车赋值给deviceSrgv(保持原有变量名兼容)
|
||||||
|
deviceSrgv = bestSrgv;
|
||||||
if (deviceSrgv == null) {
|
if (deviceSrgv == null) {
|
||||||
//如果未选择到小车,再找其他楼层的小车
|
//如果未选择到小车,找目标层小车
|
||||||
for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
||||||
if (!deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) {
|
if (!deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) {
|
||||||
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString());
|
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString());
|
||||||
@@ -534,6 +592,20 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// // 如果目标层小车也没有 找其他层小车
|
||||||
|
// if (deviceSrgv==null){
|
||||||
|
// for (DeviceSrgv deviceSrgv1 : deviceSrgvList) {
|
||||||
|
// if (!deviceSrgv1.getCurrFloor().toString().equals(mydoJob1.getTheFloor())) {
|
||||||
|
// WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv1.getDeviceId().toString());
|
||||||
|
// if (deviceSrgv1.getStatus() == 1 && wcsSrgvQueue2 == null) {
|
||||||
|
// deviceSrgv = deviceSrgv1; // 更新为更小楼层的小车
|
||||||
|
// log.info("楼层bu相等:{}", deviceSrgv);
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// }
|
||||||
if (deviceSrgv != null) {
|
if (deviceSrgv != null) {
|
||||||
|
|
||||||
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString());
|
WcsSrgvQueue wcsSrgvQueue2 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(deviceSrgv.getDeviceId().toString());
|
||||||
@@ -560,28 +632,28 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
// 小车不在1楼
|
// 小车不在1楼
|
||||||
endSite = "tsj";
|
endSite = "tsj";
|
||||||
}
|
}
|
||||||
if (endSite.equals("tsj")) {
|
// if (endSite.equals("tsj")) {
|
||||||
Integer count = wcsSagvQueueMapper.selectTsj();
|
// Integer count = wcsSagvQueueMapper.selectTsj();
|
||||||
if (count > 0) {
|
// if (count > 0) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
//筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象,并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象
|
//筛选出deviceSrgvMap中deviceSrgv.getWorkMode() == 4并且deviceSrgv.getStatus() == 1并且deviceSrgv.getCurrSite() == cargoPickSite得对象,并排除掉其中deviceId与deviceSrgv.getDeviceId()相同的对象
|
||||||
|
// 如果当前有其他小车也要去入库点取货 TODO 判断的是如果当前车要去取货点,但是取货点有车的的情况
|
||||||
List<DeviceSrgv> sameSiteDevices = deviceSrgvMap.values().stream()
|
// List<DeviceSrgv> sameSiteDevices = deviceSrgvMap.values().stream()
|
||||||
.filter(d -> d.getWorkMode() == 5
|
// .filter(d -> d.getWorkMode() == 5
|
||||||
&& d.getStatus() == 1
|
// && d.getStatus() == 1
|
||||||
&& d.getCurrSite().equals(cargoPickSite))
|
// && d.getCurrSite().equals(cargoPickSite))
|
||||||
.collect(Collectors.toList());
|
// .collect(Collectors.toList());
|
||||||
if (!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())) {
|
// 和当前小车不是一个 那么就生成一个去离母通道最近的点
|
||||||
WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap();
|
// if (!sameSiteDevices.isEmpty() && !Objects.equals(sameSiteDevices.get(0).getDeviceId(), deviceSrgv.getDeviceId())) {
|
||||||
wcsSrgvMap3.setRemark("cache");
|
// WcsSrgvMap wcsSrgvMap3 = new WcsSrgvMap();
|
||||||
List<WcsSrgvMap> wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3);
|
// wcsSrgvMap3.setSiteId("07070"+sameSiteDevices.get(0).getCurrFloor());
|
||||||
for (WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3) {
|
// List<WcsSrgvMap> wcsSrgvMaps3 = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap3);
|
||||||
//deviceSrgvMap中所有对象的currSite都不等于wcsSrgvMap4的siteId的对象
|
// for (WcsSrgvMap wcsSrgvMap4 : wcsSrgvMaps3) {
|
||||||
//todo
|
//
|
||||||
// if (deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) {
|
// if (deviceSrgvMap.values().stream().noneMatch(d -> d.getCurrSite().equals(wcsSrgvMap4.getSiteId()))) {
|
||||||
// WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString());
|
// WcsSrgvQueue wcsSrgvQueue5 = wcsSagvQueueMapper.selectWcsSrgvQueueByAgvId(sameSiteDevices.get(0).getDeviceId().toString());
|
||||||
// WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
|
// WcsSrgvQueue wcsSrgvQueue = new WcsSrgvQueue();
|
||||||
@@ -611,9 +683,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
//生成小车取货队列
|
//生成小车取货队列
|
||||||
@@ -678,7 +750,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
sendMainTask(deviceSrgv, wcsSrgvQueue, currSite, endSite);
|
sendMainTask(deviceSrgv, wcsSrgvQueue, currSite, endSite);
|
||||||
} else {
|
} else {
|
||||||
//小车不在起始点
|
//小车不在起始点
|
||||||
sendPointToPointTask(deviceSrgv, wcsSrgvQueue, currSite, startSite);
|
// sendPointToPointTask(deviceSrgv, wcsSrgvQueue, currSite, startSite);
|
||||||
|
sendPointToPointTask(deviceSrgv, wcsSrgvQueue, currSite, endSite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -693,32 +766,54 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
Integer floor = deviceSrgv.getCurrFloor();
|
Integer floor = deviceSrgv.getCurrFloor();
|
||||||
//获取当前地图
|
//获取当前地图
|
||||||
Map<String, WcsSrgvMap> arrByRoadSite = roadCacheService.getArrByRoadSite(floor);
|
Map<String, WcsSrgvMap> arrByRoadSite = roadCacheService.getArrByRoadSite(floor);
|
||||||
if ((wcsSrgvQueue.getDefault02().equals("1") || wcsSrgvQueue.getDefault02().equals("2") || wcsSrgvQueue.getDefault02().equals("4")) && wcsSrgvQueue.getTheFloor().equals("1") && !wcsSrgvQueue.getEndSite().equals("tsj")) {
|
if (wcsSrgvQueue.getDefault02().equals("1") || wcsSrgvQueue.getDefault02().equals("2")) {
|
||||||
//如果是1层 锁定提升机站点
|
// 出入库任务时,只要车不在提升机里面就锁定提升机的点位,设置成墙
|
||||||
if (CollUtil.isNotEmpty(arrByRoadSite) && arrByRoadSite.values().iterator().next().getZ() == 1) {
|
if (CollUtil.isNotEmpty(arrByRoadSite) && !deviceSrgv.getCurrSite().equals("09050" + floor)) {
|
||||||
if (arrByRoadSite.containsKey("080501")) {
|
String siteId = "08050" + floor;
|
||||||
arrByRoadSite.get("080501").setValue(0);
|
if (arrByRoadSite.containsKey(siteId)) {
|
||||||
|
arrByRoadSite.get(siteId).setValue(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if (wcsSrgvQueue.getDefault02().equals("8")){
|
// 移库任务直接锁定
|
||||||
// endSite="07050"+deviceSrgv.getCurrFloor();
|
if (wcsSrgvQueue.getDefault02().equals("7")) {
|
||||||
// }
|
String siteId = "08050" + floor;
|
||||||
//
|
if (arrByRoadSite.containsKey(siteId)) {
|
||||||
|
arrByRoadSite.get(siteId).setValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 如果是点到点的 并且小车不在提升机里面才锁提升机,在提升机里面不需要锁
|
||||||
|
if (wcsSrgvQueue.getDefault02().equals("4") && !deviceSrgv.getCurrSite().equals("09050" + floor)) {
|
||||||
|
if (CollUtil.isNotEmpty(arrByRoadSite)) {
|
||||||
|
String siteId = "08050" + floor;
|
||||||
|
if (arrByRoadSite.containsKey(siteId)) {
|
||||||
|
arrByRoadSite.get(siteId).setValue(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 当前是换层任务,并且车的当前层和目标层不一样的时候把提升机锁住 如果是一样的时候,则直接解锁
|
||||||
|
if (wcsSrgvQueue.getDefault02().equals("8") && floor != Integer.parseInt(wcsSrgvQueue.getDefault07())) {
|
||||||
|
String siteId = "08050" + floor;
|
||||||
|
if (arrByRoadSite.containsKey(siteId)) {
|
||||||
|
arrByRoadSite.get(siteId).setValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//处理地图
|
//处理地图
|
||||||
int[][] emptyMap = roadCacheService.handleMap(arrByRoadSite, deviceSrgv);
|
int[][] emptyMap = roadCacheService.handleMap(arrByRoadSite, deviceSrgv, floor);
|
||||||
|
|
||||||
//计算最短路径
|
//计算最短路径
|
||||||
List<int[]> shortestPath = PathFinder.findShortestPath(emptyMap, arrByRoadSite.get(startSite).getX(), arrByRoadSite.get(startSite).getY(), arrByRoadSite.get(endSite).getX(), arrByRoadSite.get(endSite).getY());
|
List<int[]> shortestPath = PathFinder.findShortestPath(emptyMap, arrByRoadSite.get(startSite).getX(), arrByRoadSite.get(startSite).getY(), arrByRoadSite.get(endSite).getX(), arrByRoadSite.get(endSite).getY());
|
||||||
|
|
||||||
// TODO 小车避让 目前只针对同层最多两台车 并且点位设置到了050201 判断地图中取的路径 不能直达说明有车阻挡 直接返回-1 用-1判断小车阻挡调离小车
|
// TODO 小车避让 目前只针对同层最多两台车 并且点位设置到了050201 判断地图中取的路径 不能直达说明有车阻挡 直接返回-1 用-1判断小车阻挡调离小车
|
||||||
if (shortestPath.size() == 1 && shortestPath.get(0)[0] == -1 && shortestPath.get(0)[1] == -1) {
|
if (shortestPath.size() > 0) {
|
||||||
shortestPath = null;
|
if (shortestPath.size() == 1 && shortestPath.get(0)[0] == -1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
String endBlockAgv = null;
|
String endBlockAgv = null;
|
||||||
DeviceSrgv endBlockDevice = null;
|
DeviceSrgv endBlockDevice = null;
|
||||||
|
|
||||||
if (arrByRoadSite != null && !arrByRoadSite.isEmpty()) {
|
if (arrByRoadSite != null && !arrByRoadSite.isEmpty()) {
|
||||||
// 将arrByRoadSite转为String类型的Set(统一类型,方便匹配)
|
// 将arrByRoadSite转为String类型的Set(统一类型,方便匹配)
|
||||||
Set<String> roadSiteSet = arrByRoadSite.keySet().stream()
|
Set<String> roadSiteSet = arrByRoadSite.keySet().stream()
|
||||||
@@ -727,18 +822,37 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
// 2. Stream流式处理deviceSrgvMap
|
// 2. Stream流式处理deviceSrgvMap
|
||||||
Optional<Map.Entry<String, DeviceSrgv>> targetEntry = PlcSrgvRead.deviceSrgvMap.entrySet().stream()
|
Optional<Map.Entry<String, DeviceSrgv>> targetEntry = Optional.empty();
|
||||||
.filter(entry -> entry.getValue() != null) // 过滤other为null的条目
|
for (int i = 0; i < shortestPath.size(); i++) {
|
||||||
// 条件1:other的当前站点存在于roadSiteSet中
|
int endx = shortestPath.get(i)[0];
|
||||||
.filter(entry -> roadSiteSet.contains(entry.getValue().getCurrSite()))
|
int endy = shortestPath.get(i)[1];
|
||||||
// 条件2:设备ID不等于当前entry的key
|
WcsSrgvMap wcsSrgvMap = new WcsSrgvMap();
|
||||||
.filter(entry -> !Objects.equals(Convert.toStr(deviceSrgv.getDeviceId()), entry.getKey()))
|
wcsSrgvMap.setX(endx);
|
||||||
.findFirst(); // 找到第一个符合条件的条目(等价于原代码的break)
|
wcsSrgvMap.setY(endy);
|
||||||
|
wcsSrgvMap.setZ(floor);
|
||||||
|
List<WcsSrgvMap> wcsSrgvMaps = wcsSrgvMapService.selectWcsSrgvMapList(wcsSrgvMap);
|
||||||
|
String siteId = wcsSrgvMaps.get(0).getSiteId();
|
||||||
|
targetEntry = PlcSrgvRead.deviceSrgvMap.entrySet().stream()
|
||||||
|
.filter(entry -> entry.getValue() != null) // 过滤other为null的条目
|
||||||
|
// 条件1:other的当前站点存在于roadSiteSet中
|
||||||
|
.filter(entry -> roadSiteSet.contains(entry.getValue().getCurrSite()))
|
||||||
|
.filter(entry -> siteId.equals(entry.getValue().getCurrSite()))
|
||||||
|
// 条件2:设备ID不等于当前entry的key
|
||||||
|
.filter(entry -> !Objects.equals(Convert.toStr(deviceSrgv.getDeviceId()), entry.getKey()))
|
||||||
|
.findFirst();
|
||||||
|
// 找到第一个符合条件的条目(等价于原代码的break)
|
||||||
|
if (targetEntry.isPresent()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 3. 处理结果(若找到则赋值)
|
// 3. 处理结果(若找到则赋值)
|
||||||
if (targetEntry.isPresent()) {
|
if (targetEntry.isPresent()) {
|
||||||
endBlockAgv = targetEntry.get().getKey();
|
endBlockAgv = targetEntry.get().getKey();
|
||||||
endBlockDevice = targetEntry.get().getValue();
|
endBlockDevice = targetEntry.get().getValue();
|
||||||
|
shortestPath = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -747,10 +861,18 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
List<WcsSrgvQueue> wcsSrgvQueueBRS = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueBR);
|
List<WcsSrgvQueue> wcsSrgvQueueBRS = wcsSagvQueueMapper.selectWcsSrgvQueueList(wcsSrgvQueueBR);
|
||||||
if (endBlockDevice != null && wcsSrgvQueueBRS.isEmpty()) {
|
if (endBlockDevice != null && wcsSrgvQueueBRS.isEmpty()) {
|
||||||
// 选择当前层最近且可达的缓存点(避让点)
|
// 选择当前层最近且可达的缓存点(避让点)
|
||||||
WcsSrgvMap cacheParam = new WcsSrgvMap();
|
ConcurrentHashMap<String, DeviceSrgv> deviceSrgvMap = PlcSrgvRead.deviceSrgvMap;
|
||||||
cacheParam.setRemark("cache");
|
List<DeviceSrgv> deviceSrgvs = deviceSrgvMap.values().stream()
|
||||||
cacheParam.setTheLayer(floor);
|
.filter(d -> d.getWorkMode() == 5
|
||||||
List<WcsSrgvMap> cacheMaps = wcsSrgvMapService.selectWcsSrgvMapList(cacheParam);
|
&& d.getStatus() == 1
|
||||||
|
&& d.getCurrFloor().equals(floor))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
ArrayList<String> sites = new ArrayList<>();
|
||||||
|
for (int i = 0; i < deviceSrgvs.size(); i++) {
|
||||||
|
sites.add(deviceSrgvs.get(i).getCurrSite());
|
||||||
|
}
|
||||||
|
List<WcsSrgvMap> cacheMaps = wcsSrgvMapService.selectNotInsite("cache", floor, sites);
|
||||||
|
// List<WcsSrgvMap> cacheMaps = wcsSrgvMapService.selectWcsSrgvMapList(cacheParam);
|
||||||
// 生成阻挡车的避让任务(点到点,高优先级,未下发)
|
// 生成阻挡车的避让任务(点到点,高优先级,未下发)
|
||||||
WcsSrgvQueue taskB = new WcsSrgvQueue();
|
WcsSrgvQueue taskB = new WcsSrgvQueue();
|
||||||
taskB.setGuid(UUID.randomUUID().toString());
|
taskB.setGuid(UUID.randomUUID().toString());
|
||||||
@@ -764,19 +886,34 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
taskB.setExecutionStatus("1");// 初始状态
|
taskB.setExecutionStatus("1");// 初始状态
|
||||||
taskB.setStartSite(endBlockDevice.getCurrSite());
|
taskB.setStartSite(endBlockDevice.getCurrSite());
|
||||||
taskB.setCargoPickSite(endBlockDevice.getCurrSite());
|
taskB.setCargoPickSite(endBlockDevice.getCurrSite());
|
||||||
taskB.setCargoPlaceSite(cacheMaps.get(0).getSiteId());
|
if (cacheMaps.size() > 1) {
|
||||||
taskB.setEndSite(cacheMaps.get(0).getSiteId());
|
Integer count = wcsSagvQueueMapper.selectByCaogoPlaceSite(cacheMaps.get(0).getSiteId());
|
||||||
|
if (count > 0) {
|
||||||
|
taskB.setCargoPlaceSite(cacheMaps.get(1).getSiteId());
|
||||||
|
taskB.setEndSite(cacheMaps.get(1).getSiteId());
|
||||||
|
} else {
|
||||||
|
taskB.setCargoPlaceSite(cacheMaps.get(0).getSiteId());
|
||||||
|
taskB.setEndSite(cacheMaps.get(0).getSiteId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (cacheMaps.size() == 1) {
|
||||||
|
taskB.setCargoPlaceSite(cacheMaps.get(0).getSiteId());
|
||||||
|
taskB.setEndSite(cacheMaps.get(0).getSiteId());
|
||||||
|
}
|
||||||
|
|
||||||
taskB.setTheFloor(floor.toString());
|
taskB.setTheFloor(floor.toString());
|
||||||
// taskB.setDefault03(endBlockDevice.getCurrSite());
|
// taskB.setDefault03(endBlockDevice.getCurrSite());
|
||||||
taskB.setDefault07(floor.toString());
|
taskB.setDefault07(floor.toString());
|
||||||
// taskB.setDefault08("1");//避让任务,直接完成
|
// taskB.setDefault08("1");//避让任务,直接完成
|
||||||
taskB.setCreateDate(DateUtil.now());
|
taskB.setCreateDate(DateUtil.now());
|
||||||
wcsSagvQueueMapper.insertWcsSrgvQueue(taskB);
|
wcsSagvQueueMapper.insertWcsSrgvQueue(taskB);
|
||||||
|
|
||||||
taskCache++;
|
taskCache++;
|
||||||
log.info("目标点 {" + deviceSrgv.getCurrSite() + "} 被小车 {" + deviceSrgv.getDeviceId() + "} 占用,已调度其前往避让点 {}", endSite, endBlockAgv, "02050" + endBlockDevice.getCurrFloor());
|
log.info("目标点 {" + deviceSrgv.getCurrSite() + "} 被小车 {" + deviceSrgv.getDeviceId() + "} 占用,已调度其前往避让点 {}", endSite, endBlockAgv, "02050" + endBlockDevice.getCurrFloor());
|
||||||
// 当前车等待下一轮调度(待阻挡车移开后自然可达)
|
// 当前车等待下一轮调度(待阻挡车移开后自然可达)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -881,14 +1018,14 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
}
|
}
|
||||||
if (("tsj").equals(endSite)) {
|
if (("tsj").equals(endSite)) {
|
||||||
if (wcsSrgvQueue.getDefault02().equals("8")) {
|
if (wcsSrgvQueue.getDefault02().equals("8")) {
|
||||||
endSite = extractTarget(String.valueOf(pathBuilder));
|
// endSite = extractTarget(String.valueOf(pathBuilder));
|
||||||
} else {
|
endSite = "07050" + wcsSrgvQueue.getTheFloor();
|
||||||
|
}
|
||||||
|
if (wcsSrgvQueue.getDefault02().equals("1") || wcsSrgvQueue.getDefault02().equals("2")) {
|
||||||
endSite = "09050" + wcsSrgvQueue.getTheFloor();
|
endSite = "09050" + wcsSrgvQueue.getTheFloor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if (("tsj").equals(startSite)) {
|
|
||||||
// endSite = "09050" + wcsSrgvQueue.getTheFloor();
|
|
||||||
// }
|
|
||||||
List<SendData2> sendDataList = null;
|
List<SendData2> sendDataList = null;
|
||||||
if (StrUtil.isEmpty(wcsSrgvQueue.getDefault08())) {
|
if (StrUtil.isEmpty(wcsSrgvQueue.getDefault08())) {
|
||||||
sendDataList = new ArrayList<>();
|
sendDataList = new ArrayList<>();
|
||||||
@@ -977,10 +1114,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
sendDataList.add(taskType);
|
sendDataList.add(taskType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// TODO 这段下发有问题
|
||||||
|
if (wcsSrgvQueue.getDefault08().equals("2") && deviceSrgv.getSpare5().equals("1")) {
|
||||||
|
|
||||||
if (wcsSrgvQueue.getDefault08().equals("2")
|
|
||||||
&& deviceSrgv.getSpare5().equals("1")
|
|
||||||
) {
|
|
||||||
sendDataList = new ArrayList<>();
|
sendDataList = new ArrayList<>();
|
||||||
SendData2 path = new SendData2();
|
SendData2 path = new SendData2();
|
||||||
path.setAddress("4404");//地址
|
path.setAddress("4404");//地址
|
||||||
@@ -1002,14 +1138,17 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
wcjs.setType(1);
|
wcjs.setType(1);
|
||||||
sendDataList.add(wcjs);
|
sendDataList.add(wcjs);
|
||||||
|
|
||||||
//任务类型转换
|
//任务类型转换 //TODO 不行就改成7
|
||||||
SendData2 taskType = new SendData2();
|
SendData2 taskType = new SendData2();
|
||||||
taskType.setAddress("4402");
|
taskType.setAddress("4402");
|
||||||
taskType.setData("7");
|
taskType.setData("9");
|
||||||
taskType.setType(1);
|
taskType.setType(1);
|
||||||
sendDataList.add(taskType);
|
sendDataList.add(taskType);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (sendDataList == null) {
|
||||||
|
sendDataList = new ArrayList<>();
|
||||||
|
}
|
||||||
//任务号、原、目标数据转换
|
//任务号、原、目标数据转换
|
||||||
String siteId = wcsSrgvQueue.getTaskNo();//+ "," + startSite + "," + endSite;
|
String siteId = wcsSrgvQueue.getTaskNo();//+ "," + startSite + "," + endSite;
|
||||||
SendData2 site = new SendData2();
|
SendData2 site = new SendData2();
|
||||||
@@ -1226,7 +1365,9 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
//处理换层逻辑
|
//处理换层逻辑
|
||||||
String site1 = "07050" + wcsSrgvQueue.getDefault07();
|
String site1 = "07050" + wcsSrgvQueue.getDefault07();
|
||||||
String site2 = "10050" + wcsSrgvQueue.getDefault07();
|
String site2 = "10050" + wcsSrgvQueue.getDefault07();
|
||||||
|
String site3 = "09050" + wcsSrgvQueue.getDefault07();
|
||||||
sites.add(site1);
|
sites.add(site1);
|
||||||
|
sites.add(site3);
|
||||||
sites.add(site2);
|
sites.add(site2);
|
||||||
}
|
}
|
||||||
if (Objects.equals(currSite, wcsSrgvQueue.getEndSite()) || (siteId != null && Objects.equals(currSite, siteId)) || sites.contains(currSite)) {
|
if (Objects.equals(currSite, wcsSrgvQueue.getEndSite()) || (siteId != null && Objects.equals(currSite, siteId)) || sites.contains(currSite)) {
|
||||||
@@ -1256,17 +1397,12 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
// return;
|
// return;
|
||||||
}
|
}
|
||||||
//空车任务 且当前车的位置和取货位置相同
|
//空车任务 且当前车的位置和取货位置相同
|
||||||
if ("1".equals(taskType)
|
if ("1".equals(taskType) && (cargoPickSite.equals(currSite) || (wcsSrgvQueue.getDefault06() != null && wcsSrgvQueue.getDefault06().equals(currSite)) || sites.contains(currSite))) {
|
||||||
&& (cargoPickSite.equals(currSite) || (wcsSrgvQueue.getDefault06() != null && wcsSrgvQueue.getDefault06().equals(currSite)) || sites.contains(currSite))
|
|
||||||
|
|
||||||
) {
|
|
||||||
String endSite = "";
|
String endSite = "";
|
||||||
String xfType = "";
|
String xfType = "";
|
||||||
|
// 换完层直接根据任务去接出入库任务
|
||||||
if (wcsSrgvQueue.getDefault02().equals("8")) {
|
if (wcsSrgvQueue.getDefault02().equals("8")) {
|
||||||
//换层任务直接完成,等待后续入出库作业下发
|
|
||||||
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
|
|
||||||
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
|
|
||||||
return;
|
|
||||||
} else {
|
} else {
|
||||||
WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
|
WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
|
||||||
WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
|
WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
|
||||||
@@ -1281,12 +1417,12 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
endSite = "tsj";
|
endSite = "tsj";
|
||||||
}
|
}
|
||||||
// 如果终点是提升机需要判断是否有其他任务也是提升机的 这个时候先停一下
|
// 如果终点是提升机需要判断是否有其他任务也是提升机的 这个时候先停一下
|
||||||
if (endSite.equals("tsj")) {
|
// if (endSite.equals("tsj")) {
|
||||||
Integer count = wcsSagvQueueMapper.selectTsj();
|
// Integer count = wcsSagvQueueMapper.selectTsj();
|
||||||
if (count > 0) {
|
// if (count > 0) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
if ("L1004".equals(wcsSrgvMapq.getRemark()) || "L1005".equals(wcsSrgvMapq.getRemark())) {
|
if ("L1004".equals(wcsSrgvMapq.getRemark()) || "L1005".equals(wcsSrgvMapq.getRemark())) {
|
||||||
xfType = "1";//入库
|
xfType = "1";//入库
|
||||||
@@ -1333,6 +1469,7 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
case "2":
|
case "2":
|
||||||
MydoJob mydoJobOut = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(wcsSrgvQueue.getTaskNo()));
|
MydoJob mydoJobOut = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(wcsSrgvQueue.getTaskNo()));
|
||||||
if (mydoJobOut != null && (cargoPlaceSite.equals(currSite))) {
|
if (mydoJobOut != null && (cargoPlaceSite.equals(currSite))) {
|
||||||
|
log.info("1471 taskNo:[{}],currSite:[{}],cargoPlaceSite:[{}]",wcsSrgvQueue.getTaskNo(),currSite,cargoPlaceSite);
|
||||||
JobCallBack jobCallBack = new JobCallBack();
|
JobCallBack jobCallBack = new JobCallBack();
|
||||||
jobCallBack.setType(wcsSrgvQueue.getDefault02());
|
jobCallBack.setType(wcsSrgvQueue.getDefault02());
|
||||||
jobCallBack.setMydojobId(mydoJobOut.getJobId());
|
jobCallBack.setMydojobId(mydoJobOut.getJobId());
|
||||||
@@ -1365,8 +1502,8 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
|
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
|
||||||
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
|
wcsSagvQueueMapper.deleteWcsSrgvQueueByGuid(wcsSrgvQueue.getGuid());
|
||||||
|
|
||||||
// 充电任务
|
// 充电任务 并且小车也是充电任务
|
||||||
} else if ("3".equals(taskType)) {
|
} else if ("3".equals(taskType) && wcsSrgvQueue.getDefault02().equals("3")) {
|
||||||
//删除队列,插入历史表
|
//删除队列,插入历史表
|
||||||
wcsSrgvQueue.setExecutionStatus("4");
|
wcsSrgvQueue.setExecutionStatus("4");
|
||||||
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
|
wcsSagvQueueMapper.insertHistory(wcsSrgvQueue.getTaskNo());
|
||||||
@@ -1412,9 +1549,10 @@ public class BaseSRgvThread implements Runnable, SRgvThreadInterface {
|
|||||||
String startSite = wcsSrgvQueue.getStartSite();
|
String startSite = wcsSrgvQueue.getStartSite();
|
||||||
|
|
||||||
if (!startSite.equals(currSite)) {
|
if (!startSite.equals(currSite)) {
|
||||||
wcsSrgvQueue.setIssued("1");
|
// wcsSrgvQueue.setIssued("1");
|
||||||
wcsSrgvQueue.setStartDate(DateUtil.now());
|
// wcsSrgvQueue.setExecutionStatus("3");
|
||||||
wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue);
|
// wcsSrgvQueue.setStartDate(DateUtil.now());
|
||||||
|
// wcsSagvQueueMapper.updateWcsSrgvQueue(wcsSrgvQueue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,17 +124,17 @@ public class SsjThread implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void inDispatch1(DeviceSsj deviceSsj) {
|
void inDispatch1(DeviceSsj deviceSsj) {
|
||||||
if (deviceSsj.getRkqq() == 1 && StrUtil.isNotBlank(deviceSsj.getTrayCode().trim()) ) {
|
if (deviceSsj.getRkqq() == 1 && StrUtil.isNotBlank(deviceSsj.getTrayCode().trim())) {
|
||||||
String trayCode = deviceSsj.getTrayCode().trim();
|
String trayCode = deviceSsj.getTrayCode().trim();
|
||||||
MydoJob getMydoJob = mydoJobService.selectMydoJobByTrayCode(trayCode);
|
MydoJob getMydoJob = mydoJobService.selectMydoJobByTrayCode(trayCode);
|
||||||
if (getMydoJob!=null && deviceSsj.getTaskNo()<1000){
|
if (getMydoJob != null && deviceSsj.getTaskNo() < 1000) {
|
||||||
int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), getMydoJob.getTaskNo(), 1, 1);
|
int i = writeToSsj(deviceSsj.getPlcDbWriteAddress(), getMydoJob.getTaskNo(), 1, 1);
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
getMydoJob.setStatus("3");
|
getMydoJob.setStatus("3");
|
||||||
mydoJobService.updateMydoJob(getMydoJob);
|
mydoJobService.updateMydoJob(getMydoJob);
|
||||||
log.info(deviceSsj.getDeviceCode() + "输送机下发任务号成功:{}", getMydoJob.getTaskNo());
|
log.info(deviceSsj.getDeviceCode() + "输送机下发任务号成功:{}", getMydoJob.getTaskNo());
|
||||||
}
|
}
|
||||||
}else {
|
} else {
|
||||||
//todo 查是否为入库模式,不是退回,是否超重
|
//todo 查是否为入库模式,不是退回,是否超重
|
||||||
HashMap<String, Object> map = new HashMap<>();
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
map.put("trayCode", deviceSsj.getTrayCode());
|
map.put("trayCode", deviceSsj.getTrayCode());
|
||||||
@@ -183,11 +183,28 @@ public class SsjThread implements Runnable {
|
|||||||
void inDispatch2(DeviceSsj deviceSsj) {
|
void inDispatch2(DeviceSsj deviceSsj) {
|
||||||
if (deviceSsj.getDw() == 1 && deviceSsj.getTaskNo() > 1000) {
|
if (deviceSsj.getDw() == 1 && deviceSsj.getTaskNo() > 1000) {
|
||||||
|
|
||||||
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo((long) deviceSsj.getTaskNo());
|
MydoJob mydoJob1 = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(deviceSsj.getTaskNo()));
|
||||||
if (mydoJob != null) {
|
if (mydoJob1.getCargoSpaceId() != null) {
|
||||||
mydoJob.setExecutionPhase("2");
|
return;
|
||||||
mydoJobService.updateMydoJob(mydoJob);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
|
map.put("taskNo", deviceSsj.getTaskNo());
|
||||||
|
//拉取
|
||||||
|
AjaxResult ajaxResult = apiService.sendCargoSpace(map);
|
||||||
|
if (ajaxResult.isSuccess()) {
|
||||||
|
MydoJob data = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class);
|
||||||
|
String cargoSpaceId = data.getCargoSpaceId();
|
||||||
|
String theFloor = data.getClassId();
|
||||||
|
MydoJob mydoJob = mydoJobService.selectMydoJobByTaskNo((long) deviceSsj.getTaskNo());
|
||||||
|
if (mydoJob != null) {
|
||||||
|
mydoJob.setTheFloor(theFloor);
|
||||||
|
mydoJob.setCargoSpaceId(cargoSpaceId);
|
||||||
|
mydoJob.setExecutionPhase("2");
|
||||||
|
mydoJobService.updateMydoJob(mydoJob);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import cn.hutool.core.util.IdUtil;
|
|||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.ruoyi.bas.port.service.IWcsPortService;
|
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.SendData;
|
import com.ruoyi.common.domain.SendData;
|
||||||
import com.ruoyi.common.utils.spring.SpringUtils;
|
import com.ruoyi.common.utils.spring.SpringUtils;
|
||||||
import com.ruoyi.device.srgv.domain.DeviceSrgv;
|
import com.ruoyi.device.srgv.domain.DeviceSrgv;
|
||||||
@@ -35,13 +37,17 @@ public class TsjThread implements Runnable {
|
|||||||
private ITsjDeviceExecutionQueueFinishService tsjDeviceExecutionQueueFinishService;
|
private ITsjDeviceExecutionQueueFinishService tsjDeviceExecutionQueueFinishService;
|
||||||
private IWcsPortService wcsPortService;
|
private IWcsPortService wcsPortService;
|
||||||
private IWcsSrgvQueueService wcsSrgvQueueService;
|
private IWcsSrgvQueueService wcsSrgvQueueService;
|
||||||
public IMydoJobService mydoJobService;
|
private IMydoJobService mydoJobService;
|
||||||
|
private IWcsSrgvMapService wcsSrgvMapService;
|
||||||
|
|
||||||
|
|
||||||
public void init() {
|
public void init() {
|
||||||
tsjDeviceExecutionQueueService = SpringUtils.getBean(ITsjDeviceExecutionQueueService.class);
|
tsjDeviceExecutionQueueService = SpringUtils.getBean(ITsjDeviceExecutionQueueService.class);
|
||||||
tsjDeviceExecutionQueueFinishService = SpringUtils.getBean(ITsjDeviceExecutionQueueFinishService.class);
|
tsjDeviceExecutionQueueFinishService = SpringUtils.getBean(ITsjDeviceExecutionQueueFinishService.class);
|
||||||
wcsPortService = SpringUtils.getBean(IWcsPortService.class);
|
wcsPortService = SpringUtils.getBean(IWcsPortService.class);
|
||||||
wcsSrgvQueueService = SpringUtils.getBean(IWcsSrgvQueueService.class);
|
wcsSrgvQueueService = SpringUtils.getBean(IWcsSrgvQueueService.class);
|
||||||
|
wcsSrgvMapService = SpringUtils.getBean(IWcsSrgvMapService.class);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -76,7 +82,7 @@ public class TsjThread implements Runnable {
|
|||||||
* 1、下发完成 如果设备状态为 2-工作 ,触发方式 2-自动,任务号大于999,则代表任务下发完成
|
* 1、下发完成 如果设备状态为 2-工作 ,触发方式 2-自动,任务号大于999,则代表任务下发完成
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
if (czfs == 2 && sbzt == 2 && rwh > 999) {
|
if (czfs == 2 && sbzt == 2 && rwh > 500) {
|
||||||
// finishSend(rwh, tsj);
|
// finishSend(rwh, tsj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,11 +90,16 @@ public class TsjThread implements Runnable {
|
|||||||
* 2、四向车任务生成 2-工作 ,触发方式 2-自动,任务号大于999
|
* 2、四向车任务生成 2-工作 ,触发方式 2-自动,任务号大于999
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
if (czfs == 2 && sbzt == 2 && jdbz == 4 && rwh > 999) {
|
if (czfs == 2 && sbzt == 2 && jdbz == 4 && rwh > 500) {
|
||||||
createSRgvQueue(rwh, tsj);
|
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueueService.selectWcsSrgvQueueByTaskNo(String.valueOf(rwh));
|
||||||
|
String agvId = wcsSrgvQueue.getAgvId();
|
||||||
|
DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(agvId);
|
||||||
|
if (deviceSrgv.getCurrSite().equals("09050" + tsj.getDqcs())) {
|
||||||
|
createSRgvQueue(rwh, tsj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 提升机取货中 说明对齐当前要取货层 开始给小车下发
|
// 提升机取货中 说明对齐当前要取货层 开始给小车下发
|
||||||
if (czfs == 2 && sbzt == 2 && jdbz == 2 && rwh > 999) {
|
if (czfs == 2 && sbzt == 2 && jdbz == 2 && rwh > 500) {
|
||||||
createSRgvQueueTsjQd(rwh, tsj);
|
createSRgvQueueTsjQd(rwh, tsj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +107,7 @@ public class TsjThread implements Runnable {
|
|||||||
* 2、任务完成
|
* 2、任务完成
|
||||||
*
|
*
|
||||||
* */
|
* */
|
||||||
if (czfs == 2 && sbzt == 2 && jdbz == 5 && rwh > 999) {
|
if (czfs == 2 && sbzt == 2 && jdbz == 5 && rwh > 500) {
|
||||||
//任务完成
|
//任务完成
|
||||||
finishTask(rwh, tsj);
|
finishTask(rwh, tsj);
|
||||||
}
|
}
|
||||||
@@ -117,7 +128,7 @@ public class TsjThread implements Runnable {
|
|||||||
private void createSRgvQueueTsjQd(Long rwh, DeviceTsj tsj) {
|
private void createSRgvQueueTsjQd(Long rwh, DeviceTsj tsj) {
|
||||||
for (String sRgv : PlcSrgvRead.deviceSrgvMap.keySet()) {
|
for (String sRgv : PlcSrgvRead.deviceSrgvMap.keySet()) {
|
||||||
DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(sRgv);
|
DeviceSrgv deviceSrgv = PlcSrgvRead.deviceSrgvMap.get(sRgv);
|
||||||
if ((deviceSrgv.getCurrSite().equals("09050" + deviceSrgv.getCurrFloor()) || deviceSrgv.getCurrSite().equals("10050" + deviceSrgv.getCurrFloor())) && deviceSrgv.getWorkMode() == 5 && deviceSrgv.getStatus() == 2 && tsj.getHczt() == 1) {
|
if ((deviceSrgv.getCurrSite().equals("09050" + deviceSrgv.getCurrFloor()) || deviceSrgv.getCurrSite().equals("10050" + deviceSrgv.getCurrFloor())) && deviceSrgv.getWorkMode() == 5 && deviceSrgv.getStatus() == 1 && tsj.getHczt() == 1) {
|
||||||
SendData rwlxSendData = new SendData(Tools.INT, 1);
|
SendData rwlxSendData = new SendData(Tools.INT, 1);
|
||||||
DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(Convert.toStr(1));
|
DeviceTsj deviceTsj = PlcTsjRead.deviceTsjMap.get(Convert.toStr(1));
|
||||||
byte[] bytes = Tools.sendData(rwlxSendData);
|
byte[] bytes = Tools.sendData(rwlxSendData);
|
||||||
@@ -146,11 +157,15 @@ public class TsjThread implements Runnable {
|
|||||||
WcsSrgvQueue sRgvQueueParam = new WcsSrgvQueue();
|
WcsSrgvQueue sRgvQueueParam = new WcsSrgvQueue();
|
||||||
sRgvQueueParam.setTaskNo(Convert.toStr(rwh));
|
sRgvQueueParam.setTaskNo(Convert.toStr(rwh));
|
||||||
sRgvQueueParam.setEndSite(Convert.toStr("tsj"));
|
sRgvQueueParam.setEndSite(Convert.toStr("tsj"));
|
||||||
|
sRgvQueueParam.setIssued("1");
|
||||||
|
sRgvQueueParam.setExecutionStatus("3");
|
||||||
List<WcsSrgvQueue> wcsSrgvQueues = wcsSrgvQueueService.selectWcsSrgvQueueList(sRgvQueueParam);
|
List<WcsSrgvQueue> wcsSrgvQueues = wcsSrgvQueueService.selectWcsSrgvQueueList(sRgvQueueParam);
|
||||||
if (CollUtil.isEmpty(wcsSrgvQueues)) {
|
if (CollUtil.isEmpty(wcsSrgvQueues)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueueService.insertHistory(Convert.toStr(rwh));
|
WcsSrgvQueue wcsSrgvQueue = wcsSrgvQueueService.insertHistory(Convert.toStr(rwh));
|
||||||
|
String cargoPickSite = wcsSrgvQueue.getCargoPickSite();
|
||||||
|
String cargoPlaceSite = wcsSrgvQueue.getCargoPlaceSite();
|
||||||
//修改起点终点
|
//修改起点终点
|
||||||
if (ObjUtil.isNotEmpty(wcsSrgvQueue)) {
|
if (ObjUtil.isNotEmpty(wcsSrgvQueue)) {
|
||||||
wcsSrgvQueue.setCreateDate(DateUtil.formatDateTime(DateUtil.date()));
|
wcsSrgvQueue.setCreateDate(DateUtil.formatDateTime(DateUtil.date()));
|
||||||
@@ -174,7 +189,6 @@ public class TsjThread implements Runnable {
|
|||||||
endSite = wcsSrgvQueue.getCargoPlaceSite();
|
endSite = wcsSrgvQueue.getCargoPlaceSite();
|
||||||
break;
|
break;
|
||||||
case "3":
|
case "3":
|
||||||
//充电
|
|
||||||
break;
|
break;
|
||||||
case "4":
|
case "4":
|
||||||
//点到点
|
//点到点
|
||||||
@@ -191,10 +205,44 @@ public class TsjThread implements Runnable {
|
|||||||
log.info("任务类型错误");
|
log.info("任务类型错误");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "8":
|
||||||
|
//换层任务直接变成点到点任务
|
||||||
|
switch (wcsSrgvQueue.getTaskType()) {
|
||||||
|
case "1":
|
||||||
|
WcsSrgvMap wcsSrgvMapq = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
|
||||||
|
WcsSrgvMap wcsSrgvMapf = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
|
||||||
|
if (wcsSrgvMapq != null && wcsSrgvMapf != null) {
|
||||||
|
|
||||||
|
wcsSrgvQueue.setEndSite(cargoPickSite);
|
||||||
|
wcsSrgvQueue.setDefault02("4");
|
||||||
|
wcsSrgvQueue.setTheFloor(wcsSrgvMapq.getTheLayer().toString());
|
||||||
|
wcsSrgvQueue.setDefault07(wcsSrgvMapf.getTheLayer().toString());
|
||||||
|
wcsSrgvQueue.setIssued("0");
|
||||||
|
wcsSrgvQueue.setExecutionStatus("1");
|
||||||
|
wcsSrgvQueue.setTaskType("1");
|
||||||
|
}
|
||||||
|
wcsSrgvQueue.setStartSite("09050" + tsj.getDqcs());
|
||||||
|
wcsSrgvQueueService.updateWcsSrgvQueue(wcsSrgvQueue);
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
WcsSrgvMap wcsSrgvMapq1 = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPickSite);
|
||||||
|
WcsSrgvMap wcsSrgvMapf1 = wcsSrgvMapService.selectWcsSrgvMapBySiteId(cargoPlaceSite);
|
||||||
|
if (wcsSrgvMapq1 != null && wcsSrgvMapf1 != null) {
|
||||||
|
wcsSrgvQueue.setEndSite(cargoPlaceSite);
|
||||||
|
wcsSrgvQueue.setDefault02("3");
|
||||||
|
wcsSrgvQueue.setTheFloor(wcsSrgvMapq1.getTheLayer().toString());
|
||||||
|
wcsSrgvQueue.setDefault07(wcsSrgvMapf1.getTheLayer().toString());
|
||||||
|
wcsSrgvQueue.setIssued("0");
|
||||||
|
wcsSrgvQueue.setExecutionStatus("1");
|
||||||
|
wcsSrgvQueue.setTaskType("3");
|
||||||
|
}
|
||||||
|
wcsSrgvQueue.setStartSite("09050" + tsj.getDqcs());
|
||||||
|
wcsSrgvQueueService.updateWcsSrgvQueue(wcsSrgvQueue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StrUtil.isNotEmpty(startSite) && StrUtil.isNotEmpty(endSite)) {
|
if (StrUtil.isNotEmpty(startSite) && StrUtil.isNotEmpty(endSite) && !wcsSrgvQueue.getDefault02().equals("8")) {
|
||||||
|
|
||||||
wcsSrgvQueue.setStartSite(startSite);
|
wcsSrgvQueue.setStartSite(startSite);
|
||||||
wcsSrgvQueue.setEndSite(endSite);
|
wcsSrgvQueue.setEndSite(endSite);
|
||||||
wcsSrgvQueueService.updateWcsSrgvQueue(wcsSrgvQueue);
|
wcsSrgvQueueService.updateWcsSrgvQueue(wcsSrgvQueue);
|
||||||
|
|||||||
@@ -90,6 +90,9 @@ public class GetDeviceSrgvMap {
|
|||||||
}
|
}
|
||||||
dto.setStatus(status);
|
dto.setStatus(status);
|
||||||
dto.setLocation(d.getCurrSite() == null ? "" : d.getCurrSite());
|
dto.setLocation(d.getCurrSite() == null ? "" : d.getCurrSite());
|
||||||
|
dto.setRow(d.getCurrSite() == null ? "" : d.getCurrSite().substring(2,4));
|
||||||
|
dto.setColumn(d.getCurrSite() == null ? "" :d.getCurrSite().substring(0,2));
|
||||||
|
dto.setLayer(d.getCurrSite() == null ? "" : d.getCurrSite().substring(4,6));
|
||||||
dto.setAlarm(d.getAlarm() == null ? "" : String.valueOf(d.getAlarm()));
|
dto.setAlarm(d.getAlarm() == null ? "" : String.valueOf(d.getAlarm()));
|
||||||
dto.setAlarmMsg(DictUtils.getDictLabel("srgv_alarm", d.getAlarm() == null ? "" : String.valueOf(d.getAlarm())));
|
dto.setAlarmMsg(DictUtils.getDictLabel("srgv_alarm", d.getAlarm() == null ? "" : String.valueOf(d.getAlarm())));
|
||||||
if (d.getTaskNo() != null && d.getTaskNo() > 0) {
|
if (d.getTaskNo() != null && d.getTaskNo() > 0) {
|
||||||
@@ -132,6 +135,9 @@ public class GetDeviceSrgvMap {
|
|||||||
private String isThere;
|
private String isThere;
|
||||||
private String status;
|
private String status;
|
||||||
private String location;
|
private String location;
|
||||||
|
private String row;
|
||||||
|
private String column;
|
||||||
|
private String layer;
|
||||||
private String alarm;
|
private String alarm;
|
||||||
private String alarmMsg;
|
private String alarmMsg;
|
||||||
private String trayCode;
|
private String trayCode;
|
||||||
|
|||||||
@@ -99,8 +99,17 @@ public class GetDeviceSsjMap {
|
|||||||
dto.setRotationDirection(calcRotationDirection(d.getTaskNo()));
|
dto.setRotationDirection(calcRotationDirection(d.getTaskNo()));
|
||||||
dto.setAlarm(String.valueOf(d.getException()));
|
dto.setAlarm(String.valueOf(d.getException()));
|
||||||
dto.setAlarmMsg(DictUtils.getDictLabel("ssj_ex", String.valueOf(d.getException())));
|
dto.setAlarmMsg(DictUtils.getDictLabel("ssj_ex", String.valueOf(d.getException())));
|
||||||
dto.setDW(String.valueOf(d.getDw()));
|
|
||||||
dto.setKX(String.valueOf(d.getKx()));
|
dto.setKX(String.valueOf(d.getKx()));
|
||||||
|
if (!dto.getTaskNo().equals("0")){
|
||||||
|
if (dto.getKX().equals("0")){
|
||||||
|
dto.setDW("1");
|
||||||
|
}else {
|
||||||
|
dto.setDW("0");
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
dto.setDW("0");
|
||||||
|
}
|
||||||
|
|
||||||
if (d.getTaskNo() > 0) {
|
if (d.getTaskNo() > 0) {
|
||||||
try {
|
try {
|
||||||
MydoJob job = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(d.getTaskNo()));
|
MydoJob job = mydoJobService.selectMydoJobByTaskNo(Long.valueOf(d.getTaskNo()));
|
||||||
@@ -128,16 +137,10 @@ public class GetDeviceSsjMap {
|
|||||||
*/
|
*/
|
||||||
private String calcRotationDirection(int taskNo) {
|
private String calcRotationDirection(int taskNo) {
|
||||||
try {
|
try {
|
||||||
if (taskNo <= 0) return "0";
|
if (taskNo <= 0) {
|
||||||
MydoJob job = mydoJobService.selectMydoJobByTaskNo((long) taskNo);
|
|
||||||
if (job == null || job.getInOrOut() == null) return "0";
|
|
||||||
int val;
|
|
||||||
try {
|
|
||||||
val = Integer.parseInt(job.getInOrOut());
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
return val >= 20 ? "2" : "1";
|
return taskNo <= 50000 ? "1" : "2";
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public class GetDeviceTsjMap {
|
|||||||
String code = entry.getKey();
|
String code = entry.getKey();
|
||||||
DeviceTsj d = entry.getValue();
|
DeviceTsj d = entry.getValue();
|
||||||
TsjDto dto = new TsjDto();
|
TsjDto dto = new TsjDto();
|
||||||
dto.setId(String.valueOf(d.getId()));
|
dto.setId("TW001");
|
||||||
dto.setLayer(d.getDqcs() == null ? "" : String.valueOf(d.getDqcs()));
|
dto.setLayer(d.getDqcs() == null ? "" : String.valueOf(d.getDqcs()));
|
||||||
dto.setTaskNo(d.getRwh() == null ? "" : String.valueOf(d.getRwh()));
|
dto.setTaskNo(d.getRwh() == null ? "" : String.valueOf(d.getRwh()));
|
||||||
dto.setZxjd(d.getJdbz() == null ? "" : String.valueOf(d.getJdbz()));
|
dto.setZxjd(d.getJdbz() == null ? "" : String.valueOf(d.getJdbz()));
|
||||||
|
|||||||
@@ -161,4 +161,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
#{guid}
|
#{guid}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
|
||||||
|
<select id="selectNotInsite" resultMap="WcsSrgvMapResult">
|
||||||
|
SELECT
|
||||||
|
|
||||||
|
*
|
||||||
|
FROM
|
||||||
|
wcs_srgv_map
|
||||||
|
WHERE
|
||||||
|
remark = #{cache}
|
||||||
|
AND plc_layer = #{floor}
|
||||||
|
|
||||||
|
<if test="sites != null and sites.size() > 0">
|
||||||
|
AND site_id NOT IN
|
||||||
|
<foreach collection="sites" item="site" separator="," open="(" close=")">
|
||||||
|
#{site}
|
||||||
|
</foreach>
|
||||||
|
|
||||||
|
</if>
|
||||||
|
<if test="sites == null or sites.size() == 0">
|
||||||
|
AND 1=1
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -123,4 +123,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
#{id}
|
#{id}
|
||||||
</foreach>
|
</foreach>
|
||||||
</delete>
|
</delete>
|
||||||
|
<update id="updateDeviceCdzSpare" parameterType="DeviceCdz">
|
||||||
|
update device_cdz set spare1=null where id=#{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -291,7 +291,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
FROM
|
FROM
|
||||||
floor_group
|
floor_group
|
||||||
WHERE
|
WHERE
|
||||||
rn <= 2
|
rn <= 1
|
||||||
ORDER BY
|
ORDER BY
|
||||||
group_coding DESC;
|
group_coding DESC;
|
||||||
|
|
||||||
|
|||||||
@@ -218,5 +218,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectByCaogoPlaceSite" resultType="java.lang.Integer" parameterType="string">
|
||||||
|
select count(1) from wcs_srgv_queue where cargo_place_site=#{siteId}
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user