1
zhang
5 天以前 7b971409fa868cef49fb009645db5c3e31eb2565
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -284,7 +284,9 @@
     */
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void buildMajorTask(Long agvId, List<Task> taskList) {
        if (Cools.isEmpty(agvId, taskList)) { return; }
        if (Cools.isEmpty(agvId, taskList)) {
            return;
        }
        try {
            // valid -----------------------------------------------
            Agv agv = agvService.getById(agvId);
@@ -332,8 +334,10 @@
                backpackLev ++;
                Code startCode = null;
                Code endCode = null;
                Loc oriLoc = null; Loc destLoc = null;
                Sta oriSta = null; Sta destSta = null;
                Loc oriLoc = null;
                Loc destLoc = null;
                Sta oriSta = null;
                Sta destSta = null;
                switch (Objects.requireNonNull(TaskTypeType.get(task.getTaskTypeEl()))) {
                    case LOC_TO_LOC:
                        oriLoc = locService.getById(task.getOriLoc());
@@ -531,9 +535,12 @@
     * 充电 回待机位任务
     * zc 新增了是否强制,强制说明由用户发起,小车在超过低电量就可以做移动充电去待机位
     */
    @Transactional(propagation = Propagation.REQUIRES_NEW) // although there is a Transactional here that the lock is isolated, but we can't join the caller's Transactional
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    // although there is a Transactional here that the lock is isolated, but we can't join the caller's Transactional
    public boolean buildMinorTask(Long agvId, TaskTypeType taskType, String destination, Jam jam,boolean force) {
        if (Cools.isEmpty(agvId, taskType)) { return false; }
        if (Cools.isEmpty(agvId, taskType)) {
            return false;
        }
        try {
            String agvNo = agvService.getAgvNo(agvId);
            if (!agvService.judgeEnable(agvId,false, force)) {
@@ -610,7 +617,8 @@
            }
            // generate segment
            int segSerial = 0;     segSerial ++;
            int segSerial = 0;
            segSerial++;
            List<Segment> segmentList = new ArrayList<>();
            String posType = "";
@@ -686,7 +694,9 @@
    @Transactional
    public synchronized void generateAction(Long agvId, List<Segment> segmentList, List<String> pathList, Date algoStartTime) {
        try {
            if (Cools.isEmpty(agvId, segmentList)) { return; }
            if (Cools.isEmpty(agvId, segmentList)) {
                return;
            }
            Date now = new Date();
            long actionPrepareSts = ActionStsType.PREPARE.val();
//            JSONObject storeDirection = configService.getVal("storeDirection", JSONObject.class);
@@ -728,7 +738,9 @@
                    List<String> pathListPart = pathList.subList(pathList.indexOf(lastCode.getData()), pathList.indexOf(code.getData()) + 1);
                    for (int i = 0; i < pathListPart.size(); i++) {
                        if (i == 0) { continue; }
                        if (i == 0) {
                            continue;
                        }
                        String next = pathListPart.get(i);
@@ -1202,6 +1214,8 @@
        }
    }
    @Transactional
    public void publishAction(String actionGroupId) {
        try {
@@ -1219,6 +1233,28 @@
            String agvNo = agvService.getAgvNo(agvId);
            if (!agvService.judgeOnline(agvId)) {
                return;
            }
            int lastActionIndex = actionSorter.findLastActionIndex(actionList, ActionTypeType.ReadyReleaseToAgvSite.val());
            if (lastActionIndex != -1) {
                List<Action> sortedList = new ArrayList<>(actionList.size());
                for (int i = 0; i < actionList.size(); i++) {
                    // 跳过动作本身
                    if (i != lastActionIndex) {
                        sortedList.add(actionList.get(i));
                    }
                }
                actionList = sortedList;
            }
            Action shang = actionService.getOne(new LambdaQueryWrapper<Action>().eq(Action::getAgvId, agvId).eq(Action::getActionSts, ActionStsType.PREPARE.val()).eq(Action::getActionType, ActionTypeType.ReadyReleaseToAgvSite.val()).orderByDesc(Action::getId));
            if (shang != null) {
                int turnCornerIdx = actionSorter.findFirstActionIndex(actionList, ActionTypeType.TurnCorner.val());
                if (turnCornerIdx == -1) {
                    actionList.add(0, shang);
                } else {
                    actionList.add(turnCornerIdx, shang);
                }
            }
            long actionIssuedSts = ActionStsType.ISSUED.val();
@@ -1470,8 +1506,10 @@
        for (Segment segment : segmentList) {
            boolean taskComplete = false;
            Task task = taskService.getById(segment.getTaskId());   assert null != task;
            TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());     assert null != typeType;
            Task task = taskService.getById(segment.getTaskId());
            assert null != task;
            TaskTypeType typeType = TaskTypeType.get(task.getTaskTypeEl());
            assert null != typeType;
            TaskPosDto.PosType posType = TaskPosDto.queryPosType(segment.getPosType());
            switch (Objects.requireNonNull(posType)) {