|  |  |  | 
|---|
|  |  |  | import com.zy.acs.framework.common.R; | 
|---|
|  |  |  | import com.zy.acs.framework.common.SnowflakeIdWorker; | 
|---|
|  |  |  | import com.zy.acs.framework.exception.CoolException; | 
|---|
|  |  |  | import com.zy.acs.manager.common.constant.MapItemType; | 
|---|
|  |  |  | import com.zy.acs.manager.common.domain.MapAgvDto; | 
|---|
|  |  |  | import com.zy.acs.manager.common.domain.MapCodeDto; | 
|---|
|  |  |  | import com.zy.acs.manager.common.domain.MapDto; | 
|---|
|  |  |  | import com.zy.acs.manager.common.domain.MapRouteDto; | 
|---|
|  |  |  | import com.zy.acs.manager.common.exception.BusinessException; | 
|---|
|  |  |  | import com.zy.acs.manager.core.domain.BackpackDto; | 
|---|
|  |  |  | import com.zy.acs.manager.core.service.MapService; | 
|---|
|  |  |  | import com.zy.acs.manager.core.service.floyd.FloydNavigateService; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.controller.param.MapDataParam; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.controller.param.MapParam; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.controller.result.MapAgvVo; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.entity.Map; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.entity.*; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.enums.AgvStsType; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.enums.TaskStsType; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.mapper.MapMapper; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.service.*; | 
|---|
|  |  |  | import com.zy.acs.manager.system.controller.BaseController; | 
|---|
|  |  |  | import com.zy.acs.manager.system.service.ConfigService; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.security.access.prepost.PreAuthorize; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.Arrays; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.Iterator; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * Created by vincent on 2023/6/1 | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MapService mapService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ConfigService configService; | 
|---|
|  |  |  | private TaskService taskService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MapMapper mapMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SnowflakeIdWorker snowflakeIdWorker; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LocService locService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PreAuthorize("hasAuthority('manager:loc:list')") | 
|---|
|  |  |  | @PostMapping("/data/fetch") | 
|---|
|  |  |  | public R fetch(@RequestParam(required = false) Long zoneId, @RequestParam(required = false) Integer floor) { | 
|---|
|  |  |  | // code | 
|---|
|  |  |  | List<Code> codeList = codeService.list(new LambdaQueryWrapper<Code>().eq(Code::getStatus, 1)); | 
|---|
|  |  |  | List<MapItem> mapCodeItems = new ArrayList<>(); | 
|---|
|  |  |  | codeList.forEach(code -> { | 
|---|
|  |  |  | MapItem mapItem = new MapItem(); | 
|---|
|  |  |  | mapItem.setType(MapItemType.POINT.toString()); | 
|---|
|  |  |  | mapItem.setNo(code.getData()); | 
|---|
|  |  |  | mapItem.setUuid(code.getUuid()); | 
|---|
|  |  |  | mapItem.setPositionX(code.getX()); | 
|---|
|  |  |  | mapItem.setPositionY(code.getY()); | 
|---|
|  |  |  | mapCodeItems.add(mapItem); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // common | 
|---|
|  |  |  | Map activeMap = mapMapper.selectActive(zoneId, floor); | 
|---|
|  |  |  | return R.ok().add(activeMap); | 
|---|
|  |  |  | return R.ok().add(Cools | 
|---|
|  |  |  | .add("point", GsonUtils.toJson(mapCodeItems)) | 
|---|
|  |  |  | .add("common", activeMap.getData()) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PreAuthorize("hasAuthority('manager:loc:update')") | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.ok("Save Success"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("/shelf/group") | 
|---|
|  |  |  | public R shelfGroup(@RequestParam(required = false) Integer row, @RequestParam(required = false) Integer bay) { | 
|---|
|  |  |  | if (null == row || null == bay) { | 
|---|
|  |  |  | return R.error(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getRow, row).eq(Loc::getBay, bay).orderByAsc(Loc::getLev)); | 
|---|
|  |  |  | return R.ok().add(locList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("/agv/info") | 
|---|
|  |  |  | public R agvInfo(@RequestParam(required = false) String agvNo) { | 
|---|
|  |  |  | if (Cools.isEmpty(agvNo)) { | 
|---|
|  |  |  | return R.error(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Agv agv = agvService.selectByUuid(agvNo); | 
|---|
|  |  |  | AgvDetail agvDetail = agvDetailService.selectByAgvNo(agvNo); | 
|---|
|  |  |  | MapAgvVo vo = new MapAgvVo(); | 
|---|
|  |  |  | vo.setAgvId(agv.getId()); | 
|---|
|  |  |  | vo.setAgvNo(agv.getUuid()); | 
|---|
|  |  |  | vo.setStatus(agv.getStatus()); | 
|---|
|  |  |  | if (null != agvDetail) { | 
|---|
|  |  |  | vo.setOnline(agvService.judgeOnline(agvDetail.getAgvId())); | 
|---|
|  |  |  | vo.setAgvStatus(agvDetail.getStatusDesc()); | 
|---|
|  |  |  | vo.setVol(String.valueOf(agvDetail.getVol())); | 
|---|
|  |  |  | vo.setSoc(String.valueOf(agvDetail.getSoc())); | 
|---|
|  |  |  | vo.setPos(agvDetail.getPos() != null && agvDetail.getPos() == 1); | 
|---|
|  |  |  | vo.setCode(codeService.getById(agvDetail.getRecentCode()).getData()); | 
|---|
|  |  |  | vo.setDirection(agvDetail.getAgvAngle()); | 
|---|
|  |  |  | vo.setBackpack(GsonUtils.fromJsonToList(agvDetail.getBackpack(), BackpackDto.class)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Task> tasks = taskService.selectInSts(agv.getId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS); | 
|---|
|  |  |  | if (!Cools.isEmpty(tasks)) { | 
|---|
|  |  |  | vo.setTaskIds(tasks.stream().map(Task::getId).collect(Collectors.toList())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|