From 80d8b0ed5a43ba329c31b557fff81eceb42b022c Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期二, 26 十一月 2024 10:26:55 +0800 Subject: [PATCH] # --- zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 48 insertions(+), 0 deletions(-) diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java index 744917b..1c7f530 100644 --- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java +++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java @@ -4,6 +4,7 @@ import com.zy.acs.framework.common.Cools; import com.zy.acs.manager.common.utils.CommonUtil; import com.zy.acs.manager.core.domain.Lane; +import com.zy.acs.manager.core.domain.TaskPosDto; import com.zy.acs.manager.manager.entity.*; import com.zy.acs.manager.manager.enums.StatusType; import com.zy.acs.manager.manager.enums.TaskStsType; @@ -247,4 +248,51 @@ } + // The Permutations and combinations for task + + public Double[] pac(Double[] currPosition, List<List<TaskPosDto>> list) { + List<TaskPosDto> theFirstOne = list.get(0); + List<TaskPosDto> theLastOne = list.get(list.size() - 1); + + if (list.size() == 1) { + TaskPosDto head = theFirstOne.get(0); + TaskPosDto tail = theFirstOne.get(theFirstOne.size() - 1); + + int distanceByHead = CommonUtil.calcDistance(currPosition, head.getXy()); + int distanceByTail = CommonUtil.calcDistance(currPosition, tail.getXy()); + + if (distanceByTail < distanceByHead) { + Collections.reverse(theFirstOne); + } + + } else { + TaskPosDto headOfFirst = theFirstOne.get(0); + TaskPosDto tailOfFirst = theFirstOne.get(theFirstOne.size() - 1); + + TaskPosDto headOfLast = theLastOne.get(0); + TaskPosDto tailOfLast = theLastOne.get(theLastOne.size() - 1); + + int distanceByHeadOfFirst = CommonUtil.calcDistance(currPosition, headOfFirst.getXy()); + int distanceByTailOfFirst = CommonUtil.calcDistance(currPosition, tailOfFirst.getXy()); + + int distanceByHeadOfLast = CommonUtil.calcDistance(currPosition, headOfLast.getXy()); + int distanceByTailOfLast = CommonUtil.calcDistance(currPosition, tailOfLast.getXy()); + + if (Math.min(distanceByHeadOfLast, distanceByTailOfLast) < Math.min(distanceByHeadOfFirst, distanceByTailOfFirst)) { + Collections.reverse(list); + + if (distanceByTailOfLast < distanceByHeadOfLast) { + Collections.reverse(theLastOne); + } + } else { + if (distanceByTailOfFirst < distanceByHeadOfFirst) { + Collections.reverse(theFirstOne); + } + } + } + + theLastOne = list.get(list.size() - 1); + return theLastOne.get(theLastOne.size() - 1).getXy(); + } + } -- Gitblit v1.9.1