| | |
| | | import com.zy.asrs.common.domain.param.SearchLocParam; |
| | | import com.zy.asrs.common.utils.HttpHandler; |
| | | 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.MatDto; |
| | | import com.zy.asrs.wcs.core.domain.dto.RedisMapDto; |
| | | import com.zy.asrs.wcs.core.domain.dto.StaDto; |
| | | import com.zy.asrs.wcs.core.domain.param.CreateInTaskParam; |
| | | import com.zy.asrs.wcs.core.entity.*; |
| | | import com.zy.asrs.wcs.core.kernel.AnalyzeService; |
| | | import com.zy.asrs.wcs.core.model.MapNode; |
| | | import com.zy.asrs.wcs.core.model.enums.*; |
| | | import com.zy.asrs.wcs.core.service.*; |
| | | import com.zy.asrs.wcs.core.utils.OpenUtils; |
| | | import com.zy.asrs.wcs.core.utils.RedisUtil; |
| | | import com.zy.asrs.wcs.core.utils.ShuttleDispatcher; |
| | | import com.zy.asrs.wcs.core.utils.Utils; |
| | |
| | | private DeviceBarcodeService deviceBarcodeService; |
| | | @Autowired |
| | | private ShuttleChargeStaService shuttleChargeStaService; |
| | | @Autowired |
| | | private OpenUtils openUtils; |
| | | |
| | | /** |
| | | * 组托 |
| | |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() |
| | | && staProtocol.isInEnable() |
| | | && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) |
| | | && staProtocol.isPakMk() |
| | | ) { |
| | | |
| | | // 获取条码扫描仪信息 |
| | |
| | | } |
| | | } |
| | | |
| | | //获取入库任务类型 |
| | | TaskCtg taskCtg = taskCtgService.getOne(new LambdaQueryWrapper<TaskCtg>() |
| | | .eq(TaskCtg::getFlag, String.valueOf(TaskCtgType.IN)) |
| | | .eq(TaskCtg::getStatus, 1)); |
| | | |
| | | // 判断重复工作档 |
| | | Task task1 = taskService.getOne(new LambdaQueryWrapper<Task>() |
| | | .eq(Task::getOriginSite, inSta.getStaNo()) |
| | | .eq(Task::getTaskCtg, taskCtg.getId()) |
| | | .in(Task::getTaskSts, 1, 2, 3) |
| | | .in(Task::getTaskSts, TaskStsType.NEW_INBOUND.sts, TaskStsType.ANALYZE_INBOUND.sts, TaskStsType.EXECUTE_INBOUND.sts) |
| | | .eq(Task::getZpallet, barcode)); |
| | | if (task1 != null) { |
| | | News.error("工作档已存在,工作号={}", task1.getTaskNo()); |
| | | if (staProtocol.getWorkNo().intValue() != Integer.parseInt(task1.getTaskNo())) { |
| | | devpThread.writeWorkSta(staProtocol.getSiteId(), Short.parseShort(task1.getTaskNo()), Short.parseShort(task1.getDestSite())); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | News.info("输送线入库命令下发,任务数据={}", JSON.toJSON(task1)); |
| | | } |
| | | continue; |
| | | } |
| | | |
| | |
| | | param.setBarcode(barcode); |
| | | param.setIoType(1); |
| | | param.setSourceStaNo(inSta.getStaNo()); |
| | | param.setLocType1((short) 1); |
| | | param.setLocType1(staProtocol.getLocType1().shortValue()); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/pakin/loc/v1") |
| | |
| | | if (code.equals(200)) { |
| | | StartupDto dto = jsonObject.getObject("data", StartupDto.class); |
| | | |
| | | //获取输送路径 |
| | | BasConveyorPath conveyorPath = basConveyorPathService.getOne(new LambdaQueryWrapper<BasConveyorPath>() |
| | | .eq(BasConveyorPath::getTypeNo, TaskCtgType.IN.val()) |
| | | .eq(BasConveyorPath::getDeviceId, devp.getId()) |
| | | .eq(BasConveyorPath::getStnNo, staProtocol.getSiteId())); |
| | | if (conveyorPath == null) { |
| | | News.error("输送路径不存在"); |
| | | }else { |
| | | devpThread.writeWorkSta(staProtocol.getSiteId(), dto.getWorkNo().shortValue(), conveyorPath.getDeviceStn().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | } |
| | | String wmsLocNo = dto.getLocNo(); |
| | | int row = Integer.parseInt(wmsLocNo.substring(0, 2)); |
| | | int bay = Integer.parseInt(wmsLocNo.substring(2, 5)); |
| | | int lev = Integer.parseInt(wmsLocNo.substring(5, 7)); |
| | | row -= 16; |
| | | String wcsLocNo = Utils.getLocNo(row, bay, lev); |
| | | |
| | | CreateInTaskParam createInTaskParam = new CreateInTaskParam(); |
| | | createInTaskParam.setTaskNo(String.valueOf(dto.getWorkNo())); |
| | | createInTaskParam.setDestLoc(wcsLocNo); |
| | | createInTaskParam.setOriginSite("31002"); |
| | | createInTaskParam.setDestSite("31004"); |
| | | createInTaskParam.setPriority(11); |
| | | createInTaskParam.setBarcode(barcode); |
| | | |
| | | R result = openUtils.createInTask(createInTaskParam); |
| | | News.info("创建入库任务,任务数据={},WMS响应={},请求响应={}", JSON.toJSON(param), JSON.toJSON(jsonObject), JSON.toJSON(result)); |
| | | }else { |
| | | News.error("入库申请失败,任务数据={},请求响应={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | if (Cools.isEmpty(basConveyorSta.getTaskNo())){ |
| | | continue; |
| | | } |
| | | if (!basConveyorSta.getTaskNo().toString().equals(task.getWmsTaskNo())){ |
| | | if (!basConveyorSta.getTaskNo().toString().equals(task.getTaskNo())){ |
| | | continue; |
| | | } |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue()); |
| | |
| | | continue; |
| | | } |
| | | |
| | | //解析前判断内部目标值是否有物 有工作号 |
| | | StaProtocol staProtocolInside = devpThread.getStation().get(Utils.getStaByLev(Utils.getLev(task.getDestLoc()))); |
| | | if (staProtocolInside == null) { |
| | | continue; |
| | | } |
| | | if (staProtocolInside.isLoading() || staProtocolInside.getWorkNo() !=0) { |
| | | continue; |
| | | } |
| | | |
| | | if (Cools.isEmpty(task.getShuttleNo())) { |
| | | //分配小车 |
| | |
| | | .eq(BasLed::getDeviceId, ledDevice.getId())); |
| | | List<Integer> staArr = JSON.parseArray(led.getSta(), Integer.class); |
| | | |
| | | BasConveyor basConveyor = basConveyorService.getById(led.getConveyorId().intValue()); |
| | | BasConveyor basConveyor = basConveyorService.getById(new LambdaQueryWrapper<BasConveyor>() |
| | | .eq(BasConveyor::getDeviceId, led.getConveyorId().intValue())); |
| | | if (basConveyor == null) { |
| | | continue; |
| | | } |