| package com.zy.acs.fake.service.impl; | 
|   | 
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
| import com.zy.acs.fake.entity.Action; | 
| import com.zy.acs.fake.entity.Agv; | 
| import com.zy.acs.fake.enums.ActionStsType; | 
| import com.zy.acs.fake.enums.ActionTypeType; | 
| import com.zy.acs.fake.mapper.ActionMapper; | 
| import com.zy.acs.fake.service.ActionService; | 
| import com.zy.acs.fake.service.AgvService; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Service; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import java.util.Map; | 
|   | 
| @Service("actionService") | 
| public class ActionServiceImpl extends ServiceImpl<ActionMapper, Action> implements ActionService { | 
|   | 
|     @Autowired | 
|     private AgvService agvService; | 
|   | 
|     @Override | 
|     public Boolean updateStsByGroupId(String groupId, Long actionSts) { | 
|         return baseMapper.updateStsByGroupId(groupId, actionSts) > 0; | 
|     } | 
|   | 
|     @Override | 
|     public List<Map<String, Object>> selectRecentForInout() { | 
|         return this.baseMapper.selectRecentForInout(); | 
|     } | 
|   | 
|     @Override | 
|     public List<Map<String, Object>> selectCountGroupByType() { | 
|         return this.baseMapper.selectCountGroupByType(); | 
|     } | 
|   | 
|     @Override | 
|     public List<String> selectPrepareGroup() { | 
|         return this.baseMapper.selectPrepareGroup(); | 
|     } | 
|   | 
|     @Override | 
|     public List<Long> selectTaskIdsByGroupId(String groupId) { | 
|         return this.baseMapper.selectTaskIdsByGroupId(groupId); | 
|     } | 
|   | 
|     @Override | 
|     public List<Action> optimizeSort(List<Action> actionList) { | 
|         long readyTakeFromAgvSite = ActionTypeType.ReadyTakeFromAgvSite.val(); | 
|         long turnCorner = ActionTypeType.TurnCorner.val(); | 
|         long readyReleaseToAgvSite = ActionTypeType.ReadyReleaseToAgvSite.val(); | 
|         long readyReleaseToShelvesLoc = ActionTypeType.ReadyReleaseToShelvesLoc.val(); | 
|         boolean hasFlag = false; | 
|         int destTaskFromAgvSiteIdx = -1; | 
|         for (int i = 0; i < actionList.size(); i++) { | 
|             Action curr = actionList.get(i); | 
|             if (curr.getActionType().equals(readyTakeFromAgvSite)) { | 
|                 hasFlag = true; | 
|                 destTaskFromAgvSiteIdx = i; | 
|                 break; | 
|             } | 
|         } | 
|   | 
|         List<Action> sortList = new ArrayList<>(actionList.size()); | 
|         if (hasFlag) { | 
|             int turnCornerIdx = -1; | 
|             for (int i = 0; i < actionList.size(); i++) { | 
|                 Action curr = actionList.get(i); | 
|                 if (curr.getActionType().equals(turnCorner)) { | 
|                     turnCornerIdx = i; | 
|                 } | 
|             } | 
|   | 
|             if (turnCornerIdx != -1) { | 
|                 Action tmp = actionList.get(destTaskFromAgvSiteIdx);//取货动作 | 
|                 for (int i = 0; i < actionList.size(); i++) { | 
|                     Action curr = actionList.get(i); | 
|                     if (i == destTaskFromAgvSiteIdx) { | 
|                         continue; | 
|                     } | 
|                     sortList.add(curr); | 
|                     if (i == turnCornerIdx) { | 
|                         tmp.setCode(curr.getCode());//更换条码 | 
|                         sortList.add(tmp); | 
|                     } | 
|                 } | 
|             }else { | 
|                 Action tmp = actionList.get(destTaskFromAgvSiteIdx);//取货动作 | 
|                 for (int i = 0; i < actionList.size(); i++) { | 
|                     Action curr = actionList.get(i); | 
|                     if (i == destTaskFromAgvSiteIdx) { | 
|                         continue; | 
|                     } | 
|                     if (i == 0) { | 
|                         tmp.setCode(curr.getCode());//更换条码 | 
|                         sortList.add(tmp); | 
|                     } | 
|                     sortList.add(curr); | 
|                 } | 
|             } | 
|         }else { | 
|             sortList = actionList; | 
|         } | 
|         return sortList; | 
|     } | 
|   | 
|     @Override | 
|     public List<String> getPathListByAgv(String agvNo) { | 
|         Agv agv = agvService.selectByUuid(agvNo); | 
|         return this.baseMapper.selectSortCodeByAgv(agv.getId()); | 
|     } | 
|   | 
|     @Override | 
|     public List<Action> queryLatestGroup(Long agvId, ActionStsType actionSts) { | 
|         return this.baseMapper.selectLatestOfGroup(agvId, actionSts.val()); | 
|     } | 
|   | 
| } |