zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -383,7 +383,7 @@ int idx = -1; for (int i = 0; i < destPosList.size(); i++) { if (Objects.equals(destPosList.get(i).getTaskId(), newDto.getTaskId()) && Objects.equals(destPosList.get(i).getCodeId(), newDto.getCodeId())) { && Objects.equals(destPosList.get(i).getCodeId(), newDto.getCodeId())) { idx = i; break; } @@ -1239,7 +1239,7 @@ task.getBusId(), // 总线 task.getId(), // 任务 null, // 动作号 null, // 优先级 null, // 优先级 ActionTypeType.ReadyReleaseToShelvesLoc.desc, // 名称 (double) actuatorDirectionType.val, // 属性值 lastCode.getData(), // 地面码 @@ -1253,9 +1253,9 @@ case ORI_STA: // 站点取货 Sta oriSta = staService.getById(task.getOriSta()); Double angle = oriSta.getAngle() == null ? mapService.getStaAngle(oriSta, workDirection) : Double.valueOf(oriSta.getAngle()); Double oriStaWorkDirection = mapService.getStaAngle(oriSta); // 检验方向 if (!lastDirection.equals(Double.valueOf(angle))) { if (!lastDirection.equals(oriStaWorkDirection)) { if (!lastCode.getCornerBool()) { throw new CoolException(agvNo + "号小车方向错误,请推至转弯点手动调整"); } @@ -1267,15 +1267,15 @@ null, // 动作号 null, // 优先级 ActionTypeType.TurnCorner.desc, // 名称 (double) MapService.calcSpinDirection(lastCode, lastDirection, angle).val, // 属性值 (double) MapService.calcSpinDirection(lastCode, lastDirection, oriStaWorkDirection).val, // 属性值 lastCode.getData(), // 地面码 String.valueOf(angle), // 动作参数 String.valueOf(oriStaWorkDirection), // 动作参数 ActionTypeType.TurnCorner.val(), // 动作类型 actionPrepareSts, // 动作进度 agvId, // AGV now // 工作时间 )); lastDirection = angle; lastDirection = oriStaWorkDirection; } // 计算货叉工作方向 actuatorDirectionType = ActuatorDirectionType.fromVal(oriSta.getActDir()); @@ -1318,9 +1318,9 @@ case DEST_STA: // 站点放货 Sta destSta = staService.getById(task.getDestSta()); angle = destSta.getAngle() == null ? mapService.getStaAngle(destSta, workDirection) : Double.valueOf(destSta.getAngle()); Double destStaWorkDirection = mapService.getStaAngle(destSta); // 检验方向 if (!lastDirection.equals(angle)) { if (!lastDirection.equals(destStaWorkDirection)) { if (!lastCode.getCornerBool()) { throw new CoolException(agvNo + "号小车方向错误,请推至转弯点手动调整"); } @@ -1332,15 +1332,15 @@ null, // 动作号 null, // 优先级 ActionTypeType.TurnCorner.desc, // 名称 (double) MapService.calcSpinDirection(lastCode, lastDirection, angle).val, // 属性值 (double) MapService.calcSpinDirection(lastCode, lastDirection, destStaWorkDirection).val, // 属性值 lastCode.getData(), // 地面码 String.valueOf(angle), // 动作参数 String.valueOf(destStaWorkDirection), // 动作参数 ActionTypeType.TurnCorner.val(), // 动作类型 actionPrepareSts, // 动作进度 agvId, // AGV now // 工作时间 )); lastDirection = angle; lastDirection = destStaWorkDirection; } // 背篓取货 if (backupAction) { @@ -1833,9 +1833,9 @@ // segment list List<Segment> segmentList = segmentService.list(new LambdaQueryWrapper<Segment>() .eq(Segment::getGroupId, serialNo) .eq(Segment::getGroupId, serialNo) // .eq(Segment::getState, SegmentStateType.RUNNING.toString()) .orderByAsc(Segment::getSerial) .orderByAsc(Segment::getSerial) ); // settlement zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -3,8 +3,10 @@ import com.alibaba.fastjson.JSON; import com.zy.acs.common.enums.ActuatorDirectionType; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.exception.CoolException; import com.zy.acs.manager.core.constant.MapDataConstant; import com.zy.acs.manager.core.domain.DirectionDto; import com.zy.acs.manager.core.domain.LaneDto; import com.zy.acs.manager.core.domain.SortCodeDto; import com.zy.acs.manager.core.domain.UnlockPathTask; import com.zy.acs.manager.core.service.astart.*; @@ -16,9 +18,8 @@ import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.entity.Sta; import com.zy.acs.manager.manager.enums.CodeSpinType; import com.zy.acs.manager.manager.service.ActionService; import com.zy.acs.manager.manager.service.CodeService; import com.zy.acs.manager.system.service.ConfigService; import com.zy.acs.manager.manager.service.LaneService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -52,9 +53,9 @@ @Autowired private AStarNavigateService aStarNavigateService; @Autowired private ConfigService configService; private LaneService laneService; @Autowired private ActionService actionService; private LaneBuilder laneBuilder; @Autowired private LinkedBlockingQueue<UnlockPathTask> unlockTaskQueue; @@ -164,14 +165,33 @@ return ActuatorDirectionType.fromVal(compDirect); } public Double getStaAngle(Sta sta, Double workDirection) { if (null == sta) { return null; public Double getStaAngle(Sta sta) { if (null == sta.getCode()) { throw new CoolException(sta.getStaNo() + "号接驳站未设置地码!"); } if (Cools.isEmpty(sta.getAngle())) { return workDirection; Code code = codeService.getCacheById(sta.getCode()); if (code.getCornerBool()) { if (!Cools.isEmpty(sta.getAngle())) { return Double.parseDouble(sta.getAngle()); } else { throw new CoolException(sta.getStaNo() + "号接驳站未设置车体作业角度!"); } } else { LaneDto laneDto = laneBuilder.search(code.getData()); Double laneDir = laneService.getLaneDirection(laneDto); if (!Cools.isEmpty(laneDir)) { if (!Cools.isEmpty(sta.getAngle()) && !laneDir.equals(Double.parseDouble(sta.getAngle()))) { throw new CoolException(sta.getStaNo() + "号接驳站车体作业角度与巷道进入角度不一致!"); } return laneDir; } else { if (!Cools.isEmpty(sta.getAngle())) { return Double.parseDouble(sta.getAngle()); } throw new CoolException("未设置" + sta.getStaNo() + "号接驳站所处巷道的进入角度"); } } return Double.parseDouble(sta.getAngle()); } public Double calculateAgvWorkDirectionByStation(Double staWorkDirection, Double lastDirection) {