|
@@ -1296,7 +1296,7 @@ public class TaskWorkNode {
|
|
|
returnMap.put("targetxbk","0");
|
|
|
|
|
|
}else{//需要放到线边库
|
|
|
- //起点空盘
|
|
|
+ /*//起点空盘
|
|
|
Map startJbwPlateMap = new HashMap();
|
|
|
startJbwPlateMap.put("haveGoods","1");
|
|
|
startJbwPlateMap.put("findAgvStation","1");
|
|
@@ -1309,6 +1309,10 @@ public class TaskWorkNode {
|
|
|
return count == 1 ? true : false;
|
|
|
}).collect(Collectors.toList());
|
|
|
ProductionresourcePosition startPosition = tempAgvStartList !=null && tempAgvStartList.size()>0 ? tempAgvStartList.get(0) : null;
|
|
|
+*/
|
|
|
+
|
|
|
+ //起点位置
|
|
|
+ ProductionresourcePosition startPosition = this.getPosition(zZone.getNo());
|
|
|
|
|
|
//目标无板
|
|
|
Map targetJbwPlateMap = new HashMap();
|
|
@@ -1411,8 +1415,8 @@ public class TaskWorkNode {
|
|
|
String instructionUrl = (null == msgUtil.redis_get(ParameterKey.PARAMETERS)? "": ((Map<String,String>)msgUtil.redis_get(ParameterKey.PARAMETERS)).get(paramKey).toString());
|
|
|
String requestUrl = instructionUrl + "/api/" + "QueryThreeCoordinatesFreePos";
|
|
|
// TODO 先写死测试
|
|
|
-// String canPutInfo = restTemplate.postForObject(requestUrl, formEntity, String.class);
|
|
|
- String canPutInfo ="{\"result\":\"L\"}";
|
|
|
+ String canPutInfo = restTemplate.postForObject(requestUrl, formEntity, String.class);
|
|
|
+ /*String canPutInfo ="{\"result\":\"L\"}";*/
|
|
|
JSONObject canPutInfoObject = JSONObject.parseObject(canPutInfo);
|
|
|
if("false".equals(canPutInfoObject.getString("result"))){
|
|
|
targetList = null;
|
|
@@ -1456,6 +1460,55 @@ public class TaskWorkNode {
|
|
|
return returnMap;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取起点位置
|
|
|
+ * @param zone 保障中心/框体线/舱体线
|
|
|
+ */
|
|
|
+ public ProductionresourcePosition getPosition(String zone) {
|
|
|
+
|
|
|
+ //获取开始位置区域集合
|
|
|
+ List<String> zoneList = DictionaryKey.YJ_ZONE.get(zone);
|
|
|
+
|
|
|
+ ProductionresourcePosition position = null;
|
|
|
+
|
|
|
+ int i = 1;
|
|
|
+ for (String zoneT : zoneList) {
|
|
|
+
|
|
|
+ String[] jbwArr = DictionaryKey.YJ_ZONE_JBW.get(zoneT).split(",");
|
|
|
+
|
|
|
+ Map startJbwPlateMap = new HashMap();
|
|
|
+ startJbwPlateMap.put("haveGoods", "1");
|
|
|
+ startJbwPlateMap.put("xbkFlag", "1");
|
|
|
+ startJbwPlateMap.put("findAgvStation", "1");
|
|
|
+ startJbwPlateMap.put("codes", StringUtil.changeIdsArrToSubQueryStr(jbwArr));
|
|
|
+
|
|
|
+ //查询可用的板子
|
|
|
+ List<ProductionresourcePosition> agvStartList = productionresourcePositionMapper.getPPList(startJbwPlateMap);
|
|
|
+ List<ProductionresourcePosition> tempAgvStartList = agvStartList.stream().filter(item -> {
|
|
|
+ int count = stockInfoMapper.selectCount(new LbqWrapper<StockInfo>().eq(StockInfo::getStorgeId, item.getStorgeId()));
|
|
|
+ return count == 1 ? true : false;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if(CollectionUtil.isNotEmpty(tempAgvStartList)){
|
|
|
+ if(i == 1){
|
|
|
+ //距离最近
|
|
|
+ position = tempAgvStartList.get(0);
|
|
|
+ if(tempAgvStartList.size()>1)break; //优先取有多个板子的
|
|
|
+ }else{
|
|
|
+ if(tempAgvStartList.size()>1){
|
|
|
+ position = tempAgvStartList.get(0); //如果距离近的板子没有两个,则取远的存在多个板子的
|
|
|
+ break;
|
|
|
+ }else if (Objects.isNull(position)){
|
|
|
+ position = tempAgvStartList.get(0);//如果第一优先级无板子,则直接取第二优先级的板子
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ return position;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 设备动态逻辑判断处理
|
|
|
*
|