| | |
| | | package com.zy.asrs.wcs.core.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.zy.asrs.framework.common.Cools; |
| | | import com.zy.asrs.framework.common.R; |
| | | import com.zy.asrs.framework.common.SnowflakeIdWorker; |
| | | import com.zy.asrs.wcs.core.domain.dto.BasLiftStaDto; |
| | | import com.zy.asrs.wcs.core.domain.param.CreateInTaskParam; |
| | | import com.zy.asrs.wcs.core.domain.param.CreateManualTakeTaskParam; |
| | | import com.zy.asrs.wcs.core.domain.param.CreateMoveTaskParam; |
| | | import com.zy.asrs.wcs.core.domain.param.CreateOutTaskParam; |
| | | import com.zy.asrs.wcs.core.entity.Loc; |
| | | import com.zy.asrs.wcs.core.entity.Task; |
| | | import com.zy.asrs.wcs.core.entity.TaskCtg; |
| | | import com.zy.asrs.wcs.core.entity.*; |
| | | import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; |
| | | import com.zy.asrs.wcs.core.model.enums.TaskCtgType; |
| | | import com.zy.asrs.wcs.core.model.enums.TaskStsType; |
| | | import com.zy.asrs.wcs.core.service.LocService; |
| | | import com.zy.asrs.wcs.core.service.TaskCtgService; |
| | | import com.zy.asrs.wcs.core.service.TaskService; |
| | | import com.zy.asrs.wcs.core.service.*; |
| | | import com.zy.asrs.wcs.core.utils.Utils; |
| | | import com.zy.asrs.wcs.rcs.cache.SlaveConnection; |
| | | import com.zy.asrs.wcs.rcs.entity.Device; |
| | |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 对外暴露接口 |
| | |
| | | private LocService locService; |
| | | @Autowired |
| | | private DictService dictService; |
| | | @Autowired |
| | | private BasConveyorPathService basConveyorPathService; |
| | | @Autowired |
| | | private BasLiftService basLiftService; |
| | | |
| | | //生成入库任务 |
| | | @PostMapping("/createInTask") |
| | |
| | | if (taskCtg == null) { |
| | | return R.error("任务类型异常"); |
| | | } |
| | | |
| | | Long hostId = 1L;//默认主仓库 |
| | | |
| | | Loc loc = locService.selectByLocNo(param.getDestLoc()); |
| | | if (loc == null) { |
| | |
| | | return R.error("任务已存在"); |
| | | } |
| | | |
| | | String destSite = param.getDestSite(); |
| | | if (Cools.isEmpty(param.getDestSite())) { |
| | | //目标站为空则使用WCS系统内置路径 |
| | | BasConveyorPath path = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>() |
| | | .eq(BasConveyorPath::getTypeNo, taskCtg.getId()) |
| | | .eq(BasConveyorPath::getHostId, hostId) |
| | | .eq(BasConveyorPath::getStnNo, param.getOriginSite())); |
| | | if(path == null) { |
| | | return R.error("内置路径不存在"); |
| | | } |
| | | destSite = String.valueOf(path.getDeviceStn()); |
| | | } |
| | | |
| | | //优先级 |
| | | Integer priority = 10; |
| | | if (param.getPriority() != null) { |
| | |
| | | task.setPriority(priority); |
| | | task.setOriginSite(param.getOriginSite()); |
| | | task.setOriginLoc(null); |
| | | task.setDestSite(param.getDestSite()); |
| | | task.setDestSite(destSite); |
| | | task.setDestLoc(param.getDestLoc()); |
| | | task.setIoTime(new Date()); |
| | | task.setStartTime(new Date()); |
| | |
| | | task.setMemo(""); |
| | | task.setShuttleNo(null);//等待主线程分配小车 |
| | | task.setRecordLoc("Y");//记录库存信息 |
| | | task.setHostId(1L);//临时控制只允许host为1 |
| | | task.setHostId(hostId);//临时控制只允许host为1 |
| | | |
| | | boolean result = taskService.save(task); |
| | | if (!result) { |
| | |
| | | if (taskCtg == null) { |
| | | return R.error("任务类型异常"); |
| | | } |
| | | |
| | | Long hostId = 1L;//默认主仓库 |
| | | |
| | | Loc loc = locService.selectByLocNo(param.getOriginLoc()); |
| | | if (loc == null) { |
| | |
| | | return R.error("任务已存在"); |
| | | } |
| | | |
| | | String originSite = param.getOriginSite(); |
| | | if (Cools.isEmpty(param.getOriginSite())) { |
| | | //使用WCS系统内置路径 |
| | | BasConveyorPath path = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>() |
| | | .eq(BasConveyorPath::getTypeNo, taskCtg.getId()) |
| | | .eq(BasConveyorPath::getHostId, hostId) |
| | | .eq(BasConveyorPath::getStnNo, param.getDestSite())); |
| | | if(path == null) { |
| | | return R.error("内置路径不存在"); |
| | | } |
| | | Integer deviceNo = path.getDeviceNo();//获取提升机号 |
| | | BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getLiftNo, deviceNo).eq(BasLift::getHostId, hostId)); |
| | | if(basLift == null) { |
| | | return R.error("提升机对象不存在"); |
| | | } |
| | | List<BasLiftStaDto> staList = JSON.parseArray(basLift.getSta(), BasLiftStaDto.class); |
| | | BasLiftStaDto originStaDto = null; |
| | | for (BasLiftStaDto sta : staList) { |
| | | if (sta.getLev() == Utils.getLev(param.getOriginLoc())) { |
| | | originStaDto = sta; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (originStaDto == null) { |
| | | return R.error("源站不存在"); |
| | | } |
| | | |
| | | originSite = String.valueOf(originStaDto.getStaNo()); |
| | | } |
| | | |
| | | //优先级 |
| | | Integer priority = 10; |
| | | if (param.getPriority() != null) { |
| | |
| | | task.setTaskSts(TaskStsType.NEW_OUTBOUND.sts); |
| | | task.setTaskCtg(taskCtg.getId()); |
| | | task.setPriority(priority); |
| | | task.setOriginSite(param.getOriginSite()); |
| | | task.setOriginSite(originSite); |
| | | task.setOriginLoc(param.getOriginLoc()); |
| | | task.setDestSite(param.getDestSite()); |
| | | task.setDestLoc(null); |
| | |
| | | task.setMemo(""); |
| | | task.setShuttleNo(null);//等待主线程分配小车 |
| | | task.setRecordLoc("Y");//记录库存信息 |
| | | task.setHostId(1L);//临时控制只允许host为1 |
| | | task.setHostId(hostId);//临时控制只允许host为1 |
| | | |
| | | boolean result = taskService.save(task); |
| | | if (!result) { |
| | |
| | | if (shuttleProtocol == null) { |
| | | return R.error("穿梭车不在线"); |
| | | } |
| | | if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(param.getDestLoc())) { |
| | | return R.error("穿梭车和目标位置不在同一楼层"); |
| | | } |
| | | // if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(param.getDestLoc())) { |
| | | // return R.error("穿梭车和目标位置不在同一楼层"); |
| | | // } |
| | | |
| | | Task one = taskService.getOne(new LambdaQueryWrapper<Task>() |
| | | .eq(Task::getTaskCtg, taskCtg.getId()) |