|  |  |  | 
|---|
|  |  |  | 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.service.PatrolService; | 
|---|
|  |  |  | 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.MapParam; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.controller.result.MapAgvVo; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.controller.result.MapPointVo; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.entity.Map; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.controller.result.MapRouteVo; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.entity.NavMap; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.entity.*; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.enums.AgvStsType; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.enums.StatusType; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.enums.TaskStsType; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.mapper.MapMapper; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.mapper.NavMapMapper; | 
|---|
|  |  |  | import com.zy.acs.manager.manager.service.*; | 
|---|
|  |  |  | import com.zy.acs.manager.system.controller.BaseController; | 
|---|
|  |  |  | import com.zy.acs.manager.system.service.ConfigService; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private TaskService taskService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private MapMapper mapMapper; | 
|---|
|  |  |  | private NavMapMapper navMapMapper; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SnowflakeIdWorker snowflakeIdWorker; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LocService locService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ConfigService configService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private PatrolService patrolService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PreAuthorize("hasAuthority('manager:loc:update')") | 
|---|
|  |  |  | @PostMapping("/startupOrShutdown") | 
|---|
|  |  |  | 
|---|
|  |  |  | mapCodeItems.add(mapItem); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | // common | 
|---|
|  |  |  | Map activeMap = mapMapper.selectActive(zoneId, floor); | 
|---|
|  |  |  | NavMap activeNavMap = navMapMapper.selectActive(zoneId, floor); | 
|---|
|  |  |  | return R.ok().add(Cools | 
|---|
|  |  |  | .add("rcsStatus", configService.getVal("TaskAssignMode", Boolean.class)) | 
|---|
|  |  |  | .add("point", GsonUtils.toJson(mapCodeItems)) | 
|---|
|  |  |  | .add("common", activeMap.getData()) | 
|---|
|  |  |  | .add("common", null != activeNavMap ? activeNavMap.getData() : null) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | Date now = new Date(); | 
|---|
|  |  |  | Long userId = getLoginUserId(); | 
|---|
|  |  |  | // previous | 
|---|
|  |  |  | Map previousMap = mapMapper.selectActive(param.getZoneId(), param.getFloor()); | 
|---|
|  |  |  | if (null != previousMap) { | 
|---|
|  |  |  | previousMap.setActive(0); | 
|---|
|  |  |  | previousMap.setUpdateTime(now); | 
|---|
|  |  |  | previousMap.setUpdateBy(userId); | 
|---|
|  |  |  | if (0 == mapMapper.updateById(previousMap)) { | 
|---|
|  |  |  | NavMap previousNavMap = navMapMapper.selectActive(param.getZoneId(), param.getFloor()); | 
|---|
|  |  |  | if (null != previousNavMap) { | 
|---|
|  |  |  | previousNavMap.setActive(0); | 
|---|
|  |  |  | previousNavMap.setUpdateTime(now); | 
|---|
|  |  |  | previousNavMap.setUpdateBy(userId); | 
|---|
|  |  |  | if (0 == navMapMapper.updateById(previousNavMap)) { | 
|---|
|  |  |  | throw new CoolException("Save Fail"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // current | 
|---|
|  |  |  | Map map = new Map(); | 
|---|
|  |  |  | map.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); | 
|---|
|  |  |  | map.setZoneId(param.getZoneId()); | 
|---|
|  |  |  | map.setFloor(param.getFloor()); | 
|---|
|  |  |  | map.setData(GsonUtils.toJson(param.getItemList())); | 
|---|
|  |  |  | map.setActive(1); | 
|---|
|  |  |  | map.setUpdateBy(userId); | 
|---|
|  |  |  | map.setCreateBy(userId); | 
|---|
|  |  |  | if (0 == mapMapper.insert(map)) { | 
|---|
|  |  |  | NavMap navMap = new NavMap(); | 
|---|
|  |  |  | navMap.setUuid(String.valueOf(snowflakeIdWorker.nextId()).substring(3)); | 
|---|
|  |  |  | navMap.setZoneId(param.getZoneId()); | 
|---|
|  |  |  | navMap.setFloor(param.getFloor()); | 
|---|
|  |  |  | navMap.setData(GsonUtils.toJson(param.getItemList())); | 
|---|
|  |  |  | navMap.setActive(1); | 
|---|
|  |  |  | navMap.setUpdateBy(userId); | 
|---|
|  |  |  | navMap.setCreateBy(userId); | 
|---|
|  |  |  | if (0 == navMapMapper.insert(navMap)) { | 
|---|
|  |  |  | throw new CoolException("Save Fail"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok("Save Success"); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | Code code = codeService.getCacheById(agvDetail.getRecentCode()); | 
|---|
|  |  |  | if (null != code) { | 
|---|
|  |  |  | vo.setCode(code.getData()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | vo.setDirection(agvDetail.getAgvAngle()); | 
|---|
|  |  |  | vo.setBackpack(GsonUtils.fromJsonToList(agvDetail.getBackpack(), BackpackDto.class)); | 
|---|
|  |  |  | vo.setPatrol(patrolService.isPatrolling(agvNo)); | 
|---|
|  |  |  | String error = agvDetail.realError(); | 
|---|
|  |  |  | if (!Cools.isEmpty(error)) { | 
|---|
|  |  |  | vo.setError(error); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Task> tasks = taskService.selectInSts(agv.getId(), TaskStsType.WAITING, TaskStsType.ASSIGN, TaskStsType.PROGRESS); | 
|---|
|  |  |  | if (!Cools.isEmpty(tasks)) { | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Cools.isEmpty(codeData)) { | 
|---|
|  |  |  | return R.error(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Code code = codeService.selectByData(codeData); | 
|---|
|  |  |  | Code code = codeService.getCacheByData(codeData); | 
|---|
|  |  |  | MapPointVo vo = new MapPointVo(); | 
|---|
|  |  |  | vo.setCodeId(code.getId()); | 
|---|
|  |  |  | vo.setCodeData(code.getData()); | 
|---|
|  |  |  | vo.setStatus(code.getStatus()); | 
|---|
|  |  |  | return R.ok().add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("/route/list") | 
|---|
|  |  |  | public R routeList(@RequestParam(required = false) Long zoneId) { | 
|---|
|  |  |  | List<MapRouteVo> result = new ArrayList<>(); | 
|---|
|  |  |  | List<Route> routeList = routeService.list(new LambdaQueryWrapper<Route>().eq(Route::getStatus, StatusType.ENABLE.val)); | 
|---|
|  |  |  | for (Route route : routeList) { | 
|---|
|  |  |  | MapRouteVo vo = new MapRouteVo(); | 
|---|
|  |  |  | vo.setRouteId(route.getId()); | 
|---|
|  |  |  | vo.setStartCode(route.getStartCode()); | 
|---|
|  |  |  | vo.setStartCodeStr(route.getStartCode$()); | 
|---|
|  |  |  | vo.setEndCode(route.getEndCode()); | 
|---|
|  |  |  | vo.setEndCodeStr(route.getEndCode$()); | 
|---|
|  |  |  | vo.setDirection(route.getDirection()); | 
|---|
|  |  |  | result.add(vo); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok().add(result); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | List<Code> codes = codeService.list(); | 
|---|
|  |  |  | List<Code> codeArr = param.getCodeArr(); | 
|---|
|  |  |  | for (Code code : codeArr) { | 
|---|
|  |  |  | Code one = codeService.selectByData(code.getData()); | 
|---|
|  |  |  | Code one = codeService.getCacheByData(code.getData()); | 
|---|
|  |  |  | if (one == null) { | 
|---|
|  |  |  | if (!codeService.save(code)) { | 
|---|
|  |  |  | throw new BusinessException(code.getData()+" save fail![Code]"); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<MapParam.Route> routeArr = param.getRouteArr(); | 
|---|
|  |  |  | for (MapParam.Route paramRoute : routeArr) { | 
|---|
|  |  |  | Code startCode = codeService.selectByData(paramRoute.getStartCode()); | 
|---|
|  |  |  | Code endCode = codeService.selectByData(paramRoute.getEndCode()); | 
|---|
|  |  |  | Code startCode = codeService.getCacheByData(paramRoute.getStartCode()); | 
|---|
|  |  |  | Code endCode = codeService.getCacheByData(paramRoute.getEndCode()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Route route = routeService.findByCodeOfBoth(startCode.getId(), endCode.getId()); | 
|---|
|  |  |  | if (route == null) { | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Cools.isEmpty(agvParam.getPos())) { | 
|---|
|  |  |  | throw new BusinessException(agvParam.getAgvNo() + " agv not in position!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Code code = codeService.selectByData(agvParam.getPos()); | 
|---|
|  |  |  | Code code = codeService.getCacheByData(agvParam.getPos()); | 
|---|
|  |  |  | Agv agv = agvService.selectByUuid(agvParam.getAgvNo()); | 
|---|
|  |  |  | if (agv == null) { | 
|---|
|  |  |  | agv = new Agv(); | 
|---|
|  |  |  | 
|---|
|  |  |  | for (Agv agv : agvList) { | 
|---|
|  |  |  | AgvDetail agvDetail = agvDetailService.selectByAgvId(agv.getId()); | 
|---|
|  |  |  | if (null == agvDetail) { continue; } | 
|---|
|  |  |  | Code currCode = codeService.getById(agvDetail.getCode()); | 
|---|
|  |  |  | Code currCode = codeService.getCacheById(agvDetail.getCode()); | 
|---|
|  |  |  | MapAgvDto agvDto = new MapAgvDto(); | 
|---|
|  |  |  | agvDto.setUuid(agv.getUuid()); | 
|---|
|  |  |  | agvDto.setCurrCode(currCode==null?null:currCode.getData()); | 
|---|